我正在开发一个简单的Flask应用程序(配置有Apache网络服务器),该应用程序提供了用于docker管理的网络界面。我的apache服务器以“ www-data”用户身份运行,并且所有API操作都使用该服务器。
但是在以下情况下,我收到“权限被拒绝”错误, 码头工人图像 docker run等 因为它不允许“ www-data”用户运行上述命令。
能否请您提供有关使用“ www-data”用户进行docker操作的建议。
我不想将“ www-data”用户添加到sudoers列表中。
仅将用户添加到docker组将是一个适当的解决方案?
或者请为我建议一个最佳实践解决方案。
谢谢 GuruPrasad
答案 0 :(得分:0)
告诉Apache run your process as root会更容易,更清晰且同样危险。
请记住,如果您完全可以运行任何Docker命令,则可以轻松获得对系统上任何内容的不受限制的根级别访问。例如,如果您的工具确定确实确实希望www-data
出现在主机的sudoers列表中,则它可以
docker run --rm -v /:/host busybox \
sh -c 'echo www-data ALL = (ALL) NOPASSWD: ALL >> /host/etc/sudoers'
根据您的管理工具的用途,它可能会为可以访问Web页面的任何人提供对主机的相同的不受保护的根级访问。即使不是,您也需要非常谨慎地调用Docker(如果用户可以使用任意名称创建目录并从中运行脚本,则我正在查看的另一个SO答案可能会导致系统root用户例如)。