간단한 질문 Solaris 11에서 nfs 공유를 만들었습니다.
zfs set share.nfs=on rpool/public
내 Linux 클라이언트가 설치했습니다.
mount solaris2:/var/public /mnt/share
myuser에게 쓰기 권한을 부여하고 싶습니다. 세 가지 해결 방법을 알고 있습니다.
해결 방법 1: chmod 777
chmod 777 /var/public #NO COMMENT
해결 방법 2: 원격 시스템과 로컬 시스템 간의 uid를 동일하게 만듭니다.
로컬 Solaris 사용자의 uid를 원격 Linux 사용자의 uid로 변경한 다음 acl을 제공합니다. 사용자가 한 명뿐이라면 괜찮지만 다중 사용자 시스템에서는 정말 끔찍합니다(모든 uid를 최신 uid 이전 uid!)
옵션 3: 원격 사용자의 uid를 로컬 사용자에 매핑한 다음 acl 할당
idmap add remoteuser@remotehost unixuser:myuser
chmod A=user:myuser:add_file/read_data/execute/write_data/execute:allow /var/public
하지만 작동하지 않습니다. 로컬 사용자는 /var/public에 데이터를 쓸 수 있지만 원격 사용자는 그럴 수 없습니다.
편집 1: 내가 아는 한, idmap 명령은 gid/uid를 SID로 변환하는데 이는 AD 또는 LDAP에 유용합니다.
편집 2: 위로일루모스그들은 몇 가지 흥미로운 옵션인 uidmap 및 gidmap을 추가했습니다. 단 하나의 문제가 있습니다. Solaris11은 Illumos "배포판"이 아니며 이러한 옵션은 단순히 존재하지 않습니다.
답변1
더 나은 솔루션을 기다리는 동안 다음 해결 방법이 좋습니다. 클라이언트와 서버에서 동일한 gid를 사용하여 그룹을 만든 다음 acl을 만듭니다.
클라이언트에서(Linux)
groupadd -g 10093 nfs-users
usermod -aG nfs-users myuser
서버에서(Solaris)
groupadd -g 10093 nfs-users
usermod -G nfs-users myuser
그런 다음 acl을 공유 zfs 세트(/var/public에 마운트됨)에 추가했습니다.
chmod A+group:nfs-users:write_data/append_data/execute/add_file/add_subdirectory:allow /var/public
테스트: 잘 작동합니다. nfs-users 그룹에 속한 모든 사용자(원격 및 로컬)가 공유에 쓸 수 있습니다. 더 나은 해결책은 AD(또는 samba4) + idmap을 사용하는 것이지만 이 해결 방법은 로컬 파일 환경에서도 잘 작동합니다.