事实上这是一个插件(APP),也是ownCloud/Nextcloud的一项重要功能:文件访问控制。文件访问控制APP可以提供丰富强大的访问管理功能,从单文件权限到组文件,再到IP地址屏蔽,可以引用访问的时间、文件类型、用户、组等因素。
演示环境:Nextcloud 12 (本来想用ownCloudX,结果发现ownCloud里没这个插件,幸好Docker把ownCloud切换成Nextcloud只需要两行命令+几秒钟)
完成启用后,到管理(在Nextcloud13和ownCloudX中应为“设置”)->文件访问控制即可开始。
[ssbluelist]
text/plain
[ssbluelist]
[infobox]文件管理控制的规则组是对用户的限制,只有当用户符合规则组中所有子规则时,这个用户才会受到限制,[/infobox]
规则的设置都很简单,我这儿展示几个稍复杂些的:
第二个下拉菜单中选择对该规则的动作:是、不是、匹配、不匹配:后面的内容填写文件的MIME类型。
一个完整的子规则如下:
上图中的规则会对所有文件MIME类型为images/png
(也就是png格式的图片,注意文件后缀名不等于MIME类型),那么所有png图片都将被予以限制(参见上文的限制内容)。
“匹配”、“不匹配”指的是对正则表达式的匹配,你可以使用正则表达式进行配置,例如:
上图中的正则表达式/^image/(jpeg|png|bmp)$/i
匹配MIME类型为jpeg、png、bmp的文件,这些格式的文件都将受到控制。
缩小限制范围,比如再加上时间限制:
上面这个规则限制了用户只能在北京时间(Asia/Shanghai)9:00到18:00操作文件,如果将“之间”改为“不在之间”,那么用户在9:00到18:00将无法操作文件。
[infobox]看完这两个例子,你应该意识到:这些规则都是全局的,影响所有文件和所有用户,所以往往需要添加足够多且精确的规则[/infobox]
我们可以利用这些标签对文件进行管理,比如我要对所有带有“MP4”标签的文件进行限制,可以这样写:
效果如下图,已经无法对标记为MP4的文件进行各种操作了:
即使是仅有的“下载”,当你点击它时,会出现这样的页面:
但是这样存在一个巨大的缺陷,即前文所提到的用户可以自行去掉便签,接触对文件的限制。那么这是我们可以用Files automated tagging插件,这个插件可以自动为文件打上标签,并且可以使标签无法被移除。
到应用页面启用这个插件,然后到管理->工作流里找到“文件自动设置标记",,可以看到这个插件的机制的文件访问控制插件一样,是使用规则组进行配置,下面是一个给所有JPEG类型的文件打上“JPG”标签的规则(新标签可以在上方的“协同标签”中添加):
然后在文件访问控制中添加如下规则,就可以实现对特定标签的持续控制: