logo user

Para encontrar todos los usuarios disponibles en un sistema MacOS desde la línea de comandos, se puede utilizar un script en Bash. El sistema operativo MacOS, como otros sistemas de tipo Unix, almacena la información de los usuarios en varios archivos del sistema, principalmente en /etc/passwd. MacOS utiliza Open Directory para la gestión de usuarios, por lo que se pueden usar comandos como dscl para consultar esta información.


Mostrar los usuarios desde el CLI

El siguiente script en Bash muestra todos los usuarios disponibles en tu sistema MacOS, junto con sus respectivos números de ID de usuario (UID):

#!/bin/bash

# Muestra todos los usuarios del sistema con su UID
echo "Usuarios y sus UIDs en este sistema macOS:"

# Recorre la lista de usuarios obtenidos con dscl
for user in $(dscl . list /Users | grep -v '^_'); do
    # Obtiene el UID del usuario actual
    uid=$(dscl . -read /Users/$user UniqueID | awk '{ print $2 }')
    
    # Muestra el nombre de usuario y su UID
    echo "Usuario: $user, UID: $uid"
done

Para ejecutar este script:

  • Abre el Terminal en tu Mac.
  • Crea un archivo para el script, por ejemplo, mac_lista_usuarios.sh.
  • Pega el código del script en este archivo usando un editor de texto.
  • Dale permisos de ejecución al archivo con el comando chmod +x mac_lista_usuarios.sh
  • Ejecuta el script con ./mac_lista_usuarios.sh
$ ./mac_lista_usuarios.sh
Usuarios y sus UIDs en este sistema macOS:
Usuario: daemon, UID: 1
Usuario: luis, UID: 501   <== Mi usuario
Usuario: pruebas, UID: 502   <== USUARIO para pruebas
Usuario: nobody, UID: -2
Usuario: root, UID: 0

Este script lista todos los usuarios registrados en el sistema, excluyendo aquellos cuyos nombres de usuario comienzan con un guion bajo (_), que suelen ser cuentas de sistema o de servicios. Utiliza el comando dscl que interactúa con Open Directory. El script podría modificarse para mostrar más información de cada usuario si fuera necesario.


Comando CLI para forzar el logout de otro usuario

En alguna ocasión puedo necesitarlo, por ejemplo cuando estar realizando tareas administrativas de tu Mac en remoto, te conectas vía ssh, sin acceso al GUI y con la necesidad de echar al resto de usuarios.

Asumiendo que mi usuario tiene derechos de administración, para hacer logout del otro usuario bastaría con averiguar cuál es el UID del otro usuario usando el comando anterior ./macusers.sh y después ejecutar el siguiente script:

#!/bin/bash

# Verificar si se ha proporcionado un UID
if [ "$#" -ne 1 ]; then
    echo "Uso: $0 <UID>"
    exit 1
fi

UID=$1

# Hacer logout del usuario con el UID proporcionado
sudo launchctl bootout user /$UID

Para ejecutar este script:

  • Abre el Terminal en tu Mac.
  • Crea un archivo para el script, por ejemplo, mac_logout_usuario.sh.
  • Pega el código del script en este archivo usando un editor de texto.
  • Dale permisos de ejecución al archivo con el comando chmod +x mac_logout_usuario.sh
  • Ejecuta el script con ./mac_logout_usuario.sh 502

Este comando utiliza launchctl, una herramienta para interactuar con el MacOS y terminar la sesión del usuario especificado. Ten en cuenta que forzar el cierre de sesión de otro usuario puede resultar en la pérdida de datos no guardados en sus aplicaciones abiertas, así que úsalo con precaución.

Un ejemplo completo sería:

$ ./mac_lista_usuarios.sh
Usuarios y sus UIDs en este sistema macOS:
Usuario: daemon, UID: 1
Usuario: luis, UID: 501
Usuario: pruebas, UID: 502   <== USUARIO DESTINO LOGOUT
Usuario: nobody, UID: -2
Usuario: root, UID: 0


$ ./mac_logout_usuario.sh 502