在systemd中,有许多可用于Units(如服务)的选项。他们三人被称为ReadWriteDirectories
,ReadOnlyDirectories
和InaccessibleDirectories
。我在虚拟机上使用Debian 8.5。在systemd一些(更新?)的版本,他们被称为ReadWritePaths
,ReadOnlyPaths
和InaccessiblePaths
。我可以使用此选项将目录白名单,哪些目录应该可以访问?
我有一个已知只能访问某些目录的应用程序。我想限制对该目录的访问。但是,如果我ReadWritePaths
用来指定此目录,它似乎没有任何作用。手册页上说
可从名称空间内以与外部相同的访问权限访问ReadWriteDirectories =中列出的目录。
但是,该选项中未指定的目录似乎可以通过相同的方式访问。如何拒绝访问未指定的所有内容?还是不起作用取决于我的系统?有人说,除了InaccessibleDirectories=/
新版本的联机帮助页(该选项称为)外InaccessiblePaths
,可能有可能将其他所有内容都列入黑名单。
InaccessiblePaths =中列出的条目将使名称空间内的进程无法访问,并且可能不计入任何其他装入点,包括由ReadWritePaths =或ReadOnlyPaths =指定的装入点。
那么,是否有可能使用ReadWriteDirectories
和ReadOnlyDirectories
设置目录白名单?如果不可能的话,为什么ReadWriteDirectories
存在sinde却似乎无能为力?
InaccessiblePaths=
命名空间中的进程以及文件系统层次结构中其下的所有内容将无法访问其中列出的路径。这可能比期望的更限制性的,因为它不是可以嵌套ReadWritePaths=
,ReadOnlyPaths=
,BindPaths=
,或BindReadOnlyPaths=
在其内部。有关更灵活的选项,请参见TemporaryFileSystem=
。
[
TemporaryFileSystem=
]对于隐藏与单元调用的进程无关的文件或目录很有用,而必要的文件或目录仍可以通过与BindPaths=
或组合来访问BindReadOnlyPaths=
。
因此,可以实现所需的行为:
[Service]
TemporaryFileSystem=/
BindPaths=/var/readwrite
BindReadOnlyPaths=/var/readonly
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句