我想将对硬盘上的单个目录(日志文件)的访问限制为几个进程(例如,单个进程的日志文件)。所有进程都在同一用户下运行,因此文件系统访问限制不是一个选项。
我有哪些选择?应用装甲?SELinux?
我不想限制单个进程,我想限制所有进程访问目录,除了少数选定的进程。似乎 AppArmor 无法做到这一点。
我想将对硬盘上的单个目录(日志文件)的访问限制为几个进程(例如,单个进程的日志文件)。所有进程都在同一用户下运行,因此文件系统访问限制不是一个选项。
我有哪些选择?应用装甲?SELinux?
我不想限制单个进程,我想限制所有进程访问目录,除了少数选定的进程。似乎 AppArmor 无法做到这一点。
好处——是的,你可以用 SELinux 做到这一点。缺点——你必须了解 SELinux。:)
您可以在不同的 SELinux 域中执行这些进程。例如,让我们称两个进程为“privapp”和“unprivapp”——privapp 能够访问 /var/lib/app/log,而 unprivapp 不能访问 /var/lib/app/log,尽管以同一用户身份运行。
因此,您创建了两个域privapp_t
并将unprivapp_t
可执行文件标记为privapp_exec_t
和unprivapp_exec_t
。然后将 /var/lib/app/log 标记为var_lib_privapp_rw_t
并指示只有运行 as 的进程privapp_t
才能访问它。
这是容易的部分——困难的部分是用政策语言表达上述内容,众所周知,这种语言会让成年男女流泪。:)
我认为您无法仅使用一个用户来完成此操作。我能想到的最接近你所说的是Android的方式,这只是每个进程在它自己的用户下运行,因此它只能访问它自己的文件和那些允许它的进程的文件使用权。在我所知道的任何系统中,进程本身都不是强身份。
我建议查看远程系统日志。这样您就可以确保日志不会被删除或篡改。