当我启动时firejail
,我可以看到完整的主目录。当我启动时firejail --whitelist=~/something
,我只能看到something
我的主目录。现在我想限制对系统的更多访问。例如,我可以添加--blacklist=/media
,它按预期工作。
但是默认行为如何确定/home/OTHERUSER
除/home/*
白名单文件外的文件是否被隐藏?我没有看到匹配的规则/etc/firejail/*
。
是否允许子目录?例如,--blacklist=/media --whitelist=/media/data
即使手册页告诉我们,白名单会覆盖其他选项(如),也无法按预期工作--read-only
。
这些规则是否硬编码在二进制文件中?如果不是,哪条规则负责这些事情?
我想要的一个例子。基本规则:
- 家里空无一人,除了个人资料中列出的东西
- 黑名单
/media/data
- 允许符号链接
~/apps ->/media/data/apps
只读。 - 允许
/media/data/apps
(如有必要)只读。
1、2 可以工作,3 只与 4 一起工作(可能还可以),但是覆盖禁止目录的子目录的读访问权限不起作用。
它应该可以工作,这似乎有点违反直觉,但是在文件系统层mkdir -p foo/bar;chmod 111 foo;ls foo/bar/
(这111
意味着,foo 没有读取(目录列表)权限,但只有可执行位(进入子目录)有效,即使ls foo/
失败也是如此。
扩展方案将禁止除白名单之外的所有操作(配置文件 + /usr、/bin、/lib 等)。另一件似乎没有 root 就不可能的事情(然后应用程序本身以 root 身份运行)是将 /etc/passwd 替换为不包含用户的文件,这在监狱中不应该被知道。/etc
包含大量可读数据,应该对不受信任的应用程序隐藏。
但可能扩展的场景确实会证明完整的 chroot + userspace-lxc 容器是合理的。