¿Cómo puedo crear un usuario solo para sftp?


15

He agregado un usuario al sistema a través de la adduserherramienta. Luego, en /etc/passwd, intenté cambiar el /bin/bashto /sbin/nologino to /dev/null, pero ninguno de estos funcionó.

Me gustaría que el usuario no tenga la opción de obtener un shell interactivo y solo usarlo sftp. ¿Hay alguna manera?

Sé que se ha preguntado aquí antes, pero parece que nadie dio una respuesta satisfactoria.


¿Qué quieres decir con "sin suerte"?
Paweł Brodacki

Quise decir que el scp / sftp remoto no funcionaba. Lo resolví usando el shell scponly como lo sugirió Iain
Toni Rosa

Respuestas:


9

El comando que debe usar para cambiar el shell es chsh . El shell nologin puede ser /sbin/nologino /usr/sbin/nologin(verifique lo que tiene mirando /etc/shells) pero /bin/falseprobablemente sería una mejor opción.

chsh -s /bin/false user

Deberías considerar configurar algo como scponly que hará exactamente lo que quieres.


Gracias por tu respuesta. He intentado con los shells dentro de / etc / shell sin suerte ... / bin / false da una "conexión perdida" y / sbin / nologin devuelve un "Esta cuenta no está disponible actualmente". Probaré esto scponly
Toni Rosa

¡Lo resolví usando el shell scponly! Saludos
Toni Rosa

3
¡Esta respuesta es la aguja en el heno! Asegúrese /bin/falsey /bin/nologinson realmente disponible en /etc/shells!
Afr

@Afri Bien, pero ... realmente querrás leer serverfault.com/questions/328395/… . Esto está bastante fuertemente contraindicado.
Reinderien

@Afr no ponen nologinen /etc/shells! serverfault.com/a/328424
RobAu

9

También debería poder hacerlo con OpenSSH 4.9 y versiones posteriores, con lo que también puede hacer un "chroot" adicional para aumentar la seguridad.

En su /etc/ssh/sshd_config:

Match User user
ChrootDirectory /home/user
ForceCommand internal-sftp
AllowTcpForwarding no

Entonces corre:

chsh -s /bin/false user
chown root:root /home/user
mkdir /home/user/uploads
chown user /home/user/uploads

El usuario solo podrá escribir en / home / user / uploads.

https://debian-administration.org/article/590/OpenSSH_SFTP_chroot_with_ChrootDirectory


+1 He puesto esto en mi lista para investigar.
user9517

1
Lo he usado y funciona bien: también puede darle al usuario la opción de iniciar sesión en el entorno chroot con un shell, pero en ese caso debe copiar un mínimo de bibliotecas y algunas otras utilidades como se esperaba. Jailkit ( olivier.sessink.nl/jailkit ) es útil para eso.
Eduardo Ivanec

Gracias, ForceCommand fue una pista. No necesito chroot, pero sí quiero iniciar sesión en SFTP con cuentas de servicio.
AnrDaemon


1

Puede agregar un usuario -s /bin/falsepara deshabilitar su shell, pero lo que realmente debería considerar para configurar es una cuenta sftp chrooteada. Esto "encarcelará" a un usuario en su propio directorio y evitará que pueda acceder o modificar cualquier archivo o directorio fuera del directorio chroot.


Gracias por su respuesta, pero no parece funcionar. Recibo una "conexión perdida" cada vez que intento que un usuario use el shell / bin / false.
Toni Rosa
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.