特殊許可權suid,sgid,sticky和acl(訪問控制列表)引數詳解
特殊許可權的設定
基本檔案許可權見上文:http://blog.csdn.net/gui951753/article/details/79078682
特殊許可權:SUID:當對一個可執行的二進位制檔案作用了suid許可權之後,任何人在執行該檔案時臨時擁有其所屬人的許可權。
SGID:當對一個可執行的二進位制檔案作用了sgid許可權之後,任何人在執行該檔案時臨時擁有其所屬組的許可權。
當對於一個目錄作用了sgid許可權之後,任何人在該目錄下建立的檔案的所屬組與該目錄的所屬組相同。
Sticky:當對於一個目錄作用了sticky許可權之後,該目錄下的檔案僅其檔案的所屬人,或目錄的所屬人及root才能刪除。
舉例,當我們使用普通使用者執行 liubei,passwd 這條命令是能夠成功執行的,我們知道passwd的實質是修改了/etc/shadow檔案,進而修改了密碼,但是當我們查詢這個檔案的許可權的時候會發現這個問題,這個檔案普通使用者是沒有任何許可權的。那麼普通使用者liubei是如何做到了修改密碼這個事情的呢,我們通過查詢/bin/passwd命令發現了祕密。
圖一
圖二
在圖二中我們能清晰看到 passwd這條二進位制檔案命令的許可權中,多出了一個東西,-s,這就是上文中所提到的suid,執行這條命令的普通使用者,可以暫時擁有其所屬組的許可權。
如何實現設定這些許可權:
設定suid/取消suid
chmod u+s file
chmod u-s file
設定sgid/取消sgid
chmod g+s dir
chmod g-s dir
設定sticky
chmod o+t dir
chmod o-t dir
上篇部落格中提出檔案許可權有三位,那麼在知道特殊許可權之後,我們應該知道,當權限用數字表示的時候,實際上有四位:
chmod u+s 4xxx
chmod g+s 2xxx
chmod o+t 1xxx
即有suid又有sgid 6xxx
即有suid又有sticky 5xxx
即有sgid又有Sticky 3xxx
ACL:
一旦開始設定acl,那麼原有的許可權屬性不可更改,只有取消acl才能更改所屬人,所屬組和其他人的許可權資訊。在acl和原有的許可權屬性之間就有那麼一種優先順序: owner > acl user > group 與 acl group 誰的許可權多,誰優先 > other
設定acl,利用setfacl命令來設定facl,下面對setfacl的命令格式進行解釋
例:setfacl -m u:wang:rwx file|directory
- -m 表示修改ACL。你可以增加新的,或修改存在的ACL
- u: 表示使用者。你可以使用 g 來設定組許可權
- :rwx 需要設定的許可權。
- 最後是檔案或者說目錄
mask 閾值的設定
setfacl -m m:r-x file |directory 設定上限閥值 ,所有超過mask顯示的閾值的許可權都會被遮蔽,mask掩碼是動態更新的,
設定acl後,ll顯示的組資訊其實是mask資訊,原有的組資訊不可改變,也不會顯示(可用getfacl顯示完整的組許可權)
每增加一條acl,mask就會更新,並且取所有的許可權的並集,保證所有acl都有效 (所以一般情況下往往為了臨時性的目的進行設定閾值)
取消acl:
setfacl -x u:wang file |directory 刪除特定的某條acl
setfacm -b file |directory 清除acl屬性,即清楚所有acl
setfacl -k file |directory 清除預設許可權
檢視acl:
getfacl file|directory 檢視某個檔案或者某個目錄的acl值
acl許可權的備份與還原
acl許可權的備份及還原
getfacl file |directory > acl.txt
setfacl --restore acl.txt