Centos7.4安装vsftpd

一、场景需求
1.公司内部需要一个类似于百度网盘的可存储视频、文档的软件,且需要领导具有管理员权限,技术人员需要可上传下载、可修改文件名、可新建文件权限,普通员工仅可下载。
用户名 权限说明

用户名

权限说明

admin

管理员,可以上传、下载、新建文件夹、删除和更改文件和文件夹名

upload

可以下载、上传、新建文件夹,但不能重命名、删除文件和文件夹

Download

只能下载,不能进行其他操作

2.为了数据安全,需要设置仅可内网进行访问。
为操作方便,需要通过文件存储位置(url)直接访问到对应的文件。

二、安装步骤
1.关闭防火墙和SElinux(生产环境开放21端口)

Systemctl stop firewalld &&setenforce 0

2.Yum安装vsftpd

yum -y install vsftpd

3.启动服务并设置开机自启

systemctl enable vsftpd
systemctl start vsftpd

4.修改配置文件,配置前先将配置文件进行备份呢
进到配置文件所在目录:cd /etc/vsftpd 备份配置文件:cp vsftpd.conf vsftpd.conf.bak 修改配置文件:vim vsftpd.conf 下面是修改后的配置,源文件存在的进行修改,没有的自行添加

anonymous_enable=NO #是否允许匿名登陆,默认YES为允许匿名登陆,需改为NO
local_enable=YES	#是否允许本地用户登陆了FTP服务器
write_enable=NO	#是否允许本地用户对FTP服务器具有写权限
local_umask=022	#掩码,本地用户默认掩码为077 可以根据实际需求配置
anon_umask=022	#掩码,虚拟用户的
anon_upload_enable=NO  #是否允许匿名用户上传文件,须将全局的write_enable=YES。默认为YES
anon_other_write_enable=NO  #修改文件名和删除文件
anon_mkdir_write_enable=NO  #是否允许匿名用户创建新文件夹
dirmessage_enable=YES  #是否显示目录说明文件, 需要手动创建.message文件   
xferlog_enable=YES    #是否记录ftp传输过程   
connect_from_port_20=YES   #是否确信端口传输来自20(ftp-data)   
xferlog_file=/var/log/xferlog   #传输日志存放路径
xferlog_std_format=YES		#是否使用标准的ftp xferlog模式
ftpd_banner=Welcome to blah FTP service. # 定制欢迎信息   
chroot_local_user=YES	# 本地用户禁锢在宿主目录中  
listen=IP	#设置vsftpd服务器是否以standalone模式运行
listen_address=192.168.1.25 #输入指定访问的ftp,只内网访问在此设置内网IP即可
pam_service_name=vsftpd #设置PAM使用的名称,默认值为/etc/pam.d/vsftpd
guest_enable=YES	#启用虚拟用户。默认值为NO
guest_username=ubftp #这里用来映射虚拟用户
user_config_dir=/etc/vsftpd/conf  #FTP用户的配置文件地址

5.创建一个不能登录系统的用户,用来做虚拟用户映射

useradd -s /sbin/nologin -d /home/ubftp -M ubftp

为此用户设置密码

passwd  ubftp

centos7 vsftp安装包 centos7vsftpd_centos


6.创建虚拟用户列表,分别是upload、download和admin

touch /etc/vsftpd/vu_list.txt
echo upload >>/etc/vsftpd/vu_list.txt
echo 123456 >>/etc/vsftpd/vu_list.txt
echo download >>/etc/vsftpd/vu_list.txt
echo 123456 >>/etc/vsftpd/vu_list.txt
echo admin >>/etc/vsftpd/vu_list.txt
echo 123456 >>/etc/vsftpd/vu_list.txt

7.查看虚拟用户列表内容

centos7 vsftp安装包 centos7vsftpd_ftp_02


单行为用户名,双行为密码

8.此虚拟用户账号和密码不能被系统账户直接调用,需要创建用于系统认证的db文件

db_load -T -t hash -f /etc/vsftpd/vu_list.txt /etc/vsftpd/vu_list.db

创建该db文件需要db4支持,当前安装系统是带有的,若没有使用yum -y install db4 db4-devel db4-utils 进行安装

9.修改db文件的权限,防止被其他用户修改

centos7 vsftp安装包 centos7vsftpd_filezilla_03

10.配置PAM文件:由于服务器通过调用系统PAM模块来对客户端进行身份验证,因此需要修改指定的配置文件来调整认证方式。PAM模块的配置文件路径为:/etc/pam.d/,这个目录下存放只许多与用户认证有关的配置文件。

centos7 vsftp安装包 centos7vsftpd_配置文件_04


编辑vsftpd文件,64位系统添加如下内容(32位只需将/lib64改为/lib)

auth       required     /lib64/security/pam_userdb.so   db=/etc/vsftpd/vu_list
account    required     /lib64/security/pam_userdb.so   db=/etc/vsftpd/vu_list

centos7 vsftp安装包 centos7vsftpd_ftp_05


11.创建虚拟用户配置文件,根据需求进行配置相应的用户权限

centos7 vsftp安装包 centos7vsftpd_filezilla_06

anon_world_readable_only=NO 	#允许该用户在FTP服务器上阅读文档,设置为no仅下载
write_enable=YES #是否允许登陆用户有写权限。属于全局设置,默认值为YES
anon_mkdir_write_enable=YES  #允许该用户具有创建文件权限
anon_other_write_enable=YES  #允许该用户具有修改权限
anon_upload_enable=YES  #允许该用户拥有上传权限
local_root=/home/ubftp #当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。

12.到/home下创建用户访问目录ubftp(这个目录是下载用户配置下面的,可自定义)

centos7 vsftp安装包 centos7vsftpd_配置文件_07


该目录是FTP的目录,客户端需要访问的目录需要在ubftp目录下继续新建一个目录。

13.客户端能访问的最高级目录 也就是FTP客户端的根目录,所有的操作都需要在此目录下才有权限。

该目录需要拥有读写权限,否则客户端登录后只能读

chmod 777 123 给123目录777权限

然后所属主和所属组需设置为root

centos7 vsftp安装包 centos7vsftpd_配置文件_08


14.注意事项:所有相关配置文件的所属组和所属组都建议设置为root

三、访问方式

第三方客户端FIleZilla 更直观

文件资源管理器 更方便

Web导航栏(仅IE和360浏览器的兼容模式可以访问FTP)不推荐

因为此设置为禁止匿名访问的主动模式,而各客户端默认都是被动模式,所以需要修改客户端的访问方式为主动模式。

1.FIleZilla访问设置

centos7 vsftp安装包 centos7vsftpd_centos7 vsftp安装包_09


centos7 vsftp安装包 centos7vsftpd_ftp_10


打开FIleZilla ——>点击右上角编辑——>选择设置——>选择FTP——>选择主动(A)——>确定

2.文件资源管理器访问配置

打开控制面板,选择网络和Internet

centos7 vsftp安装包 centos7vsftpd_filezilla_11

选择Internet选项

centos7 vsftp安装包 centos7vsftpd_centos7 vsftp安装包_12


选择“高级” 然后下滑找到“使用被动FTP” 默认是勾选状态的,需取消勾选

centos7 vsftp安装包 centos7vsftpd_centos_13


然后点击“应用”并点击“确定”

3.使用FIleZilla访问

centos7 vsftp安装包 centos7vsftpd_filezilla_14

4.使用文件资源管理器访问

centos7 vsftp安装包 centos7vsftpd_ftp_15


centos7 vsftp安装包 centos7vsftpd_配置文件_16


配置的三个用户都可以登录,经过测试,用户的各项权限均可满足需求。