有没有办法通过systemd控制文件系统的访问?

所以我深入了解了systemd的复杂性,并且能够用cpu,io和内存等cgroups来度量资源。

还有一种方法可以控制进程可以使用systemd访问的目录吗? 例如, /usr/bin通常标记为o+rX ,并且我希望Web服务器进程被locking在该目录之外。 已经有相当多的软件漏洞可以从磁盘读取任意文件,这将增强安全性的分层方法。

我相信这可以用一些真正的文件系统权限来完成,但是想知道是否有更好的方法。 谢谢服务器故障!

实际上您有许多选项,您可以在单位文件中为您的服务定义这些选项。 他们所有的工作原理都是一样的,通过使用命名空间systemd为服务设置绑定挂载。 文件系统的某些部分是以只读方式挂载的,或者通过挂载一个空目录,使其完全不可见/不可访问。

PrivateTmp可以说是最常见的。
启用PrivateTmp为已执行的进程设置一个新的文件系统名称空间,并在其中挂载不在名称空间之外的进程共享的private /tmp/var/tmp目录。

ProtectSystem
如果为true ,则将本机调用的进程的/usr/boot目录挂载为只读。
如果设置为full ,那么/etc目录也是只读的。 如果设置为“strict”,则整个文件系统层次结构将以只读方式挂载,但API文件系统子树/ dev,/ proc和/ sys除外

ProtectHome
采用布尔参数或“只读”。 如果为true ,那么目录/home/root/run/user会被本机调用的进程设置为不可访问和空的。 如果设置为“ read-only ”,则三个目录将变为read-only

ProtectKernelTunables
如果为true,则可以通过/proc/sys/sys/proc/sysrq-trigger/proc/latency_stats/proc/acpi/proc/timer_stats/proc/fs/proc/irq访问内核variables-只要。

ReadOnlyPaths
ReadOnlyPaths=中列出的path只能读取,即使通常的文件访问控制允许,写入也将被拒绝。

InaccessiblePaths
InaccessiblePaths=列出的path将无法访问命名空间内的进程(以及文件系统层次结构中的所有下面的进程)。

尽pipe可能有更多的select。

更多层次的访问策略可能需要SELinux,并且对其进行非常透彻的理解,以及您可能需要熟练掌握多级安全策略。