All notes
Ftp

vsftp

FAQ

ftp client said: 500 cannot change directory

Ref. It is mostly often caused by selinux issue:

getenforce
# Res: Enforcing

getsebool -a | grep ftp
# You will find ftp_home_dir is off.

# Set it to be on. Restart vsftpd.
setseboll -P ftp_home_dir on

Enable pasv mode

Ref. Set in /etc/vsftpd/vsftpd.conf as follows, which enables passive mode and restricts it to using the ten ports for data connections. This is useful as you need to open these ports on your firewall.

pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090
iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT

# If after testing this all works then save the state of your firewall with, which will update the /etc/sysconfig/iptables file.
service iptables save

Another solution

Ref. Uncomment and modify the IPTABLES_MODULES line in the /etc/sysconfig/iptables-config file to read:

IPTABLES_MODULES="ip_conntrack_ftp"
Save the iptables config and restart iptables.