NFS가 설정된 Ubuntu 18.04를 실행하는 서버가 있습니다. 네트워크를 통해 액세스하는 다른 클라이언트뿐만 아니라 공유 파일을 배치/조작하는 여러 서비스가 있습니다. NFS 서버가 모든 새 파일/폴더에 대해 기본 권한을 775로 설정하기를 원합니다.
s
새로 생성된 모든 파일과 폴더가 동일한 그룹을 상속하도록 폴더에 플래그를 설정했습니다. 따라서 해당 그룹의 모든 사용자는 해당 폴더에서 파일을 생성하고 수정할 수 있습니다 . 하지만 NFS에게 이렇게 하도록 강요할 수는 없습니다. 644개의 새 파일과 2755개의 폴더만 생성되었습니다.
이 내 꺼야/etc/exports/
/srv/nfs 192.168.11.0/24(ro,fsid=0,no_subtree_check,)
/srv/nfs/lpt-2tb 192.168.1.0/24(rw,sync,all_squash,no_subtree_check,insecure,anonuid=1002,anongid=1002)
1002는 사용자의 ID입니다 nfs
.
나는 umask와 acl을 시도했지만 아무 소용이 없었습니다.
nfs 사용자를 위한 homedir을 생성 umask 002
하여 ~/.profile
.
공유 폴더에 acl을 설정해 보았습니다.
/srv/nfs/lpt-2tb$ sudo setfacl -d --set u::rwx,g::rwx,o::r-x .
/srv/nfs/lpt-2tb$ sudo setfacl -R -m u::rwx,g::rwx .
/srv/nfs/lpt-2tb$ sudo getfacl .
# file: .
# owner: nfs
# group: nfs
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
아래에 있는 nfs-server 구성을 수정 하고 섹션 /lib/systemd/system/nfs-server.service
에 추가해 보았습니다 . 이는 내가 직접 만든 일부 다른 서비스에서는 작동하지만 NFS에서는 작동하지 않습니다.UMask=002
[Service]
NFS 서비스를 다시 시작했고 이러한 모든 수정 후에도 노트북에서 공유로 파일을 복사하면 644 권한이 있습니다.
drwxr-sr-x+ 2 nfs nfs 4096 Apr 5 20:34 acl2
-rw-r--r-- 1 nfs nfs 434506 Mar 7 21:31 acl_test.png
- -편집하다- -
다음은 파일 및 폴더에 대한 acl 출력입니다.
/srv/nfs/lpt-2tb$ sudo getfacl acl_test.png
# file: acl_test.png
# owner: nfs_share
# group: kodi
user::rw-
group::r--
other::r--
/srv/nfs/lpt-2tb$ sudo getfacl acl2
# file: acl2
# owner: nfs_share
# group: kodi
# flags: -s-
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
---UPD---
내 서버가 nfs v2-3-4를 실행하고 있음을 확인했지만 클라이언트가 v3을 통해 연결하고 이를 재정의할 수 없습니다. v4가 작동하게 되면 문제가 해결되었는지 확인하려고 노력할 것입니다.
이제 깨끗한 해결책을 찾는 것을 포기하고 cron 작업을 수행하여 주기적으로 권한을 확인하고 수정하겠습니다.
답변1
첫째, umask로 하려는 작업이 작동하지 않습니다. umask는 프로세스별이며 중요한 프로세스는 파일을 생성하는 프로세스입니다. nfs 사용자가 NFS 클라이언트에 파일을 생성할 때 NFS 서버에 있는 nfs 사용자의 umask(그렇다면)는 중요하지 않으며 NFS 서버 서비스 자체의 umask는 아무 영향도 미치지 않습니다.
다음으로 NFS 공유에 파일을 복사할 때 잘못된 권한을 얻었다고 언급하셨습니다. "cp" 명령에서처럼 문자 그대로 복사를 의미한다고 가정하면 이는 유효한 테스트가 아닙니다. cp 명령은 권한과 관련하여 모든 종류의 특별한 동작을 가지고 있습니다. 대부분의 프로그램과 달리 단순히 파일을 만들고 기본 권한을 그대로 두는 것이 아니라 나중에 다시 권한을 해제합니다. 예전에 다뤘던 곳은 이렇습니다.
https://serverfault.com/questions/183800/why-does-cp-not-Respect-acls
저는 이러한 테스트를 위한 파일을 생성하기 위해 "touch" 명령을 사용합니다. 한 번 시도해 보면 ACL 설정이 이미 제대로 작동하고 있음을 알 수 있습니다. 단지 cp 명령이 이를 존중하지 않는 것일 뿐입니다.