在linux中,s指的是“強制位元權限”,位於user或group權限群組的第三位置。如果在user權限群組中設定了s位,則當檔案執行時,該檔案是以檔案擁有者UID而不是使用者UID執行程式;如果在group權限群組中設定了s位,當檔案執行時,該文件是以文件所有者GID而不是用戶GID執行程式。 s權限位是敏感的權限位,容易造成系統的安全性問題。
本教學操作環境:linux7.3系統、Dell G3電腦。
在Linux系統中最常見的檔案權限是w、r、x,分別對應寫、讀取、執行權限,但是除此之外Linux還支援另外一系列的權限設置,例如s權限、t權限。下面就介紹一下s權限的具體意義。
s權限
s,表示set UID或set GID。位於user或group權限群組的第三位置。如果在user權限群組中設定了s位,則當檔案執行時,該檔案是以檔案擁有者UID而非使用者UID 執行程式。如果在group權限群組中設定了s位,當檔案執行時,則該檔案是以檔案擁有者GID而非使用者GID執行程式。 s權限位是敏感的權限位,容易造成系統的安全性問題。請在設定時小心,並注意系統中已有的SUID或SGID檔案和目錄。
s權限包含S_ISUID、S_ISGID兩個常數在內,稱為強制位元權限
;
S_ISUID只能套用於二進位執行檔*;
S_ISGID可套用於二進位執行檔*和目錄;
*shell腳本不可以,因為shell腳本並不是二進位執行檔.
S_ISUID、S_ISGID用在二進位檔案時:
如果S_ISUID為真,則把此行程的有效使用者ID設定為此檔案擁有者的使用者ID.
如果S_ISGID為真,則把此進程的有效用戶群組ID設定為此檔案的群組ID.
由於進程有使用者/群組ID影響檔案存取權限,所以就相當於臨時擁有檔案擁有者的身分.典型的檔案是passwd. 如果一般使用者執行該檔案, 則在執行過程中, 該檔案可以獲得root權限, 從而可以更改使用者的密碼.
S_ISGID用在目錄時:
目前使用者執行chdir切換至該目錄後,使用者行程的有效使用者群組ID(effective group)將會設定為該目錄的使用者群組.若使用者在此目錄下具備w權限,則使用者程序所建立的新檔案的使用者群組ID與該目錄使用者群組ID相同.
ls -al /usr/bin/passwd -rwsr-xr-x 1 pythontab pythontab 32988 2018-03-16 14:25 /usr/bin/passwd
兩個常數的值是:
oct | dec | |
4000 | 2048 | |
##2048 |
即分別是第12位元和第11位元的遮罩。
我們可以透過字元模式設定s權限:
chmod a s filename#兩者都置位:將對應的權限位元之前的那一位設定為4 2=6.
設定一個檔案執行階段具備檔案擁有者UID的身份:
chmod 4755 test
設定一個檔案運行時具備檔案擁有者GID的身份:chmod 2755 test
設定一個檔案在執行時以上兩者兼備的身分:
chmod 6755 test
注意:設定s權限時文件屬主、屬組必須先設定對應的x權限,否則s權限並不能正真生效(c h m o d指令不進行必要的完整性檢查,即使不設定x權限就設定s權限, chmod也不會報錯,當我們ls -l時看到rwS,大寫S說明s權限未生效)
### 可執行的檔案搭配這個權限,便能得到特權,任意存取該檔案的擁有者能使用的全部系統資源。請注意具備SUID權限的文件,駭客經常利用這種權限,以SUID配上root帳號擁有者,無聲無息地在系統中開扇後門,供日後進出使用。 ######相關推薦:《###Linux影片教學###》###以上是linux s是什麼權限的詳細內容。更多資訊請關注PHP中文網其他相關文章!