statx需要哪些功能才能停止提供EPERM

时间:2018-02-26 19:35:00

标签: linux docker linux-capabilities

我有一个Qt项目,它使用一个插件接口,可以很好地编译我的系统。但是,当在docker中编译同一个项目时,它停止使用Qt 5.10.1,给出消息Error: Undefined interface。在strace运行moc之后,发现找不到定义接口的头文件,因为对include文件路径的statx调用始终返回EPERM。文档甚至没有提到如何生成此错误。

docker run --privileged解决了这个问题,但我想避免过多的权限,所以我只想设置必要的权限。

到目前为止,我尝试添加所有这些功能(即使是在同一时间)但没有成功:

  • CAP_DAC_OVERRIDE
  • CAP_DAC_READ_SEARCH
  • CAP_FOWNER
  • CAP_SETFCAP

我在这里错过了什么吗?

更新

pull request正在审核中。

1 个答案:

答案 0 :(得分:5)

2018-03-06之前

截至目前,Docker使用的default seccomp whitelist中未包含

statx

您可以使用--security-opt seccomp=/path/to/seccomp/profile.json指定其他个人资料(可能是添加了此系统调用的个人资料)。

2018-03-06之后

截至2018年3月6日,

moby/moby#36417merged to master

它应该包含在未来的夜间版本中,最终应该在Docker 18.04版本中。