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 限制 su - 切換 root 權限:wheel 群組與 PAM 實戰完整指南

編輯:關於 Linux

預設情況下,任何知道 root 密碼的使用者皆可透過 su - 取得完整 root 環境。為強化安全性,最佳實務是建立 wheel 管理群組,僅允許群組成員使用 su - 昇權。本文詳細說明 PAM、login.defs 兩層設定與驗證步驟。

核心機制

  • PAM 模組 pam_wheel.so:檢查呼叫者是否屬於指定群組 (預設 wheel)。
  • /etc/login.defs 參數 SU_WHEEL_ONLY yes:強制 su 僅允許 wheel 群組。

設定步驟 (CentOS/RHEL 7/8、Rocky、AlmaLinux)

  1. 編輯 PAM 規則
    vi /etc/pam.d/su
    # 找到並取消註解 (或新增) 以下行
    auth required pam_wheel.so use_uid
    
  2. 啟用 login.defs 強制
    echo "SU_WHEEL_ONLY yes" >> /etc/login.defs
    
  3. 建立 wheel 群組 (若不存在)
    groupadd -r wheel   # -r 為系統群組,GID < 1000
    
  4. 將可信使用者加入 wheel
    usermod -aG wheel adminuser
    # 驗證
    id adminuser
    

驗證測試

# 以非 wheel 使用者登入
$ su -
Password: (輸入正確 root 密碼)
su: Permission denied   # 拒絕

# 以 wheel 使用者登入
$ su -
Password:
# 成功取得 root shell

進階:自訂管理群組名稱

若不想用 wheel,可在 PAM 指定群組:

# /etc/pam.d/su
auth required pam_wheel.so group=sysadmin

並同步建立 sysadmin 群組、修改 login.defs (或僅靠 PAM 即可)。

常見誤區

  • 只改 login.defs 不改 PAM:舊版 su 可能不讀取該參數,雙重設定最保險。
  • 用 usermod -G wheel user 而非 -aG:會移除使用者原有補充群組,務必加 -a (append)。
  • root 本身不在 wheel 也能 su:root UID 0 繞過所有 PAM 檢查,屬正常行為。

替代方案:sudo 取代 su

更推薦完全停用 su,改用 sudo -i:

# /etc/sudoers (visudo)
%wheel ALL=(ALL) ALL
# 或限制指令
%wheel ALL=(ALL) /bin/su - root

搭配 pam_wheel.so 於 /etc/pam.d/sudo 可雙重保障。

落實 wheel 群組機制,能有效阻擋密碼洩露後的橫向昇權,是 Linux 基礎安全加固的必做項目。

Copyright © Windows教程網 All Rights Reserved