Não é possível criar um link simbólico dentro de / usr / bin mesmo como sudo

101

Quando tento criar um link simbólico para um binário na minha pasta / usr / bin, recebo um erro de operação não permitida:

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

Mesmo como sudo, recebo este erro.

egidra
fonte
Qual é o seu 1.OS 2.Distribution 3. Sistema de arquivos, por favor?
Rany Albeg Wein
Mac OSX El Capitan 10.11.4
egidra
1
Você tentou o seguinte: stackoverflow.com/questions/32659348/… ?
Rany Albeg Wein

Respostas:

156

Por que não consigo criar um link simbólico /usr/bin?

O novo recurso System Integrity Protection da El Capitan evita alterações em várias partes centrais do OS X, incluindo a maioria /usr/, até mesmo pelo root.

Como posso ainda adicionar arquivos executáveis ​​ao meu caminho?

As personalizações locais, como o que você está fazendo, pertencem em /usr/localvez disso. O caminho /usr/local/binnão existe por padrão, mas você pode criá-lo e colocar binários personalizados (e links simbólicos) nele:

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

Observe que embora /usr/local/binnão exista por padrão, ele está no PATH padrão, portanto, assim que você criá-lo, os comandos serão pesquisados.

Desativando SIP

Também é possível desativar a Proteção de integridade do sistema, mas geralmente é melhor deixá-la ativada e fazer a personalização em locais mais apropriados. Uma pergunta do Apple Stack Exchange tem mais detalhes sobre isso: O que é realmente o recurso Rootless no El-Captain? .

Gordon Davisson
fonte
16

Eu criei o link simbólico para Sublime Text 3 no Mac OS High Sierra como

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

Também estava tentando criar o link simbólico em "/ usr / bin" e obtive Operação não permitida.

Aí criei o link simbólico em "/ usr / local / bin" e não houve erro. O link simbólico funciona bem. Apenas certifique-se de que "/ usr / local / bin" esteja no caminho.

Portanto, parece que o acesso a "/ usr / bin" é restrito.

Vineet Sharma
fonte
7

Reinicie o sistema -> imprensa longo CMD + R . selecione um terminal no menu de utilitários, digite o seguinte comando csrutil disable close terminal e reinicie o sistema.

James
fonte
9
Isso desativa a proteção da integridade do sistema. Provavelmente, é melhor encontrar outra solução mais segura.
MattSidor
9
Pessoalmente, acho que essa é a solução certa. Não vejo razão para o sistema operacional me bloquear de criar links simbólicos neste diretório ou em qualquer diretório 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 

se você não for capaz de criar um link simbólico devido a um problema de permissão, será devido a "csrutil". Após desativar o csrutil, você pode criar um link simbólico. Siga estas etapas para desativar o CSRUtill:

Reinicie o seu Mac. Antes de iniciar o OS X, mantenha pressionado Command-R e mantenha-o pressionado até ver um ícone da Apple e uma barra de progresso. Liberação. Isso inicializa você na recuperação. No menu Utilitários (na barra superior), selecione Terminal. No prompt, digite exatamente o seguinte e pressione Return: csrutil disable O Terminal deve exibir uma mensagem informando que o SIP foi desativado. No menu , selecione Reiniciar.

Srima
fonte
-3

Tente executar sudo suprimeiro e, em seguida, execute o comando com nível de root.

Dre
fonte
2
Isso não resolverá o problema dos OPs. O problema tem a ver com a proteção da integridade do sistema em sistemas MacOS modernos.
cgseller