質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
NFS

NFS (Network File System) とは、ネットワークを介して外部ストレージにアクセスするための分散ファイルシステムです。

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Q&A

1回答

21139閲覧

CentOS上でNFSの構築練習(書き込みができない)

hwhshsq

総合スコア19

NFS

NFS (Network File System) とは、ネットワークを介して外部ストレージにアクセスするための分散ファイルシステムです。

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

0グッド

0クリップ

投稿2016/09/07 06:13

編集2016/09/07 06:14

nfsの構築練習をしています。
質問が2点あります。

virtualbox上に別々の2台のCentOS6.6のマシンがあります。
内1台をnfsサーバー、nfsクライアントとしました。
nfsのバージョンはv4です。

サーバー側でexportfs -vを実行すると以下の通りです。

/export 192.168.xx.xx(rw,async,wdelay,root_squash,no_subtree_check,sec=sys,rw,root_squash,no_all_squash)
※192.168.xx.xxはクライアントのIPアドレスです。マスクしました。

そして、nfsクライアント側から

mount 192.168.yy.yy:/export /export
※192.168.yy.yyはサーバーのIPアドレスです。

を実行しました。

質問1:クライアントはマウントには成功しているようですが、
touch /export/test

などと実行しても

touch:cannot touch 'test': 許可がありません

となります。
rwでもファイルの書き込みができるわけではないのでしょうか??
どうすればクライアント側からマウントしたファイルシステム上でファイルの作成や編集ができるようになるでしょうか?

質問2:サーバーでshowmountを実行しても、

Port mapper failure - Timed out

となってしまい表示されません。

以上質問2点です。
ご回答よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

1点目ですが、nfsサーバとnfsクライアントでuid/gidは一致していますでしょうか。nfsサーバ側でuid/gidで書き込み権限の有無を判断しています。

2点目はnfsサーバ側でportmapサービス起動していないのではないでしょうか。nfsにはportmapサービスも必要となります。(linuxだけ?)

投稿2016/09/07 06:22

ynakano

総合スコア1894

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hwhshsq

2016/09/07 06:45

回答ありがとうございます。 が、未熟なものでその内容を理解できておりません。。。 >>1点目ですが、nfsサーバとnfsクライアントでuid/gidは一致していますでしょうか。nfsサーバ側でuid/gidで書き込み権限の有無を判断しています。 サーバー・クライアント共にrootでログインして一連の動作を行いましたが、rootがよくないのでしょうか・・・? no_root_squashオプションなどが関係ありますか? >>2点目はnfsサーバ側でportmapサービス起動していないのではないでしょうか。nfsにはportmapサービスも必要となります。(linuxだけ?) 調べたところCentOS6ではportmapではなくrpcbindを使うようです。 statusで確認すると rpcbindは実行中でした。
ynakano

2016/09/07 07:01

とりあえず1点目コメントしますね。 no_root_squashの指定がないと、nfsユーザからのrootユーザの書き込みはnobodyユーザとして処理されます。 ですのでrootでアクセスするのであればこれを設定してあげる必要があります。
ynakano

2016/09/07 07:18

2点目ですが、tcp wrapper回りでしょうか。 /etc/hosts.allowに以下を追記。 rpcbind:<クライアントのIPアドレス> > 調べたところCentOS6ではportmapではなくrpcbindを使うようです。 そのようですね。私もCent6でNFSをやったことがなかったので勉強になりました。
hwhshsq

2016/09/07 07:37

ありがとうございます。 >>ですのでrootでアクセスするのであればこれを設定してあげる必要があります。 確かにno_root_squashを設定したところファイルを新しく作ったり、編集することができました! ですが、no_root_squashはセキュリティ上よくない設定だと知りました。 なので、一般ユーザーで試そうとしたのですが、同様に許可がありません、となりました。 どうすればよいでしょうか? >> rpcbind:<クライアントのIPアドレス> サーバー上の/etc/hosts.allowに記入してみましたが、結果は変わりませんでした。。。
ynakano

2016/09/07 08:01

一般ユーザでファイルを読み書きするのであれば、両方のサーバでuidとgidが同一となるユーザを作成し、そのユーザにnfsサーバ側のディレクトリの権限を与えればよいです。 rpcbindの方ですが、サーバ側でフィルタリング(iptables等)はしていますでしょうか?
hwhshsq

2016/09/07 08:40

>>一般ユーザでファイルを読み書きするのであれば、両方のサーバでuidとgidが同一となるユーザを作成し、そのユーザにnfsサーバ側のディレクトリの権限を与えればよいです。 同じuid,gidを持つユーザーを作成し、対象のファイルをchmod 777とすれば編集することができました。 しかし、touchなどで新しくファイルを作成するには許可がありません。 私が、「そのユーザにnfsサーバ側のディレクトリの権限を与えればよいです。」の理解ができていないのだと思います。。。 >>rpcbindの方ですが、サーバ側でフィルタリング(iptables等)はしていますでしょうか? :INPUT ACCEPT [0:0] -I INPUT -p tcp -m tcp --dport 2049 --syn -j ACCEPT を設定しています。
ynakano

2016/09/07 08:49

「そのユーザにnfsサーバ側のディレクトリの権限を与えればよいです。」ですが、書き込み対象のディレクトリに対してchownなりchmodをする、という意味です。 iptablesですが、2点気になります。 ・2049/udpは開いていないのか? ・2049/tcpですが、"--syn"は不要です。これだとsynパケット「しか」通さないです。
ynakano

2016/09/07 09:02

iptablesについてふと思ったのですが、問題切り分けの為にクライアント、サーバ双方でiptablesを止めたらいかがでしょうか。 それで上手くいくならば問題はnfs周りではなくパケットフィルタにあると言えますよね。
hwhshsq

2016/09/08 01:56

>>「そのユーザにnfsサーバ側のディレクトリの権限を与えればよいです。」ですが、書き込み対象のディレクトリに対してchownなりchmodをする、という意味です。 書き込み対象のディレクトリに対してchmod 757を実行してみましたが、相変わらずtouochで作成することはできませんでした。
hwhshsq

2016/09/08 01:59

1つ上のコメントですが、何度か実行してみたら作成することができました。(編集も) chmodは実行してもすぐに反映されるわけではないんでしょうかね(nfsだから?)
hwhshsq

2016/09/08 02:12

>>iptablesについてふと思ったのですが、問題切り分けの為にクライアント、サーバ双方でiptablesを止めたらいかがでしょうか。 サーバークライアント双方で /etc/rc.d/init.d/iptables stop を実行後、サーバーでshowmountを実行しましたが変わらず clnt_create: RPC: Port mapper failure - Timed out でした。他に問題があるみたいですね。。。
ynakano

2016/09/08 03:53

nfsマウント自体はできている訳ですよね。 その状態でshowmountだけができない、ですか...
ynakano

2016/09/08 03:58

サーバ側の/etc/hostsにクライアントのエントリはありますか?
hwhshsq

2016/09/08 04:22

サーバーの/etc/hostsには、 192.168.xx.xx host1 192.168.yy.yy host2 のように自身とクライアントが記述されています。
ynakano

2016/09/08 04:33

ありがとうございます。 サーバ側での逆引きを疑ったのですが違うみたいですね。 サーバ側でパケットでも取ってみるくらいしか思いつかないですね。 タイムアウトというのが引っかかりますね。
hwhshsq

2016/09/09 01:58

ちょっとこの件に関しては、おいておいてまた他の件で練習を始めました。 よろしければこちらにもお付き合いください。 https://teratail.com/questions/47360
a-syuji

2020/02/02 03:52

質問1ですが、「root_squash」が付いていることが原因ではないでしょうか? NFSサーバ側の公開ディレクトリの権限も確認してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問