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/

関連情報