如何防止一组文件夹被特定进程写入?

如何防止一组文件夹被特定进程写入?

我想要一种方法,其中一组文件夹不允许对特定进程进行写访问。例如,我希望有一种方法不允许 YUM/RPM 写入 /usr/bin

答案1

你可以chroot将软件转化为绑定挂载设置这些目录以只读方式安装。

mkdir /foo
mount --bind / /foo
mount --rbind /dev /foo/dev
mount --bind /proc /foo/proc
mount --bind /run /foo/run
mount -t tmpfs tmpfs /foo/tmp
mount --bind /sys /foo/sys
mount --bind /usr/bin /foo/usr/bin
mount -o remount,ro /foo/usr/bin
chroot /foo rpm …

请注意,以 root 身份运行的恶意进程可以逃脱 chroot,因此这不是安全限制,只是确保非恶意进程不会在不应该写入的地方进行写入的一种方法。

另一种方法是设置SELinux规则。这些甚至会限制以 root 身份运行的进程,因此如果设置正确(这很重要,并且需要的不仅仅是文件访问阻止),它可以是安全的限制。

如果该进程不是以 root 身份运行,只需确保该目录的权限不允许用户在那里写入即可。您可以使用前交叉韧带排除特定用户,例如

setfacl -m user:alice:0 /some/dir

使/some/dir用户无法访问alice,或者

setfacl -R -m user:alice:rX /some/dir

使其及其下的文件可读但不可写。

相关内容