sudoers 條件/組合指令可以嗎?

sudoers 條件/組合指令可以嗎?

我想以這種方式允許 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中允許這樣做的方法(而且也沒有sudoerssudo 用戶郵件列表

相關內容