Publicado en Linux

Configurar vsftpd y evitar los errores 500 y 530

La instalación y configuración de vsftpd, para algunos el servidor FTP más seguro del mundo, es muy fácil e intuitiva. El problema viene con ciertas particularidades y, sobre todo, con los errores ‘500 OOPS: vsftpd: refusing to run with writable root inside chroot()’ y ‘530 Login incorrect’ que no dejan conectarse con un usuario local del servidor. Vayamos por partes.

Instalación

Como en la mayoría de los programas básicos, se puede instalar mediante apt o yum según tu sistema. Yo lo he hecho en un Ubuntu Server 12.04 así que el comando sería el siguiente:

sudo apt-get install vsftpd

También puedes descargarlo de su web oficial.

Configuración

vsftpd

Vamos a abrir el fichero de configuración del vsftpd y analizar los puntos más importantes:

sudo nano /etc/vsftpd.conf

Hay muchos parámetros que podemos configurar, pero esto estaría lo básico:

  • listen = YES
    Para que se inicie con el sistema.
  • anonymous_enable = NO
    No permitimos que usuarios anónimos puedan conectarse a nuestro servidor. Es por seguridad, pero si tú quieres permitirlo tendrás que configurar algunos parámetros más para que no puedan trastear mucho.
  • local_enable = YES
    Para poder conectarse con los usuarios locales del servidor donde está instalado.
  • write_enable = YES
    Si quieres que los usuarios puedan escribir y no sólo descargar cosas.
  • local_umask = 022
    Esta máscara hace que cada vez que subas un archivo, sus permisos sean 755. Es lo más típico en servidores FTP.
  • chroot_local_user = YES
    chroot_list_enable = YES
    Sirven para que los usuarios locales puedan navegar por todo el árbol de directorios del servidor. Evidentemente esto sólo queremos permitírselo a ciertos usuarios, para ello tenemos el siguiente parámetro.
  • chroot_list_file = /etc/vsftpd.chroot_list
    Indicamos el fichero donde están listados los usuarios que pueden navegar hacía arriba por los directorios del servidor, lo normal es que sea el administrador del servidor y poco más.

Hay pocos parámetros más, pero si quieres échales un vistazo porque vienen bien explicados en el propio fichero.

vsftpd.chroot_list

Este fichero no suele existir así que debemos crearlo y editarlo. Aquí irán los nombres de usuarios que queremos que puedan listar todos los directorios del servidor y no sólo el suyo asignado por FTP. Esto viene bien para usuarios administradores.

sudo nano /etc/vsftpd.chroot_list

Este comando te abrirá un documento vacío, pon en cada línea un nombre de usuario.

Grupo FTP

Todos los usuarios que queramos utilizar para FTP deben estar albergados en el mismo grupo para así darles unos permisos especiales como no poder conectarse por SSH al servidor.

Creamos el grupo:

sudo groupadd ftp

Creamos una shell fantasma para que no puedan entrar a la consola del servidor:

sudo mkdir /bin/ftp

Abrimos la lista de shells del sistema:

sudo nano /etc/shells

Agregamos nuestra shell fantasma al final del fichero:

/bin/ftp

Usuario FTP

Lo primero es crearle una carpeta de usuario. Puedes hacerlo donde tú quieras, pero yo suelo meterles a todos en una subcarpeta del home general.

Creamos la carpeta para meter a los usuarios:

sudo mkdir /home/ftp

Creamos la carpeta del usuario particular:

sudo mkdir /home/ftp/antonio

Creamos el usuario:

sudo useradd -g ftp -d /home/ftp/antonio -c "Antonio Garcia Lopez" antonio

Explicación:

-g ftp => el usuario pertenece al grupo ftp
-d /home/ftp/antonio => el directorio principal del usuario es /home/ftp/antonio
-c “Antonio Garcia Lopez” => el nombre completo del usuario es Antonio Garcia Lopez
antonio => la última palabra será el nombre de usuario

Ahora le asignamos una contraseña:

sudo passwd antonio

Y finalmente le asignamos la shell fantasma:

sudo usermod -s /bin/ftp antonio

Este paso se podía haber hecho al crear el usuario, pero lo dejo separado por si queremos asignarle la shell fantasma o no.

Errores conocidos

530 Login incorrect

Este error es el más común con la última versión del vsftpd. Es un gran quebradero de cabeza con una solución muy simple:

sudo apt-get remove vsftpd
sudo rm /etc/pam.d/vsftpd
sudo apt-get install vsftpd

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

Este error se da porque vsftpd no permite que los usuarios puedan escribir en su carpeta raíz. Una solución es quitarle los permisos de escritura a esa carpeta. Esto hará que el usuario no pueda hacer nada en su propia carpeta, así que lo mejor es crearle otra dentro con permisos normales para que pueda utilizarla.

sudo chmod 555 /home/ftp/antonio
sudo mkdir /home/ftp/antonio/documentos
sudo chown antonio:ftp /home/ftp/antonio/documentos

Con todo esto ya deberías poder acceder al servidor FTP con cualquier usuario del sistema sin ningún problema.

34 comentarios sobre “Configurar vsftpd y evitar los errores 500 y 530

  1. Hola, acabo de hacer todo lo de el tutorial, y me sale un error:
    Respuesta: 553 Could not create file.
    Error: Error crítico de transferencia de fichero

    Le he asignado permisos 755 al directorio del usuario.

    write_enable=YES

    Haber si me podeis ayudar, gracias de antemano.

  2. Hola Alejandro, resulta que dependiendo de la versión del vsftpd, no se permite escribir en la carpeta raíz del usuario, es decir, si su carpeta personal apunta a /home/ftp/alejandro, esa carpeta debe tener permisos 555, y ya las que cuelguen de ahí, podrán tener permisos 755 o los permisos de escritura que tú quieras. Un saludo.

  3. Excelente, de todos los artículos con el problema “500 OOPS: vsftpd: refusing to run with writable root inside chroot()”, es con el que pude resolverlo. Muchas gracias por tu aporte.

    Alberto

  4. Tutorial muy util y muy claro, todo funciona a la primera que en la informatica es raro ;) fantastico tutorial, muchas gracias.
    saludos.

  5. una pregunta, como puedo cambiar el directorio por otro si ya cree el usuario para que tenga este: /home/ftp/antonio

    por este por ejemplo: /home/Descargas/antonio

  6. A ver si puedo expresarte mi duda con claridad…

    Tengo un user asignado a una carpeta, este user lo usa un grupo de personas, porque es para intercambiar archivos. La duda es como puedo asignar a dicho directorio o carpeta permisos para que puedan subir archivos, pero no borrar nada, con dicho user.

    Eso, en primer lugar. En segundo es tener un user con el que sí pueda tener chmod 777, no sé si me explico, en tal carpeta, la misma que cito anteriormente.

    Espero haber sido claro en mi pregunta, llevo hs tratando de ver cómo manejarlo y si bien vsftpd funciona fantastico, no le he encontrado la solucion a esto.

    Gracias por tu atención!

  7. Hola,

    hay una pequeña errata a cambiar en el post

    sudo nano /etc/vsftpd.chroot_lsit

    sudo nano /etc/vsftpd.chroot_list

    gracias por todo ahora me funciona genial

  8. Hola, todo funciona de maravilla pero al intentar reiniciar el servidor me da el siguiente error : No /usr/sbin/vsftpd found running; none killed

    .. y no se reinicia .. ¿podrían ayudarme, por favor?

    Un saludo

  9. Hola, gracias por el tutorial,
    me ocurre que si le doy una shell falsa no se conecta por sftp (comando o filezilla) pero si por comando ftp y si le doy /bin/bash no enjaula a los usuarios.

    Aclaro que desinstale, elimine etc/pam.d/vsftpd y reinstale.

    Pero nada.
    Alguna idea?

    Muchas gracias.

  10. saludos e seguidos los pasos del tuto y funciona salvo que los usuarios pueden ingresar siempre al directorio raiz y es lo que intento evitar, y no logro resolver ese gran problema

  11. Buen dia He realizado todos los paso que se mencionan. luego me salio el erro 530 que corregí con tus comentarios y luego me surgió este mensaje:

    500 OOPS: priv_sock_get_result

    trate de solucionar lo como comentas en tu post pero me sigue saliendo, a que se debe el error y como puedo solucionarlo?

    de antemano gracias.

  12. Me auto respondo, buscando ma afondo me encontre con un blog que mensiona que instalando libpam-ldap y libpam-chroot se repara el problema, dejo la información aquí por si le es de utilidad a otros usuarios, saludos.

  13. Hola, he cometido un error estúpido, configuré todo siguiendo las instrucciones mostradas, pero, cuando llegamos a la parte del usuario del ftp puse el único nombre de usuario que tengo en el servidor y ahora no puedo iniciar por shell. :P

    Me ayudas?

Deja un comentario

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