Homebrew如何不再需要/ usr / local的所有权?


28

今天我运行brew update,迁移存储库后,它报告它不再需要拥有以下内容的所有权/usr/local

$ brew update
Updated Homebrew from 5371359 to 13f08a2.
...
==> 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

此更改似乎有点可疑。brew如何完成这种新行为,显然绕过安全控制?


它绕过了哪些安全控制措施?将/usr/local不包括在SIP。请参阅“ 在Mac上关于系统完整性保护的信息/usr/local,其中列出了“第三方应用程序和安装程序可以写入的路径和应用程序可以包括:” 。
user3439894 '16

3
就是说,不是Homebrew的用户,因为我直接从源代码编译OS X中不包含的所需实用程序,但是我想像一下Homebrew已经根据需要/必需进行了重写,以正常运行,就像其他应用程序一样。过去完成的。IMO Homebrew应该是从一开始就写的,不必一开始就篡夺根所有权!
user3439894 '16

我的意思是,如果/usr/local和它的子项由root:admin或拥有,root:wheel并且不是组可写的,那么我将无权写入这些目录(大概也不允许自制),但是如果是这样,那么Homebrew如何管理安装并从这些位置删除应用程序?
杰森·库姆斯

3
我只是注意到该消息仅引用/usr/local而不是其后代。并查看全新的自制程序安装有什么作用,它确实将所有子目录设置为$ USER拥有,并且组可写。
杰森·库姆斯

Answers:


19

根据这个ruby脚本:update-report.rb,他们只是将内容移动到/ usr / local / Homebrew,该目录仍归您所有。


2
要创建/ usr / local / Homebrew,是否不需要$ USER可以写/ usr / local?那么其他目录(例如/ usr / local / Cellar或/ usr / local / opt)呢?自制软件是否还不需要(非sudo)访问权限来写入这些目录?如果目录是root而不是组可写的,该怎么办?
杰森·库姆斯

1
首次安装时,他们仍然使用sudo创建自制软件存储库,请参阅install。我的答案中的脚本用于更新,那时您仍然拥有/ usr / local,并使用旧版本编写。
albb

6

现在,我们创建所需的所有根目录,/usr/local并检查它们的所有权,而不是/usr/local本身要求。

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.