选用CentOS 7.2 64位的系统,阿里云在公共镜像中提供了该系统镜像,用户可直接在控制台中更换此系统。并通过远程链接进入到系统中。
vsftpd是linux下的一款小巧轻快,安全易用的FTP服务器软件,是一款在各个Linux发行版中最受推崇的FTP服务器软件。
1.安装vsftpd,直接yum 安装就可以了
yum install -y vsftpd
出现下图表示安装成功。
相关配置文件:
cd /etc/vsftpd
/etc/vsftpd/vsftpd.conf
//主配置文件,核心配置文件
/etc/vsftpd/ftpusers
//黑名单,这个里面的用户不允许访问FTP服务器
/etc/vsftpd/user_list
//白名单,允许访问FTP服务器的用户列表
启动服务
chkconfig vsftpd on
//设置开机自启动
service vsftpd restart
//重新启动ftp服务
netstat -antup | grep ftp
//查看ftp服务端口
2.安装完成之后就要重启vsftpd服务
到vsftpd的主配置文件里面
把这个改为NO 默认是YES (改为NO 就是禁止匿名用户登录,不需要注释)
同时按照下图配置,不可以让ftp用户跳出自己的家目录,否则太危险了,需要做限制,默认是注释掉的,把#号去掉 然后重启vsftpd。
(注意:这里也可以把chroot_list_file=/etc/vsftpd/chroot_list的注释打开)
3.创建ftp用户
(yuanfei这个用户智能连接ftp无法登录系统,默认家目录是在var/www/html 文件夹下面)
给yuanfei这个用户设置密码
然后给家目录修改权限,否则你无法上传文件
4.修改selinux
默认是enforcing 把他修改为disabled
因为修改selinu后需要重启服务,因为服务器不可以重启所以执行上面这个命令,临时修改selinux的策略,无需重启!
5.重启vsftpd服务,并且下次自动启动
6.配置防火墙(要打开21端口)
打开/etc/sysconfig/iptables文件
vi /etc/sysconfig/iptables
在REJECT行之前添加如下代码
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
保存和关闭文件,重启防火墙
service iptables start
(ps.这一步也可以直接关闭防火墙,但是不建议这样做,关闭防火墙方法如下:
基本的vsftpd服务配置好了。但是这样配置完成后客户端并不能连接上,主要应该是默认防火墙设置下,CentOS的防火墙是不开放ftp服务的,需要添加模块和开放21端口才能提供ftp访问。
1.添加ip_conntrack_ftp 模块
[root@localhost ~]# vi /etc/sysconfig/iptables-config
添加下面一行
IPTABLES_MODULES="ip_conntrack_ftp"
2.打开21端口
[root@localhost ~]# vi /etc/sysconfig/iptables
添加(注意这里添加要在REJECT行之前添加)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
3.重启iptables使新的规则生效
[root@localhost ~]# service iptables restart
到此,应该是可以了,若软件测试连接过程中,在用户验证的时候出现了错误503,应该是selinux设置的问题:可以用下面的命令检查
[root@localhost ~]#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
这是selinux的问题,我们只要打开ftp_home_dir的值开启为on:,allow_ftpd_full_access也一同开启即可。
[root@localhost ~]#setsebool -P ftp_home_dir 1
[root@localhost ~]#setsebool -P allow_ftpd_full_access 1
附录2:介绍下vsftpd.conf的配置文件参数说明。
cat /etc/vsftpd/vsftpd.conf
用户登陆控制
参数 | 说明 |
---|---|
anonymous_enable=YES | 接受匿名用户 |
no_anon_password=YES | 匿名用户login时不询问口令 |
anon_root=(none) | 匿名用户主目录 |
local_enable=YES | 接受本地用户 |
local_root=(none) | 本地用户主目录 |
用户权限控制
参数 | 说明 |
---|---|
write_enable=YES | 可以上传(全局控制) |
local_umask=022 | 本地用户上传文件的umask |
file_open_mode=0666 | 上传文件的权限配合umask使用 |
anon_upload_enable=NO | 匿名用户可以上传 |
anon_mkdir_write_enable=NO | 匿名用户可以建目录 |
anon_other_write_enable=NO | 匿名用户修改删除 |
chown_username=lightwiter | 匿名上传文件所属用户名 |