计世网
首页 | 资讯   独家分析 专题 人物 科技 | 资源   信息化 方案案例 CIO文库 周报全文 企业中心 职场 电子杂志 社区联盟
互动   创业 Wiki 博客 社区 视频 直播 | 产品   服务器 商用软件 存储 安全 网络通信 智能手机 笔记本 台式机 芯片 办公
iPhone 地震 CCBN Moto分拆 CIO ERP Vista 智能手机 工信部 N95 P2P WLAN 四核服务器 Nvidia 安全 IT两会 互联网年会 奥运频道
 您的位置: 计世网 > 软件 > 软件开发 > 开发编程 > 数据库技术 > 正文
·Windows 7 中必须抛弃的五个旧功能
·小心别让你的Windows 7 麻烦缠身
·酷狗音乐EQ 让你变身个性DJ
·价格or实用?中小企业用什么ERP软件
·Word 2007自动提取数据制作成绩单!
·三大突破 金山毒霸2009启用“云安全”
·告诉你Windows文件复制的数量极限
·Photoshop CS4 全新功能试用评测!
VSFTP+MySQL虚拟用户配置 [收藏] [打印] [推荐]
作者:非常下载  2008-08-28 15:36:01

VSFTPD是一种在UNIX/Linux中非常安全且快速的FTP服务器,目前已经被许多大型站点所采用。VSFTPD支持将用户名和口令保存在数据库文件或数据库服务器中。VSFTPD称这种形式的用户为虚拟用户。相对于FTP的本地(系统)用户来说,虚拟用户只是FTP服务器的专有用户,虚拟用户只能访问FTP服务器所提供的资源,这大大增强系统本身的安全性。相对于匿名用户而言,虚拟用户需要用户名和密码才能获取FTP服务器中的文件,增加了对用户和下载的可管理性。对于需要提供下载服务,但又不希望所有人都可以匿名下载;既需要对下载用户进行管理,又考虑到主机安全和管理方便的FTP站点来说,虚拟用户是一种极好的解决方案。本文介绍在RedHat Linux 9上如何将VSFTPD的虚拟用户名和密码保存在MySQL数据库服务器中。

一、VSFTPD的安装

目前,VSFTPD的最新版本是1.2.0版。官方下载地址为ftp://vsftpd.beasts.org/users/cevans/vsftpd-1.2.0.tar.gz。在安装前,需要先做以下准备工作:

VSFTPD默认配置中需要“nobody”用户。在系统中添加此用户,如果用户已经存在,useradd命令有相应提示。

[root@hpe45 root]# useradd nobody

useradd: user nobody exists

VSFTPD默认配置中需要“/usr/share/empty”目录。在系统中此目录,如果目录已经存在,mkdir命令有相应提示。

[root@hpe45 root]# mkdir /usr/share/empty/

mkdir: cannot create directory '/usr/share/empty': File exists

VSFTPD提供匿名FTP服务时,需要“ftp”用户和一个有效的匿名目录。

[root@hpe45 root]# mkdir /var/ftp/

[root@hpe45 root]# useradd -d /var/ftp ftp

接下来的操作对于ftp用户是否已经存在都是有用的。

[root@hpe45 root]# chown root.root /var/ftp

[root@hpe45 root]# chmod og-w /var/ftp

以上准备工作完成后,我们就可以开始编译源代码了。假定我们下载的vsftpd-1.2.0.tar.gz在/root目录,执行以下命令:

[root@hpe45 root]# tar zxvf vsftpd-1.2.0.tar.gz

[root@hpe45 root]# cd vsftpd-1.2.0

[root@hpe45 vsftpd-1.2.0]# make

[root@hpe45 vsftpd-1.2.0]# make install

上面的“make install”命令将编译好的二进制文件、手册等复制到相应目录。在RHL9上,可能需要手动执行以下复制:

[root@hpe45 vsftpd-1.2.0]# cp vsftpd /usr/local/sbin/vsftpd

[root@hpe45 vsftpd-1.2.0]# cp vsftpd.conf.5 /usr/local/share/man/man5

[root@hpe45 vsftpd-1.2.0]# cp vsftpd.8 /usr/local/share/man/man8

接下来,我们复制一个简单的配置文件作为基础供后面修改。

[root@hpe45 vsftpd-1.2.0]# cp vsftpd.conf /etc

[root@hpe45 vsftpd-1.2.0]# cp RedHat/vsftpd.pam /etc/pam.d/ftp

复制PAM验证文件,以允许本地用户登录VSFTPD。

[root@hpe45 vsftpd-1.2.0]# cp RedHat/vsftpd.pam /etc/pam.d/ftp

二、创建guest用户

VSFTPD采用PAM方式验证虚拟用户。由于虚拟用户的用户名/口令被单独保存,因此在验证时,VSFTPD需要用一个系统用户的身份来读取数据库文件或数据库服务器以完成验证,这就是VSFTPD的guest用户。这正如同匿名用户也需要有一个系统用户ftp一样。当然,我们也可以把guest用户看成是虚拟用户在系统中的代表。下面在系统中添加vsftpdguest用户,作为VSFTPD的guest。

[root@hpe45 vsftpd-1.2.0]# useradd vsftpdguest

当虚拟用户登录后,所在的位置为vsftpdguest的自家目录/home/vsftpdguest。如果要让虚拟用户登录到/var/ftp等其他目录,修改vsftpdguest的自家目录即可。

三、设置VSFTPD配置文件

在/etc/vsftpd.conf文件中,加入以下选项:

guest_enable=YES

guest_username=vsftpdguest

然后执行以下命令,让VSFTPD在后台运行:

[root@hpe45 vsftpd-1.2.0]# /usr/local/sbin/vsftpd &

四、将虚拟用户保存在MySQL数据库服务器中

我们建立数据库vsftpdvu,表users,字段name和passwd用于保存虚拟用户的用户名和口令,同时增加两个虚拟用户xiaotong和xiaowang。

[root@hpe45 vsftpd-1.2.0]# mysql -p

mysql>create database vsftpdvu;

mysql>use vsftpdvu;

mysql>create table users(name char(16) binary,passwd char(16) binary);

mysql>insert into users (name,passwd) values ('xiaotong',password('qqmywife'));

mysql>insert into users (name,passwd) values ('xiaowang',password('ttmywife'));

mysql>quit

然后,授权vsftpdguest可以读vsftpdvu数据库的users表。执行以下命令:

[root@hpe45 vsftpd-1.2.0]# mysql -u root mysql -p

mysql>grant select on vsftpdvu.users to vsftpdguest@localhost identified by 'i52serial0';

mysql>quit

如果要验证刚才的操作是否成功可以执行下面命令:

[root@hpe45 vsftpd]#mysql -u vsftpdguest -pi52serial0 vsftpdvu

mysql>select * from users;

如果成功,将会列出xiaotong、xiaowang和加密后的密码

五、设置MySQL的PAM验证

这里我们要用到一个利用mysql进行pam验证的开源项目(http://sourceforge.net/projects/pam-mysql/)。首先从网站下载它的程序包pam_myql-0.5.tar.gz,复制到/root目录中。在编译安装之前,要确保mysql-devel的RPM包已经安装在你的机器上,如果没有请从RHL安装光盘中安装该包。然后,执行以下命令:

[root@hpe45 root]#tar xvzf pam_mysql-0.5.tar.gz

[root@hpe45 root]#cd pam_mysql

[root@hpe45 pam_mysql]#make

[root@hpe45 pam_mysql]#make install

make install这一步可能会出现错误,那只好手动将该目录下生成的pam_mysql.o复制到/lib/security目录下。

接下来,我们要设置vsftpd的PAM验证文件。打开/etc/pam.d/ftp文件,加入以下内容:

auth required pam_mysql.o user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2

account required pam_mysql.o user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2

上面涉及到的参数,只要对应前面数据库的设置就可以明白它们的含义。这里需要说明的是crypt参数。crypt表示口令字段中口令的加密方式:crypt=0,口令以明文方式(不加密)保存在数据库中;crypt=1,口令使用UNIX系统的DES加密方式加密后保存在数据库中;crypt=2,口令经过MySQL的password()函数加密后保存。

六、进一步的虚拟用户设置

经过以上的步骤,虚拟用户就可以正常使用了。这里介绍进一步的虚拟用户设置。首先,介绍虚拟用户的权限设置。

VSFTPD-1.2.0新添了virtual_use_local_privs参数,当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限。当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限,这也就是VSFTPD-1.2.0之前版本对虚拟用户权限的处理方法。这两者种做法相比,后者更加严格一些,特别是在有写访问的情形下。默认情况下此参数是关闭的(NO)。

当virtual_use_local_privs=YES时,只需设置write_enable=YES,虚拟用户就可以就拥有写权限。而virtual_use_local_privs=NO时,对虚拟用户权限的设置就更多一些更严格一些。

控制虚拟用户浏览目录:如果让用户不能浏览目录,但仍可以对文件操作,那么需要执行以下二个步骤:一,配置文件中,anon_world_readable_only=YES。二,虚拟用户目录的权限改为只能由vsftpdguest操作:

[root@hpe45 root]# chown vsftpdguest.vsftpdguest /home/vsftpdguest

[root@hpe45 root]# chmod 700 /home/vsftpdguest

允许虚拟用户上传文件:

write_enable=YES

anon_upload_enable=YES

允许虚拟用户修改文件名和删除文件:

anon_other_write_enable=YES

由于以上选项的设置同样会对匿名用户生效。如果不想匿名用户趁机拥有同样的权限,最好是禁止匿名用户登录。

其次,由于虚拟用户在系统中是vsftpdguest身份,所以可以访问到系统的其他目录。为了更加安全,我们可以将虚拟用户限制在自家目录下。有两种做法:一,在配置文件中增加以下选项

chroot_local_user=NO

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

然后,在/etc/vsftpd.chroot_list文件中加入虚拟用户名xiaotong和xiaowang。

第二种做法,在配置文件中修改chroot_local_user=YES。

经过修改后,虚拟用户登录后其根目录就限制在/home/vsftpdguest下,无法访问其他目录。

七、虚拟用户的个人目录

大家可以发现,无论是哪个虚拟用户,登录后所在的目录都是/home/vsftpdguest,即都是guest_username用户的自家目录。下面,介绍如何为每个虚拟用户建立自家目录。首先,在主配置文件中加入以下选项:

user_config_dir=/etc/vsftpd/vsftpd_user_conf

然后,生成/etc/vsftpd/vsftpd_user_conf目录,并在该目录下建立与特定虚拟用户同名的文件:

[root@hpe45 root]# mkdir /etc/vsftpd/vsftpd_user_conf

[root@hpe45 root]# cd /etc/vsftpd/vsftpd_user_conf

网页编辑:大鱼
本文关键字: VSFTP MySQL虚拟用户
如果您对“VSFTP+MySQL虚拟用户配置”有任何疑问要咨询,或您对我们专家的解答有任何疑义,请您点击以下的链接提交意向单,我们的编辑和信息化专家将会很快为您做出回答,您提供的信息经过审核后将有机会出现在我们的网页上。
  专家介绍
相关文章
·Linux操作系统配置Vsftp的方法
推荐文章
·三大突破 金山毒霸2009启用“云安全”
·价格or实用?中小企业用什么ERP软件
·Photoshop CS4 全新功能试用评测!
·Windows 7 中必须抛弃的五个旧功能
·小心别让你的Windows 7 麻烦缠身
文章评论 您的姓名 您的Email
  
频道热门导航
软件新闻 开发频道 软件下载 软件论坛 软件白皮书 SOA 虚拟化 管理平台 操作系统 数据库 Linux 中间件 办公系统
计世网热门导航
资讯中心 信息化 商用软件 服务器 方案案例 智能手机 笔记本 手机社区 笔记本社区
热门文章排行
·下载:Firefox 3.0.4正式版
·国际观点:是谁在编写Linux?
·Google利用Chrome和Gmail...
·金融危机:软件外包业战战兢兢
·Adobe软件成最佳攻击目标 ...
·一个时代的终结:挥别Windo...
·评论:瑞星误杀 技术缺失还...
·连线杂志:Windows操作系...
热门关键字导航
·新 闻 ·评 测 ·方 案 ·开 发 ·下 载 ·专 题 ·论 坛 ·SaaS ·电子商务 ·Web开发
专题推荐 更多
如何助企业过冬?
云计算的未来
·十大最具影响力开源软件
·雷霆万钧还是春风化雨?微软...
·云计算、SaaS和软件的危险三...
·颠覆微软 谷歌推出Google Ch...
·免费安全 安不安全?
·计世网商用软件频道新版上线...
论坛热贴
·百度平台优势初显
·小心"摩登王"和"窃贼LD"木...
·大换血 百度Hi发布Beta2新版
·教你如何删除ppsds.pgf
·IBM Lotus Symphony正式版发布
·“最强女助理”裸照背后
关于我们 | 客服热线 | 广告服务 | 招聘信息 | 法律声明 | 投稿指南 | 联系方式
Copyright(C) ccw.com.cn,All rights reserved
中国计算机世界出版服务公司内容版权所有
京ICP证010182