虚拟用户的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源,所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全
1.生成虚拟用户口令库文件。为了建立此口令库文件,先要生成一个文本文件。该文件的格式如下,单数行为用户名,偶数行为口令:
[[email protected] vsftpd]# vim vu.txt
aa
11
bb
11
2.
用户认证文件的生成需要安装额外的软件来实现,软件名为:db4-utils
[[email protected] Server]# rpm -ivh db4-4.3.29-10.el5.i386.rpm
生成口令库文件,并修改其权限:
[[email protected] vsftpd]# db_load -T -t hash -f vu.txt vu.db
[[email protected] vsftpd]# chmod 600 vu.db
3.新建一个虚拟用户的PAM文件。加上如下两行内容(原始代码先注释掉避免冲突):
[[email protected] 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的家目录
[[email protected] vsftpd]# useradd -s /sbin/nologin cc
[[email protected] 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.安装 如下:
[[email protected] ~]# yum install php mysql httpd mysql-server mysql-devel php-mysql
[[email protected] ~]# service mysqld start
[[email protected] ~]# mysqladmin -u root -p password "123"
[[email protected] ~]# 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的管理工具
解压
[[email protected] pureftp]# tar -zxvf pure-ftpd-1.0.36.tar.gz -C /usr/local/src
[[email protected] ~]# 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
出现如图所示即为配置成功
[[email protected] pure-ftpd-1.0.36]# make
[[email protected] pure-ftpd-1.0.36]# make install
6. 切换到pureftp的安装目录,缺少etc目录,手工创建该目录
[[email protected] 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
[[email protected] pureftpd]# mkdir etc
7.生成pureftp的配置文件
[[email protected] pureftpd]# cp -p /usr/local/src/pure-ftpd-1.0.36/configuration-file/pure-ftpd.conf /usr/local/pureftpd/etc/
[[email protected] pureftpd]# cp /usr/local/src/pure-ftpd-1.0.36/configuration-file/pure-config.pl /usr/local/pureftpd/sbin/
8.产生控制脚本
[[email protected] ~]# chmod a+x /usr/local/pureftpd/sbin/pure-config.pl
[[email protected] pureftpd]# cd /usr/local/src/pure-ftpd-1.0.36/contrib/
[[email protected] contrib]# chmod 755 redhat.init
[[email protected] contrib]# cp redhat.init /etc/init.d/pureftpd
9.编辑该控制脚本文件
[[email protected] init.d]# pwd
/etc/init.d
[[email protected] init.d]# vim pureftpd
重启pureftpd
[[email protected] init.d]# service pureftpd restart
[[email protected] init.d]# netstat -tupln |grep 21
10.将pureftpd 加入chkconfig的管理之列
[[email protected] init.d]# chkconfig --add pureftpd
[[email protected] init.d]# chkconfig pureftpd on
[[email protected] init.d]# chkconfig --list |grep pureftpd
pureftpd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
11. 配置虚拟用户登录环境(家目录)
[[email protected] init.d]# useradd vuserftp -d /ftproot -s /sbin/nologin
[[email protected] init.d]# chmod -R 777 /ftproot/
[[email protected] 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/下
[[email protected] pureftp]# pwd
/pureftp
[[email protected] pureftp]# cp pureftpd-mysql.conf /usr/local/pureftpd/etc
[[email protected] etc]# pwd
/usr/local/pureftpd/etc
[[email protected] etc]# vim pureftpd-mysql.conf
32 MYSQLPassword 123
45 MYSQLCrypt md5
[[email protected] pureftp]# pwd
/pureftp
[[email protected] pureftp]# vim pureftp.sql
50 INSERT INTO admin VALUES ('admin',MD5('123'));
77 NoAnonymous yes
[[email protected] pureftp]# mysql -u root -p <pureftp.sql
16. 添加连接mysql用户
mysql> grant all privileges on ftpusers.* to [email protected] identified by '123';
Query OK, 0 rows affected (0.02 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
[[email protected] pureftp]# mysql -u ftp -p
17.配置web管理界面Pureadmin
[[email protected] pureftp]# tar -zxvf PureAdmin-0.3.tar.gz -C /var/www/html/
18.修改PureAdmin的配置文件
[[email protected] html]# mv PureAdmin-0.3 pureadmin
[[email protected] html]# cd pureadmin
[[email protected] pureadmin]# vim config.php
19.重启httpd pureftpd
[[email protected] pureadmin]# service httpd restart
[[email protected] pureadmin]# service pureftpd restart
20. 创建虚拟账号和本地账号的映射数据库
[[email protected] pureadmin]# vim /usr/local/pureftpd/etc/pure-ftpd.conf
126 PureDB /usr/local/pureftpd/etc/pureftpd.pdb
[[email protected] pureadmin]# cd /usr/local/pureftpd/bin
[[email protected] ~]# useradd vu -s /sbin/nologin
[[email protected] bin]# echo PATH=$PATH:/usr/local/pureftpd/bin >> /etc/profile
[[email protected] bin]# source /etc/profile
21.新建讯账号test1 ,和本地账号vuserftp映射
[[email protected] bin]# pure-pw useradd test1 -u vuserftp -g vuserftp -d /ftproot/test1 -m
# vuserftp是我们以前建的用户
Password:
Enter it again:
建立用户数据库:
[[email protected] bin]# pure-pw mkdb /usr/local/pureftpd/etc/pureftpd.pdb
22.进入后台如下:
登录测试:
查看日志如下:
转载于:https://blog.51cto.com/dg123/1094305