您现在的位置是:首页> 操作系统> Linux
vsftpd虚拟用户之mysql实战详解
- 4596人已阅读
- 时间:2018-10-30 09:58:46
- 分类:Linux
vsftpd是个强大的ftp服务器工具,同时虚拟用户也是最安全,权限最方便控制的方法,所以祥哥今天讲一下vsftpd基于MYSQL的虚拟用户认证。为什么讲这个呢,因为不得不说,这个MYSQL认证网上的坑太多,很多人就是弄不成功。所以今天看见了祥哥的文章,你肯定会弄成功。
祥哥整理一下过程:
安装vsftpd软件
安装MYSQL
安装pam模块与mysql连接认证
搭建FTP+PAM+MySQL环境开始。
第一步:安装vsftpd软件,祥哥不说了,如果不会的往前翻,祥哥讲过怎么安装了。
第二步:对vsftpd做主要的默认配置,这个配置取决于自己想让默认的用户有什么样的权限,就配置什么权限。但我们要配置虚拟用户,所有下面的这几项要有
pam_service_name=vsftpd guest_enable= YES guest_username=ftp virtual_use_local_privs=NO
这里的配置项是如果还是不明白,往前看祥哥写的FTP配置详解,写的已经很全了。
第三步:MYSQL的安装,这步我就省略了,如果在LINUX上还不会安装MYSQL哪天祥哥单独出教程。因为我的本机架设了LAMP环境,所以有了MYSQL。而且是编译安装的,特意说了一下编译安装的,这个就是个坑。我们一会说。
第四步:创建个数据库ftp和表user存放FTP帐号和密码
#登陆到mysql数据库上后创建数据库FTP mysql>CREATE DATABASE IF NOT EXISTS `ftp` ; #选择库 mysql>use ftp; #创建表 mysql>CREATE TABLE IF NOT EXISTS `user` ( `id` smallint unsigned not null primary key auto_increment, `username` varchar(20) not null, `password` varchar(256) not null )charset=utf8; #插入两个用户 mysql>insert into user (username,password) values('xiangge',encrypt('123456')); mysql>insert into user (username,password) values('xg',encrypt('123456')); #授权pam验证用户连接数据库的帐号和密码这有个坑,如果编译安装必须用IP。yum直接安装的可以用localhost mysql>grant select on ftp.user to ftp@192.168.0.200 identified by '123456'; mysql> FLUSH PRIVILEGES; #好了,mysql的条件具备了。
第五步:安装PAM
#安装依赖包 yum -y install mysql-devel pam-devel #编译安装pam [root@localhost]#wget http://www.huzs.net/soft/vsftpd/pam_mysql-0.7RC1.tar.gz [root@localhost]#tar xvf pam_mysql-0.7RC1.tar.gz [root@localhost]#cd pam_mysql-0.7RC1 [root@localhost]# ./configure --with-openssl --with-pam-mods-dir=/lib64/security/ [root@localhost]# make && make install
安装完成后,会在/lib64/security下生成如下两个文件
/lib64/security/pam_mysql.la /lib64/security/pam_mysql.so
第六步:关键配置
#因为上面pam_service_name是默认的vsftpd,当然这个名字你可以自己重新定义 #我们直接修改/etc/pam.d/vsftpd auth required /lib64/security/pam_mysql.so user=ftp passwd=123456 host=192.168.0.200 db=ftp table=user usercolumn=username passwdcolumn=password crypt=1 account required /lib64/security/pam_mysql.so user=ftp passwd=123456 host=192.168.0.200 db=ftp table=user usercolumn=username passwdcolumn=password crypt=1 #这里有坑祥哥解释一下各个字段含义 # 调用的模块 数据库用户名 数据库密码 IP 库名 表名 用户名字段 密码字段 加密方式 #crypt 0:表示明文 ,1表示encrypt加密 2表示password()函数 3.表示md5()加密 #第1个坑,有的教程写的是host=localhost 这个没有错,但MYSQL只要是编译安装的绝对不行,必须填远程IP地址 #第2个坑,0:明文测试通,1:encrypt测试通过,2:password()不通过 3:md5()不通过。所以后两种最好别用了
第七步:重启vsftpd服务和MYSQL服务。大功告成。
祥哥在这里也说一下基于Berkeley DB工具认证主要就是PAM的配置和DB文件的生成。
#首先,安装Berkeley DB工具,很多人找不到db_load的问题就是没有安装这个包。 yum install db4 db4-utils #然后,创建用户密码文本/etc/vsftpd/vuser_passwd.txt ,注意奇行是用户名,偶行是密码 test 123456 #接着,生成虚拟用户认证的db文件 db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db #随后,编辑认证文件/etc/pam.d/vsftpd,全部注释掉原来语句,再增加以下两句: auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
好了,还有人说那不同用户不同权限怎么控制,这个权限与这些认证是两回事,还记得上篇祥哥讲配置里面有一项:
user_config_dir=/etc/vsftpd/userconf
也就是说vsftp看见这个配置会先到/etc/vsftpd/userconf下找用户的配置文件,配置文件与用户名相同,可以在那里指定不同的权限。
上一篇:vsftpd的配置文件详解
下一篇:LVM灾难修复坏一个硬盘怎么办