参考文章
https://blog.csdn.net/sinat_30802291/article/details/81706152
https://blog.csdn.net/will0532/article/details/79175478
一、安装前准备
1、设置关闭SELinux对ftp的限制
方法一:
[root@localhost ~]# getsebool -a | grep ftp
ftp_home_dir --> on
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
[root@localhost ~]# setsebool -P ftpd_full_access on
方法二:
关闭selinux
[root@localhost ~]# setenforce 0
永久关闭,需要修改配置文件
[root@localhost ~]# vim /etc/selinux/config
SELINUX=enforcing
更改为SELINUX=disabled
查看是否关闭
[root@localhost ~]# getenforce
Disabled
2、将ftp加入防火墙白名单
方法一:
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=ftp
[root@localhost ~]# firewall-cmd --reload
查看防火墙状态:
[root@localhost ~]# firewall-cmd --list-all
方法二:
关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
二、安装vsftp
1、为了方便后续操作,现将用户切换至root用户 su
2、查看是否已安装vsftpd
方法一:
[root@localhost ~]# rpm -q vsftpd
vsftpd-3.0.2-10.el7.x86_64
方法二:
[root@localhost ~]# vsftpd -v
vsftpd: version 3.0.2
3、yum安装vsftpd
[root@localhost ~]# yum -y install vsftpd
4、安装完成后,查看位置
[root@localhost ~]# whereis vsftpd
vsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz
5、启动VSFTP服务器
[root@localhost ~]# systemctl start vsftpd.service
[root@localhost ~]# systemctl restart vsftpd.service
[root@localhost ~]# systemctl enable vsftpd.service
6、查看是否启动成功
[root@localhost ~]# netstat -npal | grep vsftpd
tcp6 0 0 :::21 :::* LISTEN 10763/vsftpd
可以看到服务已经启动,端口为21,pid为10763
三、匿名用户登录
查看配置文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
设置语句anonymous_enable=YES,表示可以匿名登录
重启服务器 systemctl restart vsftpd.service
此时可以通过浏览器ftp://192.169.xxx.xxx匿名登录ftp服务器,对应的目录是/var/ftp
四、多用户配置
1、创建宿主用户
创建宿主用户文件夹
[root@localhost ~]# cd /home
[root@localhost ~]# mkdir vsftpd
创建vsftpd使用的系统用户,主目录为/home/vsftpd,禁止ssh登录。创建之后所有虚拟用户使用这个系统用户访问文件
[root@localhost ~]# useradd vsftpd -d /home/vsftpd -s /bin/false
2、创建虚拟用户
创建两个虚拟用户,编辑如下内容,奇数行为用户名,偶数行为密码
[root@localhost ~]# vim /etc/vsftpd/loginusers.conf
ftp1
123456
ftp2
123456
生成虚拟用户数据文件
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/loginusers.conf /etc/vsftpd/loginusers.db
[root@localhost ~]# chmod 600 /etc/vsftpd/loginusers.db
编辑pam认证,启用这个数据文件
[root@localhost ~]# vim /etc/pam.d/vsftpd
注释掉所有内容后,增加下面的内容
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers
3、创建虚拟用户配置文件
创建虚拟用户配置文件夹,存放所有虚拟用户配置文件
[root@localhost ~]# mkdir /etc/vsftpd/userconf
创建虚拟用户配置文件,这里的文件名称必须与虚拟用户名一致
[root@localhost ~]# cd userconf
[root@localhost ~]# touch ftp1 ftp2
增加用户配置如下面的内容
local_root=/home/vsftpd/ftp/
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
配置说明
//设置FTP账号根目录,指定用户访问
local_root=/home/vsftpd/ftp/
//允许写入权限,包括修改
write_enable=YES
//允许匿名用户浏览,下载文件
anon_world_readable_only=NO
//允许匿名用户上传
anon_upload_enable=YES
//允许匿名用户上传/建立目录
anon_mkdir_write_enable=YES
//允许匿名用户具有建立目录,上传之外的权限,如重命名,删除
anon_other_write_enable=YES
4、修改主配置文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
更改
anonymous_enable=NO
去掉注释
chroot_local_user=YES
ascii_upload_enable=YES
ascii_download_enable=YES
增加
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/userconf
allow_writeable_chroot=YES
配置介绍:
anonymous_enable=NO 禁止匿名用户登录
chroot_local_user=YES 禁止用户访问除主目录以外的目录
ascii_upload_enable=YES
ascii_download_enable=YES 设定支持ASCII模式的上传和下载功能
guest_enable=YES 启动虚拟用户
guest_username=vsftpd 虚拟用户使用的系统用户名
user_config_dir=/etc/vsftpd/userconf 虚拟用户使用的配置文件目录
allow_writeable_chroot=YES 最新版的vsftpd为了安全必须用户主目录没有写权限,才能登录,或者使用allow_writeable_chroot=YES
最后重启服务使配置生效
[root@localhost ~]# systemctl restart vsftpd