有人可以概述一下 AppArmor 关于绑定安装文件夹的语义吗?
据我了解,阅读文档后(1,2,3,4) - 是的,我正在使用带有 3.8 内核的 Ubuntu 12.04 - 策略“附加到路径”(即调用时成为进程的程序的路径)。
因此,假设我有该文件夹/home/joe/Public
并且具有/var/www/html/joe
绑定安装到它的位置。
我是否必须创建一个涵盖原始资料的个人资料和绑定安装的,其中之一(哪个)或者还有其他我必须做或考虑的事情吗?
假设有一个程序/var/www/html/joe/foo
,当配置文件/规则仅提及时,限制是否仍然有效/var/www/html/joe/foo
,但 Joe 决定运行它/home/joe/Public/foo
?
链接和其他指针也将受到赞赏。
答案1
我没有明确的参考资料,也没有直接的经验,所以这不是一个权威的答案。
AppArmor 基于路径(我相信在解析符号链接之后)。路径不关心挂载点。 AppArmor 规则/var/www/html/joe/foo
适用于通过该路径访问的文件。该路径/home/joe/Public/foo
可能碰巧指定相同的文件,但由于它是不同的路径,因此 AppArmor 规则/var/www/html/joe/foo
不适用。
您必须定义涵盖所有绑定安装位置的规则。但是,您不必重复您的规则。您可以告诉 AppArmor 一个位置是一个别名为了另一个。
alias /home/joe/Public -> /var/www/html/joe
我认为您不能使用通配符将一个别名自动应用于所有用户。为此,您可以使用变量来表达您的规则。
@{WWW_DIRS} = /home/*/Public /var/www/html/*
…
@{WWW_DIRS}/foo …