Sudo não pode criar arquivo em / usr / bin em El Capitan

14

Atualizei para o El Capitan ontem e tudo estava bem até recentemente, quando notei que não podia escrever nada (com o sudo ofc) em / usr / bin enquanto tentava instalar o phpbrew.

O que poderia estar causando isso e como solucioná-lo?

insira a descrição da imagem aqui

sushil
fonte
O OS X El Capitan não tem raízes. O recurso pode ser desativado na partição de recuperação.
Fd0 26/06

Respostas:

17

Desde o OSX 10.11, a Apple reforçou o sistema de segurança. Chamada Proteção de Integridade do Sistema , a Apple bloqueia:

/System
/sbin
/usr (with the exception of /usr/local subdirectory)

Para desativar esse recurso de segurança, é necessário reiniciar o computador e aguardar CMD+Rno início para inicializar no OS X Recovery Mode.

Então OS X Utilities > Terminal

Digite o comando csrutil disable; reboot

O seu computador irá reiniciar. Você verá uma mensagem de confirmação sobre a desativação.

Para verificar o status do tipo CRS csrutil status

Ragnar
fonte
1
Eu desabilitei e ainda não me permite fazer nada:/Users/Rob$ csrutil status System Integrity Protection status: disabled. /Users/Rob$ touch /usr/bin/yes touch: /usr/bin/yes: Permission denied
Roberto
Tente com sudo.
Ragnar
Na maioria dos casos, é melhor instalar personalizações locais em / usr / local (por exemplo, / usr / local / bin em vez de / bin ou / usr / bin). É para isso que serve, e esse tem sido o caso há muito tempo. Se possível, recomendo seguir esta prática recomendada em vez de desativar o SIP. Se você realmente precisar fazer alterações em um local restrito, é melhor desativar o SIP, fazer a alteração e reativar imediatamente o SIP com csrutil enable(no modo de recuperação).
Gordon Davisson
3

Como mencionado por Ragnar , o /usrdiretório está bloqueado pelo sistema, com exceção de /usr/local. Então, se o seu cenário permitir, recomendo adicionar o link simbólico a /usr/local/bin. Se você não possui um requisito estrito de uso /usr/bin, é uma maneira de solucionar o erro "Operação não permitida".

Gustavo Straube
fonte
2

Pode-se verificar se um arquivo ou diretório específico está restrito à Proteção de integridade do sistema (SIP) / Rootless da OSX listando os sinalizadores de arquivo usando a -Oopção ls (por exemplo, para ver quais diretórios em / são restritos):

ls -Ol /

Os diretórios ou arquivos controlados pelo SIP são exibidos como 'restritos'.

Há detalhes completos nas respostas a esta pergunta sobre SIP / sem raiz.

Pierz
fonte