一、vsftpd安装

1、查看是否安装了ftp相关的安装包
[root@test~]# rpm -qa | grep vsftpd
查看系统中是否安装了vsftpd服务,如果没有安装,先安装下服务
[root@test~]# yum -y install vsftpd //这里如果没有配置 yum源,也可以直接用rpm的方式安装
查看一下是否安装成功
[root@test~]# rpm -qa | grep vsftpd
vsftpd-2.2.2-24.e16.x86_64 //看到这个文件,说明安装成功了
2、启动服务并设置开机自动启动
[root@test~]# service vsftpd start //启动服务
[root@test~]# service vsftpd stop //关闭服务
[root@test~]# service vsftpd restart // 重启服务
[root@test~]#chkconfig --level 3 5 vstpd on //设置自启
[root@test~]#chkconfig --list vsftpd //查看是否设置成功
vsftpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
3、配置vsftpd文件
vsftpd 主要有三个配置文件,都位于/etc/vsftpd目录下:
ftpusers //是用户控制文件,在这个文件里面的用户,默认是不可以使用vsftpd服务的
user_list //默认功能和第一个一样,但是通过配置,我们可以让只有在第二个文件里的用户才能使用vsftpd服务,这样新加入的用户就不会自动拥有vsftp的使用权,这样可以让vsftpd服务器更加安全
vsftpd.conf //ftp服务器的主配置文件

二、匿名访问(可上传可下载)

vsftpd 安装好,启动,默认匿名用户就是可以访问的 ,只是不能上传(如果不行,可以试着关闭防火墙[root@test~]#service iptables stop)接下主要介绍的匿名用户上传权限
匿名用户上传需要注意三个地方:
A、上传目录的写入权限
B、服务器的配置支持上传
C、selinux支持上传
1、设置目录写入权限
[root@test~]# cd /var/ftp //切换到ftp目录下
[root@test ftp]# mkdir upftp //新建一个upftp目录
[root@test ftp]#chown ftp upftp //更改目录所有者(默认是root,更改成ftp,目录默认权限是755)
2、配置vftpd的配置文件
[root@test~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak //备份配置文件(个人习惯)
[root@test~]# vi /etc/vsftpd/vsftpd.conf
#anon_upload_enable=YES //匿名上传
#anon_mkdir_write_enable=YES //匿名写入
取消上面两行的注释(也就是去掉这两行前面的#号)
保存退出
3、修改selinux
[root@test~]#getsebool -a | grep ftp //显示ftp所有的boo值,通过管道
vsftpd配置--个人笔记_第1张图片
[root@test~]#setsebool -P allow_ftpd_anon_write on //打开匿名写入管道
vsftpd配置--个人笔记_第2张图片
修改上下文
[root@test~]#ls -Zd /var/ftp/upftp
[root@test~]#chcon -t public_content_rw_t /var/ftp/upftp

vsftpd配置--个人笔记_第3张图片

准备就绪,只待重启服务器

[root@test~]#reboot

重启后,匿名应该就可以直接访问上传下载了

三、基本用户访问

基本用户的访问控制,需要注意两个方面:
A、配置文件的修改
B、selinux的修改
1、修改vsftpd的配置文件
[root@test~]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO //禁止匿名访问
anon_upload_enable=YES // 注释这行(也就是在这行前面加#号)
anon_mkdir_write_enable=YES // 注释这行(也就是在这行前面加#号)
保存退出
2、修改selinux
[root@test~]#getsebool -a | grep ftp //显示ftp所有的boo值,通过管道
[root@test~]#setsebool -P allow_ftpd_anon_write off //关闭匿名上传通道(之前打开的)
[root@test~]#setsebool -P ftp_home_dir on
vsftpd配置--个人笔记_第4张图片
3、创建虚拟用户
[root@test~]#useradd user1 //添加用户user1
[root@test~]#usermod -s /sbin/nologin user1 //禁止用户user1登录系统
[root@test~]#passwd user1 //设置密码
重启vsftpd服务,然后测试
PS1:上面这样配置,风险很大,危险性较高;连接上的FTP用户,不仅可以访问自己的家目录,还可以自由切换到其他目录下
vsftpd配置--个人笔记_第5张图片
因些,下面需要使用chroot功能
[root@test~]# vi /etc/vsftpd/vsftpd.conf
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
取消上面两行的注释(也就是去掉这两行前面的#号)
保存退出
chroot list默认是不存在的,需要我们手动建立,把user1这个用户加到这个文件中,重启vsftpd服务
再测试,可以发现用户锁定在了自己的家目录下,不能切换
还有一点,提醒大家,匿名用户登陆,默认是choot了的
PS2:系统添加一个用户也默认有ftp的登陆权限,也存在一定的风险,所以我们要制定更严格的ftp用户策略,我们将通过下面的配置,使只有在user_list文件中的用户才能登录系统
[root@test~]# vi /etc/vsftpd/vsftpd.conf
userlist_enable=YES //这行系统默认存在
userlist_deny=NO //这行需要自己手动添加
userlist_file=/etc/vsftpd/user_list //这行需要自己手动添加(可以在文未添加)
保存,退出,重启vsftpd服务
再测试,会发现此时user1用户已经无法再登录了
然后把user1用户加入到user_list文件中,重启服务,这样user1用户就可以访问了
注意:优先权 ftpusers(拒绝)>user_list(系统用户,虚拟用户)>chroot_list(虚拟用户)
如果ftp用户存在ftpusers文件中,无论是否加入其它两个文件,都是无法访问ftp服务的;
如果ftp用户只存在chroot_list中,也是无法访问ftp服务的;
虚拟用户即要加入chroot_list(锁定在自家目录下)文件中,也需要加入user_list(访问ftp服务权限)文件中

参考文档:https://blog.51cto.com/redking/134839
https://blog.51cto.com/redking/136218