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 18:18
下一篇 2017-06-07 23:19

相关推荐

  • linux 文件管理命令

    cp 复制文件或者路径 单源复制: cp [OPTION]…[-T] SOUTCE DEST 如果DEST不存在:则事先创建此文件,并复制源文件的数据流到DEST中 如果DEST存在:   如果DEST是非目录文件:则覆盖目标文件; 如果DEST是目录,就在这个目录中创建一个同名的文件,把源数据复制到这个文件中。 多源复制: cp [O…

    Linux干货 2017-08-28
  • LVS负载均衡实战演练

    LVS负载均衡实战之lvs-nat模型 1.准备好机器,配置好时间同步,配置号网络,主机名 172.16.251.91 client [桥接] [网关为172.16.251.90] #lvs负载均衡两块网卡 172.16.251.90  lvs [网卡1] [桥接] 192.168.42.150  lvs [网卡2] [VMnet8] 192.168.42.…

    Linux干货 2017-06-22
  • 最简单也最难:运维监控的最后1公里

    谈运维我们不得不提监控,监控是运维的起点,也是难点。随着IT架构逐渐复杂化,从前端到IT底层,中间涉及浏览器、网络、服务器、操作系统、中间件、应用、数据库等,每个环节厂商不尽相同。当出现异常需要定位哪个环节出了问题的时候,排查就耗时耗力,若使用优云监控产品,以上难题不再是问题。优云全栈运维监控覆盖了所有环节的监控,真正做到监控无盲区,运维无隐患。 运维最后一…

    系统运维 2017-01-09
  • inotify+rsync同步方案(ubuntu,适用其他发行版)

    系统:Ubuntu 16.04.1  工具:rsync 3.1.1 、inotify -tools 3.14      作者:jevtse    本文除了软件安装部分,其他内容同样适用其他linux系统;同步目标主机:172.16.250.…

    2017-03-05
  • Linux的终端类型

    Linux的终端类型 Linux的终端类型: TTY(虚拟终端,图形终端) 早期的电子计算机的输入设备是穿孔卡片【又称霍列瑞斯式卡(Herman Hollerith)或IBM卡】,用有洞和无洞表示计算机二进制里面的0和1,以此来记录相关信息,但是这种方式很慢。 1986年股票代码被发明,人们通过电报和电传打印机发送实时股票价格,此时teletypewrite…

    Linux干货 2016-10-14
  • puppet部署多台服务器

    利用puppet实现自动化部署 配置前准备:   图中:蓝线表示各个服务器之间通信      红线表示puppetmaster主机向各个agent主机部署信道 A主机puppet-master主机:192.168.126.129 B主机做两种服务:keepalived高性能和nginx反代  &nb…

    2017-07-23