嘗試在 Linux 中為某些 cli 指令設定無密碼時遇到問題

嘗試在 Linux 中為某些 cli 指令設定無密碼時遇到問題

電腦環境

作業系統:Arch linux - Manjaro

外殼:zsh

目的

我正在嘗試啟用以下命令不需要輸入密碼對於我的主用戶帳戶:ab

sudo systemctl stop NetworkManager
sudo systemctl start NetworkManager

嘗試失敗

我已閱讀並嘗試遵循一些在線幫助,並通過使用以下程式碼sudo -i建立文件來達到此目的:/etc/sudoers.d/ab

ab ALL=(root) NOPASSWD: sudo systemctl stop NetworkManager
ALL=(root) NOPASSWD: sudo systemctl start NetworkManager

故障排除嘗試

我嘗試進行以下編輯但沒有成功:

  • 改變rootALL
  • 改變systemctl/bin/systemctl
  • 刪除sudo

每次進行編輯和保存時,我cat /etc/sudoers.d/ab都會檢查是否進行了更改,並且總是打開一個新終端來嘗試該命令,每次嘗試以下組合,同時仍然要求輸入密碼:

sudo systemctl start NetworkManager
sudo /bin/systemctl start NetworkManager
systemctl start NetworkManager
/bin/systemctl start NetworkManager

問題

啟動新終端是否足夠,或者我需要重新啟動整個系統才能啟動變更?

或者也許我忘記了另一個步驟?

答案1

中的行/etc/sudoers.d/ab可能應該是這樣的:

ab ALL=(root) NOPASSWD: /bin/systemctl stop NetworkManager
ab ALL=(root) NOPASSWD: /bin/systemctl start NetworkManager

使用sudo正常的本機儲存的 sudoers.d 檔案(沒有像 LDAP 伺服器中儲存的 sudoers 資訊那樣先進的內容),對 sudoers 檔案的任何變更都應立即生效,無需登出/登入、啟動新終端或類似的操作那。

通常sudo會記錄使用它的成功和失敗嘗試,因此您應該查看相應的日誌檔案(通常是/var/log/secure/var/log/auth.log,取決於發行版)以查找來自 的訊息sudo。這些訊息將包括用戶嘗試執行的命令sudo,您需要以確切的形式將其寫入 sudoers 檔案以允許執行。

相關內容