PS1'date'>:/home/username>ftp x.x.xx.xx
Connected to x.x.xx.xx (x.x.xx.xx).
220 (vsFTPd 3.0.2)
Name (x.x.xx.xx:username): username
331 Please specify the password.
Password:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
421 Service not available, remote server has closed connection
解决办法:
方法1:
chroot_local_user=YES #锁定用户登录ftp后,只能到自己的家目录下,不能随便切换到其它目录。但是普通系统用户默认是可以在自己的家目录里写文件的,vsftp出于安全性要求,
如果锁定了用户的ftp登录目录,则所在目录不能有写权限。
方法2:
/etc/vsftpd/vsftpd.conf配置文件增加如下一行
allow_writeable_chroot=YES --可行。ftp目录必须要有写权限。
方法3:
添加例外
/etc/vsftpd/chroot_list 这个配置文件中加入用户名
修改完配置文件事要重启vsftpd服务。
听起来有点绕,按下面的配置就没问题了:
#chmod o-w /data/ftp
vi /etc/vsftpd/vsftpd.conf 修改下面三行。
chroot_local_user=YES --锁定ftp用户目录。不能随便切换到其它目录。
local_root=/data/ftp ---指定用户登录后的目录。或者不指定也行,系统用户登录ftp后,直接到用户自己的家目录。
allow_writeable_chroot=yes
如果要添加例外,即允许某个用户可以切换到其它目录,则添加下面两行参数,否则可以不用配置。
chroot_list_enable= YES --这个是启用用户列表,对应下一句的chroot_list文件。
chroot_list_file=/etc/vsftpd/chrot_list ---在这个文件中的用户则不受限制,可以切换到其它目录。这个文件需要手动创建。
这样,FTP用户登录后,只能在指定目录下进行读写操作,不能随便切换到其它目录。
通过方法3,解决了使用ftp报错的问题。