Gibt es einen einzeiligen Befehl für su?

15

Ich kann ein sumit su <username>und es fragt nach meinem Passwort. Gibt es einen Passwort-Parameter, suso dass ich nicht nach einem Passwort gefragt werde?

z.B su <username> -p <password>

alvas
quelle
Es scheint , die Frage paßt perferctly zu Super - User: superuser.com :-)
HongboZhu
1
Ich habe es von superuserhier, superuser.com/questions/67765/...
alvas

Antworten:

12

Wenn Sie ein Skript schreiben möchten, das als ein anderer Benutzer ausgeführt wird, funktioniert so etwas, obwohl es das Wort "password" ohne Zeilenumbruch ausgibt, um es zu standardisieren

su - username <<!
enterpasswordhere
enter commands to run as the new user
!

Wenn Sie einen Benutzer mit dem Namen fred und dem Kennwort 1234 haben und ein ls von freds Ausgangsverzeichnis als fred abrufen möchten, ohne dass die Kennwortzeichenfolge angezeigt wird, sieht dies folgendermaßen aus

su - fred <<! >/dev/null 2>&1
1234
whoami > /dev/tty
ls > /dev/tty
!
Brian
quelle
2
hmm, "Standard in muss ein tty sein"
John Lawrence Aspden
Ich bekomme den gleichen Fehler
MaxV
12
Erste Fehler: su: must be run from a terminal.
Abhishek Kashyap
5

Ich glaube, es gibt keine und es wäre keine gute Idee. Hier ist der Grund:
Wenn Sie ein Passwort in einem Befehl wie schreiben su <username> -p <password>, wird es in Ihrem Bash-Verlauf im Klartext gespeichert. Dies ist sicherlich ein großes Sicherheitsproblem.

Wenn Sie Befehle mit su(oder sudo) automatisiert ausführen müssen, schreiben Sie ein Shellscript, das die Befehle ohne suoder enthält, sudound führen Sie es aussu <username> script.sh

Wayne_Yux
quelle
1
su root script müssen noch passwd eingeben.
Dai Kaixian
@DaiKaixian ja, aber es wird nirgendwo gespeichert und niemand kann es lesen
Wayne_Yux
2
Sie können versuchen, etwas wie: echo <passwd> | sudo -S <command-line>.Obwohl es nicht sicher ist, aber es funktioniert.
Dai Kaixian
1
Der springende Punkt meiner Antwort ist, dass es nicht sicher ist, ein Passwort in einen Befehl zu schreiben. Also
rate
-3

Wenn Sie bestimmte Befehle als neuer Benutzer ausführen möchten, verwenden Sie den folgenden Befehl:
sudo -u {username} {command to be executed as the new user}

Asche
quelle
Dies beantwortet die Frage nicht. Die Frage ist, wie mit dem Passwort umgegangen wird.
Stephen C