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

Skript mit Argumenten als Benutzer ausführen?

Ich versuche sicherzustellen, dass, wenn ein Skript ausgeführt wird, es als ein bestimmter Benutzer ausgeführt wird, ohne diesen Benutzer kontaktieren zu müssen, bevor das Skript ausgeführt wird. Außerdem wird das Skript zum Beispiel mit ein paar Flags ausgeführt

./myscript.sh -e dev -v 1.9

Folgendes habe ich versucht

[ `whoami` = myuser ] || exec sudo -S su - myuser -c "bash `pwd`/`basename $0` [email protected]"

Aber das Flag -v, das eine Eingabe für mein Skript sein soll, wird als Eingabe für su gefüttert. Es beschwert sich also über eine ungültige Option, gibt es eine Möglichkeit, das Obige zu korrigieren?

NB:Die Person, die das Skript ausführt, hat sudo-Berechtigungen.

Akzeptierte Antwort:

Der aktuelle Benutzer steht bereits in der Variable $USER . Sie brauchen also nur:

[ "$USER" = "myuser" ] || sudo -u myuser $0 "[email protected]"

sudo su ist nicht erforderlich , sudo kann alles, was Sie brauchen. Sie brauchen auch kein pwd oder basename , der $0 Variable hat bereits den vollständigen Pfad zum Skript.

Ihr ursprünglicher Befehl war das Starten einer Login-Shell (su - ). Wenn das wirklich nötig ist (was seltsam erscheint), können Sie Folgendes tun:

[ "$USER" = "myuser" ] || sudo -iu myuser $0 "[email protected]"

Linux
  1. Shell-Script-Wrapper, um das Ausführen von Befehlen ohne Argumente zu verhindern?

  2. Linux – Skript alle 30 Minuten mit Systemd ausführen?

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

  4. Führen Sie einen Teil eines Bash-Skripts als ein anderer Benutzer aus

  5. Überprüfen Sie das Passwort des Benutzers mit einem Shell-Skript

Linux-Befehl „runuser“ – Shell mit angegebener Benutzer-/Gruppen-ID ausführen

So führen Sie ein Bash-Skript aus

Skript beim Start?

Führen Sie den vorherigen Befehl mit anderen Argumenten erneut aus

Wie führe ich einen Teil eines Skripts mit eingeschränkten Rechten aus?

Führen Sie ein Shell-Skript als ein anderer Benutzer aus