142

当我尝试对 /usr/bin 文件夹中的二进制文件进行符号链接时,出现 Operation not allowed 错误:

 sudo ln -s /usr/bin/python2.7 /usr/bin/python2
ln: /usr/bin/python2: Operation not permitted

即使是 sudo,我也会收到此错误。

4

5 回答 5

204

为什么我不能符号链接到/usr/bin

El Capitan 的新系统完整性保护功能可以防止对 OS X 的几个核心部分进行更改,包括大部分/usr/,甚至是 root。

我怎样才能将可执行文件添加到我的路径中?

/usr/local相反,本地自定义,例如您正在做的事情,属于其中。默认情况下该路径/usr/local/bin不存在,但您可以创建它并将自定义二进制文件(和符号链接)放入其中:

sudo mkdir -p /usr/local/bin
sudo ln -s /usr/bin/python2.7 /usr/local/bin/python2

请注意,虽然/usr/local/bin默认情况下不存在,但它位于默认 PATH 中,因此一旦创建它,​​就会搜索命令。

禁用 SIP

也可以禁用系统完整性保护,但通常最好保留它并在更合适的位置进行自定义。Apple Stack Exchange 问题对此有更多详细信息:El-Captain 中的 Rootless 功能是什么,真的吗?.

于 2016-04-20T05:28:38.553 回答
25

我在 Mac OS High Sierra 中为 Sublime Text 3 创建了符号链接

sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/

我还试图在“/usr/bin”中创建符号链接,并且正在获得操作不允许。

然后我在“/usr/local/bin”中创建了符号链接,没有错误。符号链接工作正常。只需确保“/usr/local/bin”在路径中。

因此,似乎对“/usr/bin”的访问受到了限制。

于 2017-12-22T13:41:06.730 回答
8

重启系统 -> 长按cmd + R。从实用程序菜单中选择一个终端,键入以下命令csrutil disable close terminal 并重新启动系统。

于 2017-09-05T12:54:45.760 回答
0
  1. Create a symbolic link to psql in usr/bin (for mac only)
         command: sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/psql /usr/bin/psql 

如果由于权限问题而无法创建符号链接,那将是由于“csrutil”。禁用 csrutil 后,您可以创建符号链接。按照以下步骤禁用 CSRUtill :

重新启动您的 Mac。在 OS X 启动之前,按住 Command-R 并一直按住它,直到您看到 Apple 图标和进度条。发布。这将引导您进入恢复。从实用程序(在顶部栏)菜单中,选择终端。在提示符下键入以下内容,然后按 Return: csrutil disable 终端应显示一条消息,表明 SIP 已禁用。从  菜单中,选择重新启动。

于 2020-07-29T13:04:54.623 回答
-5

尝试sudo su先运行,然后运行具有根级别的命令。

于 2019-12-02T23:21:04.007 回答