实验-----基于MYSQL验证的vsftpd虚拟用户

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

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


 (1)在数据库服务器上安装包:

 

 Centos7:在数据库服务器上安装

    yum -y install mariadb-server   安装包

    systemctl start mariadb       启动服务

    systemctl enable mariadb     设置开机启动

     mysql_secure_installation     运行安全脚本,设置root管理员及密码

 Centos6:在数据库服务器上安装

    yum -y install mysql-server    安装包             

     service mysqld start       启动服务

     chkconfig mysqld on         设置开机启动

     mysql_secure_installation     运行安全脚本,设置root管理员及密码

 

 (2)在FTP服务器上安装vsftpd和pam_mysql包:

 

 Centos6:pam_mysql由epel6的源提供,可直接安装

    yum install vsftpd pam_mysql

 

 Centos7:无对应rpm包,需手动编译安装

    ①yum -y groupinstall "Development Tools"      安装开发包组

     yum -y install mariadb-devel pam-devel vsftpd  安装必要的包

    ②下载pam_mysql-0.7RC1.tar.gz

     解压tar xvf pam_mysql-0.7RC1.tar.gz

    ③编译安装pam_mysql

     cd pam_mysql-0.7RC1/

      ./configure --with-pam=/usr --with-pam-mods-dir=/lib64/security

      make && make install


二、FTP服务器上创建系统用户

  ①useradd -d  /app/ftpdir -r -m ftpuser   创建系统用户

  ②mkdir /app/ftpdir;chmod 555 /app/ftpdir  除去ftp根目录的写权限才能登陆

 

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


  1.建立存储虚拟用户数据库(vsftpd)和连接的数据库用户(ftpuser)

    ①mysql -uroot -p123456         登陆数据库

    ②mysql> CREATE DATABASE vsftpd;  创建数据库vsftpd

    ③授权用户对数据库vsftpd有查询权限:

   ftp服务和mysql不在同一主机:

mysql> GRANT SELECT ON vsftpd.* TO ftpuser@'192.166.199.%' IDENTIFIED BY '123456';

   ftp服务和mysql在同一主机:

mysql> GRANT SELECT ON vsftpd.* TO ftpuser@localhost IDENTIFIED BY '123456';

 

   2.准备相关表(ftpusers)

    mysql> USE vsftpd;

    vsftpd> CREATE TABLE ftpusers (name CHAR(50),pass CHAR(50));

62c00c4dace87d983ab960cd4abf0c24.jpg


   3.添加虚拟用户

  根据需要添加所需要的用户,为了安全应该使用PASSWORD函数加密其密码后存储

mysql> INSERT INTO ftpusers values(‘ftp1',password('123456')); 添加ftp1用户

mysql> INSERT INTO ftpusers values(‘ftp2',password('123456')); 添加ftp2用户

mysql> SELECT * FROM ftpusers; 查看表ftpusers,可看到两个用户已添加

a7336c742c8e06df11bbcccf1c325341.jpg 


四、在FTP服务器上配置vsftpd服务


  1、在FTP服务器上建立pam认证所需文件

    vim /etc/pam.d/vsftpd.mysql 

    添加如下两行

auth required pam_mysql.so user=ftpuser passwd=123456 host=192.168.199.134 db=vsftpd table=ftpusers usercolumn=name passwdcolumn=pass crypt=2

account required pam_mysql.so user=ftpuser passwd=123456 host=192.168.199.134 db=vsftpd table=ftpusers usercolumn=name passwdcolumn=pass crypt=2


字段说明:

auth           表示认证

account          验证账号密码正常使用

required         表示认证要通过

pam_mysql.so模块是默认的相对路径,是相对/lib64/security/路径而言,也可以写绝对路径;后面为给此模块传递的参数

user=ftpuser       登录mysql的用户

passwd=123456       登录mysql的的密码

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

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

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

usercolumn=name      当做用户名的字段

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

crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示使用mysql password()函数加密,3表示md5加密,4表示sha1加密。注意:参考README文档,选择正确的加密方式

 

   2、修改vsftpd配置文件,使其适应mysql认证

    vim /etc/vsftpd/vsftpd.conf 

    确保已经启用了以下选项:

        anonymous_enable=YES

    添加下面项:

        guest_enable=YES

        guest_username=ftpuser

        user_config_dir=/etc/vsftpd/conf.d/  作为每个用户单独的配置文件的路径,下面会创建

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

        pam_service_name=vsftpd.mysql


五、启动vsftpd服务

    Centos6:service vsftpd start

    Centos7:systemctl start vsftpd

    查看端口开启情况

        ss -ntlp|grep 21

ac8b9a2c17202584b1e1b8a2dd3727d7.jpg 


六、在FTP服务器上配置虚拟用户具有不同的访问权限

   说明:vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。

 

创建所需要目录,并为虚拟用户提供配置文件


1、创建目录:mkdir /etc/vsftpd/conf.d/ 虚拟用户配置文件所在的目录


2、为ftp1提供配置文件  

   ①vim /etc/vsftpd/conf.d/ftp1      编辑ftp1的配置文件

        anon_upload_enable=YES    允许上传

   ②mkdir /app/ftpdir/upload      创建子目录,使ftp1可以在该目录上传文件

   setfacl -m u:ftpuser:rwx /app/ftpdir/upload  给予ftp1对该目录rwx权限 

   ftp1用户实现效果:ftp1用户登陆就能进到upload里面上传文件了


3、为ftp2提供配置文件

   vim /etc/vsftpd/conf.d/ftp2

    local_root=/app/ftpdir2   登录目录改变至指定的目录(/app/ftpdir2

   mkdir /app/ftpdir2;chmod 555 /app/ftpdir2  登陆根目录不能有w权限

   touch /app/ftpdir2/hello  

   ftp2用户实现效果:ftp2用户登陆就能使用ls看到hello文件了


4、重启vsftpd服务

   systemctl restart vsftpd


七、测试效果图如下:

700add717aea445db84d1bd74529b1bc.jpg 

f239c4426bdce560a50bf343c5a33653.jpg 


感谢浏览,如有不同意见,欢迎留言。

j_0080.gif















本文转自lc0108131451CTO博客,原文链接: http://blog.51cto.com/13150617/1976558,如需转载请自行联系原作者




相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
143
分享
相关文章
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
167 90
使用崖山YMP 迁移 Oracle/MySQL 至YashanDB 23.2 验证测试
这篇文章是作者尚雷关于使用崖山YMP迁移Oracle/MySQL至YashanDB 23.2的验证测试分享。介绍了YMP的产品信息,包括架构、版本支持等,还详细阐述了外置库部署、YMP部署、访问YMP、数据源管理、任务管理(创建任务、迁移配置、离线迁移、校验初始化、一致性校验)及MySQL迁移的全过程。
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
182 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
vertx 的http服务表单提交与mysql验证
本文介绍了如何使用Vert.x处理HTTP服务中的表单提交,并通过集成MySQL数据库进行验证,包括项目依赖配置、表单HTML代码和完整的Vert.x服务代码。
52 2
PolarDB产品使用问题之要验证MySQL迁移后的数据库数据与迁移前的数据一致性,该怎么办
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
119 0
PolarDB产品使用问题之要验证MySQL迁移后的数据库数据与迁移前的数据一致性,该怎么办
必知的 MySQL 索引失效场景【包括实践验证】,别再踩坑了!(下)
必知的 MySQL 索引失效场景【包括实践验证】,别再踩坑了!
1304 2
必知的 MySQL 索引失效场景【包括实践验证】,别再踩坑了!(上)
必知的 MySQL 索引失效场景【包括实践验证】,别再踩坑了!
1296 2
MySQL数据库——索引(5)-索引使用(上),验证索引效率、最左前缀法则、范围查询、索引失效情况、SQL提示
MySQL数据库——索引(5)-索引使用(上),验证索引效率、最左前缀法则、范围查询、索引失效情况、SQL提示
149 0
实验设备管理系统【GUI/Swing+MySQL】(Java课设)
实验设备管理系统【GUI/Swing+MySQL】(Java课设)
44 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等