Linux特殊許可權 SUID SGID SBIT

2021-07-27 12:55:59 字數 1935 閱讀 7133

suid:

只對二進位制程式有效

執行者對於程式需要有x許可權

在程式執行過程中,執行者擁有程式擁有者的許可權

例如:

普通使用者執行passwd命令。

首先檢視passwd命令的絕對路徑:

檢視passwd命令許可權:

passwd的擁有者是root,且擁有者許可權裡面本應是x的那一列顯示的是s,這說明這個命令具有suid許可權。

同時發現普通使用者沒有w許可權,所以按理來說普通使用者是不能執行這個命令的,因為這個命令修改了密碼肯定是要寫檔案的。

進一步分析,實際上passwd這個命令會操作/etc/shadow這個檔案,因為密碼都是放在這裡,檢視密碼檔案許可權:

發現許可權是000,(注意:root使用者對所有檔案都是有rw許可權的,對所有目錄都是有rwx許可權的),這意味著普通使用者確實不能獨讀或寫這個檔案。

不過因為passwd命令具有suid許可權,所以普通使用者執行這個命令時,當系統生成對應的程序後,這個程序就擁有了/usr/bin/passwd檔案擁有者root的許可權。

上面的操作在要輸入密碼時按ctrl+z,回車。

檢視程序樹:

可以發現確實passwd的許可權不是pstar而是root!

sgid:

對於檔案:

sgid對於二進位制程式有用

程式執行著要有x許可權

執行者在執行過程中會獲得改程式使用者組的許可權(相當於臨時加入了程式的使用者組)

例如:

普通使用者使用locate命令。(直接看圖)

發現使用者組許可權中應該出現x的位置顯示的s,表示這個命令具有sgid許可權。而普通使用者只有x許可權而沒有rw許可權。

locate這個命令,實際上會去訪問/var/lib/mlocate/mlocate.db這個檔案。

這個檔案對於普通使用者沒有任何許可權。所以理論上普通使用者執行locate命令是不行的。

不過因為locate命令有sgid許可權,所以執行locate生成程序時,這個程序會得到locate命令的使用者組許可權,相當於pstar這個使用者被臨時加入了使用者組slocate。

於是就對mlocate.db這個檔案有了r許可權,可以訪問了!

對於目錄:

使用者對此目錄有rx許可權可以進入目錄

使用者進入此目錄後,有效使用者組會變成該目錄的使用者組

若使用者在此目錄有w許可權,則使用者建立的檔案使用者組與該目錄使用者組相同

例如:乙個團隊想在linux某個目錄下協同工作來做乙個專案,那麼每個團隊成員都得對這個目錄下的所有檔案具有rwx許可權。

於是我們首先新建乙個使用者組,再新建幾個賬號,每個賬號的使用者組都加入剛才新建的那個使用者組。

再新建工作目錄,許可權設為770,把目錄的使用者組加上上一步新建的使用者組。

到這裡為止,我們思考下會有什麼問題?

現在賬號a新建乙個檔案,新建檔案的擁有者和使用者組都會是a!重要的是其他使用者都無法訪問這個檔案!

所以我們需要給這個目錄加入sgid許可權,之後任意乙個使用者建立的檔案,檔案使用者組都會是這個目錄的使用者組。萬事ok!

sbit:

只針對目錄有效

當使用者對目錄擁有wx許可權時,使用者在該目錄建立的檔案或目錄,只有自己與root才可以刪除。

設定和檢視suid/sgid/sbit許可權的方法:

suid是4 sgid是2 sbit是1

chmod 4755 filename

第乙個7代表的就是這三個特殊命令,後面的755是普通許可權。上面的命令把filename這個檔案加入了suid許可權。

檢視特殊許可權的方法就是普通的ls命令:

suid會在所屬使用者許可權本應是x的地方顯示s

sgid會在所屬使用者組許可權本應是x的地方顯示s

sbit在其它使用者許可權本應是x的地方顯示t

如果希望查詢系統中所有具有特殊許可權的檔案,則:

find / -perm +7000

Linux 特殊許可權

特殊許可權 對檔案的影響 對目錄的影響 u s suid 以擁有檔案的使用者身份,而不是以執行檔案的使用者身份執行檔案。無影響。g s sgid 已擁有檔案的組的身份執行檔案。在目錄中最新建立的檔案將其組所有者設定為與目錄的組所有者相匹配。o t sticky 無影響。對目錄具有寫入許可權的使用者僅...

linux特殊許可權

訪問控制列表 應用場景,我有我所屬目錄的所有許可權,我的開發組也有,但是我有乙個朋友想要進我的目錄參觀,不能給所屬也不能讓他進組,需要乙個後門這就是acl訪問控制列表。首先要在掛載後面加上acl選項 可在mount o remount,acl 也可在 etc fstab表中改正重啟 兩個常用命令 g...

Linux的特殊許可權

linux中除了常見的讀 r 寫 w 執行 x 許可權以外,還有3個特殊的許可權,分別是setuid setgid和stick bit 1 setuid setgid 先看個例項,檢視你的 usr bin passwd 與 etc passwd檔案的許可權 root mylinux ls l usr...