Primero creamos un grupo de trabajo, que será al que pertenecerán los usuarios que tenga que enjaular
groupadd sftp
Después creo el usuario 'pedro' y lo asigno este grupo
useradd -G sftp -s /bin/false pedro
Si el usuario está creado, sólo hay que definirle su nuevo grupo; yo lo hago editando el
/etc/passwd
y cambiando el grupo antiguo por el nuevo. Tal vez no sea bonito, pero sí efectivo. Ah, y recuerda cambiarle los permisos a la home de 'pedro', para que coincidan con los que acabas de definirle:
chgrp sftp pedro
Ahora editamos el archivo de configuración del SSHd, donde también definimos los parámetros del sFTP
vi /etc/ssh/sshd_config
Busca y comenta la línea
Subsystem sftp /usr/libexec/openssh/sftp-server
y añade esta en su lugar
Subsystem sftp internal-sftp
y al final de todo, añade estas líneas:
Match Group sftp
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
donde
"Match Group sftp" indica que las siguientes líneas se aplicaran a los usuarios que pertenezcan a este grupo
"ChrootDirectory %h" es el directorio (la home del usuario) que se utilizará para hacer chroot cuando el usuario se autentifique.
"ForceCommand internal-sftp" fueza la ejecucuón del 'internal-sftp' e ignora cualquier comando que sea mencionado en el archivo ~/.ssh/rc
Después, reinicia el servicio SSHd
service ssh restart
Y por último, los permisos; esta es la parte que menos se explica porque todos sabemos de permisos, pero no! cuidado... no es lo que esperas a primera vista.
chmod 755 /home/pedro
chown root /home/pedro
chgrp -R sftp /home/pedro --- (por si aún no lo habías hecho)
chown root /home/pedro
chgrp -R sftp /home/pedro --- (por si aún no lo habías hecho)
y ya está. Con esto el directorio está enjaulado, pero no podrás escribir. Si además necesitas subir archivos o escribir de alguna manera en el directorio, tendrás que crear uno nuevo dentro de este que será el que tenga permisos para todo
mkdir /home/pedro/uploads
chown pedro /home/pedro/uploads
chown pedro /home/pedro/uploads
Y ya lo tienes; haz las pruebas que necesites, que ya es tuyo!
No parece mucho, pero la verdad es que me ha costado un poquito, y si puede servirle de ayuda a alguien, mejor que mejor...
Ah, casi me olvido; la fuente original es ésta, lo mío es prácticamente una traducción