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?


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.


2
Sollte sowieso Sanity Checks haben. Traue niemandem! [/ paranoid]
Nathan C
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.