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

相关推荐

  • 通过fast-cgi方式在三台主机部署phpwind并设置为https站点

    通常来说httpd用来处理静态的网页请求,动态的资源请求以前是通过CGI的方式进行处理的,但是CGI的方式的处理过程是这样:有动态资源请求,服务器会fork一个CGI进程进行资源处理,处理完成后这个进程会退出,当再有新的动态资源请求,又会fork一个进程,这样的效率是很低的。后来就有了通过加载php模块的方式,即:httpd服务器启动之后会自动加载php动态…

    2017-06-04
  • linux目录管理之整合篇

    目录配置:     1,根目录,所有目录都由根目录衍生出,与开机,还原,系统修复等操作有关。     2,根目录下各子目录应存放的文件。             I,/bin和/sbin目录,/bin放置的是单用户维护模式下能被操作的命令,可以被root和一般…

    Linux干货 2017-05-29
  • 关于tar命令的一些方法

    tar 解压缩文件时只有当文件格式中有tar才能使用,否则使用其他单独的特定解压缩工具,例如uncompress,gzip ,bzip2.xz等等 tar压缩解压缩命令详解 tar命令详解 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命…

    Linux干货 2016-08-29
  • 权限(用户、特殊、ACL)

    root权限(id=0) root无论在什么情况下都有rw权限,但是是否拥有x权限,要分情况: 第一,文件所有者和所属组都无x权限,root也无x权限; 第二,文件所有者和所属组二者任何一个有x权限,root就有x权限。 用户得到的权限 匹配顺序:文件所有者——文件所属组——其他人(从左到右) 用户访问文件,一旦按次序匹配成功,其获得的权限就是匹配选项所对应…

    Linux干货 2017-05-30
  • 马哥教育网络班22期+第2周课程练习

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及相关示例演示。     文件管理类命令有:cp,mv,rm     1. cp:copy           使用方法:      &nbs…

    Linux干货 2016-08-22
  • sed与vim

    sed工具 简介 Stream EDitor, 行编辑器 sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Se…

    Linux干货 2016-08-15