私はこのように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
同様のシェル構成は||
機能しません。
引用するman sudoers
:
command name ::= file name |
file name args |
file name '""'
この問題を解決する最も簡単な方法は、一連のコマンドを実行するスクリプトを生成し、ルートのみを書き込むように設定してからpassを付与することですsudo
。
sudo
マンページは実際にサブシェルでコマンドを実行する例を示していますが、設定でこれを許可する方法が見つかりませんでした。sudoers
sudoユーザーメーリングリスト)。