自14.04起,vsftpd安装无法在虚拟服务器上运行

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

另外,运行sudo vsftpd导致500 OOPS: munmap @Beltran所指出的munmap。


  1. 获取root权限

     sudo -s 
  2. 安装vsftpd和libpam-pwdfile

     apt-get install vsftpd libpam-pwdfile 
  3. 编辑vsftpd.conf

     mv /etc/vsftpd.conf /etc/vsftpd.conf.bak vim /etc/vsftpd.conf 

    复制并粘贴以下行。

     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 
  4. 注册虚拟管理员

     apt-get install apache2-utils mkdir /etc/vsftpd htpasswd -cd /etc/vsftpd/ftpd.passwd admin vim /etc/vsftpd.chroot_list 

    为admin用户添加1行

     admin 
  5. 配置PAM

     mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak vim /etc/pam.d/vsftpd 

    复制并粘贴这两行。

     auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd account required pam_permit.so 
  6. 创建没有shell访问权限的本地用户

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

     mkdir /var/clients chmod -R 755 /var/clients chown -R vsftpd:nogroup /var/clients 
  8. 注册被监禁的虚拟用户(最初,我跳过此步骤)

     htpasswd -d /etc/vsftpd/ftpd.passwd {user_name} mkdir /var/clients/{user_name} 
  9. 重启服务

     service vsftpd restart 

Ubuntu 14.04使用12.04中缺席的用户会话 ,因此service正在查看用户会话,而不是系统会话,并且您的用户没有运行vstfpd(root is)。 因此,当您使用service启动,停止或检查服务状态时,您需要指定--system

vsftpd是upstart的软链接,因此您将无法以非特权用户身份运行它,您需要root才能启动或停止或检查此类进程的状态。

ls -l on /etc/init.d/vsftpd执行ls -l on /etc/init.d/vsftpd显示:

 lrwxrwxrwx 1 root root 21 May 16 2013 /etc/init.d/vsftpd -> /lib/init/upstart-job* 

这类似于cronresolvconf和更多,这些都是新手工作,需要root才能启动或停止。

Upstart是/ sbin / init守护程序的基于事件的替换,它在启动期间处理任务和服务的启动,在关闭期间停止它们并在系统运行时监督它们。

这些服务通常在启动时启动。 有关新贵的更多信息,请参阅此处:

  • 什么是暴发户

如果你想要更多,请参考新贵的手册页!

所以,长话短说,要开始,停止,检查状态,你需要成为root。 你可以这样做:

 sudo service vsftpd {start|stop|status|restart} 

并输入您的密码或使用:

 service vsftpd {start|stop|status|restart} --system 

在您的软件源中启用trusty-proposed并重新安装vsftpd。 我正在检查这是否通过了集合。

如果您不希望在您的源vsftpd源中启用建议,则此页面上提供了构建版本。 https://launchpad.net/ubuntu/trusty/+source/vsftpd/3.0.2-1ubuntu2.14.04.1

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

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

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

对Ubuntu来说还是新手。 如果它在Ubuntu 12.4上没有麻烦但在Ubuntu 14.04上工作,这就是我所做的:

/etc/vsftpd.conf文件中添加以下两行:

 allow_writeable_chroot = YES seccomp_sandbox = NO 

pam_service_name的值更改为ftp

希望这有助于某人

这在Ubuntu 14.04上对我有用。 如果用户在/var/www/html/kofi_site目录中被监禁,则只需运行:

sudo chmod ugo-w /var/www/html/kofi_site