二、特殊權限
特殊權限的介紹
之前我們提到了特殊權限有三個,這三個特殊權限是在可執行程序運行時影響操作權限的,它們分別是SUID,SGID,sticky-bit位
特殊權限
說明
SUID
當一個設置了SUID 位的可執行文件被執行時,該文件將以所有者的身份運行,也就是說無論誰來執行這個文件,他都有文件所有者的特權。任意存取該文件擁有者能使用的全部系統資源。如果所有者是 root 的話,那麼執行人就有超級用戶的特權了。
SGID
當一個設置了SGID 位的可執行文件運行時,該文件將具有所屬組的特權,任意存取整個組所能使用的系統資源;若一個目錄設置了SGID,則所有被複製到這個目錄下的文件,其所屬的組都會被重設為和這個目錄一樣,除非在複製文件時保留文件屬性,才能保留原來所屬的群組設置。
stickybit
對一個文件設置了sticky-bit之後,儘管其他用戶有寫權限,也必須由屬主執行刪除、移動等操作;對一個目錄設置了sticky-bit之後,存放在該目錄的文件僅准許其屬主執行刪除、移動等操作。
一個典型的例子就是passwd命令,這個命令允許用戶修改自己的密碼。我們可以看到本來是rwx的權限表示形式變成了rws,同樣如果/usr/bin/passwd這個文件同時被設置了三個特殊權限,那麼權限的格式就會變成rwsrwsrwt,需要注意的是特殊權限設置的前置要求是可執行,也就是如果沒有x權限位,是不要設置的,即便你使用root用戶設置上了特殊權限,也不會生效。
[root@localhost test]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 34928 5月 11 11:14 /usr/bin/passwd
特殊權限的設置和查看
特殊權限的設置也是使用chmod
[root@localhost test]# ll
總用量 0
-rwxr-xr-x 1 oracle oracle 0 10月 18 01:26 file1
[root@localhost test]# chmod u+s file1
[root@localhost test]# ll
總用量 0
-rwsr-xr-x 1 oracle oracle 0 10月 18 01:26 file1
[root@localhost test]# chmod g+s file1
[root@localhost test]# ll
總用量 0
-rwsr-sr-x 1 oracle oracle 0 10月 18 01:26 file1
[root@localhost test]# chmod o+t file1
[root@localhost test]# ll
總用量 0
-rwsr-sr-t 1 oracle oracle 0 10月 18 01:26 file1
或者使用數字
[root@localhost test]# chmod u-s,g-s,o-t file1
[root@localhost test]# ll
總用量 0
-rwxr-xr-x 1 oracle oracle 0 10月 18 01:26 file1
[root@localhost test]# chmod 7755 file1
[root@localhost test]# ll
總用量 0
-rwsr-sr-t 1 oracle oracle 0 10月 18 01:26 file1