A. SUID, SGID, SBIT權限的活學活用方式:
SUID 添加命令: chmod 4***, chmod u+s
SUID 刪除命令: chmod 0***, chmod u-s
SGID添加命令: chmod 2***, chmod g+s
SGID刪除命令: chmod 0***, chmod g-s
SBIT添加命令: chmod 1***, chmod o+t
SBIT刪除命令: chmod 0***, chmod o-t
SetUID的功能:
1. 只有可執行的二進制程序或者shell程序才能設定SUID權限
2. 命令執行者要對該程序(命令)擁有x(執行)權限
3. 命令執行者在執行該程序時獲得該程序文件owner的身份(在執行程序的過程中靈魂附體爲文件的owner)
4. SetUID權限只在該程序執行過程中有效,也就是說身份改變只在程序執行過程中有效
以passwd命令舉例
ls –l /usr/bin/passwd #passwd命令,不是/etc/passwd配置文件
bl@ubuntumma:~$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 47032 Jul 16 2015 /usr/bin/passwd
bl@ubuntumma:~$ ls -l /etc/shadow
-rw-r----- 1 root shadow 1292 Aug 25 16:56 /etc/shadow
以上可以看出,
(1)passwd命令的權限中,有s。
(2)shadow文件的權限普通用戶沒有w權限,root用戶有w權限
(3)因爲passwd命令有s(即設置了suid功能),那麼bl用戶在執行passwd命令時,就會暫時獲得命令owner(root)的權限,而root對shadow文件有w權限,所以,普通用戶bl此時也有了w權限,在執行passwd時是可以修改密碼的(即修改shadow文件)。
設定SUID
4代表SUID
chmod 4764
chmod u+s
bl@ubuntumma:~$ ls -l test
-rwxrw-r-- 1 bl bl 0 Aug 26 12:43 test
bl@ubuntumma:~$ chmod 4764 test
bl@ubuntumma:~$ ls -l test
-rwsrw-r-- 1 bl bl 0 Aug 26 12:43 test
刪除SUID,直接設置權限即可
bl@ubuntumma:~$ chmod 664 test 或 chmod u-s
bl@ubuntumma:~$ ls -l test
-rw-rw-r-- 1 bl bl 0 Aug 26 12:43 test
這時,再次設置SUID會出現什麼情況呢
bl@ubuntumma:~$ chmod u+s test
bl@ubuntumma:~$ ls -l test
-rwSrw-r-- 1 bl bl 0 Aug 26 12:43 test
S變成大寫了,這說明SUID設置出錯,因爲644權限裏的owner本身就沒有x權限,所以無法設置SUID
出現大寫S表示設置SUID權限不成功,因爲文件所有者都沒執行權限[x], 這在linux中時不允許的。