# Problemas VSFTPD Resuelto

## cy5

 :Sad:   Me instale el vsftpd sguiendo los pasos del Howto vsftpd (http://gentoo-wiki.com/HOWTO_vsftpd#Starting_the_daemon) pero al tratar de entrar con cualquier cliente ftp me da un error de que no se puede iniciar sesion en la linea de comando me manda esto

```

Name (localhost:root): esanchez

331 Please specify the password.

Password:

500 OOPS: cannot change directory:/home/esanchez

Login failed.

```

aqui les pongo mi archivo de configuracion

```

# Example config file /etc/vsftpd/vsftpd.conf

#

# The default compiled in settings are fairly paranoid. This sample file

# loosens things up a bit, to make the ftp daemon more usable.

# Please see vsftpd.conf.5 for all compiled in defaults.

#

# READ THIS: This example file is NOT an exhaustive list of vsftpd options.

# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's

# capabilities.

#

# Allow anonymous FTP? (Beware - allowed by default if you comment this out)

#solo lectura.

anonymous_enable=YES

#

# Uncomment this to allow local users to log in.

local_enable=YES

#

# Uncomment this to enable any form of FTP write command.

write_enable=YES

#

# Default umask for local users is 077. You may wish to change this to 022,

# if your users expect that (022 is used by most other ftpd's)

local_umask=022

#

# Uncomment this to allow the anonymous FTP user to upload files. This only

# has an effect if the above global write enable is activated. Also, you will

# obviously need to create a directory writable by the FTP user.

anon_upload_enable=YES

#

# Uncomment this if you want the anonymous FTP user to be able to create

# new directories.

anon_mkdir_write_enable=YES

# Virtual users will use the same privileges as local users

virtual_use_local_privs=YES

#

# Activate directory messages - messages given to remote users when they

# go into a certain directory.

dirmessage_enable=YES

#

# Activate logging of uploads/downloads.

xferlog_enable=YES

#

# Make sure PORT transfer connections originate from port 20 (ftp-data).

connect_from_port_20=YES

#

# If you want, you can arrange for uploaded anonymous files to be owned by

# a different user. Note! Using "root" for uploaded files is not

# recommended!

chown_uploads=NO

#chown_username=whoever

#

# You may override where the log file goes if you like. The default is shown

# below.

#xferlog_file=/var/log/vsftpd.log

#

# If you want, you can have your log file in standard ftpd xferlog format

xferlog_std_format=YES

#

# You may change the default value for timing out an idle session.

idle_session_timeout=600

#

# You may change the default value for timing out a data connection.

data_connection_timeout=120

#

# It is recommended that you define on your system a unique user which the

# ftp server can use as a totally isolated and unprivileged user.

#nopriv_user=ftpsecure

#

# Enable this and the server will recognise asynchronous ABOR requests. Not

# recommended for security (the code is non-trivial). Not enabling it,

# however, may confuse older FTP clients.

#async_abor_enable=YES

#

# By default the server will pretend to allow ASCII mode but in fact ignore

# the request. Turn on the below options to have the server actually do ASCII

# mangling on files when in ASCII mode.

# Beware that on some FTP servers, ASCII support allows a denial of service

# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd

# predicted this attack and has always been safe, reporting the size of the

# raw file.

# ASCII mangling is a horrible feature of the protocol.

ascii_upload_enable=NO

ascii_download_enable=NO

#

# You may fully customise the login banner string:

#ftpd_banner=Welcome to blah FTP service.

#

# You may specify a file of disallowed anonymous e-mail addresses. Apparently

# useful for combatting certain DoS attacks.

#deny_email_enable=YES

# (default follows)

#banned_email_file=/etc/vsftpd/banned_emails

#

# 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_list_enable=YES

# (default follows)

#chroot_list_file=/etc/vsftpd/chroot_list

#

# You may activate the "-R" option to the builtin ls. This is disabled by

# default to avoid remote users being able to cause excessive I/O on large

# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume

# the presence of the "-R" option, so there is a strong case for enabling it.

ls_recurse_enable=NO

#

# When "listen" directive is enabled, vsftpd runs in standalone mode and 

# listens on IPv4 sockets. This directive cannot be used in conjunction 

# with the listen_ipv6 directive.

listen=YES

#

# This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6

# sockets, you must run two copies of vsftpd whith two configuration files.

# Make sure, that one of the listen options is commented !!

#listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

```

La verdad no se que puede estar pasandoLast edited by cy5 on Tue Jun 19, 2007 4:31 pm; edited 2 times in total

----------

## Inodoro_Pereyra

 *Quote:*   

> 500 OOPS: cannot change directory:/home/esanchez

 

Existe ese directorio? Habria que empezar por ahi, por otro lado, si existiera, revisar los permisos del mismo.

Salud!

----------

## cy5

el directorio existe ademas le di permisos chmod 777 a el directorio esanchez y aun asi me envia el mismo error 

permisos a la carpeta

```

drwxrwxrwx  9 esanchez        esanchez        4096 jun 13 17:00 esanchez

```

mismo error 

```

Name (localhost:root): esanchez

331 Please specify the password.

Password:

500 OOPS: cannot change directory:/home/esanchez

Login failed.

```

----------

## cy5

 :Confused:  bueno no me di mas mala vide dije yo y decidi probra con otros server ftp pero el resultado es el mismo con el proftpd avance un poco mas pero el mismo detalle no me deja entrar a las cuentas de los usarios en home ni el anonymous entraba bien lo quite y probe con el pure ftp y es lo mismo que el vsftpd entra en anonimous me deja ver la carpeta public y upload pero nada me cree los usarios virtuales para separarlos de los usuarios del sistema pero aun asi me dice que la contraseña para los usuario no es correcta y me saca...   :Question:   :Shocked:  no se que pueda ser....   :Rolling Eyes:  cabe destacar que la carpeta home y los usarios tienen chmod 777

----------

## cy5

 :Confused:   Bueno me las tube que arreglar solo dijo el otro pero funciono al final levanto el VSFTPD pero obviamente con algunos tips que no aparecen en ningún howtos de la red ni en estos foros por lo que veo....

TIPS

1. Cambiarle los permisos a la carpeta public esta ubicada en /var/ftp/public  hagan un chmod 777 o 666 en esa carpeta tanto public como ftp

2. No crear previamente ninguna cuenta en el sistema si ya tienes creadas bueno ni modo pero solo se validaran las creas después de instalar el vsftpd o cualquier otro.

3. Encasillar a cada usuario en su carpeta home con las instrucciones

```

# users to NOT chroot().

chroot_list_enable=YES

# (default follows)

chroot_list_file=/etc/vsftpd/chroot_list

```

4. Crear el archivito chroot_list dentro de este archivo usando vim le pones los usuarios que deberian poder entrar en el ftp y subir y descargar.

y listo levanto el asunto esa fue mi manera de hacerlo funcionar...   :Laughing: 

----------

## Inodoro_Pereyra

Lamento no poder ayudarte mas, en su momento tuve un FTP funcionando sin mayores inconvenientes, recuerdo que tuve que cambiar los permisos tanto a /home/usuario como a /home para que funcione, pero solo eso.

De momento ya lo he dado de baja y tendria que instalarlo para tratar de reproducir el error, de todas formas, googleando un poco hay mucha gente con tu mismo problema... Algunos culpan a selinux, por ejemplo.

http://www.linuxquestions.org/questions/showthread.php?t=432558

para mas informacion: CLICK

SALUD!

----------

## cy5

Ya veo es un problema muy generalizado, pero veo que se da mas con distrubuciones como Gentoo, Fedora, Redhat y menos con otras Mandriva, Ubuntu te lo digo por en mi casa tengo Fedora y me funciono a la primera con proftpd pero aqui con gentoo mandaba el Bendito error, un buen comienzo puede ser el Howto de vsftpd para mi esa fue la base para salir del atoyadero. 

Clic por aqui http://gentoo-wiki.com/HOWTO_vsftpd#Install_VSFTPD

 :Rolling Eyes: 

----------

## Inodoro_Pereyra

Y el problema en si, como lo solucionaste? Por curiosidad simplemente.

Salud!

----------

## cy5

 :Confused:   No se si tenga algo que ver los de los usuarios del sistema pero quite 2 cuentas la mia y otra al azar las volvi a crear y entraban las otras no entraban las ya creadas y vi que por tener instalado en esa maquina un server de correo Postfix yo cuando instale el server mail le habia puesto a la carpeta home y todos los usuarios dentro del grupo de postfix lo que hice fue darle los permisos a cada usuario dentro del grupos individuales asi el usuario esanchez pertenece al grupo esanchez y así sucesivamente para  cada usuario por lo menos aqui son 9 usuarios el dolor fuera que fueran 100...   :Shocked: , luego de hacer eso seguí los cuatro pasos que describí arriba 

 *Quote:*   

> 
> 
> 1. Cambiarle los permisos a la carpeta public esta ubicada en /var/ftp/public hagan un chmod 777 o 666 en esa carpeta tanto public como ftp
> 
> 2. No crear previamente ninguna cuenta en el sistema si ya tienes creadas bueno ni modo pero solo se validaran las creas después de instalar el vsftpd o cualquier otro.
> ...

 

reiniciar el servicio y probar primero con ftp localhost puse mi user esanchez mi contraseña y vuala me dejor crear carpetas y todo y como a este nivel funciono me fui al trash de Win instale SmartFTP y accese correctamente

----------

## Inodoro_Pereyra

Buenisimo, seguro que a alguien mas le va a venir bien el dato.

Salud!

----------

## takaokim

 *cy5 wrote:*   

>   Bueno me las tube que arreglar solo dijo el otro pero funciono al final levanto el VSFTPD pero obviamente con algunos tips que no aparecen en ningún howtos de la red ni en estos foros por lo que veo....
> 
> TIPS
> 
> 1. Cambiarle los permisos a la carpeta public esta ubicada en /var/ftp/public  hagan un chmod 777 o 666 en esa carpeta tanto public como ftp
> ...

 

------------------------------------------------------------------------------------------------

Hola, cómo están, se que ya tiene tiempo que este tema del foro se cerro, pero publico algunos resultados que creo pueden ser de más ayuda para quien lo necesite, ya que la solución que proponen en este foro es buena, pero me encontré con el problema de que no podía enjaular al usuario o en otras palabras tenía el problema de que todos los usuarios virtuales accedían a la misma carpeta relacionada a mi usuario real que en este caso era "ftp" (/var/ftp/), y por ende no podía hacer que cada usuario virtual tuviera su propia carpeta.

Antes que nada debemos checar que tengamos un usuario físico al cual se le van a asignar los usuarios virtuales, normalmente es el de "ftp", para checarlo tecleamos en terminal: vim /etc/passwd. Lo que nos da una salida parecida a esta:

     apache:x:48:48:Apache:/var/www:/sbin/nologin

     mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash

     ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

Si no llegasen a tener el usuario ftp, pueden crearlo así:

      //Creando el grupo primero

      groupadd -g 50 ftp

      //Luego crear el usuario

      useradd -s /sbin/nologin -m -d /var/ftp -c "FTP User" -u 14 -g 50 ftp

Bueno lo primero que hay que hacer es seguir las instruciones básicas de este Tutorial (http://www.cyberciti.biz/tips/centos-redhat-vsftpd-ftp-with-virtual-users.html) hasta el paso 4 de lo que pongo aquí.

1.- Instalar Berkeley DB And Utilities Under RHEL / CentOS

     # yum install db4-utils db4

2.- Crear los usuarios virtuales que van a ir a la base de datos

     # cd /etc/vsftpd

     # cat > vusers.txt

     Salida:

     vivek

     clavevivek

3.- Crear la base de datos:

     # db_load -T -t hash -f vusers.txt vsftpd-virtual-user.db

     # chmod 600 vsftpd-virtual-user.db

4.- Configurar el vsftpd.conf pero a diferencia del Tutorial poner esta configuracion:

     anonymous_enable=NO

     local_enable=YES

     write_enable=YES

     virtual_use_local_privs=YES

     guest_enable=YES

     //Este es el usuario físico que por así decirlo representa a los virtuales: 

     guest_username=ftp   

     //En vez de poner estas dos líneas como marca el tutorial (user_sub_token=$USER, local_root=/home/vftp/$USER)

     //manejamos a los usuarios virtuales de forma distinta, ya que en mi caso existia una especie de bug, que provocaba 

     //que no se creara de manera automática la carpeta del usuario virtual y que ni siquiera la encontrara. 

     //Entonces ponemos en su lugar la siguiente linea:

user_config_dir=/etc/vsftpd/users

     chroot_local_user=YES

     hide_ids=YES

     local_umask=077

     dirmessage_enable=YES

     xferlog_enable=YES

     connect_from_port_20=YES

     xferlog_std_format=YES

     listen=YES

     pam_service_name=vsftpd.virtual

     userlist_enable=YES

     tcp_wrappers=YES

5.- Creamos el archivo PAM, que utiliza nuestra base de datos nueva

     # cat > /etc/pam.d/vsftpd.virtual

     #%PAM-1.0

     auth       required     pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-user

     account    required     pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-user

     session    required     pam_loginuid.so

     //[Ctrl-d] para guardar

6.- Nos movemos a nuestra carpeta de vsftpd y creamos la de "users"

     #cd /etc/vsftpd/

     # mkdir users

     #ls

     ftpusers  user_list  users  vsftpd.conf  vsftpd_conf_migrate.sh  vsftpd_original.conf  vsftpd-virtual-user.db  vusers.txt

7.- Creamos el archivo de configuracion personalizada de nuestro usuario virtual

     # cat > /etc/vsftpd/users/vivek

     dirlist_enable=YES

     download_enable=YES

     local_root=/home/vftp/vivek

     write_enable=YES    

     //[Ctrl-d] para guardar

8.-Creamos nuestra carpeta que pusimos de nuestro usuario virtual y cambiamos los permisos

    #mkdir /home/vftp/vivek 

    #chown -R ftp:ftp /home/vftp

    #chown -R ftp:ftp /home/vftp/vivek

9.- Reiniciamos o arrancamos el servicio de vsftpd

    # service vsftpd restart

    Shutting down vsftpd:                                      [  OK  ]

    Starting vsftpd for vsftpd:                                [  OK  ]

10.- Nos conectamos por FTP

   # ftp localhost

   //Si tienen habilitado "listen_address" en su archivo de vsftpd.conf, ponen la IP, ejm: #ftp 189.50.12.22

   Connected to localhost (127.0.0.1).

   220 (vsFTPd 2.0.5)

   Name (localhost:root): vivek

   331 Please specify the password.

   Password:

   230 Login successful.

   Remote system type is UNIX.

   LISTO!!, Si se conentan con Filezilla verán que encadena el directorio del usuario virtual y entra directo a la carpeta que programamos (/home/vftp/vivek)

Espero sea de ayuda!!... Buena Suerte!

----------

