
NFSv4マウントを使用してファイルを表示させるのに問題があります
Server: Ubuntu 20.04, 192.168.1.1
Client: Ubuntu 18.04, 192.168.1.2
サーバー上にはフォルダとファイルがあります
/home/server/files/myfile.pdf
(ユーザー アカウント名として「server」が使用されていることに注意してください)。元のファイルの完全な所有権と権限のチェーンは次のとおりです。
drwxr-xr-x root:root /
drwxr-xr-x root:root /home/
drwxr-xr-x server:server /home/server/
drwxrwxr-x server:nfsgroup /home/server/files/
-rwxrwxrwx server:nfsgroup /home/server/files/myfile.pdf
ここで、私が作成したユーティリティ 'user':'group' の例を示します。
nfsuser uid=127
nfsgroup gid=134
「nfsuser」と「server」は両方とも「nfsgroup」グループに属しています。
サーバーでは、ディレクトリをに/files/
バインドマウントし、エントリを作成します。/srv/nfs4/files/
/etc/fstab
/home/server/files /srv/nfs4/files none bind 0 0
これは成功し、/srv/nfs4/files/myfile.pdf
ファイルは次のようにはっきりと確認できます。
-rwxrwxrwx server:nfsgroup /srv/nfs4/files/myfile.pdf
マウントされ提供されたファイルの完全な所有権と権限のチェーンは次のとおりです。
drwxr-xr-x root:root /
drwxr-xr-x root:root /srv/
drwxrwxr-x server:nfsgroup /srv/nfs4/
drwxrwxr-x server:nfsgroup /srv/nfs4/files/
-rwxrwxrwx server:nfsgroup /srv/nfs4/files/myfile.pdf
/srv/nfs4/
ここで、バインドマウントされた を含むディレクトリ全体をクライアントにエクスポートしますfiles/
。サーバーの に次のエントリがあります/etc/exports
:
/srv/nfs4 192.168.1.2(rw,sync,fsid=0,root_squash,all_squash,anonuid=127,anongid=134,no_subtree_check)
特に、このall_squash,anonuid=127,anongid=134
設定グループにより、クライアント ユーザー「client」が権限に関して「nfsgroup」内で「nfsuser」として認識されることに注意してください。
これを を使用してエクスポートした後、コマンド を使用してクライアントの$ sudo exportfs -ra
ルート レベルのディレクトリにマウントします。/nsffiles/
$ sudo mount -t nfs 192.168.1.1:/srv/nfs4 /nsffiles
その結果、私は見ることができるクライアント上のエクスポートされたfiles/
ディレクトリ。ただし、その内容は表示されません。/nsffiles/
$ ls -Alhd /nsffiles/
drwxrwxr-x 8 client 134 4.0K Nov 14 20:37 /nsffiles/
$ ls -Alhd /nsffiles/files/
drwxr-xr-x 2 root root 4.0K Nov 14 20:36 /nsffiles/files/
$ ls -Alh /nsffiles/files/
total 0
NFS クライアントがディレクトリをまったく認識できないということは、files/
NFS サービスまたはローカル ネットワークに根本的な問題がないことを示しています。ファイアウォールの問題はなく、追加のパッケージをインストールする必要はないはずです。また、以前は NFS マウントがわずかに異なるフォルダー構造 (files/
たとえば、ホーム以外のディレクトリ) で完全に動作していたため、その点では基本的な問題はないことがわかっています。
今のところ動作しない原因として最も可能性が高いのは、以前の設定と現在の設定の間の所有権/権限の微妙な変更だと思います。特に、マウントされたディレクトリは
server side: `/srv/nfs4/` drwxrwxr-x server:nfsgroup
client side: `/nsffiles/` drwxrwxr-x client:134
含まれるディレクトリは
server side: `/srv/nfs4/files/` drwxrwxr-x server:nfsgroup
client side: `/nsffiles/files/` drwxr-xr-x root:root
つまり、マウントされたディレクトリの場合、権限は に変換されますがserver:nfsgroup -> client:134
、これは予想どおりです。ただし、含まれるディレクトリの権限は に変換されますserver:nfsgroup -> root:root
。なぜroot:root
ではなく になるのでしょうかclient:134
?
この ServerFault質問似ているように聞こえますが、これは Windows に関することであり、唯一の答えが当てはまるかどうかはわかりません。
この Unix.SE質問Windows/Linux セットアップの NFS ファイル権限に関するものです。そこから得られる情報はすべて、私がすでに知っていて、対処済みだと思っているものです。
自分が何について話しているのかわかっている場合のみ、返信してください。どうしても推測を投稿したい場合は、推測であることを明記してください。または、読者が違いを判断できる十分な情報を提供してください。