• 记一次ftp服务器搭建走过的坑


    记一次ftp服务器搭建走过的坑

    1、安装

    ①下载
    wget https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gz #要翻墙
    ②解压
    tar xzvf vsftpd-3.0.3.tar.gz cd vsftpd-3.0.3
    ③编译
    根据需要修改builddefs.h文件,
    cat builddefs.h
    #ifndef VSF_BUILDDEFS_H #define VSF_BUILDDEFS_H  #undef VSF_BUILD_TCPWRAPPERS #define VSF_BUILD_PAM #undef VSF_BUILD_SSL #endif
    如需要tcp wrapper,改成#define VSF_BUILD_TCPWRAPPERS
    如需要OpenSSL,改成#define VSF_BUILD_SSL
    建议吧所有的undef改为define,反正也不多,就三四个。
    改完直接make即可。
    ④安装
    编译完成后会在当前目录生成vsftpd、vsftpd.8和vsftpd.conf.5。make install会安装到/usr/local目录下

    2、踩坑

    之所以搭建这个是因为老的ftp一直不稳定,于是去官网下了个最新版。

    2.1 编译过程会踩的坑

    ① 缺少tcp_wrappers-devel包
    之所以缺少这个包是因为在一开始的builddefs.h文件中我们修改为了#define VSF_BUILD_TCPWRAPPERS,
    ② 缺少pam-devel包
    同理在一开始的builddefs.h文件中我们修改为了#define VSF_BUILD_PAM
    ③ 缺少openssl-devel包
    同理在一开始的builddefs.h文件中我们修改为了#define VSF_BUILD_SSL

    2.2 配置文件的坑

    问题发现:

    在启动vsftp进程后使用ftp客户端登录可能会遇到这么两个问题,一个是vsftpd:refusing to run with writable root inside chroot(),一个是Failed to change directory,这两个问题归根结底都是配置文件的三个参数导致的,分别是chroot_local_user、chroot_list_enable、chroot_list_file。

    知识点:

    ①chroot_local_user
    是否将所有用户限制在主目录,,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的)
    ②chroot_list_enable
    是否启动限制用户的名单,通俗的说就是chroot_local_user的例外项。
    ③chroot_list_file
    是否限制在主目录下的用户名单,此项只有在chroot_list_enable值为yes才有意义

    概念比较乱,可以这样记忆:
    当chroot_local_user为yes时,说明全局用户都被锁定在主目录,无法跳转到其他目录,此时chroot_list_enable为yes时,说明允许设置例外用户不被锁定。反之亦然。即当"全部用户被锁定于主目录"时(chroot_local_user=YES),"例外"就是:不被锁定的用户是哪些;当"全部用户不被锁定于主目录"时(chroot_local_user=NO),"例外""就是:要被锁定的用户是哪些。

    实例:

    有user1、user2两个ftp用户,计划让user1锁定在主目录,user2自由切换目录,可以用以下方法实现
    方法一:

    chroot_local_user=YES
    chroot_list_enable=YES
    /etc/vsftpd/chroot_list名单列表为:
    user2
    

    解释:hroot_local_user=YES将所有用户限定在主目录内,chroot_list_enable=YES表示要启用chroot_list_file, 因为chroot_local_user=YES,即全体用户都被“限定在主目录内”,所以总是作为“例外列表”的chroot_list_file这时列出的是那些“不会被限制在主目录下”的用户。
     
    方法二:

    chroot_local_user=NO
    chroot_list_enable=YES
    /etc/vsftpd/chroot_list名单列表为:
    user1
    

    解释:chroot_local_user=NO则所有用户不被限定在主目录内,chroot_list_enable=YES表示要启用chroot_list_file, 因为chroot_local_user=NO,即全体用户都“不被限定在主目录内”,所以总是作为“例外列表”的chroot_list_file这时列出的是那些“会被限制在主目录下”的用户。

    问题解决:

    Failed to change directory一般就是配置文件chroot_local_user设了YES,而你没有开chroot_list_enable或者chroot_list_file没有写对应用户
    vsftpd:refusing to run with writable root inside chroot()
    从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限或者在vsftpd的配置文件中增加下列项:
    allow_writeable_chroot=YES

  • 相关阅读:
    SogouCloud.exe进程导致SQL Server服务无法启动
    SQL Server 锁实验(INSERT加锁探究)
    php如何处理大数据高并发
    PHP变量的初始化以及赋值方式介绍
    PHP数组具有的特性有哪些
    PHP中Session ID的实现原理分析
    PHP提高SESSION响应速度的方法有哪些
    PHP中Redis扩展无法加载问题
    关于PHP中依赖注入的详细介绍
    PHP中接口与抽象类的异同点有哪些
  • 原文地址:https://www.cnblogs.com/weijing24/p/6116077.html
Copyright © 2020-2023  润新知