我在 ubuntu 16.04
上使用 docker
并启用了用户 ID 映射(用户 namespace )。我有以下设置:
/etc/密码
我的用户名:x:1000:1000:,,,:/home/我的用户名:/bin/bash
/etc/subuid
我的用户名:100000:65536
/etc/subguid
我的用户名:100000:65536
当我启动一个容器时,文件被正确地从 0(root)映射到我的 subuid 100000。
主持
-rw-r--r-- 1 100000 100000 0 30 月 30 日 13:05 测试文件
容器
rw-r--r-- 1 root root 0 Mar 30 13:05 测试文件
我可以读取主机上的文件,但无法编辑它。我的假设是 100000
是“我的”subuid,因此我可以编辑这些文件。我怎样才能使 myusername
无需 sudo 即可访问这些文件?
最佳答案
我不确定如何使用用户命名空间映射解决此问题,但您可以使用 ACL 解决此问题。
如果您不介意将一些 UID 信息泄露到容器中,您可以将 ACL 添加到您的主机用户的目录中。 ACL 位于标准 POSIX 权限之上。
要在父目录上设置默认 ACL,新条目将继承:
setfacl -d -m u:1000:rwx volume_dir/
为目录中的所有现有文件和目录设置 ACL:
setfacl -R -m u:1000:rwX volume_dir/
X
自动检测目录并将它们设置为可执行但跳过使文件可执行。不幸的是,这种类型的区分在默认 ACL 上不可用。
关于linux - 如何在 Linux 下使用属于子用户命名空间的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43116163/