Какие возможности необходимы, чтобы statx прекратил давать EPERM

У меня есть проект Qt, который использует интерфейс плагина, который прекрасно компилируется в моей системе. Однако, когда тот же проект скомпилирован в Docker, он перестал работать с Qt 5.10.1, выдав сообщение Error: Undefined interface, После некоторого strace в moc запустить, оказалось, что заголовочный файл, который определяет интерфейс не найден, потому что statx вызов пути включения всегда возвращает EPERM, В документации даже не упоминается, как эта ошибка может быть сгенерирована.

docker run --privileged решает эту проблему, но я хотел бы избежать чрезмерных разрешений, поэтому я хотел установить только необходимые.

До сих пор я пытался добавить все эти возможности (даже одновременно) безуспешно:

  • CAP_DAC_OVERRIDE
  • CAP_DAC_READ_SEARCH
  • CAP_FOWNER
  • CAP_SETFCAP

Я что-то здесь упускаю?

ОБНОВИТЬ

Запрос на извлечение для этого находится на рассмотрении.

1 ответ

Решение

До 2018-03-06

statx не включен в значение по умолчанию seccomp белый список, используемый Docker на текущую дату.

Ты можешь использовать --security-opt seccomp=/path/to/seccomp/profile.json чтобы указать другой профиль (предположительно, с добавленным системным вызовом).


После 2018-03-06

moby/moby#36417 был объединен с мастером по состоянию на 6 марта 2018 года.

Он должен быть включен в ночные сборки в будущем и в конечном итоге в выпуск Docker 18.04.

Другие вопросы по тегам