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
En este paso, aprenderá cómo el comando su en Linux permite a los usuarios cambiar su identidad de usuario actual a otro usuario. Esto resulta especialmente útil para realizar tareas administrativas que requieren privilegios elevados.
Exploremos el uso básico del comando su y cómo funciona.
Uso básico de Su
Abra un terminal en su entorno de VM de LabEx. Puede utilizar el comando su con la siguiente sintaxis:
su [options] [username]
Si ejecuta su sin especificar un nombre de usuario, el destino predeterminado es root:
su
El comando intenta acceder a root, pero Ubuntu normalmente bloquea la autenticación de root mediante contraseña. Aquí se espera un fallo de autenticación. No active el inicio de sesión de root mediante contraseña ni cambie la cuenta de la plataforma; todas las pruebas de inicio de sesión exitoso que aparecen a continuación utilizan usuarios desechables del laboratorio.
Creemos un usuario de prueba para practicar:
sudo adduser testuser
Introduzca la información solicitada. Solo para esta cuenta de prueba desechable, utilice DemoUser123! como contraseña de práctica. Nunca cambie la contraseña de labex ni su pertenencia al grupo sudo.
Ahora intentemos cambiar a este usuario:
su testuser
Cuando se le solicite, introduzca la contraseña que creó para testuser. Una vez autenticado, el indicador del terminal cambiará para señalar que ahora trabaja como testuser.
Para verificar que ha cambiado de usuario correctamente, ejecute:
whoami
La salida debería mostrar:
testuser
Para volver a su usuario original, escriba:
exit
Uso de Su con opciones
El comando su admite varias opciones. La más habitual es - (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 personal del usuario de destino
- Configura las variables de entorno del usuario de destino
- Proporciona un shell de inicio de sesión
Pruebe este comando y observe las diferencias:
pwd
La salida debería mostrar el directorio personal de testuser:
/home/testuser
Salga de testuser escribiendo:
exit
Esta comprensión básica del comando su nos ayudará a diagnosticar fallos de autenticación en los siguientes pasos.
Fallos Comunes de Autenticación de Su y sus Causas
En este paso, provocará e inspeccionará fallos de autenticación habituales de su. Comprender estos fallos es el primer paso para resolverlos.
Prueba de fallos de autenticación
Provoquemos intencionadamente algunos fallos de autenticación para comprenderlos mejor.
Primero, intente cambiar a testuser con una contraseña incorrecta:
su testuser
Introduzca una contraseña incorrecta. Verá un mensaje de error similar a:
su: Authentication failure
Después, intente cambiar a un usuario inexistente:
su nonexistentuser
Verá un mensaje de error como:
su: user nonexistentuser does not exist
Causas habituales de fallos de autenticación
1. Contraseña incorrecta
La causa más habitual de un fallo de autenticación es simplemente introducir una contraseña incorrecta. Esto puede deberse a:
- Errores tipográficos
- Bloqueo de mayúsculas activado
- Haber olvidado la contraseña
2. Restricciones de cuenta
Algunas cuentas pueden estar configuradas para impedir el inicio de sesión o tener contraseñas caducadas.
Modifiquemos nuestro usuario de prueba para demostrarlo:
sudo usermod -L testuser
La opción -L bloquea la autenticación mediante contraseña de la cuenta desechable testuser. Ahora pruebe:
su testuser
Verá un fallo de autenticación incluso si introduce la contraseña correcta.
La opción -U elimina ese bloqueo de contraseña. Desbloquee únicamente esta cuenta de prueba con:
sudo usermod -U testuser
3. Problemas de configuración de PAM
El sistema de módulos de autenticación conectables (PAM) controla la autenticación en Linux. Los problemas de configuración de PAM pueden provocar 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 del comando su. Busque líneas que puedan restringir el acceso, como:
auth required pam_wheel.so
Esta línea, si se descomentara, restringiría el acceso mediante su a los miembros del grupo wheel.
4. Problemas de permisos del 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 está activado el bit setuid, que permite ejecutar el programa con los privilegios de su propietario (root) en lugar de los del usuario que lo ejecuta.
5. Consulta de los registros de autenticación
Al diagnosticar fallos de autenticación en esta VM de LabEx, consulte los registros de inicios de sesión fallidos con lastb:
sudo lastb | head
Este comando lee /var/log/btmp y muestra los intentos recientes de autenticación fallida, incluidos los intentos fallidos de su cuando el sistema los registra.
Por ejemplo, un intento fallido de su puede generar una entrada que incluya el usuario de destino y la sesión del terminal.
Comprender estas causas habituales de fallos de autenticación de su le ayudará a identificar y resolver los problemas con mayor eficacia en los siguientes pasos.
Configuración del Control de Acceso para el Comando Su
En este paso, probará una regla de grupo de PAM con una cuenta de destino desechable. No activará el inicio de sesión de root mediante contraseña ni restringirá el acceso a la plataforma.
Preparación de las cuentas desechables
Empiece en su shell original de labex. Confirme la identidad actual antes de utilizar sudo:
whoami
El resultado debe ser labex. Cree un segundo usuario que iniciará las solicitudes y una cuenta de destino independiente; después, establezca contraseñas únicamente para esas cuentas desechables:
sudo adduser --disabled-password --gecos '' testuser2
sudo adduser --disabled-password --gecos '' su-lab-target
printf '%s\n' 'testuser2:DemoOther123!' 'su-lab-target:DemoTarget123!' | sudo chpasswd
sudo groupadd sugroup
sudo usermod -aG sugroup testuser
Solo testuser pertenece a sugroup. Los nuevos shells de inicio de sesión incorporarán esa pertenencia. La contraseña de destino es DemoTarget123! en las dos pruebas de acceso.
Aplicación de una regla de PAM específica del destino
PAM controla la autenticación de su mediante /etc/pam.d/su. La preparación guardó sus bytes originales en /opt/labex/su-demo. El siguiente prefijo aplica una comprobación de grupo únicamente cuando el destino es su-lab-target. La primera regla omite la siguiente para cualquier otro destino, incluido labex. use_uid comprueba la identidad real de quien inicia la solicitud y group=sugroup identifica el grupo permitido.
sudo python3 - <<'PY'
from pathlib import Path
original = Path('/opt/labex/su-demo/pam-su.original').read_text()
prefix = """## Lab-only rule for su-lab-target
auth [success=1 default=ignore] pam_succeed_if.so quiet user != su-lab-target
auth required pam_wheel.so use_uid group=sugroup
"""
Path('/etc/pam.d/su').write_text(prefix + original)
PY
Las reglas originales de PAM permanecen después de este prefijo. La pertenencia al grupo no sustituye a la autenticación mediante contraseña. No añada labex al grupo de demostración ni edite ninguna configuración de SSH, sudo o cuentas de la plataforma.
Prueba de un usuario ajeno al grupo
Cambie de labex a testuser2 utilizando DemoOther123!:
su - testuser2
Desde ese shell, intente acceder al destino limitado por la regla utilizando su contraseña correcta, DemoTarget123!:
su - su-lab-target
Este intento debe fallar con un error de autenticación porque testuser2 no pertenece a sugroup. Un intento fallido de su no crea un nuevo shell. Salga una vez para volver a labex:
exit
whoami
Confirme que whoami muestra labex antes de continuar.
Prueba de un usuario miembro del grupo
Cambie a testuser utilizando su contraseña DemoUser123! del paso 1:
su - testuser
id
su - su-lab-target
Introduzca DemoTarget123! para el destino. Este cambio debería completarse correctamente. Confirme la identidad de destino:
whoami
La salida debería ser su-lab-target. Se abrieron dos shells, por lo que debe salir dos veces: primero a testuser y después a labex:
exit
exit
whoami
Confirme que whoami muestra labex. Nunca ejecute el comando de restauración desde el shell de un usuario desechable.
Restauración de la política original
Desde labex, restaure la configuración guardada y compárela con el original:
sudo cp -p /opt/labex/su-demo/pam-su.original /etc/pam.d/su
sudo cmp /opt/labex/su-demo/pam-su.original /etc/pam.d/su
Una comparación correcta no muestra salida. El grupo y los usuarios de demostración siguen disponibles para el diagnóstico, mientras su vuelve a utilizar su política original.
Solución de Problemas y Resolución de Fallos de Autenticación de Su
En este paso, seguirá un proceso sistemático para diagnosticar y resolver fallos de autenticación de su.
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: Compruebe el mensaje de error
El mensaje de error puede proporcionar pistas útiles sobre la naturaleza del fallo. Entre los mensajes habituales se encuentran:
su: Authentication failure: normalmente 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 impiden la operación.
Paso 2: Compruebe la cuenta de usuario
Asegúrese de que la cuenta de destino existe y no está bloqueada:
grep testuser /etc/passwd
Esto debería mostrar la entrada de testuser en el archivo de contraseñas, confirmando que la cuenta existe.
Compruebe si la cuenta está bloqueada:
sudo getent shadow testuser | cut -d: -f2 | cut -c1
Esto muestra únicamente el primer carácter del campo de contraseña de la cuenta desechable, no el hash de la contraseña. Un ! inicial significa que la autenticación mediante contraseña está bloqueada.
Paso 3: Compruebe las restricciones de control de acceso
Como aprendimos en el paso anterior, la configuración de PAM puede restringir el acceso mediante su. Compruebe si existen esas restricciones:
grep -v "^#" /etc/pam.d/su | grep pam_wheel
Si devuelve una línea que contiene pam_wheel.so, el acceso mediante su podría estar restringido a los miembros de un grupo específico.
Paso 4: Examine los registros del sistema
Los registros de inicios de sesión fallidos pueden proporcionar información útil sobre los fallos de autenticación:
sudo lastb | head
Busque entradas relacionadas con sus intentos fallidos de su, que pueden proporcionar contexto adicional.
Resolución de fallos habituales de autenticación de Su
Ahora abordaremos los fallos habituales de autenticación de su y cómo resolverlos:
1. Contraseña incorrecta
Si introduce la contraseña correcta pero sigue obteniendo fallos de autenticación, puede ser necesario restablecerla:
printf '%s\n' 'testuser:DemoUser123!' | sudo chpasswd
Esto restablece únicamente la contraseña del usuario desechable testuser al valor de práctica conocido; no cambia labex ni root.
2. Cuenta bloqueada
Si la cuenta está bloqueada, desbloquéela:
sudo usermod -U testuser
3. Restricciones de control de acceso
Si las restricciones de control de acceso impiden utilizar su, puede optar por:
a. Añadir el usuario al grupo requerido:
sudo usermod -aG sugroup testuser2
Esto añade testuser2 a sugroup.
b. En este laboratorio, eliminar únicamente la política de demostración restaurando el archivo original guardado:
sudo cp -p /opt/labex/su-demo/pam-su.original /etc/pam.d/su
Esto restaura exactamente la política original de su, en lugar de desactivar reglas de autenticación arbitrarias.
4. Problemas de permisos de archivo
Inspeccione los permisos del binario su sin modificar el binario de la plataforma:
ls -l "$(command -v su)"
El bit setuid esperado aparece como s en la posición de ejecución del propietario. Si el binario de la plataforma está dañado, utilice una VM nueva en lugar de cambiar sus permisos.
Prueba de las correcciones
Después de aplicar las correcciones, pruebe si la autenticación de su funciona correctamente:
su - testuser
Introduzca la contraseña de testuser cuando se le solicite. Si tiene éxito, habrá iniciado sesión como testuser.
Ejecute whoami para confirmar testuser y después ejecute exit una vez para volver a labex. No utilice el inicio de sesión de root mediante contraseña como prueba de éxito: el caso positivo es el inicio de sesión de la cuenta desechable.
Estos pasos de diagnóstico y corrección abordan los fallos de autenticación de su más habituales. 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, revisará el uso seguro de privilegios y confirmará que la demostración dejó el acceso a la plataforma sin cambios.
Preferir Sudo para comandos administrativos individuales
Sudo puede conceder y registrar acciones administrativas individuales sin compartir la contraseña de root. Desde su shell de labex, enumere el directorio personal de root sin iniciar un shell de inicio de sesión de root:
sudo ls /root
Conserve la política de sudo existente de la plataforma. Puede inspeccionar sus comandos permitidos sin cambiar la política:
sudo -l
Limitar el alcance de los cambios de autenticación
En sistemas de producción, los administradores gestionan el inicio de sesión de root, la calidad de las contraseñas y la política de autenticación mediante flujos de configuración aprobados. Este ejercicio no modifica la configuración de SSH, la contraseña de labex ni su pertenencia a grupos. Una política de contraseñas robusta o la autenticación multifactor requieren una implementación propia; este tutorial no configura ninguna de ellas.
Confirme que se eliminó la política temporal de su:
sudo cmp /opt/labex/su-demo/pam-su.original /etc/pam.d/su
Si no aparece ninguna salida, la política coincide con el original guardado.
Auditoría de intentos fallidos de autenticación
Utilice la base de datos de inicios de sesión fallidos para investigar los intentos infructuosos:
sudo lastb | head
Esto lee /var/log/btmp; no muestra todas las sesiones exitosas de su. Interprete únicamente los registros que el sistema haya escrito realmente e investigue los fallos repetidos en un entorno de producción.
Utilizar un entorno de inicio de sesión y volver explícitamente
La opción de guion inicia el entorno de inicio de sesión del usuario de destino. Utilice la contraseña DemoUser123! de testuser:
su - testuser
whoami
exit
whoami
Las dos comprobaciones de identidad deberían mostrar testuser y después labex. exit cierra únicamente el shell creado por su. La VM conserva su inicio de sesión original de la plataforma, su acceso a sudo y su política de su.
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.



