我在使用 chroot 的 12.04 Ubuntu 时遇到了一个奇怪的问题。当我尝试运行任何程序时,sudo
都会出现以下错误:
sudo: effective uid is not 0, is sudo installed setuid root?
如果我启动与我“chroot”到 sudo 相同的系统,则一切如预期。这可能是什么原因造成的?我该如何修复它?
附加信息:
[user@host /]$ ls -la /usr/bin/sudo
-rwsr-xr-x 1 root root 116928 12.05.2013 08:14 /usr/bin/sudo*
为了 chroot 我使用了以下命令:http://ubuntuforums.org/showthread.php?t=1156240
答案1
您能否尝试查看可以使用哪些命令执行sudo
。
sudo -l -U YOUR_USERNAME
如果您有足够的权限,请尝试执行。
chmod u+s /usr/bin/sudo
希望能帮助到你。
答案2
运行以下命令chmod 4755 /usr/bin/sudo
。噢,我的错,你已经有正确的设置了,无论如何,也许链接的答案可以提供帮助。这可能是一个PolicyKit相关问题。
另请查看这个答案:如何在“chmod -R 777 /usr/bin”之后修复 sudo?
祝你好运!
答案3
通过复制必要的文件从我当前的 Ubuntu 12.04 安装创建了一个 chroot,我可以确认 chroot + sudo 确实有效。
现在讨论您的问题:可以有两种解决方案。
您确实没有足够的权限访问 /usr/bin/sudo。这可能是由于实际文件的权限或者由于某些文件系统安装问题,例如鼻甲。
某些内核安全模块阻止 chroot 中的 sudo / setuid 位。这种情况不太可能发生,但有些安全模块可以禁用 chroot 中的 setuid 位。
如果您想详细调试此问题,我建议您熟悉 strace,它将向您显示 sudo 命令执行的所有系统调用,并帮助您调试导致确切问题的文件或权限。我写了一个教程你可能会对此感兴趣。