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

egi*_*dra 83 macos terminal symlink

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

 sudo ln -s /usr/bin/python2.7 /usr/bin/python2
ln: /usr/bin/python2: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

即使作为sudo,我也会收到此错误.

Gor*_*son 126

为什么我不能用符号链接/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
Run Code Online (Sandbox Code Playgroud)

请注意,虽然/usr/local/bin默认情况下不存在的,它在默认路径,所以只要你创建它,它会被搜索的命令.

禁用SIP

也可以禁用系统完整性保护,但通常最好将其保留并在更合适的位置进行自定义.Apple Stack Exchange问​​题有更多细节:El-Captain的Rootless功能是什么?.

  • @丹尼尔W。你的“PATH”设置是什么?通常,`/usr/local/bin` 将列在 `/usr/bin` 之前,因此它优先。 (3认同)

小智 12

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

sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/
Run Code Online (Sandbox Code Playgroud)

我还试图在"/ usr/bin"中创建符号链接,并且正在获取"不允许操作".

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

因此,似乎对"/ usr/bin"的访问受到限制.


kes*_*van 8

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

  • 就个人而言,我认为这是正确的解决方案。我认为操作系统没有理由阻止我将此目录或任何目录中的内容符号链接为“sudo”。 (11认同)
  • 这将禁用系统完整性保护。可能最好找到另一个更安全的解决方案。 (10认同)
  • 也许完整的解决方案是禁用它,放置符号链接并重新启用 csrutil? (2认同)
  • 采用 Apple Silicon 的 Mac 需要关闭并按住电源按钮启动,直到出现启动选项。 (2认同)