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 特殊權限位詳解:Setuid、Setgid、Sticky Bit 實戰指南

編輯:Linux 教學

前言

Linux 檔案權限除基本 rwx 外,還有三個特殊位:Setuid (SUID)、Setgid (SGID)、Sticky Bit (黏著位)。它們分別作用於執行檔、目錄與共享目錄,是權限管理進階必修課。本文系統整理定義、指令、數字表示、典型場景與安全風險。

符號與數字表示

特殊位符號位置有執行權限顯示無執行權限顯示數字值chmod 指令
Setuiduser 的 x 位s (小寫)S (大寫)4chmod u+s file / chmod 4755 file
Setgidgroup 的 x 位s (小寫)S (大寫)2chmod g+s file / chmod 2755 file
Sticky Bitother 的 x 位t (小寫)T (大寫)1chmod o+t dir / chmod 1777 dir

組合範例:chmod 3777 dir (2+1=3 → SGID+Sticky)。

作用機制詳細解析

1. Setuid (針對可執行檔)

  • 一般用戶執行帶 SUID 的程式時,有效 UID 變為檔案擁有者 (通常是 root)。
  • 經典案例:/usr/bin/passwd (root 擁有、SUID) → 普通用戶可修改 /etc/shadow。
  • 資料庫備份腳本加 SUID,指定用戶無需 root 登入即可執行備份。

2. Setgid

對象效果
可執行檔執行時有效 GID 變為檔案所屬群組
目錄目錄下新建檔案/子目錄自動繼承目錄的群組,而非用戶主群組。實現團隊共享目錄核心機制。

3. Sticky Bit (僅對目錄有效)

  • 目錄擁有 w+x 時,任何人可建立/刪除檔案。
  • 加上 Sticky Bit 後:只有檔案擁有者、目錄擁有者、root 可刪除/重命名該檔案。
  • 經典場景:/tmp (權限 drwxrwxrwt) 防止用戶誤刪他人暫存檔。

實戰演練:團隊共享目錄建立

# 1. 建立群組與用戶
groupadd devteam
useradd alice; useradd bob
usermod -aG devteam alice bob

# 2. 建立共享目錄並設定 SGID + Sticky
mkdir /data/project
chown :devteam /data/project
chmod 2775 /data/project      # SGID (2) + rwxrwxr-x
chmod o+t /data/project       # 加 Sticky → 2775 → 3775 (drwxrwsrwt)

# 3. 測試
su - alice
cd /data/project
echo "alice" > a.txt
ls -l a.txt   # 群組為 devteam ✅

su - bob
rm a.txt      # 失敗 (Sticky 保護) ✅

安全風險與防範

  • SUID/SGID 程式是提權攻擊首選目標。定期掃描:find / -perm /6000 -type f -exec ls -ld {} \;。
  • 原則:最小權限、最少數量。非必要不加 SUID;改用 sudo、capabilities (如 setcap cap_net_bind_service=+ep /bin/nginx) 精準授權。
  • 掛載選項 nosuid 可禁止分區上 SUID/SGID 生效 (適用 /home、/tmp、可移動媒體)。

總結

Setuid/Setgid/Sticky Bit 是 Linux 權限模型的精華擴展。善用 SGID+Sticky 打造安全共享目錄,嚴控 SUID 程式數量,配合 capabilities 替代方案,能在彈性與安全間取得最佳平衡。

Copyright © Windows教程網 All Rights Reserved