了解自制“无sudo”理念并质疑常见问题解答


4

全新安装OS X后,我决定以适当的方式安装python包管理器。所以我开始谷歌搜索,发现自制软件是最好的方式。 现在我有两个问题:

  • 来自自制软件常见问题:

Homebrew旨在不使用sudo工作。

但是安装脚本要求输入密码。这是因为实际用户被授予读取,写入,执行usr / local ... dirs作为管理员组成员的权限。因此,不是每次都询问sudo,而是自制软件问过一次。 然而,规则被打破,因为你必须使用sudo yes或yes。

在安装软件包时,我害怕在python中使用sudo。这就是我决定自制的原因。但实际上不一样吗?

如果这是真的,我认为让自制程序执行你想做的事情是不安全的,因为他们拥有root权限。

  • 来自自制软件常见问题:

/ usr / local / bin已经在你的PATH中了。

那我为什么需要

将Homebrew目录插入PATH的顶部

正如它所说的那样 http://docs.python-guide.org/en/latest/starting/install/osx/

执行命令homebrew的安装脚本:

/usr/bin/sudo /bin/chmod g+rwx /usr/local/. /usr/local/include /usr/local/lib /usr/local/lib/pkgconfig

/usr/bin/sudo /usr/bin/chgrp admin /usr/local/. /usr/local/include /usr/local/lib /usr/local/lib/pkgconfig

Answers:


2

哇,谁说安装的程序有root权限? sudo 用来给 写入受保护目录的权限,以便您可以将东西安装到系统文件夹中。您安装的程序不会神奇地继承root权限。它们像所有程序一样安装,具有它们应具有的任何权限。用。安装 sudo 不会提升已安装文件的权限。

至于 $PATH,如果安装了自制软件 /usr/local/bin 那已经在你的了 $PATH 那么你根本不需要做任何事情。


谢谢你。您说安装到提升权限目录的程序不会继承权限。 'brew'是我在/ usr / local / bin中唯一的文件。它是管理员组。然后运行它就像用sudo运行它。与其他程序不一样吗?
Vito Valov

1
@slinzex这不是权限的工作方式。你看到的是文件的所有者是管理员。看着 ls -l /bin/ls,你会看到它也归管理员所有。那样做 意味着它将以管理员权限运行。它只是意味着它属于管理员。但是,所有可执行文件都以执行它们的用户的权限运行。如果 admin 运行它们,它们会有 admin 特权,如果你运行它们,它们就不会。唯一的例外是案件 SUID位已设置 。看一看 这里
terdon

感谢非常好的和有用的复习。 brew的权限是-rwxr-xr-x。并且所有者是“admin”组的“用户”。并且ls由root拥有。然后用户可以rx,以及root。管理员不能写,以及其他。用户在管理员组中。在安装自制软件之前,usr / local是wheel的组。现在是管理员。在我不得不使用sudo写在那里之前,现在不是,对吧?总而言之,现在改变了chmod g + rwx和chgrp admin / usr / local /。 ?
Vito Valov

@slinzex我恐怕我不知道你在问什么。如果这是一个新问题,请发一个新问题,这不是一个论坛。我不知道你是否可以在没有看到整个权限字符串并且知道你的组的情况下编写。如果你跑了 chmod g+rwx/usr/local/ 然后每个人都在 admin group具有读/写和执行访问权限 /usr/local/ (不是那里的任何文件和文件夹,只有 /usr/local )。带回家的消息是程序以启动它们的用户的权限运行,因此使用sudo进行安装不会影响程序执行时的权限。
terdon

这是同一个话题。我提到的两个命令是自制程序的脚本在安装时在我的计算机上执行的操作。它显然要求sudo密码。我问的是:那是什么目的?授予brew权限以在此处下载和安装程序,从而编写,读取和执行它们。然后如果brew由我拥有,当我运行它时,它将能够运行它下载和安装的任何程序,并且该程序也将以我的权限运行?这不是危险的吗?我所看到的是,在使用hb之前,我可以通过sudo控制正在执行的内容。现在我没有。
Vito Valov

2

他们说放 /usr/local/bin/ 在你的顶部 $PATH 以便在系统之前找到自制程序。例如,如果你使用自制的python版本,系统就是 /usr/bin/python 之前会被召唤 /usr/local/bin/python 除非 /usr/local/bin 之前 /usr/bin 在你的 $PATH, 即使 /usr/local/bin 已经在你的 $PATH


是的,谢谢。其实我昨天发现了。
Vito Valov
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.