深度思考吧 关注:54贴子:377
  • 5回复贴,共1

vsftpd手册(转)

只看楼主收藏回复

时间:2005-04-27 作者:施文建
 

 
 
  VSFTPD 

  施文建 

0 关于本文档 
1 VSFTPD简述 
2 VSFTPD的安装 
2.1 RHL9+vsftpd-1.1.3-8.i386.rpm包的安装 
2.2 vsftpd-1.2.0.tar.gz的安装 
3 VSFTPD的文件结构 
4 VSFTPD的启动与停止 
5 VSFTPD的设置选项 
5.1 连接选项 
5.1.1 监听地址与控制端口 
5.1.2 FTP模式与数据端口 
5.1.3 ASCII模式 
5.2 性能与负载控制 
5.2.1 超时选项 
5.2.2 负载控制 
5.3 用户选项 
  5.3.1 匿名用户 
   5.3.2 本地用户 
5.3.3 虚拟用户 
5.4 安全措施 
5.4.1 用户登录控制 
5.4.2 目录访问控制 
5.4.3 文件操作控制 
5.4.4 新增文件权限设定 
5.5 提示信息 
5.6 日志设置 
5.7 其他设置 
6 VSFTPD应用 
6.1 允许匿名用户上传文件 
6.2 限制用户在自家目录 
6.3 配置高安全级别的匿名FTP服务器 
6.4 基于IP地址的虚拟FTP服务器 
6.5 虚拟用户的配置 
6.5.1 VSFTPD的虚拟用户介绍 
6.5.2 用户创建和目录设置 
6.5.3 配置文件的设置 
6.5.3.1 基本设置 
6.5.3.2 权限设置 
6.5.3.3 虚拟用户的其他配置 
6.5.3.4 虚拟用户个人目录设置 
6.5.4 MySQL保存虚拟用户 

------------------------------------------- 

0、关于本文档 

  本文档是个人的学习整理。允许大家翻阅,摘抄,引用。更欢迎指出其中不对之处。文档的内容主要

来自VSFTPD自身文档、个人学习心得以及网络资料,若有类同,实属正常,∶)。 

  本文档基于RedHat Linux 9和VSFTPD-1.1.3-8。如果有不同版本,则有专门文字说明。 

1、VSFTPD简述 

  如果试问哪种FTP服务器最安全?那么在UNIX和Linux中,首推的就是VSFTP(Very Secure FTP 

Daemon,非常安全的FTP服务器)。顾名思义,VSFTPD设计的出发点就是安全性。同时随着版本的不断升

级,VSFTPD在性能和稳定性上也取得了极大的进展。象RedHat、SUSE、Debian、GNU、GNOME、KDE等一些

大型站点都采用VSFTPD作为它们的FTP服务器。大家可以到http://vsftpd.beasts.org/了解它的最新情况

。 

2、VSFTPD的安装 

2.1、RHL9+vsftpd-.1.1.3-8.i386.rpm包的安装 

  VSFTPD的安装很简单。在RHL9中,在图形界面下依次执行“Main Menu”-“System Settings”-“

Add/Remove Applications”-选择FTP服务器-“更新”,或者在字符界面中执行以下命令,就可以完成

安装。 
  rpm -ivh vsftpd-1.1.3-8.i386.rpm 

2.2、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 

  从官方站点下载到/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 

  ⑶安装编译好的VSFTPD 

  执行“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 
  此外,“make install”没有复制简单的配置文件,建议执行以下命令: 
  [root@hpe45 vsftpd-1.2.0]# cp vsftpd.conf /etc 

  ⑷为本地用户设置PAM 

  如果允许本地用户登录VSFTPD,执行以下操作: 
  [root@hpe45 vsftpd-1.2.0]# cp RedHat/vsftpd.pam /etc/pam.d/ftp 

3、VSFTPD的文件结构 

  VSFTPD的文件结构是很简洁的,主要包括: 
  /usr/sbin/vsftpd ---- VSFTPD的主程序 
  /etc/rc.d/init.d/vsftpd ---- 启动脚本 
  /etc/vsftpd/vsftpd.conf ---- 主配置文件 
  /etc/pam.d/vsftpd ---- PAM认证文件 
  /etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用户列表文件 
  /etc/vsftpd.user_list ---- 禁止或允许使用VSFTPD的用户列表文件 
  /var/ftp ---- 匿名用户主目录 
  /var/ftp/pub      ---- 匿名用户的下载目录 
  此外,还有一些说明文档和手册文件。 

  此外VSFTPD的日志文件位于/etc/logrotate.d/vsftpd.log。 



1楼2007-07-16 17:38回复
    4、VSFTPD的启动与停止 

      VSFTPD可以单独(Standalone)方式运行,如同httpd、named这类的服务器的运行方式,这是RHL9中默

    认的方式;也可以采用xinetd方式运行,这是RHL7.x、8中的默认方式。具体的运行方式由参数listen决

    定。从RHL中VSFTPD的运行方式,也可以看出VSFTPD的逐步发展。 

      当listen参数值为YES时,RHL9中的默认值,VSFTPD单独运行,我们可以使用脚

    本/etc/rc.d/init.d/vsftpd来启动、关闭以及重启VSFTPD。命令如下: 
      /etc/rc.d/init.d/vsftpd start|stop|restart 

      如果说在RHL9上,您还希望使用Xinetd启动VSFTPD的运行方式,那么首先要将vsftpd.conf配置文件

    中的listen参数值改为NO。其次,生成一个/etc/xinetd.d/vsftpd文件,内容如下: 
      service vsftpd 
      { 
      disable = no 
      socket_type = stream 
      wait = no 
      user = root 
      server = /usr/sbin/vsftpd 
      port = 21 
      log_on_success += PID HOST DURATION 
      log_on_failure += HOST 
      } 
      通过修改disable值为no或yes,并重新启动xinetd,从而启动或停止VSFTPD。 

      由于VSFTPD的单独模式已经拥有足够的能力,所以后面6中讨论到的应用,都是以单独模式来运行的

    ,而非Xinetd方式。 

      注:还可以直接执行vsftpd来启动FTP服务,关闭时使用“kill”命令。 
      [root@hpe45 root]# /usr/local/sbin/vsftpd & 

    5、VSFTPD的设置选项 

      VSFTPD的配置文件/etc/vsftpd/vsftpd.conf是个文本文件。以“#”字符开始的行是注释行。每个选

    项设置为一行,格式为“option=value”,注意“=”号两边不能留空白符。除了这个主配置文件外,还

    可以给特定用户设定个人配置文件,具体介绍见后。 
      VSFTPD包中所带的vsftpd.conf文件配置比较简单,而且非常偏执狂的(文档自称:-))。我们可以根

    据实际情况对其进行一些设置,以使得VSFTPD更加可用。 

    5.1、连接选项 

      本部分主要是一些与建立FTP链接相关的选项。 

    5.1.1、监听地址与控制端口 

      listen_address=ip address 
      此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义了在主机的哪个IP地址上监听FTP请

    求,即在哪个IP地址上提供FTP服务。对于只有一个IP地址的主机,不需要使用此参数。对于多址主机,

    不设置此参数,则监听所有IP地址。默认值为无。 

      listen_port=port_value 
      指定FTP服务器监听的端口号(控制端口),默认值为21。此选项在standalone模式下生效。 

    5.1.2、FTP模式与数据端口 

      FTP 分为两类,PORT FTP和PASV FTP,PORT FTP是一般形式的FTP。这两种FTP在建立控制连接时操作

    是一样的,都是由客户端首先和FTP服务器的控制端口(默认值为21)建立控制链接,并通过此链接进行传

    输操作指令。它们的区别在于使用数据传输端口(ftp-data)的方式。PORT FTP由FTP服务器指定数据传输

    所使用的端口,默认值为20。PASV FTP由FTP客户端决定数据传输的端口。PASV FTP这种做法,主要是考

    虑到存在防火墙的环境下,由客户端与服务器进行沟通(客户端向服务器发出数据传输请求中包含了数据

    传输端口),决定两者之间的数据传输端口更为方便一些。 

      port_enable=YES|NO 
      如果你要在数据连接时取消PORT模式时,设此选项为NO。默认值为YES。 

      connetc_from_port_20=YES|NO 
      控制以PORT模式进行数据传输时是否使用20端口(ftp-data)。YES使用,NO不使用。默认值为NO,但

    RHL自带的vsftpd.conf文件中此参数设为YES。 

      ftp_data_port=port number 
      设定ftp数据传输端口(ftp-data)值。默认值为20。此参数用于PORT FTP模式。 

      port_promiscuous=YES|NO 
      默认值为NO。为YES时,取消PORT安全检查。该检查确保外出的数据只能连接到客户端上。小心打开

    此选项。 

      pasv_enable=YES|NO 
      YES,允许数据传输时使用PASV模式。NO,不允许使用PASV模式。默认值为YES。 

      pasv_min_port=port number 
      pasv_max_port=port number 
      设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表示任意。默认值为0。把

    端口范围设在比较高的一段范围内,比如50000-60000,将有助于安全性的提高。 

      pasv_promiscuous=YES|NO 
      此选项激活时,将关闭PASV模式的安全检查。该检查确保数据连接和控制连接是来自同一个IP地址。

    小心打开此选项。此选项唯一合理的用法是存在于由安全隧道方案构成的组织中。默认值为NO。 

      pasv_address= 
      此选项为一个数字IP地址,作为PASV命令的响应。默认值为none,即地址是从呼入的连接套接字

    (incoming connectd socket)中获取。


    2楼2007-07-16 17:38
    回复
      5.1.3 ASCII模式 

        默认情况下,VSFTPD是禁止使用ASCII传输模式。即使FTP客户端使用asc命令,指明要使用ASCII模式

      ,但是,VSFTPD表面上接受了asc命令,而在实际传输文件时,还是使用二进制方式。下面选项控制

      VSFTPD是否使用ASCII传输模式。 

        ascii_upload_enable=YES|NO 
        控制是否允许使用ascii模式上传文件,YES允许,NO不允许,默认为NO。 

        ascii_download_enable=YES|NO 
        控制是否允许使用ascii模式下载文件,YES允许,NO不允许,默认为NO。 

      5.2、性能与负载控制 

      5.2.1、超时选项 

        idle_session_timeout= 
        空闲(发呆)用户会话的超时时间,若是超出这时间没有数据的传送或是指令的输入,则会强迫断线

      。单位为秒,默认值为300。 

        data_connection_timeout= 
        空闲的数据连接的超时时间。默认值为300 秒。 

        accept_timeout=numerical value 
        接受建立联机的超时设定,单位为秒。默认值为60。 

        connect_timeout=numerical value 
        响应PORT方式的数据联机的超时设定,单位为秒。默认值为60。以上两个选项针对客户端的,将使客

      户端空闲1分钟后自动中断连接,并在中断1分钟后自动激活连接。 

      5.2.2 负载控制 

        max_clients=numerical value 
        此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义了FTP服务器最大的并发连接数,当

      超过此连接数时,服务器拒绝客户端连接。默认值为0,表示不限最大连接数。 
       
        max_per_ip=numerical value 
        此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义每个IP地址最大的并发连接数目。超

      过这个数目将会拒绝连接。此选项的设置将影响到象网际快车这类的多进程下载软件。默认值为0,表示

      不限制。 

        anon_max_rate=value 
        设定匿名用户的最大数据传输速度value,以Bytes/s为单位。默认无。 

        local_max_rate=value 
        设定用户的最大数据传输速度value,以Bytes/s为单位。默认无。此选项对所有的用户都生效。此外

      ,也可以在用户个人配置文件中使用此选项,以指定特定用户可获得的最大数据传输速率。 
        步骤如下: 
        ①在vsftpd.conf中指定用户个人配置文件所在的目录,如: 
        user_config_dir=/etc/vsftpd/userconf 
        ②生成/etc/vsftpd/userconf目录。 
        ③用户个人配置文件是在该目录下,与特定用户同名的文件,如: 
        /etc/vsftpd/userconf/xiaowang 
        ④在用户的个人配置文件中设置local_max_rate参数,如: 
        local_max_rate=80000 
        以上步骤设定FTP用户xiaowang的最大数据传输速度为80KBytes/s。 

        VSFTPD 对于速度控制的变化范围大概在80%到120%之间。比如我们限制最高速度为100KBytes/s, 但

      实际的速度可能在80KBytes/s 到120KBytes/s 之间。当然,若是线路带宽不足时,速率自然会低于此限

      制。 

      5.3 用户选项 

        VSFTPD的用户分为三类:匿名用户、本地用户(local user)以及虚拟用户(guest)。 

      5.3.1、匿名用户 

        anonymous_enable=YES|NO 
        控制是否允许匿名用户登录,YES允许,NO不允许,默认值为YES。 

        ftp_username= 
        匿名用户所使用的系统用户名。默认下,此参数在配置文件中不出现,值为ftp。 

        no_anon_password=YES|NO 
        控制匿名用户登入时是否需要密码,YES不需要,NO需要。默认值为NO。 
         
        deny_email_enable=YES|NO 
        此参数默认值为NO。当值为YES时,拒绝使用banned_email_file参数指定文件中所列出的e-mail地址

      进行登录的匿名用户。即,当匿名用户使用banned_email_file文件中所列出的e-mail进行登录时,被拒

      绝。显然,这对于阻击某些Dos攻击有效。当此参数生效时,需追加banned_email_file参数 

        banned_email_file=/etc/vsftpd.banned_emails 
        指定包含被拒绝的e-mail地址的文件,默认文件为/etc/vsftpd.banned_emails。 

        anon_root= 
        设定匿名用户的根目录,即匿名用户登入后,被定位到此目录下。主配置文件中默认无此项,默认值

      为/var/ftp/。 

        anon_world_readable_only=YES|NO 
        控制是否只允许匿名用户下载可阅读文档。YES,只允许匿名用户下载可阅读的文件。NO,允许匿名

      用户浏览整个服务器的文件系统。默认值为YES。 

        anon_upload_enable=YES|NO 
        控制是否允许匿名用户上传文件,YES允许,NO不允许,默认是不设值,即为NO。除了这个参数外,

      匿名用户要能上传文件,还需要两个条件:一,write_enable参数为YES;二,在文件系统上,FTP匿名用

      户对某个目录有写权限。 

        anon_mkdir_write_enable=YES|NO 
        控制是否允许匿名用户创建新目录,YES允许,NO不允许,默认是不设值,即为NO。当然在文件系统

      上,FTP匿名用户必需对新目录的上层目录拥有写权限。 

        anon_other_write_enable=YES|NO 
        控制匿名用户是否拥有除了上传和新建目录之外的其他权限,如删除、更名等。YES拥有,NO不拥有

      ,默认值为NO。 

        chown_uploads=YES|NO 
        是否修改匿名用户所上传文件的所有权。YES,匿名用户所上传的文件的所有权将改为另外一个不同

      的用户所有,用户由chown_username参数指定。此选项默认值为NO。 

        chown_username=whoever 
        指定拥有匿名用户上传文件所有权的用户。此参数与chown_uploads联用。不推荐使用root用户。


      3楼2007-07-16 17:39
      回复
        5.3.2、本地用户 

          在使用FTP服务的用户中,除了匿名用户外,还有一类在FTP服务器所属主机上拥有账号的用户。

        VSFTPD中称此类用户为本地用户(local users),等同于其他FTP服务器中的real用户。 

          local_enable=YES|NO 
          控制vsftpd所在的系统的用户是否可以登录vsftpd。默认值为YES。 

          local_root= 
          定义所有本地用户的根目录。当本地用户登入时,将被更换到此目录下。默认值为无。 

          user_config_dir= 
          定义用户个人配置文件所在的目录。用户的个人配置文件为该目录下的同名文件。个人配置文件的格

        式与vsftpd.conf格式相同。例如定义user_config_dir=/etc/vsftpd/userconf,并且主机上有用户

        xiaowang,lisi,那我们可以在user_config_dir的目录新增名为xiaowang、lisi的两个文件。当用户lisi 

        登入时,VSFTPD则会读取user_config_dir下lisi这个文件中的设定值,应用于用户lisi。默认值为无。 

        5.3.3、虚拟用户 

          guest_enable=YES|NO 
          若是启动这项功能,所有的非匿名登入者都视为guest。默认值为关闭。 

          guest_username= 
          定义VSFTPD的guest用户在系统中的用户名。默认值为ftp。 

        5.4、安全措施 

        5.4.1、用户登录控制 

          pam_service_name=vsftpd 
          指出VSFTPD进行PAM认证时所使用的PAM配置文件名,默认值是vsftpd,默认PAM配置文件

        是/etc/pam.d/vsftpd。 

          /etc/vsftpd.ftpusers 
          VSFTPD禁止列在此文件中的用户登录FTP服务器。这个机制是在/etc/pam.d/vsftpd中默认设置的。 

          userlist_enable=YES|NO 
          此选项被激活后,VSFTPD将读取userlist_file参数所指定的文件中的用户列表。当列表中的用户登

        录FTP服务器时,该用户在提示输入密码之前就被禁止了。即该用户名输入后,VSFTPD查到该用户名在列

        表,VSFTPD就直接禁止掉该用户,不会再进行询问密码等后续步聚。默认值为NO。 

          userlist_file=/etc/vsftpd.user_list 
          指出userlist_enable选项生效后,被读取的包含用户列表的文件。默认值是/etc/vsftpd.user_list

        。 

          userlist_deny=YES|NO 
          决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器。此选项在userlist_enable 

        选项启动后才生效。YES,默认值,禁止文件中的用户登录,同时也不向这些用户发出输入口令的提示。

        NO,只允许在文件中的用户登录FTP服务器。 
           
          tcp_wrappers=YES|NO 
          在VSFTPD中使用TCP_Wrappers远程访问控制机制,默认值为YES。 

        5.4.2、目录访问控制 

          chroot_list_enable=YES|NO 
          锁定某些用户在自家目录中。即当这些用户登录后,不可以转到系统的其他目录,只能在自家目录(

        及其子目录)下。具体的用户在chroot_list_file参数所指定的文件中列出。默认值为NO。 

          chroot_list_file=/etc/vsftpd/chroot_list 
          指出被锁定在自家目录中的用户的列表文件。文件格式为一行一用户。通常该文件

        是/etc/vsftpd/chroot_list。此选项默认不设置。 

          chroot_local_users=YES|NO 
          将本地用户锁定在自家目录中。当此项被激活时,chroot_list_enable和chroot_local_users参数的

        作用将发生变化,chroot_list_file所指定文件中的用户将不被锁定在自家目录。本参数被激活后,可能

        带来安全上的冲突,特别是当用户拥有上传、shell访问等权限时。因此,只有在确实了解的情况下,才

        可以打开此参数。默认值为NO。 

          passwd_chroot_enable 
          当此选项激活时,与chroot_local_user选项配合,chroot()容器的位置可以在每个用户的基础上指

        定。每个用户的容器来源于/etc/passwd中每个用户的自家目录字段。默认值为NO。 

        5.4.3、文件操作控制 

          hide_ids=YES|NO 
          是否隐藏文件的所有者和组信息。YES,当用户使用"ls -al"之类的指令时,在目录列表中所有文件

        的拥有者和组信息都显示为ftp。默认值为NO。 

          ls_recurse_enable=YES|NO 
          YES,允许使用"ls -R" 指令。这个选项有一个小的安全风险,因为在一个大型FTP站点的根目录下使

        用"ls -R"会消耗大量系统资源。默认值为NO。 

          write_enable=YES|NO 
          控制是否允许使用任何可以修改文件系统的FTP 的指令,比如STOR、DELE、RNFR、RNTO、MKD、RMD、

        APPE 以及SITE。默认值为NO,不过自带的简单配置文件中打开了该选项。 

          secure_chroot_dir= 
          这选项指向一个空目录,并且ftp用户对此目录无写权限。当vsftpd不需要访问文件系统时,这个目

        录将被作为一个安全的容器,用户将被限制在此目录中。默认目录为/usr/share/empty。 

        5.4.4、新增文件权限设定 

          anon_umask= 
          匿名用户新增文件的umask 数值。默认值为077。 

          file_open_mode= 
          上传档案的权限,与chmod 所使用的数值相同。如果希望上传的文件可以执行,设此值为0777。默认

        值为0666。 

          local_umask= 
          本地用户新增档案时的umask 数值。默认值为077。不过,其他大多数的FTP服务器都是使用022。如

        果您的用户希望的话,可以修改为022。在自带的配置文件中此项就设为了022。


        4楼2007-07-16 17:40
        回复
          6.5.3.3、虚拟用户的其他配置 

            ①限定虚拟用户在自家目录。 

            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 

            ②虚拟用户的个人配置。 

            如果想让个别的虚拟用户拥有自己特别的配置,同样可以建立虚拟用户的个人配置文件。在主配置文

          件中加入: 
            user_config_dir=/etc/vsftpd/vsftpd_user_conf 
            生成/etc/vsftpd/vsftpd_user_conf目录,在该目录下建立与特定虚拟用户同名的文件: 
            [root@hpe45 vsftpd]# mkdir vsftpd_user_conf 
            [root@hpe45 vsftpd]# cd vsftpd_user_conf 
            [root@hpe45 vsftpd_user_conf]# touch xiaowang 
            然后在xiaowang文件中就可以加入专对xiaowang生效的选项设置了。 
            注:如果在个人配置文件中加入chroot_local_user=YES是无效的。 

          6.5.3.4、虚拟用户个人目录设置 

            大家可以发现,无论是哪个虚拟用户,登录后所在的目录都是/home/vsftpdguest,即都是

          guest_username用户的自家目录。下面,介绍如何为每个虚拟用户建立自家目录。 
            一种作法是在虚拟用户的个人配置文件中使用local_root选项指定虚拟用户的自家目录。以xiaowang

          为例,在第上步的基础上,首先/etc/vsftpd/vsftpd_user_conf/xiaowang文件中加入: 
            local_root=/home/xiaowang 
            新建xiaowang目录,并将权限设为vsftpdguest: 
            [root@hpe45 home]# mkdir xiaowang 
            [root@hpe45 home]# chown vsftpdguest.vsftpdguest ./xiaowang 

          6.5.4、MySQL保存虚拟用户 

            本节介绍如何将虚拟用户的用户名和口令保存在MySQL的数据库中。这主要分二个部分,一是将用户

          和口令保存在数据库,二是设置相应的PAM认证。为了方便论述,做如下假定:数据库vsftpdvu,表users

          ,字段name和passwd用于保存虚拟用户的用户名和口令;为了安全,只授权vsftpdguest读vsftpdvu数据

          库的users表。 

            1、虚拟用户的用户名/口令的保存。这部分在MySQL数据库中完成。首先,创建数据库vsftpdvu以及

          表users,并插入虚拟用户xiaotong、xiaowang。执行以下命令: 
            [root@hpe45 vsftpd]#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]#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和加密后的密码。 

            2、设置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/vsftpd文件,加入以下内容: 
            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=0,口令以明文方式(不加密)保存在数据库中;crypt=1,口令使用UNIX系统的DES加密方式

          加密后保存在数据库中;crypt=2,口令经过MySQL的password()函数加密后保存。


          8楼2007-07-16 17:42
          回复
            标记!


            IP属地:安徽9楼2011-06-24 17:05
            回复