我最近将我的家庭服务器设置从运行所有内容的基本 Ubuntu 服务器安装更改为虚拟化环境。我目前正在运行 ProxMox 类型 1 虚拟机管理程序,以及多个虚拟机。我的大多数服务都在 Linux 容器 (LXC) 中运行,其中一些服务需要访问共享数据集。为了提供对共享数据集的访问,我将数据 HDD 传递到 VM,然后设置 NFS 导出。然后 LXC 挂载 NFS 共享。然而,我经常遇到来自不同服务的用户权限错误。我如何轻松管理多个 LXC 的这些权限,而无需将所有内容设置为 777`。
更新
导出示例:
/mnt/data/www 192.168.0.0/24(rw,async,no_root_squash,no_subtree_check,insecure)
fstab 中挂载的示例:
192.168.0.254:/mnt/data/www /mnt/www nfs auto,x-systemd.automount,soft,rsize=16384,wsize=16384,timeo=14,intr 0 0
这些错误以权限被拒绝的形式出现,因为一个 LXC 可能会在用户 www-data 下创建一个文件,但另一个 LXC 无法访问该文件,因为它显示为 MySQL 所有,我知道这是因为 UID 不匹配,但我不知道如何解决这个问题。
答案1
如果您使用 NFS v4,则可以映射 UID。否则,您需要确保所有虚拟机中的用户和组 ID 一致。
答案2
您需要某种形式的 NFS UID 映射。简单的例子是使用 NIS,或者更好的是使用更现代的东西,比如 LDAP。那么您的用户 IDS 来自权威来源,并且 NFS 将正确映射节点之间的权限。您的所有节点都必须是同一身份验证域的成员。