8 votos

Cambiar la contraseña del usuario proporcionando la nueva contraseña como hash en un script

Actualmente estoy trabajando en un despliegue de un gran número de Mac's, en el que quiero establecer la contraseña de una cuenta de administrador sin poner la contraseña en texto plano en el script. ¿Hay alguna manera de proporcionar un hash de la contraseña a dscl/passwd?

3voto

Dan Puntos 16

Sí puedes cambiar la contraseña proporcionando un hash a un script. Esto funciona para 10.7 y posteriores (hasta al menos 10.9.1).

  1. Necesitas el hash que quieres poner. La forma más fácil de hacerlo es crear una cuenta con la contraseña que quieras y leer el hash. El hash se almacena en /var/db/dslocal/nodes/Default/users/[username].plist en el ShadowHashData campo

  2. Cree el usuario de la manera estándar (usando dscl) pero no establezca la contraseña usando dscl en su lugar use el comando defaults.

Ejemplo para el usuario llamado '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"

0voto

Ashley Puntos 2261

Hace muchos años, me metí con algunos sistemas UNIX donde el hash de la contraseña se almacenaba en /etc/passwd, u opcionalmente en /etc/shadow.

He buscado un poco y he encontrado dos artículos que describen cómo se almacenan los hash de las contraseñas en 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

El artículo de 2011 dice:

Cada usuario tiene su propio archivo sombra, y cada archivo sombra se almacena en un archivo .plist ubicado en /var/db/dslocal/nodes/Default/users/

Los dos artículos tratan sobre cómo descifrar las contraseñas, más que sobre cómo establecer otras nuevas, pero podrían proporcionarte alguna información útil.

Luego hice una búsqueda en Google de dscl set ShadowHashData . El primer resultado fue este "paquete libre de carga para crear un usuario en un sistema 10.7" Python script:

https://gist.github.com/rustymyers/1242589

Ese script parece llamar a dscl -create , seguido de dscacheutil -flushcache seguido de la escritura de algunos datos en /var/db/dslocal/nodes/Default/users/%s.plist .

No he mirado el script con mucha profundidad, pero quizás pueda darte un punto de partida.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X