zoukankan      html  css  js  c++  java
  • Vsftpd

    前言

    这个帖子主要说一下如何配置vsftpd的virtual users,因为这个用起来最方便,但是网上 很少有特别详细的说明。我把自己的配置过程写一下。

    top为什么选择vsftpd

    没有为什么,如果不喜欢或者想尝试,那就换个别的服务器试一试 :)

    top准备工作

    安装:
    • vsftpd
    • pam

    具体过程就不说了,不同的系统虽然安装方法不同,最后的配置都是一样的。pam是为了给 虚拟用户提供密码认证的。

    top先看文档

    在具体配置之前,有三个文件应该看看:
    1. man vsftpd.conf
    2. 网上随便搜一个vsftpd配置的说明,都会有对各参数的具体说明,可以结合(1)来看。
    3. /usr/share/doc/vsftpd-x.x.x/examples

    其实看完这些,配置一个基本的vsftpd就没有问题了。那好我们继续往下走,主要看如何使 用虚拟用户(Virtual Users)。

    top配置

    top建立幕后用户
    vsftpd中所有的虚拟用户都要被映射成一个真正的local用户,所以需要首先新建这样一个 用户(也可以使用已有的用户),假设为 vsftpuser 。最好有一个名字相同的组,而且 vsftpuser的主组就是vsftpuser。
    # groupadd vsftpuser
    # useradd -g vsftpuser vsftpuser
    

    这个时候有些系统(如RH)会自动建立/home/vsftpuser,有的则不会(如gentoo)。

    vsftpuser 有没有Home目录不重要,重要的是有一个为它完全控制的文件夹,也就是local_root参数的含义。为了方便我们建立文件夹 /anypath/ftpserver 。其中的 anypath 是说在哪里都可以,当然也可以是 /home/vsftpuser。然后更改其权限。

    # mkdir -p /anypath/ftpserver
    # cd /anypath
    # chown -R vsftpuser:vsftpuser ftpserver 
    # chmod 700 ftpserver   # 不是必须的
    

    如果上面的命令使用vsftpuser执行的,那么其中的第三句不是必须的,因为新建文件默认 的属组就是创建它的用户。另外,因为一般系统的用户umask都是022,即新建文件的权限是 rwxr-xr-x ,如果不想让vsftpuser之外的其他用户访问,可以通过最后一句进行限制。

    我们已经准备好了被映射的后台用户:vsftpuser。

    top主要配置

    权威的文档看这里:上面列举必读文档第三项中的 VIRTUAL_USERS 目录

    top进一步准备工作
    假设我们要建立虚拟用户 leo,其登录密码为 little。具体权限我们随后说明。首先声成 密码文件,分四步走:
    1. 创建用户数据库,一行写用户名,一行写密码,依次类推。
    
       # cat > passwd
         leo
         little
         (Ctrl+D)
    
    
    2. 生成加密密码文件。系统需要安装Berkeley DB,其中db_load可能为db4_load,取决于
       你安装的版本。
    
       # db_load -T -t hast passwd /etc/vsftpd/passwd.db
    
    
    3. 更改权限
    
       # chmod 600 passwd.db
    
    
    4. 为vsftpd创建PAM文件
    
       # cd /etc/pam.d
       # touch ftp                  # 注意这里
       # cat > ftp
         auth    required /lib/security/pam_userdb.so db=/etc/vsftpd/passwd crypt=hash
         account required /lib/security/pam_userdb.so db=/etc/vsftpd/passwd cryph=hash
         (Ctrl+D)
    

    三点说明:

    1. 其中 注意这里 那一句建立的文件需要与vsftpd.conf中的pam_service_name对应,此变量 的默认值是ftp,所以我们在上面就建立文件ftp。网上很多地方都指定pam_service_name为 vsftp,那么在pam.d里面就要建立vsftp与之对应。
    2. pam文件中db项目的值就是我们刚才通过db_load命令创建的密码数据库,路径不要写错 ,最后的扩展名要忽略。
    3. pam文件中在最后需要加上 crypt=hash ,官方文档中没有加会出现 vsftpd: OOPS: priv_sock_get_result 的错误。另一种解决办法请参看:Gentoo Vsftpd
    top主文件
    当这些工作都没有问题之后,就来写我们的配置文件。切换到 /etc/vsftpd/ 目录,打开主配置文件 vsftpd.conf ,如果不存在就把 vsftpd.conf.example 拷贝一份。这里面有常用的一些选项及其详细说明。如果只是配置匿名 用户,那么这个样例文件稍加修改就可以了。

    对于虚拟用户有几项需要特别注意:

    local_enable=YES            # 虚拟用户本质上是local真实用户,所以需要打开
    guest_enable=YES            # 使用虚拟用户开关
    guest_username=vsftpuser      # 将虚拟用户映射为真实用户vsftpuser
    user_config_dir=/etc/vsftpd/user_conf  # 每个虚拟用户的配置文件放在这里
    

    下面是我的vsftpd.conf:

    # Example config file /etc/vsftpd/vsftpd.conf
    
    # 启用standalone方式,xinet用户要用NO
    listen=YES
    
    # 我不要匿名用户
    anonymous_enable=NO
    
    # 如果要匿名用户的话,它被映射到ftp_username
    #ftp_username=ftp
    
    #
    # 虚拟用户必须打开此项
    local_enable=YES
    
    # 用户chroot的主目录,如果用虚拟用户,可以为每个用户单独指定
    # local_root=/home/ftp
    
    # 全局写权限控制,我更喜欢给每个用户单独配置
    write_enable=NO
    
    # 上传文件umask,默认是077,我不喜欢 :)
    local_umask=022
    
    # 在主文件里面这些参数影响匿名用户,如果在虚拟用户的配置文件里,它们只影响虚拟用
    # 户。前三项好理解,最后一项其实就是控制删除、执行文件的。
    anon_upload_enable=NO
    anon_world_readable_only=NO
    anon_mkdir_write_enable=NO
    anon_other_write_enable=NO
    
    # Log
    xferlog_enable=YES
    
    # 喜欢这个 :)
    banner_file=/etc/vsftpd/banner
    
    # chroot是安全的有力保证
    chroot_local_user=YES
    
    # 隐藏文件的真实属主,显示为ftp
    hide_ids=YES
    
    # 要跟/etc/pam.d/ftp对应,默认是ftp
    # pam_service_name=ftp 
    
    # 使用虚拟用户
    guest_enable=YES
    guest_username=vsftpuser
    user_config_dir=/etc/vsftpd/user_conf
    
    # 其它
    pasv_min_port=30000
    pasv_max_port=30999
    
    top用户文件
    上面的配置我都写了注释,应该很好理解,其中user_config_dir就是存放虚拟用户配置文 件的地方,好了先在看看如何配置我们的leo用户。

    首先,创建user_conf目录,如果不存在的话;然后进入/etc/vsftpd/user_conf;然后建立 文件leo。文件名就是虚拟用户的用户名。

    接下来就是leo自己的配置文件了:

    # leo :)
    
    # 参看主配置文件示例的注释,这里可以为leo指定自己的root
    local_root=/home/vsftpuser
    
    # 这个也熟悉
    local_umask=022
    
    # 从先在开始非常重要。这些参数都以anon开头,原因见主配置文件示例。
    
    # 可以浏览所有可读文件 
    anon_world_readable_only=NO
    
    # 第一级写开关打开,真正的写控制在后面
    write_enable=YES
    
    # 表示可以上传文件,但是不能创建文件夹。依赖于write_enable
    anon_upload_enable=YES
    
    # 可以创建文件夹,同样依赖于write_enable
    anon_mkdir_write_enable=YES
    
    # 我可不希望用户可以随便删除我的东西,
    anon_other_write_enable=NO
    

    OK,everything is done!

    启动或者重新启动vsftpd: /etc/init.d/vsftpd restart

    top测试

    自己来吧!

    top最后

    我这里只介绍了如何配置虚拟用户,实际上也适用于普通用户,此处就不再赘述了。这是我 的一点总结,希望对用使用vsftpd的朋友有所帮助!文中有错误或者疏漏的地方,请指正, 谢谢!

  • 相关阅读:
    查看lwjgl常用状态的值
    微信公众号开发java框架:wx4j(MenuUtils篇)
    微信公众号开发java框架:wx4j(KefuUtils篇)
    微信公众号开发java框架:wx4j(MaterialUtils篇)
    微信公众号开发java框架:wx4j(入门篇)
    hashcode和equals方法小记
    https单向认证和双向认证区别
    java开发中获取路径的一些方式
    iOS使用sqlite3原生语法进行增删改查以及FMDB的使用
    IOS自动布局
  • 原文地址:https://www.cnblogs.com/xianqingzh/p/1915787.html
Copyright © 2011-2022 走看看