两种方式建立Vsftpd虚拟用户(2)

二、数据库服务器(MySQL)方式
 
1. 安装MySQL
 
我使用的是Tar包安装的MySQL,版本号:mysql-6.0.8-alpha.tar.gz
 
2. 建立本地映射用户并设置宿主目录权限 


[root@CentOS5 /]#useradd –d /home/vftpsite –s /sbin/nologin vftpuser
 
[root@CentOS5 /]#chmod 700 /home/vftpsite
 
 
3. 配置vsftpd.conf(设置虚拟用户配置项) 


[root@CentOS5 /]#vi /etc/vsftpd/vsftpd.conf
 
guest_enable=YES #开启虚拟用户
 
guest_username=vftpuser #FTP虚拟用户对应的系统用户
 
pam_service_name=vsftpd #PAM认证文件 
 
4. 在MySQL中建立用户口令数据库 


[root@CentOS5 /]#mysql –u root –p
 
mysql> create database vftpuser;  #建立虚拟用户数据库,库名vftpuser
 
mysql> use vftpuser;  #进入vftpuser数据库
 
 
 
mysql> create table users(name char(16) binary,passwd char(16) binary);  #建立虚拟用户口令表,表名users
 
 
 
mysql> insert into users (name,passwd) values ('bobyuan',password('111')); 

mysql>  insert into users (name,passwd) values ('markwang',password('111'));
 
#建立两个虚拟用户,bobyuan和markwang
 
注:在这里我用这种方法添加的虚拟用户密码都是经过MySQL加密的,加密后的密码pam-mysql不能识别(MySQL和pam-mysql兼容性有些问题),因此本次实验使用明文保存密码。
添加明文密码:
方法一:单个添加用户
mysql> insert into users (name,passwd) values ('bobyuan', '111');
mysql> insert into users (name,passwd) values ('markwang',‘111');
方法二:批量添加用户
新建vftpuser.txt文件
[root@CentOS5 /]#vi vftpuser.txt
添加用户名和密码,注意字段数据之间要用Tab键隔开。
bobyuan  111
markwang 111
mysql>use vftpuser;
mysql>load data local infile “/vftpuser.txt”into table users;
 
mysql>flush privileges;
 
 
 
mysql> grant select on vftpuser.users to vftpuser@localhost identified by '111111';  #授权vftpuser这个账号可以读取vftpuser数据库的user表
 
 
 
5. 验证第4步的设置是否成功
 


[root@CentOS5 /]#mysql –u vftpuser –p
 
mysql>show databases;
 
mysql>use vftpuser;
 
mysql>show tables;
 
mysql>select * from users;
 
mysql>quit
 
如下图:
 

两种方式建立Vsftpd虚拟用户


 
 
6. 编译MySQL的PAM认证模块
 
查看/lib/security目录下有没有MySQL对应的PAM模块。
 


如果没有则下载pam-mysql安装(),
 
我下载的是pam_mysql-0.7RC1.tar.gz。
 


[root@CentOS5 /]#cd /usr/local/src
 
[root@CentOS5 src]#tar –zxvf pam_mysql-0.7RC1.tar.gz
 
[root@CentOS5 src]#cd pam_mysql-0.7RC1
 
[root@CentOS5 pam_mysql-0.7RC1]# ./configure --with-mysql=/usr/local/mysql/ --with-pam-mods-dir=/lib/security/
 
[root@CentOS5 pam_mysql-0.7RC1]#make
 
[root@CentOS5 pam_mysql-0.7RC1]#make install
 


 
 
7. 编辑vsftpd的PAM认证文件
 
在/etc/pam.d目录下,
 


[root@CentOS5 /]#vi /etc/pam.d/vsftpd
 
将里面其他的都注释掉,添加下面这两行:
 


auth required pam_mysql.so user=vftpuser passwd=111111 host=localhost db=vftpuser table=users usercolumn=name passwdcolumn=passwd crypt=0
 
account required pam_mysql.so user=vftpuser passwd=111111 host=localhost db=vftpuser table=users usercolumn=name passwdcolumn=passwd crypt=0
 
crypt=0:表示口令使用明文方式保存在数据库中
crypt=1:表示口令使用UNIX的DES加密方式加密后保存在数据库中
crypt=2:表示口令使用MySQL的password()函数加密后保存在数据库中
crypt=3:表示口令使用MD5散列值的方式保存在数据库中
 
 
 
8. 重启vsftpd服务
 

[root@CentOS5 /]#service vsftpd restart
 
 
 
9. 测试虚拟用户登录FTP
 

C:\User\Administrator>ftp 192.168.120.240
 
Connected to 192.168.120.240.
220 Welcome to BOB FTP server
User (192.168.120.240:(none)): bobyuan
331 Please specify the password.
Password:
230 Login successful.
ftp> quit
221 Goodbye.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/3623c76c516f85ac5d60996e9b6fd722.html