vsftpd虚拟用户认证配置(vsftpd+pam+mysql)

一、准备所需要的程序包

mysql

pam_mysql

vsftpd

二、开始安装

[[email protected] ~]# yum -y install mysql-server mysql-devel vsftpd pam_mysql
// 注意:pam_mysql由epel源提供,epel源需要自行设置

三、创建虚拟用户账号

1、创建数据库及存储用户的表

[[email protected] ~]# service mysqld start
// 启动mysql服务
[[email protected] ~]# mysql
mysql> create database vsftpd;    // 创建名为vsftpd的数据库
Query OK, 1 row affected (0.00 sec)

mysql> use vsftpd   // 切换当前数据库为vsftpd
Database changed
mysql> create table users(id int UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,name VARCHAR
(50) NOT NULL,password CHAR(48) NOT NULL);
Query OK, 0 rows affected (0.02 sec)  // 创建users表并建立对应字段用以存放虚拟用户名和密码

mysql>

2、创建一个数据库用户给vsftpd服务认证虚拟用户时连接访问数据使用

mysql> grant select on vsftpd.* to [email protected] identified by 'redhat';
Query OK, 0 rows affected (0.00 sec)  // 创建一个名为vsftpd的用户,并且赋予它以vsftpd数据
所有表的查看权限,上面的IP地址是指定可以从哪个地址访问mysql数据库

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

3、向表中添加虚拟用户账号和密码

mysql> insert into users(name,password) values('tom','redhat'),('jerry','redhat');
Query OK, 2 rows affected (0.00 sec)  // 向users表中插入两行数据,分别对应两个用户名和密码
Records: 2  Duplicates: 0  Warnings: 0

需要注意的是:这里使用的是明文存放密码,建议使用加密存放,例如password()函数,使用方法如下:

mysql> insert into users(name,password) values('tom',password('redhat')),('jerry',passowrd
('redhat'));

三、配置vsftpd

1、建立pam认证所需文件

[[email protected] ~]# vim /etc/pam.d/vsftpd.mysql
auth required /lib/security/pam_mysql.so user=vsftpd passwd=redat host=172.16.20.242 db=
vsftpd table=uesrs usercolumn=name passwdcolumn=password crypto=0
account required /lib/security/pam_mysql.so user=vsftpd passwd=redhat host=172.16.20.242 
db=vsftpd table=users usercolumn=name passwdcolumn=password crypto=0
// /lib/security/pam_mysql.so指定使用pam_mysql.so进行认证
// user=vsftpd 指定数据库用户名
// passwd=redhat 指定数据库用户密码
// host=172.16.20.242 指定同过哪个主机地址进行数据库连接
// db=vsftpd 指定数据库名
// table=users 指定存储虚拟用户名和密码的表
// usercolumn=name 指定存储用户名的字段
// passwdcolumn=password 指定存储虚拟用户密码的字段
// crypto=0 指定虚拟用户密码存放的加密方式,0代表不加密,1代表使用crypt函数加密,2代表使用password()函数加密
,3代表使用md5方式加密,4代表使用sha1方式加密

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

[[email protected] ~]# useradd -s /sbin/nologin -d /var/ftproot vuser
[[email protected] ~]# chmod go+rx /var/ftproot
// 创建一个虚拟用户映射的系统用户,用以访问ftp服务,由于其家目录就是fpt服务的访问目录,所以
要给予其家目录其他用户可以访问的权限

[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES   // 允许匿名用户访问,因为虚拟用户的实质就是匿名用户
local_enable=YES   // 允许本地用户访问,因为虚拟用户需要映射到本地用户
write_enable=YES   // 开启对访问目录的写权限,根据需求开启
anon_upload_enable=NO   // 禁止匿名用户上传,根据需求配置
anon_mkdir_write_enable=NO   // 禁止虚拟用户创建和删除目录,根据需求配置
chroot_local_user=YES   // 禁止用户切换目录

guest_enable=YES   // 开启虚拟用户功能
guest_username=vuser    // 设定虚拟用户的映射的本地用户为vuser

pam_service_name=vsftpd.mysql    // pam的配置文件默认为vsftpd,由于上面做了修改,这里需要修
改成我们配置的文件

四、启动vsftpd服务,并测试配置效果

[[email protected] ~]# service vsftpd start

使用windows的CMD访问

五、配置虚拟用户的访问权限

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

1、配置vsftpd为虚拟用户使用配置文件目录

[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_config   // 设定虚拟用户配置文件的存放目录

2、创建相应目录并创建配置文件

[[email protected] ~]# mkdir /etc/vsftpd/vusers_config
[[email protected] ~]# touch tom jerry

3、配置虚拟用户的访问权限

虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。例如,如果需要让tom用户具有上传文件的权限等,可以修改/etc/vsftpd/vusers_config/tom文件,在里面添加如下选项即可。

需要注意的是,之前在/etc/vsftpd/vsftpd.conf中的相关于匿名用户的权限则需要关闭掉,避免冲突,如果vsftpd.conf中配置了权限,而虚拟用户的配置文件中没有配置,那么会继承vsftpd.conf中的权限

如果vsftpd.conf中配置了权限,而虚拟用户的配置文件中也有配置吗,那么会继承虚拟用户的配置文件中的配置

[[email protected] ~]# vim /etc/vsftpd/vusers_config/tom
anon_upload_enable=YES
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}

写的比较潦草,如有遗漏错误和争议之处,欢迎大家的批评指正和讨论,谢谢。

时间: 2024-10-21 14:44:38

vsftpd虚拟用户认证配置(vsftpd+pam+mysql)的相关文章

推荐-Vsftpd虚拟用户的配置 for CentOS

Vsftpd虚拟用户的配置 System:Linux centos6.5 2.6.32-431.el6.x86_64 vsftpd-2.2.2-21.el6.x86_64 第一步.安装 #cd  /etc/yum.repos.d/ # rm -rf * # wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo # yum clean all # yum -y install vsftpd # yum -y install db4-ut

VSFTPD虚拟用户实战配置

FTP是文件传输协议,正是由于这种协议使得主机间可以共享文件. FTP 使用TCP生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输. vsftpd是一款在LINUX发行版中最主流的FTP服务器程序:特点是小巧轻快,安全易用:能让其自身特点得发发挥和掌握.如果使用系统用户登录FTP,是比较危险的,所以我们主要采用vsftpd虚拟用户登录FTP服务器进行常见的操作,当然配置就相对复杂一点.(centos7安装) 1.首先安装FTP以及虚拟用户需要用到的软件及认证模块 yu

vsftpd基于pam虚拟用户认证,还怕泄漏账号么?

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

mysql数据库结合pam_mysql模块实现vsftpd虚拟用户

mysql数据库结合pam_mysql模块实现vsftpd虚拟用户登录 最近开始学mysql,自己做一个小实验,来个总结,比较容易理解,没什么太多理论性的东西. 一.实验环境的准备 1. 先下载需要用到的软件和依赖包 [[email protected] ~]# yum -y install mariadb-server mariadb-devel pam-devel gcc-c++ vsftpd 2. 安装pam_mysql模块(Plugable Authentication Module 插

烂泥:ubuntu下vsftpd虚拟用户配置

本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我微信ilanniweb. 以前搭建vsftpd都是在centos下,本以为在ubuntu按照以前的步骤搭建即可.可是实际情况告诉我是,我太想当然了.经过一番的折腾终于把ubuntu下vsftpd虚拟用户的配置搞定了,下面就把我的配置步骤贴出来供得为参考. 一.业务要求 现在要求创建一个FTP账号ailanni,该账号只能登录到/www目录下,不能切换到上级目录.同时处于安全考虑还要求该账号上传的文件权限为644

ubuntu下vsftpd虚拟用户配置

以下实验全部在ubuntu server 14.04 X64上进行. 业务要求: 现在要求创建一个FTP账号user1,该账号只能登录到/www目录下,不能切换到上级目录.同时处于安全考虑还要求该账号上传的文件权限为644,即上传的文件具有可读可写权限,但是没有可执行权限. 一:安装vsftpd sudo apt-get -y install vsftpd 查看下vsftpd都安装了那些文件 dpkg -L vsftpd |tac 二:vsftpd配置 1.创建用户,如下: sudo usera

vsftpd虚拟用户整理

Vsftpd虚拟用户的配置 第一步.安装 # wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo # yum clean all # yum -y install vsftpd # yum -y install db4-utils 第二步.建立虚拟用户 #vim /home/ftpusr.txt 1.  user1 2.  password1 3.  user2 4.  password2 5.  user3 6.  passwor

vsftpd+pam+MySQL—->实现虚拟用户认证

一.安装所需要程序 1.安装vsftpd yum -y install vsftpd 2.安装MySQL yum -y install  mysql-server mysql-devel pam_mysql 二.创建虚拟用户账号 1.准备数据库及相关表 首先请确保mysql服务已经正常启动.而后,按需要建立存储虚拟用户的数据库即可,这里将其创建为vsftpd数据库. mysql> create database vsftpd; mysql> grant select on vsftpd.* t

FTP服务学习笔记之基于MySQL+PAM的vsftpd虚拟用户

基于mysql+PAM的vsftpd虚拟用户配置 一.实验说明 操作系统:Redhat5.8_X64bit 实验平台:VMware Workstation 所需要的软件包:pam_mysql-0.7RC1.tar.gz 二.安装所需要程序 1.事先安装好开发环境和mysql数据库 # yum -y groupinstall "Development Tools" "Development Libraries" #yum -y install mysql-server