So geben Sie das Passwort direkt an das sudo su -<someuser> in Shell-Scripting </someuser>

570
raamsaara

Ich habe eine Anforderung erhalten, in Shell-Skript zu automatisieren, für sudo su -<someuser>das nach Kennwort gefragt wird.

So geben Sie das Kennwort direkt an das sudo su-in-Shell-Scripting für IBM AIX-Server. Ich habe versucht es zu benutzen echo <password> | sudo su -<someuser>hat nicht funktioniert. Bitte helfen Sie dabei.

0

3 Antworten auf die Frage

1
chloesoe

Benutzen -S

man sudo:

-S, --stdin Schreiben Sie die Eingabeaufforderung in den Standardfehler und lesen Sie das Kennwort aus der Standardeingabe, anstatt das Endgerät zu verwenden. Dem Passwort muss ein Zeilenvorschubzeichen folgen.

so können sie verwenden:

echo <myPassword> | sudo -S su <someuser>

Edit: Das oben funktionierte auf einem Ubuntu-Test nicht. Es scheint, als sei der zweite Befehl "su" nach der Abfrage des Passworts zu schnell.

Ich habe eine Problemumgehung gemacht, um eine Sekunde zu warten, damit das Echo-Passwort ausgefüllt werden konnte, und dann sollte Sudo in der Lage sein, Folgendes auszuführen sudo su - foobar:

echo "password" | sudo -S sleep 1 && sudo su - foobar 
In meinem Debian gibt 'su' aus. `Sudo su -` wird jedoch dank der zwischengespeicherten Anmeldeinformationen unmittelbar nach der Ausführung aufgerufen. Es kann eine Problemumgehung sein, wenn Sie sich auf dieses Verhalten verlassen können. Kamil Maciorowski vor 4 Jahren 0
es funktioniert nicht. raamsaara vor 4 Jahren 0
@raamsaara: was hat genau nicht funktioniert? hast du einen fehler bekommen Inzwischen bearbeitete ich meine Antwort, um eine Problemumgehung hinzuzufügen, die auf meinem Rechner funktionierte. chloesoe vor 4 Jahren 0
1
Kamil Maciorowski

Mit expect. Ein Stub- Befehl kann folgendermaßen aussehen:

expect -c ' log_user 0 spawn /usr/bin/sudo su - someuser expect "*: " send "thepassword\n" interact ' 

Siehe diese Antwort auf eine ähnliche Frage.


Ein anderer Ansatz ist mit sudo -A.

  1. Erstellen Sie beispielsweise eine Datei pass.
  2. Machen Sie die Datei nur für Sie zugänglich: chmod go-rwx pass.
  3. Machen Sie es für Sie ausführbar: chmod u+x pass
  4. Bearbeiten Sie die Datei und erstellen Sie ein Skript, das Ihr Kennwort druckt:

    #!/bin/sh printf '%s\n' 'yourpassword' 
  5. Jetzt können Sie das tun:

    SUDO_ASKPASS="./pass" sudo -A su - someuser 

Hinweis: In diesem Fall geben Sie das Passwort für sudo(nicht für su) an. benutze das man sudowill.

Vielen Dank . Aber wo kann ich das einbauen? raamsaara vor 4 Jahren 0
@raamsaara In `su`-Syntax. Antwort verbessert Kamil Maciorowski vor 4 Jahren 0
1
danblack

Können Sie die :NOPASSWDOption Sudo verwenden, damit Sie kein Passwort benötigen. Wie: %wheel ALL=(ALL) NOPASSWD: ALLin / etc / sudoers