關於SUID、SGID、Sticky

SUID屬性apache

passwd命令能夠用於更改用戶的密碼,通常用戶可使用這個命令修改本身的密碼。可是保存用戶密碼的/etc/shadow文件的權限是400,也就是說只有文件的全部者root用戶能夠寫入,那爲何其餘用戶也能夠修改本身的密碼呢?這就是因爲Linux的文件系統中的文件有SUID屬性。ide

[root@srv ~]# ll /etc/shadow翻譯

-r-------- 1 root root 1128 Feb 15 14:33 /etc/shadowit

SUID屬性只能運用在可執行文件上,當用戶執行該執行文件時,會臨時擁有該執行文件全部者的權限。passwd命令啓用了SUID功能,因此通常用戶在使用passwd命令修改密碼時,會臨時擁有了passwd命令全部者root用戶的權限,這樣通常用戶才能夠將本身的密碼寫入/etc/shadow文件。在使用「ls -l」或「ll」命令瀏覽文件時,若是可執行文件全部者權限的第三位是一個小寫的「s」就代表該執行文件擁有SUID屬性。class

[root@srv ~]# ll /usr/bin/passwdtest

-rwsr-xr-x 1 root root 22960 Jul 17 2006 /usr/bin/passwd配置

若是在瀏覽文件時,發現全部者權限的第三位是一個大寫的「S」則代表該文件的SUID屬性無效,好比將SUID屬性給一個沒有執行權限的文件。權限

SGID屬性charles

SGID於SUID不一樣,SGID屬性能夠應用在目錄或可執行文件上。當SGID屬性應用在目錄上時,該目錄中全部創建的文件或子目錄的擁有組都會是該目錄的擁有組。好比「/charles」目錄的擁有組是charles,當「/charles」目錄擁有SGID屬性時,任何用戶在該目錄中創建的文件或子目錄的擁有組都會時charles;當SGID屬性應用在可執行文件上時,其餘用戶在使用該執行文件時就會臨時擁有該執行文件擁有組的權限。好比/sbin/apachectl文件的擁有組是httpd,當/sbin/apachectl文件有SGID屬性時,任何用戶在執行該文件時都會臨時擁有用戶組httpd的權限。在使用「ls -l」或「ll」命令瀏覽文件或目錄時,若是擁有組權限的第三位是一個小寫的「s」就代表該執行文件或目錄擁有SGID屬性。密碼

[root@srv tmp]# ll

total 4

drwxr-sr-x 2 root root 4096 Feb 15 22:25 test4

-r-xr-sr-x 1 root root 6144 Feb 15 22:25 test6

若是在瀏覽文件時,發現擁有組權限的第三位是一個大寫的「S」則代表該文件的SGID屬性無效,好比將SGID屬性給一個沒有執行權限的文件。

Sticky屬性

Sticky屬性只能應用在目錄,當目錄擁有Sticky屬性全部在該目錄中的文件或子目錄不管是什麼權限只有文件或子目錄全部者和root用戶能刪除。好比當用戶test8在「/charles」目錄中創建一個文件並將該文件權限配置爲777,當/charles目錄擁有Sticky屬性時,只有root和test8用戶能夠將該文件刪除。在使用「ls -l」或「ll」命令瀏覽目錄時,若是其餘用戶權限的第三位是一個小寫的「t」就代表該執行文件或目錄擁有Sticky屬性。

[root@srv tmp]# ll

total 4

drwxrwxrwt 2 root root 4096 Feb 15 22:34 test4

配置SUID/SGID/Sticky屬性

配置普通權限時可使用字符或數字,SUID、SGID、Sticky也是同樣。使用字符時s表示SUID和SGID、t表示Sticky;4表示SUID、2表示SGID、1表示Sticky。在配置這些屬性時仍是使用chmod命令。

l 當前目錄目前狀況。

[root@srv tmp]# ll

total 52

drwxr-xr-x 2 root root 4096 Feb 15 22:47 test2

drwxr-xr-x 2 root root 4096 Feb 15 22:47 test3

drwxr-xr-x 2 root root 4096 Feb 15 22:46 test4

drwxr-xr-x 2 root root 4096 Feb 15 22:46 test5

-r-xr-xr-x 1 root root 5120 Feb 15 22:46 test6

-r-xr-xr-x 1 root root 3072 Feb 15 22:50 test7

drwxr-xr-x 2 root root 4096 Feb 15 22:56 test1

-r-xr-xr-x 1 root root 6144 Feb 15 22:48 test8

-r-xr-xr-x 1 root root 9216 Feb 15 22:51 test9

爲文件test6增長SUID屬性。

[root@srv tmp]# chmod u+s test6

l 爲文件test8增長SUID屬性。在使用數字表示時,原來的三位不變,只是增長了一個千位專門用於SUID、SGID、Sticky屬性。下面的4就是SUID屬性。

[root@srv tmp]# chmod 4555 test8

l 爲目錄test2增長SGID屬性。

[root@srv tmp]# chmod g+s test2/

l 爲目錄test3增長SGID屬性。

[root@srv tmp]# chmod 2755 test3/

l #爲文件test7增長SUID和SGID屬性,6=4(SUID)+2(SGID)。

[root@srv tmp]# chmod 6555 test7

l 爲目錄test4增長Sticky屬性。

[root@srv tmp]# chmod o+t test4/

l 爲目錄test5增長Sticky屬性。

[root@srv tmp]# chmod 1755 test5/

l 爲目錄test1增長SGID和Sticky屬性,3=2(SGID)+1(Sticky)。

[root@srv tmp]# chmod 3755 test1/

l 執行上述更改命令後當前目錄的狀況。

[root@srv tmp]# ll

total 52

drwxr-sr-x 2 root root 4096 Feb 15 22:47 test2

drwxr-sr-x 2 root root 4096 Feb 15 22:47 test3

drwxr-xr-t 2 root root 4096 Feb 15 22:46 test4

drwxr-xr-t 2 root root 4096 Feb 15 22:46 test5

-r-sr-xr-x 1 root root 5120 Feb 15 22:46 test6

-r-sr-sr-x 1 root root 3072 Feb 15 22:50 test7

drwxr-sr-t 2 root root 4096 Feb 15 22:56 test1

-r-sr-xr-x 1 root root 6144 Feb 15 22:48 test8

-r-xr-xr-x 1 root root 9216 Feb 15 22:51 test9

l 取消目錄test1的SGID屬性。

[root@srv tmp]# chmod g-s test1/

在使用umask命令顯示當前的權限掩碼時,千位的「0」就是表示SUID、SGID、Sticky屬性。

提示:在有些資料上SUID、SGID被翻譯爲「強制位」,Sticky被翻譯爲「冒險位」。

相關文章
相關標籤/搜索