Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 附加權限實戰:SUID、SGID 與 Sticky Bit 設定與效果驗證

編輯:關於 Linux

除了基本的 rwx 權限,Linux 提供三種**附加權限**改變程式執行身份或目錄刪除規則:

  • SUID (Set User ID):執行檔案時以**檔案擁有者**身份運行(如 passwd 讓一般用戶修改 /etc/shadow)。
  • SGID (Set Group ID):
    - 執行檔:以**檔案所屬群組**身份運行
    - 目錄:在目錄下建立的檔案/子目錄**自動繼承該目錄群組**(團隊協作目錄必備)
  • Sticky Bit (粘滯位):目錄上設定後,**只有檔案擁有者、目錄擁有者或 root 可刪除/重命名目錄內檔案**(如 /tmp)。

SUID/SGID/Sticky Bit 權限位對照

權限位與八進位對照

權限符號模式八進位ls 輸出顯示位置
SUIDu+s4 (最高位)擁有者執行位:x→s (有執行權) / S (無執行權)
SGIDg+s2 (次高位)群組執行位:x→s / S
Stickyo+t1 (最低位)其他執行位:x→t / T

實戰範例:kuqlan.sh 逐步加權限

# 初始狀態
-rwxr-xr-x 1 root root 17 kuqlan.sh

# 加 SUID (4755)
chmod 4755 kuqlan.sh
-rwsr-xr-x 1 root root 17 kuqlan.sh   # 擁有者 x 變 s

# 加 SGID (2755)
chmod 2755 kuqlan.sh
-rwxr-sr-x 1 root root 17 kuqlan.sh   # 群組 x 變 s

# 同時加 SUID+SGID (6755)
chmod 6755 kuqlan.sh
-rwsr-sr-x 1 root root 17 kuqlan.sh   # 兩處皆為 s

# 目錄加 Sticky Bit (1777)
chmod 1777 /tmp/shared
drwxrwxrwt 2 root root 4096 /tmp/shared  # 其他 x 變 t

效果驗證

SUID 驗證

# 建立測試程式:顯示實際 UID/EUID
cat > /tmp/showid.c <<'EOF'
#include 
#include 
int main() { printf("UID=%d EUID=%d\\n", getuid(), geteuid()); return 0; }
EOF
gcc -o /tmp/showid /tmp/showid.c
chown root:root /tmp/showid
chmod 4755 /tmp/showid

# 一般用戶執行
sudo -u nobody /tmp/showid
# 輸出:UID=65534 EUID=0  (EUID 為 root,證明 SUID 生效)

SGID 目錄繼承驗證

mkdir /tmp/team
chown root:dev /tmp/team
chmod 2775 /tmp/team   # SGID on directory

sudo -u alice touch /tmp/team/alice.txt
ls -l /tmp/team/
# -rw-r--r-- 1 alice dev 0 ... alice.txt  (群組自動為 dev)

Sticky Bit 防刪除驗證

chmod 1777 /tmp/public
sudo -u alice touch /tmp/public/a.txt
sudo -u bob rm /tmp/public/a.txt
# rm: cannot remove '/tmp/public/a.txt': Operation not permitted
# bob 無法刪除 alice 的檔案

安全性警示

  • SUID/SGID 程式是提權攻擊首選目標:僅對必要、經審計的二進位檔設定;定期掃描 find / -perm /6000 -type f。
  • Shell 腳本不可設 SUID:核心忽略腳本的 SUID 位(防止環境變數注入),需用編譯語言(C、Go、Rust)撰寫 wrapper。
  • Sticky Bit 僅保護目錄層級刪除:若用戶有檔案寫入權,仍可 echo > file 清空內容,無法防內容竄改。

掌握三種附加權限的設定、驗證與風險,即可在團隊協作、系統工具提權、共享目錄保護等場景精準施策。

Copyright © Windows教程網 All Rights Reserved