![尽管所有权和模式设置正确,但 sudo 仍失败](https://linux22.com/image/798503/%E5%B0%BD%E7%AE%A1%E6%89%80%E6%9C%89%E6%9D%83%E5%92%8C%E6%A8%A1%E5%BC%8F%E8%AE%BE%E7%BD%AE%E6%AD%A3%E7%A1%AE%EF%BC%8C%E4%BD%86%20sudo%20%E4%BB%8D%E5%A4%B1%E8%B4%A5.png)
sudo: must be setuid root
尽管 中的可执行文件/usr/bin/sudo
具有所有权root:root
和模式 4755 ( -rwsr-xr-x
),但我还是遇到了可怕的错误/etc/sudoers
。模式为 440。我的用户处于 sudoers 中,并且具有所有适当的设置。我已清除并重新安装了该软件包,但无济于事。
我最初没有配置这台机器;默认情况下,它的维护工作落在了我的肩上。这种行为是否可能是与 PAM 的交互?如果是,我该如何修复它?这台机器运行的是 Debian squeeze 2.6.26-2-686 SMP 内核。没有写任何有关失败的信息,/var/log/auth.log
所以它在此之前就已经退出了。
更新:这是 sudoers(删除了许多多余的注释行),但我很确定这不是问题。
Defaults env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:\
/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
User_Alias SUDOERS=david
Defaults:SUDOERS !lecture,!authenticate
# User privilege specification
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALL
SUDOERS ALL=(ALL:ALL) ALL
是的,我知道这太松懈了。等我让它工作起来后,我会把它收紧。据我所知,它甚至从未进入读取此文件的阶段,但当 sudo 进程本身尝试升级其用户 ID 时,它就会死机。几乎相同的设置在几台(>10 台)其他机器上完美运行,所以我认为一定是外部配置导致了失败。
答案1
感谢 MadHatter,我找到了解决方案。文件系统被创建为一个大根分区(不是我创建的!),其中 /usr、/var、/home 等只是子目录。出于某种原因,它也被挂载为 nosuid,大概是出于错误的安全尝试。我将其提升为答案,以便它更容易被遇到同样问题的人看到。我应该检查挂载选项,但没有想到,因为遇到这种情况太愚蠢了。