虚拟用户的特点是只能访问服务器为其提供的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即使aa和bb的映射用户,登录后是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 测试如下:
此时本地用登录不了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
出现如图所示即为配置成功
[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
重启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
[root@localhost pureftp]# mysql -u root -p <pureftp.sql
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
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
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
[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.进入后台如下:
登录测试:
查看日志如下: