NFS セットアップで Ubuntu 18.04 を実行しているサーバーがあります。その共有にファイルを配置/操作するサービスがいくつかあり、他のクライアントもネットワーク経由でアクセスしています。NFS サーバーで、すべての新しいファイル/フォルダーの既定のアクセス許可を 775 に設定したいと考えています。
フォルダーにフラグを設定してs
、新しく作成されたすべてのファイルとフォルダーが同じグループを継承するようにしました。そのため、そのグループのすべてのユーザーは、そのフォルダーでファイルを作成および変更できます。ただし、NFS にそれを強制することはできません。644 の新しいファイルと 2755 のフォルダーのみが作成されました。
これが私の/etc/exports/
/srv/nfs 192.168.11.0/24(ro,fsid=0,no_subtree_check,)
/srv/nfs/lpt-2tb 192.168.1.0/24(rw,sync,all_squash,no_subtree_check,insecure,anonuid=1002,anongid=1002)
1002はユーザーのIDですnfs
。
umask と acl を試しましたが、どちらも効果がありませんでした。
NFS ユーザーの homedir を作成し、umask 002
その中に配置しました~/.profile
。
共有フォルダにACLを設定してみました
/srv/nfs/lpt-2tb$ sudo setfacl -d --set u::rwx,g::rwx,o::r-x .
/srv/nfs/lpt-2tb$ sudo setfacl -R -m u::rwx,g::rwx .
/srv/nfs/lpt-2tb$ sudo getfacl .
# file: .
# owner: nfs
# group: nfs
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
にある nfs-server 設定を変更し/lib/systemd/system/nfs-server.service
、セクションUMask=002
の下に追加してみました[Service]
。これは私が自分で作成した他のいくつかのサービスでは機能しましたが、NFS では機能しませんでした。
NFSサービスを再起動し、すべての変更後に再起動しましたが、ラップトップから共有にファイルをコピーすると、644の権限が付与されます。
drwxr-sr-x+ 2 nfs nfs 4096 Apr 5 20:34 acl2
-rw-r--r-- 1 nfs nfs 434506 Mar 7 21:31 acl_test.png
- -編集 - -
ファイルとフォルダのACL出力は次のとおりです。
/srv/nfs/lpt-2tb$ sudo getfacl acl_test.png
# file: acl_test.png
# owner: nfs_share
# group: kodi
user::rw-
group::r--
other::r--
/srv/nfs/lpt-2tb$ sudo getfacl acl2
# file: acl2
# owner: nfs_share
# group: kodi
# flags: -s-
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
---追記---
サーバーが nfs v2-3-4 を実行していることを確認しましたが、クライアントは v3 経由で接続しており、それを上書きできません。動作するようになったら、v4 で修正されるかどうか確認してみます。
今のところ、クリーンな解決策を見つけることはあきらめ、定期的に権限をチェックして修正する cron ジョブを実行することにします。
答え1
まず、umask で試していることは機能しません。umask はプロセスごとのものであり、問題となるのはファイルを作成するプロセスです。NFS サーバー上の nfs ユーザーの umask (それが目的の場合) は、NFS クライアント上の nfs ユーザーによってファイルが作成されているときには問題にはなりません。また、NFS サーバー サービス自体の umask はまったく影響しません。
次に、NFS 共有にファイルをコピーするときに間違った権限が付与されると述べています。文字通り「cp」コマンドのようにコピーを意味していると仮定すると、これは有効なテストではありません。cp コマンドは、権限に関してさまざまな特別な動作をします。ほとんどのプログラムとは異なり、単にファイルを作成してデフォルトの権限をそのままにするのではなく、実際に後で戻って権限をいじります。これが過去に議論された 1 つの場所です。
https://serverfault.com/questions/183800/why-does-cp-not-respect-acls
私は、このようなテスト用のファイルを作成するために「touch」コマンドを使用します。試してみると、ACL 設定が既に正常に動作していることが分かるでしょう。cp コマンドが考慮していないだけです。