Linux (Red Hat 9) 的 vsftpd 的配置与使用 (db格式的虚拟用户)

作者:Wupei  |  发表时间:  |  所属分类:Linux

今天终于把 vsftpd 的虚拟用户配置完毕了,可以使用,现记录在此

  1. Red Hat 9 服务器模式默认没有装vsftpd的,避免麻烦,建议手动安装
  2. Red Hat 9 服务器模式默认没有装开发工具(中间包含db工具,其中也包含了gcc等工具),建议手动安装
  3. 如果未安装,请在此 http://rpmfind.net/linux/RPM/index.html 搜索 Red Hat 9 的相应RPM,进行安装

    #wget http://wupei.j2megame.org/1.txt
      利用该命令在linux上下载文件
    #wget -b    后台下载,记录文件写在当前目录下"wget-log"文件中
  4. 没有db_load命令,缺少相应文件: db4-java-4.0.14-20.i386.rpm 和 db4-utils-4.0.14-20.i386.rpm
  5. 查找当前安装: #rpm –qa | grep db4 安装: #rpm -ivh *.rpm 
    卸载: #rpm -e packgename

配置过程:


一. 匿名用户登录(上传与下载) 

  1. 查找是否有vsftpd: #rpm -qa vsftpd, 没有就按照上面说的方法进行rpm的安装
  2. 编辑配置文件: #vi /var/vsftpd/vsftpd.conf  (其他Linux可能在 /var/vsftpd.conf)
    anonymous_enable=YES
    write_enable=YES
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    anon_world_readable_only=NO
  3. 启动FTP服务器: #service vsftpd start, 显示OK,代表正常启动
  4. 使用FTP工具(如flashfxp)匿名用户登录,成功,但只能读取,当前访问的目录 /var/ftp/pub
  5. 修改目录权限: #chmod 777 /var/ftp/pub
  6. 重新启动FTP服务器: #service vsftpd restart 显示OK,重启成功
  7. 这是匿名用户登录,可以在 当前目录 进行任何操作,但是子目录仍然不能上传,因为权限不够…


二. 虚拟用户配置

  1. 查找是否支持db4:  #rpm -qa|grep db4   如果没有,按本文开头的方法进行安装…
    (重装系统?好主意.一开始我也是这么干的…半个小时而已,但是使用一下linux的下载,安装,卸载RPM命令也是很必要的)
  2. 添加虚拟用户名和密码: #vi /etc/vsftpd/vsftpd_users.txt  (格式:一行用户名一行密码)
    user1
    user1password
    user2
    user2password
  3. 生成DB文件:

    #db_load -T -t hash -f /etc/vsftpd/vsftpd_users.txt /etc/vsftpd/vsftpd_login.db
  4. 修改DB文件权限,只允许root可读可写: #chmod 600 /etc/vsftpd/vsftpd_login.db
  5. 生成跟虚拟用户database相关联的PAM文件:  

    #vi /etc/pam.d/vsftpd.pam

    内容:
    auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
    account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
  6. 建立虚拟用户所映射的系统帐户,定位虚拟用户所在的目录

    #useradd -d /var/ftp/myftpvirtual -s /sbin/nologin myftpvirtual 

    (-s /sbin/nologin 应该是不允许直接登录)(/var/ftp/myftpvirtual目录之前是不存在的)
  7. 拷贝hosts  #cp /etc/hosts /var/ftp/myftpvirtual (经测试,可以不添加…这句干什么用啊?)
  8. 修改配置文件 #vi /etc/vsftpd/vsftpd.conf    添加或修改

    #出于安全的角度禁用了匿名用户,启用非匿名用户—就是我们刚才我们创建的虚拟用户“myftpvirtual“
    anonymous_enable=NO
    local_enable=YES

    #这些是出于安全的目的,写命令全部被禁用了
    write_enable=NO
    anon_upload_enable=NO
    anon_mkdir_write_enable=NO
    anon_other_write_enable=NO

    #这个是确信能将虚拟用户限制在我们上述的/var/ftp/myftpvirtual目录中
    chroot_local_user=YES

    #这个guest_enable是非常重要的—它用来激活虚拟用户! guest_username
    是将所有虚拟用户映射成我们先前设置的真实用户"myftpvirtual"。这也决定了虚拟用户在文件系统中的位置,也就是
    "myftpvirtual"的主目录 /var/ftp/myftpvirtual。
    guest_enable=YES
    guest_username=virtual

    #这个将vsftpd 设置成独立模式也就是不通过 inetd或者xinetd来运行。这意味着你直接运行vsftpd的可执行命令就可以启动它了。
    listen=YES

    #支持tcp_wrappers,限制访问(/etc/hosts.allow,/etc/hosts.deny)
    tcp_wrappers=YES

    #启用per-user 配置,对不同的虚拟用户设置不同的权限
    user_config_dir=/etc/vsftpd/vsftpd_user_conf

    #指定pam_service_name
    pam_service_name=vsftpd.pam
    userlist_enable=YES
     

  9. 对不同虚拟用户进行权限设定

    #vi /etc/vsftpd/vsftpd/vsftpd_user_conf/user1
      (对应着刚才需的虚拟用户名)
    添加:
    #用户主目录
    local_root = /var/ftp/myftpvirtual
    #写权限
    write_enable=YES
    #上传权限
    anon_upload_enable=YES
    #重建目录权限
    anon_mkdir_write_enable=YES
    #删除,改名,移动等权限
    anon_other_write_enable=YES
    #是否仅仅读取
    anon_world_readable_only=NO
     
  10. 完成user1, 添加user2的权限文件,OK
  11. 重启vsftpd    #service vsftpd restart    显示OK,成功
  12. FTP,用户名,密码,登录,成功,操作
  13. 设置 vsftpd 服务 开机自启动

    # vi /etc/rc.d/rc.local

    添加:
    /etc/init.d/vsftpd start
  14. 完成

不容易…完成…呵呵,试试吧

ps:

  1. 每次添加完新用户后,就必须执行如下命令,重新Hash用户名文件才能起作用 #db_load -T -t hash -f
  2. 更改一个或多个用户的权限和密码不需要执行任何命令
  3. 行的值都不要有空格,否则登录时会出现错误,举个例子,假如我在write_enable=YES后多了个空格,那我登录时就出现如下错误: 500 OOPS: bad bool value in config file for: write_enable
  4. download_enable = NO 是非法语句,删除   (Red Hat 9)

Trackback from your site.

请在这里留言: