Seleccionar página

Crear un usuario SFTP enjaulado (chroot) bajo Ubuntu

por | Sep 10, 2011 | GNU / Linux

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 (/).

Te puede interesar…

2 Comentarios

  1. Albert

    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.

    Responder
    • Francisco Javier Solans Benedí

      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 !

      Responder

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *