VSFTP+MySQL虚拟用户配置过程

2008-02-23 07:42:43来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

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文档,加入以下内容:

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 安装并测试MySQL

下一篇: 安装MySQL步骤详解