sudo:有效uid不为0,sudo是不是安装了setuid root?

Posted

技术标签:

【中文标题】sudo:有效uid不为0,sudo是不是安装了setuid root?【英文标题】:sudo: effective uid is not 0, is sudo installed setuid root?sudo:有效uid不为0,sudo是否安装了setuid root? 【发布时间】:2013-09-07 13:22:03 【问题描述】:

我正在尝试从 LXC rootfs 创建 deb 包,并在创建它之后 我想在任何计算机上安装该软件包。到目前为止,我实现了 打包和安装 deb 包,但是在安装 LXC 之后 包,我不能成为那个 lxc 的超级用户。使用时出现此错误 “sudo” 命令。

sudo:有效uid不为0,sudo是否安装了setuid root?

提前致谢。

【问题讨论】:

你能做一个ls -l `which sudo` 吗? 只需运行该命令并发布输出。 -rwxr-xr-x 1 root root 121144 Sep 4 07:11 /usr/bin/sudo 【参考方案1】:

在我奇怪地决定通过以下方式搞砸我自己的系统之后,我在 Mac OS 上遇到了同样的问题:sudo chmod -R /usr/bin。如果这是其他人的情况,只需打开 Disk Utility,选择您的操作系统磁盘(在我的情况下为“Macintosh HD”),转到 First Aid 选项卡,然后点击 Repair Disk权限,稍等片刻,事情应该会得到解决。

【讨论】:

谢谢 - 我正面临这个确切的问题,您的回答帮助我解决了它! 太棒了。在接受的答案似乎没有做任何事情之后,这对我有用。谢谢! 这个答案应该在上面! 我也做了同样的事情,但修复磁盘权限对我不起作用...有什么想法吗?【参考方案2】:

您的sudo 二进制文件没有setuid 标志,因为它猜对了。以 root 身份尝试:

chmod u+s /usr/bin/sudo

OSX 用户:

致所有从搜索引擎登陆这里的人:这不是修复您破坏的 OSX 系统的方法。问题是面向 Linux 的 - hint, lxc tag - 这就是这个答案的目的。 Gustavo Matias 提供的答案可能会有所帮助:-)

【讨论】:

我收到消息:chmod:更改“/usr/bin/sudo”的权限:不允许操作 这个解决方案对我不起作用:'chmod:更改'/usr/bin/sudo'的权限:不允许操作'我也得到'-rwxrwxrwx 1 root root 121144 Feb 28 2013 /usr/bin/sudo' 当我运行 ls -l which sudo @holyredbeard 再次检查这个问题的标签。这不是特定于 OSX 的问题,因此我的回答中没有特定于 OSX 的内容:-) 我不小心弄乱了 /usr/bin 权限,你救了我重新安装我的 CentOS 服务器。非常感谢! @cnicutar 这是如何工作的?如果我在没有sudo 的情况下运行命令,它会告诉我我没有权限,如果我使用sudo 运行它,它会给我同样的“有效 uid 不是 0...”错误(我是使用亚马逊 Linux)。【参考方案3】:

@cnicutar 提供了答案

在 Ubuntu 14.04 主机上,以下工作正常

    Exit the container
    Stop the container

现在你在主机上,设置标志

sudo chmod u+s /var/lib/lxc/<container_name>/rootfs/usr/bin/sudo

检查标志

sudo ls -l /var/lib/lxc/<container_name>/rootfs/usr/bin/sudo
-rwsr-xr-x 1 root root ... ... var/lib/lxc/<container_name>/rootfs/usr/bin/sudo

启动你的容器并进入控制台 你应该能够执行

sudo apt-get install <package>

【讨论】:

【参考方案4】:

这个错误也可能是由于用户使用了jailed ssh shell 造成的。如果是这种情况,请尝试取消限制 shell 会话。

【讨论】:

【参考方案5】:

我今天遇到了这个问题,我通过用root运行以下命令解决了这个问题

chmod u+s /usr/bin/sudo

希望对你有帮助!

【讨论】:

这对我没有帮助

以上是关于sudo:有效uid不为0,sudo是不是安装了setuid root?的主要内容,如果未能解决你的问题,请参考以下文章

sudo: effective uid is not 0, is sudo installed setuid root

java有没有办法找到真正的UID而不是linux中的有效UID?

如何在不为 RVM 用户授予 sudo 访问权限的情况下安装 RVM 系统要求

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set 的解决办法

/usr/bin/sudo 必须由 uid 0 拥有并具有 setuid 位设置版本 .ubantu14.04 LTS

sudo -S可以不用手动输入密码,且只要第一次密码正确,后面在有效期内,密码错误也可以