bash:sudo:在 OS X Lion 上未找到命令

bash:sudo:在 OS X Lion 上未找到命令

这让我很困惑。

sudo [any command here ]
bash: sudo: command not found

呃!

我尝试卸载 Ruby 版本管理器(出于某种原因它无法编译 Ruby)。在按照他们的分步说明进行操作时,我发现 sudo 不可用。

这是我的$PATH:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

which sudo不返回任何内容。

我想在等待的时候尝试一下。我有一台较旧的 Mac,两天前刚刚升级到 Lion。我将其复制到了/usr/bin/sudo有问题的机器上。现在,当我尝试时sudo,我得到了:

sudo:必须是 setuid root

我对命令行不是特别熟悉——这看起来很糟糕。

答案1

尝试使用磁盘实用程序修复文件权限——运气好的话,应该会重置您复制的 /usr/bin/sudo 上的 setuid 位。这是一个标志,即使 sudo 不是以 root 身份运行,它也可以充当 root 身份,这显然需要它能够做到,但您需要 sudo 使用命令行来设置它,因此您遇到了先有鸡还是先有蛋的问题。

答案2

sudo没有完全消失过?你用从另一台机器上获取的文件替换了它吗?我想知道你是怎么删除的sudo。RVM 运行时没有提升权限,它不应该有执行此类操作的权限。


无论如何,请尝试从最新备份中恢复。如果没有,请通过以下方式修复权限磁盘工具。 可能有帮助。

Command-S您可以尝试将 Mac 启动到单用户模式。启动时按住 即可。在这里,输入

mount -uw /

然后尝试正确地对文件进行 chmod 操作。如下所示:

chown root /usr/bin/sudo 
chmod u+s /usr/bin/sudo

如果一切都失败了,只需重新安装 Lion 即可——这就是恢复的目的。它不会删除您的文件。您必须清除磁盘才能丢失任何内容,我强烈建议进行备份。

答案3

我看到 Mike Scott 的帖子回答了您的 sudo 问题,但我也遇到了 RVM 无法编译 Rubies 的问题。似乎 Apple 在 10.7 中已改为使用 LLVM 作为默认编译器,因此将 gcc 链接到了 llvm-gcc。

$ which gcc                                                                  
/usr/bin/gcc

$ ls -la /usr/bin/gcc                                                        
lrwxr-xr-x  1 root  wheel  12 30 Nov 13:40 /usr/bin/gcc -> llvm-gcc-4.2

gcc 仍在那里,但它位于 /usr/bin/gcc-4.2。通过设置 CC 环境变量指定要使用的 C 编译器应该允许您编译 rubies。

$ CC=/usr/bin/gcc-4.2 rvm install 1.9.2

相关内容