解决权限错误

解决权限错误

在 Ubuntu 中,每当我遇到权限错误时,我只需以 sudo 形式运行命令,通常就可以了。但在 OSX 中并非如此:

$ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
 From https://github.com/Homebrew/homebrew
 * [new branch]      master     -> origin/master
error: unable to unlink old 'Library/Aliases/0mq' (Permission denied)

作为 sudo:

$ sudo ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
-e:69: warning: Insecure world writable dir /usr/local in PATH, mode 040777
Don't run this as root!

不确定我应该做什么。我经常遇到这种事情,只要我能找到sudo chown相关目录,我就会一直这样做。

我也不能,sudo brew install因为 brew “胆怯地拒绝”以超级用户身份操作。我只是感到困惑,因为我觉得我正在尝试做一些愚蠢的事情,然而 Ubuntu 的等效方法sudo apt-get install被认为是安装新应用程序的正确方法?

我还可以创建一个实际上是超级用户的新用户并以他的身份安装东西,但 Ubuntu 不允许您这样做,因为这是一个坏主意,而且我同意让用户具有有限的能力并且只在需要时使用 sudo 似乎是一个更好的主意。

答案1

/usr/local/不应是全世界可写的;这是一件坏事——并且错误/警告消息非常正确地指出了这一点。(我很好奇它是怎么变成这样的?)

此外,您并不总是需要求助于 chown 目录 - 您应该将用户/组所有权和权限视为同一难题的一部分。

在这种情况下,我建议您从 /usr/local 中删除世界写入位,然后重试。

sudo chmod o-w /usr/local

编辑:

我在您尝试运行的脚本中发现了这一点。

This script requires the user #{ENV['USER']} to be an Administrator. If this
sucks for you then you can install Homebrew in your home directory or however
you please; please refer to our homepage. If you still want to use this script
set your user to be an Administrator in System Preferences or `su' to a
non-root user with Administrator privileges.

因此我建议你添加自己暂时地作为管理员。我认为这可能只是将您添加到管理员组。如果是这样,您还可以将 /usr/local(及其任何其他子目录)组设为管理员组中的任何人拥有/可写入。

sudo chgrp admin /usr/local
sudo chmod g+w /usr/local

从安全角度来看,这比全面更改更容易接受。我见过一些“解决方案”,人们将整个 /usr/local 内容更改为他们自己的 id。

啧啧啧。

或者另一种方式(如上所述)以非 root 身份安装到某处的主目录中。

相关内容