VSFTP+MySQL虚拟用户配置过程讲解

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

时间: 2024-09-12 02:32:16

VSFTP+MySQL虚拟用户配置过程讲解的相关文章

VSFTP+MySQL虚拟用户配置过程讲解,互联网营销

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

linux中Vsftp虚拟用户配置

1.添加虚拟用户列表 创建一个虚拟用户列表文件,保存需要配置的虚拟帐号,格式为:第一行用户名,第二行密码,依次类推. # vi /etc/vsftpd/virtual_user_list ftp_www 123456 ftp_log 123456 2.生成虚拟用户口令认证文件   通过db_load命令生成认证文件.查询db_load命令是否已安装,未安装则先安装. # rpm -qa |grep db4-utils 本地CentOS未安装,直接通过yum安装即可. # yum -y insta

centos 6.0 vsftpd虚拟用户配置总结

如果你已经对pam有所了解,请跳过,我知道的可能还不如你多.你不感兴趣也请跳过,因为不看这个也可配置. 用户 <-> vsftpd <-> PAM模块 <-> 用户和密码数据库 vsftpd用了一种很聪明同时也是unix/linux规范的方法来认证用户,就是PAM.大家对于PAM,也许有些陌生,但是一直在用.所谓PAM,英文是:Pluggable Authentication Modules,可拔插认证模    块(不知道这样翻译对不对).看见plug这个关键字,就知道

Vsftpd服务器虚拟用户配置

  系统环境是: CentOS 5.5 x86_64 vsftpd有三种用户模式:匿名用户.本地用户.虚拟用户.本次我们来讲解虚拟用户,它的优点是安全性高,便于管理.  代码如下   # 通过yum直接在线装vsftpd(rpm版本) yum -y install vsftpd db4-utils # 创建vsftp的系统用户 useradd vuser -s /sbin/nologin # 创建系统用户的列表, 一行一个 touch /etc/vsftpd/chroot_list # 创建虚拟

linux vsftp创建虚拟用户

前言:   FTP有三种登录方式:匿名登录.本地系统用户登录和虚拟用户登录.   虚拟用户是ftp服务器的专用用户,它的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源.所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性.在VSFTP中,认证这些虚拟用户使用的是单独的口令库文件(pam_userdb),由可插入认证模块(PAM)认证.使用这种方式更加安全,并且配置更加灵活. 1 2 3 4 5 yum install 

ubuntu下vsftpd虚拟用户配置

一.业务要求 现在要求创建一个FTP账号ailanni,该账号只能登录到/www目录下,不能切换到上级目录.同时处于安全考虑还要求该账号上传的文件权限为644,即上传的文件具有可读可写权限,但是没有可执行权限. 除此之外还要求该用户不能是系统用户,即使用vsftpd的虚拟用户. 要求看起来比较简单,下面我们开始进行配置. PS:以下实验全部在ubuntu server 14.04 X64上进行.有关centos的操作可以参考这篇文章<烂泥:Vsftpd使用虚拟用户,访问FTP>. 二.vsft

Vsftpd服务器虚拟用户配置方法

系统环境是: CentOS 5.5 x86_64 vsftpd有三种用户模式:匿名用户.本地用户.虚拟用户.本次我们来讲解虚拟用户,它的优点是安全性高,便于管理.  代码如下 复制代码 # 通过yum直接在线装vsftpd(rpm版本) yum -y install vsftpd db4-utils # 创建vsftp的系统用户 useradd vuser -s /sbin/nologin # 创建系统用户的列表, 一行一个 touch /etc/vsftpd/chroot_list # 创建虚

linux中vsftpd虚拟用户配置脚本示例

每次新安装服务器后,都要进行一系列的配置,安装软件,修改配置等,为了今后更好的部署vsftpd,特此写了个脚本用于部署 登录FTP有三种方式,匿名登录.本地用户登录和虚拟用户登录. 匿名登录:在登录FTP时使用默认的用户名,一般是ftp或anonymous. 本地用户登录:使用系统用户登录,在/etc/passwd中. 虚拟用户登录:这是FTP专有用户,有两种方式实现虚拟用户,本地数据文件和数据库服务器. FTP虚拟用户是FTP服务器的专有用户,使用虚拟用户登录FTP,只能访问FTP服务器提供的

硬件防火墙的配置过程讲解(1)

本篇要为大家介绍一些实用的知识,那就是如何配置防火中的安全策略.但要注意的是,防火墙的具体配置方法也不是千篇一律的,不要说不同品牌,就是同一品牌的不同型号也不完全一样,所以在此也只能对一些通用防火墙配置方法作一基本介绍.同时,具体的防火墙策略配置会因具体的应用环境不同而有较大区别.首先介绍一些基本的配置原则. 一. 防火墙的基本配置原则 默认情况下,所有的防火墙都是按以下两种情况配置的: ●拒绝所有的流量,这需要在你的网络中特殊指定能够进入和出去的流量的一些类型.●允许所有的流量,这种情况需要你