web-dev-qa-db-ja.com

NFS-複数のサブディレクトリ-予想どおり1つの押しつぶしのみ

複数の共有をマウントすると、予期しない動作が発生します。

NFSサーバー

$ -> cd /mnt/raid/nas && ls -lZa
drwxrwxr-x. nas        filer      unconfined_u:object_r:file_t:s0  file
drwxrwxr-x. nas        filer      unconfined_u:object_r:file_t:s0  repo

$ -> cat /etc/exports
/mnt/raid/nas                   10.1.0.0/18(rw,fsid=0,sync)
/mnt/raid/nas/repo              10.1.0.0/18(rw,all_squash,sync,no_subtree_check,anonuid=501,anongid=503)
/mnt/raid/nas/file/perm         10.1.0.0/18(rw,all_squash,sync,no_subtree_check,anonuid=501,anongid=503)

$ -> id nas && id filer
uid=501(nas) gid=501(nas) groups=501(nas)
uid=502(filer) gid=503(filer) groups=503(filer)

NFSクライアント

$ -> id nas && id filer
uid=501(nas) gid=501(nas) groups=501(nas)
uid=502(filer) gid=503(filer) groups=503(filer)

$ -> cd /mnt/nas && ls -lZa
drwxrwxr-x. nas        filer      unconfined_u:object_r:mnt_t:s0   repo
drwxrwxr-x. nas        filer      unconfined_u:object_r:mnt_t:s0   store

$ -> Sudo mount -t nfs4 nas-1:/repo /mnt/nas/repo
$ -> Sudo mount -t nfs4 nas-1:/file/perm /mnt/nas/store/file/perm/

$ -> df -h
nas-1:/repo
                  550G  240G  283G  46% /mnt/nas/repo
nas-1:/file/perm
                  550G  240G  283G  46% /mnt/nas/store/file/perm

しかし、それぞれにテストファイルを書き込むと、perm /だけがユーザーを正しく押しつぶします。

$ -> touch /mnt/nas/repo/imagemagick/test_$$.txt
$ -> ls /mnt/nas/repo/imagemagick
-rw-rw-r--.  1 mpurcell mpurcell    0 Apr  5 20:31 test_24571.txt

$ -> touch /mnt/nas/store/file/perm/test_$$.txt
$ -> ls /mnt/nas/store/file/perm/
-rw-rw-r--. 1 nas filer    0 Apr  5 20:32 test_24571.txt

両方のボックスでselinuxを無効にしてみましたが、それも機能しませんでした。

一方のマウントがユーザー/グループを正しく押しつぶし、もう一方のマウントが正しく押しつぶさないのはなぜですか?

---更新---

NFSサーバーでNFSマウントをバインドする必要がありますか?/etc/fstabファイルに奇妙なエントリがあり、共有ディレクトリの1つが(バインドを使用して)マウントされていて、それが機能していました。 NFSサーバーの/ etc/fstabからエントリを削除し、すべてを再マウントすると、NFSクライアントで一度機能していたマウントが機能しなくなりました。

2
Mike Purcell

Ughはついにそれを機能させ、all_squash機能をハックするために次のことをしなければなりませんでした。私はしばらく前にそれをしました、そしてなぜそれがしなければならなかったのか覚えていません、しかしそれなしでは私はpermsをきちんと押しつぶすことができませんでした。

$ -> ls /mnt/raid/nas
drwxrwxr-x. 2  nas  filer  repo
drwxrwxr-x. 3  nas  filer  repo_all_squash_hack

$ -> ls /mnt/raid/nas/file
drwxrwxr-x. 2  nas  filer  perm
drwxrwxr-x. 3  nas  filer  perm_all_squash_hack

次に、/ etc/fstabで:

/mnt/raid/nas/file/perm_all_squash_hack /mnt/raid/nas/file/perm none    bind    0 0
/mnt/raid/nas/repo_all_squash_hack    /mnt/raid/nas/repo none    bind    0 0

これで、すべてが期待どおりに増加します。また、次の方法で確認されます。

$ -> cat /proc/fs/nfs/exports
/mnt/raid/nas   10.1.0.0/18(rw,root_squash,sync,wdelay,no_subtree_check,fsid=0,uuid=d962b590:d8986203:00000000:00000000,sec=1)
/mnt/raid/nas/repo  10.1.0.0/18(rw,root_squash,all_squash,sync,wdelay,no_subtree_check,anonuid=501,anongid=503,uuid=d962b590:d8986203:00000000:00000000,sec=1)
/mnt/raid/nas/file/perm 10.1.0.0/18(rw,root_squash,all_squash,sync,wdelay,no_subtree_check,anonuid=501,anongid=503,uuid=d962b590:d8986203:00000000:00000000,sec=1)
0
Mike Purcell