linux基礎篇(二):基於Redhat7系統的特殊許可權與acl許可權列表
新建目錄和檔案的預設許可權
新建目錄和檔案的預設許可權是由系統中umask值來決定的。
新建FILE許可權:666-umask (對位相減) 由數字法賦許可權的過程中,我們能夠發現,凡是奇數許可權,總是包含執行許可權的。而一個檔案如果預設就包含執行許可權其實是非常危險的。因此如果所得結果中某位存在執行(奇數)許可權,則將其許可權加1.
新建DIR許可權:777-umask
非特權使用者umask 是002
root的umask是022 設定umask: umask # ,比如 umask 022
umask -S 模式方式顯示
umask -p 輸出可被呼叫
全域性設定: /etc/bashrc 使用者設定 ~/.bashrc
Linux 系統中的特殊許可權 SUID, SGID, Sticky
1、普通許可權在一般情況下應用是沒有問題。可是在一些特殊場景下,僅僅設定普通許可權,並不能滿足實際生產需要。
2、如果一個檔案具有SUID,SGID,Sticky許可權,那麼相應u,g,o 的x許可權位會被替換成s許可權。
3、SUID,SGID,許可權是用來提升許可權的。許可權是累加的。也就是說,使用者本身的許可權,加上SUID,SGID的許可權。
SUID
我們先來看一個例項
我們能夠看到在,passwd 屬主的許可權為: rws 這裡的s 就是特殊許可權SUID。 它表現為,當任何使用者在使用passwd命令時,它的身份將臨時切換為root使用者,並具有root使用者的許可權,而不用考慮該使用者對passwd的許可權。 也可以理解為,某二進位制檔案如果具有SUID許可權,則任何使用該二進位制檔案的使用者,其許可權將臨時整合該二進位制檔案屬主的許可權。 SUID特殊許可權使用前提:程序有屬主和屬組;檔案有屬主和屬組 任何一個可執行程式檔案能不能啟動為程序,取決發起者對程式檔案是否擁有執行許可權 啟動為程序之後,其程序的屬主為發起者,程序的屬組為發起者所屬的組 程序訪問檔案時的許可權,取決於程序的發起者 (a) 程序的發起者,同文件的屬主:則應用檔案屬主許可權 (b) 程序的發起者,屬於檔案屬組;則應用檔案屬組許可權 (c) 應用檔案“其它”許可權
任何一個可執行程式檔案能不能啟動為程序:取決發起者對程式檔案是否擁有執行許可權
啟動為程序之後,其程序的屬主為原程式檔案的屬主
SUID只對二進位制可執行程式有效
SUID設定在目錄上無意義
許可權設定:
chmod u+s FILE…
chmod u-s FILE…
chmod u+s 檔名稱
chmod 4777 檔名稱
將 /usr/bin/passwd s許可權去掉
此時,如果切換普通使用者,將不具備寫許可權。 也就修改不了自己的密碼
將許可權恢復 切換回root使用者
SUID是一種特殊許可權,用s 表示。如果一個二進位制檔案具有SUID許可權的話,其屬主x許可權將被s替代。而且在使用數字法進行許可權修改的時候,其數字位單獨用4表示。
SGID
任何一個可執行程式檔案能不能啟動為程序:取決發起者對程式檔案是否擁有執行許可權
啟動為程序之後,其程序的屬主為原程式檔案的屬組
許可權設定:chmod g+s FILE… chmod g-s FILE…
預設情況下,使用者建立檔案時,其屬組為此使用者所屬的主組
一旦某目錄被設定了SGID,則對此目錄有寫許可權的使用者在此目錄中建立的檔案所屬的組為此目錄的屬組
通常用於建立一個協作目錄(多使用者公用目錄)
許可權設定:chmod g+s DIR… chmod g-s DIR…
chmod g+s 目錄或檔名稱
chmod 2777 目錄或檔名稱
通過以上描述我們可以發現,如果我們給一個目錄設定了SGID許可權,然後有多個使用者在該目
錄下建立了不同的檔案,而這些檔案的屬組都是該目錄的屬組。此時問題出現了,在該目錄
下的不同使用者可以相互刪除對方的檔案。那麼此時,我們就需要使用另外一個特殊許可權,來解
決這個問題。
Sticky
具有寫許可權的目錄通常使用者可以刪除該目錄中的任何檔案,無論該檔案的許可權或擁有權
在目錄設定Sticky 位,只有檔案的所有者或root可以刪除該檔案
sticky 設定在檔案上無意義
許可權設定:chmod o+t DIR… chmod o-t DIR…
chmod o+t 目錄名稱 或者chmod 1777 目錄名稱
許可權位對映
我們首先來看一組例項
實驗環境中建立兩個檔案,注意,f1沒有x許可權,f2有x許可權
下面分別給兩個檔案加上SUID許可權,執行ll 命令檢視兩個檔案的許可權變化
從上面的例項我們可以看出
SUID: user,佔據屬主的執行許可權位
s: 屬主擁有x許可權
S:屬主沒有x許可權
接下來我們看另外一組例項
實驗環境中建立兩個目錄檔案,注意屬組的許可權區別
下面分別給兩個目錄加上SGID許可權,執行 ll 命令觀察兩個目錄檔案的許可權變化
從上面的例項中,我們可以看出
SGID: group,佔據屬組的執行許可權位
s: group擁有x許可權
S:group沒有x許可權
最後一組例項
實驗環境中建立兩個目錄檔案,注意 o 的許可權區別
下面分別給兩個目錄加上sticky許可權,執行ll 命令觀察兩個目錄的許可權變化
通過上面的例項
Sticky: other,佔據other的執行許可權位
t: other擁有x許可權
T:other沒有x許可權
訪問控制列表 ACL
ACL:Access Control List ,實現靈活的許可權管理
除了檔案的所有者,所屬組和其它人,可以對更多的使用者設定許可權
ACL生效順序:所有者,自定義使用者,自定義組,其他人
setfacl #啟動檔案許可權列表
setfacl -m u:student:rw /mnt/westos
-rw-rw-r–+(檔案許可權列表啟動) 1 root root 0 Apr 4 22:01 westos
getfacl #檢視檔案許可權列表
getfacl /mnt/westos
getfacl: Removing leading '/' from absolute path names
# file: mnt/westos ##檔名稱
# owner: root ##檔案所有者
# group: root ##檔案所有組
user::rw- ##使用者許可權
user:student:rw- ##指定使用者許可權
group::r-- ##組許可權
mask::rw- ##使用者能夠修改的最大許可權
other::r-- ##其他使用者許可權
測試
(1)新建使用者 love 用love使用者對/mnt/westos進行寫入,提示love使用者沒有對/mnt/westos檔案的寫入許可權
(2)切換到student使用者,對/mnt/westos進行寫入,提示student使用者可以對/mnt/westos檔案進行寫入
設定
setfacl -m u:lee:rwx /mnt/file #設定lee使用者對file檔案可以讀寫執行
setfacl -m g:student:rwx /mnt/file #設定student組對檔案可以讀寫執行
setfacl -x u:lee /mnt/file #在許可權列表中刪除使用者lee的資訊
setfacl -x g:student /mnt/file #在許可權列表中刪除student組的資訊
setfacl -b /mnt/file #關閉許可權列表那麼,"+"消失
(1)設定
(2)刪除
(3)關閉許可權列表
許可權後的“+”消失,表示許可權列表關閉
對目錄的操作
(一)setfacl -m d:u:student:rwx /mnt/test/
對目錄中新出現的內容啟動許可權列表,而目錄本身和原來存在的檔案不生效
(二)setfacl -Rm u:student:rwx /mnt/test/
對目錄本身和已存在的檔案啟動許可權列表,但對新建立的檔案無效