我将“根”分区分为两个:一个包含大多数文件的普通分区,另一个用于可以“增长”的区域。具体来说,这意味着,我有如下符号链接:
/var/log -> /part1/log
/var/cache -> /part1/cache
/var/spool -> /part1/spool
这一直很有效,直到我开始使用 AppArmor,它一直抱怨 cupsd 查看 /part1/log/cups/.. 中的文件之类的事情。
我目前通过为受 AppArmor 保护的每个应用程序添加条目来解决此问题,但这很乏味。
是否有某种方法可以一劳永逸地告诉 AppArmor,如果/var/log/FOO
允许访问,则/part1/log/FOO
也应该允许访问?
答案1
可以按/etc/apparmor.d/tunables/alias
如下方式完成:
# Alias rules can be used to rewrite paths and are done after variable
# resolution. For example, if '/usr' is on removable media:
# alias /usr/ -> /mnt/usr/,
#
# Or if mysql databases are stored in /home:
# alias /var/lib/mysql/ -> /home/mysql/,
/var/log -> /part1/log,
/var/cache -> /part1/cache,
/var/spool -> /part1/spool,
也可以看看:
答案2
无需更改设置的唯一解决方案是编辑所有配置文件以指向新位置。这可以通过模式匹配然后仔细检查来完成。它还可能使升级更加复杂,因为您必须不断应用这些更改。
最简单的解决方法是对这些目录使用绑定安装。
添加以下内容/etc/fstab
应该足以替换符号链接:
/var/log /part1/log none defaults,bind 0 0
/var/cache /part1/cache none defaults,bind 0 0
/var/spool /part1/spool none defaults,bind 0 0
确保这些线位于/part1
安装之后。