オペレーティングシステム:Linux CentOS 7、NFSv4
あるコンピュータで、次の所有するNFS共有グループをエクスポートしました。国家金融サービスグループ2770グループの共同作業権限があります。
groupadd -g 5000 nfsgroup
chown nobody:nfsgroup /home/groupshare
chmod 2770 /home/groupshare
次に、別のコンピュータに同じグループを追加し、それをrootユーザーに割り当てます。その後、マウントされたNFS共有にアクセスしようとしましたが、「許可拒否」エラーが発生しました。
groupadd -g 5000 nfsgroup
usermod -a -G nfsgroup root
ls -l /mnt/groupshare # Permission denied!
注:これを行うには、rootとして再度ログインしようとしてコンピュータを再起動しても、結果は同じでした。権限が拒否されました。
その後、一般アカウント(名前:ユーザー)とアクセスの問題なし
usermod -a -G nfsgroup user
su - user
ls -l /mnt/groupshare # Works as expected, no permission errors
ルートの下の共有にアクセスする唯一の方法は、有効なグループを変更することです(追加する場合でも)。国家金融サービスグループあなたは):
su - root
newgrp nfsgroup
ls -l /mnt/groupshare # No permission errors
私はこの行動が一貫性がなく奇妙だと思います。誰かがなぜこのように動作するのかを説明できますか?
いくつかの点で関連する可能性のある情報は次のとおりです。両方id
(低ユーザーアカウント)、id user
特に同じ出力を返します。グループ=1000(ユーザー)、5000(nfsグループ)、id
および(下根アカウント)作成グループ=0(ルート)id root
予想通り、出力は次のようになります。グループ=0(ルート),5000(nfsグループ)。
答え1
問題の原因を見つけたと思います。 NFSクライアントがNFS共有にアクセスすると、サーバーはアクセスするユーザーのUIDとGIDを確認します。デフォルトでは、NFSサーバーには、共有root_squash
にrootとしてアクセスするNFSクライアントにUID / GIDを割り当てるオプションが有効になっています。無人。
no_root_squash
ファイルのエクスポートにオプションを追加した後、/etc/exports
問題は消えました。
明らかに、NFSサーバーがルートのUID / GIDを「圧縮」すると、補足グループは完全に無視されます(私にとっては間違っているように見えますが、NFSv4標準には他のアイデアがあるかもしれません)。