Linux

嘗試在 linux 中為某些 cli 命令設置無密碼時遇到問題

  • March 19, 2020

電腦環境

作業系統:Arch Linux - Potato

外殼: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

問題

啟動一個新終端就足夠了,還是我需要重新啟動整個系統才能啟動更改?

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

裡面的行/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 文件以允許它的確切形式。

引用自:https://unix.stackexchange.com/questions/573686