1、准备所须要的程序包mysql
mysqlsql
pam_mysql数据库
vsftpdvim
2、开始安装windows
[root@localhost ~]# yum -y install mysql-server mysql-devel vsftpd pam_mysql // 注意:pam_mysql由epel源提供,epel源须要自行设置
3、建立虚拟用户帐号bash
一、建立数据库及存储用户的表ide
[root@localhost ~]# service mysqld start // 启动mysql服务 [root@localhost ~]# 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>
二、建立一个数据库用户给vsftpd服务认证虚拟用户时链接访问数据使用函数
mysql> grant select on vsftpd.* to vsftpd@172.16.20.242 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)
三、向表中添加虚拟用户帐号和密码测试
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()函数,使用方法以下:ui
mysql> insert into users(name,password) values('tom',password('redhat')),('jerry',passowrd ('redhat'));
3、配置vsftpd
一、创建pam认证所需文件
[root@localhost ~]# 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方式加密
二、修改vsftpd的配置,使其适应mysql认证
[root@localhost ~]# useradd -s /sbin/nologin -d /var/ftproot vuser [root@localhost ~]# chmod go+rx /var/ftproot // 建立一个虚拟用户映射的系统用户,用以访问ftp服务,因为其家目录就是fpt服务的访问目录,因此 要给予其家目录其余用户能够访问的权限 [root@localhost ~]# 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,因为上面作了修改,这里须要修 改为咱们配置的文件
4、启动vsftpd服务,并测试配置效果
[root@localhost ~]# service vsftpd start
使用windows的CMD访问
5、配置虚拟用户的访问权限
vsftpd能够在配置文件目录中为每一个用户提供单独的配置文件以定义其ftp服务访问权限,每一个虚拟用户的配置文件名同虚拟用户的用户名,配置文件目录能够是任意未使用目录,只须要在vsftpd.conf指定其路径及名称便可。
一、配置vsftpd为虚拟用户使用配置文件目录
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/vusers_config // 设定虚拟用户配置文件的存放目录
二、建立相应目录并建立配置文件
[root@localhost ~]# mkdir /etc/vsftpd/vusers_config [root@localhost ~]# touch tom jerry
三、配置虚拟用户的访问权限
虚拟用户对vsftpd服务的访问权限是经过匿名用户的相关指令进行的。例如,若是须要让tom用户具备上传文件的权限等,能够修改/etc/vsftpd/vusers_config/tom文件,在里面添加以下选项便可。
须要注意的是,以前在/etc/vsftpd/vsftpd.conf中的相关于匿名用户的权限则须要关闭掉,避免冲突,若是vsftpd.conf中配置了权限,而虚拟用户的配置文件中没有配置,那么会继承vsftpd.conf中的权限
若是vsftpd.conf中配置了权限,而虚拟用户的配置文件中也有配置吗,那么会继承虚拟用户的配置文件中的配置
[root@localhost ~]# vim /etc/vsftpd/vusers_config/tom anon_upload_enable=YES anon_mkdir_write_enable={YES|NO} anon_other_write_enable={YES|NO}
写的比较潦草,若有遗漏错误和争议之处,欢迎你们的批评指正和讨论,谢谢。