Synology NAS의 NFS 공유에 대한 읽기 / 쓰기 액세스 권한을 얻는 방법은 무엇입니까?


11

마운트 된 NFS 공유에만 읽기 권한이 있습니다.

NAS에 '스쿼시 매핑 없음'이 설정되어 Permission denied있으면 Ubuntu 일반 사용자는 cd공유 에 들어 가려고 할 때 를 사용하여 읽기 권한 만 얻을 수 있습니다 sudo.
클라이언트 일반 사용자는 squash '모든 사용자를 관리자에게 맵핑'설정 cd을 사용하여 공유에 대한 읽기 권한 만 가질 수 있습니다 . 사용 sudo은 쓰기를 허용하지 않습니다.


Synology NAS :
DS214> id username
uid=1026(username) gid=100(users) groups=100(users),101(administration)

스쿼시 없음 (매핑 없음)
DS214> cat /etc/exports
/volume1/Files 10.1.1.2(rw,async,no_wdelay,no_root_squash,insecure_locks,sec=sys,anonuid=1025,anongid=100)

모든 스쿼시 (모든 사용자를 관리자에게 매핑)
DS214> cat /etc/exports
/volume1/Files 10.1.1.2(rw,async,no_wdelay,all_squash,insecure_locks,sec=sys,anonuid=1024,anongid=100)

우분투 클라이언트 :
$ cat /etc/fstab
10.1.1.214:/volume1/Files /mnt/nfs/Files nfs rw,user,auto 0 0

$ id username
uid=1000 gid=1000(username) groups=1000(username), <etc>

$ ls -n /mnt/nfs
drwxrwxrwx 9 0 0 4096 Sep 25 01:28 Files

$ ls -n /mnt/nfs/Files
drwxr-xr-x 11 1026 100 4096 Sep 24 22:05 Data


(원래 sudo쓰기 가능 액세스 를 사용하는 오류가 게시되었습니다 ) 마운트 된 NFS 공유에서 파일을 열 sudo vi /mnt/nfs/Files/Data/test.file수 는 있지만을 사용하여 파일에 변경 사항을 쓸 수는 없습니다 sudo. :w!명령 시 vi 오류 메시지 는 다음과 같습니다.
"test.file" E212: Can't open file for writing


NFS는 사용자 ID (UID)에 대한 액세스 권한을 확인합니다. 로컬 컴퓨터에있는 사용자의 UID 는 서버 에서 액세스하려는 파일 소유자의 UID와 일치해야 합니다 . 서버로 이동하여 파일 권한을보십시오. 어떤 UID (로 찾은 id username)가 있으며 어떤 권한이 설정되어 있습니까?
Nephente

cd일반 사용자로 도 마운트 할 수 있습니까 ? 그렇다면 다음을 제안합니다. 내 의심을 확인하거나 반박하려면 다음을 수행하십시오. 클라이언트 cd에서 마운트로 이동하십시오 ls -n. 파일 소유자와 그룹이 각각의 ID로 나열됩니다. 당신은 sudo내가 추측 과 함께해야합니다 . 선 또는의 출력과 함께 질문에 대한 출력의 두 추가] id (아무 sudo당신이 할 수있는 경우에조차!) cd는 A 일반 사용자로 마운트하려면, 당신은에 수출하고있는 디렉토리의 권한을 확인해야합니다 서버.
Nephente

나는 cd일반 사용자로서 마운트에 들어갈 수 없었 습니다. 서버에서 Squash를 사용하여 권한을 강제 실행하면 권한을 부여하기위한 임시 수정 사항으로 작동합니다. 서버 권한 조사 및 id username.
marsilea

감사합니다, 나는 그것을보다 효율적으로 사용하는 스쿼시와 올바른 방법보다는 브 루트 포스 NFS 것이라고 생각 .. 서버에 '관리에 대한 모든 사용자가지도를'
marsilea

때에 따라 다르지. 고객과 사용자를 신뢰하십니까? 그렇지 않으면 클라이언트에 대한 루트 액세스 권한이있는 사람은 누구나 UID를 스푸핑 할 수 있으므로 NFSv3은 적합하지 않습니다. 적절한 인증이 필요한 경우 SMB를 사용하는 것이 좋습니다. NFSv4를 사용한 인증은 다소 복잡한 Kerberos를 실행해야합니다. 그럼에도 불구하고, 당신의 결과물이 나를 당황스럽게합니다 ... 마운트 포인트가 있다고 가정합니다 /mnt/nfs/Files. 에 Files속해 있지만 root권한은 누구나 할 수있는 작업입니다. 왜 dir을 다른 사용자로 입력하는 데 문제가 있었는지 이해가되지 않습니다. 에서 관련 줄을 게시하십시오 /etc/exports.
Nephente

답변:


11

NFSv2 / 3는 UID 및 GID만을 기반으로 권한을 처리합니다. 서버의 파일 권한은 클라이언트의 사용자 및 그룹 ID와 일치합니다. 따라서 NFSv <4는 사용자가 클라이언트 시스템에 대한 루트 액세스 권한이있는 환경에서 안전하지 않은 이유입니다. 이 경우 UID 스푸핑은 쉽지 않습니다.

NFSv4는 Kerberos5를 통한 클라이언트 및 사용자 인증을 제공합니다. 사용자 이름과 비밀번호를 사용한 인증이 필요한 경우 순수한 Linux 환경에서도 Kerberos를 설정하는 대신 Samba (SMB / CIFS)를 사용하는 것이 훨씬 쉽습니다.

적어도 루트 권한의 단계적 확대 방지에에, NFS 공유는 옵션으로 기본적으로 수출하고 있습니다 root_squash에서 오는 모든 클라이언트 요청 매핑됩니다, root (uid=0, gid=0)anonuidanongid. 이 동작은로 대체 할 수 있으며 no_root_squash내보내기에 대한 루트 액세스 권한을 부여합니다.

여기에 또 다른 단점이 있습니다. NFS가 제대로 작동하려면 기본적으로 모든 컴퓨터에서 동일한 UID / GID가 필요합니다. 액세스하려는 파일이 속해 1026있으며 권한이 755 uid=1000입니다. 클라이언트의 사용자는 입니다. GID도 일치하지 않으므로 월드 권한 만 가져옵니다. 따라서 쓰기 권한이 없습니다.

이를 해결하기 위해 여러 가지 중 하나를 수행 할 수 있습니다.

  • NAS에서 파일 소유자를로 변경하십시오 1000. 해당 계정을 만들어야 할 수도 있습니다. 이것이 다른 서비스에 어떤 영향을 미치는지 알 수 없습니다.

  • 로컬 사용자의 UID를로 변경하십시오 1026.

  • 서버의 파일에 액세스하는 유일한 사람이므로 모든 요청이 올바른 UID에서 온 것처럼 가장 할 수 있습니다. 이를 위해 NFS에는 옵션이 all_squash있습니다. 서버가 모든 요청을에 의해 지정된 익명 사용자에게 매핑하도록 지시합니다 anonuid,anongid.

    all_squash,anonuid=1026,anongid=100에 내보내기에 옵션 을 추가하십시오 /etc/exports.

그러나 내보내기를 마운트하는 모든 사람 이 해당 파일의 소유자를 효과적으로 만들 수 있으므로 주의해야 합니다!

파일을 잘못 사용하지 않을 것을 신뢰하지 않는 사람 및 클라이언트와 네트워크를 공유하는 경우 인증을 제공하는 파일 공유 방법을 고려해야합니다. 제 생각에는 삼바가 가장 쉬운 방법입니다.


우분투 클라이언트의 외부 USB 드라이브에 rsync를 사용하여 NAS를 백업 할 수 있기 때문에 Linux에서 Linux에 이점이 있다고 생각했기 때문에 NFS를 선택했습니다 (Synology의 DSM 시스템은 USB 드라이브와의 동기화를 제공하지 않습니다) 파일 소유권 및 권한 정보를 유지하면서 철저한 답변과지도 해 주셔서 감사합니다.
marsilea

0

수행 showmount -e 10.1.1.214내보내기 옵션을 볼 수 있습니다. Permission deniedNFS 서버 자체에서 오류가 발생했습니다. 에서 옵션을 변경하려고 rw,user,auto하는 defaults.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.