三種特殊權限(SUID,SGID,,sticky-bit)

三種特殊權限

1.SUID

當一個設置了SUID 位的可執行文件被執行時,該文件將以所有者的身份運行,也就是說無論誰來執行這個文件,他都有文件所有者的特權。

如果所有者是 root 的話,那麼執行人就有超級用戶的特權了。


2.SGID

當一個設置了SGID 位的可執行文件運行時,該文件將具有所屬組的特權, 任意存取整個組所能使用的系統資源。

若一個目錄設置了SGID,則所有被複制到這個目錄下的文件, 其所屬的組都會被重設爲和這個目錄一樣,除非在複製文件時加上-p (preserve,保留文件屬性)的參數,才能保留原來所屬的羣組設置。


3.sticky-bit

對一個文件設置了sticky-bit之後,儘管其他用戶有寫權限, 也必須由屬主執行刪除、移動等操作。

對一個目錄設置了sticky-bit之後,存放在該目錄的文件僅准許其屬主執行刪除、 移動等操作。

特殊權限的數值表示

三種特殊權限可以用單獨的一位8進制數值表示


SUID、SGID和sticky-bit的數值表示


SUID SGID sticky 二進制 八進制 說明

- - - 000 0 不設置特殊權限

- - t 001 1 只設置sticky

- s - 010 2 只設置SGID

- s t 011 3 只設置SGID和sticky

s - - 100 4 只設置SUID

s - t 101 5 只設置SUID和sticky

s s - 110 6 只設置SUID和SGID

s s t 111 7 設置三種特殊權限


我們知道了文件的權限可以用三個八進制數字表示。其實文件的權限應該用四個八進制來表示,不過用 ls -l 命令時,只顯示三個罷了。那個沒有顯示的八進制數字其實是第一個,它用來設定一些特殊權限。這個八進制數字的三個位是:

SUID SGID sticky-bit

它們的含義是:

SUID

當設置了SUID 位的文件被執行時,該文件將以所有者的身份運行,也就是說無論誰來執行這個文件,他都有文件所有者的特權。如果所有者是 root 的話,那麼執行人就有超級用戶的特權了。這時該位將變成一個安全漏洞,因此不要輕易設置該位。

SGID

與上面的內容類似。文件運行時,運行者將具有所屬組的特權。

sticky-bit


sticky 位要求操作系統既是在可執行程序退出後,仍要在內存中保留該程序的映象。這樣做是爲了節省大型程序的啓動時間。但是會佔用系統資源。因此設置該位,不如把程序寫好。


set uid ;set gid;sticky bit區別


每一個文件有所有者及組編號,set uid ;set gid可以改變用戶對文件具有的權限:寫和執行.


setuid: 在執行時具有文件所有者的權限.

setgid: 設置目錄. 一個目錄被標上setgid位,此目錄下創建的文件繼承該目錄的屬性.

sticky bit: 該位可以理解爲防刪除位. 設置sticky bit位後,就算用戶對目錄具有寫權限,但也只能添加文件而不能刪除文件。


4.如何設置:


操作這些標誌與操作文件權限的命令是一樣的, 都是 chmod. 有兩種方法來操作,

1) chmod u+s temp -- 爲temp文件加上setuid標誌. (setuid 只對文件有效,U=用戶)

chmod g+s tempdir -- 爲tempdir目錄加上setgid標誌 (setgid 只對目錄有效,g=組名)

chmod o+t temp -- 爲temp文件加上sticky標誌 (sticky只對文件有效)


2) 採用八進制方式. 這一組八進制數字三位的意義如下,

abc

a - setuid位, 如果該位爲1, 則表示設置setuid

b - setgid位, 如果該位爲1, 則表示設置setgid

c - sticky位, 如果該位爲1, 則表示設置sticky


設置後, 可以用 ls -l 來查看. 如果本來在該位上有x, 則這些特殊標誌顯示爲小寫字母 (s, s, t). 否則, 顯示爲大寫字母 (S, S, T)

如:

rwsrw-r-- 表示有setuid標誌 (rwxrw-r--:rwsrw-r--)

rwxrwsrw- 表示有setgid標誌 (rwxrwxrw-:rwxrwsrw-)

rwxrw-rwt 表示有sticky標誌 (rwxrw-rwx:rwxrw-rwt)


如何設置suid和guid


第一種:chmod u[g]+u[U] +filename

suid是在u的x位用s/S設定suid,當x位本身就設定了執行權限,則用小s表示;當x沒有設定執行權限,則用大S表示;

eg:file:-rwx r-x r-x

dire:drw- r– r–

—–>

file:-rws(S) r-x r-x

dire:drwS(s) r– r–

guid是在g的x位用s/S設定guid,當x位本身就設定了執行權限,則用小s表示;當x沒有設定執行權限,則用大S表示;


第二種:chmod +4位遵循權限設置的數字 +filename

(1)如果希望設置suid,那麼就將權限位最前面(第一個短橫線_所佔據的)的那一位設置爲4;

(2)如果希望設置guid,那麼就將權限位最前面的那一位設置爲2;

(3)如果希望兩者都置位,那麼將權限位最前面的那一位設置爲4+2。


指導老師:雙星科技-馮老師

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章