GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi `su` ne peut-il pas être utilisé pour basculer vers des utilisateurs avec un mot de passe vide ?

Créez un nouveau compte appelé test :

$ sudo useradd test

test n'a pas de mot de passe pour le moment. Alors

$ su test

ne fonctionne pas. Si vous essayez, on vous demande un test le mot de passe. Il n'en a pas. Ce n'est pas la même chose que son mot de passe vide, donc si vous entrez un mot de passe vide en appuyant sur Entrée, vous obtenez le message "su :Échec de l'authentification".

Il en va de même si vous passez à un tty et essayez de vous connecter en tant que test :Un mot de passe vide n'est pas accepté.

Attribuez maintenant test un mot de passe vide :

$ sudo passwd -d test

Vous pouvez maintenant vous connecter en tant que test sur un tty en fournissant la chaîne vide comme mot de passe. Cependant, si vous essayez

$ su test

encore une fois, vous obtenez toujours le message "su:Échec de l'authentification" la session ne bascule pas vers l'utilisateur test .

Pourquoi est-ce ?

Réponse acceptée :

À partir de la sortie de ldd /bin/su , le su le binaire est compilé avec le pam bibliothèques (libpam* ), donc l'authentification, la gestion de compte, l'ouverture de session, etc. seront gérés par pam .

Voici comment le su d'un système Ubuntu typique est géré par pam , vous devriez trouver une approche similaire si vous utilisez une autre distribution.

Le pam règles pour su sont définis dans le fichier /etc/pam.d/su . Ce fichier inclut également le common-auth , common-passwd , common-session fichiers du même répertoire que les modèles communs pour couvrir les tâches suggérées par leur nom (et utilisés dans d'autres pam services activés).

Sur mon système, en bas de /etc/pam.d/su j'ai :

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

Les lignes précédentes ne traitent pas de la vérification du mot de passe nul, c'est principalement le travail de pam_unix module.

Maintenant /etc/pam.d/common-auth a :

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

De man pam_unix :

nullok

L'action par défaut de ce module est de ne pas autoriser l'utilisateur à accéder à un service si son mot de passe officiel est vide. L'argument nullok remplace cette valeur par défaut et permet à tout utilisateur avec un
mot de passe vide d'accéder au service.

nullok_secure

L'action par défaut de ce module est de ne pas autoriser l'utilisateur à accéder à un service si son mot de passe officiel est vide. L'argument nullok_secure remplace cette valeur par défaut et permet à tout utilisateur
avec un mot de passe vide d'accéder au service tant que la valeur de PAM_TTY est définie sur l'une des valeurs trouvées dans /etc/securetty.

comme vous pouvez le voir si le nullok_secure est définie, sauf si la variable d'environnement PAM_TTY est défini de la manière mentionnée, l'utilisateur avec un mot de passe nul ne sera pas autorisé à se connecter en utilisant su .

Donc, pour permettre à tout utilisateur avec un mot de passe nul de faire su , vous devez avoir le nullok argument du pam_unix modules :

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

ceci n'est pas sécurisé car le common-auth le fichier est utilisé par de nombreux autres services, même uniquement pour su cela ne devrait pas être fait. (Pour des raisons de test, vous pouvez le définir une fois, puis revenir à l'original. Bien que si vous voulez faire le test, il est préférable d'incorporer toutes les logiques dans /etc/pam.d/su fichier, et modifiez les modifications par la suite plutôt que de jouer avec n'importe quel common-* fichier)

Connexe :Comment enchaîner les commandes ‘date -d @xxxxxx’ et ‘find ./’ ?
Linux
  1. Vérifiez l'espace disque utilisé sur Linux avec du

  2. Gestion des utilisateurs Linux avec la commande passwd

  3. Pourquoi ne puis-je pas utiliser Cd dans un script Bash ? ?

  4. Pourquoi puis-je me connecter avec des mots de passe partiels ? ?

  5. CentOS / RHEL :Gestion du vieillissement des mots de passe pour les utilisateurs à l'aide de chage (avec exemples pratiques)

Comment réinitialiser un mot de passe Windows avec Linux

11 raisons pour lesquelles vous devriez passer à Linux

Trouver des comptes d'utilisateurs avec un mot de passe vide sous Linux

Comment protéger GRUB avec un mot de passe sous Linux ?

Comment autoriser ssh avec des mots de passe vides sous Linux

comment désactiver la connexion SSH avec mot de passe pour certains utilisateurs ?