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
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.