Automatisieren des Befehls "sudo su - user"

38783
sam

Ich möchte automatisieren

sudo su - user 

aus einem Skript. Es sollte dann nach einem Passwort gefragt werden.

5
Verwenden Sie nicht "sudo su - user", sondern "sudo -iu user". (Übrigens einfacher durch "Sudoers" zu verwalten.) grawity vor 13 Jahren 1
Wie können Sie `sudo su` ausführen, ohne` sudo visudo` ausführen zu können? Hello71 vor 13 Jahren 0

3 Antworten auf die Frage

7
Torian

Ich werde versuchen und zu erraten, was Sie gefragt haben.

Wenn Sie sudo su - userohne Kennwort verwenden möchten, sollten Sie (wenn Sie über die Berechtigungen verfügen) die folgenden Sudoers-Dateien verwenden:

<youuser> ALL = NOPASSWD: /bin/su - <otheruser> 

woher:

  • <yourusername> ist dein Benutzername: D (saumun89, dh)
  • <otheruser> ist der Benutzer, zu dem Sie wechseln möchten

Dann in das Skript einfügen:

sudo /bin/su - <otheruser> 

Wenn Sie genau dies tun, werden nachfolgende Befehle nicht ausgeführt <otheruser>, es wird eine neue Shell erzeugt. Wenn Sie als dieser andere Benutzer einen anderen Befehl innerhalb des Skripts ausführen möchten, sollten Sie Folgendes verwenden:

 sudo -u <otheruser> <command> 

Und in Sudoers-Datei:

<yourusername> ALL = (<otheruser>) NOPASSWD: <command> 

Offensichtlich eine allgemeinere Zeile wie:

<yourusername> ALL = (ALL) NOPASSWD: ALL 

Will Dinge erledigen, würde aber die Erlaubnis erteilen, alles wie irgendjemandes zu tun.

Wenn der sudo su-user-Befehl ausgeführt wird, werden Sie nach einem Kennwort gefragt. Ich möchte eine Lösung, bei der das Skript das Passwort automatisch von irgendwo liest. Ich habe nicht die Erlaubnis zu tun, was Sie vorhin gesagt haben. sam vor 13 Jahren 0
Ich habe die Erlaubnis, das Passwort in einer Datei zu speichern. Das Skript sollte das Kennwort aus dieser Datei lesen sam vor 13 Jahren 0
3
Olli

Sie können den Befehl verwenden

 echo "your_password" | sudo -S [rest of your parameters for sudo] 

(Natürlich ohne [und])

Bitte beachten Sie, dass Sie Ihr Skript vor dem Lesezugriff von nicht autorisierten Benutzern schützen sollten. Wenn Sie das Kennwort aus einer separaten Datei lesen möchten, können Sie verwenden

 sudo -S [rest of your parameters for sudo] < /etc/sudo_password_file 

(Oder wie auch immer der Name der Kennwortdatei lautet, die Kennwort und einen Zeilenumbruch enthält.)

Von der sudo-Manpage:

 -S The -S (stdin) option causes sudo to read the password from the standard input instead of the terminal device. The password must be followed by a newline character. 
Das funktioniert eigentlich für mich. AlexandruC vor 9 Jahren 0
Das ist brilliant Oscar Foley vor 8 Jahren 0
1
Mikel

Der einfachste Weg ist, es so zu gestalten, dass der Benutzer überhaupt kein Passwort eingeben muss.

Sie können dies tun, indem Sie visudodie folgende Zeile ausführen und dann ändern:

someuser ALL=(ALL) ALL 

zu

someuser ALL=(ALL) NOPASSWD: ALL 

Wenn es sich jedoch nur um ein Skript handelt, wäre es sicherer, den passwortlosen Zugriff nur auf dieses Skript zu beschränken und das Skript zu entfernen (ALL), sodass es nur als root ausgeführt werden kann, nicht als Benutzer, z

Cmnd_Alias THESCRIPT = /usr/local/bin/scriptname  someuser ALL=NOPASSWD: THESCRIPT 

Führen Sie man 5 sudoersden Befehl aus, um alle Details auf der Manpage von sudoers anzuzeigen .

Ich habe keine Erlaubnis, die Sudoers-Datei zu bearbeiten. Alle anderen, damit das Kennwort von irgendwo gelesen werden sollte, damit eine Automatisierung dieser durchgeführt werden kann. sam vor 13 Jahren 0
Sie haben kein Glück ... Sie könnten dies mit machen, sagen wir mal "Erwarten", aber das würde das Passwort für Ihren Benutzer irgendwo hardcodieren lassen, wo die Leute es sehen könnten (vorausgesetzt, Sie haben die richtigen Berechtigungen, es könnte trotzdem sein.) gelesen von root). Torian vor 13 Jahren 0
Versuchen Sie es mit "Expect". "Man erwartet" für Details. Mikel vor 13 Jahren 0
Wenn der sudo su-user-Befehl ausgeführt wird, werden Sie nach einem Kennwort gefragt. Ich möchte eine Lösung, bei der das Skript das Passwort automatisch von irgendwo liest. Ich habe keine Berechtigung zum Bearbeiten der Sudoers-Datei. Ich habe die Berechtigung, das Kennwort in einer Datei zu speichern. Das Skript sollte das Kennwort aus dieser Datei lesen sam vor 13 Jahren 0