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 超級使用者 (root) 權限控制完整解析:UID 0、su、sudo 與最小權限原則

編輯:Linux 教學

Linux 權限模型核心在於 UID 0 (root) 擁有不受限的系統存取權。本文深入解析超級使用者機制、su/sudo 切換差異、sudoers 配置細節,並強調最小權限原則在實務中的應用。

一、超級使用者與普通使用者的本質區別

1. UID 0 = root = 超級使用者

  • 核心以 UID 判斷權限,UID 0 享有最高特權。
  • /etc/passwd 中 root 對應 UID 0,唯一且不可替代。
  • 嚴禁 將其他使用者 UID 改為 0 (共享 UID 0),會導致稽核追蹤失效、權限混亂、安全性崩塌。

2. 普通使用者與系統/虛擬使用者

  • 普通使用者 (UID ≥ 1000) 受限於檔案權限、目錄存取、指令執行。
  • 系統/虛擬使用者 (UID 1~999, 如 daemon, nobody, www-data) 無登入殼層,專供服務程序以最小權限運行,降低被攻擊影響範圍。

二、root 權限在系統管理中的不可替代性

  • 硬體管理、檔案系統掛載/卸載、核心模組載入
  • 使用者/群組帳號管理 (useradd, groupadd)
  • 系統全域設定 (/etc/*, 服務啟停, 防火牆, 網路設定)
  • 讀取/修改任何檔案 (含其他使用者家目錄)
  • 例外: /proc, /sys 虛擬檔案系統唯讀,即使 root 也無法寫入 (反映核心即時狀態)。

三、su:切換使用者身份 (傳統方式)

常用語法

su -              # 切換至 root,載入 root 環境 (家目錄、PATH、別名)
su - 用戶名        # 切換至指定用戶,載入其環境
su -c "指令"       # 以 root 執行單一指令後返回
su 用戶名 -c "指令" # 以指定用戶執行單一指令

優缺點分析

優點缺點
簡單直觀,所有管理指令可用需共享 root 密碼,多人管理時風險極高
切換後擁有完整 root 權限無法限制可執行指令範圍 (全有或全無)
適用單人/極少數管理員環境無操作稽核 (誰做了什麼無法區分)

四、sudo:授權委派與最小權限實踐 (推薦)

核心優勢

  • 不需要知道 root 密碼 (使用自身密碼驗證)
  • 細粒度授權:限定可執行指令、參數、目標主機、切換身份
  • 完整稽核日誌:/var/log/secure 或 /var/log/auth.log 記錄誰、何時、執行什麼指令
  • 憑證快取:預設 5 分鐘內重複執行免輸密碼 (可調 timestamp_timeout)

/etc/sudoers 配置結構 (必須用 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 環境)

五、最佳實踐建議

  1. 日常操作使用普通用戶,僅在需要時 sudo 指令。
  2. 禁止直接 root 登入 SSH (PermitRootLogin no),強制一般用戶登入再 sudo。
  3. 建立管理群組 (如 wheel, sysadmin),透過群組授權而非個別用戶。
  4. 遵循最小權限:僅授權必要指令,避免 ALL 權限濫發。
  5. 定期稽核 sudo 日誌,異常操作即時警報。
  6. 重要系統變更 採雙人複核 (如 sudo -i 需兩人在場)。
⚠ 安全警示: su 適合單人維護環境;多管理員生產環境必須使用 sudo。root 密碼僅由極少數核心人員持有,平時封存離線保管。
Copyright © Windows教程網 All Rights Reserved