Crear un usuario SFTP enjaulado (chroot) bajo Ubuntu. No es un post excesivamente original puesto que es algo que la gente efectúa hasta la saciedad pero por mi mala memoria, reescribo con mi jerga lo que otros ya hicieron.
Esta tarea surge de la necesidad de crear un acceso SFTP a un directorio de imágenes de un Virtual Host.
En Ubuntu 10.04, tenía que crear un acceso SFTP para el usuario neodoo@neodoo.es al directorio /var/www/vhost/www.neodoo.es/www/images y poder subir imágenes a nuestro website.
Creamos el usuario neodoo@neodoo.es apuntando el home al directorio de imágenes
sudo useradd -d /var/www/vhosts/www.neodoo.es/www neodoo@neodoo.es
Le asignamos una contraseña:
sudo passwd neodoo@neodoo.es
Le asignamos el grupo www-data (por defecto ya existe, se utiliza en los Virtual Hosts de Apache).
sudo usermod -g www-data neodoo@neodoo.es
Quitamos la opción de acceso a shell:
usermod -s /bin/false neodoo@neodoo.es
Configuramos el fichero del SSH:
vi /etc/ssh/sshd_config
Comentamos y agregamos lo siguiente:
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Añadimos al final del fichero lo siguiente:
Match group www-data
X11Forwarding no
ChrootDirectory %h
AllowTcpForwarding no
ForceCommand internal-sftp
Reiniciamos el SSH:
/etc/init.d/sshd restart
Hay que tener mucho ojo con los permisos puesto que de lo contrario cuando hagamos un SFTP, el servidor nos cerrará la sesión.
chown root:root /var
chown root:root /var/www
chown root:root /var/www/vhost
chown neodoo@neodoo.es:www-data -R /var/www/vhost/www.neodoo.es
chown root:root /var/www/vhost/www.neodoo.es
chown root:root /var/www/vhost/www.neodoo.es/www
chown root:root /var/www/vhost/www.neodoo.es/www/images
En el fichero /var/log/auth.log puede observarse un mensaje de error en caso de no ajustar correctamente los permisos:
Sep 10 11:45:46 Neodoo sshd[20937]: fatal: bad ownership or modes for chroot directory "/var/www/vhost/www.neodoo.es/www/images"
Para ello, recordar que toda la ruta /var/www/vhost/www.neodoo.es/www/images debe tener permiso de root y así al entrar con el usuario neodoo@neodoo.es vía SSH, estamos enjaulados en este directorio como si fuera el raíz (/).
buenos dias,
porque haces esto:
chown neodoo@neodoo.es:www-data -R /var/www/vhost/www.neodoo.es
Y luego esto:
chown root:root /var/www/vhost/www.neodoo.es
Tratandose del mismo directorio? estoy montando el SFTP con tu guia pero esto me genera dudas.
mi escenario es parecido, necesito montar el servicio con un usuario especifico pero con la ruta de otro user.
Hola Albert,
Hace tiempo que lo escribí pero creo recordar que primero con «chown neodoo@neodoo.es:www-data -R /var/www/vhost/www.neodoo.es» doy permisos a ese directorio y todos los subdirectorios y ficheros que hay en los siguientes niveles.
Con el «chown root:root /var/www/vhost/www.neodoo.es», sólo cambio el permiso de ese directorio (no lo que hay detrás).
Espero haberte aclarado la duda. ¡ Gracias !