自 14.04 起,vsftpd 安装在虚拟服务器上不起作用

roy*_*key 6 ftp vsftpd amazon-ec2 14.04

我自 12.04 以来用于安装 vsftpd 的过程不再有效。stop: Unknown instance重新启动服务时出现错误。我相信这意味着配置错误,但我无法追踪问题。我在虚拟服务器上遇到了这个问题。

此外,运行sudo vsftpd结果500 OOPS: munmap如@Beltran 所述。


  1. 获取root权限

    sudo -s
    
    Run Code Online (Sandbox Code Playgroud)
  2. 安装 vsftpd 和 libpam-pwdfile

    apt-get install vsftpd libpam-pwdfile
    
    Run Code Online (Sandbox Code Playgroud)
  3. 编辑 vsftpd.conf

    mv /etc/vsftpd.conf /etc/vsftpd.conf.bak
    vim /etc/vsftpd.conf
    
    Run Code Online (Sandbox Code Playgroud)

    复制并粘贴以下几行。

    allow_writeable_chroot=YES
    anonymous_enable=NO
    chroot_list_enable=YES
    chroot_local_user=YES
    guest_enable=YES
    guest_username=vsftpd
    hide_ids=YES
    listen=YES
    local_enable=YES
    local_umask=022
    local_root=/var/clients/$USER
    nopriv_user=vsftpd
    pasv_address=127.0.0.1
    pasv_enable=YES
    pasv_min_port=65000
    pasv_max_port=65100
    port_enable=YES
    user_sub_token=$USER
    seccomp_sandbox=NO
    virtual_use_local_privs=YES
    write_enable=YES
    
    Run Code Online (Sandbox Code Playgroud)
  4. 注册虚拟管理员

    apt-get install apache2-utils
    mkdir /etc/vsftpd
    htpasswd -cd /etc/vsftpd/ftpd.passwd admin
    vim /etc/vsftpd.chroot_list
    
    Run Code Online (Sandbox Code Playgroud)

    为管理员用户添加 1 行

    admin
    
    Run Code Online (Sandbox Code Playgroud)
  5. 配置 PAM

    mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
    vim /etc/pam.d/vsftpd
    
    Run Code Online (Sandbox Code Playgroud)

    复制并粘贴这两行。

    auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
    account required pam_permit.so
    
    Run Code Online (Sandbox Code Playgroud)
  6. 创建没有外壳访问权限的本地用户

    useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
    
    Run Code Online (Sandbox Code Playgroud)
  7. 创建根目录并授予本地用户适当的访问权限。

    mkdir /var/clients
    chmod -R 755 /var/clients
    chown -R vsftpd:nogroup /var/clients
    
    Run Code Online (Sandbox Code Playgroud)
  8. 注册被监禁的虚拟用户(最初,我跳过这一步)

    htpasswd -d /etc/vsftpd/ftpd.passwd {user_name}
    mkdir /var/clients/{user_name}
    
    Run Code Online (Sandbox Code Playgroud)
  9. 重启服务

    service vsftpd restart
    
    Run Code Online (Sandbox Code Playgroud)

roy*_*key 2

如果您在 AWS EC2 实例上遇到此问题,您应该尝试使用HVM 虚拟化而不是半虚拟化创建实例。

如果您仍然需要半虚拟实例,则无法确定该错误何时会得到修复,因为它是用于运行 AWS 虚拟化的 Xen 内核中的错误。

以下是更详细地解决此问题的错误线程: https://bugs.launchpad.net/ubuntu/+source/vsftpd/+bug/1313450