반면:
- 나는 뛰고있어뿌리내 로컬 컴퓨터에서.
- 내 로컬 컴퓨터에 "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_squash
root
이는 일반적으로 클라이언트가 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/