首页 文章

在docker中chown不将用户更改为root

提问于
浏览
1

我是Docker的新手,并且已经设置了一个Dockerfile和compose文件来启动服务器进行测试 .

当运行centos:6.6图像,其中一个卷映射到我在OSX中的用户目录并安装httpd时,我的var / www / html用户是1000:ftp而不是root:root .

我需要将文件夹更改为用户apache:apache以便能够将文件上传到它并且无法获得chown或chmod在var / www / html下的任何文件夹中进行任何更改 .
我知道这与我将我的卷映射到我的OS驱动器上的某个位置有关 .

所以,我的问题是......

有没有设置它,以便我可以更改var / www / html的所有权?

2 回答

  • 2

    问题587581表明您无法更改主机安装目录的所有权 .

    更改您的Apache启动脚本,以便使用正确的id(1000)而不是apache:apache启动它 .
    参见Michael A. Smith的“apache/start_safe_perms

    主要是:

    read owner group owner_id group_id < <(stat -c '%U %G %u %g' .)
    adduser --system --uid=$(stat -c %u .) "$owner"
    
  • 1

    新发布的Docker for Mac has a different behavior关于所有权:

    最初,任何请求对象的所有权元数据的容器化进程都会被告知其uid和gid拥有该对象 . 当任何容器化过程改变共享文件系统对象的所有权时,例如,使用chown,新的所有权信息将保留在对象的com.docker.owner扩展属性中 . [...]

    Michael的 start_safe_perms 脚本可以像以下一样进行调整,以便跨平台一致地工作:

    if [[ -n $(mount -t fuse.osxfs) ]]; then
        chown -R www-data:www-data . 2> /dev/null
        # ...
    else
        read owner group owner_id group_id < <(stat -c '%U %G %u %g' .)
        adduser --system --uid=$(stat -c %u .) "$owner"
        # ...
    fi
    

    它基本上检测挂载的卷是否为 fuse.osxfs 类型 .

    您可以查看API Platformstart_safe_perms 脚本以获得完整的示例:https://github.com/api-platform/api-platform/blob/master/docker/apache/start_safe_perms

相关问题