vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()错误的解决方法

当我们限定了用户不能跳出其主目录之后,使用该用户登录FTP时往往会遇到这个错误:

500 OOPS: vsftpd: refusing to run with writable root inside chroot ()

这个问题发生在最新的这是由于下面的更新造成的

– Add stronger checks for the configuration error of running with a writeable root directory inside a chroot(). This may bite people who carelessly turned on chroot_local_user but such

从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。

要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列两项中的一项:

#vi /etc/vsftpd.conf

allow_writeable_chroot=YES

CentOS7安装设置FTP

一.安装FTP

1.检测是否安装了FTP:

[root@localhost ~]# rpm -q vsftpd
如果安装了会显示版本信息:
[root@localhost ~]# vsftpd-2.0.5-16.el5_5.1
否则显示:
[root@localhost ~]# package vsftpd is not installed

2. 安装FTP

[root@localhost ~]# yum install vsftpd

2.1 完成FTP安装后,将/ETC/VSFTPD/USER_LIST文件和/ETC/VSFTPD/FTPUSERS文件中的ROOT这一行用#注释掉

# root

2.2 执行以下命令

#setsebool -P ftpd_disable_trans=1
修改/etc/vsftpd/vsftpd.conf,在最后一行处添加local_root=/

2.3 重启FTP进程

#service vsftpd restart
**注:每次修改过ftp相关的配置文件,都需要重启ftp进程来生效。 ftp服务器就可以使用了。**

二. 配置FTP

1.创建一个账号为test的账户:

#mkdir /tmp/test //首先创建好目录
#adduser -d /tmp/test -g ftp -s /sbin/nologin test
//-s /sbin/nologin是让其不能登陆系统,-d是指定用户目录为/opt/srsman,即该账户只能登陆ftp,却不能用做登陆系统用。

1.1 为TEST设置密码

#passwd test
Changing password for user beinan.//接下来会出现让你设置新的密码
New password:
Retype new password:
passwd: all authentication tokens updated successfully

2. 限制用户目录,不得改变目录到上级

2.1 修改/ETC/VSFTPD/VSFTPD.CONF

将这两行
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
注释去掉
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

2.2 新增一个文件: /ETC/VSFTPD/CHROOT_LIST

内容写需要限制的用户名:
test
重新启动vsftpd
#service vsftpd restart

3. 设置开机启动

(1)找到/etc/rc.local文件
(2)打开该文件,在最后一行添加:service vsftpd start
(3)保存,退出

4. 用FTP客户端快速连接