如何解决写入 NFS 共享文件夹时出现“权限被拒绝”的错误

如何解决写入 NFS 共享文件夹时出现“权限被拒绝”的错误

我按照以下方式设置 NFS此视频来自 Jay(Linux Guy)直到设置 autofs 之前。

就我而言,我的服务器 (192.168.1.99) 运行的是 Proxmox 8(基于 Debian),我的笔记本电脑 (192.168.1.8) 运行的是 Ubuntu 22.04。

在我的笔记本电脑中安装共享文件夹后,当我尝试写入文件时出现此错误:

$ echo 'from laptop' >> /mnt/nfs/local/message.txt
bash: /mnt/nfs/local/message.txt: Permission denied

这是我/etc/exports在服务器上的文件:

/srv/local 192.168.0.0/255.255.254.0(rw,no_subtree_check)

我使用以下命令将该文件夹安装在笔记本电脑上:

$ sudo mount 192.168.1.99:/srv/local /mnt/nfs/local

有谁知道我该如何解决这个错误?我希望任何人都可以写入此共享文件夹。

答案1

这应该是一条评论,但有点长。

您将直接开始配置某些功能,而无需了解您正在使用的工具 - 尽管实际使用这些工具是最好的学习方式。但先读一点书总是一个好主意。网上有很多关于 Unix/Linux 权限的介绍文章。例如https://mason.gmu.edu/~montecin/UNIXpermiss.htm

客户端文件系统上的权限直到安装点为止,然后服务器上的权限适用。权限(例如-rwx-rxr--)与用户ID和组ID(均为数字)相关联,这些权限通过/etc/passwd映射到用户名。您的 NFS 客户端和 NFS 服务器在各自的 /etc/passwd 文件中可能有不同的映射。 NFSv4 具有解决此问题的机制(如果您对其进行配置)。

在评论中,您似乎建议您使用 all_squash - 但是这没有显示在您从 /etc/exports 引用的行中。

压缩选项允许跨 NFS 安装边界简单映射用户 ID。

/mnt/nfs/local/message.txt:权限被拒绝

要写入此文件,您的 UID 需要:

  • /mnt、/mnt/nfs 的读取和执行权限
  • /mnt/nfs/local 的读写和执行权限
  • /mnt/nfs/local/message.txt(如果已存在)的写入权限

(并且 NFS 文件系统需要以读/写方式挂载 - 即使您使用默认值 - rw 挂载它,它也可以在某些错误情况下恢复为 RO)。

@Jaromanda 询问 /srv/local 的所有者/组和权限。我认为您的答案是所有者是 root,组是 root - 但您没有说明权限是什么。您需要查看层次结构中每个节点的所有者、组和权限。

答案2

就我而言,问题是其他人对共享文件夹 ( /srv/nfs/local) 的权限。

出于某种原因,这在 Jay 的视频中并不是一个问题。也许是因为他使用的是 Ubuntu 和 Ubuntu Server,而我使用的是 Ubuntu 和 Proxmox(基于 Debian)

为了解决我的问题,我不得不依靠前交叉韧带

首先,我必须acl在我的服务器(Proxmox 8)中安装:

apt install acl

然后我运行了以下命令(仍在服务器上):

setfacl -PRdm o::rw /srv/local

您可以阅读此命令中使用的每个参数这里

此命令更改了默认共享,/srv/local以允许与该文件夹的用户和组不同的任何其他用户进行读写。

我的笔记本电脑中的用户是其他Proxmox 系统的用户,现在我可以从笔记本电脑写入共享文件夹。

感谢@jaromanda-x 和@symcbean 的投入。

相关内容