在Centos7上使用vsftpd+pam_mysql实现虚拟用户认证

一、安装所需要程序

1.安装开发环境及所需要程序

# yum groupinstall -y "Development Tools" "Server PlatformDevelopment"

# yum install -y pam-devel mariadb-devel mariadb-server vsftpd lftp ftp

启动服务:

# systemctl start mariadb.service

2.编译安装pam_mysql-0.7RC1

# tar xf  pam_mysql-0.7RC1.tar.gz

# cd  pam_mysql-0.7RC1

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

# make

# make install

二、创建虚拟用户账号

1.准备数据库及相关表

MariaDB [(none)]> CREATEDATABASE vsftpd;

MariaDB [(none)]> CREATETABLE vsftpd.users (id INTNOT NULL AUTO_INCREMENT PRIMARY KEY, name CHAR(30)NOT NULL UNIQUE KEY,passwordCHAR(48));

MariaDB [(none)]> use vsftpd

MariaDB [vsftpd]> desc users;

2、添加测试的虚拟用户

MariaDB [vsftpd]> INSERT INTO vsftpd.users(name,password) VALUES (‘tom‘,PASSWORD(‘123456‘)),(‘jerry‘,PASSWORD(‘654321‘));

MariaDB [vsftpd]> select * from users;

3.授权vsftpd用户权限

MariaDB [vsftpd]> GRANTALL ON vsftpd.* TO ‘vsftpd‘@‘localhost‘ IDENTIFIED BY ‘centos‘;

MariaDB [vsftpd]> GRANTALL ON vsftpd.* TO ‘vsftpd‘@‘127.0.0.1‘ IDENTIFIED BY ‘centos‘;

MariaDB [vsftpd]> FLUSHPRIVILEGES;

重启数据库服务:

# systemctl restart mariadb.service

三、配置vsftpd

1.建立pam认证所需文件

# vim /etc/pam.d/vsftpd.mysql

添加如下两行

auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=centos host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=passwordcrypt=2

account required /usr/lib64/security/pam_mysql.souser=vsftpd passwd=centos host=127.0.0.1 db=vsftpd table=users usercolumn=namepasswdcolumn=password crypt=2

2.建立虚拟用户映射的系统用户及对应的目录

# mkdir /ftproot

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

创建测试目录

# mkdir /ftproot/{pub,upload}

# setfacl -m u:vuser:rwx  /ftproot/upload

3.修改vsftpd的配置文件,使其适应mysql认证

# vim /etc/vsftpd/vsftpd.conf

修改pam_service_name选项的值如下所示

pam_service_name=vsftpd.mysql

添加以下两行:

guest_enable=YES

guest_username=vuser

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

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

1.配置虚拟用户有单独的权限设定

# vim /etc/vsftpd/vsftpd.conf

添加如下选项

user_config_dir=/etc/vsftpd/vusers_conf

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

# mkdir /etc/vsftpd/vusers_conf

# cd /etc/vsftpd/vusers_conf

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

# vim tom 写入如下内容

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

# vim jerry

anon_upload_enable=NO

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

3.启动vsftpd服务:

# systemctl start vsftpd

五、测试

使用虚拟用户tom,如下图所示,上传、删除文件没问题。

使用虚拟用户jerry,测试步骤同上,上传、删除文件是拒绝的。

时间: 2024-08-28 17:19:29

在Centos7上使用vsftpd+pam_mysql实现虚拟用户认证的相关文章

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基于pam虚拟用户认证,还怕泄漏账号么?

一.ftp简要介绍 ftp是一个很古老的协议了,是一种基于明文传输的C/S架构协议.ftp基于tpc21.20端口,其中21端口为命令端口,20端口为数据端口.ftp命令连接同其他TCP连接一样,不过数据连接有两种模式: 主动模式,也称作PORT模式:命令请求端口时,服务器端为减少等待,主动将数据发送给客户端:使用本机的20端口请求客户端的端口.这里有个问题:服务器端想要主动连接客户端就需要知道客户端的端口号,可是客户端根本没有启动任何端口给服务器端.协议设计中服务器端根据客户端的命令连接端口(

vsftpd基于pam_mysql做虚拟用户认证

(1)下载epel源 [[email protected] ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo  #下载阿里云的epel源 [[email protected] ~]# yum repolist (2)安装所需要的包 [[email protected] ~]# yum -y groupinstall "Development Tools" "Ser

Vsftpd基于MySQL实现用户认证

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

创建vsftpd的基于pam_mysql的虚拟用户机制

在centos7系统上实现搭建vsftp服务,基于pam_mysql的虚拟用户机制: 编译安装pam_mysql 准备环境: ]# yum -y groupinstall "Development Tools" "server Platform Development" ]# yum -y install pam-devel openssl-devel mariadb-devel mariadb-server ]# yum -y install vsftpd 解压p

vsftpd基于pam_mysql的虚拟用户机制

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

vsftpd的基于pam_mysql的虚拟用户配置示例      

第一步:安装vsftpd和mariadb ~]# yum install mariadb-server ~]# yum install vsftpd 因为中CentOS 7平台上/lib64/security/中没有pam_mysql模块驱动,需要编译安装pam_mysql这个模块. 准备编译环境 安装Development Tools 和 service platform Development这两个包组,另外需要安装依赖到的开发包pam-devel,openssl-devel,mariadb

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服务器基于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是通用二进制格式安装,