¿Qué pasos son necesarios para crear un nuevo usuario desde la línea de comandos?

27

Qué comandos (o secuencias de comandos) pueden crear una cuenta de usuario completamente funcional en Mountain Lion, ejecutándose solo desde la línea de comandos a través de terminal o ssh.

Parece un par existente de las respuestas podrían funcionar, pero me pregunté si existía un script o herramienta breve para crear cuentas de usuario completamente funcionales en Mountain Lion?

    
pregunta bmike 17.02.2013 - 20:03

4 respuestas

32

Aquí hay un script de shell que escribí en el trabajo para manejar esto como parte del proceso NetInstall (creando una cuenta de administrador local automáticamente durante el proceso de creación de imágenes).

#!/bin/sh
. /etc/rc.common
dscl . create /Users/administrator
dscl . create /Users/administrator RealName "Administrator Account"
dscl . create /Users/administrator hint "Password Hint"
dscl . create /Users/administrator picture "/Path/To/Picture.png"
dscl . passwd /Users/administrator thisistheaccountpassword
dscl . create /Users/administrator UniqueID 501
dscl . create /Users/administrator PrimaryGroupID 80
dscl . create /Users/administrator UserShell /bin/bash
dscl . create /Users/administrator NFSHomeDirectory /Users/administrator
cp -R /System/Library/User\ Template/English.lproj /Users/administrator
chown -R administrator:staff /Users/administrator

Algunas notas para mencionar:

  • He guardado esto como un archivo ".sh" ejecutable.
  • Como se ejecuta durante NetInstall, se ejecuta como root y necesita ejecutarse como root para funcionar correctamente. También puede restar las dos primeras líneas, agregar un "sudo" al principio de cada línea subsiguiente y ejecutarlas manualmente como comandos individuales en la Terminal.
  • Modifique el UniqueID de 501 a un número que sabrá que es seguro en todos los sistemas (501 lo toma la primera cuenta creada en una Mac, generalmente algo más alto, como 550, probablemente será seguro, dependiendo de cuántos usuarios tenga en su sistema).
  • PrimaryGroupID de 80 crea un usuario administrador. Cambie a PrimaryGroupID de 20 para crear un usuario estándar.
  • He fotografiado más de 50 Mac de esta manera sin problemas. Utilizo esta cuenta para ejecutar comandos a través de SSH, para enviar parches a través de ARD y para hacer la administración local del escritorio.
respondido por el bispymusic 02.03.2013 - 17:31
13

Para automatizar aún más esto, la siguiente línea se puede usar para obtener la siguiente identificación de usuario "disponible" si está ejecutando una Mac que ya tiene usuarios configurados.

LastID='dscl . -list /Users UniqueID | awk '{print $2}' | sort -n | tail -1'

NextID=$((LastID + 1))

Luego, la línea correspondiente en la respuesta anterior de bispymusic podría cambiarse:

 dscl . create /Users/administrator UniqueID $NextID
    
respondido por el Kent 24.07.2013 - 10:09
2

Tengo algunas actualizaciones en la respuesta anterior.

dscl / -append /Groups/admin GroupMembership newUserName

Este comando puede usarse para hacer que el usuario tenga acceso administrativo. Si no se proporciona este comando, el usuario se configurará automáticamente como usuario estándar.

dscl . create /Users/newUserName PrimaryGroupID 80

Esto establece el ID de grupo primario del usuario. 80 significa administrador y 20 significa personal . Y el ajuste a 20 no hará que el usuario sea estándar. A menos que no se mencione el primer comando.

    
respondido por el Vipin Johney 24.07.2013 - 10:02
0

Aquí hay un script de shell que escribí para agregar nuevos usuarios en Max OS X usando la línea de comandos. Funciona igual que si fuera Linux. Siéntase libre de editar uno para sus necesidades personales. Simplemente, asígnele el nombre useradd.sh y establezca los permisos correctos ( chmod 0700 useradd.sh en mi caso). Gracias a bispymusic, Alex Leach, Kent por sus contribuciones.

OS X High Sierra probado

#!/bin/sh

if [[ 'id -u' != 0 ]]; then
    echo "Must be root to run script"
    exit
fi

read -p "Enter user name and press [ENTER]: " UserName

if [[ $UserName == 'dscl . -list /Users UniqueID | awk '{print $1}' | grep -w $UserName' ]]; then
    echo "User already exists!"
    exit 0
fi

read -p "Enter real name and press [ENTER]: " RealName
read -p "Enter PrimaryGroupID (80 - admin, 20 - user) and press [ENTER]: " PrimaryGroupID
LastID='dscl . -list /Users UniqueID | awk '{print $2}' | sort -n | tail -1'
NextID=$((LastID + 1))

. /etc/rc.common
dscl . create /Users/$UserName
dscl . create /Users/$UserName RealName $RealName

read -p "Enter password hint and press [ENTER]: " PasswordHint
dscl . create /Users/$UserName hint $PasswordHint
PasswordHint=0

echo " "
read -s -p "Enter Account Password and press [ENTER]: " AccountPassword
echo " "
read -s -p "Enter Account Password again and press [ENTER]: " AccountPasswordRepeat
if [[ $AccountPassword == $AccountPasswordRepeat ]]; then
  dscl . passwd /Users/$UserName $AccountPassword
  AccountPassword=0
else
  echo "Passwords do not match!"
  exit 1
fi
echo " "
dscl . create /Users/$UserName UniqueID $NextID
dscl . create /Users/$UserName PrimaryGroupID $PrimaryGroupID
dscl . create /Users/$UserName UserShell /bin/bash
dscl . create /Users/$UserName NFSHomeDirectory /Users/$UserName
createhomedir -u $UserName -c

echo " "
echo "New user 'dscl . -list /Users UniqueID | awk '{print $1}' | grep -w $UserName' has been created with unique ID 'dscl . -list /Users UniqueID | grep -w $UserName | awk '{print $2}''"

puedes obtener el mismo en my gist

    
respondido por el Igor Voltaic 15.05.2018 - 23:44

Lea otras preguntas en las etiquetas