虚拟用户的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源,所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全

1.生成虚拟用户口令库文件。为了建立此口令库文件,先要生成一个文本文件。该文件的格式如下,单数行为用户名,偶数行为口令:

 [root@localhost vsftpd]# vim vu.txt

aa

11

bb

11

2

用户认证文件的生成需要安装额外的软件来实现,软件名为:db4-utils

[root@localhost Server]# rpm -ivh db4-4.3.29-10.el5.i386.rpm 

生成口令库文件,并修改其权限:

[root@localhost vsftpd]# db_load -T -t hash -f vu.txt vu.db

 [root@localhost vsftpd]# chmod 600 vu.db

3.新建一个虚拟用户的PAM文件。加上如下两行内容(原始代码先注释掉避免冲突): 

[root@localhost vsftpd]# vim /etc/pam.d/vsftpd

auth        required /lib/security/pam_userdb.so db=/etc/vsftpd/vu

account     required /lib/security/pam_userdb.so db=/etc/vsftpd/vu

4.FTP虚拟用户是需要一个系统用户(例如cc,这个用户不需要密码,也不需要登录,只提供一个登录目录.并且让这个目录对other用户拥有读写权限. 

此时用户cc即使aabb的映射用户,登录后是cc的家目录

[root@localhost vsftpd]# useradd -s /sbin/nologin cc

[root@localhost vsftpd]# chmod o+rw /home/cc

5.修改vsftpd主配置文件,让系统支持虚拟用户

guest_enable=yes      # guest_enable=YES表示启用虚拟用户

guest_username=cc     #将虚拟用户映射为本地用户cc

6.进入cc家目录,创建cc.txt 方便测试 并修改权限

# chmod o+rw /home/cc

7.重启vsftpd 测试如下:

Vsftpd虚拟用户的配置及pureftp配置解析_Vsftpd虚拟用户 

此时本地用登录不了ftp-serer

 

Pure ftp的配置过程  (清空以前的配置)

配置yum

1.安装gcc

2.yum groupinstall " Development Libraries " -y,注意一定要加引号。

3.yum groupinstall " Development Tools " -y

4.安装 如下:

[root@localhost ~]# yum install php mysql httpd mysql-server mysql-devel php-mysql

[root@localhost ~]# service mysqld start

[root@localhost ~]# mysqladmin -u root -p password "123"

[root@localhost ~]# mysql -u root -p

Enter password: 

5.需要使用以下软件包:

pure-ftpd-1.0.36.tar.gz pureftp主程序

ZendOptimizer-3.3.3-linux-hicode.tar.gz php加速工具

PureAdmin-0.3.tar.gz pureftp的管理工具

解压

[root@localhost pureftp]# tar -zxvf pure-ftpd-1.0.36.tar.gz -C /usr/local/src

[root@localhost ~]# cd /usr/local/src/pure-ftpd-1.0.36/

./configure \

--prefix=/usr/local/pureftpd \

--with-mysql \

--with-shadow \

--with-pam \

--with-welcomemsg \

--with-uploadscript \

--with-cookie \

--with-virtualchroot \

--with-virtualhosts \

--with-diraliases \

--with-quotas \

--with-puredb \

--with-sysquotas \

--with-ratios \

--with-ftpwho \

--with-throttling \

--with-language=simplified-chinese

出现如图所示即为配置成功

Vsftpd虚拟用户的配置及pureftp配置解析_pureftp配置解析_02

[root@localhost pure-ftpd-1.0.36]# make

[root@localhost pure-ftpd-1.0.36]# make install

6切换到pureftp的安装目录,缺少etc目录,手工创建该目录

[root@localhost pureftpd]# ll

总计 12

drwxr-xr-x 2 root root 4096 12-19 07:17 bin

drwxr-xr-x 2 root root 4096 12-19 07:17 sbin

drwxr-xr-x 3 root root 4096 12-19 07:17 share

[root@localhost pureftpd]# mkdir etc

7.生成pureftp的配置文件

[root@localhost pureftpd]# cp -p /usr/local/src/pure-ftpd-1.0.36/configuration-file/pure-ftpd.conf /usr/local/pureftpd/etc/

[root@localhost pureftpd]# cp /usr/local/src/pure-ftpd-1.0.36/configuration-file/pure-config.pl /usr/local/pureftpd/sbin/

8.产生控制脚本

[root@localhost ~]# chmod a+x /usr/local/pureftpd/sbin/pure-config.pl 

[root@localhost pureftpd]# cd /usr/local/src/pure-ftpd-1.0.36/contrib/

[root@localhost contrib]# chmod 755 redhat.init 

[root@localhost contrib]# cp redhat.init  /etc/init.d/pureftpd

9.编辑该控制脚本文件

[root@localhost init.d]# pwd

/etc/init.d

[root@localhost init.d]# vim pureftpd 

 

Vsftpd虚拟用户的配置及pureftp配置解析_pureftp配置解析_03

重启pureftpd

[root@localhost init.d]# service pureftpd restart

[root@localhost init.d]# netstat -tupln |grep 21

10.pureftpd 加入chkconfig的管理之列

[root@localhost init.d]# chkconfig --add pureftpd

[root@localhost init.d]# chkconfig pureftpd on

[root@localhost init.d]#  chkconfig --list |grep pureftpd

pureftpd        0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

11配置虚拟用户登录环境(家目录)

[root@localhost init.d]# useradd vuserftp -d /ftproot -s /sbin/nologin

[root@localhost init.d]# chmod -R 777 /ftproot/

[root@localhost init.d]# vim /usr/local/pureftpd/etc/pure-ftpd.conf

 

336 CreateHomeDir               yes

12.重启pureftpd

13.ftp用户登录ftp服务器时,ftp根据自己的配置文件查找到mysql的配置文件

14.  MySQLConfigFile   /usr/local/pureftpd/etc/pureftpd-mysql.conf

15.将导入的pureftpd-mysql.conf 文件放到/usr/local/pureftpd/etc/

[root@localhost pureftp]# pwd

/pureftp

[root@localhost pureftp]# cp pureftpd-mysql.conf  /usr/local/pureftpd/etc

[root@localhost etc]# pwd

/usr/local/pureftpd/etc

[root@localhost etc]# vim pureftpd-mysql.conf 

 32 MYSQLPassword   123

 45 MYSQLCrypt      md5

[root@localhost pureftp]# pwd

/pureftp

[root@localhost pureftp]# vim pureftp.sql 

 50 INSERT INTO admin VALUES ('admin',MD5('123'));

 77 NoAnonymous                 yes

Vsftpd虚拟用户的配置及pureftp配置解析_Vsftpd虚拟用户_04 

[root@localhost pureftp]# mysql -u root -p <pureftp.sql

Vsftpd虚拟用户的配置及pureftp配置解析_pureftp配置解析_05 

Vsftpd虚拟用户的配置及pureftp配置解析_pureftp配置解析_06 

Vsftpd虚拟用户的配置及pureftp配置解析_pureftp配置解析_07 

16添加连接mysql用户

mysql> grant all privileges on ftpusers.* to ftp@localhost identified by '123';

Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> quit

[root@localhost pureftp]# mysql -u ftp -p

Vsftpd虚拟用户的配置及pureftp配置解析_pureftp配置解析_08 

17.配置web管理界面Pureadmin

[root@localhost pureftp]# tar -zxvf PureAdmin-0.3.tar.gz -C /var/www/html/

18.修改PureAdmin的配置文件

[root@localhost html]#  mv PureAdmin-0.3 pureadmin

[root@localhost html]# cd pureadmin

[root@localhost pureadmin]# vim config.php

Vsftpd虚拟用户的配置及pureftp配置解析_Vsftpd虚拟用户_09 

19.重启httpd pureftpd

[root@localhost pureadmin]# service httpd restart

[root@localhost pureadmin]# service pureftpd restart

20. 创建虚拟账号和本地账号的映射数据库

[root@localhost pureadmin]# vim /usr/local/pureftpd/etc/pure-ftpd.conf

126  PureDB             /usr/local/pureftpd/etc/pureftpd.pdb

[root@localhost pureadmin]# cd /usr/local/pureftpd/bin

[root@localhost ~]# useradd vu  -s /sbin/nologin 

Vsftpd虚拟用户的配置及pureftp配置解析_Vsftpd虚拟用户_10 

[root@localhost bin]# echo PATH=$PATH:/usr/local/pureftpd/bin >> /etc/profile

[root@localhost bin]# source /etc/profile

21.新建讯账号test1 ,和本地账号vuserftp映射

[root@localhost bin]# pure-pw useradd test1 -u vuserftp -g vuserftp -d /ftproot/test1 -m  

 #  vuserftp是我们以前建的用户

Password: 

Enter it again: 

建立用户数据库:

[root@localhost bin]# pure-pw mkdb /usr/local/pureftpd/etc/pureftpd.pdb

22.进入后台如下:

Vsftpd虚拟用户的配置及pureftp配置解析_pureftp配置解析_11 

 

Vsftpd虚拟用户的配置及pureftp配置解析_pureftp配置解析_12 

登录测试:

Vsftpd虚拟用户的配置及pureftp配置解析_Vsftpd虚拟用户_13 

查看日志如下:

Vsftpd虚拟用户的配置及pureftp配置解析_pureftp配置解析_14