vsftpd:500 OOPS:prctl PR_SET_SECCOMP失败


8

我有一个问题vsftpd。通过FileZilla连接到FTP服务器时,出现错误:

500 OOPS:prctl PR_SET_SECCOMP失败
错误:严重错误
错误:无法连接到服务器

我也尝试通过文件管理器进行连接,但似乎无法正常工作。我可以毫无问题地连接到所有其他服务器,因此可以确定这是服务器相关的问题。

我在VPSDime VPS上运行Ubuntu 14.04。vsftpd版本3.0.2。更新或配置更改后未发生该错误,但是当我在网站上工作时开始出现该错误;在收到错误之前,它工作正常。

我已经重新启动,重新启动vsftpd并更新了系统。有任何想法吗?

Answers:


17

该消息表明prctl(PR_SET_SECCOMP, ...)呼叫失败。

ret = prctl(PR_SET_SECCOMP, 2, &prog, 0, 0);
if (ret != 0)
{
  die("prctl PR_SET_SECCOMP failed");
}

当您的内核未CONFIG_SECCOMP_FILTER启用时,可能会发生这种情况。但这在您“在网站上工作”时几乎不会改变。

prctl手册页引用:

PR_SET_SECCOMP(从Linux 2.6.23开始)

为调用线程设置安全计算(seccomp)模式,以限制可用的系统调用。通过可以选择seccomp模式arg2。(seccomp常量在<linux/seccomp.h>

...

随着arg2集来SECCOMP_MODE_FILTER(因为Linux 3.5)允许通过一个指向Berkeley包过滤器中定义的系统调用在ARG3通过。这个参数是指向struct sock_fprog; 它可以设计为过滤任意系统调用和系统调用参数。仅当内核配置为CONFIG_SECCOMP_FILTER启用时,此模式才可用。


作为较差的解决方法,可以将vsftpd配置为不启用seccomp模式

使用中的seccomp_sandbox=no选项vsftpd.conf

该选项似乎没有记录。


谢谢你的工作。您知道这样做是否会带来任何并发症吗?什么是seccomp?
Xweque


2
谢谢,它也对我有用。我不知道为什么我突然有这种问题。我正在使用带有Ubuntu 14.04和内核2.6.32的OVH虚拟服务器。
Miguel El Merendero 2015年

我遇到了与@MiguelElMerendero完全相同的问题,相同的配置,它解决了它。非常感谢!
Bigood

0

在某些Linux内核(最著名的是从6.5版开始的RHEL / Centos 6.x)中,出现vfstpd错误的原因是vsftpd的资料中的以下假设:

https://github.com/dagwieers/vsftpd/blob/master/seccompsandbox.c#L642


  ret = prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0);
  if (ret != 0)
  {
    if (errno == EINVAL)
    {
      /* Kernel isn't good enough. */
      return;
    }
    die("prctl PR_SET_NO_NEW_PRIVS");
  }

  if (!tunable_seccomp_sandbox)
  {
    return;
  }
[ ... ]
  ret = prctl(PR_SET_SECCOMP, 2, &prog, 0, 0);
  if (ret != 0)
  {
    die("prctl PR_SET_SECCOMP failed");
}

With https://rhn.redhat.com/errata/RHSA-2015-0864.html Redhat added:

Note: the fix for this issue is the kernel part of the overall fix, and introduces the PR_SET_NO_NEW_PRIVS functionality and the related SELinux exec transitions support.

This breaks vsftpd's assumption above that any kernel which supports PR_SET_NO_NEW_PRIVS also supports PR_SET_SECCOMP mode 2.

vsftpd silently ignores the EINVAL from the first prctl() but fails with the shown error message on the second.

The configuration parameter Martin Prikryl mentioned above is merely making it exit cleanly just after the (now-successful) first prctl(),在较早的内核之前/之前,它在该调用中干净/安静地退出了。


0
Response:    500 OOPS: vsftpd: refusing to run with writable root inside chroot()

vsftpd返回的“ 500 OOPS”错误是一种安全措施,旨在默认情况下防止FTP用户进行可写根访问。要解决此问题,有两个主要选项。

允许可写的用户root访问

最简单的方法是再次更改/etc/vsftpd.conf文件并启用一个特定设置:

nano /etc/vsftpd.conf

编辑文件,使其类似于以下内容:

# Allow users to write to their root directory
allow_writeable_chroot=YES

https://uk.godaddy.com/help/how-to-set-up-an-ftp-server-on-ubuntu-1404-12301

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.