
Ich möchte sudo folgendermaßen zulassen:
myuser ALL=NOPASSWD:/usr/bin/pkill -fx "/usr/sbin/nethogs -v 3 -s" || /usr/sbin/nethogs -v 3 -s
Ich bekomme also nur eine einzige laufende Instanz von Nethogs.
visudo akzeptiert es, aber ich kann diese Befehle nicht ohne Passwort ausführen ...
Fehlgeschlagene Versuche:
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.: diese Version von Nethogs wurde aus dem CVS auf sf.net kompiliert
Antwort1
Sie können in der Datei nur die Namen oder Pfade von Programmen oder Skripten (und optional Argumente dafür) verwenden sudoers
– Shell-Konstrukte wie ||
funktionieren nicht.
Zitat man sudoers
:
command name ::= file name |
file name args |
file name '""'
Die einfachste Möglichkeit, dies zu umgehen, besteht darin, ein Skript zu erstellen, das Ihren Befehlssatz ausführt, es nur für Root beschreibbar zu machen und die Berechtigung zur Ausführung über zu erteilen sudo
.
Die Manpage für gibt tatsächlich ein Beispiel, das Befehle in einer Subshell ausführt, aber ich habe keine Möglichkeit gefunden, dies in der Konfiguration sudo
zuzulassen (und auchsudoers
die sudo-users-Mailingliste) .