[[email protected] ~]# chmod u+s /usr/bin/vim
[[email protected] ~]# ll /usr/bin/vim
-rwsr-xr-x. 1 root root 1847752 Apr 5 2012 /usr/bin/vim
[[email protected] ~]# find / -perm -4000 -o -perm -2000 > /root/suid.list
#-perm安裝許可權査找。-4000對應的是SetUID許可權,-2000對應的是SetGID許可權
#-o是邏輯或"or"的意思。並把命令搜尋的結果放在/root/suid.list檔案中
接下來,只要定時掃描系統,然後和模板檔案比對就可以了。指令碼如下:
[[email protected] ~]#vi suidcheck.sh
#!/bin/bash
find / -perm -4000 -o -perm -2000 > /tmp/setuid.check
#搜尋系統中所有擁有SetUID和SetGID許可權的檔案,並儲存到臨時目錄中
for i in $(cat /tmp/setuid.check)
#迴圈,每次回圈都取出臨時檔案中的檔名
do
grep $i /root/suid.list > /dev/null
#比對這個檔名是否在模板檔案中
if ["$?"!="o"]
#檢測測上一條命令的返回值,如果不為0,則證明上一條命令報錯
then
echo "$i isn't in listfile! " >>/root/suid_log_$(date +%F)
#如果檔名不在模板檔案中,則輸出錯誤資訊,並把報錯寫入紀錄檔中
fi
done
rm -rf/tmp/setuid.check
#刪除臨時檔案
[[email protected] ~]# chmod u+s /bin/vi
#手工給vi加入SetUID許可權
[[email protected] ~]# ./suidcheck.sh
#執行檢測指令碼
[[email protected] ~]# cat suid_log_2013-01-20
/bin/vi isn't in listfile!
#報錯了,vi不在模板檔案中。代表vi被修改了SetUID許可權
SetGID 特殊許可權的相關內容,下節會做詳細介紹。