visudo — 安全編輯 sudoers 設定檔

安全編輯 sudoers 設定,儲存前驗證語法,避免鎖定系統。

語法

visudo [選項]

常用選項

選項 說明 範例
-c, --check 只驗證 sudoers 語法,不開啟編輯器 visudo -c
-f 檔案 編輯指定的 sudoers 檔案 visudo -f /etc/sudoers.d/myapp
-s, --strict 嚴格語法檢查(包含已棄用語法的警告) visudo -s

使用範例

範例 1:開啟 sudoers 編輯器

使用預設編輯器(通常是 nano)安全地編輯 /etc/sudoers。

$ sudo visudo
(開啟 /etc/sudoers 編輯器)
範例 2:sudoers 常用設定範例

sudoers 格式:使用者 主機=(執行身份) 允許的指令 常見設定:

$ # 讓 alice 可以用 sudo 執行所有指令
alice ALL=(ALL:ALL) ALL

# 讓 deploy 只能執行特定指令(且不需要密碼)
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart myapp

# 讓 webadmin 群組的成員可以 sudo
%webadmin ALL=(ALL) ALL
範例 3:使用 sudoers.d 分散設定

建議將自訂設定放在 /etc/sudoers.d/ 目錄下,更易管理。

$ sudo visudo -f /etc/sudoers.d/deploy
# 在檔案中加入:
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl
範例 4:驗證 sudoers 語法

在部署腳本中先驗證,確保設定正確後再繼續。

$ sudo visudo -c
/etc/sudoers: parsed OK
/etc/sudoers.d/deploy: parsed OK

常見錯誤與排錯

>>> /etc/sudoers: syntax error near line N <<<
原因
sudoers 中有語法錯誤。visudo 在儲存前偵測到問題。
解法
visudo 會提示選擇:e=再次編輯修正, x=放棄變更(推薦), Q=強制儲存(危險!)。 選 e 修正語法錯誤,或選 x 放棄此次變更。

延伸閱讀