vsftpd基于pam_mysql的虚拟用户机制
何为vsftpd?
vsftpd:very secure ftp daemon
程序:/usr/sbin/vsftpd
配置文件:/etc/vsftpd/vsftpd.conf
其用户分为:匿名用户(映射至某一固定的系统用户),本地用户(root及系统用户),虚拟用户(存储在文件或其他服务器端数据库中的用户);
以下将以CentOS 7 讲解具体配置过程:
[此机制需要pam_mysql.so]
主要分为以下几个步骤:
1.运行环境准备和配置
2.mysql数据库配置
3.pam配置
4.细节优化
1.运行环境准备和配置
由于CentOS 7yum源中没有pam-mysql,故需自己编译安装;
首先安装开发环境:
# yum -y groupinstall "Development Tools" "Server Platform Development"
另外还需要的程序包有:openssl-devel pam-devel mariadb-devel
下载好pam-mysql后解压缩,开始编译:
# ./configure --with-openssl=/usr --with-mysql=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security
# make && make install
安装完成后,在/lib64/security目录下可以看到:
2.数据库配置
安装mariadb-server
创建一个测试库/表,填入数据,如图所示:

(此处用的数据库是test,表是vsftpd)
并授权一个用户vsftpd,使其有查权限:
mysql> GRANT select ON test.* TO vsftpd@localhost IDENTIFIED BY '123456';
mysql> GRANT select ON test.* TO vsftpd@127.0.0.1 IDENTIFIED BY '123456';
自行测试一下此用户,没问题进入下一步。
3.pam配置
# cd /etc/pam.d
# vim vsftpd.mysql
写入
auth required pam_mysql.so user=vsftpd passwd= host=localhost db=test table=vsftpd usercolumn=name passwdcolumn=passwd crypt=
account required pam_mysql.so user=vsftpd passwd= host=localhost db=test table=vsftpd usercolumn=name passwdcolumn=passwd crypt=
其中:
pam_mysql.so //相对路径,如果此模块置于/lib64/security目录下,则可直接写文件名,当然,写全路径也没问题;
user=vsftpd
passwd=123456 //授权登陆mysql时的用户
host=localhost //本地主机
db=test //存放虚拟用户的数据库名
table=vstfpd
usercolumn=name
passwdcolumn=passwd
crypt=2 //密码加密方式代号
//0:不加密
//1:使用crypt(3)加密
//2:mysql函数加密password();
//3:md5加密
//4:SHA1加密
4.细节优化
创建系统用户作为映射:
# useradd -s /sbin/login -d /ftproot vuser
修改其权限,使其他用户有读、执行权限:
# chmod go+rx /ftproot
编辑配置文件/etc/vsftpd/vsftpd.conf:

添加: guest_enable=YES
guest_username=vuser
修改此项为:pam_service_name=vsftpd.mysql
确保这些为YES:
anonymous_enable=YES
local_enable=YES
write_enable=YES
保存退出,启动服务:
# systemctl start vsftpd.service
效果如下:

vsftpd基于pam_mysql的虚拟用户机制的更多相关文章
- Linux上FTP部署:基于mariadb管理虚拟用户
FTP原理 FTP 采用 Internet 标准文件传输协议 FTP 的用户界面, 向用户提供了一组用来管理计算机之间文件传输的应用程序.图1 FTP 的基本模型 FTP 是基于客户---服务器(C/ ...
- vsftpd服务安装与虚拟用户配置
vsftpd的全名是“Very secure FTP Daemon” 一.安装vsftpd安装db4-util用于生成认证文件 yum -y install db4-utils 安装vsftpd yu ...
- 搭建vsftpd文件服务器并创建虚拟用户
一.安装 1. 查看是否安装vsftpd rpm -qa | grep vsftpd 2. 安装 yum -y install vsftpd ...
- 构建基于虚拟用户的vsftpd服务器
安装: [root@server ~]# yum install -y vsftpd [root@server ~]# rpm -ql vsftpd /etc/logrotate.d/vsftpd / ...
- Vsftpd: 基于PAM认证的虚拟用户和匿名用户
目录 环境说明效果说明及截图①. 安装组件②. 系统账户建立③. 编辑vsftpd的配置文件④. 生成虚拟用户的数据库文件⑤. 生成一个使用vsftpd_login.db数据文件的PAM认证文件⑥. ...
- CentOS平台部署vsftp(基于虚拟用户)
1. 安装FTP 1 2 [root@task ~]# yum install vsftpd –y [root@task ~]# chkconfig vsftpd on # 配置开机 ...
- CentOS 6.8 ftp服务安装配置 基于本地用户和虚拟用户
CentOS 6.8 ftp服务安装配置 基于本地用户和虚拟用户 一.安装ftp服务 1.检查是否已经安装 # rpm -qa | grep ftp ftp-0.17-54.el6.x86_64 vs ...
- vsftpd 创建虚拟用户
1.添加一个宿主用户:useradd vsftpd -s /sbin/nologin2.安装db4-utils,通过本底数据文件实现虚拟用户访问yum install db4-utils3.创建ftp ...
- CentOS6.3下搭建vsftpd(采用虚拟用户设置)
CentOS6.3如果在安装的时候所有安装选项都打勾的话就含有单间vsftpd必备的软件:vsftpd.pam*.db4* 检查是否安装: [root@centos6 ~]# rpm -qa | gr ...
随机推荐
- WPA破解原理简要——无线网络破解续
一.破解密码的基础 关于密码的破解我再重复一次好了.密码破解就两大类方法.一是字典解密,而是暴力解密. 暴力解密就是采用穷举的方法——你密码是怎么组成的呢?无非就是数字.字母.符号,暴力解密就是采用一 ...
- Apache配置代理服务器的方法(2)
Proxy指令后面的*号表示客户端使用代理服务器访问的目的地址.在上面两个例子中,*号表示所有地址,即禁止使用代理服务器访问所有地址.而如果想仅禁止某一些地址时,可以参考下面的例子: Order de ...
- MSP430精准配置高速串口波特率的方法
引言 在实际项目大批量生产调试设备时,笔者发现同样版本的程序在不同设备上运行时效果不一致,一部分设备串口通信正常,另外一部分串口通信不正常.通过示波器对多个设备的串口波特率及系统时钟频率测试, ...
- 基于MVC4+EasyUI的Web开发框架形成之旅--权限控制
我在上一篇随笔<基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍>中大概介绍了基于MVC的Web开发框架的权限控制总体思路.其中的权限控制就是分为“用户登录身份验证” ...
- Docker run命令详解 转
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 Usage: doc ...
- ios隐藏键盘
1.点击页面空白处隐藏键盘 给viewController里面复写-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event方法,在 ...
- xcode 5.0中,新的开发者证书加载方式
按照先前从网上看到的参考,开通了开发者账号之后,要先在本地生成一个request文件,然后上传苹果开发者网站,然后在官网上生成一个证书.cer文件,拿这个文件在本地生成p12文件,然后就是一堆鸡零狗碎 ...
- ReorderList 的使用
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"> ...
- java反射学习笔记
1.java反射概念 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功 ...
- 预处理语句--#define、#error和#warning
1.#define语句 我们经常会这样定义一些宏: #define BLOCK 8192 但这样的宏却不能在字符串中展开,如: printf("The BLOCK numb ...