centos 6.3上新建了vsftp ,用于文件下载使用 。/var/ftp/pub可以匿名登陆下载 。如果想要上传则需要使用密码验证 。
登陆使用的账号是ftpclient ,路径在/home/ftpclient 。在/var/ftp/pub下新建一个软链接:
cd /var/ftp/pub
ln -s /home/ftpclient client
但用ftp客户端匿名连上去后,进入client目录报550错误,无权限访问。
ftp> cd pub
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
lrwxrwxrwx 1 0 0 15 Sep 08 03:30 client -> /home/ftpclient
226 Directory send OK.
ftp> cd client
550 Failed to change directory.
无论怎么修改/home/ftpclient的权限都是一样。后面在网上找到,可以用mount –bind的方式规避权限问题。操作步骤如下:
cd /var/ftp/pub
mkdir client
mount --bind /home/ftpclient client
此时550问题完美解决 。
注:在开启有selinux 防火墙时,vsftp也会报500错误 。如果是selinux的问题时,可以通过getsebool ftpd_disable_trans命令查看,输出状态是否为on 。如果不是on ,可以通过如下命令解决:
setsebool ftpd_disable_trans 1
同理,smb在selinux下也会有类似问题,同样可以按该方法解决:
setsebool -P samba_enable_home_dirs=1
不过使用该命令设置的配置在重启后会失效 。
REF:
http://insanelabs.com/linux/linux-vsftpd-and-symbolic-links/