Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Changer mdp root dans un script

4 réponses
Avatar
Lionel
Bonjour,

J'ai un parc d'environ 70 machines sous Linux (FC4). Ces machines exécutent
un script situé sur un partage NFS du serveur à chaque démarrage
(via /etc/rc.local), cela me permet de faire d'exécuter des actions de
manière automatique sans avoir à passer sur tous les postes.

Ces machines ont été livrées avec le même mot de passe root par défaut. Je
voudrais restreindre le nombre d'utilisateurs connaissant ce mot de passe,
et donc changer le mot de passe root local des machines via le script
distant.

Les machines n'ont que deux comptes local : root et guest,
l'authentification se fait autrement sur un annuaire ldap. Est il possible
et n'est il pas un peu risqué de copier un fichier /ect/shadow contenant le
mot de passe crypté modifié sur toutes les machines ?

Est il possible avec passwd de modifier le mot de passe root local via un
script, quitte à faire passer le nouveau mot de passe en clair dans le
script ? j'ai vu dans le man de passwd un option --stdin qui permettrait
de faire passer le mot de passe via un | mais je n'arrive pas à le faire
fonctionner.

Merci pour votre aide.

Lionel

4 réponses

Avatar
Grand'Pa
Est il possible avec passwd de modifier le mot de passe root local via un
script, quitte à faire passer le nouveau mot de passe en clair dans le
script ? j'ai vu dans le man de passwd un option --stdin qui permettrait
de faire passer le mot de passe via un | mais je n'arrive pas à le faire
fonctionner.


Je viens de tester chez moi (sur une RHEL4-like) :
echo -e "mot_de_passenmot_de_passe" | passwd --stdin nom_utilisateur

--
Franck PIERRE :
Site SME-Fr : http://sme-fr.homelinux.net
Site photos : http://grand-pa.myphotos.cc

Avatar
Grand'Pa
Est il possible avec passwd de modifier le mot de passe root local via un
script, quitte à faire passer le nouveau mot de passe en clair dans le
script ? j'ai vu dans le man de passwd un option --stdin qui permettrait
de faire passer le mot de passe via un | mais je n'arrive pas à le faire
fonctionner.


Je viens de tester chez moi (sur une RHEL4-like) :
echo -e "mot_de_passenmot_de_passe" | passwd --stdin nom_utilisateur


Oups ! Avec cette méthode, il n'est pas nécessaire de doubler le mot de
passe. Du coup, il suffit de taper :
echo 'mot_de_passe' | passwd --stdin nom_utilisateur

--
Franck PIERRE :
Site SME-Fr : http://sme-fr.homelinux.net
Site photos : http://grand-pa.myphotos.cc


Avatar
Lionel
Grand'Pa wrote:

echo 'mot_de_passe' | passwd --stdin nom_utilisateur


En effet, ça marche.

Merci pour ta réponse.

Lionel.

Avatar
Sébastien Monbrun aka TiChou
Dans le message <news:e53u91$eaa$,
*Lionel* tapota sur f.c.o.l.configuration :

Bonjour,

Je voudrais [...] changer le mot de passe root local des machines via le
script distant.

n'est il pas un peu risqué de copier un fichier /ect/shadow contenant
le mot de passe crypté modifié sur toutes les machines ?


Si. On ne devrait jamais modifier manuellement ou via un script ce fichier.
Ou alors il faut suivre une procédure bien réfléchie comme la suivante par
exemple :

- on crée le verrou /etc/shadow.lock
- on récupère le contenu de /etc/shadow
- on fixe umask à 077
- on crée une copie dans /etc/shadow- avec les bonnes permissions
- on crée le nouveau shadow dans /etc/shadow.tmp avec les bonnes
permissions
- on renomme /etc/shadow.tmp en /etc/shadow
- on supprime le verrou.

On vérifie bien sûr avant de commencer l'étape suivante que l'étape
précédente s'est bien déroulée, sinon on quitte immédiatement.

Est il possible avec passwd de modifier le mot de passe root local via un
script,


C'est possible, mais ça reste hasardeux. À déconseiller.

quitte à faire passer le nouveau mot de passe en clair dans le script ?


À conseiller d'autant plus.

j'ai vu dans le man de passwd un option --stdin qui permettrait
de faire passer le mot de passe via un | mais je n'arrive pas à le faire
fonctionner.


Cette option n'est pas standard, sûrement propre à votre distribution ou à
la version particulière de la commande 'passwd' que vous utilisez.
Oubliez donc cette option et en définitif cette commande qui à l'origine a
été prévue pour un usage purement interactif.

En fait, la bonne commande à utiliser pour modifier le compte d'un
utilisateur est la commande 'usermod'.

usermod -p mot_de_passe utilisateur

où mot_de_passe est le mot de passe chiffré (et non en clair) par la
fonction crypt. Pour obtenir ce mot de passe chiffré, vous pouvez par
exemple utiliser le script perl suivant :

perl -e '@set = (a..z,A..Z,0..9,".","/");
$salt .= $set[rand 64] foreach (1..8);
print crypt "mot de passe en clair", "$1$$salt"'

--
Sébastien Monbrun aka TiChou