Linux的特殊權(quán)限

Linux上除了有普通的文件權(quán)限(r,w,x)以外,還包括的特殊權(quán)限: suid, sgid, sticky

安全上下文的規(guī)則

一個進程運行時它擁有的文件讀寫權(quán)限來自于啟動它的用戶的權(quán)限,因此進程也是有屬主和屬組的,和文件同理(linux上 一切皆是文件)。規(guī)則如下:
(1) 任何一個可執(zhí)行程序文件能否被啟動為進程, 取決于發(fā)起進程發(fā)起用戶對程序文件是否擁有執(zhí)行權(quán)限(只要ugo其中一個有即可)。
(2) 啟動進程后,進程的屬主為啟動用戶,進程的屬組為進程發(fā)起用戶的屬組。
(3) 進程讀寫文件的權(quán)限取決于進程啟動用戶的權(quán)限:
[1] 進程的發(fā)起用戶和文件的屬主一致,那么適用文件屬主權(quán)限;
[2] 進程的發(fā)起用戶屬于文件的屬組,則適用文件的屬組權(quán)限;
[3] 如果進程的發(fā)起用戶既不是文件的屬主也不屬于文件的屬組,那么適用文件的其他權(quán)限;

總結(jié): 安全上下文規(guī)則定義進程啟動用戶、進程文件、其他文件之間的權(quán)限使用規(guī)則。

SUID

SUID的作用是打破安全上下文的權(quán)限規(guī)則,可以用來提權(quán)或是降權(quán),他的應用規(guī)則如下:
(1) 任何一個可執(zhí)行程序文件能否被啟動為進程, 取決于發(fā)起進程發(fā)起用戶對程序文件是否擁有執(zhí)行權(quán)限(只要ugo其中一個有即可)。
(2) 啟動進程后,進程的屬主為進程文件的屬主。
例如,使用 ll which passwd, 可以看到passwd命令啟動文件的執(zhí)行位權(quán)限是s, 屬主是root, 意思是當passwd啟動時的進程屬主是root,也就是說該命令運行時是以root的身份來運行的。

SUID 權(quán)限設(shè)置

chmod u+s file...
chmod u-s file...

SGID

SGID 的作用對象是一個目錄。 功能和SUID的功能是不一樣的。它的適用規(guī)則如下:
(1) 默認情況下,用戶創(chuàng)建文件(目錄)的屬組為該用戶的基本組,一旦目錄被設(shè)置了SGID權(quán)限,那么對該目錄由寫權(quán)限的用戶在此目錄創(chuàng)建的文件(目錄)所屬組不再屬于基本組,而是該目錄的屬組。

SGID 權(quán)限設(shè)置

chmod g+s dir...
dhmod g-s dir...

sticky

sticky 作用對象是一個目錄。 是對于一個多人可寫的目錄, 如果設(shè)置了sticky權(quán)限, 每個用戶只能刪除自己(屬主)的文件。 從而消除sgud帶來的風險。linux上/tmp,/var/tmp 默認就有該權(quán)限。

sticky 權(quán)限設(shè)置

chmod o+t dir...
chmod o-t dir...

suid,sgid, sticky聯(lián)合權(quán)限設(shè)置

suid,sgid, sticky 和普通權(quán)限一樣,也是映射為一個八進制數(shù)字, 因此也可以使用八進制數(shù)字來設(shè)置
sticky 1
sgid 3
suid 4
示例: chmod 4777 /tmp/a.txt , 第一個是特殊權(quán)限位置

注意:
suid占據(jù)屬主的執(zhí)行權(quán)限位, sgid占據(jù)文件的group權(quán)限位,sticky占據(jù)o的權(quán)限位,
如果特殊權(quán)限顯示S, 表示該文件沒有執(zhí)行權(quán)限,如果是s表示該文件是有執(zhí)行權(quán)限的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容