![如何禁用 dmesg 中无用的“审核成功”日志条目](https://linux22.com/image/76936/%E5%A6%82%E4%BD%95%E7%A6%81%E7%94%A8%20dmesg%20%E4%B8%AD%E6%97%A0%E7%94%A8%E7%9A%84%E2%80%9C%E5%AE%A1%E6%A0%B8%E6%88%90%E5%8A%9F%E2%80%9D%E6%97%A5%E5%BF%97%E6%9D%A1%E7%9B%AE.png)
简短版本:如何在 Fedora 系统上禁用审核消息 (dmesg)?
Fedora 系统不断在 dmesg 中记录“audit: success”消息 - 以如此极端的方式,dmesg 已变得不可用,因为它被这些消息填满(dmesg | grep -v audit
为空)。这些消息完全没有用,因为它们显然想通知用户某些日常内部流程已成功(在调试某些内容时可能会感兴趣,但在本例中它只是噪音)。
Ctrl即使命令行界面(当使用+ Alt+切换到非 X tty 时F2)也变得无法使用,因为它总是充斥着这些审核消息,无法读取用户实际运行的命令的输出。例如,输入用户名(登录)后,会喷出一条审核消息(显然是告诉用户某些内容已成功格式化/打印):
审核:类型= 1131审核(1446913801.945:10129):pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg ='unit = fprintd comm =“systemd”exe =“/usr/lib/systemd/systemd”主机名=?地址=?终端=?资源=成功'
看起来大多数这些消息都表示“成功”,但是也有许多审核消息不包含此关键字。运行 Chromium 会触发数百个这样的事件:
审核:类型= 1326审核(1446932349.568:10307):auid = 500 uid = 500 gid = 500 ses = 2 pid = 1593 comm = 1593 comm =“chrome”exe =“/usr/lib64/chromium/chrome”sig = 0 arch = c000003e系统调用=273 兼容=0 ip=0x7f9a1d0a34f4 代码=0x50000
其他消息包括:
审核:类型= 1131审核(1446934361.948:10327):pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg ='unit = NetworkManager-dispatcher comm =“systemd”exe =“/usr/lib/systemd/systemd”主机名=?地址=?终端=?资源=成功'
审核:类型= 1103审核(1446926401.821:10253):pid = 28148 uid = 0 auid = 4294967295 ses = 4294967295 msg ='op = PAM:setcred grantors = p am_env,pam_unix acct =“用户”exe =“/ usr / sbin /crond" 主机名=?地址=?终端=cron res=成功'
一般来说,最近的大多数审核消息(在撰写本文时)都包含关键字“网络管理器“ 或者 ”铬合金”。
如何才能完全禁用这些消息呢?
补充要点:
- 如果有人可能会想“您应该阅读和分析这些审核消息,而不是禁用它们,它们可能很重要”,不,它们并不重要,它们几乎完全是“成功”消息。不需要告诉任何人一些应该有效的东西实际上确实有效。然而,如果记录了一条真正重要的消息,那么在数千条无关紧要的消息的风暴中,它永远不会被注意到。无论如何,这个特定的系统不需要审计日志记录(无论如何它都在受控环境中运行)。
- 显然,该系统上的某些配置一定非常错误。然而,它曾经是 Fedora 的默认安装,每当新版本发布时都会进行升级。也许这只是一个需要更改的简单设置,但由于没有手动更改系统配置(故意),因此 stackexchange.com 的问题有望帮助其他碰巧使系统处于相同状态的人。
- 现在是 Fedora 22 系统,运行 Linux 4.0.6 (systemd 219)。
- 它是标准的 Fedora 桌面安装,当前运行 KDE。
- SELinux 已禁用(/etc/selinux/config 设置为“disabled”)。
更新:升级到Fedora 23(内核4.2.5,systemd 222)后,审核消息比以前少了。
答案1
首先,在 Fedora 上,auditd 和auditctl 都来自同一个包(简单地命名为audit)。所以如果你没有auditctl,那就是其他地方出了问题。尝试这个:
rpm -ql audit |grep ctl
如果这没有给你带来任何结果,那么你根本就没有安装审计包。
其次,您提到的 grub.cfg 文件中的第一个“人类”语言行在我的系统上显示“请勿编辑”。这是一个线索,表明对文件的任何手动更改都可能会丢失。
在 fedora/redhat 系统上编辑 grub 配置的正确位置是您特别建议的不需要更改的文件 (/etc/default/grub)。实际上,这是进行所提议的更改并在内核升级中幸存的唯一“安全”方法。这是因为它在内核升级期间用作源配置的一部分,以重新生成工作 grub.cfg。查找 grub2-mkconfig 命令(及其朋友)。详细信息在这里:https://fedoraproject.org/wiki/GRUB_2
你的回答没有错,但我觉得有点混乱。我讨厌 grub 命令行,恕我直言,任何可能错过在内核命令行上添加空白字符的人可能都不会感谢任何人走上这条路。尽管如此,有些人还是喜欢用我所知道的艰苦的方式来学习。
下面的所有命令都需要以 root 身份运行(这本身就是一件危险的事情)。
对于正在运行的系统:
auditctl -e 0
如果找不到auditctl,请检查您的路径并考虑:
dnf install audit
这至少应该减少(如果不是禁用)消息,直到您可以重新启动。
要在重新引导后继续存在,请编辑 /etc/default/grub 并更改 GRUB_CMDLINE_LINUX 行以将“audit=0”添加到末尾,然后使用 grub2-mkconfig 重新生成 grub.cfg。最后一步还在您的更改和正在运行的系统之间设置了一层验证。
答案2
您可以使用以下命令快速暂时禁用审核
sudo auditctl -e 0
并暂时删除所有规则
sudo auditctl -D
对于将来的引导,您可以尝试禁用其启动
sudo systemctl disable auditd
答案3
系统运行时没有可以禁用的auditd服务,但事实证明添加启动选项audit=0
似乎会禁用所有这些消息。即使在没有运行 X 的命令行上,系统也可以再次使用。
可以临时设置此选项(重新启动后更改将不会保留):
- 当 Grub 启动菜单出现时(打开电源后),e点击e修改启动参数。这将显示一个巨大的文本框。
- 向下滚动到以“linux”开头的行。按End键将光标移动到行尾。
- 输入一个空格字符,以免破坏最后一个选项,然后追加
audit=0
。例如... LANG=en_US.UTF-8 audit=0
(...UTF-8audit=0
显然不是)。 - 小心不要改变任何其他东西。如果您不小心修改了其他选项,请修复它或重新启动并重新开始。
- 点击F10启动系统。
当然,这个改变只有在系统运行时才会生效。重新启动后,审核洪水将再次出现。要使此更改永久生效,必须永久更改启动配置。在 Fedora 上,简单修改就足够了,/boot/grub2/grub.cfg
因为当安装新内核(系统更新)时,grubby 应该将最新内核的选项复制到新安装的内核。这意味着,audit=0
必须附加到该文件的第一linux
行(第一部分)。应该没有必要改变。 更正:实际上,正确且最可靠的方法是使用 编辑并重新生成 Grub 配置,谢谢menuentry
/etc/default/grub
/etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
KnightLordAndMaster 指出了这一点。
关于日志文件中审核日志的附加说明:
附带说明一下,以下行应该可以防止审核日志最终出现在日志文件中,但它们仍然会使 dmesg 和控制台变得混乱,因此这本身并不是一个解决方案。该行将作为第一条规则放入/etc/rsyslog.conf
:
...
#### RULES ####
# no audit
:programname, isequal, "audit" ~
...
现在,这会导致以下警告:
rsyslogd[xxxx]: warning: ~ action is deprecated, consider using the 'stop' statement instead [v8.35.0 try http://www.rsyslog.com/e/2307]