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


Me gustaría poder crear nuevos usuarios en Mac OS X 10.5 de forma remota después de ssh'ing en la máquina. ¿Cómo hago esto?


84
2018-06-05 18:07


origen


Todavía no tengo la reputación de responder, pero si estás buscando cómo hacer esto desde single_user modo (un restablecimiento de seguridad), entonces tendrás que reiniciar presionando Command-S, obtenga acceso de escritura al disco según los detalles en pantalla, y luego rm /var/db/.AppleSetupDone lo que te permitirá crear una nueva cuenta de administrador. Espero que esto ayude a alguien - New Alexandria


Respuestas:


Utilice el comando dscl. Este ejemplo crearía el usuario "luser", así:

dscl . -create /Users/luser
dscl . -create /Users/luser UserShell /bin/bash
dscl . -create /Users/luser RealName "Lucius Q. User"
dscl . -create /Users/luser UniqueID "1010"
dscl . -create /Users/luser PrimaryGroupID 80
dscl . -create /Users/luser NFSHomeDirectory /Users/luser

Luego puede usar passwd para cambiar la contraseña del usuario, o usar:

dscl . -passwd /Users/luser password

Tendrá que crear / Users / luser para el directorio de inicio del usuario y cambiar la propiedad para que el usuario pueda acceder a él, y asegurarse de que UniqueID sea, de hecho, único.

Esta línea agregará al usuario al grupo del administrador:

dscl . -append /Groups/admin GroupMembership luser

80
2018-06-05 18:15



¿Cómo me aseguro de que el UID sea único? - JR Lawhorne
No hay forma automática; si ejecuta esta secuencia de comandos, simplemente puede hacer que ejecute el comando "id ####" y asegurarse de que devuelva "No hay tal usuario" o algo así. - palmer
Recuerda usar sudo si no tienes permisos. - Raffi Khatchadourian
Por cierto, ya que es mucho más detallado de lo que debería ser, Yo porté estos comandos en el useradd sintaxis. - Xiong Chiamiov
Tenga en cuenta que PrimaryGroupID 80 es admin, asi que luser puedo usar sudo Incluso si no lo añades al grupo de administradores. - ruslo


(Esta respuesta debe considerarse un addendum para completar algunos espacios en blanco en el procedimiento de Palmer)

Para elegir un UniqueID no utilizado para su nuevo usuario, puede usar:

maxid=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
newid=$((maxid+1))

... luego use la secuencia de comandos dscl que palmer dio para crear la cuenta, y luego cree el directorio de inicio del nuevo usuario con:

cp -R /System/Library/User\ Template/English.lproj /Users/luser
chown -R luser:staff /Users/luser

(hay un comando createhomedir, pero no funcionó cuando lo probé).


20
2018-06-05 20:21



Creé una secuencia de comandos que llena nuestro Open Directory Master con nuevos usuarios, y luego llama sudo createhomedir -s (IIRC) en Open Directory Replicas / Fileshares, y felizmente crean los directorios principales. - Clinton Blackmore
dscl -list se limita a 256 resultados, por lo que si tiene más de 256 usuarios, esta técnica no podrá garantizar un UID único. - smokris


Si tiene que crear un grupo de usuarios, es posible crear un archivo de texto estructurado y pasarlo a dsimport para hacer el trabajo.

De Apple Administración de línea de comando Guía tiene todo un capítulo sobre usuarios y grupos.


8
2018-06-05 19:19



Impar. Apple parece haber eliminado v10.5 del documento al que te referiste inicialmente, pero v10.3 mantenido y un menos completo Versión Snow Leopard - chb


Otra forma de elegir y elegir un ID de usuario único antes de crear una cuenta es simplemente mirar a través de la lista y verificar que la que desea usar no esté allí:

 sudo dscl . list /Users uid
 sudo dscl . list groups gid

Práctico si necesitas usar una cierta identificación


7
2017-11-30 16:10



dscl -list se limita a 256 resultados, por lo que si tiene más de 256 usuarios, esta técnica no podrá garantizar un UID único. - smokris
Sí, ese es el camino más corto para agregar ese usuario aquí ahora mismo, solo grep con el id Tenías en mente usarlo para el nuevo usuario - yair


He aprovechado las diferentes respuestas aquí para encontrar lo que creo que es un buen script para crear cuentas de usuario. Es cierto que esto no está diseñado para ejecutar un comando a la vez desde ssh; está más diseñado para ser un script ejecutado al compilar una imagen de OS X basada en un paquete (tal como fue creado por Casper Imaging o InstaDMG).

#!/bin/bash
# This script creates a user account under Mac OS X
# (tested with 10.5 and 10.6; likely works with 10.4 but not earlier)
# Written by Clinton Blackmore, based on work at
# http://serverfault.com/questions/20702

# === Typically, this is all you need to edit ===

USERNAME=joeadmin
FULLNAME="Joe Admin"
PASSWORD="hard_to_hack"

# A list of (secondary) groups the user should belong to
# This makes the difference between admin and non-admin users.
# Leave only one uncommented
#SECONDARY_GROUPS=""  # for a non-admin user
SECONDARY_GROUPS="admin _lpadmin _appserveradm _appserverusr" # for an admin user

# ====

if [[ $UID -ne 0 ]]; then echo "Please run $0 as root." && exit 1; fi

# Find out the next available user ID
MAXID=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
USERID=$((MAXID+1))

# Create the user account
dscl . -create /Users/$USERNAME
dscl . -create /Users/$USERNAME UserShell /bin/bash
dscl . -create /Users/$USERNAME RealName "$FULLNAME"
dscl . -create /Users/$USERNAME UniqueID "$USERID"
dscl . -create /Users/$USERNAME PrimaryGroupID 20
dscl . -create /Users/$USERNAME NFSHomeDirectory /Users/$USERNAME

dscl . -passwd /Users/$USERNAME $PASSWORD


# Add use to any specified groups
for GROUP in $SECONDARY_GROUPS ; do
    dseditgroup -o edit -t user -a $USERNAME $GROUP
done

# Create the home directory
createhomedir -c > /dev/null

echo "Created user #$USERID: $USERNAME ($FULLNAME)"

La secuencia de comandos le permite especificar a qué grupos debe pertenecer un usuario. Me parece que esto podría diferir dependiendo de la versión de OS X que esté ejecutando. Obtengo diferentes resultados cuando corro id como administrador en OS X 10.6 que yo cuando ejecuto como administrador en OS X 10.5.


7
2018-01-14 23:02



En otra respuesta, Elliott advierte que el comando 'createhomedir -c', hacia el final, creará cuentas para todos los usuarios en el directorio al que está vinculado. (La opción '-c', en la página de manual, 'crea directorios de inicio solo para rutas locales de origen'). Hay otra opción, '-u nombre de usuario', que puede funcionar mejor. - Clinton Blackmore
hola estoy usando el script de arriba Entonces agrega mi nuevo usuario, pero cuando el usuario se conecta a su calendario, ¡dice que no tiene los permisos! Me puedes ayudar ?
@jimmy: Recomiendo hacer una nueva pregunta en serverfault y un enlace a esta respuesta en lugar de solo hacer una pregunta en los comentarios, que rara vez se verán. Espero que los permisos sean correctos. Usar 'chown' y 'chmod' puede ayudar si puede identificar un archivo que no tiene los permisos correctos ... pero no sé cuál sería. - Clinton Blackmore
dscl -list se limita a 256 resultados, por lo que si tiene más de 256 usuarios, esta técnica no podrá garantizar un UID único. - smokris


Yo empecé una pequeña envoltura acerca de dscl eso toma useraddLos parámetros no están completos (ni creo que puedan serlo, ya que algunas cosas no son posibles en OS X), pero lo utilicé para crear usuarios.

El marco está ahí para todos los parámetros, por lo que si desea aprovechar las increíbles funciones sociales de GitHub, es fácil de hacer.


4
2017-10-17 06:15