Linux特殊許可權,這一篇就夠了

king config發表於2020-11-22

特殊許可權suid、sgid、sbit、chattr、umask

簡單瞭解下什麼是特殊許可權

特殊許可權為基本說明: Linux系統基本許可權位有9位,但還有額外3位許可權位,共12位許可權位:

suid s(有x) S 4 使用者對應的許可權位(使用者對應的3位上)
sgid s(有x) S 2 使用者組對應的許可權位(使用者組對應的3位上)
sticky t(有x) T 1 其他使用者對應的許可權位

SUID(set UID)

針對命令和二進位制程式的,當普通使用者執行某個(passwd)命令的時候,可以擁有這個命令對應使用者的許可權,即讓普通使用者可以以root使用者的角色執行程式或命令。
例如:如果給vim或者rm命令設定了setUID,那麼任何檔案都能編輯或者刪除了,相當於有root許可權了

此許可權只針對二進位制可執行程式有效

chmod u+s filename # 如果沒有執行權,大寫S
或者
chmod 4700 1.txt # 4為特殊許可權 

SGID(set GID)

希望一個目錄被多個使用者(同屬於一個組)共享,同一個組的使用者可以處理
1.針對使用者組許可權位修改,使用者建立的目錄或檔案所屬組和該目錄的所屬組一致。(比如給一個檔案路徑設定了特殊許可權為 ,假設這個路徑陣列為hr,那麼user1在此目錄下建立的檔案陣列將不是user1組,而是hr組)
2.所有使用者都可以讀寫這個路徑,相當於共享路徑

chmod g+s /tmp/file   #  屬組有執行權小寫s,沒有執行權為大寫S
或者
chmod 2755 /tmp/file   # 2代表特殊許可權位

Sbit(set GID)

粘滯位,在目錄建立了此許可權,除了root使用者,其他使用者只能對自己的檔案進行刪除、移動操作。僅有自己root 才有權力刪除。

chmod o+t /opt   #其他使用者有執行權小寫t,沒有執行權,大寫T
或者
chmod 1755 /tmp  # 數字1 表示特殊許可權位

chattr (檔案屬性)

凌駕於r、w、x、suid、sgid之上的許可權

1.檢視是否有特殊許可權屬性

lsattr /etc/passwd
---------------- /etc/passwd

2 . 設定特殊許可權屬性

chattr +i /opt/file  #鎖定檔案,不能編輯,不能修改,不能刪除,不能移動,可以執行
chattr +a /opt/file  #鎖定檔案,不能編輯,可以追加,不能刪除,不能移動,可以執行

還有其他的
+A 不允許更新時間、
+d 不能使用dump備份、
+j 檔案首先儲存到日誌中,然後在寫入檔案、
等等,這裡就不在羅列
chattr屬性中可以使用的不同選項:
-R 遞迴修改資料夾和子資料夾屬性
-V chattr命令會輸出帶有版本資訊的冗餘資訊
-f 忽略大部分錯誤資訊

-a #僅可以追加檔案,不能編輯,不能刪除,不能移動,可以執行

umask (程式掩碼)

當我們登入系統之後,建立一個檔案總是有一個預設許可權
比如: 目錄預設許可權:755 檔案預設許可權:644 那麼這個
統預設umask為022,那麼當我們建立一個目錄時,正常情況下目錄的許可權應該是777,但是umask表示要減去的值,所以新目錄檔案的許可權應該是777-022=755。至於檔案的許可權也依次類推:666-022=644

umask 000  #  設定初始為0000

以上設定表示
777-000=755 那麼所有建立的檔案預設為 777許可權 ,就是讀寫執行都可以
666-000=666 那麼所有建立的目錄預設為666許可權,就是可讀,可寫。

相關文章