自 12.04 以来,我安装 vsftpd 时使用的流程不再有效。重新启动服务时出现错误stop: Unknown instance
。我相信这意味着配置错误,但我无法追踪问题所在。我在虚拟服务器上遇到了这个问题。
此外,运行sudo vsftpd
结果500 OOPS: munmap
如@Beltran 所述。
获取root权限
sudo -s
安装 vsftpd 和 libpam-pwdfile
apt-get install vsftpd libpam-pwdfile
编辑 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
注册虚拟管理员
apt-get install apache2-utils mkdir /etc/vsftpd htpasswd -cd /etc/vsftpd/ftpd.passwd admin vim /etc/vsftpd.chroot_list
为管理员用户添加 1 行
admin
配置 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
创建没有 shell 访问权限的本地用户
useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
创建根目录并授予本地用户适当的访问权限。
mkdir /var/clients chmod -R 755 /var/clients chown -R vsftpd:nogroup /var/clients
注册被监禁的虚拟用户(最初我跳过了这一步)
htpasswd -d /etc/vsftpd/ftpd.passwd {user_name} mkdir /var/clients/{user_name}
重启服务
service vsftpd restart
答案1
Ubuntu 14.04 使用用户会话在 12.04 中不存在,因此service
正在查看用户会话,而不是系统会话,并且您的用户未运行 vstfpd(root 正在运行)。因此,您需要指定--system
何时使用service
来启动、停止或检查服务的状态。
vsftpd 是 upstart 的软链接,因此您无法以非特权用户身份运行它,您需要以 root 身份启动或停止或检查此类进程的状态。
做一个ls -l on /etc/init.d/vsftpd
揭示:
lrwxrwxrwx 1 root root 21 May 16 2013 /etc/init.d/vsftpd -> /lib/init/upstart-job*
它与 类似cron
,resolvconf
还有其他几个,它们都是 upstart 作业,需要以 root 身份启动或停止。
Upstart 是一个基于事件的 /sbin/init 守护进程的替代品,它负责在启动期间启动任务和服务,在关机期间停止它们,并在系统运行时监督它们。
这些服务通常在启动时启动。有关 upstart 的更多信息,请参见此处:
如果您想要了解更多,请参阅 upstart 的手册页!
长话短说,要启动、停止、检查状态,您需要成为 root。您可以按如下方式执行此操作:
sudo service vsftpd {start|stop|status|restart}
并输入您的密码或使用:
service vsftpd {start|stop|status|restart} --system
答案2
在您的软件源中启用 trusty-proposed 并重新安装 vsftpd。我正在检查这是否符合要求。
如果您不希望启用源中建议的 vsftpd 源,则可以在此页面找到构建版本。https://launchpad.net/ubuntu/trusty/+source/vsftpd/3.0.2-1ubuntu2.14.04.1
答案3
如果你在 AWS EC2 实例上遇到此问题,则应尝试使用以下方法创建实例HVM 虚拟化而不是半虚拟化。
如果您仍然需要半虚拟实例,则无法确定何时会修复该错误,因为它是 Xen 内核中的一个错误,该内核用于运行 AWS 的虚拟化。
以下是更详细地解决此问题的错误线程: https://bugs.launchpad.net/ubuntu/+source/vsftpd/+bug/1313450
答案4
这在 Ubuntu 14.04 上对我有用。如果用户被关在/var/www/html/kofi_site
目录中,则只需运行:
sudo chmod ugo-w /var/www/html/kofi_site