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

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

环境准备
10.0.0.7 做FTP server
10.0.0.8 做MySQl
10.0.0.150 Client
在这里插入图片描述
第一步:安装

在10.0.0.8数据库服务器上安装mysql数据库并配置数据库

[root@MySQL ~]#yum -y install mariadb-server
[root@MySQL ~]#systemctl enable --now mariadb.service

进入数据库 :在这里插入图片描述

CREATE DATABASE vsftpd;
use vsftpd
CREATE TABLE users (id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,name CHAR(50)BINARY NOT NULL,password CHAR(48) BINARY NOT NULL);
insert users(name,password) values('alang',password('123456'));
insert users(name,password) values('alei',password('123456'));   #这里用password是给密码加密
select * from users;
grant select on vsftpd.* TO vsftpd@'10.0.0.%' identified by '123456';

在这里插入图片描述
然后在 在10.0.0.7上 FTP服务器上安装vsftpd 和 pam_mysql包

yum -y install vsftpd
systemctl enable --now vsftpd

centos7 和 8:无对应rpm包,需手动编译安装,pam-mysql 源码进行编译或者下载好了以后 直接上传后直接解压 步骤;

yum -y install vsftpd gcc gcc-c++ make mariadb-devel pam-devel  #安装相关包
wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz #下载pam-mysql源码
tar xvf pam_mysql-0.7RC1.tar.gz  #解压
tar xvf pam_mysql-0.7RC1.tar.gz -C /usr/local/src  #解压后习惯放在src下

在这里插入图片描述

cd pam_mysql-0.7RC1/           #切换到pam_mysql-0.7RC1/目录下
./configure --with-pam-mods-dir=/lib64/security   #执行变量
make install          #执行安装
#ll /lib64/security/pam_mysql*  #查看编译完成的文件

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

vi /etc/pam.d/vsftpd.mysql

添加如下两行

auth required pam_mysql.so user=vsftpd passwd=123456 host=10.0.0.8 db=vsftpd table=users usercolumn=name  passwdcolumn=password crypt=2   #第一行 文本里必须放在同一行
account required pam_mysql.so user=vsftpd passwd=123456 host=10.0.0.8 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2   #第二行,文本里必须放在同一行

建立相应用户和修改vsftpd配置文件

useradd -s /sbin/nologin -d /data/ftproot -r vuser
mkdir -pv /data/ftproot/upload
setfacl -m u:vuser:rwx /data/ftproot/upload

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

pam_service_name=vsftpd.mysql   # 手动添加vsftpd后面的 .mysql
guest_enable=YES                # 在最后手动添加
guest_username=vuser            # 在最后手动添加
systemctl  restart vsftpd       # 保存退出后重启服务

第二步:测试

在10.0.0.150客户机上分别登录 刚刚设置的alang和alei测试 (这里用户名是可以随便设置的)
在这里插入图片描述
在这里插入图片描述
测试upload是否可以上传ftp> put hosts
在这里插入图片描述
目前没有权限 无法上传

第三步:设置

在10.0.0.7 FTP服务器上配置虚拟用户具有不同的访问权限
#配置vsftpd为虚拟用户使用配置文件目录

vim /etc/vsftpd/vsftpd.conf          #打开文本
user_config_dir=/etc/vsftpd/conf.d/  #在文本最后添加这行

要注意的是
配置虚拟用户的访问权限
#虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。如要让用户alnag具有上传文件的权限,可修改/etc/vsftpd/vusers.d/wang文件,在里面添加如下选项并设置为YES即可,只读则设为NO

mkdir /etc/vsftpd/conf.d/     #创建文本
vim /etc/vsftpd/conf.d/alang  #编辑文本

在alang文本里设置如下

anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/data/ftproot1

然后重启服务 systemctl restart vsftpd
在这里插入图片描述
为了可以在upload里上传数据,执行

mkdir /data/ftproot1/upload -pv
chown vuser.vuser /data/ftproot1/upload/   #更改权限
touch /data/ftproot1/upload/alang.txt      #在7上创建一个文件,在客户端可以看到 示例

在10.0.0.150上查看
在这里插入图片描述
然后上传文件测试 put hosts
在这里插入图片描述
在FTP服务器端10.0.0.7可以查看到
在这里插入图片描述
而目前 alei无法上传,是因为还没有单独指定

mkdir /data/ftproot2/             #设置单独的目录
touch /data/ftproot2/alei.txt     #设置alei的文件

然后切换到cd /etc/vsftpd/conf.d/
拷贝alang的文件直接生成

cd /etc/vsftpd/conf.d/
cp alang alei  
vim alei

设置不允许上传 注释或者删除前面三行即可
在这里插入图片描述
然后重启服务 systemctl restart vsftpd
在客户端登录 可以看到alei的文件了
在这里插入图片描述
这样每个用户有自己的设置了,而因为没有设置允许上传 所以
在这里插入图片描述
至此设置完成
而如果要增加用户,直接在8主机MySQL上执行

insert users(name,password) values('asan',password('123456'));

然后直接登录
在这里插入图片描述
至此设置完成

关于这个实验个人体验:作为0基础开始学习,不管什么实验,最好都做一下,这样才能进步更快

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值