J'essaie de configurer la politique de mot de passe des utilisateurs sur RHEL 6.6 et je veux que le système demande aux utilisateurs nouvellement créés de changer le mot de passe initial lors de la première connexion.
Notez que j'ai essayé de définir la variable EXPIRE sur 0 et INACTIVE sur -1 dans / etc / default / useradd, mais cela conduit à l'expiration du nouveau compte utilisateur après sa création. La sortie de la commande chage après la création de l'utilisateur avec ces variables est:
# chage -l foo
Last password change : Feb 22, 2015
Password expires : May 23, 2015
Password inactive : never
Account expires : Feb 22, 2015
Minimum number of days between password change : 1
Maximum number of days between password change : 90
Number of days of warning before password expires : 7
Lorsque j'essaye de me connecter sous foo user, le message "Votre compte a expiré. Veuillez contacter votre administrateur système" s'affiche.
Mais si j'ouvre la fenêtre «Propriétés de l'utilisateur», sélectionnez l'onglet «Informations sur le mot de passe» et cochez «Forcer le changement de mot de passe à la prochaine connexion», le résultat sera ce que j'attends. Le nouvel utilisateur sera invité à changer de mot de passe. La sortie de la commande chage dans ce cas sera:
# chage -l foo2
Last password change : password must be changed
Password expires : password must be changed
Password inactive : password must be changed
Account expires : never
Minimum number of days between password change : 1
Maximum number of days between password change : 90
Number of days of warning before password expires : 7
Lorsque je me connecte sous l'utilisateur foo2, le système me demande de changer le mot de passe.
Alors, existe-t-il un moyen de configurer le système pour définir les paramètres du compte utilisateur lors de la création, comme dans le deuxième cas?
Mise à jour
cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=0
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
Même si je commente INACTIVE ou si je la définis sur une valeur positive, le compte est expiré, mais pas un mot de passe.
De plus, j'ai configuré PAM sur la machine.
Upd 2
J'ai vérifié cela sur la machine avec RHEL 6.2 et sans configuration PAM. L'effet est le même.
la source
chage -d 0 {user-name}
.EXPIRE=0
en/etc/default/useradd
devrait faire le travail. J'ai lu que tu as essayé. Pouvez-vous ajouter les lignes non commentées de/etc/default/useradd
? Il est verrouillé même si vous ne spécifiez pas INACTIVE = -1, mais une valeur différente, ou si vous commentez cette ligne? Pouvez-vous spécifier si les comptes sont verrouillés même lorsqu'ils sont créés par ligne de commande. Et, s'il vous plaît, lorsque vous avez une question différente, postez-la sur une page séparée si elle aura une réponse différente.adduser
vous permet de mettre lachage
commande/usr/local/sbin/adduser.local
. Vous pouvez également définir le champ d'âge dans / etc / shadow directement sur 0.useradd
est "l'utilitaire de bas niveau", destiné à être utilisé en conjonction avec d'autres commandes.Réponses:
Puisque vous posez des questions sur RHEL6, j'ai regardé le code source de useradd (qui est fourni dans le cadre du package «shadow»). Dans useradd.c est une fonction appelée new_spent où elle configure une nouvelle entrée de mot de passe caché. Là, il résout le problème du "mot de passe expiré à la création" de cette façon:
Soooo ... Si vous définissez un zéro, cela en fait un -1.
Les auteurs du programme ont codé spécifiquement contre la définition du vieillissement à 0, donc cela n'aura pas d'importance si vous le définissez à 0 dans le paramètre / etc / default / useradd pour EXPIRE. (Si c'était moi qui faisais ce code, j'aurais cherché à voir si l'utilisateur définissait le mot de passe dans la commande et permettait ensuite l'expiration, mais ce n'était pas moi ...)
En outre, il a été suggéré ci-dessus que vous puissiez placer un script dans /usr/local/sbin/adduser.local pour exécuter une commande 'chage'. C'était un bon conseil pour un système Debian / Ubuntu où useradd est un script perl qui exécute effectivement ce fichier s'il le trouve, mais sur RHEL la commande useradd est un binaire C.
Si j'étais vous et que j'étais déterminé à obtenir ce comportement sur l'utilisateur RHEL6, j'obtiendrais le SRPM pour le package shadow, commenter ces lignes ci-dessus et faire un rpmbuild sur le package et rockaway. Gagnant!
la source
Pourquoi ne pas l'ajouter à un script?
Si tout ce que vous recherchez est la première connexion, cela fonctionnera. Le
-e
expire le mot de passe du compte immédiatement, donc la prochaine connexion, l'utilisateur est obligé de mettre à jour son mot de passe? (voirman passwd
)la source
Automatique:
Source: GeekRide
Maintenant, éditer ce fichier dans le terminal était difficile. J'ai donc changé les autorisations du fichier en 777 en utilisant:
et édité dans grub.
(Merci à la commande Linux .)
Vérifié dans ma machine virtuelle Ubuntu 12.04.5.
Manuel:
Source: nixCraft
Copier-coller pur. Au sens propre. ;)
Vérifié sur ma machine virtuelle Ubuntu 12.04.5.
la source
chmod -R 777 /
c'est une chose très stupide à faire!