允许 LXC 容器用户以外部用户身份写入挂载目录

Oli*_*Oli 7 permissions mount lxc acl

为标题道歉,设置实际上非常简单。我有一个叫做用户一台主机oli和一个名为目录/media/steve/incomingoli可读写-执行。在。在我有根下运行的特权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-dataoli文件系统上的主机权限吗?这会授予他们访问主机的权限吗?oli不是非隐私帐户。它可以造成真正的伤害。

  • 我是否可以以容器中的任何人都可以写入 /incoming 并且访问看起来像是来自主机的方式绑定挂载它oli

  • ACL 有什么帮助吗?

xia*_*jie 3

ACL可以成功做到这一点,因为它使文件根据用户名而不是用户 ID号为多个用户共享。

它被转换为文件属性内的用户 ID 号。

我可以映射container-www-datahost-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 的更多帮助