Dell Unity:Unity 升级到 5.5 后,无法访问 NFS 导出中的文件或文件夹
Summary: Unity 升级到 5.5 后,Linux 用户可能无法访问网络文件系统 (NFS) 导出中的某些文件或文件夹。(用户可纠正)
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
Symptoms
- 用户可能会注意到,在 Unity 升级到 5.5 后,某些文件无法访问或无法列出文件夹。
- 此问题仅在以下情况下发生:
- 客户端使用 NFSv4.2 装载 NFS 导出,如果客户端使用 NFSv3、NFSv4.0 或 4.1 装载 NFS 导出,则访问良好。
- 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
- 在客户端使用 NFSv4.1 重新装载 NFS 导出后,用户test_user可以列出相同的文件夹。
[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
Cause
- 从 UnityOS 5.5 开始,Unity 增加了对 NFSv4.2 的支持。NFSv4.2 协议支持带来了额外的安全性和性能,以及备用文件和 NFS 标签的 NFS 属性支持。
- NFSV4.2 中的安全标签功能允许存储安全标签(例如 SELinux 上下文)并通过 NFS 共享强制实施。默认情况下,此功能在 Unity NAS 服务器上启用。
- 在 Linux 客户端上启用 SELinux 时,它会为系统中的每个对象(包括文件、文件夹、进程、端口和设备)分配一个安全标签。
- SELinux 分配给使用 NFS v3、V4.0 或 v4.1 装载的 NFS 导出中的文件的默认安全上下文为
system_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 v4.2 装载 NFS 导出时,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 会根据计算用户或进程以及文件或文件夹的安全类型的策略规则确定访问权限。
Resolution
目前有几种解决方法。用户应根据其优先级选择一种解决方案:安全性、简易性或功能要求。
- 从客户端使用 NFSv4.1、NFSv4.0 或 NFSv3 重新装载 NFS 导出
mount -o vers=4.1 <nas server IP>:/<export> /<localmountpoint>
- 使用 NFSv4.2 装载 NFS 导出,但指定安全 conext
mount -o context=system_u:object_r:nfs_t:s0 <nas server IP>:/<export> /<localmountpoint>
- 将 Unity 上的最大支持 NFSv4 版本从 v4.2 降级到 v4.1。
Dell Unity:升级到 Unity OE 5.5 版后,NFSv4 客户端无法访问数据
- 禁用 Unity 上的安全标签
Dell Unity:如何在 Unity OE 5.5 上通过 NFS 禁用安全标签(用户可纠正)
- 根据要求将 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
Additional Information
可以遵循以下过程对 SELinux 访问问题进行故障处理。
1.确定用户的安全上下文。
[test_user@RHEL4 ~]$ id -Z user_u:user_r:user_t:s0
- 确认已使用 NFSv4.2 装载 NFS 导出,并且
seclabel已启用。
[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)
- 检查文件安全上下文并重现问题
[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
- 检查
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
- 当用户运行
ls在/mnt,ls 进程继承用户的安全类型,SELinux 系统确定安全类型 user_t 是否对文件类型default_t具有读取权限。在本例中,ls命令失败,因为源安全类型 user_t 对文件的安全类型 default_t 没有读取权限。
这可以通过检查安全策略规则来确认。
root@RHEL4 ~]# sesearch -A -s user_t -t default_t -p read [root@RHEL4 ~]#
- 以下命令列出user_t类型 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;
- 在上面的输出中,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>
- 用户可以
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 deniedAffected Products
Dell EMC Unity, Dell Unity Operating Environment (OE)Article Properties
Article Number: 000334013
Article Type: Solution
Last Modified: 25 Jun 2025
Version: 2
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.