vsftpd: 500 OOPS: prctl PR_SET_SECCOMP не вдалося


8

У мене проблема з vsftpd. Коли я підключаюся до свого FTP-сервера через FileZilla, я отримую помилку:

500 OOPS: prctl PR_SET_SECCOMP не вдалося
Помилка: Критична помилка
Помилка: Не вдалося підключитися до сервера

Я також намагався підключитися через мій файловий менеджер, і він, здається, не функціонує. Я можу підключитися до всіх інших своїх серверів без жодних проблем, тому я впевнений, що це проблема, пов’язана з сервером.

Я запускаю Ubuntu 14.04 на VPSDime VPS. vsftpdверсія 3.0.2. Помилка не сталася після оновлення або зміни конфігурації, але помилка почала виникати під час роботи над веб-сайтом; він працював нормально, перш ніж я отримав помилку.

Я перезавантажив, перезапустив vsftpdі оновив свою систему. Будь-які ідеї?

Відповіді:


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сторінки man :

PR_SET_SECCOMP (з Linux 2.6.23)

Встановіть режим безпечного обчислення (seccomp) для потокової виклику, щоб обмежити доступні системні виклики. Режим seccomp вибирається через arg2. (Константи seccomp визначені в<linux/seccomp.h>

...

Якщо arg2встановлено значення SECCOMP_MODE_FILTER(з Linux 3.5), дозволені системні виклики визначаються вказівником на фільтр пакетів Берклі, переданим у arg3. Цей аргумент є вказівником на struct sock_fprog; він може бути розроблений для фільтрації довільних системних викликів та аргументів системного виклику. Цей режим доступний, лише якщо ядро ​​налаштовано з CONFIG_SECCOMP_FILTERувімкненим.


Як поганий спосіб вирішення, ви можете налаштувати vsftpd не вмикати режим seccomp .

Скористайтеся seccomp_sandbox=noопцією в vsftpd.conf.

Здається, цей варіант документально не підтверджений.


Дякую, що спрацювало. Чи знаєте ви, чи можуть бути якісь ускладнення від цього? Що таке seccomp?
Xweque


2
Дякую, це працювало і для мене. Цікаво, чому у мене раптом є така проблема. Я використовую віртуалізований сервер OVH з Ubuntu 14.04 та ядром 2.6.32.
Мігель Ель Мерендеро

У мене була точно така ж проблема, та сама конфігурація, що й у @MiguelElMerendero, і вона вирішила її. Дуже дякую!
Bigood

0

Причиною, чому ця помилка vfstpd виникає в деяких ядрах Linux (особливо RHEL / Centos 6.x з 6.5 далі), є наступним припущенням у джерелах 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()

Помилка "500 OOPS" vsftftd return - це захід безпеки, розроблений для запобігання кореневого доступу для користувачів FTP за замовчуванням. Для вирішення цієї проблеми доступні два основні варіанти.

Дозволення доступу до корінця користувача, що записується

Найпростіший метод - це ще раз змінити файл /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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.