Favicon

You are here: Home > Gestión de Dispositivos > Apple > macOS > Scripts > Restringir permisos de administrador

Cómo restringir los derechos de administrador y aplicar el mínimo privilegio

Script macOS que rebaja todas las cuentas de administrador local a usuario estándar excepto una cuenta TI protegida, aplicando el mínimo privilegio en toda tu flota.

5 min read

TL;DR

Automatiza tareas repetitivas en dispositivos gestionados usando scripts en Applivery para una gestión de dispositivos eficiente.

En la mayoría de los entornos corporativos, los privilegios de administrador se conceden durante la configuración inicial del dispositivo y nunca se revocan. Con el tiempo — nuevas contrataciones, reinscripciones e instalaciones de software — los usuarios acumulan privilegios que ya no necesitan. Esos privilegios se convierten en una superficie de ataque: instalaciones de software no autorizadas, controles de seguridad de endpoints eludidos, cambios accidentales en la configuración del sistema.

Este script aplica una base de mínimo privilegio en toda tu flota macOS. Rebaja automáticamente todas las cuentas de usuario locales a usuario estándar — excepto una cuenta TI de gestión designada que conserva sus privilegios de administrador. El script es seguro para ejecutar silenciosamente en todos los dispositivos y está diseñado para ser idempotente: ejecutarlo varias veces siempre produce el mismo resultado.

Warning

El agente de Applivery para macOS debe estar instalado y activo en el dispositivo. Obtén más información sobre el agente macOS.

Requisitos

Requisito Detalle
Plataforma macOS
Privilegios de ejecución Root (predeterminado en Applivery)
Cuenta protegida Una cuenta de administrador local debe existir en el dispositivo antes de ejecutar este script
Warning

Antes de desplegar este script, asegúrate de que la cuenta de gestión protegida (EXCLUDE_USER) existe en el dispositivo y ya tiene privilegios de administrador. Si no existe o no es administrador, el script se abortará como medida de seguridad para evitar bloquear el acceso al sistema.


Configuración

1
Crear el script

Una vez en el panel de Applivery, sigue los pasos descritos aquí para crear un script. Pega el siguiente script en el editor. Antes de guardar, establece la variable EXCLUDE_USER con el nombre corto de tu cuenta TI de gestión.

Variable Descripción Valor predeterminado
EXCLUDE_USER El nombre de usuario que debe conservar los derechos de administrador admin

Selecciona Bash como lenguaje, dale un nombre descriptivo (por ejemplo, Restringir derechos de administrador) y haz clic en Crear.

#!/bin/bash

# ---
# Title: Demote all local admins to standard (except EXCLUDE_USER)
# Description: Ensures only a specific local account has administrator privileges.
# Author: Applivery
# Version: 1.0.0
# ---

# ======== CONFIGURATION ========
EXCLUDE_USER="admin"
ADMIN_GROUP="admin"

# ======== FUNCTIONS ========
is_admin() {
  local user="$1"
  dseditgroup -o checkmember -m "$user" "$ADMIN_GROUP" &>/dev/null
  return $?
}

# ======== INITIAL CHECKS ========
if [[ $EUID -ne 0 ]]; then
  echo "Error: This script must be run with sudo"
  exit 1
fi

if ! id "$EXCLUDE_USER" &>/dev/null; then
  echo "Error: User '$EXCLUDE_USER' does not exist on this system."
  exit 1
fi

if ! is_admin "$EXCLUDE_USER"; then
  echo "WARNING: '$EXCLUDE_USER' is NOT an administrator. Aborting for safety."
  exit 1
fi

# ======== GET HUMAN USERS ========
users=$(dscl . list /Users | grep -v '^_' | while read -r user; do
  uid=$(dscl . read "/Users/$user" UniqueID | awk '{print $2}')
  if [[ "$uid" =~ ^[0-9]+$ && "$uid" -ge 501 ]]; then
    echo "$user"
  fi
done)

# ======== PROCESS EACH USER ========
echo "Processing local users..."
echo "──────────────────────────────────────────────"

count_changed=0
count_skipped=0

while IFS= read -r username; do
  [[ -z "$username" ]] && continue

  if [[ "$username" == "$EXCLUDE_USER" ]]; then
    echo "[SKIP] $username (intentionally excluded)"
    ((count_skipped++))
    continue
  fi

  if ! is_admin "$username"; then
    echo "[OK] $username → already standard (non-admin)"
    continue
  fi

  echo -n "[PROC] $username → removing admin rights... "

  if dseditgroup -o edit -d "$username" -t user "$ADMIN_GROUP" 2>/dev/null; then
    echo "SUCCESS"
    ((count_changed++))
  else
    echo "FAILED"
    echo "  → Could not remove admin rights (directory service issue?)"
  fi

done <<< "$users"

echo "──────────────────────────────────────────────"
echo "Summary:"
echo "  Users processed  : $(echo "$users" | wc -l | xargs)"
echo "  Demoted to standard : $count_changed"
echo "  Skipped (excluded)  : $count_skipped"
echo ""
echo "Protected user (should remain admin): $EXCLUDE_USER"

if is_admin "$EXCLUDE_USER"; then
  echo "✓ User '$EXCLUDE_USER' still has administrator privileges."
else
  echo "⚠ ATTENTION: '$EXCLUDE_USER' is NO LONGER an administrator."
  echo "  Restore admin rights manually:"
  echo "  sudo dseditgroup -o edit -a \"$EXCLUDE_USER\" -t user admin"
fi

exit 0
2
Asignar el script a un dispositivo

Ahora, navega a cualquiera de tus Dispositivos, selecciona la pestaña Scripts, haz clic en el botón + Asignar Script y selecciona el que acabas de crear.

Note

También puedes asignar scripts a Políticas. Para ello, navega a la sección Políticas, selecciona la política deseada y haz clic en la pestaña Scripts. El proceso será el mismo que al asignarlo directamente a un dispositivo individual.

3
Elegir el método de ejecución
Método Comportamiento ¿Recomendado?
Once Se ejecuta una vez por dispositivo. ✅ Adecuado para una remediación puntual en una flota existente.
Loop Se ejecuta repetidamente en el intervalo configurado (15m, 1h, 6h, 1d, 7d). ✅ Recomendado para una aplicación continua — detecta nuevas cuentas de administrador a medida que aparecen.
On demand Solo se ejecuta cuando se activa manualmente. ✅ Útil para auditorías puntuales iniciadas por TI.

La configuración recomendada es Loop con un intervalo diario o semanal para detectar y rebajar continuamente cualquier nueva cuenta de administrador. Usa Once para una remediación puntual en una flota existente.

Este script no requiere ningún argumento. La cuenta protegida se configura directamente en la variable EXCLUDE_USER dentro del script. Haz clic en Añadir para guardar la asignación.


Orden de despliegue recomendado

Al inscribir un nuevo dispositivo, la secuencia recomendada es:

  1. El dispositivo se inscribe en Applivery.
  2. El script Crear usuario administrador oculto se ejecuta para crear la cuenta TI de gestión.
  3. Este script se ejecuta para rebajar todos los demás usuarios locales a usuario estándar.

Esto garantiza que TI siempre conserve el acceso de gestión mientras los usuarios finales no pueden realizar cambios no autorizados en el sistema.

Tip

Ejecuta este script combinado con el script Crear usuario administrador oculto para garantizar que la cuenta de gestión siempre existe antes de aplicar la restricción.


Disponible en GitHub

Este script es parte del Repositorio público de scripts de Applivery. El mínimo privilegio es la primera línea de defensa — este script aplica esa política en toda tu flota en segundos.

Key Takeaways

  • Los scripts automatizan tareas repetitivas en dispositivos gestionados.
  • Applivery permite crear, subir y asignar scripts.
  • Hay varios métodos de ejecución disponibles (Once, Loop, On-demand).
  • Un repositorio público de scripts ofrece scripts listos para usar.

Este script rebaja todas las cuentas de usuario locales macOS a usuario estándar, excepto una cuenta TI de gestión designada, aplicando una base de mínimo privilegio.

Una cuenta de administrador local (especificada por `EXCLUDE_USER`) debe existir y tener privilegios de administrador en el dispositivo antes de ejecutar el script.

Edita la variable `EXCLUDE_USER` dentro del script con el nombre corto de tu cuenta TI de gestión que debe conservar sus privilegios de administrador.

El script se abortará como medida de seguridad para evitar bloquear el acceso al sistema.

Los métodos recomendados son "Loop" para una aplicación continua u "Once" para una remediación puntual.

Inscribe el dispositivo, ejecuta el script "Crear usuario administrador oculto", luego ejecuta el script "Restringir derechos de administrador".

El script está disponible en el Repositorio público de scripts de Applivery en GitHub.

No, el script no requiere ningún argumento. La cuenta protegida se configura directamente en la variable `EXCLUDE_USER`.

Last updated: April 18, 2026