特殊權限SGID有兩個作用域,文件和目錄:
當作用于文件時,繼承二進制程序所有組的權限,這種權限相當危險,一定要慎用。如給/bin/vim加SGID權限,普通用戶可以直接修改/etc/shadow,更新所有用戶包括root的密碼。例子如下:
- 查看/bin/vim默認權限ll /bin/vim;-rwxr-xr-x. 1 root root 2289640 Aug ?2 ?2017 /bin/vim
- 切換到普通用戶,執行vim /etc/shadow;無法顯示文件內容,并且有告警信息[Permission Denied]
- 給/bin/vim加SGID權限,chmod g+s /bin/vim
- 查看/bin/vim權限,-rwxr-sr-x. 1 root root 2289640 Aug ?2 ?2017 /bin/vim
- 再次切換到普通用戶,執行vim /etc/shadow,可以更改文件內容。
當作用于目錄時,此目錄新建的文件繼承目錄的所屬組,可以用于創建一個協作組,配合sticky權限(具有寫權限的目錄,只有文件的所有者或root可以刪除該文件。
需求:operation部門的所有員工能訪問并修改彼此的文件,但是只能刪除自已創建的文件
具體實現步驟:(前提root umask為0022,普通用戶為0002)
- 用root創建operation組:groupadd operation
- 用root創建部門員工如: useradd user1; useradd user2并設置user1和user2的登陸密碼
- 用root在/home下創建目錄oper: mkdir operation
- 用root給oper目錄加SGID和sticky權限,chmod 3777 operation
- 更改用戶user1和user2的輔助組為operation
groupmems -a user1 -g operation
groupmems -a user2 -g operation
- 切換到user1用戶,進入/home/oper目錄,創建文件user1_file1,查看文件屬性
-rw-rw-r–. 1 user1 operation 12 Apr ?5 11:56 user1_file1
- 切換到user2用戶,進入/home/oper目錄,創建文件user2_file1,查看文件屬性
-rw-rw-r–. 1 user2 operation ?0 Apr ?5 12:16 user2_file1
- 在user2用戶登陸下,用vim更改用戶user1創建的文件user1_file1,添加新的內容成功
- 在user2用戶登陸下,刪除用戶user1創建的文件user1_file1, rm -f user1_file1失敗并提示操作不允許
rm: cannot remove ‘user1_file1’: Operation not permitted
- 同樣用user1登陸去操作user2創建的文件user2_file1,結果和上述相同
上述的管理可以進一步優化,思路:operation部門下的所有員工可以在/home/oper下建立各自以用戶名命名的文件夾,所有的文件夾會繼承oper目錄的屬組即operation組:
- 以user1用戶登陸下,創建user1目錄在/home/oper下,mkdir user1,查看目錄user1的性,所屬組是operation
drwxrwsr-x. 2 user1 operation ?6 Apr ?5 13:43 user1
- 以user1用戶登陸下,在/home/oper/user1目錄下創建文件user1_file2
- 以user2登陸,進入/home/oper/user1目錄,修改user1創建的文件user1_file2成功,但是由于目錄user1是無法繼承oper的sticky位特殊權限,所以user2是可以刪除user1目錄下的user1_file2文件。解決方案,在root下把sticky位權限賦予user1目錄,chmod o+t user1,檢查user1的屬性
drwxrwsr-t.?2 user1 operation 25 Apr ?5 13:47 user1
此時以user2登陸刪除user1目錄下以user1用戶創建的文件是無法刪除的
rm -f user1_file2
rm: cannot remove ‘user1_file2’: Operation not permitted
同理,以user2登陸也無法刪除user1文件夾。
最終,通過特殊權限SGID和sticky配合使用,實現了需求:operation部門的所有員工能訪問并修改彼此的文件,但是只能刪除自已創建的文件,同時引入每個員工創建一個目錄,并賦予這些目錄是sticky位的特殊權限,實現了更清晰的結構化管理。
總結,三種特殊權限SUID、SGID以及sticky位權限雖然在實際工作中并不經常用到,但是深入理解它的工作原理對我們處理其它程序或應用中的權限管理提供一種思路,畢竟Linux是一切程序和應用運行的基礎。
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95546