Me gustaría poder crear nuevos usuarios en Mac OS X 10.5 de forma remota después de ingresar a la máquina. ¿Cómo hago esto?
Me gustaría poder crear nuevos usuarios en Mac OS X 10.5 de forma remota después de ingresar a la máquina. ¿Cómo hago esto?
Respuestas:
Use 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 asegúrese de que UniqueID sea de hecho único.
Esta línea agregará al usuario al grupo del administrador:
dscl . -append /Groups/admin GroupMembership luser
useradd
sintaxis.
PrimaryGroupID 80
es admin
así, luser
puede usarlo sudo
incluso si no lo agrega al grupo de administradores.
(Esta respuesta debe considerarse un apéndice 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 'BEGIN { max = 500; } { if ($2 > max) max = $2; } END { print max + 1; }')
newid=$((maxid+1))
... luego use la secuencia de comandos dscl que palmer le 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
if [[ "$(sw_vers -productVersion)" != 10.[0-5].* ]]; then
# Set ACL on Drop Box in 10.6 and later
chmod +a "user:luser allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit" /Users/luser/Public/Drop\ Box
fi
(hay un comando createhomedir, pero no funcionó cuando lo probé).
sudo createhomedir -s
(IIRC) en Open Directory Replicas / Fileshares, y felizmente crean los directorios de inicio.
dscl -list
está limitado a 256 resultados, por lo que si tiene más de 256 usuarios, esta técnica no garantizará un UID único.
Si tiene que crear un grupo de usuarios, es posible crear un archivo de texto estructurado y pasarlo dsimport
para hacer el trabajo.
La Guía de administración de línea de comandos de Apple tiene un capítulo completo sobre usuarios y grupos.
Otra forma de elegir una identificación de usuario única antes de crear una cuenta es simplemente revisar la lista y verificar que la que desea usar no esté allí:
sudo dscl . list /Users uid
sudo dscl . list groups gid
Útil si necesita usar una determinada identificación
dscl -list
está limitado a 256 resultados, por lo que si tiene más de 256 usuarios, esta técnica no garantizará un UID único.
grep
con lo id
que tenía en mente usar para el nuevo usuario
Aproveché las diferentes respuestas aquí para llegar a 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 cuando se compila una imagen de OS X basada en un paquete (como lo creó 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)"
El script le permite especificar a qué grupos debe pertenecer un usuario. Me parece que esto puede diferir dependiendo de la versión de OS X que esté ejecutando. Obtengo resultados diferentes cuando ejecuto id
como administrador en OS X 10.6 que cuando ejecuto como administrador en OS X 10.5.
dscl -list
está limitado a 256 resultados, por lo que si tiene más de 256 usuarios, esta técnica no garantizará un UID único.
Comencé un pequeño resumen sobre los parámetros de las dscl
tomas useradd
: no está completo (ni creo que pueda serlo, ya que algunas cosas no son posibles en OS X), pero lo usé para crear algunos usuarios.
El marco está disponible para todos los parámetros, por lo que si desea aprovechar las increíbles funciones sociales de GitHub, es fácil de hacer.
single_user
modo (un restablecimiento de seguridad), entonces deberá reiniciar presionandoCommand-S
, obtener acceso de escritura al disco según los detalles en pantalla y luego, lorm /var/db/.AppleSetupDone
que le permitirá crear una nueva cuenta de administrador. Espero que esto ayude a alguien