Je travaille actuellement sur un déploiement d'un grand nombre de Mac, sur lesquels je souhaite définir le mot de passe d'un compte administrateur sans mettre le mot de passe en clair dans le script. Existe-t-il un moyen de fournir un hachage du mot de passe à dscl/passwd ?
Réponses
Trop de publicités?Oui, vous pouvez modifier le mot de passe en fournissant un hachage à un script. Cela fonctionne à partir de la version 10.7 (au moins jusqu'à la version 10.9.1).
-
Vous avez besoin du hash que vous voulez lui attribuer. Le plus simple est de créer un compte avec le mot de passe souhaité et de lire le hachage. Le hachage est stocké dans
/var/db/dslocal/nodes/Default/users/[username].plist
dans leShadowHashData
champ -
Créez l'utilisateur de la manière standard (en utilisant dscl) mais ne définissez pas le mot de passe à l'aide de dscl, utilisez plutôt la commande defaults.
Exemple pour un utilisateur appelé "lana" :
#!/bin/bash
#hash to set obtained from:
#defaults read /var/db/dslocal/nodes/Default/users/lana.plist ShadowHashData
pw_hash='(<10145341 4c544544 ...really long...2d534841>)'
#needs to be unique
$uid=510
#gid of an existing group
$gid=510
dscl . -create /Users/lana
dscl . -create /Users/lana UserShell /bin/bash
dscl . -create /Users/lana RealName "Lana May"
dscl . -create /Users/lana UniqueID $uid
dscl . -create /Users/lana PrimaryGroupID $gid
dscl . -create /Users/lana NFSHomeDirectory /Users/lana
dscl . -merge /Groups/admin GroupMembership lana
defaults write "/var/db/dslocal/nodes/Default/users/lana.plist" ShadowHashData "$pw_hash"
Il y a de nombreuses années, je me suis occupé de certains systèmes UNIX où le hachage du mot de passe était stocké dans /etc/passwd, ou éventuellement /etc/shadow.
J'ai fait quelques recherches et j'ai trouvé deux articles décrivant la manière dont les hachages de mots de passe sont stockés sous OS X :
http://www.defenceindepth.net/2009/12/cracking-os-x-passwords.html http://www.defenceindepth.net/2011/09/cracking-os-x-lion-passwords.html
L'article de 2011 dit :
Chaque utilisateur possède son propre fichier d'ombre, chaque fichier d'ombre étant stocké dans un fichier .plist situé dans /var/db/dslocal/nodes/Default/users/.
Les deux articles traitent du déchiffrage des mots de passe, plutôt que de la création de nouveaux mots de passe, mais ils peuvent vous fournir des informations utiles.
J'ai ensuite effectué une recherche sur Google pour dscl set ShadowHashData
. Le premier résultat était ce "Payload free package to create a user on a 10.7 system" Python script :
https://gist.github.com/rustymyers/1242589
Ce script semble appeler dscl -create
, suivi de dscacheutil -flushcache
suivi de l'écriture de certaines données dans /var/db/dslocal/nodes/Default/users/%s.plist
.
Je n'ai pas étudié le script en profondeur, mais il pourrait peut-être vous donner un point de départ ?