Joj*_*GME 9 security systemd namespace
systemd 中有许多可用于 Units(如服务)的选项。其中三个被称为ReadWriteDirectories,ReadOnlyDirectories和InaccessibleDirectories。我在虚拟机上使用 Debian 8.5。在某些(较新?)版本的 systemd 中,它们被称为ReadWritePaths,ReadOnlyPaths和InaccessiblePaths. 我可以使用此选项将应该可以访问的目录列入白名单吗?
我有一个已知只能访问某些目录的应用程序。我想限制对这个目录的访问。但是如果我ReadWritePaths用来指定这个目录,它似乎没有任何影响。手册页说
ReadWriteDirectories= 中列出的目录可以从命名空间内访问,其访问权限与从外部相同。
但是此选项中未指定的目录似乎可以以相同的方式访问。如何拒绝访问所有未指定的内容?还是取决于我的系统它不起作用?有人可能会说,除了InaccessibleDirectories=/较新版本的联机帮助页之外的所有内容都可以用于将其他所有内容列入黑名单,其中调用了该选项InaccessiblePaths,说
InaccessiblePaths= 中列出的条目将无法被命名空间内的进程访问,并且可能不计入任何其他挂载点,包括由 ReadWritePaths= 或 ReadOnlyPaths= 指定的那些。
那么,是否有可能使用ReadWriteDirectories和ReadOnlyDirectories设置目录白名单?如果不可能,为什么ReadWriteDirectories存在而它似乎什么都不做?
根据最近的文档(链接 1、链接 2),自 2018 年以来:
InaccessiblePaths=命名空间内的进程以及文件系统层次结构中位于其下方的所有内容都将无法访问 中列出的路径。这可能比预期的限制更多,因为不可能在其中嵌套ReadWritePaths=、ReadOnlyPaths=、BindPaths=或。BindReadOnlyPaths=有关更灵活的选项,请参阅TemporaryFileSystem=。
[
TemporaryFileSystem=] 可用于隐藏与单元调用的进程无关的文件或目录,而必要的文件或目录仍然可以通过与BindPaths=或组合来访问BindReadOnlyPaths=。
因此可以实现所需的行为:
[Service]
TemporaryFileSystem=/
BindPaths=/var/readwrite
BindReadOnlyPaths=/var/readonly
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5382 次 |
| 最近记录: |