NFS(네트워크 파일 시스템) 공유를 사용할 때, 사용자는 디렉토리나 파일을 수정할 수 없게 하는 권한 문제에 직면할 수 있습니다. 이 블로그 포스트에서는 Red Hat Enterprise Linux 5.6을 사용하여 디렉토리 권한을 변경할 수 없는 특정 사례를 다룹니다. 문제의 원인, 진단 단계 및 해결책을 살펴보겠습니다.
Linux에서 NFS 공유 권한 문제 해결 방법
환경
- 운영 체제: Red Hat Enterprise Linux 5.6
- NFS 클라이언트: NFS 서버에서 공유를 마운트하도록 구성됨.
- NFS 서버: NFS 내보내기를 제공합니다.
NFS 서버/etc/exports
내보내기 구성
NFS 내보내기는 /etc/exports
파일에서 다음과 같이 구성됩니다:
/xyz/export *(sync,rw,root_squash,anonuid=4294967294,anongid=4294967294,no_subtree_check,fsid=29247)
문제
NFS 공유 내의 파일은 생성하고 수정할 수 있었으나, 디렉토리 권한은 변경할 수 없었습니다. 이는 다음 명령과 그 결과에서 명확하게 나타났습니다:
NFS 공유 마운트
# mount | grep nfs
nfsd on /proc/fs/nfsd type nfsd (rw)
1.1.1.253:/xyz/export on /opt/oracle/foobar002 type nfs (rw,user=oracle,noexec,nosuid,nodev,user,noac,nfsvers=3,tcp,rsize=1048576,wsize=1048576,addr=1.1.1.253)
# ls -ld /opt/oracle/foobar002
drwxrwxrwx 2 root root 2048 Mar 19 09:52 /opt/oracle/foobar002
$ touch /opt/oracle/foobar002/oracle-test.txt
$ ls -l /opt/oracle/foobar002/
total 0
-rw-r--r-- 1 oracle oinstall 0 Mar 19 15:19 oracle-test.txt
-rw-rw-r-- 1 myuidgid myuidgid 0 Mar 19 15:18 test-2.txt
-rw-r--r-- 1 4294967294 4294967294 0 Mar 19 15:17 test.txt
# chown oracle /opt/oracle/foobar002/
chown: changing ownership of `/opt/oracle/foobar002/': Operation not permitted
디렉토리 권한
# ls -ld /opt/oracle/foobar002
drwxrwxrwx 2 root root 2048 Mar 19 09:52 /opt/oracle/foobar002
파일 생성
$ touch /opt/oracle/foobar002/oracle-test.txt
$ ls -l /opt/oracle/foobar002/
total 0
-rw-r--r-- 1 oracle oinstall 0 Mar 19 15:19 oracle-test.txt
-rw-r--r-- 1 4294967294 4294967294 0 Mar 19 15:17 test.txt
권한 변경 시도
# chown oracle /opt/oracle/foobar002/
chown: changing ownership of `/opt/oracle/foobar002/': Operation not permitted
원인
디렉토리 권한을 변경할 수 없는 이유는 NFS 서버와 클라이언트 간의 anonuid
및 anongid
값이 일치하지 않아서였습니다. 주요 관찰 내용은 다음과 같습니다:
anonuid
와anongid
가 내보내기 옵션에 두 번 나열되었습니다.root_squash
가 사용되어 root 요청이anonuid=4294967294
로 매핑되므로, root ID로 변경을 시도해도 작동하지 않았습니다.anonuid
와anongid
값이 서버와 클라이언트 양쪽에서 일치해야 했습니다.
진단 단계
문제를 해결하기 위해 다음 단계를 수행했습니다:
- 시스템 보고서를 수집하거나 내보내기 옵션 확인:
- NFS 클라이언트에서
showmount -e
사용. - NFS 서버에서
/etc/exports
파일 검토.
- 내보내기 옵션 확인:
/xyz/export *(sync,rw,root_squash,anonuid=4294967294,anongid=4294967294,no_subtree_check,fsid=29247)
해결책
해결책은 NFS 서버의 내보내기 구성에서 anonuid
와 anongid
값을 수정하는 것이었습니다. 이러한 변경을 수행한 후, 권한 문제가 해결되어 클라이언트의 root 사용자가 필요한 대로 디렉토리 권한을 변경할 수 있게 되었습니다.
결론
NFS 권한 문제는 내보내기 옵션이 잘못 구성되어 발생할 수 있습니다. 서버와 클라이언트에서 anonuid
와 anongid
가 일치하도록 하고, root_squash
와 같은 옵션의 영향을 이해하는 것이 NFS 작업을 원활하게 수행하는 데 매우 중요합니다. 위의 진단 단계를 따르면 시스템 관리자는 NFS 공유의 권한 관련 문제를 효과적으로 해결할 수 있습니다.