- SUID:需要作用在二進制可執行文件上才有意義,以往某用戶在運行某個程序時比如cat,cat進程的權限會是啟動用戶的權限,這個進程的屬主就是啟動用戶;而有SUID后的程序,用戶在運行某程序時,相應進程的屬主是程序文件自身的屬主,而不是啟動者。比如/usr/bin/passwd,每個用戶都可以修改自己的密碼,將密碼寫入shadow
- ?
- 設置SUID:chmod u+|-?s FILE,如果FILE原本有x權限,則SUID顯示為s,否則顯示為S,本來SUID就是要作用在二進制文件上,如果是S就失去了意義
- 例:cat有了SUID后,用其他用戶來啟動cat 就能訪問shadow了
- SGID:當目錄屬組有寫權限,且有SGID權限時,當有些用戶的附加組也為該目錄的屬組時,他們以屬組身份在此目錄中新建文件或目錄時,新文件的屬組不是用戶的基本組,而是此目錄的屬組,因此他們所創建的文件彼此都可以修改。如果直接上其他人有寫權限也必然可以是他們可以彼此修改文件,但是這樣做是非常危險的操作。而作為普通用戶來講,怎么將自己的文件共享給別人,讓別人來寫,普通用戶又不能修改屬主屬組,只能修改權限,所以需要使用SGID機制
- SGID:作用于二進制文件上,執行二進制文件的用戶會繼承二進制文件所屬組的權限去訪問文件;作用于目錄,目錄內新建文件的所屬組自動繼承目錄的所屬組
- 設置SGID:chmod g+|-?s DIRECTORY
- 例:有一個開發團隊develop team,團隊里有三個人hadoop,hbase,hive,要求他們任意一人在/tmp/project里所創建的文件,其他的兩個人都能編輯訪問
- 已經在該目錄中的用戶,root在改了目錄的寫權限后,該用戶依然不能在目錄中創建文件,需要退出目錄后重新進才能創建文件
- 注意:用戶所創建的文件,文件的所屬組是用戶的基本組,但基本組未必有寫權限
- 讓其有SGID權限
- 再創建文件,文件不再以用戶的基本組作為屬組,而是以目錄的屬組作為屬組
- 但是hadoop用戶能刪掉hbase用戶的文件,為了避免這種情況發生就需要Sticky
- Sticky:用戶在一個具有寫權限的目錄里,可以刪除該目錄中的任何文件,無論這些文件的權限位如何設置。Sticky的意義在于,若在一個公共目錄上設置Sticky 位,每個人都可以創建文件,刪除自己的文件,但不能刪除別人的文件。sticky 設置在文件上無意義
- 設置Sticky:chmod o+|- t DIRECTORY,如果是T表示Sticky位沒有x權限失去意義
- 特殊權限位用數字表示:( SUID:4 SGID:2 Sticky:1 )
- chmod 5755 /tmp/test :最前的數字5表示SUID+Sticky,然后這個目錄的普通權限位是755
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96241