isu*_*sup 8 opensuse apparmor access-control
通常,使用用户的有效 UID 运行的应用程序可以访问存储在用户主目录中的私有文件。如何限制特定应用程序访问某些私有文件,同时仍然允许其他应用程序在 openSUSE 上使用 AppArmor 访问这些文件。
AppArmor 是强制访问控制(MAC) Linux 安全模块(LSM),由 Ubuntu 和 SUSE Linux 等使用。AppArmor 访问控制规则在 AppArmor 配置文件中定义/etc/apparmor.d/。配置文件只是文本文件,其中包含有关允许配置文件所属的应用程序访问的资源的信息。
通常,在设计配置文件时,会在 AppArmor 设置为complain模式的情况下运行应用程序,在该模式下允许访问控制违规,但会被记录。使用日志,可以迭代地优化配置文件。配置文件完成后,AppArmor 可以切换到enforce模式,在该模式下,配置文件中定义的访问控制规则被强制执行,并记录任何违规尝试。
AppArmor 配置文件的轮廓如下所示:
#include <tunables/global>
/path/to/application {
[...]
}
Run Code Online (Sandbox Code Playgroud)
这些#include指令允许将与多个应用程序有关的语句放在一个公共文件中,然后包含在每个相关应用程序的配置文件中。
<tunables/global>对应的文件/etc/apparmor.d/tunables/global依次包含每个配置文件都应该可用的定义。这些附加包含之一是/etc/apparmor/tunables/home,它与@{HOME}/** rw(或类似指令)一起授予应用程序访问用户主目录的权限。
如果是这种情况,为了拒绝访问用户主目录中的某些文件,需要添加配置文件规则以明确拒绝对文件的访问。这可以使用deny指令来完成,例如在以下示例中:
#include <tunables/global>
/path/to/application {
[...]
# Allow directory listings (i.e. 'r' on directories).
@{HOME}/ r
# This is needed for saving files in the home directory.
@{HOME}/** rw
# Revoke access to specific file
deny /home/user/file rwa
}
Run Code Online (Sandbox Code Playgroud)
将拒绝读取 ( r)、写入 ( w) 和追加 ( a) 访问 /home/user/file。
另一种方法是将您想要保护的路径添加到/etc/apparmor.d/abstractions/private-filesor/etc/apparmor.d/abstractions/private-files-strict并确保每个受影响的应用程序的 AppArmor 配置文件包含<abstractions/private-files>或<abstraction/private-files-strict>。这些文件应该已经包含公共文件的规则,为了隐私或其他安全考虑,这些文件应该受到保护。
有关访问模式详细信息的完整列表以及有关 AppArmor 安全配置文件的更多信息,请参阅apparmor.d 手册页和Novell AppArmor 管理指南 (pdf)。
[回应编辑后的更具体的问题。]
要限制 AppArmor 中程序 foo 的访问,请使用以下条目创建一个配置文件
/usr/bin/foo {
/etc/foo/* r,
}
Run Code Online (Sandbox Code Playgroud)
允许读取 /etc/foo 中的文件
/etc/**
Run Code Online (Sandbox Code Playgroud)
将允许读取访问 /etc 中的所有子目录
相反你可以使用
deny /private/path rwa
Run Code Online (Sandbox Code Playgroud)
限制对私有路径的访问。
| 归档时间: |
|
| 查看次数: |
5418 次 |
| 最近记录: |