Hoy os voy a enseñar como crear un servidor FTP en Ubuntu de una manera sencilla y con las opciones más importantes.

Podréis compartir archivos vía LAN y vía Internet, loguearos con vuestro usuario/contraseña.

Este manual está destinado para compartir archivos en red local sin salir a internet, ya que la configuración de seguridad para pasar por redes no seguras, es escasa. Si vamos a acceder desde Internet deberemos abrir el puerto 21 en nuestro router.

También podréis encerrar al usuario para que no salga del /home/ y que así, no pueda dañar el sistema eliminando archivos vitales.

Instalación

Os vais a consola y ponéis:

sudo aptitude install vsftpd

De esta forma instalaréis el servidor FTP desde los repositorios de Ubuntu.

Configuración del servidor FTP. Editamos vsftpd.conf

Nos vamos a consola y ponemos:

sudo gedit /etc/vsftpd.conf

Podéis sustituir el gedit por cualquier editor de texto, como por ejemplo vi.

Si queréis poder entrar al servidor con vuestro usuario y clave de Ubuntu, y tener acceso a todos los archivos, incluido /media/discos_duros tenéis que poner la siguiente configuración (me salto las líneas comentadas #).

# Iniciar servidor al inicio del sistema.
listen=YES
# Podemos habilitar o deshabilitar el inicio de sesión de usuarios anónimos, lo ponemos en NO para que solo entremos nosotros.
anonymous_enable=NO
#
# Para poder loguearnos usuarios locales (nosotros).
local_enable=YES
#
# Permiso de escritura en los directorios.
write_enable=YES
# Log de lo que hace el cliente en el servidor.
dirmessage_enable=YES
#
#Hora del servidor (por defecto).
use_localtime=YES
# Activate logging of uploads/downloads.
xferlog_enable=YES
# Puerto de escucha FTP, lo dejamos por defecto (el 20).
connect_from_port_20=YES
# Mensaje de entrada al servidor
ftpd_banner=Bienvenido al servidor FTP de Bron
# Podemos restringir a los usuarios a su propio /home/. Selecciona YES para restringir, y NO para tener acceso a todos los archivos y carpetas.
chroot_local_user=NO

secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem

Los propios comentarios en el código explican qué significa cada parámetro (explicados por nosotros).

Para tener un usuario encerrado en su /home/ y otro de administrador:

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list

Creas un archivo:

sudo gedit /etc/vsftpd.chroot_list

Y pones el nombre del usuario que quieres de administrador, aplicas cambios y reinicias el servidor.

De esta forma, todos los que no estén en la lista, estarán encerrados en su /home/

Iniciar, parar y reiniciar el proceso vsftpd

Para iniciar el servidor FTP una vez configurado a nuestro gusto.

sudo /etc/init.d/vsftpd start

Para parar el servidor FTP.

sudo /etc/init.d/vsftpd stop

Para reiniciar el servidor FTP.

sudo /etc/init.d/vsftpd restart

Si tienes alguna duda pon un comentario y te responderemos, el manual se irá ampliando.

Servidor FTP mediante SSH

http://www.redeszone.net/gnu-linux/servidor-ssh-en-ubuntu-manual-para-configurar-un-servidor-ssh-en-ubuntu-y-entrar-a-tu-equipo-de-forma-remota-con-seguridad/

Para enjaular usuarios al utilizar SFTP debemos editar el fichero /etc/ssh/sshd_config

#Subsystem sftp /usr/lib/openssh/sftp-server (lo ponemos como comentario)

Añadimos al final:

Subsystem sftp internal-sftp
Match user redeszone
ChrootDirectory /home/jail/home
AllowTcpForwarding no
ForceCommand internal-sftp

Esta parte está muy relacionada con enjaular el SSH que hemos hecho anteriormente, miraos el otro manual.

Publicado por Sergio De Luz el 18 noviembre 2010 , actualizado el 10 marzo 2014

  • Roberto Nava

    como puedo cambiar la ruta de la carpeta que se muestra via ftp?

  • Pingback: Banco de pruebas Wireless de routers, puntos de acceso y PLC con punto de acceso inalámbrico : Redes Zone : Portal sobre telecomunicaciones y redes()

  • Sergio

    Hola. Queria saber como crear un usuario, ya que con un manual lo hice, me salio todo bien, y a la hora de entrar con ese mismo usuario creado, me dcia que no existia,. y luego, como dice el compañero de arriba, como se hace para que un usuario solo pueda acceder a un solo directorio? porque el enlace que ha puesto no me funciona :s
    Gracias

    • Antes de crear otro usuario, dime si ya puedes acceder con el que tienes ahora mismo ya que dices que tampoco te dejaba…

      El enlace que te he puesto si funciona, es un PDF, bajatelo 😉

  • # You may specify an explicit list of local users to chroot() to their home
    # directory. If chroot_local_user is YES, then this list becomes a list of
    # users to NOT chroot().
    chroot_local_user=YES
    chroot_list_enable=YES
    # (default follows)
    chroot_list_file=/etc/vsftpd.chroot_list

    Creas un archivo:

    sudo gedit /etc/vsftpd.chroot_list

    Y pones el nombre del usuario que quieres de administrador, aplicas cambios y reinicias el servidor.

    De esta forma, todos los que no estén en la lista, estarán encerrados en su /home/

  • Manual actualizado con esto que me han pedido.

  • Sergio

    Gracias por la contestacion y sobretodo por la rapidez. Antes no me funcionaba el enlace pero ahora ya si, habra sido mi conexion. Luego, al crear un usuario, pongo esto:
    useradd -d /home/usuario1 -s/bin/bash usuario1
    y no me daba error ni nada, me pedia que creara la contrasenya y todo.. pero ahora estoy intentando crear otro y no me deja xD
    No lo entiendo. En cambio, como bien dices, si pongo el nombre de mi sesion, me entra perfectamente y veo TODO, incluso puedo entrar en modo anonymous.
    Me podrias explicar los pasos para crear un usuario? Gracias

    • El usuario crearlo normal,

      SISTEMA/ADMINISTRACIÓN/ usuarios y grupos

      Creas un usuario, con los permisos que quieras.

      Y luego haces lo que te he dicho.

      Te recomiendo deshabilitar la parte de modo anonymous porque podría ser peligroso 😉

      • Sergio

        Pero si lo creo como tu dices, podre conectarme al servidor remotamente con el usuario creado?

        • Sí claro, sólo debes redireccionar el puerto 21 hacia la IP interna de la máquina y listo 😀

    • JUAn

      oe q loko gracias x resporder altoke .Al fin encontre algo q estaba buscando

  • Pingback: Manuales de SSH y FTP para GNU/Linux : Actualizados con nuevas opciones : Redes Zone : Portal sobre telecomunicaciones y redes()

  • Uriol

    Hola, estoy intentando configurar el vsftpd y tengo un par de problemas. El primero es que quiero un usuario estandard con permisos de lectura y escritura y no me aclaro…Mi intención es poder transferir archivos desde el portatil al PC de sobremesa que es el servidor. La carpeta a la que debe tener acceso este usuario es /home/ftp/uriol, que está creada y puedo verla desde el cliente pero, evidentemente, está vacía. Ahora se trata de llenarla con los archivos del portatil, pero no puedo subirlos. El archivo vsftpd.conf lo tengo de la siguiente manera:

    listen=YES
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    use_localtime=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    ftpd_banner=Welcome to my FTP service.
    chroot_local_user=YES
    chroot_local_user=YES
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd.chroot_list
    secure_chroot_dir=/var/run/vsftpd/empty
    pam_service_name=vsftpd
    rsa_cert_file=/etc/ssl/private/vsftpd.pem

    y el archivo vsftpd.chroot_list sólo tiene el nobre de mi usuario, con lo que está así:

    uriol

    Ambos archivos están en la carpeta /etc

    Me gustaría también crear un usuario con acceso a todo el sistema.
    El segundo problema es que no puedo acceder al servidor desde fuera de mi LAN. Me estoy peleando con NO-IP y, a la hora de instalarlo me pide el usuario y la contraseña de la cuenta pero no me los acepta. La cuenta está activada.

    A ver si me podéis ayudar que llevo un par de dias dándole vueltas al asunto y no consigo solucionar la historia…
    Muchas gracias

    • Buenas,

      Te he editado el comentario para no tener esto tan largo ya que la mayoría son comentarios.

      Creo que tienes dos veces chroot_local_user = YES, a menos que me haya colado al editarlo, miratelo.

      El archivo de configuración es correcto, con el usuario uriol podrás acceder a todo el sistema, y con el resto de usuarios sólo a su carpeta /home/.

      Ponme el LOG de Filezilla cuando accedes a ver que error te sale 🙂

      Luego hacemos lo otro, primero tenemos que ver que funcione en local 😀

      • Uriol

        Gracias por ser tan rápido y perdón por la parrafada del vsftpd.conf. Ciertamente el chroot_local_user=YES estaba duplicado.Ya lo he corregido. El log de Filezilla al conectarme es éste:

        Status: Connection established, waiting for welcome message…
        Status: Connecting to 192.168.1.195:21…
        Status: Connection established, waiting for welcome message…
        Response: 220 Welcome to my FTP service.
        Command: USER uriol
        Response: 331 Please specify the password.
        Command: PASS **********
        Response: 230 Login successful.
        Command: OPTS UTF8 ON
        Response: 200 Always in UTF8 mode.
        Status: Connected
        Status: Retrieving directory listing…
        Command: PWD
        Response: 257 “/home/ftp/uriol”
        Status: Directory listing successful

        Y al intentar subir archivo me responde esto:

        Status: Connecting to 192.168.1.195:21…
        Status: Connection established, waiting for welcome message…
        Response: 220 Welcome to my FTP service.
        Command: USER uriol
        Response: 331 Please specify the password.
        Command: PASS **********
        Response: 230 Login successful.
        Command: OPTS UTF8 ON
        Response: 200 Always in UTF8 mode.
        Status: Connected
        Status: Starting upload of /media/Disc Secundari/Musica/Beatport/Beatport Gener 2012/Drum & Bass/Tantrum Desire – Uncontrolled (Original Mix).mp3
        Command: CWD /home/ftp/uriol
        Response: 250 Directory successfully changed.
        Command: TYPE I
        Response: 200 Switching to Binary mode.
        Command: PASV
        Response: 227 Entering Passive Mode (192,168,1,195,75,52).
        Command: STOR Tantrum Desire – Uncontrolled (Original Mix).mp3
        Response: 553 Could not create file.
        Error: Critical file transfer error

        Muchas gracias de nuevo

        • Puedes crear carpetas?? y leer archivos? Puedes “navegar” por / o /etc por ejemplo?

          • Uriol

            No puedo crear directorios, pero parece que moverme por los discos si que puedo…

            Command: CWD /
            Response: 250 Directory successfully changed.
            Command: PWD
            Response: 257 “/”
            Command: PASV
            Response: 227 Entering Passive Mode (192,168,1,195,109,204).
            Command: LIST
            Response: 150 Here comes the directory listing.
            Response: 226 Directory send OK.
            Status: Directory listing successful
            Status: Retrieving directory listing…
            Command: CWD etc
            Response: 250 Directory successfully changed.
            Command: PWD
            Response: 257 “/etc”
            Command: PASV
            Response: 227 Entering Passive Mode (192,168,1,195,254,246).
            Command: LIST
            Response: 150 Here comes the directory listing.
            Response: 226 Directory send OK.
            Status: Calculating timezone offset of server…
            Command: MDTM adduser.conf
            Response: 213 20120423133505
            Status: Timezone offsets: Server: 0 seconds. Local: 7200 seconds. Difference: 7200 seconds.
            Status: Directory listing successful
            Status: Retrieving directory listing…
            Command: CWD ConsoleKit
            Response: 250 Directory successfully changed.
            Command: PWD
            Response: 257 “/etc/ConsoleKit”
            Command: PASV
            Response: 227 Entering Passive Mode (192,168,1,195,175,200).
            Command: LIST
            Response: 150 Here comes the directory listing.
            Response: 226 Directory send OK.
            Status: Directory listing successful
            Status: Creating directory ‘/home/ftp/New directory’…
            Command: CWD /home/ftp
            Response: 250 Directory successfully changed.
            Command: MKD New directory
            Response: 550 Create directory operation failed.
            Command: MKD /home/ftp/New directory
            Response: 550 Create directory operation failed.

          • Tienes permisos de lectura pero no de escritura, tampoco te deja crear carpetas… voy a mirar detenidamente el fichero .CONF porque hay algo que falla, mándame el fichero de configuración .CONF por email (http://www.redeszone.net/contacto/) porque hay algo que se me escapa, así te lo modifico directamente ahí y probamos 🙂

          • Jesus

            Disculpa como otorgo los permisos para crear y eliminar archivos

            me podrias mandar la respuesta ami correo xxxxxxxx@outlook.com

          • Uriol

            ok!Enviado

  • yeroke

    Mil gracias!! Me funciono a la primera.

  • franco

    como creo un servidor ftp, pero solo para una LAN.. sin acceso a internet se puede??? se puede usar filezilla???

  • Angel

    Hola,

    Muy buen tutorial,

    solo tengo una pregunta, como puedo hacer para que el usuario enjaulado pueda crear una carpeta y borrar los archivos de su propia carpeta?

    De antemano gracias

    • Un usuario enjaulado tiene permisos para borrar y crear carpetas DENTRO de su “jaula”.

  • Kimakara

    Hola,

    Por si a alguien le puede interesar la alternativa, también cave la opción en servidores Linux de crear usuarios enjaulados (chrooted) con scponly.

    Scponly permite enjaular usuarios y restringir la shell a comandos sftp y scp, mas info en http://kimakara.blogspot.com.es/2012/08/crear-usuarios-scp-sftp-en-entornos.html

    Saludos

  • Pingback: Cómo crear un servidor FTP en diferentes Sistemas Operativos()

  • Pingback: Cómo crear un servidor FTP en diferentes Sistemas Operativos | ChulloHack()

  • Jorge Vélez

    Hola! Ojalá alguien pueda responder, ahora que estoy migrando de windows a linux (ubuntu en este caso) quiero instalar un servidor ftp, la instalación no es el problema, la cosa es que no encuentro la manera de hacer que la carpeta compartida sea distinta a /home/usuario, necesito compartir una ruta como /media/usuario/EXTHDD/DOCUMENTOS… y me pregunto si hay forma de crear usuarios ftp para diferentes rutas y niveles de acceso de este tipo sin que sea necesario que sean usuarios del sistema (de la manera como es posible en filezilla server solo disponible en windows)….

    Gracias a quien pueda responder…

    • Hola,

      Te recomiendo el servidor proFTPd que te permite crear usuarios virtuales en el sistema y también poner distintas rutas. Tiene una gran cantidad de opciones.

      Mira este manual (con usuarios reales): http://www.redeszone.net/gnu-linux/proftpd/

      Cualquier cosa me comentas.

  • Rodrigo Alberto Cedillo

    Alguien podrá ayudarme, al ejecutar la instrucción apt-get update refleja el siguiente error:

    W: Imposible obtener http://mx.archive.ubuntu.com/ubuntu/dists/trusty-backports/universe/i18n/Translation-en No puedo iniciar la conexión a 3127:80 (0.0.12.55). – connect (22: Invalid argument)

    alguna idea?

    • Tienes que tener permisos de administrador y conexión a Internet.

  • miguel angel

    hola yo tengo una duda el servidor ftp y el servicio son los mismo

  • Pingback: SRI_Práctica 4_GESTIÓN_FTP_Sesión__18/11/2014 | Diario Miguel Angel Torres()

  • angel

    como hago eso sin internet soy nuevo novato… no tengo internet en casa pero quiero hacerlo en 2 pc

  • Marcelo Vera

    Como tengo acceso a /media/discos_duros ???

    • Tendrás que crear un usuario con permisos ahí y subir por el árbol de directorios, no obstante te aconsejo usar PROFTPD que tiene muchas más opciones y es más fácil de configurar para mi gusto.

  • Sebastian Quintero

    Tengo dos preguntas …

    1. Instalé un servidor FTP en ubuntu… desde un FTP cliente puedo realizar descargar pero no puedo subir archivos, qué permisos debo darle para poder subir la info?.

    2. Para empezar,pausar y reiniciar el proceso vsftpd es necesario init.d ….. cuando doy los comandos la respuesta que obtengo es: command not found. Qué me hace falta para poder ejecutarlos bien ?

    Gracias

    • Hola,

      1. La carpeta donde estés debe tener permisos de escritura donde esté el usuario que ha iniciado sesión.
      2. Puedes usar “sudo service vsftpd start|restart|stop” o también “sudo /etc/init.d/vsftpd start|restart|stop” pero la ruta completa.

      No obstante te aconsejo usar ProFTPd, va muy bien y te permite crear usuarios virtuales.

  • Ysbel Herrera

    Monte un sistema en el servidor y necesito darle permisologia a una carpeta por medio del servidor y tiene una pantalla negra sera que teepeo desde alli mismo

  • nohemi

    una pregunta que es muy urgente….
    porque no me deja reininiciar, parar e iniciar el servicio de vsftpd????

  • jesus

    hola amigo tengo una duda, mira realizo la configuración tal como la indicas pero al introducir:
    sudo /etc/init.d/vsftpd start
    me marca el siguiente error
    sudo: /etc/init.d/vsftpd: command not found
    al revisar /etc/init.d no encuntro el archivo vsftpd supongo que hay debe de estar pero nada, tengo que crearlo cual es su configuración o que onda…Sin embargo el servicio ftp esta habilitado.

    • ¿Has instalado vsftpd? Te recomiendo instalar Proftpd que es mejor y tiene más opciones 🙂

  • Raop

    Hola como creo un usuario administrador para que tenga acceso a todos los directorios y todo lo de mi servidor que pueda subir eliminar editar TODO se los agradeceré!

    • Simplemente logueate con el usuario root y ya podrás hacer y deshacer a tu antojo, o crea un usuario con permisos de root en el sistema.

  • Daniel Llamas

    El aporte de este manual es muy bueno y sugerente

  • juan

    se usa ubuntu de escritorio o el server?

  • Fer Palma

    ** (gedit:18579): WARNING **: Set document metadata failed: Establecer el atributo metadata::gedit-position no está soportado

    xfce@xfce-IdeaPad-S210-Touch:~$ sudo /etc/init.d/vsftpd start
    sudo: /etc/init.d/vsftpd: orden no encontrada

    (ME SALE ESTO EN LA TERMINAL)

  • Edgar Robledillo Ruiz

    Buenos días,

    Tengo una pregunta, necesito crear usuarios que pueden acceder a una carpetas determinadas, pero en cambio hay otras que no deben acceder. Ejemplo: La carpeta “PUBLICA” puede acceder todo el mundo, pero la carpeta del usuario, solo puede acceder el propio usuario y el root… Para esto me podría servir lo de “enjaular” al usuario?? O asignando permisos a la carpeta con chmod tendría bastante??

    Gracias por la ayuda y manual.

    • Hola,

      lo mejor es organizarlo por grupos de usuario y permisos de carpetas.

  • ¿Servidor de medios DLNA? A través de una VPN en la misma red local podrías hacerlo…o con el VLC reproducir contenido directamente vía FTP.

    • Manuel Rodriguez

      Gracias amigo eres genial… Oye ¿ Podría utilizar un reproductor como cmus o ncmpcpp, instalando un servidor FTP, algo así como hacer Streaming cliente-servidor? En linux Ubuntu

      • No te sabría decir, no conozco esas herramientas :S Sorry.

  • Daniel Roselló Ramos

    Como puedo hacer un centro de descarga directa? en debian 8?

  • Plathonic Yb

    Buenas amigos, instale el servicio ftp en Ubuntu server 14, todo iva bien pero de repente me sale connection refused

  • Luis Ruiz Figueroa

    Cuando me trató de conectar desde Internet me dice que es un servidor sftp y no ftp que necesito el protocolo adecuado. Que puede suceder , lo que necesito es que sea ftp ya que una cámara ip debe guardar las imágenes y solo tiene protocolo ftp

    • Hola,

      ¿Con qué programas intentas acceder? ¿Qué software de FTP has instalado? vsftpd o proftpd?

      • Luis Ruiz Figueroa

        He tratado con varios , pero el filezilla me arroja ese mensaje , tengo el vsftpd

      • Luis Ruiz Figueroa

        desde filezilla me dice lo siguiente

        Respuesta: SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
        Error: No se puede establecer una conexión FTP a un servidor SFTP. Por favor seleccione el protocolo apropiado.
        Error: Critical error: No se pudo conectar al servidor

        estoy utilizando vsftpd

        • Hola,

          ¿En la barra de direcciones de Filezilla pones: ftp://IP? porque creo que estás poniendo sftp delante y entonces intenta conectarse por ahí…

          • Luis Ruiz Figueroa

            Si también he probado así , pero no entra con nmap aparece puerto 21 ftp pero no entran los usuarios

          • ¿Tienes dado de alta dicho usuario en el sistema no? No deberías tener ningún problema, prueba a instalar proftpd y quitar vsftpd, entra sin hacer nada con ip+puerto 21 y usuario/clave, sin tocar nada de la configuración, debería funcionar sin problemas, comprobado.

          • Luis Ruiz Figueroa

            Si esta creado y en el grupo ftp , si instalo proftpd sin configurar nada puedo acceder desde afuera de la red lan ?

          • Sí, siempre y cuando hagas el correspondiente reenvío de puertos en el router y firewall en el sistema.

          • Luis Ruiz Figueroa

            ahora probe de forma local, y si puedo acceder, eso quiere decir que hay algun problema desde afuera de la red

          • Tema de reenvío de puertos, seguro 🙂 Si desde la red local puedes, debes revisar tu router para hacer reenvío de puertos.

      • Luis Ruiz Figueroa

        vsftpd y filezilla

Últimos análisis

Valoración RZ
8
Valoración RZ
9
Valoración RZ
9
Valoración RZ
10
Valoración RZ
9
Valoración RZ
10
Valoración RZ
7
Valoración RZ
9
Valoración RZ
10