Tutoriel Linux

Usuarios de Linux: comandos útiles para listar cuentas e identificar el acceso.

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Cuando se toma el control de un servidor Linux, la primera pregunta no siempre es “¿quién está conectado ahora?”. La verdadera pregunta suele ser: qué cuentas todavía existenQuiénes pueden iniciar sesión y quiénes tienen permisos confidenciales.

Ilustración de Tux frente a un servidor con cuentas de usuario, una lupa y candados de seguridad.
La elaboración de un listado de cuentas de Linux ayuda a identificar el acceso de personas, grupos sensibles y claves SSH olvidadas.

En esta guía, enumeraremos a los usuarios de forma ordenada, sin entrar en pánico. /etc/passwdLuego, identifica las cuentas que debes revisar primero. Te lo advierto: no borres nada solo porque un nombre te parezca extraño. En Linux, muchas cuentas son para servicios.

Lea el archivo /etc/passwd sin confundir la cuenta del sistema con la cuenta del usuario humano.

el archivo /etc/passwd Muestra una lista de las cuentas conocidas localmente. No contiene contraseñas en texto plano, pero proporciona información útil: nombre de cuenta, UID, GID, directorio principal y shell.

cat /etc/passwd

Una línea se ve así:

nathan:x:1000:1000:Nathan Martin:/home/nathan:/bin/bash

Los campos están separados por dos puntos. Para una primera impresión, fíjese en el nombre, el UID, el directorio principal y el intérprete de comandos:

cortar -d: -f1,3,6,7 /etc/passwd

En muchas distribuciones, las cuentas de usuario comienzan con el UID. milLas cuentas del sistema a menudo tienen un UID más bajo o un shell como /usr/sbin/nologin O /bin/falseNo es una regla universal, pero es un buen primer filtro.

awk -F: '$3 >= 1000 && $3 < 60000 {print $1, $3, $6, $7}' /etc/passwd

La página del manual de contraseña(5) Describe en detalle el formato exacto del archivo. Consérvelo si necesita auditar un servidor antiguo o una distribución algo inusual.

Prefiero getent cuando las cuentas no son solo locales.

En una posición simple, /etc/passwd A menudo esto es suficiente. En un servidor integrado con LDAP, Active Directory, SSSD u otro directorio, puede estar incompleto. En ese caso, utilice getent, que consulta las bases de datos configuradas por el sistema.

obtener contraseña

Para consultar una cuenta específica:

obtener contraseña nathan

Y para generar una lista más legible de cuentas con UID de usuario:

getent passwd | awk -F: '$3 >= 1000 && $3 < 60000 {print $1, $3, $6, $7}'

Prefiero este método en máquinas corporativas porque evita la suposición de que una cuenta no existe simplemente porque no está escrita en el archivo local. El comando está documentado en getent(1).

Verifique los grupos y permisos confidenciales.

Listar las cuentas es bueno. Saber cuáles pueden causar daño es mejor. Empiece con un usuario específico con identificación :

identificación nathan
grupos nathan

Verás el UID, el grupo principal y los grupos secundarios. Los grupos que debes observar detenidamente dependen de la distribución, pero sudo, rueda, adm, estibador o ciertos grupos de aplicaciones pueden proporcionar mucho más que un simple acceso de usuario.

grupo getent sudo
rueda de grupo getent
Grupo getent docker
administrador del grupo getent

Si aparece una cuenta en sudo O ruedaCompruebe también la configuración de sudoers. Una cuenta antigua y olvidada con acceso de administrador es precisamente el tipo de detalle que le causará problemas más adelante. En este punto, nuestra guía para Dominar sudo en Linux Esta revisión inicial es un buen complemento.

Órdenes id(1) Y grupos(1) Siguen siendo sencillas, pero dan una idea rápida del alcance real de una cuenta.

Identifica las cuentas que pueden iniciar sesión

No todas las cuentas listadas son para iniciar sesión. Para aislar aquellas con una sesión interactiva activa, puede filtrar las sesiones:

contraseña getent | grep -E '/bin/(bash|sh|zsh|pescado)$'

Este filtro no es perfecto, pero proporciona una lista inicial para revisar. A continuación, compruebe si las cuentas tienen una carpeta personal:

getent passwd | awk -F: '$6 ~ /^/home/ {print $1, $6, $7}'
ls -1 /home

Si está auditando un servidor expuesto a través de SSH, compruebe también las claves presentes en los directorios de usuario:

sudo find /home -maxdepth 3 -path '*/.ssh/authorized_keys' -type f -ls

Una clave SSH en la cuenta incorrecta puede ser suficiente para mantener el acceso. Si necesita limpiar su configuración de autenticación, vuelva a leer nuestro artículo sobre Generación de una clave SSH en Ubuntu.

Comprueba las últimas conexiones sin sacar conclusiones precipitadas.

Para ver quién está en línea ahora:

OMS
w

Para la historia reciente:

último -a | cabeza
sudo lastlog | head -30

último registro Esto puede indicar que nunca se ha iniciado sesión en una cuenta, pero eso no es suficiente para demostrar que es inútil. Una cuenta podría usarse para un servicio, una tarea programada, una aplicación o podría haberse creado para un procedimiento de copia de seguridad. Utilice estos comandos como señales, no como una decisión automática. La página últimolog(8) especifica las opciones disponibles.

Si busca alguna anomalía tras una conexión sospechosa, complemente esta información con los registros del sistema:

sudo journalctl -u ssh -b
sudo journalctl -p warning..alert -b

nuestra guía para journalctl y los registros del último inicio puede ayudar a estructurar esta parte sin buscar al azar.

La pequeña lista de verificación que usaría antes de limpiar

  • Nombre exacto de la cuenta Anote el nombre, el UID, el directorio principal y el intérprete de comandos.
  • Grupos sensibles : control sudo, rueda, estibador, adm y grupos de aplicaciones.
  • Acceso SSH : buscar archivos claves_autorizadas y guarda una copia antes de realizar cualquier cambio.
  • Última actividad : cruz último, último registro y los periódicos, sin eliminarlos basándose en una sola pista.
  • Servicio relacionado : compruebe si la cuenta pertenece a un servicio o aplicación antes de desactivarla.

Si una cuenta parece realmente innecesaria, empieza por bloquearla o deshabilitar su inicio de sesión, no por eliminar su carpeta. En un servidor, siempre prefiero supervisar, probar los servicios y solo entonces limpiar. Es menos drástico, pero evita que una aplicación deje de funcionar porque una cuenta "desconocida" se usaba a diario.

sudo passwd -l old_account
sudo systemctl --failed
sudo journalctl -p warning..alert -b

Después de esta comprobación, tendrá una visión mucho más clara: cuentas humanas, cuentas del sistema, derechos de administrador, acceso SSH y actividad reciente. Para vincular esta comprobación a los servicios activos, puede utilizar la lista de servicios systemctl y ver qué es lo que realmente se está ejecutando en la máquina.

sudo apt update && sudo apt upgrade