Lassen Sie sudo nach dem Passwort des Benutzers fragen, zu dem es wechselt

Lassen Sie sudo nach dem Passwort des Benutzers fragen, zu dem es wechselt
sudo -u user1 command ...

Wie kann ich erreichen, dass statt des Passworts des aktuellen Benutzers sudodas Passwort von abgefragt wird ?user1


Hintergrund: Ich möchte dies in einem Git-Hook verwenden, der vom Benutzer ausgeführt wird git, so etwas wie

echo "PasswordOfWww" | sudo -Su www bash -c "cd site; git pull; ./deploy.sh"

Ich habe versucht, su www -c "command ..."aber es sagt mir

remote: su: must be run from a terminal

wenn ich in das Repository pushe.

Antwort1

Sie möchten das Passwort eines Benutzers nicht wirklich unverschlüsselt im Dateisystem speichern, wenn Sie es vermeiden können. Es hängt ein wenig davon ab, wie sehr Sie sich auf die Portabilität des Codes in Git verlassen und was Sie im lokalen Dateisystem speichern können. Ich würde empfehlen, sudo mit NOPASSWD mit einem möglichst eingeschränkten Befehl zu verwenden. Sie würden einen Eintrag in /etc/sudoers erstellen, der etwa so aussieht:

git ALL=(www) NOPASSWD: /usr/local/sbin/deploySite

Dabei deploySitewerden verschiedene Prüfungen durchgeführt, um sicherzustellen, dass der Benutzer in das richtige Verzeichnis geht und das deploy.shSkript keine verdächtigen Informationen enthält.

Wenn Sie darauf vertrauen, dass der Benutzer „git“ das Konto des Benutzers „www“ verantwortungsvoll nutzt, können Sie NOPASSWD:ALL verwenden. Damit gestatten Sie aber grundsätzlich jedem, der Zugriff auf das Hochladen auf „git“ hat, den Zugriff, alle gewünschten Befehle als Benutzer „www“ auszuführen.

Aber um die ursprüngliche Frage zu beantworten

Sie können sudo so einrichten, dass es nach dem Passwort des Zielbenutzers fragt, statt nach dem des aufrufenden Benutzers. Sie würden einen sudoers-Eintrag wie folgt einfügen:

Defaults:git targetpw

Dann muss der Benutzer „git“ beim Ausführen das Kennwort des Benutzers „www“ eingeben sudo -u www ....

verwandte Informationen