linux-文件特殊權限(SUID, SGID, SBIT)

1:SetUID的功能

只有可以執行的二進制程序才能設定SUID權限。(給其他文件設置沒有意義),命令執行者要對該程序擁有x(執行)權限,命令執行者在執行該程序時獲得該程序文件所有着的身份(在執行程序的過程中靈魂附體爲文件的屬主,相當於變身命令),SetUID權限指在該程序執行過程中有效,也就是說身份改變只在程序執行過程中有效。

passwd命令擁有SetUID權限,所以普通用戶可以修改自己的密碼

在所有者的權限裏面有s就是SUID權限,在所屬組裏面有s就是SGID權限,在其他人裏面有s就是SBID

cat命令沒有SetUID權限,所以普通用戶不能查看/etc/shadow文件內容

2:設定SetUID的方法

     4代表SUID,2表示SGID,1表示SBID    7表示SUID,SGID,SBID都有,chmod 4755 文件名; chmod u+s 文件名

如果使用chmod u+s test

s是大寫的這是因爲它出錯了,因爲SetUID的功能說明中強調命令執行者要對該程序有執行權限,所以會報錯。

3:取消SetUID的方法

   使用chmod命令把文件的權限修爲以前的。或着使用 chmod u-s 文件名來修改。

4:危險的SetUID

   最好不要隨便修改。

5:SetGID針對文件的作用:

      只有可以執行的二進制程序才能設定SGID權限;命令執行者要對該程序擁有x(執行)權限;命令執行在執行程序的時候,組身份升級爲該程序文件的屬組,SetGID權限同樣只在該程序執行過程中有效,也就是說組身份改變只在程序執行過程中有效。

使用locate命令來搜索文件所在位置(在tmp目錄下創建的文件找不到),因爲這個命令是在數據庫下查找,所以速度快,但是使用之前要先使用updatedb來更新數據庫。

/usr/bin/locate是可執行二進制程序,可以賦予SGID,執行用戶yanglinux對/usr/bin/locate命令擁有執行權限,執行locate命令時,組身份會升級爲slocate組,而slocate組隊/var/lib/mlocate/mlocate.db數據庫擁有r權限,所以普通用戶可以使用locate命令查詢mlocate.db數據庫。命令結束yanglinux用戶的組身份返回yanglinux組。

6:SetGID針對目錄的作用(特殊之處SUID沒有這個特徵)

普通用戶必須對此目錄擁有r和x權限,才能進入此目錄;普通用戶在此目錄中的有效組會變成此目錄的屬組;若普通用戶對此目錄擁有w權限,新建的文件的默認屬組是這個目錄的屬組。

設置:chmod g+s 文件/目錄 或着 chmod 2755 目錄/文件名

刪除:chmod g-s 文件/目錄 或着 chmod 755 目錄/文件名

7:SBIT(Sticky BIT)粘着位作用

粘着位目前只對目錄有效;普通用戶對該目錄擁有w和x權限,即普通用戶可以在此目錄擁有寫入有權限;如果沒有粘着位,因爲普通用戶擁有w權限,所有可以刪除此目錄下所有文件,包括其特用戶建立的文件。一旦賦予了粘着位,除了root可以刪除所有文件,普通用戶就算擁有w權限也可以刪除自己建立的文件,但是不能刪除其他用戶建立的文件。主要作用就是對於777權限的目錄防止自己再該目錄下創立的文件被其他用戶刪除。

設置:chmod 1755 目錄名或着chmod o+t 目錄名

刪除:chmod 777 目錄名或着 chmod o-t 目錄名 

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