Linux特殊許可權之suid、sgid、sbit許可權

隨風逝去的記憶發表於2022-03-17

檔案許可權管理之特殊命令

一:特殊許可權

昨天所學的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:遞迴拷貝

相關文章