A Apple lançou o System Integrity Protection , também conhecido como "sem raiz", com o OS X 10.11, El Capitan. Entendo que este é um passo para a proteção geral contra malware, mas como desenvolvedor, preciso de acesso de gravação a alguns dos arquivos que ele bloqueia.
Como desabilito essa proteção?
Respostas:
A documentação da Apple abrange a desativação do SIP, sobre a proteção da integridade do sistema no seu Mac e a configuração da proteção da integridade do sistema .
Um artigo no lifehacker.com lista estas etapas:
Você pode verificar se um arquivo ou pasta está restrito emitindo este
ls
comando usando o capital O (e não zero 0) para modificar o sinalizador de listagem longa:Procure o texto restrito para indicar onde o SIP é imposto.
Por padrão (= SIP ativado), as seguintes pastas são restritas (consulte a página de suporte da Apple ):
... e as seguintes pastas são gratuitas:
fonte
ls -lO /usr/local
não está marcado como restrito. Eu também chownd/usr/local/
recursivamente. Mas continuo vendo a raiz se apropriar/usr/local/bin
e o/usr/local/share
que afeta o homebrew. Este também é o trabalho do SIP?/usr/local
não seja restrito, você pode corrigir quaisquer permissões "abaixo" deste diretório facilmente. Na verdade, o Homebrew recomenda executarsudo chown -R $(whoami) /usr/local
(enquanto estiver conectado como um usuário administrador) para corrigir problemas de permissão./usr/local
agora as permissões estão definidas corretamente.É possível desativar o SIP, inicializando no Recovery HD e executando o seguinte comando:
Também é possível ativar as proteções SIP e desativar seletivamente aspectos dela, adicionando um ou mais sinalizadores ao
csrutil enable
comando. Todos exigem a inicialização do Recovery para configurá-los:Habilite o SIP e permita a instalação de extensões de kernel não assinadas
Ativar SIP e desativar proteções do sistema de arquivos
Habilitar SIP e desabilitar restrições de depuração
Habilite o SIP e desabilite as restrições do DTrace
Habilite o SIP e desabilite as restrições de gravação na NVRAM
Também tenho um post disponível com mais informações sobre o SIP:
System Integrity Protection - Adicionando outra camada ao modelo de segurança da Apple
fonte
csrutil: failed to modify system integrity configuration. This tool needs to be executed from the Recovery OS.
Se o objetivo é realmente desabilitar o System Integrity Protection, a inicialização na partição do Recovery HD, conforme recomendado anteriormente nas outras respostas aqui, via Command+ rna inicialização, não é a maneira mais rápida de fazer isso.
Você pode combinar a inicialização no modo de usuário único com a inicialização do HD de recuperação em uma combinação de teclas de inicialização não documentada:
Isso leva você apenas ao ambiente mínimo necessário para isso diretamente .
fonte
Seria mais seguro modificá-
/etc/paths
lo, como/usr/local/bin
antesusr/bin
. Dessa forma, você pode realizar seu trabalho de desenvolvimento/usr/local/bin
sem precisar desativar o SIP.As instalações limpas do sistema operacional ordenam
/etc/paths
dessa maneira desde o El Capitan, mas se você estivesse atualizando o sistema operacional do Yosemite ou anterior, teria que modificar a ordem do caminho manualmente.fonte
usr/bin
. Como o SIP impede isso agora, os programas devem ser instaladosusr/local/bin
, o que não é restrito pelo SIP. Ao colocar emusr/local/bin
primeiro lugar, os usuários podem executar programas sem precisar digitar o caminho absoluto para o programa. Isso faz sentido? Você está confuso sobre outra coisa?/usr/bin
... mas acho que o que eu deveria ter perguntado é "como isso responde à pergunta da OP?" Eu estava originalmente supondo que ele fez , de alguma forma, e que eu não estava fazendo a conexão. Mas agora tenho muita dúvida de que ele tenha alguma conexão.Se tudo o que você precisa é acessar / usr / local, consulte esta página: https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/El_Capitan_and_Homebrew.md
A idéia é desativar temporariamente o SIP usando
csrutil disable
, adicionar/usr/local
, usar chflags para definir esse diretório como não restritoe, em seguida, reative o SIP usando
csrutil enable
.Se
/usr/local
já existe no momento da sua atualização, mesmo os itens acima não são necessários. Você pode simplesmente executarfonte
Read-only file system
Se você não conseguir entrar no Recovery Partition para executar
csrutil disable
(para desativar o SIP ), tente definir argumentos de inicialização com onvram
comando, por exemploNo entanto, se você tiver o seguinte erro:
então não vai funcionar. Você ainda precisa inicializar o modo de recuperação / segurança.
Vejo:
fonte
nvram: Error setting variable - 'boot-args': (iokit/common) not permitted
Não tenho reputação suficiente para adicionar isso como um comentário ao link do github Homebrew 404 acima. A Wayback Machine ainda possui:
http://web.archive.org/web/20160117204214/https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/El_Capitan_and_Homebrew.md
fonte