如何以root身份运行Homebrew?


11

多年前,您可以brew通过brew将root 锁定为root 来摆脱以root 身份运行的麻烦,但是他们删除了该功能。因此,在Homebrew 1.1.6中,我曾经进行过编辑/usr/local/Homebrew/Library/Homebrew/brew.sh以删除root检查(称其“极其危险”的检查),因此我可以brewroot用户身份运行。

较新版本的Homebrew仍然可以使用,但brew.sh每次运行后都会将文件还原回原位brew,即使我运行也是chmod 500如此。我可以编写一个脚本来对其进行更改然后brew自动运行,但是我不确定这是否将一直有效并且不想冒险。有没有人找到另一种以root身份运行Homebrew的方法?


3
出于好奇,为什么要以brewroot用户身份运行?另外,sudo还不足以满足您的目的吗?
艾伦(Allan)

2
@Allan sudo确实以root用户身份运行它,并且给了我同样的“极其危险”错误。我想以root用户身份运行,因为否则它会在安装某些软件包时遇到问题,尤其是如果没有通过Homebrew(例如,通过pip)安装了任何软件包。我沿着那条路线走了很多次。另外,如果没有怪异的解决方法,它对于多个用户将无法正常工作,除非我以root用户身份安装所有内容。
sudo

$ su-> $ brewwwyouyouwant?
StrawHara

1
构建软件包root存在风险。即使是建设一个没有包装的软件包管理器,你将建立包作为一个非特权用户(您自己),然后安装包中rootsudo。软件包管理器(例如Fink和MacPorts)均使用自己的非特权用户进行构建,然后以进行安装root。自制程序没有这种机制。
fd0

1
嗯,我看不到问题所在,brew.sh在修改文件然后运行brew命令后文件已还原。所以,我可以运行sudo brew whateverbrew whatever串联就好了。brew --version因此Homebrew 1.2.1-98-g803f9cbf7b-dirty Homebrew/homebrew-core (git revision d3d6; last commit 2017-05-28) ,我的输出是:仅供参考,我修改了brew.sh文件以注释掉check-run-command-as-root函数中的所有行,并在函数return顶部放置了一条语句。
GDP2

Answers:


2

更改脚本后,尝试在brew.sh上设置不可变标志。

chflags uchg /usr/local/Homebrew/Library/Homebrew/brew.sh

我还没有测试。通常,我不会扎根于那些要求开发人员不要的应用程序。


我也同意杰森的观点。他们说没有理由以brew为根运行是有原因的。主要是因为他们是开发人员,我会信任他们的软件。另外,与macports不同,我上次检查时仍然需要该命令,brew不需要或不需要root权限,因此如果您搞砸了,它很可能不会使整个系统崩溃。一切都包含在您的用户帐户中,而无需弄乱sudo。
user9950573 '18

1
确认工作,谢谢。第一次尝试需要花费一些时间,但以后sudo brew install的更新仍会正常运行。
sudo

1
我在Mac上安装的软件包不会造成混乱并使系统无法使用。无论如何,我可以在30分钟内还原系统。清理用户的工作要困难得多,而且如我在上面的评论中所解释的那样,除非在整个系统范围内进行安装,否则许多事情就无法正常进行。
sudo

1

典型的用户不应该这样做,但是您不是典型的吗?

两个问题:

  1. 您无法停止root。如果您坚持使用root,那么brew.sh无论如何root都可以覆盖。

  2. brew毕竟,您不能停止谈论跑步brew

因此,我们将与之合作。让我们设置一个别名,brew.sh然后复制并运行brew

alias brew='cp /<modified>/brew.sh /<actuall>/brew.sh; /usr/local/bin/brew'

(修复路径以匹配您的系统)。

现在您需要做的是:

sudo brew <arguments>

(它将成为root,复制过来brew.sh,然后brew以带有参数的root身份运行,之后brew将被覆盖brew.sh,您可以准备再做一次)

注意:您也可以sudo输入别名,但是这样会更好,因为每次都会提示您输入密码。

为了安全起见,通常您不能使用setuidchmod u+s)根植于shell脚本。Perl有一个单独的程序suidperl可以安装,并且可以提升用户权限,但是对于快速答案来说,这样的解决方案有点深。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.