在 chroot 环境中执行 sudo 时出错

在 chroot 环境中执行 sudo 时出错

我在使用 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 确实有效。

现在讨论您的问题:可以有两种解决方案。

  1. 您确实没有足够的权限访问 /usr/bin/sudo。这可能是由于实际文件的权限或者由于某些文件系统安装问题,例如鼻甲

  2. 某些内核安全模块阻止 chroot 中的 sudo / setuid 位。这种情况不太可能发生,但有些安全模块可以禁用 chroot 中的 setuid 位。

如果您想详细调试此问题,我建议您熟悉 strace,它将向您显示 sudo 命令执行的所有系统调用,并帮助您调试导致确切问题的文件或权限。我写了一个教程你可能会对此感兴趣。

相关内容