我想以這種方式允許 sudo:
myuser ALL=NOPASSWD:/usr/bin/pkill -fx "/usr/sbin/nethogs -v 3 -s" || /usr/sbin/nethogs -v 3 -s
所以我只得到一個正在運行的 nethogs 實例。
visudo 接受它,但我無法在沒有密碼的情況下運行這些命令...
失敗的嘗試:
sudo '/usr/bin/pkill -fx "/usr/sbin/nethogs -v 3 -s" || /usr/sbin/nethogs -v 3 -s'
sudo /usr/bin/pkill -fx "/usr/sbin/nethogs -v 3 -s" || sudo /usr/sbin/nethogs -v 3 -s
PS.:這個版本的nethogs是根據sf.net上的cvs編譯的
答案1
您只能在檔案中使用程式或腳本的名稱或路徑(以及它們的可選參數)sudoers
——類似的 shell 建構||
將無法運作。
引用man sudoers
:
command name ::= file name |
file name args |
file name '""'
解決此問題的最簡單方法是建立一個執行命令集的腳本,使其只能由 root 寫入,並授予通過sudo
.
的線上說明頁實際上給出了一個在子 shell 中執行命令的範例,但我還沒有找到在設定sudo
中允許這樣做的方法(而且也沒有sudoers
sudo 用戶郵件列表)。