Sign up ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It's 100% free, no registration required.

I have set up a FTP server using vsftpd and enabled anonymous upload and download. The problem I have is that when I upload a directory it will be uploaded successfully (I can see it in server), but the next time I want to check that directory, FTP client shows an empty directory!!

There is no error logged in /var/log/vsftpd.log. The pub folder (home folder for anonymous ftp user) has also write permission. I tested various config options but none helped!

The latest config options I set are like below:


I even turned off firewall once for testing it, but it didn't change anything!

share|improve this question
Stumbled upon this myself. Many pages have the same question, but often not the (full) answer. It's the PASV ports that need to be reachable in PASV mode. This may need the firewall/IPtables to be adjusted:… –  user102760 Feb 11 at 15:21

3 Answers 3

Two suggestions:

  1. Does whatever user ID that will run FTP have "write" permissions on the "root" directory that vsftpd will use as its current working directory? vsftpd doesn't want a writable working directory.

  2. The vsftpd.conf file can have a hide_file directive. Depending on the regular expression specified by that directive, anonymous users might not be allowed to see any files.

I've had this problem with vsftpd in the past, and I recall having a vsftpd.conf setting that caused it, so read that config file closely, understand all the params and their values.

share|improve this answer
Thanks for suggestions. Yes that directory has write permission. When I restrict write permission to owner, I get permission denied while uploading, so I made it world writable. And I checked hide_file, it is not set in config file, which according to unix man page of vsftd.conf should be set to (none). –  saeedn Feb 2 '12 at 6:49

Have you considered adding hide_file=NO?

share|improve this answer
Yes, I tried it, but it didn't help –  saeedn Feb 4 '12 at 9:19

I just forced my VSFTPD to run only in active mode and that seemed to have worked for me. To do that put the following line in your config file:


What I ended up doing, though, was enabling the passive mode as for some applications it appeared to have been a requirement. It looks like VSFTPD does not play with defaults nicely so it is best to specify your preference explicitly:


It is also important to get up the correct iptables settings if you are running a firewall. Here are mine, extracted from my /etc/sysconfig/iptables file:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1024:65535 -j ACCEPT
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.