实验前说明:本实验需要在两台centos向主机上实现,一台作为ftp服务器,一台做数据库服务器

在这里我使用centos6做数据库服务器,centos7做ftp服务器

一:安装所需要的包和包组

在centos6上安装数据库所需要的包

yum -y install mysql-server

在centos7因为没有对应的rpm包,需要手动编译安装

yum -y groupinstall "development tools"

yum -y install pam-devel vsftpd

下载源码包

pam_mysql-0.7RC1.tar.gz

解压包 tar xvf pam__mysql-0.7RC1.tar.gz

然后进入这个目录下进行编译cd pam_mysql-0.7RC1/

./configure --with-mysql=/usr --with-pam=/usr

--with-pam-mods-dir=/lib64/security

根据提示我们还需要安装maria-devel这个包

安装之后,重新进行编译

如果没有出现错误,就可以进行下一步啦

Make &&make install

二.在数据库服务器上创建虚拟用户账号

建立存储虚拟用户数据库和连接的数据库用户

cbddd68b8c672216ad4b82d243ab7a48.png

建立连接数据库的用户

8169141b76b05ab4eeb059cd2d0814ab.png

在数据库中准备相关表来存储虚拟用户的账号

a80807ab85ecab48a4878e6fe38121ff.png

96762b69a8b27080e412140acd4ffe5f.png

测试连接

cb6526b316967554680bdde1fd2ebbeb.png

三 添加虚拟用户

根据需要添加所需要的用户,为了安全应该使用password

函数加密其密码后存储

ed5bb0892cf4963648c8c82adae6a4df.png

在ftp服务器上配置vsftpd服务

在ftp服务器上建立pam认证所需文件

Vim /etc/pam.d/vsftpd.mysql添加如下两行

3905b72794ec230672831f3a14eb1c79.png

auth  表示认证

account  验证账号密码正常使用

required  表示认证要通过

pam_mysql.so 模块是默认的相对路径,是相对/lib64/security/ 路

径而言,也可以写绝对路径;后面为给此模块传递的参数

user=vsftpd 为登录mysql 的用户

passwd=magedu  登录mysql 的的密码

host=mysqlserver mysql 服务器的主机名或ip 地址

db=vsftpd 指定连接msyql 的数据库名称

table=users  指定连接数据库中的表名

usercolumn=name  当做用户名的字段

passwdcolumn=password  当做用户名字段的密码

crypt=2  密码的加密方式为mysql password()函数加密

四 建立相应用户和修改vsftpd配置文件,使其适应mysql认证,建立虚拟用户映射的系统用户及对应的目录

useradd -s /sbin/nologin -d /var/ftproot vuser

chmod 555 /var/ftproot centos7  需除去ftp 根目录的写权限

mkdir /var/ftproot/{upload,pub}

setfacl m u:vuser:rwx /var/ftproot/upload

确保/etc/vsftpd/vsftpd.conf中已经启用了以下选项

Anonymous_enable=yes

并添加下面两项

guest_enable=yes

guest_username=vuser

修改下面一项,原系统用户无法登录

3a5f4aea5117769e5060fe06de29850b.png

五 启动vsftpd服务

Systemctl start vsftpd

查看端口开启情况

Ss -ntl |grep :21

六 测试:利用ftp客户端工具,以虚拟用户登录验证结果

36b3aa68af09b9b48b1b6bec2d0f99ff.png

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐