nfs 共有を構成しており、/etc/exports は次のようになります。
/nfs_anon 192.168.122.0/24(rw,all_squash,anonuid=1111,anongid=1111)
すべてのクライアントでユーザーuid 1111のumaskを設定せずに、クライアントがサーバーのデフォルトのumaskを使用するように強制する方法はありますか?
目的は、クライアントにumask値に関係なく、デフォルトで特定の権限セットを使用してファイルを生成させることです。
答え1
まず、NFSバージョン3または4を使用していますか?バージョン3では、サーバーとクライアントの両方がNFSACL拡張をサポートしていますか?
NFSv3 + NFSACLまたはNFSv4を使用していて、NFSサーバー上の物理ファイルシステムがACLをサポートしている場合は、NFSサーバーで同様の操作を実行できます(必要に応じて権限の調整)。
setfacl -m d:u::rwx,d:g::rwx,d:o::rwx /nfs_anon
共有にすでにサブディレクトリがある場合は、共有の最上位ディレクトリとすべての既存のサブディレクトリにデフォルトのACLを適用できます。
find /nfs_anon -type d -exec setfacl -m d:u::rwx,d:g::rwx,d:o::rwx {} \+
デフォルトマスクACLが共有された最上位ディレクトリに適用されると、そのディレクトリ内に作成されたすべての新しいサブディレクトリは自動的に同じデフォルトマスクACLを持ちます。
第二に、ACLを使用しても、これは新しいデフォルトマスクのみを適用することに注意してください。結果の権限は、ファイルを生成したプログラムが要求した内容によって決まります(通常は通常のファイルの場合は0666、実行可能ファイル/ディレクトリの場合は0777)。
私が知っている限り、x
ACLもプログラムが最初に許可ビットを要求しなかった場合、許可ビットを設定できません。プログラムの元の要求からビットを引く(マスク)しかできません。