今天陋室博客有一台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爱好者在本博客交流。