我正在尝试按照 Symfony 权限指南使用以下命令更改 docker 容器中两个文件的权限docker-compose exec
:
docker-compose exec --user root fpm sh -c "setfacl -dR -m u:www-data:rwX -m u:root:rwX var"
docker-compose exec --user root fpm sh -c "setfacl -R -m u:www-data:rwX -m u:root:rwX var"
但我得到的答复是:
setfacl: var: Permission denied
根据https://docs.docker.com/compose/reference/exec/我可以将--privileged
选项传递给“授予进程扩展权限。”这似乎没有效果。
我如何 sudo 此命令?
答案1
TL;DR:SELinux 不适用于 Centos 7.3 上的 docker。
原来是 SELinux 拒绝访问该文件。我使用以下命令检查了 var/ 目录中的 SELinux 标签:
ls -latZ
返回:
drwxrwxr-x+ user user unconfined_u:object_r:httpd_sys_rw_content_t:s0 logs
drwxrwxr-x+ user user unconfined_u:object_r:httpd_sys_rw_content_t:s0 cache
这些都是正确的(参见httpd_sys_rw_content_t部分)
在此了解有关 SELinux 的更多信息(易于阅读且具有视觉效果):https://opensource.com/business/13/11/selinux-policy-guide
因此我尝试使用以下命令启用 SELinux docker 模块:
semodule -v -e docker
失败原因:
Re-declaration of type docker_t
Failed to create node
Bad type declaration at /etc/selinux/targeted/tmp/modules/100/docker/cil:1
semodule: Failed!
搜索了错误中的“错误类型”部分,并在 github 上找到了该错误: https://github.com/moby/moby/issues/28406
要查找您的版本号,请执行以下操作:
cat /etc/centos-release