centos 7和rocky 8用nfs挂载同一个NAS,权限不一样,其中rocky 8挂载的文件夹中umask不起作用

环境

我用操作系统分别是centos 7 和 rocky 8的服务器去挂载同一个NAS,都是采用nfs的方式来挂载

发现问题

最开始是发现两台服务器在挂载的 NAS上创建的文件权限不一致,centos 7创建的文件权限是755,这个权限是没问题的,但是rocky 8创建的文件权限却是 777。随后我检查了两台服务器的umask,都是022

尝试1

随后我发现,在rocky8 本地硬盘上创建的文权限是对的,且umask是起作用的。但只要在NAS文件目录下创建文件权限就是错的,且无论umask改为多少都不会影响其权限。

发现2

多次尝试之后又有了一个发现,centos 7服务器上用 ll 命令查看NAS上的文件,显示的权限是

drwxr-xr-r.

而在rocky8服务上用 ll 命令查看同样的文件,显示的权限是

drwxr-xr-r+

注意上面的差别,正常的权限后面是 “点”,而有问题的权限后面是 “加号”
在rocky8服务器上,本地文件的权限后面也是 “点”,只有NFS挂载的文件权限后面是 “加号”
随后我查了资料后才知道,这个差别是来自于ACL权限,后面是 “加号” 的表示的是ACL权限。
后面我想关掉rocky8上的ACL权限,但也一直没找到办法

问题

无奈之下才来发帖,希望能够将rocky8上NFS挂载文件权限的 “加号” 换成 “点”,并保证创建的文件权限由umask来管控。

援引讯飞星火:
根据您的描述,问题出现在NFS挂载的权限上,您希望将Rocky 8上NFS挂载文件权限的"加号"换成"点",并保证创建的文件权限由umask来管控。

要解决这个问题,您可以按照以下步骤进行操作:

  1. 首先,确保您已经安装了acl软件包,它提供了对ACL的支持。如果没有安装,请使用以下命令进行安装:

    sudo yum install acl
    
  2. 然后,编辑/etc/modprobe.d/nfs.conf文件,添加以下行以启用ACL支持:

    alias nfs default_tcp ipv4 = off acl
    
  3. 接下来,重新加载NFS配置,使更改生效:

    sudo systemctl restart nfs-server
    
  4. 现在,您需要为Rocky 8服务器上的每个用户设置umask值。使用以下命令查看当前的umask值:

    echo $UMASK
    
  5. 根据需要修改umask值。例如,如果您希望新建文件的默认权限为644(即rw-r--r--),则可以将umask设置为0022。使用以下命令设置新的umask值:

    umask 0022
    
  6. 重新启动NFS服务,使新的umask设置生效:

    sudo systemctl restart nfs-server
    

完成上述步骤后,Rocky 8服务器上的NFS挂载文件的权限应该已经更改为与CentOS 7服务器一致。请注意,这只是一种解决方法,具体的操作可能因您的系统配置而有所不同。建议在执行任何更改之前备份重要的数据和配置文件。

如果你希望在Rocky 8上关闭NFS挂载文件的ACL权限,你可以尝试以下步骤:

  1. 确保你具有管理员权限(root用户或使用sudo)。
  2. 编辑NFS服务器的/etc/exports文件,找到对应的共享目录的配置行。
  3. 在该行的末尾添加"no_root_squash"选项。例如:
/path/to/shared/folder    client1(rw,no_root_squash,no_subtree_check)
  1. 保存并关闭文件。
  2. 重新启动NFS服务以应用更改:
sudo systemctl restart nfs-server
  1. 在客户端(Rocky 8)上卸载并重新挂载NFS共享。

请注意,上述步骤将禁用NFS服务器的root用户squash选项,允许客户端以root用户身份访问共享目录。这可能会导致一些安全风险,请谨慎操作。

另外,确保在客户端(Rocky 8)上设置了正确的umask值。umask值定义了掩码,用于控制新建文件和目录的默认权限。你可以通过在终端中执行以下命令来设置umask:

umask 022

这将设置umask为022,即新建的文件和目录权限将减去掩码值。确保在执行此命令后创建的文件和目录具有所需的权限。

希望这些步骤可以帮助你解决问题!如果问题仍然存在,请提供更多详细信息,以便我可以更好地帮助你。

这可能是由于NFS服务器上启用了ACL(Access Control Lists)导致的。
确保NFS服务器上的共享目录没有启用ACL权限,或者至少要在共享目录的导出配置中禁用ACL。您可以查看NFS服务器的配置文件(通常是/etc/exports),找到共享目录的配置,并确保没有启用ACL。示例配置如下:

/path/to/shared/directory  client_IP(rw,sync,no_root_squash)


引用 皆我百晓生 小程序回复内容作答:

看起来您遇到了一个比较特殊的情况,尝试使用NFS挂载NAS时,Rocky 8服务器上创建的文件的权限无法受到umask的影响。另外,您还注意到Rocky 8服务器上通过ll命令查看挂载文件的权限与CentOS 7服务器上显示不一样,体现在权限后面的字符上。

根据您的描述,这个问题可能与ACL(访问控制列表)权限有关。在Rocky 8服务器上,通过NFS挂载的文件权限后面显示的是一个加号,表示存在ACL权限。在CentOS 7服务器上未显示此加号。

要解决这个问题,您可以尝试禁用Rocky 8服务器上的ACL权限。您可以按照以下步骤进行操作:

  1. 检查当前文件系统是否支持ACL权限:

    tune2fs -l /dev/<device>
    

    <device> 替换为您磁盘的设备名称(如 /dev/sda1)。确认 Default mount options: 的输出中是否包含 acl 选项。

  2. 如果ACL权限已启用,请执行以下命令禁用ACL权限:

    tune2fs -o acl /dev/<device>
    

    再次将 <device> 替换为您磁盘的设备名称。

这样做后,重新挂载NAS并创建文件,应该会使用Rocky 8服务器上的umask值进行权限控制并在权限后面显示点而不是加号。

请注意,这些步骤可能会涉及到对磁盘的操作,请确保在进行任何更改之前备份重要数据,并明确了解您的系统和操作。如果您不确定自己的操作,请在进行更改之前咨询系统管理员或专业人士的意见。

根据您的描述,问题出在NFS挂载文件的权限上。您希望将Rocky 8服务器上的NFS挂载文件权限从"+"更改为".",并确保创建的文件权限由umask来管控。

要解决这个问题,您可以按照以下步骤进行操作:

  1. 首先,确认您的Rocky 8服务器上是否启用了ACL(访问控制列表)功能。如果启用了ACL功能,请确保您有适当的权限来修改它。

  2. 打开终端或命令行界面,以root用户或具有适当权限的用户身份登录到Rocky 8服务器。

  3. 使用以下命令查看当前NFS挂载的配置信息:

    mount -t nfs <NAS_IP地址>:/<共享目录> /mnt
    
  4. 找到您要更改权限的NFS挂载点,并记下相关的挂载参数。这些参数通常包括nfs_servernfs_exportnfs_options等。

  5. 使用以下命令编辑NFS挂载点的配置文件:

    sudo vi /etc/exports
    
  6. 在配置文件中找到与您要更改权限的NFS挂载点相关的行,并将其修改为以下形式:

    /<共享目录> <客户端IP地址>(rw,sync,no_subtree_check,no_root_squash)
    

    其中,<共享目录>是您要共享的目录路径,<客户端IP地址>是允许访问该共享目录的客户端IP地址。您可以根据需要添加其他选项,例如ro(只读)或all_squash(对所有子目录进行权限压缩)。

  7. 保存并关闭配置文件。然后重新加载NFS配置,使更改生效:

    sudo exportfs -ra
    
  8. 现在,尝试再次使用ll命令查看NFS挂载的文件权限,应该显示为正常的"."而不是"+"。

请注意,以上步骤假设您具有足够的权限来编辑NFS挂载点的配置文件。如果您没有足够的权限,可能需要联系系统管理员或具有适当权限的用户来执行这些操作。

结合GPT给出回答如下请题主参考
根据您提供的信息,我可以给出以下建议:

  1. 检查挂载的选项

在挂载 NFS 时,可以通过选项来设置权限。例如,可以使用 noacl 选项来禁用 ACL,或者使用 nfsvers=3 选项来指定 NFS 版本。检查两台服务器的挂载选项是否一致,如果不一致,可以尝试在 rocky 8 中使用相同的选项。

  1. 检查文件权限

如果使用的是 NFSv4,那么文件权限由 ACL 控制。检查两台服务器上的 ACL 是否一致。可以使用 getfacl 命令来查看文件的 ACL。如果发现两台服务器上的 ACL 不一致,可以使用 setfacl 命令来调整 ACL。

  1. 检查 umask 设置

如果 umask 对于 CentOS 7 起作用,但在 rocky 8 中不起作用,可能是由于 rocky 8 上的其他设置覆盖了 umask 的值。您可以在 rocky 8 上执行 umask 命令,以确保 umask 的值为所期望的值。

  1. 检查 SELinux 设置

在 CentOS 7 和 rocky 8 中,SELinux 设置可能会影响文件权限。如果 SELinux 在两台服务器上的设置不一致,可能会导致文件权限不一致。请检查 SELinux 的设置,并尝试在两台服务器上使用相同的设置。

希望这些建议能够帮助您解决问题。如果您还需要更多帮助,请提供更多详细信息,以便我们能够更深入地了解问题。

【以下回答由 GPT 生成】

由于rocky 8上NFS挂载文件权限后面的加号是由ACL权限引起的,您可以尝试按照以下步骤关闭ACL权限并确保文件权限受umask控制:

  1. 首先,通过命令行登录到rocky 8服务器。

  2. 确认您正在使用root用户或具有管理员权限的用户进行操作。

  3. 使用以下命令检查是否已安装ACL工具:

bash sudo yum list installed | grep acl

如果没有输出或输出中不包含acl,说明ACL工具未安装。您可以通过以下命令安装ACL工具:

bash sudo yum install acl

  1. 确保您已经 umount 了已挂载的NFS目录。使用以下命令卸载:

bash sudo umount [挂载点]

其中 [挂载点] 是您挂载NAS的目录。

  1. 使用以下命令编辑 /etc/fstab 文件:

bash sudo vi /etc/fstab

找到以NFS形式挂载的NAS行,并在相关行的选项部分添加 nobootacl 选项。例如:

[NAS的IP或主机名]:/[共享目录] [挂载点] nfs defaults,nobootacl 0 0

请确保 [NAS的IP或主机名][共享目录][挂载点] 正确配置。

  1. 保存并关闭 /etc/fstab 文件。

  2. 使用以下命令重新挂载NFS目录:

bash sudo mount -a

这将重新挂载 /etc/fstab 中列出的所有文件系统,包括您刚刚修改的NFS目录。

  1. 确认ACL权限已关闭。使用以下命令查看文件的ACL权限:

bash getfacl [文件路径]

如果没有输出或没有 + 符号表示每个权限之后,ACL权限已关闭。

  • 如果ACL权限已关闭,您可以使用 ll 命令查看文件的权限,确认 + 符号已被替换为 . 符号。

  • 如果ACL权限仍然存在,请仔细检查之前的步骤是否正确执行,并确保已正确编辑 /etc/fstab 文件。

请注意,执行这些步骤有一定的风险,请在操作前备份重要数据,并确保您对系统有足够的了解和权限。如果您仍然遇到问题,建议咨询相关操作系统文档或与操作系统供应商的技术支持团队联系。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

Linux Centos8 NFS文件共享(网络文件系统)配置参数解析 nfs共享权限,用户映射


https://www.cnblogs.com/milton/p/15353144.html

结合GPT给出回答如下请题主参考
问题描述不够清晰,无法提供详细的代码案例。需要更多信息才能给出具体解决方案。

可能需要了解以下信息:

  1. 在NAS上设置共享文件夹的权限和用户权限。
  2. 在服务器上挂载NFS共享文件夹时,设置mount参数。
  3. 在服务器上创建文件时,设置umask参数。

可以尝试以下步骤:

  1. 查看NAS上共享文件夹的权限设置,确认是否需要修改。可以使用showmount -e <NAS IP>命令查看NFS共享的文件夹列表,然后使用exportfs -v命令查看NFS共享文件夹的权限设置。
  2. 在服务器上挂载NFS共享文件夹时,可以使用mount -o <mount参数> <NAS IP>:/<共享文件夹路径> <挂载路径>命令指定mount参数。例如,可以使用mount -o rw,soft,intr <NAS IP>:/share /mnt/nfs挂载NFS共享文件夹,其中rw表示可读写,soft表示软连接,intr表示允许中断挂载。
  3. 在服务器上创建文件时,可以使用umask <权限值>命令设置umask参数。umask参数表示文件或目录的权限掩码,即新文件或目录的权限为777与umask值按位与的结果。例如,可以使用umask 022命令设置umask参数为022,即新创建的文件权限为755,目录权限为755。

需要根据具体情况进行调整。

该回答引用ChatGPT,希望对题主有所帮助,如有帮助,还望采纳。


您可以尝试在挂载NFS的时候加上参数"nfsvers=3",即:

mount -t nfs -o nfsvers=3 :/

这个参数可以让NFS挂载使用NFS版本3协议,而不是默认的版本4协议。在某些情况下,使用NFSv4会导致ACL权限的问题。使用NFSv3可能会解决这个问题。

另外,您还可以尝试在NFS服务器上修改exports文件的权限设置,例如添加no_acl参数,禁用ACL权限:

/ *(rw,sync,no_subtree_check,no_acl)

注意:这样修改可能会影响其他NFS客户端的访问权限,请谨慎操作。

首先,你可以尝试在Rocky 8上禁用NFS的ACL(访问控制列表)权限。然后,关于文件权限的问题,我想可能是因为NFS服务在Rocky 8上有些不同。在NFS的配置中,通常会有一个选项来设置文件和目录的默认权限。你可能需要检查和修改这个设置。最后,关于umask的问题,它是用来控制新创建的文件和目录的默认权限的。

参考gpt
根据您的描述,您在CentOS 7和Rocky 8服务器上挂载了同一个NAS,并发现了一些权限不一致的问题。您还发现在Rocky 8服务器上,使用NFS挂载的文件夹中的umask不起作用,并且文件的权限显示为“+”而不是“.”,表示ACL权限。

这个问题可能与Rocky 8服务器上的ACL权限相关。ACL权限是一种更细粒度的权限控制方式,可以在文件和目录级别上指定更多的访问控制规则。在某些情况下,ACL权限可能会覆盖umask设置。

要解决这个问题,您可以尝试以下方法:

  1. 禁用ACL权限:您可以尝试禁用Rocky 8服务器上的ACL权限。首先,您可以使用getfacl命令检查文件夹的ACL权限设置。然后,您可以使用setfacl命令将ACL权限设置为默认值。例如,使用以下命令禁用ACL权限:

    setfacl -b /path/to/folder
    

    这将删除文件夹的ACL权限设置,并将其恢复为默认设置。

  2. 检查NFS挂载选项:在挂载NFS共享时,您可以尝试指定一些挂载选项来更改文件的默认权限。例如,您可以尝试添加umask选项来设置默认的umask值。例如,使用以下命令挂载NFS共享:

    mount -t nfs -o umask=022 /path/to/nas /mnt/nas
    

    这将设置默认的umask值为022,以控制新创建文件的权限。

  3. 检查NAS的权限设置:确保NAS上的权限设置正确。您可以检查NAS上共享文件夹的权限设置,并确保它们允许正确的访问权限。

如果以上方法都没有解决问题,您可能需要进一步调查Rocky 8服务器上的ACL权限设置和NFS挂载选项。您可以查阅Rocky 8和NFS的文档,以获取更多关于ACL权限和NFS挂载的信息。

请注意,ACL权限和umask设置是复杂的主题,具体的解决方法可能因不同的系统配置而有所不同。如果您对此不太熟悉,建议咨询系统管理员或专业人士的帮助,以确保正确解决问题。


https://computingforgeeks.com/install-and-configure-nfs-server-on-rocky-linux/

Special Authority - Documentation https://docs.rockylinux.org/books/admin_guide/14-special-authority/

运行以下命令来禁用ACL权限

setfacl -bn /path/to/mount/point

这将清除NFS挂载目录的ACL权限设置

把权限清除了,重新给权限试试

重置权限试试