statx 停止给予 EPERM 需要哪些能力
Which capabilities are needed for statx to stop giving EPERM
我有一个使用插件接口的 Qt 项目,它在我的系统上编译得很好。然而,当同一个项目在 docker 中编译时,它停止使用 Qt 5.10.1,给出消息 Error: Undefined interface
。在 strace
对 moc
运行 进行一些 moc
之后,结果是找不到定义接口的头文件,因为 statx
对 include 文件路径的调用总是 returns EPERM
。文档甚至没有提到这个错误是如何产生的。
docker run --privileged
解决了这个问题,但我想避免过多的权限,所以我只想设置必要的权限。
到目前为止,我尝试添加所有这些功能(甚至同时添加)但没有成功:
- CAP_DAC_OVERRIDE
- CAP_DAC_READ_SEARCH
- CAP_FOWNER
- CAP_SETFCAP
我是不是遗漏了什么?
更新
pull request 待处理。
2018-03-06 之前
截至目前,statx
未包含在 Docker 使用的 default seccomp
whitelist 中。
您可以使用 --security-opt seccomp=/path/to/seccomp/profile.json
指定不同的配置文件(大概是添加了此系统调用的配置文件)。
2018-03-06之后
moby/moby#36417
was merged to master 截至 2018 年 3 月 6 日。
它应该包含在以后的每晚构建中,并最终包含在 Docker 18.04 版本中。
我有一个使用插件接口的 Qt 项目,它在我的系统上编译得很好。然而,当同一个项目在 docker 中编译时,它停止使用 Qt 5.10.1,给出消息 Error: Undefined interface
。在 strace
对 moc
运行 进行一些 moc
之后,结果是找不到定义接口的头文件,因为 statx
对 include 文件路径的调用总是 returns EPERM
。文档甚至没有提到这个错误是如何产生的。
docker run --privileged
解决了这个问题,但我想避免过多的权限,所以我只想设置必要的权限。
到目前为止,我尝试添加所有这些功能(甚至同时添加)但没有成功:
- CAP_DAC_OVERRIDE
- CAP_DAC_READ_SEARCH
- CAP_FOWNER
- CAP_SETFCAP
我是不是遗漏了什么?
更新
pull request 待处理。
2018-03-06 之前
截至目前,statx
未包含在 Docker 使用的 default seccomp
whitelist 中。
您可以使用 --security-opt seccomp=/path/to/seccomp/profile.json
指定不同的配置文件(大概是添加了此系统调用的配置文件)。
2018-03-06之后
moby/moby#36417
was merged to master 截至 2018 年 3 月 6 日。
它应该包含在以后的每晚构建中,并最终包含在 Docker 18.04 版本中。