我的 /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。但是,我想知道是否可以在系统本身上解决这个问题!
包修改文件的方式本质上有两种:任何一个
包中包含一个文件,直接覆盖原来的
包的控制文件之一preinst
或postinst
修改现有文件
如果您已经安装了该软件包,那么您可以通过查看其文件列表来检查 (1),例如
dpkg -L sudo-ldap | grep nsswitch
Run Code Online (Sandbox Code Playgroud)
如果您尚未安装该软件包,则可以在
packages.ubuntu.comapt-file
上在线检查其内容,或者如果您已安装该软件包,则可以使用
apt-file list sudo-ldap | grep nsswitch
Run Code Online (Sandbox Code Playgroud)
另请参阅如何找到提供文件的包?
对于情况(2),如果您已经安装了该软件包,您应该在/var/lib/dpkg/info/
so中找到它的控制脚本
grep nsswitch /var/lib/dpkg/info/sudo-ldap.{pre,post}inst
Run Code Online (Sandbox Code Playgroud)
或者更一般地说
grep -l --include=\*.{pre,post}{inst,rm} '/etc/nsswitch.conf' /var/lib/dpkg/info/*
Run Code Online (Sandbox Code Playgroud)
列出提及该文件的所有控制文件/etc/nsswitch.conf
。如果您想检查已卸载软件包的控制文件,您可以执行以下操作
apt download sudo-ldap
ar x sudo-ldap_*.deb
tar xvf control.tar.zst ./postinst
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用寻呼机或 grep 查看该文件。对于包裹,sudo-ldap
您可能会发现以下内容
$ grep -A3 nsswitch ./postinst
# modify nsswitch.conf if needed
if [ -z "`grep \"^sudoers:\" /etc/nsswitch.conf`" ]
then
echo "sudoers: files ldap" >> /etc/nsswitch.conf
fi
# make sure sudoers has the correct permissions and owner/group
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
140 次 |
最近记录: |