如何检查哪个包/进程更新了 nsswitch?

如何检查哪个包/进程更新了 nsswitch?

我的 遇到了问题/etc/nsswitch.conf。我无法再将其用作sudo我的个人用户 (ldap)。

我检查了 dpkg.log,似乎对软件包进行了一些升级,与 /etc/nsswitch.conf 修改的日期相匹配。

我如何进一步验证哪个包编辑了 /etc/nsswitch.conf?运行时我没有得到任何有用的结果grep -rHi nsswitch /var/log

我怀疑是 sudo-ldap,但我不确定。

编辑:我发现了这一点:https://answers.launchpad.net/ubuntu/+source/sudo/+question/706189。但是,我想知道是否有可能在系统本身上解决这个问题!

答案1

一种可能的解决方案是使用audit守护进程。只需像这样创建记录:

auditctl -w /etc/nsswitch.conf -p w -k monitor-nsswitch

这将在/etc/nsswitch.conf文件中的每个写入上创建日志。

答案2

我的第一个想法是,像 Romeo 一样尝试捕获谁/什么在更改文件 - 但实际上它会非常令人惊讶的是,如果那不是 root/apt 或 dpkg。它似乎您的问题不是这些文件是如何更改的,而是如何恢复/防止将来再次发生。如果您正在查看日志文件,那么我猜您有 root 访问权限,并且只需重新应用所需的配置即可恢复。这只剩下防止将来再次发生的问题。

您可能已经知道,apt 是 dpkg 的前端。

man dpkg

是一个很好的起点。在其他选项中,你会发现选项--force-things--force-conffold将保留您的配置。要在交互式更新中应用它:

apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" update

您还可以在 /etc/apt/apt.conf.d/ 中设置 apt 的调用(使用“Dpkg::Options {...}”)。

我认为不可能为特定包设置这些选项 - 但我可能是错的。

另一种方法是在您想要保留的配置上设置不可变标志 - 但这需要经过测试/可能会导致更新失败。

相关内容