在linux中,s指的是“強(qiáng)制位權(quán)限”,位于user或group權(quán)限組的第三位置。如果在user權(quán)限組中設(shè)置了s位,則當(dāng)文件被執(zhí)行時(shí),該文件是以文件所有者UID而不是用戶UID執(zhí)行程序;如果在group權(quán)限組中設(shè)置了s位,當(dāng)文件被執(zhí)行時(shí),該文件是以文件所有者GID而不是用戶GID執(zhí)行程序。s權(quán)限位是一個(gè)敏感的權(quán)限位,容易造成系統(tǒng)的安全問題。
本教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。
在Linux系統(tǒng)中最常見的文件權(quán)限是w、r、x,分別對應(yīng)著寫、讀、執(zhí)行權(quán)限,但是除此之外Linux還支持另外一系列的權(quán)限設(shè)置,例如s權(quán)限、t權(quán)限。下面就介紹一下s權(quán)限的具體含義。
s權(quán)限
s,表示set UID或set GID。位于user或group權(quán)限組的第三位置。如果在user權(quán)限組中設(shè)置了s位,則當(dāng)文件被執(zhí)行時(shí),該文件是以文件所有者UID而不是用戶UID 執(zhí)行程序。如果在group權(quán)限組中設(shè)置了s位,當(dāng)文件被執(zhí)行時(shí),該文件是以文件所有者GID而不是用戶GID執(zhí)行程序。s權(quán)限位是一個(gè)敏感的權(quán)限位,容易造成系統(tǒng)的安全問題。請?jiān)谠O(shè)置時(shí)小心,并注意系統(tǒng)中已有的SUID或SGID文件和目錄。
s權(quán)限包含S_ISUID、S_ISGID兩個(gè)常量在內(nèi),叫做強(qiáng)制位權(quán)限
;
S_ISUID只能應(yīng)用于二進(jìn)制可執(zhí)行文件*;
S_ISGID可應(yīng)用于二進(jìn)制可執(zhí)行文件*和目錄;
*shell腳本不可以,因?yàn)閟hell腳本并不是二進(jìn)制文件.
S_ISUID、S_ISGID用在二進(jìn)制文件時(shí):
-
如果S_ISUID為真,則把此進(jìn)程的有效用戶ID設(shè)置為此文件擁有者的用戶ID.
-
如果S_ISGID為真,則把此進(jìn)程的有效用戶組ID設(shè)置為此文件的組ID.
由于進(jìn)程有用戶/組ID影響文件訪問權(quán)限,于是就相當(dāng)于臨時(shí)擁有文件所有者的身份. 典型的文件是passwd. 如果一般用戶執(zhí)行該文件, 則在執(zhí)行過程中, 該文件可以獲得root權(quán)限, 從而可以更改用戶的密碼.
S_ISGID用在目錄時(shí):
當(dāng)前用戶執(zhí)行chdir切換至該目錄后,用戶進(jìn)程的有效用戶組ID(effective group)將會設(shè)置為該目錄的用戶組.若用戶在此目錄下具備w權(quán)限,則用戶進(jìn)程所創(chuàng)建的新文件的用戶組ID與該目錄用戶組ID相同.
ls -al /usr/bin/passwd -rwsr-xr-x 1 pythontab pythontab 32988 2018-03-16 14:25 /usr/bin/passwd
兩個(gè)常量的值是:
oct | dec | |
S_ISUID | 4000 | 2048 |
S_ISGID | 2000 | 1024 |
即分別是第12位和第11位的掩碼。
如何使用?
我們可以通過字符模式設(shè)置s權(quán)限:chmod a+s filename
,也可以使用絕對模式進(jìn)行設(shè)置:
-
設(shè)置suid:將相應(yīng)的權(quán)限位之前的那一位設(shè)置為4;
-
設(shè)置guid:將相應(yīng)的權(quán)限位之前的那一位設(shè)置為2;
-
兩者都置位:將相應(yīng)的權(quán)限位之前的那一位設(shè)置為4+2=6.
設(shè)置一個(gè)文件運(yùn)行時(shí)具備文件擁有者UID的身份:
chmod 4755 test
設(shè)置一個(gè)文件運(yùn)行時(shí)具備文件擁有者GID的身份:
chmod 2755 test
設(shè)置一個(gè)文件運(yùn)行時(shí)以上兩者兼?zhèn)涞纳矸荩?/p>
chmod 6755 test
注意:在設(shè)置s權(quán)限時(shí)文件屬主、屬組必須先設(shè)置相應(yīng)的x權(quán)限,否則s權(quán)限并不能正真生效(c h m o d命令不進(jìn)行必要的完整性檢查,即使不設(shè)置x權(quán)限就設(shè)置s權(quán)限,chmod也不會報(bào)錯(cuò),當(dāng)我們ls -l時(shí)看到rwS,大寫S說明s權(quán)限未生效)
總結(jié)
可執(zhí)行的文件搭配這個(gè)權(quán)限,便能得到特權(quán),任意存取該文件的所有者能使用的全部系統(tǒng)資源。請注意具備SUID權(quán)限的文件,黑客經(jīng)常利用這種權(quán)限,以SUID配上root帳號擁有者,無聲無息地在系統(tǒng)中開扇后門,供日后進(jìn)出使用。