vsftpd 服务器报错:500 OOPS: vsftpd: refusing to run with writable root inside chroot()

今天安装vsftp服务器,在修改了 chroot_local_user 属性以后,发现进行客户端访问的时候会报错:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
到网上查了资料,得到解决问题方法如下:
“如果启用chroot,必须保证ftp根目录不可写,这样对于ftp根直接为网站根目录的用户不方便,所以建议假如ftp根目录是/home/${cjh},则将访问权限改写如下
chmod a-w /home/cjh

vsftpd+iptables

1.查看系统版本

[root@Apache vsftpd]# lsb_release -a
LSB Version:	:base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID:	CentOS
Description:	CentOS release 6.5 (Final)
Release:	6.5
Codename:	Final
[root@Apache vsftpd]# 

2. 由于FTP采用的是被动方式传输,所以使用的端口是随机的, 造成iptable 无法打开指定的端口 所以我们需要把FTP使用的端口限定在一定范围内。

 

方法如下: 编辑/etc/vsftpd/vsftpd.conf在文件后面添加如下代码:

pasv_enable=YES //使用被动模式,等待客户端连接

pasv_min_port=60001
pasv_max_port=60010

然后保存,wq 重启vsftp

[root@Apache vsftpd]# service vsftpd restart

3. 编辑iptable的配置文件

[root@Apache vsftpd]# vim /etc/sysconfig/iptables

添加如下代码,开放端口60001~60010

-A INPUT -m state --state NEW -m tcp -p tcp --dport 60001:60010 -j ACCEPT

同时要将默认的FTP,21要端口添加到放行端口的列表

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 60001:60010 -j ACCEPT  //开放端口60001到60010
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT //开放21端口 
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

4.重启iptables

 

[root@Apache vsftpd]# service iptables restart