Introducción
El comando "su" (substitute user) en Linux es una herramienta poderosa que permite a los usuarios cambiar temporalmente a una cuenta de usuario diferente, a menudo la del usuario root, para realizar tareas administrativas. Sin embargo, pueden ocurrir fallos de autenticación de "su", lo que lleva a denegaciones de acceso y posibles riesgos de seguridad. Este tutorial le guiará a través del proceso de solución de problemas de fallos de autenticación de "su" en Linux, cubriendo las causas comunes, la configuración y las mejores prácticas para un uso seguro de "su".
Entendiendo el Comando Su y su Uso Básico
El comando su en Linux permite a los usuarios cambiar su identidad de usuario actual a otro usuario. Esto es particularmente útil para realizar tareas administrativas que requieren privilegios elevados.
Exploremos el uso básico del comando su y entendamos cómo funciona.
Uso Básico de Su
Abra una terminal en su entorno de máquina virtual (VM) de LabEx. Puede usar el comando su con la siguiente sintaxis:
su [options] [username]
Si ejecuta su sin especificar un nombre de usuario, por defecto se usa el usuario root:
su
Se le pedirá la contraseña de root. Sin embargo, en muchas distribuciones modernas de Linux, incluyendo Ubuntu, la cuenta root está deshabilitada por defecto por razones de seguridad.
Creemos un usuario de prueba para practicar:
sudo adduser testuser
Ingrese la información requerida cuando se le solicite. Para simplificar, puede usar "password" como contraseña para este usuario de prueba.
Ahora, intentemos cambiar a este usuario:
su testuser
Cuando se le solicite, ingrese la contraseña que creó para testuser. Una vez autenticado, su prompt cambiará, indicando que ahora está operando como testuser.
Para verificar que ha cambiado de usuario con éxito, ejecute:
whoami
La salida debería mostrar:
testuser
Para volver a su usuario original, simplemente escriba:
exit
Usando Su con Opciones
El comando su admite varias opciones. La más común es la opción - (guion), que proporciona un entorno de inicio de sesión completo:
su - testuser
Esto no solo cambia la identidad del usuario, sino que también:
- Cambia al directorio de inicio del usuario objetivo
- Configura las variables de entorno del usuario objetivo
- Proporciona un shell de inicio de sesión
Pruebe este comando y observe las diferencias:
pwd
La salida debería mostrar el directorio de inicio de testuser:
/home/testuser
Salga de testuser escribiendo:
exit
Esta comprensión básica del comando su nos ayudará a solucionar los fallos de autenticación en los siguientes pasos.
Fallos Comunes de Autenticación de Su y sus Causas
Al usar el comando su, podría encontrar fallos de autenticación por varias razones. Entender estos fallos es el primer paso para resolverlos.
Prueba de Fallos de Autenticación
Intentemos crear intencionalmente algunos fallos de autenticación para entenderlos mejor:
- Intente cambiar a testuser con una contraseña incorrecta:
su testuser
Ingrese una contraseña incorrecta. Verá un mensaje de error similar a:
su: Authentication failure
- Intente cambiar a un usuario que no existe:
su nonexistentuser
Verá un mensaje de error como:
su: user nonexistentuser does not exist
Causas Comunes de Fallos de Autenticación
1. Contraseña Incorrecta
La causa más común de fallo de autenticación es simplemente ingresar la contraseña incorrecta. Esto puede suceder debido a:
- Errores tipográficos
- Bloqueo de mayúsculas activado
- Olvidar la contraseña
2. Restricciones de Cuenta
Algunas cuentas pueden estar configuradas para evitar el inicio de sesión o tener contraseñas caducadas:
Modifiquemos nuestro usuario de prueba para demostrar esto:
sudo passwd -l testuser
Esto bloquea la contraseña para testuser. Ahora intente:
su testuser
Verá un fallo de autenticación incluso si ingresa la contraseña correcta.
Desbloquee la cuenta con:
sudo passwd -u testuser
3. Problemas de Configuración de PAM
El sistema de Módulos de Autenticación Enchufables (PAM, por sus siglas en inglés) controla la autenticación en Linux. Los problemas con la configuración de PAM pueden causar fallos de su.
Examinemos la configuración de PAM para el comando su:
cat /etc/pam.d/su
Este archivo contiene la configuración de PAM específica para el comando su. Busque líneas que puedan restringir el acceso, como:
auth required pam_wheel.so
Esta línea, si está descomentada, restringiría el acceso de su a los miembros del grupo wheel.
4. Problemas de Permisos con el Binario Su
El archivo binario del comando su debe tener los permisos correctos para funcionar correctamente:
ls -l $(which su)
La salida debería mostrar algo como:
-rwsr-xr-x 1 root root 71816 Apr 18 2022 /usr/bin/su
La s en los permisos indica que el bit setuid está configurado, lo que permite que el programa se ejecute con los privilegios de su propietario (root) en lugar del usuario que lo ejecuta.
5. Examinando los Registros de Autenticación
Al solucionar problemas de fallos de autenticación, verificar los registros del sistema puede proporcionar información valiosa:
sudo tail /var/log/auth.log
Este comando muestra los eventos de autenticación recientes, incluyendo los intentos fallidos de su.
Por ejemplo, un intento fallido de su podría mostrar una entrada como:
May 10 14:23:45 ubuntu su[12345]: FAILED su for root by labex
Entender estas causas comunes de fallos de autenticación de su le ayudará a identificar y resolver problemas de manera más efectiva en los siguientes pasos.
Configuración del Control de Acceso para el Comando Su
Linux proporciona varios mecanismos para controlar quién puede usar el comando su. En este paso, exploraremos cómo configurar estos controles de acceso para mejorar la seguridad.
Entendiendo la Configuración de PAM
El sistema de Módulos de Autenticación Enchufables (PAM, por sus siglas en inglés) es responsable de la autenticación en Linux. La configuración para el comando su se almacena en el archivo /etc/pam.d/su.
Examinemos este archivo en detalle:
cat /etc/pam.d/su
El archivo contiene varias directivas que controlan cómo se realiza la autenticación. Una línea importante a buscar es:
auth required pam_wheel.so
Si esta línea está descomentada (no comienza con #), restringe el acceso de su a los miembros del grupo wheel.
Restringiendo el Acceso de Su a Grupos Específicos
Podemos restringir el uso de su para cambiar a root a los miembros de un grupo específico. Esta es una práctica de seguridad común.
Primero, creemos un nuevo grupo llamado sugroup:
sudo groupadd sugroup
A continuación, agregue nuestro usuario de prueba a este grupo:
sudo usermod -aG sugroup testuser
Ahora, necesitamos modificar la configuración de PAM para restringir el acceso de su a los miembros de este grupo:
sudo cp /etc/pam.d/su /etc/pam.d/su.bak
Ahora, abra el archivo de configuración de PAM en el editor nano:
sudo nano /etc/pam.d/su
Busque una línea similar a:
## auth required pam_wheel.so
Descomente esta línea (elimine el ## al principio) y modifíquela para usar nuestro sugroup en lugar de wheel:
auth required pam_wheel.so group=sugroup
Presione Ctrl+O para guardar el archivo, luego Ctrl+X para salir de nano.
Probando la Configuración
Probemos nuestra configuración intentando usar su como un usuario que no está en sugroup.
Primero, cree otro usuario de prueba:
sudo adduser testuser2
Ingrese la información requerida cuando se le solicite.
Ahora, intente cambiar al usuario root usando testuser2:
su - testuser2
Ingrese la contraseña para testuser2 cuando se le solicite.
Ahora intente cambiar al usuario root:
su -
Debería recibir un mensaje de fallo de autenticación, incluso si ingresa la contraseña root correcta. Esto se debe a que testuser2 no es miembro de sugroup.
Ahora, vuelva a su usuario original:
exit
E intente usar su con testuser, que es miembro de sugroup:
su - testuser
Ingrese la contraseña para testuser cuando se le solicite.
Ahora intente cambiar al usuario root:
su -
Si ingresa la contraseña root correcta, debería poder cambiar al usuario root con éxito.
Revertir los Cambios
Para completar el resto de este laboratorio, revirtamos nuestros cambios en la configuración de PAM:
sudo cp /etc/pam.d/su.bak /etc/pam.d/su
Esta configuración le permite controlar quién puede usar el comando su para cambiar al usuario root, mejorando la seguridad de su sistema.
Solución de Problemas y Resolución de Fallos de Autenticación de Su
Ahora que entendemos las causas comunes de los fallos de autenticación de su y cómo configurar el control de acceso, centrémonos en la solución de problemas y la resolución de estos fallos.
Diagnóstico de Fallos de Autenticación
Cuando encuentre un fallo de autenticación de su, siga estos pasos sistemáticos para diagnosticar el problema:
Paso 1: Verifique el Mensaje de Error
El mensaje de error puede proporcionar pistas valiosas sobre la naturaleza del fallo. Los mensajes de error comunes incluyen:
su: Authentication failure- Típicamente indica una contraseña incorrecta.su: user username does not exist- La cuenta de usuario especificada no existe.su: permission denied- Las restricciones de control de acceso están impidiendo la operación.
Paso 2: Verifique la Cuenta de Usuario
Asegúrese de que la cuenta de usuario de destino exista y no esté bloqueada:
grep testuser /etc/passwd
Esto debería mostrar la entrada para testuser en el archivo de contraseñas, confirmando que la cuenta existe.
Verifique si la cuenta está bloqueada:
sudo passwd -S testuser
La salida incluye el estado de la cuenta. Si dice "L" (bloqueada), la cuenta está bloqueada.
Paso 3: Verifique las Restricciones de Control de Acceso
Como aprendimos en el paso anterior, la configuración de PAM puede restringir el acceso de su. Verifique si existen tales restricciones:
grep -v "^#" /etc/pam.d/su | grep pam_wheel
Si esto devuelve una línea que contiene pam_wheel.so, el acceso a su podría estar restringido a los miembros de un grupo específico.
Paso 4: Examine los Registros del Sistema
Los registros del sistema pueden proporcionar información detallada sobre los fallos de autenticación:
sudo tail -n 20 /var/log/auth.log
Busque entradas relacionadas con fallos de su, que pueden proporcionar contexto adicional.
Resolución de Fallos Comunes de Autenticación de Su
Ahora, abordemos los fallos comunes de autenticación de su y cómo resolverlos:
1. Contraseña Incorrecta
Si está ingresando la contraseña correcta pero aún obtiene fallos de autenticación, es posible que deba restablecer la contraseña:
sudo passwd testuser
Ingrese una nueva contraseña para testuser cuando se le solicite.
2. Cuenta Bloqueada
Si la cuenta está bloqueada, desbloquéela:
sudo passwd -u testuser
3. Restricciones de Control de Acceso
Si las restricciones de control de acceso están impidiendo el acceso de su, puede:
a. Agregar el usuario al grupo requerido:
sudo usermod -aG sugroup testuser2
Esto agrega testuser2 al sugroup.
b. Deshabilitar temporalmente la restricción comentando la línea relevante en la configuración de PAM:
sudo sed -i 's/^auth\s\+required\s\+pam_wheel.so/#&/' /etc/pam.d/su
Este comando comenta la línea que contiene pam_wheel.so en la configuración de PAM de su.
4. Problemas de Permisos de Archivo
Si el binario su tiene permisos incorrectos, arréglelos:
sudo chmod u+s $(which su)
Esto asegura que el bit setuid esté configurado en el binario su.
Prueba de las Correcciones
Después de aplicar las correcciones, pruebe si la autenticación de su funciona correctamente:
su - testuser
Ingrese la contraseña para testuser cuando se le solicite. Si tiene éxito, ahora debería estar conectado como testuser.
Intente cambiar al usuario root:
su -
Si tiene la contraseña root y las restricciones de control de acceso se han abordado correctamente, debería poder cambiar al usuario root con éxito.
Estos pasos de solución de problemas y correcciones abordan los fallos de autenticación de su más comunes. Al diagnosticar y resolver sistemáticamente estos problemas, puede asegurarse de que el comando su funcione correctamente en su sistema.
Mejores Prácticas para el Uso Seguro de Su
En este paso final, exploraremos las mejores prácticas para usar el comando su de forma segura. Seguir estas prácticas ayuda a minimizar los riesgos de seguridad al tiempo que permite que las tareas administrativas se realicen de manera efectiva.
Use Sudo en Lugar de Su Cuando Sea Posible
El comando sudo generalmente se considera más seguro que su porque:
- Permite un control más granular sobre los permisos
- Registra los comandos ejecutados con privilegios elevados
- No requiere compartir la contraseña de root
Ejemplo de uso de sudo en lugar de su:
## En lugar de:
su -
## Luego ingresar comandos como root
## Use:
sudo command
Pruebe este ejemplo:
sudo ls /root
Esto ejecuta el comando ls con privilegios de root sin cambiar al usuario root.
Configure el Acceso Sudo Correctamente
Asegúrese de que sudo esté configurado correctamente para otorgar solo los privilegios necesarios:
sudo visudo
Esto abre el archivo sudoers en un editor seguro. El archivo debe contener entradas similares a:
## User privilege specification
root ALL=(ALL:ALL) ALL
## Members of the sudo group may gain root privileges
%sudo ALL=(ALL:ALL) ALL
Presione Ctrl+X para salir sin hacer cambios.
Limite el Inicio de Sesión Directo como Root
Desaliente el inicio de sesión directo como root, especialmente a través de SSH. En su lugar, los usuarios deben iniciar sesión con sus cuentas regulares y usar su o sudo cuando sea necesario.
Verifique si el inicio de sesión directo como root a través de SSH está deshabilitado:
grep "PermitRootLogin" /etc/ssh/sshd_config
Si esto devuelve PermitRootLogin no, el inicio de sesión directo como root está correctamente deshabilitado.
Implemente Políticas de Contraseña Robustas
Asegúrese de que la contraseña de root y las contraseñas de los usuarios con acceso su sean seguras:
sudo apt-get install -y libpam-pwquality
Esto instala un módulo PAM para la verificación de la calidad de la contraseña.
Configure las políticas de contraseña editando la configuración de PAM:
sudo nano /etc/pam.d/common-password
Busque una línea que contenga pam_pwquality.so y asegúrese de que tenga los parámetros apropiados como:
password requisite pam_pwquality.so retry=3 minlen=12 difok=3
Presione Ctrl+X para salir sin hacer cambios, ya que solo estamos examinando la configuración.
Audite Regularmente el Uso de Su
Revise los registros para monitorear el uso de su:
sudo grep "su:" /var/log/auth.log | tail -n 10
Esto muestra los intentos recientes de su, tanto exitosos como fallidos.
Considere configurar alertas automatizadas para múltiples intentos fallidos de su, lo que podría indicar un ataque.
Use Su con la Opción de Guion
Cuando use su para cambiar a otro usuario, especialmente root, use la opción de guion (-) para obtener un entorno limpio:
su - username
Esto proporciona un shell de inicio de sesión con las variables de entorno del usuario de destino, lo cual es más seguro y previene posibles problemas causados por heredar el entorno del usuario original.
Sesión Práctica - Uso Seguro de Su
Practiquemos estas mejores prácticas:
- En lugar de usar
su -para convertirte en root y luego ejecutar un comando, usa sudo:
## En lugar de:
## su -
## cat /etc/shadow
## Use:
sudo cat /etc/shadow
- Cambie a testuser con un entorno limpio:
su - testuser
- Salga y regrese a su usuario original:
exit
- Verifique el registro de autenticación para el uso de su:
sudo grep "su:" /var/log/auth.log | tail -n 5
Siguiendo estas mejores prácticas, puede usar el comando su de forma segura al tiempo que minimiza los posibles riesgos de seguridad para su sistema.
Resumen
En este laboratorio, exploramos el comando su en Linux y aprendimos a solucionar los fallos de autenticación comunes. Cubrimos:
- Comprender el uso básico del comando
suy cómo funciona - Identificar las causas comunes de los fallos de autenticación de su, incluyendo contraseñas incorrectas, restricciones de cuenta y problemas de configuración de PAM
- Configurar el control de acceso para el comando
supara mejorar la seguridad - Solucionar problemas y resolver los fallos de autenticación de su a través de un diagnóstico sistemático
- Implementar las mejores prácticas para el uso seguro de su, incluyendo el uso de sudo cuando sea posible, la configuración de políticas de contraseñas robustas y la auditoría regular del uso de su
Al aplicar estas técnicas y mejores prácticas, puede asegurarse de que el comando su funcione correctamente mientras mantiene la seguridad de su sistema Linux. Recuerde que la gestión adecuada de la autenticación es un aspecto crucial de la administración y seguridad del sistema.



