GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum kann `su` nicht verwendet werden, um zu Benutzern mit leerem Passwort zu wechseln?

Erstellen Sie ein neues Konto namens test :

$ sudo useradd test

test hat gerade kein Passwort. Also

$ su test

funktioniert nicht. Wenn Sie es versuchen, werden Sie nach test gefragt 's Passwort. Es hat keine. Das ist nicht dasselbe wie ein leeres Passwort. Wenn Sie also ein leeres Passwort eingeben, indem Sie die Eingabetaste drücken, erhalten Sie die Meldung „su:Authentication failure“.

Dasselbe gilt, wenn Sie zu einem tty wechseln und versuchen, sich als test anzumelden :Ein leeres Passwort wird nicht akzeptiert.

Weisen Sie nun test zu ein leeres Passwort:

$ sudo passwd -d test

Sie können sich jetzt als test anmelden auf einem tty, indem Sie den leeren String als Passwort angeben. Wenn Sie es jedoch versuchen

$ su test

Auch hier erhalten Sie immer noch die Meldung „su:Authentication failure“, die Sitzung wechselt nicht zum Benutzer test .

Warum ist das so?

Akzeptierte Antwort:

Aus der Ausgabe von ldd /bin/su , der su Binary wird mit pam kompiliert Bibliotheken (libpam* ), also werden Authentifizierung, Kontoverwaltung, Sitzungsinitiierung usw. von pam verwaltet .

Im Folgenden wird die su eines typischen Ubuntu-Systems beschrieben wird von pam verwaltet , sollten Sie einen ähnlichen Ansatz finden, wenn Sie eine andere Distribution verwenden.

Die pam Regeln für su sind in der Datei /etc/pam.d/su definiert . Diese Datei enthält auch den common-auth , common-passwd , common-session Dateien aus dem gleichen Verzeichnis wie allgemeine Vorlagen zum Abdecken der Aufgaben, die ihr Name vermuten lässt (und in anderen pam aktivierte Dienste).

Auf meinem System am Ende von /etc/pam.d/su Ich habe:

@include common-auth
@include common-account
@include common-session

Die vorangegangenen Zeilen befassen sich nicht mit der Überprüfung des Null-Passworts, es ist hauptsächlich die Aufgabe von pam_unix Modul.

Jetzt /etc/pam.d/common-auth hat:

auth    [success=1 default=ignore]      pam_unix.so nullok_secure

Von man pam_unix :

nullok

Die Standardaktion dieses Moduls besteht darin, dem Benutzer keinen Zugriff auf einen Dienst zu gewähren, wenn sein offizielles Passwort leer ist. Das nullok-Argument überschreibt diesen Standard und erlaubt jedem Benutzer mit einem
leeren Passwort, auf den Dienst zuzugreifen.

nullok_secure

Die Standardaktion dieses Moduls besteht darin, dem Benutzer keinen Zugriff auf einen Dienst zu gewähren, wenn sein offizielles Passwort leer ist. Das nullok_secure-Argument überschreibt diesen Standard und erlaubt jedem Benutzer
mit einem leeren Passwort, auf den Dienst zuzugreifen, solange der Wert von PAM_TTY auf einen der in /etc/securetty gefundenen Werte gesetzt ist.

wie Sie sehen können, ob nullok_secure Option gesetzt ist, es sei denn die Umgebungsvariable PAM_TTY auf die erwähnte Weise eingestellt ist, wird es dem Benutzer mit Null-Passwort nicht gestattet, sich mit su anzumelden .

Also, um jedem Benutzer mit Null-Passwort zu erlauben, su zu tun , müssen Sie den nullok haben -Argument für pam_unix Modul:

auth    [success=1 default=ignore]      pam_unix.so nullok

dies ist unsicher wie der common-auth Datei wird von vielen anderen Diensten verwendet, sogar nur für su Dies sollte nicht getan werden. (Zu Testzwecken können Sie es einmal einstellen und dann auf das Original zurücksetzen. Wenn Sie den Test jedoch durchführen möchten, ist es besser, die gesamte Logik in /etc/pam.d/su zu integrieren Datei, und ändern Sie danach alle Änderungen, anstatt mit common-* herumzuspielen Datei)

Verwandte:Wie verkettet man die Befehle „date -d @xxxxxx“ und „find ./“?
Linux
  1. Warum ich bei xterm bleibe

  2. Passwort-Hashing und warum wir es brauchen

  3. Verwalten von Linux-Benutzern mit dem passwd-Befehl

  4. Warum kann ich Cd nicht in einem Bash-Skript verwenden?

  5. Warum kann Xargs nicht mit Tail -f arbeiten?

So setzen Sie ein Windows-Passwort mit Linux zurück

11 Gründe, warum Sie zu Linux wechseln sollten

Finden Sie Benutzerkonten mit leerem Passwort in Linux

Wie schütze ich GRUB mit einem Passwort unter Linux?

Wie überprüfe ich das Passwort mit Linux?

Wie deaktiviere ich die SSH-Anmeldung mit Passwort für einige Benutzer?