Oli*_*Oli 7 permissions mount lxc acl
为标题道歉,设置实际上非常简单。我有一个叫做用户一台主机oli
和一个名为目录/media/steve/incoming
是oli
可读写-执行。在。在我有根下运行的特权LXC容器。/media/steve/incoming
安装在容器中/incoming/
,如下所示:
lxc.mount.entry = /media/steve/incoming incoming none bind 0 0
Run Code Online (Sandbox Code Playgroud)
在容器内,我有一个运行为www-data
. 它需要能够写入/incoming/
.
我在这里有哪些选择?我可以想到一些想法,但它们要么有非常严重的缺点,要么我不知道如何实施它们:
我可以将我的守护进程更改为在容器内以 root 身份运行,但我宁愿它没有。根目录中奇怪的写入文件(它们root:oli
在主机上作为-owned 出现)。
我可以将容器映射www-data
到oli
文件系统上的主机权限吗?这会授予他们访问主机的权限吗?oli
不是非隐私帐户。它可以造成真正的伤害。
我是否可以以容器中的任何人都可以写入 /incoming 并且访问看起来像是来自主机的方式绑定挂载它oli
?
ACL 有什么帮助吗?
ACL可以成功做到这一点,因为它使文件根据用户名而不是用户 ID号为多个用户共享。
它被转换为文件属性内的用户 ID 号。
我可以映射container-www-data
到host-oli
文件系统上的特权吗?这会让他们访问主机吗?oli
不是非特权帐户。它可以造成真正的伤害。
您可以在主机上运行以下命令以使lxc
容器的www-data
用户可以写入该/incoming
文件夹。
$ sudo chown oli /media/steve/incoming
$ sudo setfacl -m u:www-data:rwx /media/steve/incoming
Run Code Online (Sandbox Code Playgroud)
/media/steve/incoming
被绑定为容器/incoming
的一个lxc
。
并且/media/steve/incoming
其所有者已被拥有oli
。
所以主机oli
可以直接写,容器的www-data
用户也可以直接写。
如果setfacl
主机上不存在该命令,您可以使用以下命令安装它。
$ sudo apt-get install acl
Run Code Online (Sandbox Code Playgroud)
主机www-data
和容器www-data
可以使用不同的用户 ID 号,因此您可以共享 /media/steve/incoming 容器的 www-data 用户 ID,如下所示。
首先,获取容器上的用户ID号www-data
。
$ cat /etc/passwd | grep "^www-data:" | awk -F ":" '{print $3}'
Run Code Online (Sandbox Code Playgroud)
www-data
然后,如果容器有名为, userid
of的用户,它将显示一个数字www-data
。其次,在主机上使用 acl 设置文件属性,如下所示。
$ sudo setfacl -m u:<got_number_above>:rwx /media/steve/incoming
Run Code Online (Sandbox Code Playgroud)
然后它将适用于容器。
您可以从FilePermissionsACLs获得有关 ACL 的更多帮助