問題:為什麼普通使用者可以修改自己的密碼?
ll $(which passwd)

1、SetUID:當一個可執行程式/指令具有SetUID 權限,使用者執行這個程式時,将以這個程式的所有者的身份執行。
2、加SetUID權限:
chmod u+s [filename] 或 chmod 4755 [filename] #SetUID權限值=4
E.g.
chmod u+s $(which touch)
#可以看到newfile2的所有者并不是guest,而是root!
3、危險!
将指令設定成SetUID是一件很危險的事,比如将vi設定成SetUID,則他可以編輯并儲存系統中所有的檔案,甚至是系統配置檔案!他可以讓一個使用者瞬間程式設計超級使用者,他可以使你的系統不斷的重新開機等,或者将kill設定成SetUID...
預防:
find / -perm -4000 -o -perm -2000
#查找權限為4000或2000的檔案,即具有SetUID,SetGID的檔案
4、取消SetUID權限:
chmod u-s [filename] 或 chmod 755 [filename]
附-原來的檔案必須是一個可執行程式,如果原檔案沒有x權限,則設定SetUID之後也沒有任何作用
#顯示為S[大寫]!
1、SetGID:當一個可執行程式/指令具有SetGID 權限,使用者執行這個程式時,将以這個程式所屬組的身份執行。
2、加SetGID權限:
chmod g+s [filename] 或 chmod 2755 [filename] #SetGID權限值=2
#可以看到testfile2的所屬組并不是預設的guest,而是root!
【同時設定UID與GID chmod 655...】
1、粘着位:如果一個權限為777的目錄,被設定了粘着位,每個使用者都可以在這個目錄裡面建立檔案,但是隻可以删除所有者是自己的檔案。
2、設定粘着位:
chmod o+t [filename] 或 chmod 1777 [filename] #粘着位用t來表示,權限值=1
#可以看到,在設定了粘着位的/t_test目錄,删除隸屬于自己的檔案是可以的,但是無法删除其他人的檔案.
附-檔案的特殊權限:
umask指令的第一位