Pregunta ¿Cómo evitar que un usuario inicie sesión pero permita "su - usuario" en Linux?


¿Cómo le permite a un usuario iniciar sesión usando "su -  usuario"pero impide que el usuario inicie sesión utilizando SSH?

Traté de poner la concha a /bin/false pero el cuando intento su no funciona

¿Hay varias maneras de permitir solo los inicios de sesión su?

Es de SSH AllowUser ¿el camino a seguir? (¿Cómo haría esto si es el camino a seguir)


86
2018-06-09 15:13


origen




Respuestas:


Puedes usar Permitir a los usuarios / Permitir grupos Si solo tiene unos pocos usuarios / grupos que pueden iniciar sesión a través de ssh o DenyUsers / DenyGroups Si solo tienes unos pocos usuarios / grupos que están no permitido para iniciar sesión. Tenga en cuenta que esto solo restringe el inicio de sesión a través de ssh, otras formas de inicio de sesión (consola, ftp, ...) todavía son posibles. Necesita agregar estas opciones a su / etc / ssh / sshd_config archivo para la mayoría de las instalaciones ssh.

Si ha configurado el shell de inicio de sesión en / bin / falso puedes usar su -s /bin/bash user (reemplazar / bin / bash con la cáscara de su elección)


108
2018-06-09 15:40



Muchas gracias a todos. No esperaba obtener 2+ upvotes en mi pregunta :) Me gusta el "su -s ..." construye mucho y la consola / ftp es un buen punto. Realmente estaba buscando algo como "su -s". - NoozNooz42
El truco de su es el oro. Lo uso todo el tiempo para las cuentas del sistema que necesito para probar los permisos para, por ejemplo, apache, nadie, etc. Normalmente hago su - user -s / bin / bash. El argumento opcional: se puede usar para proporcionar un entorno similar al que el usuario esperaría si el usuario hubiera iniciado sesión directamente. - dmourati
Si necesita que se carguen variables de entorno (por ejemplo, desde / etc / profile), pasar un guión adicional lo hará: su - -s /bin/bash user - Leons


Si aún quieres que su funcione, puedes usar sudo -u [username] o pase -s /bin/bash a su como una cáscara temporal. Ambos hacen lo mismo en ausencia de una concha en /etc/passwd.


13
2018-02-18 10:04





Si una cuenta no tiene contraseña (contraseña -d nombre de usuario), no pueden iniciar sesión de forma interactiva (consola, SSH, etc.). Si tienen un shell válido, su todavía funcionará Tenga en cuenta el "interactivamente", sin embargo; Si alguien decide configurar un par de llaves SSH para la cuenta, ¡funcionará!


7
2018-06-09 15:53



¿El usuario necesita tener un shell válido para su? Estoy bastante seguro de que todavía estás en el mismo shell original después de que hayas aceptado a otro usuario ... en realidad, NO INICIAS SESIÓN como otro usuario ... Por lo tanto, configurar el shell en / dev / null podría funcionar también. - Brian Postow
Sí, todavía necesita un shell válido: [root @ localhost ~] # su daemon Esta cuenta no está disponible actualmente. [root @ localhost ~] # su - daemon Esta cuenta no está disponible actualmente. (Sistema RHEL, el shell del daemon es / sbin / nologin) - astrostl


En sshd_config agregar una línea DenyUser [username]

Tenga en cuenta que esto no evitará que el usuario inicie sesión a través de la consola.


3
2018-06-09 15:28



Eso deberia ser DenyUsers, con una 's'. - David G


Además de lo que se ha mencionado anteriormente (deshabilitar y / o no configurar la contraseña del usuario), el módulo pam_access (buscar la página man en pam_access y access.conf) se puede usar para controlar el acceso de inicio de sesión.


2
2017-09-27 22:16





como otros han dicho;

DenyUser username o DenyGroup groupname en sshd_config evitaría el inicio de sesión de par de llaves / contraseña a través de ssh.

aunque normalmente hago algo como AllowGroup ssh o algo parecido, y agregue explícitamente a las personas que necesitan acceso ssh a ese grupo.

entonces, puedes hacer lo que otros han dicho: passwd -d username para borrar la contraseña del usuario, para que no puedan iniciar sesión en la consola, o de alguna otra manera. o mejor aún passwd -l username para 'bloquear' la cuenta. es posible que ssh niegue el acceso a una cuenta bloqueada, incluso con claves, pero no soy positivo.


1
2018-06-09 16:15



En realidad, ssh le permitirá iniciar sesión usando la autenticación de clave incluso cuando la contraseña de la cuenta esté bloqueada. - Richard Holloway
Es bueno saber, gracias por la aclaración ... - cpbills


Como mencioné en un comentario, creo que todavía puede realizar una suya en una cuenta con un shell no válido. Por lo tanto, si configura el shell del usuario en / dev / null o cualquiera que sea el shell de bin, debería poder seguir utilizando su usuario para ese usuario ... pero cualquier intento de iniciar sesión de alguna manera lo cerrará de nuevo ...


1
2018-06-09 16:26





Editar / etc / shadow mediante la adición! al comienzo del hash de contraseña.

username:!<hash>:#####:#:#####:#:::

Cuando aseguro una nueva instalación, esto es lo primero que hago después de instalar sudo, por lo que nadie puede usar al usuario root para iniciar sesión o ssh en el sistema, los usuarios de sudo pueden ejecutarse como usuario root.


1
2017-12-31 01:38