Dell Unity: Unity를 5.5로 업그레이드한 후 NFS 내보내기의 파일 또는 폴더에 액세스할 수 없음

Summary: Linux 사용자가 Unity를 5.5로 업그레이드한 후 NFS(Network File System) 내보내기의 일부 파일 또는 폴더에 액세스하지 못할 수 있습니다. (사용자 수정 가능)

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 내보내기를 마운트하지만 보안 코넥스트는 지정
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에서 Security Label over 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
  1. 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)
  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

Affected 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.