sudo:有效的uid不是0,sudo是否安装了setuid root? (在mac os x 10.12上)

时间:2016-10-23 23:27:51

标签: linux macos terminal sudo

所以我有点像一个终端菜鸟,所以请耐心等待,但我正在尝试更新brew以安装一些东西,所以我跑了:brew update并得到了Error: /usr/local must be writable!

我真的不确定那是什么,所以我尝试了sudo brew update并获得了sudo: effective uid is not 0, is sudo installed setuid root?

不确定这是否有帮助,但正在运行ls -l $(which sudo)给了我:

ls: is: No such file or directory
ls: is: No such file or directory
ls: is: No such file or directory
ls: is: No such file or directory
ls: sudo: No such file or directory
ls: sudo: No such file or directory
ls: sudo: No such file or directory
ls: sudo: No such file or directory
-r-s--x--x  1 root        wheel  369136 Sep 13 20:56 /usr/bin/sudo
-r-s--x--x  1 my_profile  admin  168448 Jan 13  2016 /usr/local/bin/sudo
-r-s--x--x  1 my_profile  admin  168448 Jan 13  2016 /usr/local/bin/sudo
-r-s--x--x  1 my_profile  admin  168448 Jan 13  2016 /usr/local/bin/sudo

我尝试了建议here(使用“磁盘工具”并运行急救),但似乎没有任何效果....

谁能告诉我发生了什么以及我需要做什么?

1 个答案:

答案 0 :(得分:0)

如果您运行ls -la /usr,结果很可能如下所示:

total 0 drwxr-xr-x@ 11 root wheel 374 Oct 14 14:35 . drwxr-xr-x 32 root wheel 1156 Oct 26 09:49 .. drwxr-xr-x 19 root wheel 646 Oct 10 18:51 local ... (some other files and directories)

现在从上面可以明显看出,除非您以root身份登录,或者您的用户位于wheel群组(很可能不是),否则您发出的任何命令与您的用户需要写入权限(例如brew update)将失败。

其中一个可能的解决方案(我并不认为是最好的解决方案)是更改/usr/local的权限。

像这样:

sudo chown -R $(whoami) /usr/local

有趣的是,如果你再运行

brew update

一切顺利,您收到以下消息:

=> Migrating HOMEBREW_REPOSITORY (please wait)... ==> Migrated HOMEBREW_REPOSITORY to /usr/local/Homebrew! Homebrew no longer needs to have ownership of /usr/local. If you wish you can return /usr/local to its default ownership with: sudo chown root:wheel /usr/local

我猜这首先解释了发生了什么。

希望有所帮助。