Linux中文檔與目錄的特殊權限

Linux中,文件或目錄除了rwx及隱藏權限外,還有一些特殊的權限,這些權限包括 SUID/SGID/SBIT,系統中就直接存在這樣的例子:

clip_image002

上例中,/tmp目錄本身的權限中可以看到,不僅僅是rwx權限,而是有了t權限;而/usr/bin/passwd文件,也不僅僅有rwx權限,而是有了s權限。s、t就代表了不同的特殊權限。下面一一介紹這三種特殊權限。

SUID

SUID即Set UID的簡寫。當s標誌出現在文件的owner權限組合中的x位時,比如上圖中passwd文件的權限(-rwsr-xr-x),此時就被稱爲SUID的特殊權限。那該權限是什麼意思呢?

舉例來說,Linux爲了提高本地用戶賬號信息的安全性,特別指定了/etc/shadow以加密密碼的方式來存儲用戶的賬戶信息,同時這個文件的默認權限是-r--------,限定只有root用戶才能“強制”儲存,其他用戶沒有任何權限。可是你會發現,普通用戶也是可以修改我們自己的用戶密碼的,那普通用戶哪來的權限?這就是SUID特殊權限的作用。

SUID表示當請求執行包含SUID特殊權限的程序時,能夠暫時擁有該程序所有者(對程序)的存取權限。假設普通用戶A通過passwd命令更新自己的密碼,而/usr/bin/passwd的所有者是root (root,root),也就是說,當A請求執行passwd命令時,實際上是暫時獲得root(對/usr/bin/passwd)的執行權限,並進一步更新/etc/shadow的內容。

但如果該用戶A使用cat去讀取/etc/shadow時,就會被拒絕了,因爲cat沒有SUID的特殊權限,所以,A執行cat /etc/shadow時,是不能執行的。

需要注意的是,Linux規定SUID僅對系統中的二進制可執行文件設置有效,而且不可對Shell Script施加設置,畢竟Shell 腳本只是對二進制可執行文件的調度組合,最終也是要遵從binary file的權限設置。

SGID

相對於SUID,當所有者所在的用戶組(group)的權限組合中可執行位(x)被s所取代時(例如---rws---),便構成SGID(即Set GID)的權限設置。SGID可以針對二進制文件或目錄進行設置:

a.二進制可執行文件:則當請求執行該文件(程序)時,請求執行者所在的用戶組 (即effective group)將暫時獲得該程序(binary file)所屬的用戶組ID(group ID)的存取權限。

b.目錄:假設目錄A,此時在A目錄下創建的文件或子目錄所屬的用戶組ID,將自動被賦予A目錄的組ID

SGID主要用於多人組成的項目開發上,一般比較少用到。

SBIT

我們認爲,當文件系統“其他(others)”的權限組合中可執行位(x)被t所取代時(例如------rwt),便構成SBIT(Sticky Bit)的權限設置。SBIT顧名思義可以起到限制訪問的作用,是容易理解而好用的設置,它只對目錄有效。

當對一個目錄A施加了SBIT設定以後,並且使用者對A目錄有wx權限時,則使用者在A目錄下所創建的個人文檔(含目錄)只有使用者本身或root可以執行刪除、更名、移動等操作(是否可讀依實際權限r而定),而不可修改其他用戶的文件或目錄。

最常見的就是在/tmp目錄下了,各用戶都可以在此目錄下創建文件或子目錄,但只能修改自己的文件或目錄,而不能更改其它用戶的。如:

clip_image004

上例中,root用戶創建了新文件testroot,並賦予所有權限。用戶zhang對/tmp也有r和w的權限,但zhang卻沒有權限刪除root創建的testroot文件,就是因爲/tmp的t權限的效果。

注意:SBIT一般僅針對目錄施加有意義。

設置權限

特殊權限的設置也是使用數字的方式。以下是SUID/SGID/SBIT約定對應的八進制數值:

SUID爲4

SGID爲2

SBIT爲1

設置時使用chmod命令,同時把表示特殊權限的數字放在其他三位數字權限的前面,如:

clip_image006

上圖設置了SUID。

clip_image007

上圖設置了SGID。

clip_image008

上圖設置了SBIT。

需要注意的是,SUID只針對二進制文件設置,而SBIT只針對目錄設置有意義,上例中並沒有特殊強調。

有一種特殊情況,比如:

clip_image009

上圖中,設置apple的普通權限爲666,即所有人都沒有x權限,此時,卻設置了所有的特殊權限,那麼,這樣的特殊權限爲“空權限”,表現樣式爲S和T都爲大寫。

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