Useradd avec password dans preseed

Tags: #<Tag:0x00007fb418060f30>

Bonjour,

j’essaye de comprendre la non réalisation de ma commande

in-target useradd -m -p $(perl -e 'print crypt($ARGV[0], "password")' 'MON_PASSWORD') userdebian; \

dans mon preseed. Erreur de syntaxe ou l’utilisation de perl qui n’est pas possible ici ?

Cdlt

Bonjour

EDIT : Bè nop! , c’est pas ça. => Voir les messages suivant.

Je pense que le problème doit être que
le format du mot de passe chiffré que tu crées avec la commande crypt
ne correspond pas à ce qu’attend la commande adduser

Peut-être que tu pourrais t’inspirer de ce message

pourtant elle est valide quand réalisée dans un système déjà construit

Bonjour,
tu n’as pas besoin de ça pour créer un utilisateur:

d-i passwd/user-fullname string Lulu la nantaise
d-i passwd/username string lululn
d-i passwd/user-password-crypted password $6$phLrkvjv8QxeuClk$sw1U9h1gX45sdsfsdfsdfsdfsdfsdfuM5JXxH8CoQKt/c1pS4p50BXDBAg9afebyqYTjhZAdZBTUkZ9nvvR6G4S5jhb.

Quand au perl il te faut préciser le chemin d’accès, car le path n’est pas garanti dans le in-target.

1 J'aime

oui j’ai créé le premier user de cette manière

Alors c’est le chemin de perl, comme le dit @Zargos pendant que j’écris ce message :slight_smile:

1 J'aime

Si tu veux créer des user de façon multiple, mieux vaut utiliser le système simple-cdd, tu as un fichier postinst qui te permet de lancer un script complet, dans lequel l’exécution du script sera intégralement dans l’environnement cible.
C’est plus sur et nettement plus efficace.
Le preseed en lui-même n’est pas vraiment fait pour ce genre de chose.

https://www.debian-fr.org/t/simple-cdd-howto/83749/14

Avec ça j’installe complètement une machine cryptée en LVM on luks avec EFI ou pas et en modifiant quelques paramètres, et fichiers (certains fichiers de conf sont plus facile à directement remplacer que de les modifier par script).

Perl n’est pas disponible dans l’installateur Debian (ni python… seulement l’interpréteur ash de busybox).

Le paquet perl-base est installé avec le système de base, mais dans ta commande l’expression entre $() est évaluée par le shell de l’installateur avant d’exécuter in-target avec l’argument résultant (erreur courante commise avec l’utilisation de sudo ou chroot). Pour que $() soit évalué par le shell du système installé, il faudrait utiliser une construction du style

in-target sh -c 'useradd -m -p $(perl ...) ...'
2 J'aime

Sinon, tu peux mettre le hash directement à la place de ta commande en perl, en plus, ça évite que le mot de passe soit visible directement dans le fichier preseed.

Bonjour

Oui, on peut aussi s’arranger pour que, dès la première tentative de connexion, l’utilisateur soit invité à créer son mot de passe.
C’est assez simple à faire, je ne me souviens plus exactement comment j’avais fait, il me semble que c’était une simple indication à ajouter dans le fichier /etc/passwd ou/et en utilisant la commande chagepour mettre à 0 la date d’expiration du mot de passe du compte utilisateur concerné.

Chose que tu peux faire aussi en preseed.