首頁 > linux教程 > Linux權限管理 閱讀:0更新時間:2020-03-28 01:00:10

Linux文件特殊權限(SUID、SGID和SBIT)的設置

前面已經學習 SUID、SGID、SBIT 特殊權限,以及各自的含義和功能,那么,如何給文件或目錄手動設定這些特殊權限呢?

還是要依賴 chmod 命令。我們知道,使用 chmod 命令給文件或目錄設定權限,有 2 種方式,分別是使用數字形式和字母形式。例如:

#數字形式
[root@localhost ~]# chmod 755 ftest
#字母形式
[root@localhost ~]# chmod u=rwx,go=rx ftest

給文件或目錄設定 SUID、SGID 和 SBIT 特殊權限,也可以使用這 2 種形式。

有關 chmod 命令的用法,可以閱讀《linux chmod命令》一節。

我們知道,給 chmod 命令傳遞 3 個數字,即可實現給文件或目錄設定普通權限。比如說,"755" 表示所有者擁有 rwx 權限,所屬組擁有 rx 權限,其他人擁有 tx 權限。

給文件或目錄設定特殊權限,只需在這 3 個數字之前增加一個數字位,用來放置給文件或目錄設定的特殊權限,就這么簡單。

因此,我們有必要知道 SUID、SGID、SBIT 分別對應的數字,如下所示:

4 --> SUID
2 --> SGID
1 --> SBIT

舉個例子,如果要將一個文件權限設置為 -rwsr-xr-x,怎么辦呢?此文件的普通權限為 755,另外,此文件還有 SUID 權限,因此只需在 755 的前面,加上 SUID 對應的數字 4 即可。也就是說,只需執行chmod 4755 文件名命令,就完成了-rwsr-xr-x 權限的設定。

關于 -rwsr-xr-x 的普通權限是 755,你可以這樣理解,標記有 s 和 t 的權限位,隱藏有 x 權限,對此,本節后續會給出更詳細的解釋。

同樣的道理,如果某文件擁有 SUID 和 SGID 權限,則只需要給 chmod 命令傳遞 6---(- 表示數字)即可;如果某目錄擁有 SGID 和 SBIT,只需要給 chmod 命令傳遞 3--- 即可。

注意,不同的特殊權限,作用的對象是不同的,SUID 只對可執行文件有效;SGID 對可執行文件和目錄都有效;SBIT 只對目錄有效。當然,你也可以給文件設置 7---,也就是將 SUID、SGID、SBIT賦予一個文件或目錄,例如:

[root@localhost ~]# chmod 7777 ftest
#一次賦予SetUID、SetGID和SBIT權限
[root@localhost ~]# ll ftest
-rwsrwsrwt. 1 root root Apr 19 23:54 ftest

執行過程雖然沒有報錯,但這樣做,沒有任何實際意義。

除了賦予 chmod 命令 4 個數字設定特殊權限,還可以使用字母的形式。例如,可以通過 "u+s" 給文件賦予 SUID 權限;通過 "g+s" 給文件或目錄賦予 SGID 權限;通過 "o+t" 給目錄賦予 SBIT 權限。

舉一個例子:

[root@localhost ~]#chmod u+s, g+s, o+t ftest
#設置特殊權限
[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
#取消特殊權限
[root@localhost ~]# ll ftest
-rwxr-xr-x. 1 root root Apr 19 23:54 ftest

例子中,通過字母的形式成功給 ftest 文件賦予了 3 種特殊權限,此做法僅為驗證字母形式的可行性,對 ftest 文件來說,并無實際意義。

細心的讀者可能發現這樣一個問題,使用 chmod 命令給文件或目錄賦予特殊權限時,原文件或目錄中存在的 x 權限會被替換成 s 或 t,而當我們使用 chmod 命令消除文件或目錄的特殊權限時,原本消失的 x 權限又會顯現出來。

這是因為,無論是 SUID、SGID 還是 SBIT,它們只針對具有 x 權限的文件或目錄有效。沒有 x 權限的文件或目錄,即便賦予特殊權限,也無法發揮它們的功能,沒有任何意義。

例如,我們就是要給不具有 x 權限的文件或目錄賦予特殊權限,看看有什么效果:

[root@localhost ~]# chmod 7666 ftest
[root@localhost ~]# ll ftest
-rwSrwSrwT. 1 root root Apr 23:54 ftest

可以看到,相應的權限位會被標記為 S(大寫)和 T(大寫),指的就是設置的 SUID、SGID 和 SBIT 權限沒有意義。

beylze編程學院,一個分享編程知識和seo優化知識的網站。跟著beylze一起學習,每天都有進步。

通俗易懂,深入淺出,一篇文章只講一個知識點。

文章不深奧,不需要鉆研,在公交、在地鐵、在廁所都可以閱讀,隨時隨地漲姿勢。

文章不涉及代碼,不燒腦細胞,人人都可以學習。

當你決定關注beylze(公眾號:beylze),你已然超越了90%的其他從業者!

相關文章

優秀教程

国产亚洲欧美日韩