Какие возможности необходимы, чтобы 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.