其實,passwd命令所對應的可執行文件就擁有SetUID權限。
[root@localhost tmp]# ll /usr/bin/passwd-rwsr-xr-x. 1 root root 25980 2月 22 2012 /usr/bin/passwd可以發現,/usr/bin/passwd的文件所有者的執行權限是小寫字母s(如果是大寫字母S,就有問題) ,這就說明該可執行文件擁有SUID權限。正是因為如此,普通用戶才能更改自己的密碼,普通用戶更改自己的密碼時,身份臨時變為超級用戶root,所以才能將密碼變更寫入/etc/shadow(權限為000)的文件。
cat 命令沒有SUID權限,所以普通用戶不能查看 /etc/shadow 文件的內容。要想讓普通用戶也能使用cat命令查看 /etc/shadow 文件,可給cat命令賦予SUID權限。
數字4代表SUID,給一個可執行文件(一般為命令)設置SUID權限的方法有兩種:
chmod 4755 文件名chmod u+s 文件名常見用法:
給cat命令賦予SUID權限:chmod 4755 /bin/cat或chmod u+s /bin/cat刪除SUID權限的方法也有兩種:
chmod 755 文件名chmod u-s 文件名常見用法:
chmod u-s /bin/cat刪除cat命令的SUID權限作為一名合格的linux系統管理員,必須定期對系統中默認應該具有SUID權限的可執行文件進行列表,并定期檢查是否有新的可執行文件被設置了SUID權限。
千萬不要對vi命令或vim命令設置SUID權限,否則,所有的普通用戶都能使用vi命令編輯一些特殊文件(如/etc/passwd),進而將自己的UID改為0(普通用戶就會擁有超級用戶root的所有權限),甚至對整個系統安全造成更加嚴重的災難。
locate命令就具有SGID權限。
[root@localhost ~]# ll /usr/bin/locate-rwx--s--x. 1 root slocate 31492 3月 12 2015 /usr/bin/locate可以發現,locate命令的所屬組的執行權限是小寫字母s。
[root@localhost etc]# ll /var/lib/mlocate/mlocate.db-rw-r-----. 1 root slocate 2310094 12月 2 08:17 /var/lib/mlocate/mlocate.db數字2代表SGID,設置SGID權限的方法有兩種:
chmod 2755 文件或文件夾名chmod g+s 文件或文件夾名刪除SGID權限的方法有兩種:
chmod 755 文件或文件夾名chmod g-s 文件或文件夾名對于可執行文件,設置SGID權限也是一種很危險的操作。應該盡量避免人為地給可執行文件賦予SGID權限,并定期檢查系統中可能存在的SGID權限的文件,列出清單以供排查。
Linux系統中默認就具有SBIT權限的目錄是 /tmp 目錄。
[root@localhost etc]# ll -d /tmpdrwxrwxrwt. 5 root root 4096 1月 27 17:12 /tmp可以發現,/tmp目錄的執行權限是小寫字母t。
數字1代表SBIT,設置SBIT權限的方法有兩種:
chmod 1755 目錄名chmod o+t 目錄名刪除SBIT權限的方法有兩種:
chmod 777 目錄名chmod o-t 目錄名新聞熱點
疑難解答