Linux 有三個高級權限suid,sgid,sticky。
1、suid
suid 屬性只能運用在可執行文件上,含義是開放文件所有者的權限給其他用戶,即當用戶執行該執行文件時,會擁有該執行文件所有者的權限。如果給一個非二進制文件文件附加suid權限,則會顯示大寫S,屬於無效。
latiny 用戶能夠執行passwd 命令修改自己的密碼,修改密碼其實就是修改/etc/shadow 這個文件,查看/etc/passwd這個文件的權限,發現除了root其他人沒有寫權限,但是latiny用戶能夠成功執行passwd,其原因就在於passwd這個命令的權限是rwsrw----,其中's'的作用就是讓執行命令的人具有和該命令擁有者相同的權限。
[root@localhost latiny]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
添加權限命令:
chmod u+s file
chmod 4765 file
2、sgid
sgid 屬性可運用於文件或者目錄,運用在文件的含義是開放文件所屬組的權限給其他用戶,即當用戶執行該執行文件時,會擁有該執行文件所屬組用戶的權限。如果給一個非二進制文件文件附加sgid權限,則會顯示大寫S,屬於無效。
運用在目錄上的含義是,在該目錄下所有用戶創建的文件或者目錄的所屬組都和其一樣。即如果/home/latiny目錄具有sgid權限,且所屬組是latiny,則任何用戶在/home/latiny下創建的子目錄或者文件的所屬組都是latiny。
添加權限命令:
chmod g+s directory
chmod 2765 directory
3、sticky
sticky 權限只能運用於目錄上,含義是該目錄下所有的文件和子目錄只能由所屬者刪除,即使其的權限是777或者其他。一個公共目錄,每個人都可以創建文件,刪除自己的文件,但不能刪除別人的文件(僅對目錄有效)。
添加權限命令:
chmod o+t directory
chmod 1765 directory