centos 6.3上新建了vsftp ,用于文件下载使用 。/var/ftp/pub可以匿名登陆下载 。如果想要上传则需要使用密码验证 。

登陆使用的账号是ftpclient ,路径在/home/ftpclient 。在/var/ftp/pub下新建一个软链接:

1cd /var/ftp/pub
2ln -s /home/ftpclient client

但用ftp客户端匿名连上去后,进入client目录报550错误,无权限访问。

1ftp> cd pub
2250 Directory successfully changed.
3ftp> ls
4200 PORT command successful. Consider using PASV.
5150 Here comes the directory listing.
6lrwxrwxrwx    1 0        0              15 Sep 08 03:30 client -> /home/ftpclient
7226 Directory send OK.
8ftp> cd client
9550 Failed to change directory.

无论怎么修改/home/ftpclient的权限都是一样。后面在网上找到,可以用mount –bind的方式规避权限问题。操作步骤如下:

1cd /var/ftp/pub
2mkdir client
3mount --bind /home/ftpclient client

此时550问题完美解决 。

注:在开启有selinux 防火墙时,vsftp也会报500错误 。如果是selinux的问题时,可以通过getsebool ftpd_disable_trans命令查看,输出状态是否为on 。如果不是on ,可以通过如下命令解决:

1setsebool ftpd_disable_trans 1

同理,smb在selinux下也会有类似问题,同样可以按该方法解决:

1setsebool -P samba_enable_home_dirs=1

不过使用该命令设置的配置在重启后会失效 。