一、SetUID
問題:為什麼普通用戶可以修改密碼?
【操作: which passwd; ls -l /usr/bin/passwd】
1、SetUID的定義:當一個可執行程序(一般為一個命令)具有SetUID 權限,用戶執行這個程序時,將以這個程序的所有者的身份執行。
2、加SetUID權限:
chmod u+s … 或: chmod 4755 … //SetUID=4
示例:
chmod u+s `which touch` && touch test && ls -l test
3、危險!
將命令設置成SetUID是一件很危險的事兒!
比如將vi設置成SetUID,則他可以編輯並保存系統中所有的文件,甚至是系統配置文件!他可以讓一個用戶瞬間編程超級用戶,他可以使你的系統不斷的重啟,他可以使一個用戶不需要密碼就可以登錄...
或者將kill設置成SetUID...
預防:
find / -perm -4000 -o -perm -2000
查找權限為4000或2000的文件,即具有SetUID,SetGID的文件
4、取消SetUID權限:
chmod u-s... 或 chmod 755...
二、SetGID
1、SetGID的定義:當一個可執行程序(一般為一個命令)具有SetGID 權限,用戶執行這個程序時,將以這個程序所屬組的身份執行。
2、加SetGID權限:
chmod g+s... 或 chmod 2755... //SetGID=2
【同時設置UID與GID chmod 655...】
三、粘著位
1、定義:如果一個權限為777的目錄,被設置了粘著位,每個用戶都可以在這個目錄裡面創建文件,但是只可以刪除所有者是自己的文件。
2、設置粘著位:
chmod o+t... 或 chmod 1777...
3、粘著位用t來表示,權限值=1