3-4·Linux中附加權限、粘滯位權限

一·SetUID

1)只有可執行二進制程序才能設定SUID權限

2)命令執行者要對該程序擁有x(執行)權限(如果當前文件沒有執行權限,着會出現大S權限,大S權限是無效的,s=S+x,s纔是超級權限。)

3)命令執行者在執行該程序時獲得該程序文件屬主身份

4)SetUID權限只在程序執行過程中有效

5)設定SetUID方法 權限4代表SUID

  chmod 4755 [文件名]
  chmod u+s [文件名]

取消SetUID

chmod u-s [文件名]
chmod 0755 [文件名]

我們可一看出,設置了SetUID後的文件,在用戶權限那裏,執行權限變爲s

[root@localhost ~]# chmod 4755 1
[root@localhost ~]# ll 1
-rwsr-xr-x. 1 root root 47 128 20:12 1

passwd擁有SetUID權限,所以普通用戶可以修改自己密碼
cat命令沒有SetUID權限,所以普通用戶不能查看/etc/shadow文件內容

讓沒有權限的人執行時獲得所有者的權限,這個所有者一般爲root,常見應用如passwd
文件所有者要有x權限纔有意義,所有者沒有執行權限它就會變S

建議大家在生產環境中不要輕易設置此權限,不然很有可能服務器面臨安全隱患,當然也要防止服務器莫名出現SetUID權限的文件
寫個腳本檢測:
定期檢查suid

#!/bin/bash
find / -perm -4000 -o -perm -2000> /tmp/setuid.check
for i in $(cat /tmp/setuid.check)
do
grep $i /home/suid.log> /dev/null
if [ "$?" != "0" ]
then
echo "$i isn't in listfile!">>/home/suid_log_$(date +%F)
fi
done
rm -rf /tmp/setuid.check

二·SetGID

1.1)SetGID針對文件的作用
2)只有可執行二進制程序才能設定SGID權限
3)命令執行者要對該程序擁有x(執行)權限
4)命令執行執行程序時,組身份升級爲該程序文件的屬組
5)SetGID權限只在程序執行過程中有效


> 例子 /usr/bin/locate具有SetGID身份

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

3.設置SetGID
設定SetGID

chmod g+s [文件名]
chmod 2755 [文件名]

取消SetGID

chmod g-s [文件名]
chmod 0755 [文件名]

可以看到設置了SetGID權限,用戶組權限變成一個s

[root@localhost ~]# chmod 2755 2
[root@localhost ~]# ll 2
-rwxr-sr-x. 1 root root 80 128 20:41 2

三·Sitcky BIT(粘滯位)

1)SUID只能對執行文件生效,SGID能對目錄和執行文件生效,SBIT只能對目錄生效
2)要賦予SBIT 權限必須給目錄普通用戶賦予7權限,因此也比較危險。
3)賦予SBIT權限: chmod o+t 或者 chmod 1***
4)目錄有SBIT權限後,任何普通用戶都可以在目錄下新建文件,但是隻能刪除自己創建的文件,不允許刪除其它用戶的文件。
5)/tmp/ 目錄默認有SBIT權限
在其他人的權限那裏,執行權限變爲t

[root@localhost ~]# ll /tmp -d 
drwxrwxrwt. 10 root root 4096 129 15:49 /tmp

6)設置SBIT權限
增加權限

chmod 1775 [文件]
chmod o+t [文件]

刪除權限

chmod 0775 [文件]
chmod o-t [文件]

此權限符合臨時目錄的要求

四·總結一說

setUID僅對文件生效
setGID對文件目錄都有效
Sticky BIT 僅對目錄生效

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