グループフォルダ内の第二階層以降のフォルダ内でのみ、ファイルアップロードや削除が行える設定としたいのですが、通常のグループフォルダとアドバンスパーミッションの設定のみでは実現ができません。
このような場合には、グループフォルダ自体を入れ子(階層化)とすることで実現が可能です。
どういうことか順を追って見ていきましょう。
動作は Nextcloud 24.0.3 で確認しています。
まず管理画面のグループフォルダの設定から、第一階層目のグループフォルダを作成します。フォルダ名を「グループフォルダ第一階層」としています。
アクセス権限を付与されたユーザからは、グループフォルダが次のように見えています。
すべての権限(削除権限)が付与されていても、グループフォルダ自体は削除ができません。
第一階層のフォルダ直下に、第二階層となるサブフォルダを作成します。
ユーザには削除権限が付与されているため、サブフォルダの削除が可能です。
ここで、アドバンスパーミッション(詳細な権限の付与)機能を使用して、第一階層のフォルダから削除権限を削除(拒否)します。ここでは、読み込み以外の権限をすべて外しました。
これで利用者から見た場合、第一階層直下のファイルやフォルダの削除ができなくなります。
アドバンスパーミッションの権限は、上位フォルダの権限が継承されるため、第二階層以降のフォルダ内での自由な編集/削除を許可するためには、権限の付与が必要です。
ここではテストユーザに、削除権限を付与しました。
これで第二階層内のサブフォルダやファイルを削除することができるようになりますが、 「第二階層のフォルダ」自体も削除ができてしまうという問題が発生します。
これはファイル自体に削除権限を付与した場合に、そのファイルが削除可能なことと同じ原理で仕様となっています。
ユーザにはグループフォルダ内の第二階層以降のフォルダ内のみ、自由にアップロードをしたり削除したりするようにしたい。これを実現するためにはどうすればいいのか?
少しトリッキーな方法ですが、グループフォルダ自体は削除できないという仕組みを利用して、グループフォルダを入れ子に設定(階層化)することで実現が可能です。
どういうことかというと、次のようになります。
グループフォルダの設定で、フォルダ名を「/」で区切ることでグループフォルダ自体を階層化することが可能です。
ファイル画面では、第一階層のフォルダ配下に、第二階層のグループフォルダが表示されます。
グループフォルダ自体は削除ができませんので、第二階層のグループフォルダ以降のみ編集や削除が可能という状態ができます。
例えば、●●支社というグループフォルダ配下に、各部門のグループフォルダを配置するなどといった設定方法も利用できそうです。
1階層目の●●支社のグループフォルダからは、Write, Share, Delete の権限を外して、フォルダ内の読み込みのみ許可するのがポイントです。
※2階層目の各部門のグループフォルダに、各グループへの必要な権限を割り当てます。
ユーザがアクセスすると、●●支社のグループフォルダ内に、自分のアクセス権限のあるグループフォルダのみが表示されるようになります。