Linux Centos7 vsftpd基于mysql实现用户认证

这篇博客介绍了如何在Linux CentOS7系统中配置vsftpd,使其能通过MySQL数据库进行用户认证。文章详细阐述了从安装相关软件包,设置MySQL数据库,创建虚拟用户,到修改vsftpd配置文件,以及启动服务和测试用户认证的过程。重点在于使用pam_mysql扩展来连接MySQL并管理FTP用户。
摘要由CSDN通过智能技术生成

最近接受一个web网站,这个网站的架构是 nginx + php +mysql + vsftpd 这样的经典架构.这其中用到了比较新的php框架laravel.

这个网站为加上 ftp 这样一个服务为的是用户文件上传用的.这时候有点懵了,上传直接http提交不香吗?为何大费周章的有事加服务又是加代码,这个维护逻辑也太复杂了吧.(自己常用ftp就是配置在ftp的user的文件中,根本没有意识到ftp可以通过mysql 进行用户管理的这种场景)

研究之后才明白 vsftpd 可以 通过配置,连接到mysql的扩展上 pam_mysql 通过pam扩展读取用户配置信息 .
一、第一步准备
1、 服务器时间校对
2、 配置epel源
二、mysql服务器所需执行的操作:
1、 安装软件包:# yum -y install mysql-server mysql-devel ftp

2、 启动mysql,检查3306号端口是否被监听:# service mysqld start # ss -tnlp | grep :3306

3、 初始化mysql:# mysql_secure_installation //设置root用户密码为123456

4、 创建数据库、表,并授权远程用户登录:
# mysql -uroot -p
mysql> create database ftp;
mysql> grant select on ftp.* to ftpuser@’% identified by ‘123456’;
mysql> flush privileges;
mysql> use ftp;
mysql> create table user(id int unsigned auto_increment not null primary key,name varchar(20) binary not null,password char(48) binary not null);
mysql> desc user;

5、 添加FTP虚拟用户marion和keyso:
mysql> insert into user(name,password) values(‘marion’,password(‘mftpasswd’)),(‘keyso’,password(‘kftpasswd’));
备注:虚拟用户marion使用密码mftpasswd登录FTP,虚拟用户keyso则使用密码kftpasswd登录FTP
mysql> select * from user;
备注:账号密码使用password()函数加密后存储

三、vsftpd服务器所需执行的操作:

1、 安装软件包:# yum -y install vsftpd pam_mysql mysql

2、 使用账号ftpuser远程登录mysql服务器:

在这里插入图片描述

3、 创建认证所需文件vsftpd.mysql:

  # rpm -ql pam_mysql | grep pam_mysql.so  -->  /lib64/security/pam_mysql.so

  # vim /etc/pam.d/vsftpd.mysql,添加如下两行代码:

  auth required /lib64/security/pam_mysql.so user=ftpuser passwd=123456 host=192.168.1.230 db=ftp table=user usercolumn=name passwdcolumn=password crypt=2

  account required /lib64/security/pam_mysql.so user=ftpuser passwd=123456 host=192.168.1.230 db=ftp table=user usercolumn=name passwdcolumn=password crypt=2

备注:
crypt= 代表的含义
|0| 不加密,明文 |
|1|使用crypt函数加密|
| 2| 使用mysql password()函数加密 |
| 3| 使用md5加密 |
| 4|使用sha1加密 |
这里强调一些安转pam的问题请看
[https://blog.csdn.net/weixin_47616219/article/details/105991299]

4、 创建虚拟用户映射的系统用户:

useradd -s /sbin/nologin -d /ftpdocs vuser //新的家目录ftpdocs必须事先不存在,该命令会自动创建

chmod go+rx /ftpdocs

5、 修改主配置文件/etc/vsftpd/vsftpd.conf,确认启用如下选项:

  chroot_local_user=YES

  pam_service_name=vsftpd.mysql

  guest_enable=YES

  guest_username=vuser

  user_config_dir=/etc/vsftpd/vusers

  use_localtime=YES

6、 创建对应的虚拟用户配置文件目录:# mkdir -pv /etc/vsftpd/vusers

7、 配置不同的虚拟用户具有不同的访问权限:

  # cd /etc/vsftpd/vusers

  # vim marion

  anon_upload_enable=YES

  anon_mkdir_write_enable=YES

  anon_other_write_enable=YES

  # cp marion keyso

  # sed -i 's#YES#NO#g' keyso

备注:每个虚拟用户的配置文件名同虚拟用户的用户名。虚拟用户所能执行的权限都由匿名用户的相关选项定义。所有的虚拟用户都映射到系统用户vuser上。

8、 启动vsftpd,检查21号端口是否被监听:# service vsftpd start # ss -tnlp | grep :21

五、用户认证测试:

在mysql服务器上分别使用虚拟用户marion和keyso远程登录FTP:# ftp 192.168.1.230,测试上传文件、删除文件、创建目录和删除目录等权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值