GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie lässt man den Benutzer einen Befehl ausführen, der Anführungszeichen in Sudoers enthält?

Die einfache Lösung besteht darin, Ihren Befehl in ein Skript einzufügen und Ihren Benutzern dann über sudo Zugriff auf das Skript zu gewähren.

user ALL = (root) NOPASSWD: /path/to/yourscript

Dann

#/bin/bash
chroot /chroots/box /bin/bash -c 'cd /repos/system && git pull'

Stellen Sie sicher, dass Ihre Benutzer keinen Schreibzugriff auf Ihr Skript haben.


Bearbeiten:Warnung, es scheint, dass sudo Leerzeichen im Befehl nicht sicher behandelt, daher ist es nicht sicher, sudo auf diese Weise zu verwenden. https://unix.stackexchange.com/a/279142/39281

Anstatt Anführungszeichen in der sudoers-Datei zu verwenden, können Sie Leerzeichen mit einem Backslash maskieren:

user ALL = (root) NOPASSWD: chroot /chroots/box /bin/bash -c cd\ /repos/system\ &&\ git\ pull

Sie können es trotzdem wie folgt verwenden, da die Shell des Benutzers sowieso das Argument in Anführungszeichen verarbeitet:

chroot /chroots/box /bin/bash -c 'cd /repos/system && git pull'

Persönlich mag ich die andere Antwort, um sie in ein Skript zu packen, aber dies beantwortet die eigentliche Frage.


Linux
  1. Wie führe ich einen Befehl vor der Benutzeranmeldung unter Linux aus?

  2. Wie führe ich einen Befehl als bestimmter Benutzer in einem Init-Skript aus?

  3. Wie kann ich der sudoers-Datei einen regulären Benutzer hinzufügen?

  4. Wie kann ich den Befehlsverlauf eines anderen Benutzers in Linux anzeigen?

  5. So führen Sie den ssh-Befehl einen sudo-Befehl ohne Passwort aus der Ferne aus

So verwenden Sie Sudo und die Sudoers-Datei

So fügen Sie einen Benutzer zu Sudoers auf Ubuntu hinzu

So fügen Sie einen Benutzer zu Sudoers auf Debian hinzu

So fügen Sie einen Benutzer zu Sudoers auf Fedora hinzu

So verwenden Sie den ulimit-Befehl unter Linux

Wie führe ich einen Befehl in einem Shell-Skript aus?