如何加载在 systemd 用户空间中运行的服务的 apparmor 配置文件

如何加载在 systemd 用户空间中运行的服务的 apparmor 配置文件

我一直在尝试加载在 systemd 用户实例中运行的服务的 apparmor 配置文件。我有两个服务文件sample.service,用于该进程,另一个sample-profile-loader.service,用于加载其应用程序装甲配置文件usr.bin.Sample。 apparmor 配置文件放置在 /lib/systemd/system 中,进程的服务文件放置在 /usr/lib/systemd/user 中。两项服务均已启用。

[Unit] # sample-profile-loader.service
Before=sample.service
[Service]
Type=oneshot
ExecStart=/use/bin/apparmor-loader.sh 
/etc/apparmor.d/usr.bin.sample
[Install]
Wanted by=multi-user.target

[Unit] # sample.service
Requires=sample-profile-loader.service
After=sample-profile-loader.service
[Service]
Type=simple
ExecStart=/usr/bin/sample
[Install]
WantedBy=multi-user.target

首次启动后,当我检查 aa-status 时,配置文件已加载。但是当我执行 systemctl restart Sample.service --user 时,我收到一条错误消息。 “无法启动sample.service。单元sample-profile-loader.service加载失败。没有这样的文件或目录”

我一直在通过谷歌寻找解决方案。但还没有找到。如果您能给我任何建议,那就太好了。

答案1

Systemd 为单元文件提供此变量AppArmorProfile=,并将其设置为您拥有的配置文件。我不确定该目录..尝试找出如何添加 apparmor 的路径来查找配置文件..

答案2

无需区分用户和系统服务 apparmor 配置文件。它们可以一起放在 /etc/apparmor.d 文件夹中并使用 apparmor_parser.sh 加载到内核中

相关内容