无法在/usr/bin 中创建符号链接,即使是 sudo 也是如此

当我尝试在我的/usr/bin 文件夹中对一个二进制文件进行符号链接时,我得到一个“不允许的操作”错误:

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

即使是 sudo,我也会得到这个错误。

133052 次浏览

为什么我不能进入 /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

也可以禁用系统完整性保护,但通常最好保持开机状态,并在更合适的位置进行定制。关于这一点,苹果 StackExchange 的一个问题有更多的细节: El-Captain 的无根特征到底是什么?

重新启动系统-> 长按 Cmd + R。 从工具菜单中选择一个终端 键入以下命令 Csrutil 失效 关闭终端并重新启动系统。

我在 Mac OS High Sierra 中创建了崇高文本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”的访问似乎受到了限制。

尝试先运行 sudo su,然后运行命令 w/root 级别。

  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 之后,您可以创建符号链接。 按照以下步骤禁用 CSRUtil:

重启你的 Mac。 在 OS X 启动之前,按住 Command-R 并保持按住,直到你看到一个苹果图标和一个进度条。放手。这会让你进入康复期。 从“实用程序”(在顶部栏)菜单中,选择“终端”。 在提示符下输入以下内容,然后按 Return: csrutil able 终端应显示禁用 SIP 的消息。 从菜单中选择“重新启动”。