CentOS安装FTP配置总结

今天陋室博客有一台VPS装有CentOS 5.5并部署了LAMP服务,为了方便文件上传,打算安装一个ftp服务,于是选了vsftpd来实现。

安装好vsftpd后,打开配置文件:

#vim /etc/vsftpd/vsftpd.conf

把下面几行注释去掉,让其配置生效:

local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES      #这行可能需自己写
pam_service_name=vsftpd
userlist_enable=YES

配置保存后重启vsftpd服务:

#service vsftpd restart

接下来添加本地用户w1(用户目录设置成网站目录):

#useradd –d /var/www/html/w1 w1

把网站目录权限的拥有者改为w1:

#chown –R w1 /var/www/html/w1

这样的话,基本的vsftpd服务配置好了。但是这样配置完成后客户端并不能连接上,显示错误停留在连接状态,卡在那里。

凭经验来看,是网络层上的问题,由于使用了CentOS且iptables默认开启了,所以首先判断防火墙上端口是否打开:

#service iptables status
Chain INPUT (policy DROP)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
2    syn_flood  tcp  --  0.0.0.0/0            0.0.0.0/0           tcp flags:0x17/0x02
3    allow_icmp  all  --  0.0.0.0/0            0.0.0.0/0
4    syn_protect  all  --  0.0.0.0/0            0.0.0.0/0
5    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
6    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:20 state NEW
7    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22 state NEW
8    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:3306 state NEW
9    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80 state NEW
10   ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:8080 state NEW
11   ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:443 state NEW
12   ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:8443 state NEW

从结果上来看ftp的21号端口没有打开,初步判断是由于防火墙的问题:

#iptables -A INPUT -p tcp --dport 21 -j ACCEPT

如果端口号20也没有打开的朋友,请使用命令:

#iptables -A INPUT -p tcp --dport 20 -j ACCEPT

这时ftp连接已经可以,为了保险起见我们把被动模式连接的端口也打开:

#iptables -A INPUT -p tcp ---dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT

这时客户端连接打开了,可是在用户验证的时候出现了错误503,经过一些资料查阅,发现是selinux设置的问题:

# getsebool -a |grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
allow_tftp_anon_write --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_disable_trans --> off
ftpd_is_daemon --> on
httpd_enable_ftp_server --> off
tftpd_disable_trans --> off

该问题其实在红帽RHCE考试中会遇到,selinux是必考的内容,我们只要打开ftp_home_dir的值开启为on:

#setsebool -P ftp_home_dir 1

为了避免麻烦,我直接把allow_ftpd_full_access也一同开启:

#setsebool -P allow_ftpd_full_access 1

这样客户端连接正常了,上传一个文件试试,改变目录,改变文件权限,都没有问题了。到此CentOS下安装vsftpd就完成了,欢迎linux爱好者在本博客交流。

此条目是由 malu8 发表在 未分类 分类目录的。将固定链接加入收藏夹。

评论已关闭。