文件權限管理之特殊命令
一:特殊權限
昨天所學的Linux基本權限為為9個;分別是rwx rwx rwx。但有時會發現系統中會有一些特殊的權限位符號;
例如:
Linux系統一共有12個特殊權限符:
rwx | rwx | rwx | suid | guid | sbit |
---|---|---|---|---|---|
屬主 | 屬組 | 其他人 | 用戶位 | 用戶組 | 其他用戶 |
特殊權限對照表:
類別 | suid | guid | sbit |
---|---|---|---|
字符表示 | S(大寫) | S(大寫) | T(大寫) |
出現位置 | 用戶權限為x | 用戶權限位x | 其他用戶權限位 |
基本權限為有x權限 | s(小寫) | s(小寫) | t(小寫) |
代表數字 | 4 | 2 | 1 |
八進制表示 | 4000 | 2000 | 1000 |
生效對象 | 用戶位 | 用戶組位 | 其它用戶 |
二:特殊權限命令
1.suid基礎原理:
1.suid通過S字符標識,存在於用戶權限位的x對應權限位置
2.若某文件本身的用戶權限位就有x權限,則設置suid權限時,則會以s(小寫)表示
3.給文件設置s權限對應的數字表示為4;在八進制數下可以用4000表示
4.suid同樣也可以使用chmod命令設置權限,可以使用字符或數字表示
注意:
-
suid僅適用於可執行的文件
-
功能:只要用戶對設有uid的文件有執行權限,那么當用戶執行此文件時,就會以該文件屬主的用戶身份去執行此文件;當執行文件后,身份的切換也會隨之消失
-
例:當用戶執行passwd時;執行的是/usr/bin/passwd這個可執行文件;執行時會以root用戶身份執行,可以在執行時修改一連串的文件(連鎖反應),當該passwd二進制文件執行后,用戶身份也就會變為本身了
-
設想;當/usr/bin/passwd二進制可執行文件沒有了s權限,會發生怎樣的情況
(當普通用戶使用passwd命令時,會修改一系列的相關文件{/etc/passwd,shadow文件};而這些文件的屬主組都不是屬於普通用戶,所以就會有suid權限;當普通用戶使用該二進制命令文件時,就會使用該文件的屬主身份進行操作。)
當刪除掉passwd文件的s執行權限:
查看普通用戶是否可以執行該二進制文件
這就表示雖然普通用戶有權限使用passwd;但無法向該文件連鎖執行的文件做出修改,就會提示用戶身份令牌錯誤;普通用戶就不能自己修改自己的密碼了。
恢復/usr/bin/passwd二進制文件的suid權限
使用普通用戶使用passw修改自己的密碼;看看是否成功
-
以上述為例:如何讓用戶本身禁止修改密碼??
可以修改/usr/bin/passwd文件的s權限,去掉該權限;讓普通用戶雖然可以執行passwd;但是無法修改與passwd命令相關變動的/etc/shadow用戶密碼文件;這樣就可以讓用戶不能修改密碼了
-
使用find命令搜索系統上所有的s權限位文件
參數解釋:
-perm:利用權限進制搜索
-type:指定文件類型(l:軟連接類型;d:文件夾類型;f:文件類型)
-ls:搜索的數據進行格式化輸出
-delete:對匹配的數據進行刪除
總結:
當有suid權限的文件被執行時,該文件將以所有者的身份去運行,就相當於普通用戶執行這個文件時,就會擁有該文件屬主的權限了;若屬主為root,那么執行者就會在執行文件時擁有root用戶的權限!!
1.suid權限是針對二進制可執行文件設置的,不能用在shell腳本上(非常危險!!)
2.suid權限位在user位的x權限位上,當設置該文件有s權限后;若顯示為S,則說明x權限位本身就沒有x權限;若顯示s(小寫),則說明該文件權限位本身就有x權限
3.suid的作用就是讓執行者擁有文件屬主的全部權限;以文件所有者的身份去運行該文件
4.suid權限會對系統有一定的危險!一般使用sudo命令代替suid權限執行相應的操作;當對Linux系統優化時,會盡量去除所有設置的suid命令
2.sgid 權限位
-
對於二進制文件命令說,sgid與suid的作用、使用方法大致相同;不同的是suid是設置文件屬主的權限;sgid是設置文件屬組的權限
-
suid主要作用於二進制文件;sgid主要作用於文件夾:當為某個文件夾設置sgid權限后,在改文件夾中創建的文件,都會以改文件夾的屬組權限為准,而不屬於創建該文件的用戶權限。
-
sgid對於文件、文件夾有不同的作用:
文件:
- sgid只對二進制文件命令生效,且需改文件本身具有x權限
- 當執行具有sgid權限的二進制文件命令時,就會獲得該命令在執行期間所屬組的身份與權限(就相當於執行具有suid權限的文件一樣)
文件夾:
-
- 當設置了sgid權限的文件夾,會保證在該文件夾下創建的所有文件或文件夾都會保持同樣的屬組權限屬性(就相當於創建的文件或目錄都會保持與上一級目錄相同的屬組)
-
實踐操作:
1.創建一個共享目錄/home/admins
2.要求該目錄屬組是adminuser,adminuser組內成員對該目錄的權限是,可讀,可寫,可執行
3.其他用戶均無任何權限(root特例)
4.進入/home/admins創建的文件,自動繼承adminuser組的權限。
(如何在創建文件或目錄時,保持與上一級文件具有相同的屬組權限)
使用普通用戶在該文件夾下創建文件或文件夾:
恢復文件夾的其它用戶權限
創建文件與文件夾
3.sbit 粘滯位
在o的權限為上
sbit特殊點:
當一個目錄有了粘滯位,這個目錄除了root用戶外,任何用戶都只能刪除、移動自己創建的文件或目錄不會影響到其他用戶文件或目錄
若文件夾沒有設置粘滯位,並且文件夾權限的rwx權限很大;任何具有該目錄寫和執行權限的用戶都可以刪除和移動體重的任何文件!!
拓展
1.查看系統所有的環境變量
set命令
2.查看用戶的環境變量
env命令
3.命令提示符的變量
PS1
4.若用戶的家目錄出現損壞,咋辦?
- 直接拷貝/etc/skel文件中的所有文件到該用戶的家目錄
-r:遞歸拷貝