jah*_*jah 3 dynamic-linking glibc
Apparmor 强制执行消息已开始出现在 Trisquel 7 机器的系统日志中。受影响的程序以读取模式请求open文件/etc/ld.so.preload,并被 apparmor 策略拒绝。以下是该消息的第一个实例:-
May 8 21:25:54 box kernel: [928193.797140] type=1400 audit(1462739154.627:76): \
apparmor="DENIED" operation="open" profile="/usr/lib/NetworkManager/nm-dhcp-client.action" \
name="/etc/ld.so.preload" pid=13471 comm="nm-dhcp-client." requested_mask="r" \
denied_mask="r" fsuid=0 ouid=0
Run Code Online (Sandbox Code Playgroud)
其他一些受 apparmor 约束的程序被拒绝了相同的请求,包括 cupsd 和 mysqld。
apparmor 配置文件没有改变,这些消息以前从未出现过 - 所以看起来这些(可能还有其他不受约束的)程序突然开始尝试读取(空)文件/etc/ld.so.preload。
我唯一的线索是那天早些时候我第一次编译了mame。在第一条消息之前的某个时间,我运行了一台模拟机器,让它无人看管。主机在我返回后不久就没有响应,我不得不在收到该消息大约 20 分钟后将其重置。
那么这两件事是否相关,我应该从哪里开始寻找这些程序现在正在寻找预加载库的原因?
所有程序都尝试打开/etc/ld.so.preload,此行为已融入 Glibc。但是他们只在它存在时才尝试打开它(Glibc 首先调用access)。
通常/etc/ld.so.preload不存在,所以每个进程只调用access,得到否定的回答并继续前进。这不会从 AppArmor 触发任何内容。
但是如果文件存在,那么进程调用open从它读取。如果文件为空,动态链接不受影响,唯一的影响是非常轻微的性能损失。如果有 AppArmor 规则在某些程序打开文件时触发,那么您会收到这些警告。
我不知道编译 mame 是否最终会创建/etc/ld.so.preload,或者它是否无关。在任何情况下,如果文件为空,只需将其删除。
| 归档时间: |
|
| 查看次数: |
7224 次 |
| 最近记录: |