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然后,如果容器有名为, useridof的用户,它将显示一个数字www-data。其次,在主机上使用 acl 设置文件属性,如下所示。
$ sudo setfacl -m u:<got_number_above>:rwx /media/steve/incoming
Run Code Online (Sandbox Code Playgroud)
然后它将适用于容器。
您可以从FilePermissionsACLs获得有关 ACL 的更多帮助