Vim을 사용하여 NFS 마운트 디렉터리의 파일을 읽을 수 있지만 파일을 수정할 수는 없나요?

Vim을 사용하여 NFS 마운트 디렉터리의 파일을 읽을 수 있지만 파일을 수정할 수는 없나요?

반면:

  • 나는 뛰고있어뿌리내 로컬 컴퓨터에서.
  • 내 로컬 컴퓨터에 "server_views"라는 NFS 마운트 디렉터리가 있습니다.
  • 내 로컬 컴퓨터의 fstab 및 mstab에서 "server_views" 디렉터리를 구성하는 방법은 다음과 같습니다.

    /etc/fstab

        server:/server_views /server_views nfs rw,defaults,noauto,users,suid,exec,tcp,posix,soft 0 0  
    

    /etc/mstab

        server:/server_views /server_views nfs rw,users,nodev,tcp,posix,soft,vers=4,addr=XXX.XXX.XXX.XXX,clientaddr=YYY.YY.YY.Y 0 0
    
  • 서버의 "server_views" 디렉토리에 "foo.c"라는 파일이 있습니다.

내 로컬 컴퓨터의 설치 디렉터리("server_views"):

설치된 "server_views" 디렉토리에서 ls –l을 실행하면 다음이 출력됩니다.

  -r-xr-xr-x 1 nobody nobody 28668 Mar  2  2017   foo.c

*Vim을 사용하여 "foo.c" 파일에 쓰려고 하면 Vim 콘솔에 다음 오류가 표시됩니다.

"foo.c" E212: Can't open file for writing

*foo.c 권한을 변경하려고 하면 다음과 같은 결과가 나타납니다.

chmod: changing permissions of `foo.c': Operation not permitted

"foo.c" 파일을 로컬 컴퓨터의 마운트 해제된 디렉터리에 수동으로 복사하는 경우:

내 로컬 컴퓨터에서 foo.c가 포함된 디렉터리에서 ls -l을 실행하면 다음이 표시됩니다.

-r-xr-xr-x 1 17932   26 28720 Mar 22 17:58  foo.c

Vim을 사용하면 문제 없이 foo.c를 작성할 수 있습니다.

마운트된 NFS 디렉토리 "server_views" 내부에서 "foo.c" 파일에 쓸 수 없는 이유를 아는 사람이 있습니까? 하지만 파일을 로컬 컴퓨터에 수동으로 복사하면 동일한 파일 "foo.c"에 쓸 수 있습니다. 마운트되지 않은 디렉토리는 무엇입니까?

답변1

root_squashroot이는 일반적으로 클라이언트가 NFS 서버에 있는 것을 방지하는 NFS 서버의 설정에 의해 제어됩니다 root(일반적으로 매우 좋은 보안 방법입니다). root_squash기본값이므로 일반적으로 no_root_squash누군가가 어떤 이유로 원격 사용자에 대해 압착을 비활성화해야 하는 경우에만 사람들이 이를 볼 수 있습니다 root. /etc/exports예를 들어 NFS 서버에서

/somedir dangerhost(rw,no_root_squash,async) \
         otherhost(rw,async) \
         ...

1777이는 모든 원격 사용자가 디렉터리에 쓸 수 있도록 허용하는 스키마 디렉터리를 사용하여 테스트 할 수 있습니다 .

nfsserver# mkdir /somedir/tmp ; chmod 1777 /somedir/tmp

그런 다음 클라이언트에 /somedir설치되어 있다고 가정합니다./mnt

$ touch /mnt/tmp/foo
$ sudo touch /mnt/tmp/bar
$ ls -l /mnt/tmp/{foo,bar}
-rw-r--r-- 1 nfsnobody nfsnobody 0 Apr 15 14:27 /mnt/tmp/bar
-rw-r--r-- 1 jhqdoe    jhqdoe    0 Apr 15 14:27 /mnt/tmp/foo
$ 

이는 여기 사용자 root를 위해 압축되었습니다 nfsnobody(다른 플랫폼이나 다른 계정에 있을 수 있음 nobody).

답변2

문제는 내 로컬 컴퓨터와 NFS 서버 사이의 게이트 컴퓨터(IP 위장이 올바르게 구성되지 않음)에 있습니다.

게이트웨이 컴퓨터를 다시 시작하고 eth 인터페이스를 시작한 다음(ifup 사용) 방화벽을 다시 시작합니다(게이트웨이에는 rc.firewall-2.4가 있음)

다음은 좋은 참고 자료입니다. http://en.tldp.org/HOWTO/IP-Masquerade-HOWTO/

관련 정보