Website-Suche

So wechseln Sie (su) ohne Passwort zu einem anderen Benutzerkonto


In dieser Anleitung zeigen wir Ihnen, wie Sie zu einem anderen oder einem bestimmten Benutzerkonto wechseln können, ohne ein Passwort zu benötigen. Zum Beispiel haben wir ein Benutzerkonto namens postgres (das standardmäßige PostgreSQL-Superuser-Systemkonto), wir möchten, dass jeder Benutzer (in der Regel unsere PostgreSQL-Datenbank- und Systemadministratoren) in der Gruppe postgres mit dem Befehl su zum postgres-Konto wechselt, ohne ein Passwort einzugeben.

Standardmäßig kann nur der Root-Benutzer zu einem anderen Benutzerkonto wechseln, ohne ein Kennwort einzugeben. Jeder andere Benutzer wird aufgefordert, das Passwort des Benutzerkontos einzugeben, zu dem er wechselt (oder wenn er den Befehl sudo verwendet, wird er aufgefordert, sein Passwort einzugeben), wenn er nicht das richtige Passwort eingibt, erhält er die Fehlermeldung "Authentifizierung fehlgeschlagen", wie im folgenden Screenshot gezeigt.

Sie können eine der beiden unten aufgeführten Lösungen verwenden, um das obige Problem zu lösen.

1. Verwenden des PAM-Authentifizierungsmoduls

PAM (Pluggable Authentication Modules) sind das Herzstück der Benutzerauthentifizierung auf modernen Linux-Betriebssystemen. Um Benutzern in einer bestimmten Gruppe zu ermöglichen, ohne Kennwort zu einem anderen Benutzerkonto zu wechseln, können wir die PAM-Standardeinstellungen für den Befehl su in der Datei /etc/pam.d/su ändern.

# vim /etc/pam.d/su
OR
sudo vim /etc/pam.d/su

Fügen Sie die folgenden Konfigurationen nach "auth sufficient pam_rootok.so" hinzu, wie im folgenden Screenshot gezeigt.

auth       [success=ignore default=1] pam_succeed_if.so user = postgres
auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres

In der obigen Konfiguration prüft die erste Zeile, ob der Zielbenutzer Postgres ist, wenn dies der Fall ist, überprüft der Dienst den aktuellen Benutzer, andernfalls wird die Zeile default=1 übersprungen und die normalen Authentifizierungsschritte werden ausgeführt.

auth       [success=ignore default=1] pam_succeed_if.so user = postgres

Die folgende Zeile prüft, ob sich der aktuelle Benutzer in der Gruppe postgres befindet, wenn ja, gilt der Authentifizierungsprozess als erfolgreich und gibt als Ergebnis ausreichend zurück. Andernfalls werden die normalen Authentifizierungsschritte ausgeführt.

auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres

Speichern Sie die Datei, und schließen Sie sie.

Fügen Sie als Nächstes den Benutzer (z. B. aaronk), den Sie ohne Passwort zum Konto postgres hinzufügen möchten, mit dem Befehl usermod zur Gruppe postgres hinzu.

$sudo usermod -aG postgres aaronk

Versuchen Sie nun, als Benutzer aaronk auf das Postgres-Konto zuzugreifen, Sie sollten nicht zur Eingabe eines Passworts aufgefordert werden, wie im folgenden Screenshot gezeigt:

$ su - postgres

2. Verwenden der Sudoers-Datei

Sie können auch ohne Kennwort an einen anderen Benutzer su senden, indem Sie einige Änderungen in der sudoers-Datei vornehmen. In diesem Fall sollte sich der Benutzer (z. B. aaronk), der zu einem anderen Benutzerkonto (z. B. postgres) wechselt, in der sudoers-Datei oder in der sudo-Gruppe befinden, um den sudo-Befehl aufrufen zu können.

$ sudo visudo

Fügen Sie dann die folgende Konfiguration unterhalb der Zeile "%sudo ALL=(ALL:ALL) ALL " hinzu, wie im folgenden Screenshot gezeigt.

aaronk ALL=NOPASSWD: /bin/su – postgres

Speichern und schließen Sie die Datei.

Versuchen Sie nun, sich mit dem Konto postgres als Benutzer aaronk zu verbinden, die Shell sollte Sie nicht zur Eingabe eines Passworts auffordern:

$ sudo su - postgres

Das war's fürs Erste! Weitere Informationen finden Sie auf der Seite für den manuellen Eintrag von PAM (man pam.conf) und auch auf der Seite des Befehls sudo (man sudo).

$ man pam.conf
man sudo

Verwandte Artikel: