如何在docker容器中允许ptrace
环顾四周,我发现我可以使用如何在docker容器中允许ptrace,docker,apparmor,Docker,Apparmor,环顾四周,我发现我可以使用 docker run --privileged --rm -i -t app /bin/bash ptrace peer=@{profile_name} 这也允许访问任何用户拥有的所有进程上的所有ptrace函数。不幸的是,我不想让其他人拥有这种能力。 所以我找了apparmor,发现我可以用 docker run --privileged --rm -i -t app /bin/bash ptrace peer=@{profile_name} 在我的应用
docker run --privileged --rm -i -t app /bin/bash
ptrace peer=@{profile_name}
这也允许访问任何用户拥有的所有进程上的所有ptrace函数。不幸的是,我不想让其他人拥有这种能力。
所以我找了apparmor,发现我可以用
docker run --privileged --rm -i -t app /bin/bash
ptrace peer=@{profile_name}
在我的应用程序中,有一个aparmor配置文件,然后在运行应用程序时将其包括在内
docker run --security-opt="apparmor:myprofile" --rm -i -t app /bin/bash
一切都很好。然后,我使用fuser(作为root),正如预期的那样,我可以看到root拥有的进程。但我有几个进程在uucp下运行,这使得权限被拒绝
所以我转到uucp下的bash
sudo -u uucp /bin/bash
但是使用fuser或lsof不起作用,并且不会返回任何结果
那么,当我像docker dontainer中所说的用户一样处于活动状态时,如何为任何用户激活ptrace呢?看来此()的修复程序已于2015年7月30日合并为master,并包含在docker v1.8.0及更高版本中。最新版本的Docker和附带的AppArmor配置文件不应再出现此问题。-->您应该尝试使用“-security opt seccomp=unconfined”来禁用seccomp阻止的所有系统调用-您尝试过吗?您可能想进一步阅读Docker的AppArmor配置文件: