第一步:安装vsftpd和mariadb

~]# yum install mariadb-server

~]# yum install vsftpd

因为中CentOS 7平台上/lib64/security/中没有pam_mysql模块驱动,需要编译安装pam_mysql这个模块。

wKioL1cbQkbxYGsGAABkuuwgRuc228.png


准备编译环境

安装Development Tools 和 service platform Development这两个包组,另外需要安装依赖到的开发包pam-devel,openssl-devel,mariadb-devel。

~]# yum -y  groupinstall  "Development Tools" "Server Platform Development"
~]# yum -y install pam-devel openssl-devel mariadb-devel


开始编译

wKiom1cbTxGw9SS2AAC7wlar-_w719.png

此过程没有问题,则执行编译安装

pam_mysql-0.7RC1]# make -j 2 && make install

安装后,可以查看pam的mods目录是否有这个模块了wKioL1cbUEeAuHVBAABvsluqmmg896.png


配置

添加一个本地用户vuser 作为被虚拟用户映射的用户。别设置其家目录(FTP共享资源的路径是访问用户的家目录)

]# useradd -s /sbin/nologin -d /share/ftp vuser

修改其属主为vuser,并确认其对所有用户可读可执行。

]# chown vuser /share/ftp


编辑配置文件

wKiom1cbeHKAkvlVAABjJV-9-Ls949.png


在/etc/pam.d/下创建这个配置虚拟用户认证方式的文件vuser_conf,写入认证方式。

wKiom1cbeNCC6BlfAACCUZxcpD4266.png


然后登陆mysql创建要用的数据库和表,加入虚拟用户信息。

wKiom1cbeSTiivJGAADuLh3HvoE516.png


授权mysql用户

wKioL1cbeemAPzxDAABJRVl8sQk201.png


验证权限是否设置有效。

wKiom1cbeSWwL-KcAADRcDYLPFg714.png


修改共享资源目录的权限,并创建子目录。

wKioL1cbgIuyT-zaAADWeryf5i0573.png


第二步:启动服务


wKioL1cbfUDCeQq5AAC5VRaiZtg419.png


放一些资源放到对应目录下,并确认vuser对其有读权限。

wKioL1cbgb7iyYerAABEZ7CSQos044.png


第三步:测试

wKiom1cbgVPg1wgsAAAeJCXzWxQ761.png


登陆测试

wKioL1cbg8_BGhIjAABcdjiRsBA352.png

OK


下载测试

wKiom1cbgwzDXPO0AADvcg2qYB4679.png

OK


上传测试

wKiom1cbgwyQSRuPAAC_OQ6MsEc422.png

pub上传失败,因为没有给它写权限,正常

upload上传也是失败,但是已经给了写权限了。

这是因为配置文件中没有设置允许上传。


编辑配置文件

]# vim /etc/vsftpd/vsftpd.conf

wKioL1cbhfvQTeqWAAAVphsh4qA335.png

]# systemctl restart vsftpd.service


再测试上传功能

wKioL1cbhijw6yUmAADoeWlMT0I608.pngOK,upload目录已经可以上传了。


但是可以看到上传后的文件权限已经变成600,而且属主和属组都是root,这样可能就无法满足我们的需求。而且现在登陆上FTP的用户,可以随意浏览我们文件系统的所有文件,并不局限在我们用来共享资源的这个路径下,这样是很不安全的。

为了满足这些需要,还是需要去编辑vsftpd的主配置文件中的各项参数。这里就不细说了。配置文件中各参数的定义可以参考下图。

wKioL1cbiELA5RAOAAKIzplPPTY768.png


现在还有一个问题,就是所有登陆的用户,都映射为vuser这个本地用户,那么他们的权限都是一样,这样肯定无法满足我们的需求。

vsftpd可以支持每个虚拟用户单配置文件,如果需要定义每个虚拟用户的权限不同,通过这个设置来满足。

配置方式

在vsftpd的主配置文件中添加一项参数,用来定义虚拟用户的个人配置文件放置目录路径。

]# vim /etc/vsftpd/vsftpd.conf

wKiom1cbiQDAiM2VAAAaM3fde18129.png然后创建此目录,并在这个目录下创建虚拟用户同名的个人配置文件。

wKioL1cbiruAHkCPAABGbk4XZdM914.png

如果需要让puro不能上传,让tom可以上传。

首先注释掉主配置文件中的这一项

]# vim /etc/vsftpd/vsftpd.conf

wKiom1cbitah2H6MAAARDTIXkec463.png

]# vim /etc/vsftpd/vuser.conf.d/puro

wKioL1cbi5uC53qxAAAF6JkvJFg576.png

]# vim /etc/vsftpd/vuser.conf.d/tom

wKioL1cbi5yhfePfAAAFrnGURHA718.png

]# systemctl restart vsftpd.service

然后再次测试

wKioL1cbjIXSLr1cAAC7JiE4B5c798.png

puro不能上传

wKiom1cbi9jwqMyRAADsaumTbwg962.pngtom可以上传

配置OK。