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


101

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

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

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


您是什么1.OS 2.发行版3.文件系统?
Rany Albeg Wein

Mac OSX El Capitan 10.11.4
egidra '16

1
您是否尝试过以下方法:stackoverflow.com/questions/32659348/…
Rany Albeg Wein

Answers:


156

为什么我不能链接到/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默认情况下不存在的,它在默认路径,所以只要你创建它,它会被搜索的命令。

禁用SIP

也可以禁用系统完整性保护,但是通常最好将其保留并在更合适的位置进行自定义。关于Apple Stack Exchange的问题,有更多详细信息:El-Captain中的无根功能到底是什么?


16

我在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”的访问受到限制。


7

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


9
这将禁用系统完整性保护。最好是找到另一个更安全的解决方案。
MattSidor

9
我个人认为这是正确的解决方案。我认为操作系统没有理由阻止我对该目录或任何目录中的内容进行符号链接sudo
rjhilgefort

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已被禁用。从the菜单中,选择重新启动。


-3

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


2
这将无法解决OP问题。问题与现代MacOS系统上的系统完整性保护有关。
cgseller
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.