Dell Unity:升級至 Unity OE 5.5 後,無法存取 NFS 匯出中的檔案或資料夾

摘要: 升級至 Unity OE 5.5 後,Linux 使用者可能無法存取網路檔案系統 (NFS) 匯出中的某些檔案或資料夾。

本文章適用於 本文章不適用於 本文無關於任何特定產品。 本文未識別所有產品版本。

症狀

  • 使用者可能會注意到在 Unity 升級至作業環境 (OE) 5.5 後,某些檔案無法存取或資料夾無法列出
  • 此問題僅在以下情況下發生: 
    • 用戶端使用以下命令掛接 NFS 匯出 NFSv4.2,如果用戶端使用以下方式掛接 NFS 匯出,則存取良好 NFSv3,或 NFSv4.0,或 NFSv 4.1。  
    • SELinux 在 Linux 用戶端上啟用。 

下面是一個範例:

  • User 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
  • User 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.0,或 v4.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 行程繼承使用者的安全類型, 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 有在類型 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
向其他 Dell 使用者尋求您問題的答案
支援服務
檢查您的裝置是否在支援服務的涵蓋範圍內。