一方:
- 私は走っている根私のローカルコンピュータから。
- 私のローカルコンピュータに「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/