vsftpd基于pam_mysql的虚拟用户机制

  

<强>一、虚拟用户概述


vsftpd使用虚拟用户时,需要为所有的虚拟用户创建一个系统用户,因为无论vsftpd使用的是哪一种用户类型(匿名用户,系统用户,虚拟用户),最终都是要映射为操作系统上的一个用户,而每一个文件资源都有各自的权限,只有操作系统上的用户才能根据权限模型判断是否能够访问该文件资源。这里仅介绍vsftpd基于pam_mysql的虚拟用户机制的使用。




(1)编译pam_mysql前要提供开发环境,并安装其依赖的程序包的开发包

[root@ftp  ~] #, yum  -y  groupinstall “Development 工具”,“Server  Platform 发展”   [root@ftp  ~) #, yum  -y  install  pam-devel  openssl-devel  mariadb-devel


(2)下载pam_mysql的源码压缩包


#在pam_mysql官网上下载其压缩包

 vsftpd基于pam_mysql的虚拟用户机制


(3)解压缩后进行编译安装

[root@ftp  ~] #, tar  pam_mysql xf  0.7 - rc1.tar.gz   (root@ftp  ~) #, cd  pam_mysql - 0.7 rc1/[pam_mysql root@ftp  0.7 - rc1] #,   [pam_mysql root@ftp  0.7 - rc1] #,。/configure ——使用mysql=/usr ——使用openssl=/usr ——和pam=/usr  with-pam-mods-dir=/lib64/安全   [pam_mysql root@ftp  0.7 - rc1] #, make ,,, make 安装




(1)启动mysql服务,并设置为开机自动启动

[root@ftp  ~] #, systemctl  start  mariadb.service   (root@ftp  ~) #, systemctl  enable  mariadb。服务


(2)创建数据库vsftpd和表用户

[root@ftp  ~] #, mysql   mysql>, CREATE  DATABASE  vsftpd;   mysql>, use  vsftpd;   mysql>, CREATE  TABLE  users  (   id  INT  AUTO_INCREMENT  NOT  NULL  PIRMARY 键,   name  CHAR (30), NOT 空,   password  CHAR (48), BINARY  NOT  NULL );   #,mysql使用密码()函数加密后的结果有48个字符   mysql>, DESC 用户;   + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   |,Field ,,, |, Type ,,,,,, |, Null  |, Key  |, Default  |, Extra ,,,,,,,, |   + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   |,id ,,,,,, |, int (11),,,, |, NO ,, |, PRI  |, NULL ,,, |, auto_increment  |   |,name ,,,, |, char (30),,, |, NO ,, |,,,,, |, NULL ,,, |,,,,,,,,,,,,,,, |   | |,password 二进制(48),|,NO ,, |,,,,, |, NULL ,,, |,,,,,,,,,,,,,,, |   + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +


(3)为表插入数据

mysql>, INSERT  INTO  usr(名称、密码),VALUES (‘汤姆’,密码(“mageedu”)),(“杰瑞”,密码(“mageedu.com”),

(4)授权

mysql>, GRANT  SELECT 提醒vsftpd。*,用vsftpd@localhost  IDENTIFIED  BY “mageedu”;   mysql>, GRANT  SELECT 提醒vsftpd。*,用vsftpd@‘127.0.0.1, IDENTIFIED  BY “mageedu”;   mysql>, FLUSH 特权;


<强>

[root@ftp  ~] #, vim /etc/pam.d/vsftpd.mysql      auth  required  pam_mysql.so 用户=vsftpd  passwd=mageedu 主机=localhost  db=vsftpd 表=用户   usercolumn=name  passwdcolumn=password 地下室=2      account  required  pam_mysql.so 用户=vsftpd  passwd=mageedu 主机=localhost  db=vsftpd 表=用户   usercolumn=name  passwdcolumn=password 地下室=2



<强>


[root@ftp  ~] #,, useradd  -s /sbin/nologin  -d /ftproot  vuser   (root@ftp  ~) #, ll  -d /ftproot/drwx - - - - - -又是;4,vuser  vuser  87年,Jun , 9, 21:48 /ftproot/,,,, #,组用户和其它用户是没有任何权限的   (root@ftp  ~) #, chmod  + rx /ftproot/,,,, #,为组用户和其他用户添加读和执行权限   (root@ftp  ~) #, chmod  -w /ftproot ,,,,,,, #,映射用户vuser的家目录不能有写权限   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

vsftpd基于pam_mysql的虚拟用户机制