vsftp通过pam_mysql做虚拟用户认证

vsftpd可以通过三种账户登录系统:

  • 系统账户:系统本地账户登录系统,默认进入的目录是用户家目录,可以在所有有权限的路径切换;

  • 匿名账户:匿名用户登录,然后映射为一个本地用户;

  • 虚拟账户:既不是系统本地用户也不是匿名用户,而是通过pam做第三方认证的方法,支持文件和数据库,ldap的认证,此处通过mysql进行实验;

一、准备实验环境

  1. 实验在一台虚拟机上进行,此虚拟机需要安装vsftpd和mysql,此处采用的是centos7.3的系统。

    1. 安装vsftpd和mariadb-server:

       yum install -y vsftpd mariadb-server
    2. 因为是通过pam_mysql进行用户验证,所以需要安装pam_mysql模块,但是默认系统yum源不提供,所以此处通过编译安装,此前需要先安装如下环境:

       yum install -y mariadb-devel pam-devel  yum groupinstall -y "Develop Tools"
    3. 下载pam_mysql并进行编译安装,加压缩之后切换到目录内并执行如下命令:

       ./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security make && make install

二、具体实验配置

  1. 首先需要在vsftpd的配置文件编辑/etc/vsftpd/vsftpd.conf如下选项:

     #通过mysql验证的文件路径# pam_service_name=vsftpd.mysql #允许虚拟账号登录# guest_enable=YES #虚拟用户映射为本地的ftp用户# guest_username=ftp #系统用户权限单独配置文件路径# user_config_dir=/etc/vsftpd/vusers_config/
  2. mysql数据库创建数据库和数据表,并插入值,并授权指定用户对库有访问权限;

         mysql> CREATE DATABASE vsftpd;     mysql> CREATE TABLE users (         -> id INT AUTO_INCREMENT NOT NULL,         -> name CHAR(30) BINARY NOT NULL,         -> password CHAR(48) BINARY NOT NULL,         -> PRIMARY KEY (id)         -> );     mysql> INSERT INTO users (name,password) VALUES ('tom',password('1234567a'));     mysql> INSERT INTO users (name,password) VALUES ('cat',password('1234567a'));     mysql> GRANT select ON vsftpd.* TO vsftpd@'%' IDENTIFIED BY 'mageedu';     mysql> FLUSH PRIVILEGES;
  3. 创建步骤1指定的pam_service_name文件,路径在必须在/etc/pam.d下:

     auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=192.168.11.137 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2  account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=192.168.11.137 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
  4. 在/etc/vsftpd/vusers_config/目录下创建和tom,jerry同名的文件,指定权限,此处权限如下:

     #tom允许所有权限# anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES #jerry不允许创建目录# non_upload_enable=YES anon_mkdir_write_enable=NO anon_other_write_enable=YES
  5. 通过ftp登录,然后测试即可。

原创文章,作者:王子豪,如若转载,请注明出处:http://www.178linux.com/77736

(0)
王子豪王子豪
上一篇 2017-06-07
下一篇 2017-06-07

相关推荐

  • 浅谈DNS基本原理以及实现方法(二)

             DNS作为互联网服务的一个基础型服务,了解和掌握DNS服务的原理和配置将是每一个运维人员必备的技能,这就如同闯荡江湖的侠客不但要有的招式,还要懂的运用这些招式的心法一样,接下来我将从DNS的正反向解析、主从同步、子域授权以及Bind view这四个方面来揭开它神…

    Linux干货 2015-12-19
  • 马哥教育网络班21期-第八周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 设备 使用场景 功能 区别 集线器 局域网 共享同一网络 不能分隔冲突域 网桥 局域网 连接不同网段,拓展局域网 端口少,可以分隔冲突域 二层交换机 局域网 连接不同局域网段,数据交换 端口更多,可以分隔冲突域,速率更快 三层交换机 局域网,广域网 路由,高速数据交换,分隔广播域…

    Linux干货 2016-09-08
  • 第一周作业

    1. 描述计算机的组成及其功能。
    2. 按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
    3. 描述Linux的哲学思想,按照自己的理解对其解释性描述。
    4. 说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、……等命令使用,配合相应实例阐述。
    5. 如何获取帮助信息,描述man文档章节划分。
    6. 罗列发行版基础目录名称命名法则及功用规定。

    Linux干货 2017-12-03
  • shell脚本变成之数组、字符串处理及其它功能补充

    数组定义:                  能够存储多个元素的内存空间,每个元素在数组中具有特定的索引编号,我们可以通过变量名和索引编号来查看数组中的某一元素。    &nbsp…

    Linux干货 2016-08-24
  • 马哥教育网络班21期+第四周课程练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 ~]# cp -r /etc/skel /home/tuser1; chmod -R gx=— /home/tuser1 [root@mag…

    Linux干货 2016-08-02
  • ☞磁盘管理、MBR、GPT、分区工具、文件系统、常见分区挂载

    磁盘管理{磁盘结构;MBR;GPT;分区工具;文件系统;分区挂载;}

    Linux干货 2016-08-29