天天看點

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.  root root  月   : 
           

passwd擁有SetUID權限,是以普通使用者可以修改自己密碼

cat指令沒有SetUID權限,是以普通使用者不能檢視/etc/shadow檔案内容

讓沒有權限的人執行時獲得所有者的權限,這個所有者一般為root,常見應用如passwd

檔案所有者要有x權限才有意義,所有者沒有執行權限它就會變S

建議大家在生産環境中不要輕易設定此權限,不然很有可能伺服器面臨安全隐患,當然也要防止伺服器莫名出現SetUID權限的檔案

寫個腳本檢測:

定期檢查suid

#!/bin/bash
find / -perm - -o -perm -> /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.  root root  月   : 
           

三·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.  root root  月   : /tmp
           

6)設定SBIT權限

增權重限

chmod 1775 [檔案]
chmod o+t [檔案]
           

删除權限

chmod 0775 [檔案]
chmod o-t [檔案]
           
此權限符合臨時目錄的要求

四·總結一說

setUID僅對檔案生效

setGID對檔案目錄都有效

Sticky BIT 僅對目錄生效

繼續閱讀