web-dev-qa-db-fra.com

Pourquoi "SU" donne "SU: Échec de l'authentification" même lorsqu'il fonctionne comme root?

Un peu comme dans Comment supprimer su d'avertissement d'authentification? , mais cela n'exécute pas du tout la commande.

# su limited
su: Authentication failure
# su -s /bin/bash limited
su: Authentication failure
# su -s /bin/bash - limited
su: Authentication failure

Pourquoi cela prend-il la peine de vérifier l'authentification lors de la course à partir de root?


Pour la plupart des utilisateurs su fonctionne normalement.

# grep limited /etc/passwd
limited:x:1001:1001::/home/limited:/bin/bash
# grep limited /etc/shadow
#

Être manquant de /etc/shadow n'empêche pas la plupart des autres utilisateurs d'être su- ed.

Je vois une entrée de journal quand j'essaie:

Apr 21 10:43:18 thehostname su: FAILED SU (to limited) root on pts/110
# egrep -v '^#|^$' /etc/pam.d/su
auth       sufficient pam_rootok.so
session       required   pam_env.so readenv=1
session       required   pam_env.so readenv=1 envfile=/etc/default/locale
session    optional   pam_mail.so nopen
session    required   pam_limits.so
@include common-auth
@include common-account
@include common-session
3
Vi.

Vous avez un x dans le champ de mot de passe (principalement obsolète) de /etc/passwd. Selon man 5 passwd (sur mes machines debian/frasbbian aussi bien que en ligne ) Cela signifie qu'il s'agit de DOIT Soyez une entrée correspondante dans /etc/shadow:

Si le champ Mot de passe est un "x" minuscule, le mot de passe crypté est réellement stocké dans le fichier Shadow (5) à la place; Il doit y avoir une ligne correspondante dans le /etc/shadow file, sinon le compte d'utilisateur n'est pas valide.

Je soupçonne que vous frappez cette dernière clause, " Le compte d'utilisateur est invalide" et su errent sur le côté de la prudence.

Exemple (frambien)

grep test.: /etc/passwd
test1:x:1005:1005:Test 1:/home/test1:/bin/bash
test2:x:1006:1006:Test 2:/home/test2:/bin/bash

grep test.: /etc/shadow
test1:!:18373:0:99999:7:::

su test1 -c id
uid=1005(test1) gid=1005(test1) groups=1005(test1)

su test2 -c id
su: Authentication failure

La solution semble être soit de ne pas utiliser x dans le passwd champ de mot de passe ou pour ajouter des entrées correspondantes dans /etc/shadow. (Notez que faire le champ de mot de passe en /etc/passwd vide permettra probablement à l'utilisateur de se connecter sans mot de passe. Au lieu de cela, utilisez !, qui marquera le compte comme verrouillé.)

Vous devriez être capable d'utiliser la commande pwconv pour réparer le /etc/shadow Fichier avec les entrées manquantes.

3
roaima