Linux

NFS - 多個子目錄 - 只有一個按預期擠壓

  • April 6, 2016

安裝多個共享時出現意外行為。

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 文件中有一個奇怪的條目,其中一個共享目錄正在掛載(使用綁定),而那個目錄正在工作。我從 NFS 伺服器上的 /etc/fstab 中刪除了該條目,重新安裝了所有內容,現在 NFS 客戶端上曾經工作的安裝不再工作。

呃終於讓它工作了,必須執行以下操作才能破解 all_squash 功能。我不久前做過,不記得為什麼必須這樣做,但沒有它我就無法正確地燙髮。

$ -> 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)

引用自:https://serverfault.com/questions/768391