Voy a escribir este post para que todo aquél que lleve una hora intentando configurar este teóricamente sencillo servidor, no pierda el tiempo como lo he perdido yo.
Crear usuario FTP
$ adduser mi_usuario_ftp
Hacer que la home del usuario ftp sea solo de lectura [evitar error 500 OOPS: vsftpd: refusing to run with writable root inside chroot ()]
$ chmod a-w /home/mi_usuario_ftp
Esto hace que el directorio del usuario mi_usuario_ftp sea de solo lectura. Si no quieres esto, no lances el comando anterior y lee más abajo sobre la configuración del fichero /etc/vsftpd.conf (1)
Instalar vsftpd
$ sudo apt-get install vsftpd
Configurar vsftpd (referencia)
Descomentar o añadir las siguientes líneas del archivo de configuración /etc/vsftpd.conf
chroot_local_user=YES chroot_list_enable=YES # Los usuarios que aparezcan en cada una de las líneas de este fichero, podrán cambiar libremente de directorio. # El resto, solo podrán estar en el directorio de su HOME (muy recomendable) chroot_list_file=/etc/vsftpd.chroot_list
Así que creamos el fichero vacío para que todos los usuarios que se conecten no puedan cambiar de directorio.
$ sudo touch /etc/vsftpd.chroot_list
(1) Si quieres que el usuario pueda subir o borrar ficheros, tienes que añadir además la siguiente entrada a /etc/vsftpd.conf
allow_writeable_chroot=YES
Impedir que ciertos usuarios puedan iniciar sesión FTP
En /etc/ftpusers está la lista de usuarios que no puede conectarse por FTP (por defecto hay usuarios como root). Bastante recomendable añadir los usuarios que no quieras que inicien sesión por FTP.
# /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5). root daemon bin sys sync games man lp mail news uucp nobody
Limitar el acceso del usuario FTP (opcional)
Podemos limitar el inicio de sesión estableciendo un shell de no login
$ usermod -s /usr/sbin/nologin mi_usuario_ftp
y en el archivo de shells válidos /etc/shells, hay que añadir:
/usr/sbin/nologin
Alternativamente, si quieres que pueda iniciar sesión pero no por ssh, editamos el archivo de configuración:
$ sudo nano /etc/ssh/sshd.config
y añadir las siguientes líneas:
AllowUsers usuario1 usuario2 DenyUsers mi_usuario_ftp
Reiniciamos el servicio (En Ubuntu Server)
$ restart ssh
Y ya está todo.
Recuerda que el tráfico FTP no está encriptado y no es nada recomendable conectarse por FTP en redes sin tráfico encriptado
Deja una respuesta