Linux 權限模型核心在於 UID 0 (root) 擁有不受限的系統存取權。本文深入解析超級使用者機制、su/sudo 切換差異、sudoers 配置細節,並強調最小權限原則在實務中的應用。
/etc/passwd 中 root 對應 UID 0,唯一且不可替代。useradd, groupadd)/proc, /sys 虛擬檔案系統唯讀,即使 root 也無法寫入 (反映核心即時狀態)。su - # 切換至 root,載入 root 環境 (家目錄、PATH、別名)
su - 用戶名 # 切換至指定用戶,載入其環境
su -c "指令" # 以 root 執行單一指令後返回
su 用戶名 -c "指令" # 以指定用戶執行單一指令
| 優點 | 缺點 |
|---|---|
| 簡單直觀,所有管理指令可用 | 需共享 root 密碼,多人管理時風險極高 | 切換後擁有完整 root 權限 | 無法限制可執行指令範圍 (全有或全無) | 適用單人/極少數管理員環境 | 無操作稽核 (誰做了什麼無法區分) |
/var/log/secure 或 /var/log/auth.log 記錄誰、何時、執行什麼指令timestamp_timeout)visudo 編輯)# 別名定義 (可選,簡化規則)
Host_Alias SERVERS = srv1, srv2, 192.168.1.0/24
User_Alias ADMINS = alice, bob
Runas_Alias ROOT = root
Cmnd_Alias USERMGMT = /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/passwd
Cmnd_Alias DISKMGMT = /sbin/fdisk, /sbin/parted, /sbin/mkfs.*
Cmnd_Alias NETMGMT = /sbin/ifconfig, /bin/ip, /etc/init.d/network
Cmnd_Alias PKGMGMT = /usr/bin/apt, /usr/bin/yum, /usr/bin/dnf
# 授權規則
ADMINS ALL=(ROOT) NOPASSWD: USERMGMT, DISKMGMT
bob SERVERS=(ROOT) NETMGMT
%wheel ALL=(ALL) ALL # wheel 群組成員可 sudo 任何指令 (需輸入密碼)
用戶/群組 主機=(切換身份) 指令清單ALL 為萬用符號 (所有主機/身份/指令)NOPASSWD: 免密碼執行 (慎用,建議僅限無害查詢指令)!指令 排除特定指令 (如 ALL, !/bin/su, !/bin/bash)/usr/bin/*)sudo -l # 列出當前用戶可執行的 sudo 指令
sudo -u 用戶名 指令 # 以指定用戶身份執行 (需 Runas 授權)
sudo -i # 取得 root 互動式 shell (載入 root 環境)
sudo 指令。PermitRootLogin no),強制一般用戶登入再 sudo。wheel, sysadmin),透過群組授權而非個別用戶。ALL 權限濫發。sudo -i 需兩人在場)。su 適合單人維護環境;多管理員生產環境必須使用 sudo。root 密碼僅由極少數核心人員持有,平時封存離線保管。