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
に追加してみました。これは私が自分で作成した他のサービスでは機能しますが、NFSでは機能しません。UMask=002
[Service]
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
---UPD---
私のサーバーがnfs v2-3-4を実行していることを確認しましたが、クライアントはv3を介して接続してそれを上書きできません。 v4が機能するようになったら、問題が解決したかどうかを確認しようとします。
それでは、クリーンな解決策を見つけることをあきらめ、cronタスクを実行して定期的に権限を確認して修正します。
答え1
まず、umaskでやろうとしている作業は機能しません。 umaskはプロセス固有で、重要なプロセスはファイルを生成するプロセスです。 nfsユーザーがNFSクライアントにファイルを生成するとき、NFSサーバー上のnfsユーザーのumask(もしそうなら)は重要ではなく、NFSサーバーサービス自体のumaskには影響しません。
次に、NFS共有にファイルをコピーするときに無効な権限が得られたと述べました。 「cp」コマンドのように文字通りコピーを意味すると仮定すると、これは有効なテストではありません。 cp コマンドには、権限に関してあらゆる種類の特別な動作があります。ほとんどのプログラムとは異なり、単にファイルを作成し、デフォルトの権限をそのままにするのではなく、後で再び権限を解除します。以前に扱っていたところはこんな感じです。
https://serverfault.com/questions/183800/why-does-cp-not-Respect-acls
私はこれらのテスト用のファイルを生成するために "touch"コマンドを使用します。一度試してみると、ACL設定がすでに正しく機能していることがわかります。これはcpコマンドがそれを尊重しないだけです。