¿Cómo creo cuentas de usuario desde la Terminal en Mac OS X 10.11?

Me gustaría poder crear nuevos usuarios en Mac OS X 10.11 de forma remota después de ingresar a la máquina. En Mountain Lion, se enumeraron estos pasos .

Corriendo

dscl . -create /Users/joeadmin
dscl . -create /Users/joeadmin UserShell /bin/bash
dscl . -create /Users/joeadmin RealName "Joe Admin" 
dscl . -create /Users/joeadmin UniqueID "510"
dscl . -create /Users/joeadmin PrimaryGroupID 20
dscl . -create /Users/joeadmin NFSHomeDirectory /Users/joeadmin
dscl . -passwd /Users/joeadmin password 

dscl . -append /Groups/admin GroupMembership joeadmin

Después de lo anterior, el usuario no se convierte en administrador. ¿Qué sigue?

Respuestas (4)

La documentación carece de un paso importante:

reboot

o

sudo reboot

Después del reinicio, el usuario disfruta de derechos de administrador visibles en Preferencias del sistema -> Usuarios y grupos.

Pero: incluso sin reiniciar, el usuario ya es administrador, simplemente no está visible en el PrefPane. Si inicia sesión como joeadmin inmediatamente después de crear la cuenta (por ejemplo, cambio rápido de usuario), el rol de administrador es visible desde dentro de su cuenta.

Buena respuesta. Iba a comentarle al OP para preguntar cómo se ve la cuenta que no es administrador para profundizar en cómo estaban usando el usuario o probando la membresía del grupo de administradores. Dependiendo de cómo verifiquen, un cierre de sesión podría ser todo lo que necesitan para que su usuario actual lea al nuevo usuario como administrador...
@klanomath, ¿así que sin reiniciar no podemos agregar un nuevo usuario desde la línea de comandos? Sin embargo, usando guipodemos agregar un nuevo usuario sin reiniciar el sistema.

Si está aquí y su sistema ejecuta algo desde 10.10 y más reciente, el comando sysadminctl es su mejor amigo. Hace mucha magia que DSCL no puede hacer.

Aquí está la salida para sysadminctl:

sysadminctl[21233:29122637] Usage: sysadminctl
    -deleteUser <user name> [-secure || -keepHome]
    -newPassword <new password> -oldPassword <old password> [-passwordHint <password hint>]
    -resetPasswordFor <local user name> -newPassword <new password> [-passwordHint <password hint>]
    -addUser <user name> [-fullName <full name>] [-UID <user ID>] [-password <user password>] [-hint <user hint>] [-home <full path to home>] [-admin] [-picture <full path to user image>]

Pass '-' instead of password in commands above to request prompt.

Entonces querrás hacer:

sudo createhomedir -c 2>&1 | grep -v "shell-init"

Para agregar/eliminar usuarios, use dseditgroup:

sudo dseditgroup -o edit -a usernametoadd -t user admin
sudo dseditgroup -o edit -a usernametoadd -t user wheel
el comando sudo createhomedir -c 2>&1 | grep -v "shell-init"también crea una carpeta en /var/setupuna instalación limpia
@Burcardo, está bien siempre que las cuentas funcionen y los usuarios pueden usar passwd para cambiar sus propias contraseñas. De hecho, ninguna de mis máquinas ha tenido problemas con la creación de esa carpeta.

Después de muchas pruebas, hice este script para crear cuentas de usuario desde la terminal.

LOCAL_ADMIN_FULLNAME="Joe Admin"     # The local admin user's full name
LOCAL_ADMIN_SHORTNAME="joeadmin"     # The local admin user's shortname
LOCAL_ADMIN_PASSWORD="password"      # The local admin user's password

# Create a local admin user account
sysadminctl -addUser $LOCAL_ADMIN_SHORTNAME -fullName "$LOCAL_ADMIN_FULLNAME" -password "$LOCAL_ADMIN_PASSWORD"  -admin
dscl . create /Users/$LOCAL_ADMIN_SHORTNAME IsHidden 1  # Hides the account (10.10 and above)
mv /Users/$LOCAL_ADMIN_SHORTNAME /var/$LOCAL_ADMIN_SHORTNAME # Moves the admin home folder to /var
dscl . -create /Users/$LOCAL_ADMIN_SHORTNAME NFSHomeDirectory /var/$LOCAL_ADMIN_SHORTNAME # Create new home dir attribute
dscl . -delete "/SharePoints/$LOCAL_ADMIN_FULLNAME's Public Folder" # Removes the public folder sharepoint for the local admin
puede deshacerse de la línea mv /Users/$LOCAL_ADMIN_SHORTNAME /var/$LOCAL_ADMIN_SHORTNAME # Mueve la carpeta de inicio de administración a /var con una bandera en su comando sysadminctl -home /var/$LOCAL_ADMIN_SHORTNAME

PrimaryGroupID debe establecerse en 80 para crear una cuenta de administrador.

dscl . -create /Users/joeadmin PrimaryGroupID 80

echa un vistazo a este hilo para más información.

También he escrito un guión para este propósito. Aquí está el enlace esencial

Es mejor configurar las cuentas de administrador en 20 (el staffgrupo) y luego agregar una membresía secundaria admincon el dseditgroupcomando. Hay algunas partes de macOS que asumen que todas las cuentas de usuario son miembros de staff, y sin esa membresía, es posible que su cuenta de administrador no pueda hacer algunas cosas que incluso las cuentas estándar (no administrativas) pueden hacer.