Gestionar las cuentas de usuario en dispositivos macOS es una parte esencial de la administración de dispositivos empresariales. Con Applivery, los equipos TI pueden automatizar la creación de cuentas de administrador locales, actualizar credenciales y opcionalmente ocultar perfiles de usuario — garantizando una configuración consistente, una mayor seguridad y un esfuerzo manual reducido en toda la flota macOS.
La app del agente de Applivery para macOS debe estar activada en el dispositivo. Puedes obtener más información sobre ella aquí.
Para empezar, aprende a crear scripts siguiendo este enlace.
Asigna un nombre descriptivo al script y copia y pega el siguiente script en el editor, luego ajusta los parámetros necesarios:
USERNAME (
username): El nombre corto de la cuenta a crear.FULLNAME (
Full Name): El nombre completo de visualización del usuario.PASSWORD (
password): La contraseña que se asignará al usuario.HIDDEN (
no): Cambia ayessi quieres que la cuenta de usuario quede oculta en la ventana de inicio de sesión.
#!/bin/sh
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# User details
USERNAME="username"
FULLNAME="Full Name"
PASSWORD="password"
HIDDEN="no" # Change to "yes" if you want the user to be hidden
# Function to check if user exists
check_user_exists() {
dscl . -list /Users | grep -q "^$USERNAME#!/bin/sh
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# User details
USERNAME="username"
FULLNAME="Full Name"
PASSWORD="password"
HIDDEN="no" # Change to "yes" if you want the user to be hidden
# Function to check if user exists
check_user_exists() {
dscl . -list /Users | grep -q "^$USERNAME#!/bin/sh
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# User details
USERNAME="username"
FULLNAME="Full Name"
PASSWORD="password"
HIDDEN="no" # Change to "yes" if you want the user to be hidden
# Function to check if user exists
check_user_exists() {
dscl . -list /Users | grep -q "^$USERNAME#!/bin/sh
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# User details
USERNAME="username"
FULLNAME="Full Name"
PASSWORD="password"
HIDDEN="no" # Change to "yes" if you want the user to be hidden
# Function to check if user exists
check_user_exists() {
dscl . -list /Users | grep -q "^$USERNAME#!/bin/sh
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# User details
USERNAME="username"
FULLNAME="Full Name"
PASSWORD="password"
HIDDEN="no" # Change to "yes" if you want the user to be hidden
# Function to check if user exists
check_user_exists() {
dscl . -list /Users | grep -q "^$USERNAME#!/bin/sh
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# User details
USERNAME="username"
FULLNAME="Full Name"
PASSWORD="password"
HIDDEN="no" # Change to "yes" if you want the user to be hidden
# Function to check if user exists
check_user_exists() {
dscl . -list /Users | grep -q "^$USERNAME#!/bin/sh
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# User details
USERNAME="username"
FULLNAME="Full Name"
PASSWORD="password"
HIDDEN="no" # Change to "yes" if you want the user to be hidden
# Function to check if user exists
check_user_exists() {
dscl . -list /Users | grep -q "^$USERNAME#!/bin/sh
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# User details
USERNAME="username"
FULLNAME="Full Name"
PASSWORD="password"
HIDDEN="no" # Change to "yes" if you want the user to be hidden
# Function to check if user exists
check_user_exists() {
dscl . -list /Users | grep -q "^$USERNAME#!/bin/sh
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
# User details
USERNAME="username"
FULLNAME="Full Name"
PASSWORD="password"
HIDDEN="no" # Change to "yes" if you want the user to be hidden
# Function to check if user exists
check_user_exists() {
dscl . -list /Users | grep -q "^$USERNAMEquot;
return $?
}
# Function to check if user is hidden
is_user_hidden() {
dscl . -read /Users/$USERNAME IsHidden 2>/dev/null | grep -q "1"
return $?
}
# Function to hide user
hide_user() {
sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add $USERNAME
sudo chown root:wheel /Library/Preferences/com.apple.loginwindow.plist
}
# Function to unhide user
unhide_user() {
sudo defaults delete /Library/Preferences/com.apple.loginwindow HiddenUsersList
}
# Function to update password
update_password() {
sudo dscl . -passwd /Users/$USERNAME "$PASSWORD"
}
# Check if user exists
if check_user_exists; then
echo "Usuario $USERNAME ya existe."
# Update password automatically
update_password
echo "Contraseña actualizada para $USERNAME"
# Check and update hidden status if needed
current_hidden=$(is_user_hidden && echo "yes" || echo "no")
if [ "$current_hidden" != "$HIDDEN" ]; then
if [ "$HIDDEN" = "yes" ]; then
hide_user
echo "Usuario $USERNAME ha sido ocultado"
else
unhide_user
echo "Usuario $USERNAME ha sido des-ocultado"
fi
fi
else
# Create new user
if [ "$HIDDEN" = "yes" ]; then
HIDDEN_FLAG="-hidden"
else
HIDDEN_FLAG=""
fi
# Create the user with or without the hidden option
sysadminctl -addUser "$USERNAME" -fullName "$FULLNAME" -password "$PASSWORD" -admin $HIDDEN_FLAG
echo "Usuario $USERNAME creado exitosamente"
fi
quot;
return $?
}
# Function to check if user is hidden
is_user_hidden() {
dscl . -read /Users/$USERNAME IsHidden 2>/dev/null | grep -q "1"
return $?
}
# Function to hide user
hide_user() {
sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add $USERNAME
sudo chown root:wheel /Library/Preferences/com.apple.loginwindow.plist
}
# Function to unhide user
unhide_user() {
sudo defaults delete /Library/Preferences/com.apple.loginwindow HiddenUsersList
}
# Function to update password
update_password() {
sudo dscl . -passwd /Users/$USERNAME "$PASSWORD"
}
# Check if user exists
if check_user_exists; then
echo "Usuario $USERNAME ya existe."
# Update password automatically
update_password
echo "Contraseña actualizada para $USERNAME"
# Check and update hidden status if needed
current_hidden=$(is_user_hidden && echo "yes" || echo "no")
if [ "$current_hidden" != "$HIDDEN" ]; then
if [ "$HIDDEN" = "yes" ]; then
hide_user
echo "Usuario $USERNAME ha sido ocultado"
else
unhide_user
echo "Usuario $USERNAME ha sido des-ocultado"
fi
fi
else
# Create new user
if [ "$HIDDEN" = "yes" ]; then
HIDDEN_FLAG="-hidden"
else
HIDDEN_FLAG=""
fi
# Create the user with or without the hidden option
sysadminctl -addUser "$USERNAME" -fullName "$FULLNAME" -password "$PASSWORD" -admin $HIDDEN_FLAG
echo "Usuario $USERNAME creado exitosamente"
fi
quot;
return $?
}
# Function to check if user is hidden
is_user_hidden() {
dscl . -read /Users/$USERNAME IsHidden 2>/dev/null | grep -q "1"
return $?
}
# Function to hide user
hide_user() {
sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add $USERNAME
sudo chown root:wheel /Library/Preferences/com.apple.loginwindow.plist
}
# Function to unhide user
unhide_user() {
sudo defaults delete /Library/Preferences/com.apple.loginwindow HiddenUsersList
}
# Function to update password
update_password() {
sudo dscl . -passwd /Users/$USERNAME "$PASSWORD"
}
# Check if user exists
if check_user_exists; then
echo "Usuario $USERNAME ya existe."
# Update password automatically
update_password
echo "Contraseña actualizada para $USERNAME"
# Check and update hidden status if needed
current_hidden=$(is_user_hidden && echo "yes" || echo "no")
if [ "$current_hidden" != "$HIDDEN" ]; then
if [ "$HIDDEN" = "yes" ]; then
hide_user
echo "Usuario $USERNAME ha sido ocultado"
else
unhide_user
echo "Usuario $USERNAME ha sido des-ocultado"
fi
fi
else
# Create new user
if [ "$HIDDEN" = "yes" ]; then
HIDDEN_FLAG="-hidden"
else
HIDDEN_FLAG=""
fi
# Create the user with or without the hidden option
sysadminctl -addUser "$USERNAME" -fullName "$FULLNAME" -password "$PASSWORD" -admin $HIDDEN_FLAG
echo "Usuario $USERNAME creado exitosamente"
fi
quot;
return $?
}
# Function to check if user is hidden
is_user_hidden() {
dscl . -read /Users/$USERNAME IsHidden 2>/dev/null | grep -q "1"
return $?
}
# Function to hide user
hide_user() {
sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add $USERNAME
sudo chown root:wheel /Library/Preferences/com.apple.loginwindow.plist
}
# Function to unhide user
unhide_user() {
sudo defaults delete /Library/Preferences/com.apple.loginwindow HiddenUsersList
}
# Function to update password
update_password() {
sudo dscl . -passwd /Users/$USERNAME "$PASSWORD"
}
# Check if user exists
if check_user_exists; then
echo "Usuario $USERNAME ya existe."
# Update password automatically
update_password
echo "Contraseña actualizada para $USERNAME"
# Check and update hidden status if needed
current_hidden=$(is_user_hidden && echo "yes" || echo "no")
if [ "$current_hidden" != "$HIDDEN" ]; then
if [ "$HIDDEN" = "yes" ]; then
hide_user
echo "Usuario $USERNAME ha sido ocultado"
else
unhide_user
echo "Usuario $USERNAME ha sido des-ocultado"
fi
fi
else
# Create new user
if [ "$HIDDEN" = "yes" ]; then
HIDDEN_FLAG="-hidden"
else
HIDDEN_FLAG=""
fi
# Create the user with or without the hidden option
sysadminctl -addUser "$USERNAME" -fullName "$FULLNAME" -password "$PASSWORD" -admin $HIDDEN_FLAG
echo "Usuario $USERNAME creado exitosamente"
fi
quot;
return $?
}
# Function to check if user is hidden
is_user_hidden() {
dscl . -read /Users/$USERNAME IsHidden 2>/dev/null | grep -q "1"
return $?
}
# Function to hide user
hide_user() {
sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add $USERNAME
sudo chown root:wheel /Library/Preferences/com.apple.loginwindow.plist
}
# Function to unhide user
unhide_user() {
sudo defaults delete /Library/Preferences/com.apple.loginwindow HiddenUsersList
}
# Function to update password
update_password() {
sudo dscl . -passwd /Users/$USERNAME "$PASSWORD"
}
# Check if user exists
if check_user_exists; then
echo "Usuario $USERNAME ya existe."
# Update password automatically
update_password
echo "Contraseña actualizada para $USERNAME"
# Check and update hidden status if needed
current_hidden=$(is_user_hidden && echo "yes" || echo "no")
if [ "$current_hidden" != "$HIDDEN" ]; then
if [ "$HIDDEN" = "yes" ]; then
hide_user
echo "Usuario $USERNAME ha sido ocultado"
else
unhide_user
echo "Usuario $USERNAME ha sido des-ocultado"
fi
fi
else
# Create new user
if [ "$HIDDEN" = "yes" ]; then
HIDDEN_FLAG="-hidden"
else
HIDDEN_FLAG=""
fi
# Create the user with or without the hidden option
sysadminctl -addUser "$USERNAME" -fullName "$FULLNAME" -password "$PASSWORD" -admin $HIDDEN_FLAG
echo "Usuario $USERNAME creado exitosamente"
fi
quot;
return $?
}
# Function to check if user is hidden
is_user_hidden() {
dscl . -read /Users/$USERNAME IsHidden 2>/dev/null | grep -q "1"
return $?
}
# Function to hide user
hide_user() {
sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add $USERNAME
sudo chown root:wheel /Library/Preferences/com.apple.loginwindow.plist
}
# Function to unhide user
unhide_user() {
sudo defaults delete /Library/Preferences/com.apple.loginwindow HiddenUsersList
}
# Function to update password
update_password() {
sudo dscl . -passwd /Users/$USERNAME "$PASSWORD"
}
# Check if user exists
if check_user_exists; then
echo "Usuario $USERNAME ya existe."
# Update password automatically
update_password
echo "Contraseña actualizada para $USERNAME"
# Check and update hidden status if needed
current_hidden=$(is_user_hidden && echo "yes" || echo "no")
if [ "$current_hidden" != "$HIDDEN" ]; then
if [ "$HIDDEN" = "yes" ]; then
hide_user
echo "Usuario $USERNAME ha sido ocultado"
else
unhide_user
echo "Usuario $USERNAME ha sido des-ocultado"
fi
fi
else
# Create new user
if [ "$HIDDEN" = "yes" ]; then
HIDDEN_FLAG="-hidden"
else
HIDDEN_FLAG=""
fi
# Create the user with or without the hidden option
sysadminctl -addUser "$USERNAME" -fullName "$FULLNAME" -password "$PASSWORD" -admin $HIDDEN_FLAG
echo "Usuario $USERNAME creado exitosamente"
fi
quot;
return $?
}
# Function to check if user is hidden
is_user_hidden() {
dscl . -read /Users/$USERNAME IsHidden 2>/dev/null | grep -q "1"
return $?
}
# Function to hide user
hide_user() {
sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add $USERNAME
sudo chown root:wheel /Library/Preferences/com.apple.loginwindow.plist
}
# Function to unhide user
unhide_user() {
sudo defaults delete /Library/Preferences/com.apple.loginwindow HiddenUsersList
}
# Function to update password
update_password() {
sudo dscl . -passwd /Users/$USERNAME "$PASSWORD"
}
# Check if user exists
if check_user_exists; then
echo "Usuario $USERNAME ya existe."
# Update password automatically
update_password
echo "Contraseña actualizada para $USERNAME"
# Check and update hidden status if needed
current_hidden=$(is_user_hidden && echo "yes" || echo "no")
if [ "$current_hidden" != "$HIDDEN" ]; then
if [ "$HIDDEN" = "yes" ]; then
hide_user
echo "Usuario $USERNAME ha sido ocultado"
else
unhide_user
echo "Usuario $USERNAME ha sido des-ocultado"
fi
fi
else
# Create new user
if [ "$HIDDEN" = "yes" ]; then
HIDDEN_FLAG="-hidden"
else
HIDDEN_FLAG=""
fi
# Create the user with or without the hidden option
sysadminctl -addUser "$USERNAME" -fullName "$FULLNAME" -password "$PASSWORD" -admin $HIDDEN_FLAG
echo "Usuario $USERNAME creado exitosamente"
fi
quot;
return $?
}
# Function to check if user is hidden
is_user_hidden() {
dscl . -read /Users/$USERNAME IsHidden 2>/dev/null | grep -q "1"
return $?
}
# Function to hide user
hide_user() {
sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add $USERNAME
sudo chown root:wheel /Library/Preferences/com.apple.loginwindow.plist
}
# Function to unhide user
unhide_user() {
sudo defaults delete /Library/Preferences/com.apple.loginwindow HiddenUsersList
}
# Function to update password
update_password() {
sudo dscl . -passwd /Users/$USERNAME "$PASSWORD"
}
# Check if user exists
if check_user_exists; then
echo "Usuario $USERNAME ya existe."
# Update password automatically
update_password
echo "Contraseña actualizada para $USERNAME"
# Check and update hidden status if needed
current_hidden=$(is_user_hidden && echo "yes" || echo "no")
if [ "$current_hidden" != "$HIDDEN" ]; then
if [ "$HIDDEN" = "yes" ]; then
hide_user
echo "Usuario $USERNAME ha sido ocultado"
else
unhide_user
echo "Usuario $USERNAME ha sido des-ocultado"
fi
fi
else
# Create new user
if [ "$HIDDEN" = "yes" ]; then
HIDDEN_FLAG="-hidden"
else
HIDDEN_FLAG=""
fi
# Create the user with or without the hidden option
sysadminctl -addUser "$USERNAME" -fullName "$FULLNAME" -password "$PASSWORD" -admin $HIDDEN_FLAG
echo "Usuario $USERNAME creado exitosamente"
fi
quot;
return $?
}
# Function to check if user is hidden
is_user_hidden() {
dscl . -read /Users/$USERNAME IsHidden 2>/dev/null | grep -q "1"
return $?
}
# Function to hide user
hide_user() {
sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add $USERNAME
sudo chown root:wheel /Library/Preferences/com.apple.loginwindow.plist
}
# Function to unhide user
unhide_user() {
sudo defaults delete /Library/Preferences/com.apple.loginwindow HiddenUsersList
}
# Function to update password
update_password() {
sudo dscl . -passwd /Users/$USERNAME "$PASSWORD"
}
# Check if user exists
if check_user_exists; then
echo "Usuario $USERNAME ya existe."
# Update password automatically
update_password
echo "Contraseña actualizada para $USERNAME"
# Check and update hidden status if needed
current_hidden=$(is_user_hidden && echo "yes" || echo "no")
if [ "$current_hidden" != "$HIDDEN" ]; then
if [ "$HIDDEN" = "yes" ]; then
hide_user
echo "Usuario $USERNAME ha sido ocultado"
else
unhide_user
echo "Usuario $USERNAME ha sido des-ocultado"
fi
fi
else
# Create new user
if [ "$HIDDEN" = "yes" ]; then
HIDDEN_FLAG="-hidden"
else
HIDDEN_FLAG=""
fi
# Create the user with or without the hidden option
sysadminctl -addUser "$USERNAME" -fullName "$FULLNAME" -password "$PASSWORD" -admin $HIDDEN_FLAG
echo "Usuario $USERNAME creado exitosamente"
fi
A continuación, dirígete a cualquiera de tus Políticas 1 y selecciona la sección Scripts 2 desde el menú lateral izquierdo. Haz clic en el botón + Añadir Script 3.

A continuación, selecciona el script escribiendo su nombre, elige el método de ejecución y añade los argumentos necesarios.
Dependiendo del método de ejecución seleccionado, el script se ejecutará automáticamente en modo Loop o Once, o puede activarse manualmente desde la sección Acciones dentro del agente de Applivery cuando se configure como On-demand.

Este método automatizado para crear usuarios administradores en macOS ayuda a estandarizar el aprovisionamiento de dispositivos y garantiza una postura de seguridad unificada en toda la organización. El script gestiona de forma inteligente tanto la creación de nuevas cuentas como la actualización de las existentes, lo que lo convierte en una herramienta flexible y potente para múltiples escenarios de despliegue.
Aprovechando Applivery y la automatización mediante scripts, los equipos TI pueden gestionar cuentas de administrador de forma eficiente a escala, reducir la carga de trabajo repetitivo y mantener una configuración consistente en todos los dispositivos macOS gestionados. Ya sea para desplegar nuevo hardware o actualizar los despliegues actuales, este flujo de trabajo proporciona una forma fiable, segura y repetible de aprovisionar usuarios administradores en entornos macOS.