Dell Unity:升级到 Unity OE 5.5 后,无法访问 NFS 导出中的文件或文件夹

摘要: 升级到 Unity OE 5.5 后,Linux 用户可能无法访问网络文件系统 (NFS) 导出项中的某些文件或文件夹。

本文适用于 本文不适用于 本文并非针对某种特定的产品。 本文并非包含所有产品版本。

症状

  • 用户可能会注意到,在 Unity 升级到 Operating Environment (OE) 5.5 后,某些文件无法访问或文件夹无法列出
  • 此问题仅在以下情况下发生: 
    • 客户端使用 装载 NFS 导出 NFSv4.2,如果客户端使用 装载 NFS 导出 NFSv3NFSv4.0NFSv 4.1。  
    • SELinux 在 Linux 客户端上处于启用状态。 

下面是一个示例:

  • 用户 test_user 无法列出 NFS 装载点的内容 /mnt 装载方式 NFSv4.2。 
[test_user@RHEL4 ~]$ mount -v | grep -i mnt
10.xx.xx.48:/test on /mnt type nfs4 (rw,relatime,seclabel,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.227.xxx.129,local_lock=none,addr=10.60.15.48)

[test_user@RHEL4 ~]$ ls -al /mnt
ls: cannot open directory '/mnt': Permission denied
  • 用户 test_user 可以使用以下命令在客户端重新装载 NFS 导出后列出同一文件夹 NFSv4.1
[test_user@RHEL4 ~]$ mount -v | grep -i mnt
10.xx.xx.48:/test on /mnt type nfs4 (rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.227.xxx.129,local_lock=none,addr=10.60.15.48)


[test_user@RHEL4 ~]$ ls -al /mnt
total 16
drwxrwxrwx.  6 root root 8192 Jun 18 03:21 .
dr-xr-xr-x. 20 root root  271 Jun  8 19:07 ..
dr-xr-xr-x.  2 root bin   152 Apr 14 03:56 .etc
drwxr-xr-x.  2 root root  152 Jun 18 03:20 folder
drwxr-xr-x.  2 root root 8192 Apr 14 03:56 lost+found

原因

  • Unity 增加了对以下项的支持: NFSv4.2 从 Unity OE 5.5 开始。 NFSv4.2 协议支持带来了额外的安全性和性能,以及备用文件和 NFS 标签的 NFS 属性支持。
  • 安全标签功能位于 NFSV4.2 允许使用安全标签(例如 SELinux 上下文),以便在 NFS 共享上存储和强制执行。默认情况下,此功能在 Unity NAS 服务器上启用。 
  • 下载 SELinux 在 Linux 客户端上启用,它会为系统中的每个对象(包括文件、文件夹、进程、端口和设备)分配一个安全标签。 
  • 默认安全上下文 SELinux 分配给使用 装载的 NFS 导出中的文件 NFS v3开始, V4.0v4.1system_u:object_r:nfs_t:s0
[root@rhel8 test]# ls -alZ testv4.1
-rw-r--r--. 1 root root system_u:object_r:nfs_t:s0 0 Jun  1 21:47 testv4.1
  • 当客户端装载 NFS 导出时,使用 NFS v4.2,则 NFS 文件的默认安全上下文将更改为 unconfined_u:object_r:default_t:s0
[root@rhel8 test]# ls -alZ testv4.2
-rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Jun  1  2025 testv4.2
  • 安全上下文的更改,尤其是安全类型的更改,从 nfs_t 重定向到 default_t 可能会导致一些访问问题,因为 SELinux 根据计算用户或进程以及文件或文件夹的安全类型的策略规则确定访问权限。

解决方案

显示此问题已修复的发行说明第 2 页

 

如果没有升级选项,有一些解决方法可以避免此问题。
用户应根据自己的优先级选择一种解决方案:安全性、简易性或功能要求。 
 

  • 重新装载 NFS 导出 NFSv4.1, NFSv4.0, or NFSv3 从客户端:
mount -o vers=4.1 <nas server IP>:/<export> /<localmountpoint>
  • 使用 装载 NFS 导出 NFSv4.2 但请指定安全上下文:
mount -o context=system_u:object_r:nfs_t:s0 <nas server IP>:/<export> /<localmountpoint>
  • 根据要求将 NFS 导出中的文件的安全类型更改为相应的安全类型:
chcon <user>:<role>:<type>:<level> <file/folders>

For example, change the file type to nfs_t. 

[root@RHEL4 /]# ls -alZ /mnt/nfsv4.2
-rw-r--r--. 1 root root system_u:object_r:default_t:s0 0 Jun 17 00:53 /mnt/nfsv4.2
[root@RHEL4 /]# chcon -t nfs_t /mnt/nfsv4.2
[root@RHEL4 /]# ls -alZ /mnt/nfsv4.2
-rw-r--r--. 1 root root system_u:object_r:nfs_t:s0 0 Jun 17 00:53 /mnt/nfsv4.2

其他信息

可以按照以下过程对 SELinux 访问问题。 

1.确定用户的安全上下文:

[test_user@RHEL4 ~]$ id -Z
user_u:user_r:user_t:s0
  1. 确认已使用以下命令装载 NFS 导出 NFSv4.2seclabel 已启用:
[test_user@RHEL4 ~]$ mount -v | grep mnt
10.xx.xx.48:/test on /mnt type nfs4 (rw,relatime,seclabel,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.227.xxx.129,local_lock=none,addr=10.xx.xx.48)
  1. 检查文件安全上下文并重现问题:
[test_user@RHEL4 ~]$ ls -aldZ /mnt
drwxrwxrwx. 6 root root system_u:object_r:default_t:s0 8192 Jun 17 07:44 /mnt

[test_user@RHEL4 ~]$ ls -al /mnt
ls: cannot open directory '/mnt': Permission denied
  1. 检查 auditlog 要确认命令失败的原因,请执行以下作:
[root@RHEL4 ~]# ausearch -m avc -ts recent | tail
----
time->Tue Jun 17 18:30:59 2025
type=PROCTITLE msg=audit(1750xxxx59.577:8407): proctitle=6C73002D2D636F6C6F723Dxxxxx46F002D616C002F6D6E74
type=SYSCALL msg=audit(1750203059.577:8407): arch=c000003e syscall=257 success=no exit=-13 a0=ffffff9c a1=5563f160ca70 a2=90800 a3=0 items=0 ppid=104637 pid=104661 auid=10086 uid=10086 gid=10086 euid=10086 suid=10086 fsuid=10086 egid=10086 sgid=10086 fsgid=10086 tty=pts1 ses=246 comm="ls" exe="/usr/bin/ls" subj=user_u:user_r:user_t:s0 key=(null)
type=AVC msg=audit(1750xxxx59.577:8407): avc:  denied  { read } for  pid=104661 comm="ls" name="/" dev="0:47" ino=2 scontext=user_u:user_r:user_t:s0 tcontext=system_u:object_r:default_t:s0 tclass=dir permissive=0
  1. 当用户运行 ls/mntls process 继承用户的安全类型,即 SELinux 系统确定安全类型 user_t 对文件类型具有读取权限 default_t。在本例中, ls 命令失败,因为源安全类型 user_t 对文件的安全类型没有读取权限 default_t。 

这可以通过检查安全策略规则来确认:

root@RHEL4 ~]# sesearch -A -s user_t -t default_t -p read
[root@RHEL4 ~]#
  1. 以下命令列出了所有权限类型 user_t has on 类型 default_t
[root@RHEL4 ~]# sesearch -A -s user_t -t default_t
allow domain base_file_type:dir { getattr open search };  
allow domain file_type:blk_file map; [ domain_can_mmap_files ]:True
allow domain file_type:chr_file map; [ domain_can_mmap_files ]:True
allow domain file_type:file map; [ domain_can_mmap_files ]:True
allow domain file_type:lnk_file map; [ domain_can_mmap_files ]:True
allow user_usertype file_type:filesystem getattr;
  1. 在上面的输出中, user_t 属于域,并且 default_t 属于 base_file_type
    所以 user_t 只有 getattr,打开,搜索目录权限 default_t 类型。
[root@RHEL4 mnt]# seinfo -t default_t -x

Types: 1
   type default_t, base_file_type, file_type, mountpoint, non_auth_file_type, non_security_file_type;


[root@RHEL4 mnt]# seinfo -t user_t -x | grep domain
   type user_t, application_domain_type, nsswitch_domain, corenet_unlabeled_type, domain, kernel_system_state_reader, netlabel_peer_type, privfd, process_user_target, scsi_generic_read, scsi_generic_write, syslog_client_type, pcmcia_typeattr_1, user_usertype, login_userdomain, userdomain, unpriv_userdomain, userdom_home_reader_type, userdom_filetrans_type, xdmhomewriter, x_userdomain, x_domain, dridomain, xdrawable_type, xcolormap_type;
/pre>
  1. 用户可以 cd 重定向到 /mnt 因为允许打开。 
>allow domain base_file_type:dir { getattr open search };   <<<<

[test_user@RHEL4 ~]$ cd /mnt
[test_user@RHEL4 mnt]$ ls
ls: cannot open directory '.': Permission denied

受影响的产品

Dell EMC Unity, Dell Unity Operating Environment (OE)
文章属性
文章编号: 000334013
文章类型: Solution
上次修改时间: 04 2月 2026
版本:  3
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。