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 放棄此次變更。