如何使用属于Linux下的子用户命名空间的文件?

我在使用用户ID映射(用户名称)启用的ubuntu 16.04上使用docker。 我有以下设置:

/ etc / passwd myusername:x:1000:1000:,,,:/home/myusername:/bin/bash

/ etc / subuid myusername:100000:65536

/ etc / subguid myusername:100000:65536

当我启动一个容器时,文件被正确地从0(root)映射到我的subuid 100000。

host -rw-r--r-- 1 100000 100000 0 Mär 30 13:05 testfile

容器 rw-r--r-- 1 root root 0 Mar 30 13:05 testfile

我可以读主机上的文件,但是我不能编辑它。 我的假设是100000是“我的”subuid,所以我可以编辑这些文件。 我怎样才能实现这些文件可以通过myusername访问没有sudo?

我不知道如何解决这个与用户命名空间映射,但你可以解决它与ACL的。

如果您不介意将一些UID信息泄漏到容器中,则可以将ACL添加到主机用户的目录中。 ACL位于标准POSIX权限之上。

要在父目录上设置默认的ACL,新的条目inheritance:

 setfacl -d -mu:1000:rwx volume_dir/ 

要在目录中的所有现有文件和目录中设置ACL,请执行以下操作:

 setfacl -R -mu:1000:rwX volume_dir/ 

X自动检测目录并将它们设置为可执行文件,但跳过使文件可执行。 不幸的是,这种types的差异在默认ACL上不可用。