No puedo iniciar sesión como root con su comando, pero puedo con SSH

17

¿Cómo es posible que no pueda iniciar sesión como root por su rooto su(obtengo un error de contraseña incorrecto), pero puedo iniciar sesión por ssh root@localhosto ssh root@my_local_IPcon la misma contraseña?

Estoy usando CentOS 6.4.


Actualización1 :

cat /etc/pam.d/su

da:

#%PAM-1.0
auth        sufficient  pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth       sufficient  pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth       required    pam_wheel.so use_uid
auth        include     system-auth
account     sufficient  pam_succeed_if.so uid = 0 use_uid quiet
account     include     system-auth
password    include     system-auth
session     include     system-auth
session     optional    pam_xauth.so

Actualización2 :

$ sudo grep su /var/log/secure | grep -v sudo

da :

Feb 23 13:12:17 fallah su: pam_unix(su:auth): authentication failure;
logname=fallah uid=501 euid=501 tty=pts/0 ruser=fallah rhost=  user=root

repetido unas 20 veces.

Alireza Fallah
fuente
1
Intenta borrar el archivo /etc/securetty( cp /etc/securetty{,.old}; : > /etc/securetty). Si eso todavía no funciona, proporcione el contenido de /etc/pam.d/su.
Patrick
2
¿Seguramente con ssh 192.168.1.218usted solo está iniciando sesión como usted mismo? Para iniciar sesión como root ssh, normalmente necesitaría ssh [email protected]o ssh root@localhost.
Graeme
1
Obtenga el PID (12345) de su shell ( echo $$), abra (por ejemplo, a través de ssh) un shell raíz (necesario para rastrear los binarios SUID) y comience stracepor ese shell: strace -o su.strace -p 12345 -fy busque errores extraños antes del mensaje de error. O copie las últimas 30 líneas antes del mensaje de error en su pregunta si no está familiarizado con ese tipo de salida.
Hauke ​​Laging
1
@HaukeLaging diceProcess 11736 attached - interrupt to quit
Alireza Fallah
2
OK, esa es la razón por la que no está funcionando. / bin / su necesita tener su bit setuid activado para que cuando lo usen usuarios comunes (no root), tenga acceso a la lista de contraseñas en / etc / shadow. Escriba, como root, chmod 4755 /bin/supara arreglar esto.
Mark Plotnick

Respuestas:

23

En su comentario, dijo que /bin/sutiene el siguiente modo / propietario:

-rwxrwxrwx. 1 root root 30092 Jun 22 2012 /bin/su

Hay dos problemas aquí.

  • necesita tener activado el bit set-uid, para que siempre se ejecute con permisos de root, de lo contrario, cuando lo ejecute un usuario normal (no root), no tendrá acceso a la información de la contraseña /etc/shadowni la capacidad de configurar el ID de usuario para el nuevo usuario deseado.

  • que debería tener el groupy otherlos bits de escritura apagado, por lo que otros usuarios no pueden alterarlo.

Para solucionar esto, inicie sesión como root, dijo que puede hacer esto ssh, y escriba

chmod 4755 /bin/su

o alternativamente,

chmod u+s,g-w,o-w /bin/su

(El documento de estándares para chmod entra en más detalles sobre qué tipo de argumentos se requieren). Esto restaurará los bits de modo a la forma en que estaban cuando se instaló el sistema operativo por primera vez. Cuando enumeres este archivo, debería verse así:

-rwsr-xr-x. 1 root root 30092 Jun 22 2012 /bin/su

Como señaló @ G-Man, los archivos que están en modo 777 podrían ser sobrescritos por usuarios no confiables, y si ese es el caso, es posible que desee reinstalarlos desde el medio de distribución o las copias de seguridad.

Mark Plotnick
fuente
1
Usualmente uso como: chmod 755 /bin/su¿para qué son los 4 adicionales ?
Alireza Fallah
El 4en la primera posición representa el permiso set-uid. Edité mi respuesta para agregar una forma alternativa de usar chmod usando nombres simbólicos para los bits de permiso. Esperemos que eso quede más claro.
Mark Plotnick
muchas muchas gracias. Ahora descubrí que ejecuté el chmod -R 777 /binerror por error, y por eso me han maldecido: D
Alireza Fallah
También hice otra pregunta , ¿podría verla? Quizás conozca la respuesta.
Alireza Fallah
cyberciti.biz/tips/… describe cómo usar rpmpara restaurar los permisos de archivos, pero no lo he probado.
Mark Plotnick
10

1. grupo de ruedas?

Esto es probable porque su ID de usuario no está en el wheelgrupo. En las distribuciones de Red Hat, puede prohibir explícitamente a los usuarios que no están en este grupo ejecutar el sucomando.

Así sues como se ve la configuración PAM por defecto:

$ more /etc/pam.d/su
#%PAM-1.0
auth        sufficient  pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth       sufficient  pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth       required    pam_wheel.so use_uid
auth        include     system-auth
account     sufficient  pam_succeed_if.so uid = 0 use_uid quiet
account     include     system-auth
password    include     system-auth
session     include     system-auth
session     optional    pam_xauth.so

Esta línea puede limitar el acceso al sucomando a los usuarios del wheelgrupo:

auth        required    pam_wheel.so use_uid

Por lo que parece, esto está habilitado y su ID de usuario no puede operar el sucomando.

SSH funciona ya que pasa por un mecanismo PAM diferente. SSH también tiene sus propias instalaciones para limitar el acceso a los inicios de sesión raíz también. Por lo general, los inicios de sesión de raíz se permiten de manera predeterminada, al menos en la mayoría de las distribuciones de Red Hat:

$ sudo grep PermitRoot /etc/ssh/sshd_config 
#PermitRootLogin yes
# the setting of "PermitRootLogin without-password".

Aunque lo anterior está comentado, es el valor predeterminado, y así es como OpenSSH muestra que es la configuración predeterminada en las configuraciones.

Trabajando con esto?

Si su sistema está configurado de esta manera, puede agregar su nombre de usuario al wheelgrupo.

$ useradd -G wheel saml

Después de cerrar sesión y volver a iniciarla:

$ groups
saml wheel

NOTA: Mi ID de usuario es "saml" arriba.

2. Permisos justo en su?

Verifique que el ejecutable sea propiedad de root.

$ type -a su
su is /usr/bin/su
su is /bin/su

$ ls -l /usr/bin/su /bin/su
-rwsr-xr-x. 1 root root 32064 Jan 13 06:31 /bin/su
-rwsr-xr-x. 1 root root 32064 Jan 13 06:31 /usr/bin/su

También confirme que los ejecutables tienen sus sbits habilitados. Esto los hace setuid, de modo que cuando se ejecutan se ejecutan como su propia raíz.

3. ¿Qué dicen los registros?

Cuando intente hacer el su -comando, debería ver entradas /var/log/securesobre el intento.

$ sudo grep su /var/log/secure | grep -v sudo
Feb 23 23:31:26 greeneggs su: pam_unix(su-l:session): session opened for user root by saml(uid=0)
Feb 24 00:27:32 greeneggs su: pam_unix(su-l:session): session closed for user root
Feb 24 01:34:12 greeneggs su: pam_unix(su-l:session): session opened for user root by saml(uid=1000)
Feb 24 01:34:26 greeneggs su: pam_unix(su-l:session): session closed for user root

Consulte este registro para ver si obtiene información adicional.

4. ¿Estás seguro de que la contraseña no es el problema?

Cuando intento iniciar sesión usando su -, obtengo lo siguiente cuando le doy una contraseña incorrecta:

$ su -
Password: 
su: Authentication failure
$

Intentaría crear otra cuenta y ver si esta cuenta secundaria puede ejecutarse su -correctamente.

slm
fuente
gracias por tu gran respuesta, lo que probé después de leer tu respuesta: usermod -a -G wheel my_usernamey el resultado groupses fallah wheel. ¡Entonces el resultado de cat /etc/pam.d/suahora está en mi pregunta, Y, nuevamente, no puedo iniciar sesión como root por su comando!
Alireza Fallah
Esta es la última línea de /var/log/secure:Feb 24 10:19:45 fallah su: pam_unix(su:auth): authentication failure; logname=fallah uid=501 euid=501 tty=pts/2 ruser=fallah rhost= user=root
Alireza Fallah
y esta línea se repite alrededor de 20 veces en/var/log/secure
Alireza Fallah
4: pero cuando lo intento: su: incorrect password - y la contraseña es correcta, porque puedo iniciar sesión con la misma contraseña en SSH
Alireza Fallah
También intenté iniciar sesión con otra cuenta, como su alireza, y nuevamente el mismo problema
Alireza Fallah
0

Si recibe un mensaje de error como este

su: PAM adding faulty module: /lib64/security/pam_tally.so
su: PAM unable to dlopen(/lib64/security/pam_tally.so): /lib64/security/pam_tally.so: cannot open shared object file: No such file or directory

Haz este paso:

ln -s /lib64/security/pam_tally2.so /lib64/security/pam_tally.so

Entonces prueba su. Deberia de funcionar.

Jeff Schaller
fuente