linux系統擁有很多許可權,雖說目的是為了使用者安全服務,但是也加大了理解難度,這裡我根據檔案型別總結一下linux的許可權
對linux系統上的普通檔案、目錄來說,有三種許可權:rwx許可權、隱藏屬性許可權和acl許可權
r代表讀許可權;w代表寫許可權;x代表執行許可權。
linux系統有三種身份:所有者(u)、所屬組(g)和其他人(o)
linux系統用0表示許可權關閉,用1表示許可權開啟,那麼對於任意乙個檔案來說,其所有者許可權的所有可能組合為8種,其中
只有讀許可權,表示為 r-- ,二進位制數為100,轉化為十進位制為4;
只有寫許可權,表示為-w-,二進位制數為010,轉化為十進位制為2;
只有執行許可權,表示為–x,二進位制數為001,轉化為十進位制為1.
由此,我們得到了用十進位制數字表示rwx許可權的方法:
r用4表示,w用2表示,x用1表示。
對檔案來說,r許可權代表可讀,表示可檢視檔案內容,對應到命令上,就是可執行cat/more/less等檢視內容的命令;w許可權代表可寫,表示可修改(寫入)檔案,對應到命令上,就是可執行vim檔案編輯器;x代表執行許可權,表示該檔案可以放到系統中執行,通常我們的各種命令和指令碼,都是要具有執行許可權的。
對目錄來說,r許可權代表可讀,表示可檢視目錄下的檔案和目錄名稱(這裡可以把目錄理解為記錄檔案屬性資訊的檔案),對應到命令上,就是可以執行ls;w許可權代表可寫,表示可以修改檔案、目錄名,對應到命令上,就是可以執行touch、mkdir、rmdir、rm等命令;x代表執行許可權,表示可以執行這個目錄,對應到命令上,就是可以用cd進入到該目錄。
linux系統存在一些隱藏屬性,可保證檔案安全
檢視可用如下的命令:
lsattr -a
-a表示檢視所有檔案目錄,要是只看目錄,可加-d選項。
若要對某個檔案/目錄新增或刪除隱藏屬性許可權,可用如下的命令:
chattr -a filename #刪除許可權
chattr +i filename #新增許可權
其中i選項和a選項對檔案和目錄又有不同的影響:
對檔案來說,如果有i隱藏屬性,那麼該檔案就是乙個唯讀檔案,無法修改;如果有a隱藏屬性,只能增加資料(echo重定向方式),不能修改資料(因此a隱藏屬性適合於日誌)。
對目錄來說,如果有i隱藏屬性,只能修改目錄下已有檔案,不能建立新檔案以及刪除已有檔案(唯讀目錄);如果有a隱藏屬性,只能新建或修改檔案,不能刪除、改名已有檔案。
acl=access control list 中文為「訪問控制列表」
作用 :可對單一使用者設定檔案、目錄的rwx許可權。
產生原因:出於安全考慮,linux系統下的檔案、目錄預設對其他人有較低許可權,如果某個其他人身份想要檢視他不具備許可權的目錄或檔案,要麼切換他的身份為所有者,要麼讓他以所有者的身份登入系統,而這兩種做法都具有一定安全隱患,因此,為解決該問題,acl許可權產生。
設定acl許可權可用如下的命令格式:
setfacl -m u:user:rwx filename
-m選項用於設定acl許可權,user表示要更改許可權的使用者,rwx表示要賦予該使用者的許可權情況,filename表示要賦予acl許可權的檔案或目錄。
檢視acl許可權可用如下的命令格式:
getfacl filename #在當前檔案目錄下
acl許可權優勢:
我們可以用 getfacl 檢視已經設定好acl許可權的檔案或目錄:
#省略輸出…………
user::rwx #檔案所有者許可權
user:user:rwx #使用者user對該檔案的許可權
group::rwx #檔案所屬組許可權
other::--- #檔案其他人許可權
省略輸出…………
可以看到,使用者user不屬於所有者、所屬組或其他人,而是單獨為他設定了對該檔案的rwx許可權。這樣在保證其他人無法檢視、修改該檔案的情況下,也可同時確保使用者user修改、檢視該檔案,達到安全目的。
linux系統存在著很多可執行檔案,例如各種命令、shell指令碼等,那麼對於某些只能由超級使用者才可執行的命令如何給普通使用者執行呢?這就涉及到了setuid和setgid的概念。
linux系統示例:/bin/passwd 命令
可以檢視一下該檔案的許可權情況
可以看到,在所有者執行許可權的x位上變成了s,這就表示某個可執行檔案被賦予了suid許可權。
作用:普通使用者也可用passwd命令修改密碼(給使用者某執行檔案的所有者許可權)。
運作過程:
普通使用者使用passwd user,意圖修改密碼------passwd擁有suid許可權且user對passwd命令有x許可權------user暫時擁有root許可權,以所有者身份執行passwd-------root可把密碼寫入密碼檔案/etc/shadow-----修改完成,user身份恢復。
setuid許可權新增、刪除命令:
chmod u+s filename #給檔案/目錄新增suid許可權
chmod u-s filename #給檔案/目錄刪除suid許可權
linux系統示例:/usr/bin/locate可以看到,在所所屬組執行許可權的x位上變成了s,這就表示某個可執行檔案被賦予了sgid許可權。
作用:普通使用者也可用locate命令查詢mlocate.db資料庫(給使用者某執行檔案的所屬組許可權)。
運作過程:
普通使用者使用locate,意圖查詢系統上的某檔案------locate擁有sgid許可權且user對locate命令有x許可權------user暫時擁有slocate組許可權,以所屬組身份執行locate-------該組對mlocate.db資料庫有r許可權-----user可以查詢------查詢結束,user組身份恢復。
setgid 許可權新增、刪除命令:
chmod g+s filename #給檔案/目錄新增sgid許可權
chmod g-s filename #給檔案/目錄刪除sgid許可權
linux系統示例:/tmp
可以看到,該目錄的其他人執行許可權上的x位變成了t,這就表示該目錄具有bit許可權。
bit許可權特點:僅對目錄有效;僅其他人可用。
作用:設定了bit許可權的目錄,任何人都可以在該目錄下建立、修改檔案,但只有該檔案的所有者或root使用者才可刪除檔案。(誰建立,誰刪除)
許可權新增、刪除命令:
chmod o+t filename #給檔案/目錄新增bit許可權
chmod o-t filename #給檔案/目錄刪除bit許可權
在命令列執行umask命令時,會看到4位許可權數:
其中後三位就表示乙個檔案/目錄的rwx預設許可權,它限制了新建立的檔案/目錄的初始許可權(檔案644,目錄755)
這裡還存在第一位上的0,這一點結合上述執行檔案三種許可權即可解釋:
setuid許可權:以s表示,對應所有者,用十進位制4表示(100);
setgid許可權:以s表示,對應所屬組,用十進位制2表示(010);
bit許可權:以t表示,對應其他人,用十進位制1表示(001)。
這樣,任何乙個檔案/目錄的許可權可表示如下:
rwxs rwxs rwxt
u g o
雖然超級使用者具備linux所有命令的執行許可權,但乙個多使用者系統如果全都由root使用者管理是不現實的,正常的管理方法是root使用者把一些系統命令授權給普通使用者,讓其協助管理,這才符合多使用者系統的管理思路。
操作物件:系統命令(與上述許可權不同)
工具:
使用方法:su - 使用者名稱(不加為root)
弊端:非root使用者切換別人需要密碼。
授權方式:
vi /etc/sudoers
visudo #兩種方式選乙個即可
修改模板:
root all=(all) all
#使用者 主機名 身份 執行的命令
賦予過程(以user為例):
假如root使用者想要賦予普通使用者user重啟伺服器許可權
vi /etc/sudoers #在root下加一行即可
root all=
(all) all
user all=usr/sbin/reboot
sudo作用:把本來只能由root使用者執行的命令賦予普通使用者執行。 Linux基礎 許可權管理
1.使用者許可權 認證 1.1 authentication 授權 authorization 審計 adition 1.2 linux使用者和組的主要配置檔案 1.3 安全上下文 程序代表使用者在進行 誰啟動了程序,程序就擁有誰的身份 以程序 process 發起者的身份執行 1.4 使用者 1....
Linux基礎 許可權的管理
檢視檔案時的詳細資訊 d 檔案型別 r xr x 許可權 2 硬鏈結次數 root 所屬使用者 root 所屬組 6 檔案大小 dec 11 15 02 檔案的最後一次修改時間 music 檔名 許可權 rw r r 每三個為乙個小組 分別時一下的許可權 屬主的許可權u屬組的許可權g其他人的許可權o...
linux基礎 檔案許可權管理
ls l中顯示的內容如下 1 rwxrw r 1 root root 1213 feb 2 09 39 file01 10個字元確定不同使用者能對檔案幹什麼 第乙個字元代表檔案 目錄 d 鏈結 l 其餘字元每3個一組 rwx 讀 r 寫 w 執行 x 第一組rwx 屬主 檔案所有者的許可權是讀 寫和...