Ich erstelle ein Bash-Skript, das Befehle als bestimmter Benutzer ausführen muss. Als Ergebnis verwende ich den Befehl:
runuser
Ich habe dieses Skript getestet und es funktioniert perfekt in Ubuntu Server 14.10. Beim Testen am 14.04 und 12 stoße ich jedoch auf den folgenden Fehler:
runuser: command not found
Dies geschieht jedes Mal, wenn der Befehl runuser verwendet wird.
Ich verwende den folgenden Befehl, um einen neuen Benutzer zu erstellen:
adduser --no-create-home --home "/home/$homedir" --disabled-password --gecos "$realname" "$uname" ; usermod -p "$passwd" "$uname"
Muss beim Erstellen des neuen Benutzers etwas Bestimmtes angegeben werden? Fehlt eine bestimmte Abhängigkeit?
Änderungen für Fragen:
Ausgabe von echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Ausgabe von ls -l /sbin/runuser
ls: cannot access /sbin/runuser: No such file or directory
Der Grund, warum ich runuser vs su verwenden möchte, ist folgender:
Wenn ich runuser verwende, kann ich die folgenden Befehle ausführen:
runuser user -c 'cd'
runuser user -c 'wget http://file.com'
Wohingegen ich bei su die Befehle wie folgt verketten muss:
su user -c 'cd; wget http://file.com'
Akzeptierte Antwort:
runuser
ist ein neuerer Befehl, er erschien in util-linux 2.23. Ubuntu 14.04 enthält util-linux 2.20, daher gibt es diesen Befehl noch nicht.
runuser
ist nicht sehr nützlich. Verwenden Sie einfach su
stattdessen. Beachten Sie, dass der Befehl runuser user -c 'cd'
macht eigentlich gar nichts – den Geltungsbereich von cd
erstreckt sich nicht bis zum nächsten Aufruf von runuser
. Sie müssten runuser user -c 'cd && wget http://file.com'
verwenden ohnehin. Verwenden Sie su user -c 'cd && wget http://file.com'
stattdessen.