前面已經(jīng)學(xué)習(xí) SUID、SGID、SBIT 特殊權(quán)限,以及各自的含義和功能,那么,如何給文件或目錄手動設(shè)定這些特殊權(quán)限呢?
還是要依賴 chmod 命令。我們知道,使用 chmod 命令給文件或目錄設(shè)定權(quán)限,有 2 種方式,分別是使用數(shù)字形式和字母形式。例如:
#數(shù)字形式
[root@localhost ~]# chmod 755 ftest
#字母形式
[root@localhost ~]# chmod u=rwx,go=rx ftest
給文件或目錄設(shè)定 SUID、SGID 和 SBIT 特殊權(quán)限,也可以使用這 2 種形式。
有關(guān) chmod 命令的用法,可以閱讀《linux chmod命令》一節(jié)。
我們知道,給 chmod 命令傳遞 3 個數(shù)字,即可實(shí)現(xiàn)給文件或目錄設(shè)定普通權(quán)限。比如說,"755" 表示所有者擁有 rwx 權(quán)限,所屬組擁有 rx 權(quán)限,其他人擁有 tx 權(quán)限。
給文件或目錄設(shè)定特殊權(quán)限,只需在這 3 個數(shù)字之前增加一個數(shù)字位,用來放置給文件或目錄設(shè)定的特殊權(quán)限,就這么簡單。
因此,我們有必要知道 SUID、SGID、SBIT 分別對應(yīng)的數(shù)字,如下所示:
4 --> SUID
2 --> SGID
1 --> SBIT
舉個例子,如果要將一個文件權(quán)限設(shè)置為 -rwsr-xr-x,怎么辦呢?此文件的普通權(quán)限為 755,另外,此文件還有 SUID 權(quán)限,因此只需在 755 的前面,加上 SUID 對應(yīng)的數(shù)字 4 即可。也就是說,只需執(zhí)行chmod 4755 文件名命令,就完成了-rwsr-xr-x 權(quán)限的設(shè)定。
關(guān)于 -rwsr-xr-x 的普通權(quán)限是 755,你可以這樣理解,標(biāo)記有 s 和 t 的權(quán)限位,隱藏有 x 權(quán)限,對此,本節(jié)后續(xù)會給出更詳細(xì)的解釋。
同樣的道理,如果某文件擁有 SUID 和 SGID 權(quán)限,則只需要給 chmod 命令傳遞 6---(- 表示數(shù)字)即可;如果某目錄擁有 SGID 和 SBIT,只需要給 chmod 命令傳遞 3--- 即可。
注意,不同的特殊權(quán)限,作用的對象是不同的,SUID 只對可執(zhí)行文件有效;SGID 對可執(zhí)行文件和目錄都有效;SBIT 只對目錄有效。當(dāng)然,你也可以給文件設(shè)置 7---,也就是將 SUID、SGID、SBIT賦予一個文件或目錄,例如:
[root@localhost ~]# chmod 7777 ftest
#一次賦予SetUID、SetGID和SBIT權(quán)限
[root@localhost ~]# ll ftest
-rwsrwsrwt. 1 root root Apr 19 23:54 ftest
執(zhí)行過程雖然沒有報(bào)錯,但這樣做,沒有任何實(shí)際意義。
除了賦予 chmod 命令 4 個數(shù)字設(shè)定特殊權(quán)限,還可以使用字母的形式。例如,可以通過 "u+s" 給文件賦予 SUID 權(quán)限;通過 "g+s" 給文件或目錄賦予 SGID 權(quán)限;通過 "o+t" 給目錄賦予 SBIT 權(quán)限。
舉一個例子:
[root@localhost ~]#chmod u+s, g+s, o+t ftest
#設(shè)置特殊權(quán)限
[root@localhost ~]# ll ftest
-rwsr-sr-t. 1 root root Apr 19 23:54 ftest
[root@localhost ~]# chmod u-s, g-s, o-t ftest
#取消特殊權(quán)限
[root@localhost ~]# ll ftest
-rwxr-xr-x. 1 root root Apr 19 23:54 ftest
例子中,通過字母的形式成功給 ftest 文件賦予了 3 種特殊權(quán)限,此做法僅為驗(yàn)證字母形式的可行性,對 ftest 文件來說,并無實(shí)際意義。
細(xì)心的讀者可能發(fā)現(xiàn)這樣一個問題,使用 chmod 命令給文件或目錄賦予特殊權(quán)限時,原文件或目錄中存在的 x 權(quán)限會被替換成 s 或 t,而當(dāng)我們使用 chmod 命令消除文件或目錄的特殊權(quán)限時,原本消失的 x 權(quán)限又會顯現(xiàn)出來。
這是因?yàn)?,無論是 SUID、SGID 還是 SBIT,它們只針對具有 x 權(quán)限的文件或目錄有效。沒有 x 權(quán)限的文件或目錄,即便賦予特殊權(quán)限,也無法發(fā)揮它們的功能,沒有任何意義。
例如,我們就是要給不具有 x 權(quán)限的文件或目錄賦予特殊權(quán)限,看看有什么效果:
[root@localhost ~]# chmod 7666 ftest
[root@localhost ~]# ll ftest
-rwSrwSrwT. 1 root root Apr 23:54 ftest
可以看到,相應(yīng)的權(quán)限位會被標(biāo)記為 S(大寫)和 T(大寫),指的就是設(shè)置的 SUID、SGID 和 SBIT 權(quán)限沒有意義。
新聞熱點(diǎn)
疑難解答
圖片精選