vsftpd 基于mysql的虚拟账户

Centos7 vsftpd 基于MySQL的虚拟账户认证

实验环境: 两台虚拟机的防火墙和SELinux都已关闭

角色 IP
vsftpd 192.168.148.7
mysql 192.168.148.17
系统账户 用户主目录
vuser /data/ftproot
虚拟账户 密码 用户主目录
ftp1 centos /data/ftproot/ftp1
ftp2 redhat /data/ftproot/ftp2

mysql服务器添加用户数据库

[[email protected] ~]# yum -y install mariadb-server
[[email protected] ~]#  systemctl start mariadb

[[email protected] ~]# vim vsftpd.sql
CREATE DATABASE vsftpd;
USE vsftpd

CREATE TABLE vuser (
id int(10) AUTO_INCREMENT PRIMARY KEY,
username char(30) BINARY NOT NULL,
password char(50) BINARY NOT NULL
);

insert into vuser(username,password)values(‘ftp1‘,password(‘centos‘)),(‘ftp2‘,password(‘redhat‘));
grant select on vsftpd.vuser to [email protected]‘192.168.148.7‘ identified by ‘centos‘;

[[email protected] ~]# mysql < vsftpd.sql 

vsftpd配置虚拟账户

[[email protected] ~]# yum -y install vsftpd
# 创建虚拟账户 ftp1, ftp2的用户目录和上传目录
[[email protected] ~]# mkdir -p /data/ftproot/ftp{1,2}/upload
[[email protected] ~]# touch /data/ftproot/ftp1/ftp1
[[email protected] ~]# touch /data/ftproot/ftp2/ftp2

# 创建虚拟账户映射的系统账号 vuser
[[email protected] ~]# useradd -r -s /sbin/nologin -d /data/ftproot vuser

# 修改配置文件,注释默认的 pam设置,添加如下配置
[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf
#pam_service_name=vsftpd
pam_service_name=vsftpd.mysql
guest_enable=YES
guest_username=vuser
user_config_dir=/etc/vsftpd/vusers.d

#添加虚拟账户配置文件
[[email protected] ~]# mkdir /etc/vsftpd/vusers.d
[[email protected] ~]# vim /etc/vsftpd/vusers.d/ftp1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022
local_root=/data/ftproot/ftp1

[[email protected] ~]# vim /etc/vsftpd/vusersd.d/ftp2
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022
local_root=/data/ftproot/ftp2

# 下载 pam_mysql 下载地址 http://repo.iotti.biz/CentOS/7/x86_64/pam_mysql-0.8.1-0.22.el7.lux.x86_64.rpm
[[email protected] ~]# rpm -iv pam_mysql-0.8.1-0.22.el7.lux.x86_64.rpm

#编写vsftpd.mysql文件
[[email protected] ~]# vim /etc/pam.d/vsftpd.mysql
auth required pam_mysql.so user=vsftpd passwd=centos host=192.168.148.17  db=vsftpd table=vuser usercolumn=username passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=centos host=192.168.148.17 db=vsftpd table=vuser usercolumn=username passwdcolumn=password crypt=2

# 启动服务
[[email protected] ~]# systemctl start vsftpd

MySQL服务器作客户端测试虚拟账户

# 安装客户端程序
[[email protected] ~]# yum -y install lftp
# 指定用户名,密码
[[email protected] ~]# lftp -u ftp1,centos 192.168.148.7
lftp [email protected]:~> ls
-rw-r--r--    1 0        0               0 May 17 07:20 ftp1
drwxr-xr-x    2 0        0               6 May 17 07:04 upload
lftp [email protected]:/> quit

[[email protected] ~]# lftp -u ftp2,redhat 192.168.148.7
lftp [email protected]:~> ls
-rw-r--r--    1 0        0               0 May 17 07:20 ftp2
drwxr-xr-x    2 0        0               6 May 17 07:04 upload
lftp [email protected]:/> bye

原文地址:https://blog.51cto.com/1012682/2396317

时间: 2024-08-09 17:31:37

vsftpd 基于mysql的虚拟账户的相关文章

linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(二)-基于mysql的虚拟账户登陆收发邮件

使用虚拟用户收发邮件安装九.安装Courier authentication library 1.courier简介courier-authlib 是Courier组件中的认证库,它是courier组件中一个独立的子项目,用于为courier的其它组件提供认证服务.其认证功能通常包括验证登录时的账号和密码.获取一个相关的家目录或邮件目录等信息.改变账号的密码.而其认证的实现方式也包括基于PAM通过/etc/passwd和/etc/shadow进行认证,基于GDBM或DB进行认证,基于LDAP/M

vsftpd基于mysql做虚拟用户认证

虚拟用户: 用户账号存储于何处? 文件,MySQL,Redis, ... vsftpd的认证功能托管给pam: Pluggable Authencate Module,认证框架,认证库: 通过模块完成认证功能:/usr/lib64/security/ pam_mysql模块: 下载pam_mysql的源码包官方下载http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz (1)准备编译安装环境 [[email pro

vsftpd基于pam_mysql的虚拟用户认证

1.ftp用户 匿名用户:映射到某一个固定的系统用户,例如(ftp,vsftp,/var/ftp) 本地用户:系统用户,root及系统用户(0-999) 虚拟用户:nsswitch: name services switch  名称服务转换 PAM: Plugabl Plugable Authentication Modules  插入式认证模块本文主要讲解vsftpd基于pam_mysql的虚拟用户认证步骤. 2.准备环境 操作系统 主机名 IP地址 环境描述 CentOS 7.1 ch7 1

Vsftpd基于MySQL实现用户认证

ftp简介: ftp:File Transfer Protocol,文件传输协议:FTP是应用层协议,使用C/S架构,工作于20/tcp,21/tcp. FTP使用交互式访问模式,两个并行TCP连接,一个控制连接,一个数据连接,控制连接用于在客户机和服务器之间发送控制信息,比如用户和密码,改变远程目录和命令,上传下载文件等,数据连接用于真正发送数据.ftp有两种工作模式,主动模式(Active),被动模式(Passive). 数据: 命令连接:文件管理类命令,始终在线的连接 数据连接:数据传输,

vsftpd基于pam_mysql的虚拟用户机制

一.虚拟用户概述 vsftpd使用虚拟用户时,需要为所有的虚拟用户创建一个系统用户,因为无论vsftpd使用的是哪一种用户类型(匿名用户.系统用户.虚拟用户),最终都是要映射为操作系统上的一个用户,而每一个文件资源都有各自的权限,只有操作系统上的用户才能根据权限模型判断是否能够访问该文件资源.这里仅介绍vsftpd基于pam_mysql的虚拟用户机制的使用. 二.vsftpd基于pam_mysql的虚拟用户机制 1.编译安装pam_mysql (1) 编译pam_mysql前要提供开发环境,并安

VSftpd使用MySQL存储虚拟用户进行认证

VSftpd使用MySQL存储虚拟用户进行认证 前言 周一的时候做这个实验失败了,当时以为是pam_mysql模块的问题,今天晚上随便试试,没想到竟然成功了,遂写一篇博客来分享一下 实验拓扑 实验环境 主机 IP 作用 server1.anyisalin.com 172.16.1.2 提供ftp服务 server2.anyisalin.com 172.16.1.3 使用存储vsftpd虚拟用户 注意:本实验所有操作都在SElinux和iptables关闭的前提下进行 实验步骤 安装vsftpd并

vsftp基于mysql的虚拟用户,iptables的用法

vsftp基于mysql创建虚拟用户 1.首先安装环境 yum groupinstall -y "Development Tools" "Server PlatformDevelopment" yum install -y pam-devel mariadb-devel mariadb-server vsftpd lftp ftp 下载最新的pam-mysql http://pam-mysql.sourceforge.net/ 编译安装pam-mysql tar x

创建vsftpd服务器基于mysql的虚拟用户认证

简单罗列基础命令,只分享我的想法! 一.目的 要求:配置允许虚拟用户访问的vsftpd服务器,虚拟用户存储在另一台MySQL的服务器上面,虚拟用户账号有两个分别是tom和jerry,密码是tom和jerry,要求对这两个账户的权限做一下限制(根据实际的要求,自己调节). 环境:MySQL服务器(172.16.49.1),CentOS 6.6和MariaDB-5.5.43.另一台是通过yum安装vsftpd(192.168.0.22),OS是CentOS 6.6. MySQL是通用二进制格式安装,

Centos6下vsftpd基于mysql认证创建虚拟用户

一,安装环境以及安装的软件: 1,CentOS release 6.4 (Final) [IP:192.168.1.110] 2,vsftpd-2.2.2-13.el6_6.1.x86_64 3,pam_mysql-0.7-0.12.rc1.el6.x86_64 4,mysql-5.6.16(编译安装) 二,在数据库上创建登录ftp的账号和密码 1,创建对应的database,远程授权登录账号并创建表用来存储登录ftp账号密码. mysql> create database vsftpd; my