Wenn ich mache
su - -c 'mkdir bin' user1
dann bekomme ich
su: /usr/bin/ksh: No such file or directory
weil die Benutzer-Shell auf ksh
in gesetzt /etc/passwd
und ksh
nicht installiert ist.
Frage
Wie führe ich in einem solchen Fall Befehle als Benutzer aus?
/etc/passwd
kommt aus NIS.Antworten:
Wenn Sie das nicht setzen
-
nach ,su
dann wird es nicht , dass Benutzer-Umgebung laden, aber die Befehle werden immer noch als dieser Benutzer ausgeführt werden.Es scheint, dass ich Ihr eigentliches Problem falsch verstanden habe. Wie andere gesagt haben,
-s
ist die Option, die Sie wahrscheinlich tatsächlich wollen.quelle
Sie können verwenden:
Die
-s
Option su gibt die zu verwendende Shell an und überschreibt alles, was sich in / etc / passwd befindet.Ich habe das
-
aus Ihrem Befehl entfernt, da es zusätzlich zum Laden des Profils wahrscheinlich das Arbeitsverzeichnis in das Ausgangsverzeichnis des Benutzers für den Befehl ändert, sodass Sie 'bin' im Ausgangsverzeichnis von Benutzer1 erstellen würden, nicht in Ihrem aktuellen Verzeichnis.quelle
Ich glaube, mit der Shell-Option -s / - können Sie die zu verwendende Shell auswählen, während die anderen Teile der Benutzerumgebung beibehalten werden. / Bin / sh wird von posix angegeben und sollte daher überall verfügbar sein.
quelle