sudo: Wie kann man einem Befehl nur ein Argument erlauben?

8

Ich möchte meinen Suodern einen Eintrag hinzufügen, damit ein Benutzer einen Befehl mit genau einem Argument ohne Option ausführen kann.

# tail -1 /etc/sudoers
ALL     ALL = (:tool) NOPASSWD: /bin/echo [a-z]*
$ sudo -g tool /bin/echo abc def
abc def
$ sudo -g tool /bin/echo -abc def
[sudo] password for user: 

Kann ich das mit dem sudoers sytnax machen? Oder muss ich ein Hilfsskript erstellen?

Elrond
quelle
ist es eine feste Argumentation wie immer -abc? oder kann es variieren?
Mike
Das [a-z]*ist schon das Argument, das ich will. Es ist also ein variables Argument. (Ich benutze / bin / echo nur zum Testen.)
Elrond

Antworten:

8

Meines Wissens können Sie keine Nicht-Befehlsargumente an sudo übergeben, wenn dieses Argument variiert.

Sie können Folgendes angeben:

users ALL=(ALL) NOPASSWD: /usr/bin/tail /some/file

Dies würde es dem Benutzer ermöglichen, eine Datei zu verfolgen, aber keine anderen Dateien.

Wenn Sie eine Variable übergeben müssen, empfehle ich ein Wrapper-Skript.

Hier ist ein Beispiel für einen rsync-Wrapper:

https://sites.google.com/site/beingroot/articles/useful-scripts/wrapper-script-to-use-rsync-via-sudo

Wenn Sie Google nach Sudo-Wrappern durchsuchen, finden Sie viele weitere Beispiele.

Stellen Sie sicher, dass Sie alle Pfade fest codieren und die Eingabe auf Richtigkeit prüfen, wenn dem Benutzer nicht vertraut werden kann.

jeffatrackaid
quelle
2
Sollte sowieso Sanity Checks haben. Traue niemandem! [/ paranoid]
Nathan C