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 目錄名