虚拟用户的特点是只能访问服务器为其提供的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.进入后台如下: 登录测试: 查看日志如下: