¿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.