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

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

抱歉,标题不对,设置实际上非常简单。我有一台主机,其中有一个名为的用户oli和一个名为的目录/media/steve/incomingoli可以对其进行读写执行。在其中,我有一个在 root 下运行的特权 LXC 容器。/media/steve/incoming在容器中安装如下/incoming/

lxc.mount.entry = /media/steve/incoming incoming none bind 0 0

在容器内我有一个以 身份运行的 Web 服务器www-data。它需要能够写入/incoming/

我在这里有什么选择?我能想到一些想法,但它们要么有相当严重的缺点,要么我不知道如何实现它们:

  • 我可以将守护进程更改为在容器内以 root 身份运行,但我宁愿不这样做。root 在目录中以奇怪的方式写入文件(它们root:oli在主机上显示为 -owned)。

  • 我可以将容器映射到文件系统上www-data具有主机oli权限吗?这会授予他们访问主机的权限吗?oli不是一个非特权帐户。它可以造成真正的损害。

  • 我是否可以以这样一种方式绑定安装它,以便容器中的任何人都可以写入 /incoming,并且访问看起来像是来自 host- oli

  • ACL 有什么帮助吗?

答案1

访问控制列表可以成功做到这一点,因为它使得文件可以基于以下方式共享给多个用户:用户名而不是用户身份数字。

它被转换为文件属性内的用户 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

/media/steve/incoming/incoming与容器绑定在一起lxc

并且/media/steve/incoming的所有者已经被 拥有oli

因此主机oli可以直接写入它,容器的www-data用户也可以直接写入它。

如果setfacl主机上不存在该命令,您可以使用以下命令进行安装。

$ sudo apt-get install acl

主机www-data和容器www-data可以使用差异用户 ID 号,因此您可以为容器的 www-data 用户 ID 共享 /media/steve/incoming,如下所示。

首先,得到用户ID号容器上www-data

$ cat /etc/passwd | grep "^www-data:" | awk -F ":" '{print $3}'

然后,如果容器中有名为 的用户www-datauserid则它会显示一个数字www-data。其次,在主机上使用 acl 设置文件属性,如下所示。

$ sudo setfacl -m u:<got_number_above>:rwx /media/steve/incoming

然后它将适用于容器。

您可以从以下位置获取有关 ACL 的更多帮助文件权限ACL

相关内容