Não foi possível gravar no diretório / tmp no macOS, não foi possível corrigir as permissões: "Operação não permitida"


13

O macOS El Capitan (10.11) não consegue instalar nenhuma atualização de software ou software, porque /tmpas /private/tmppastas e não parecem graváveis.

Executando isso:

sudo /usr/libexec/repair_packages --repair --standard-pkgs --volume /

Dá-me este erro:

unable to set owner and group on "tmp" Error 1 Operation not permitted
unable to set permissions on "tmp" Error 1 Operation not permitted

Existe uma maneira de excluir manualmente as pastas tmp e recriá-las? Quando tentei renomear ou excluir /tmpou /private/tmpcontinuei obtendo operação não permitida. sudo chmod 1777também falhou da mesma maneira em ambas as pastas /tmpe/private/tmp

O Utilitário de Disco diz que o disco está íntegro, sem problemas detectados ao executar os primeiros socorros.

Existe alguma maneira de redirecionar o tmplocal para outra pasta gravável?


1
Você desativou o SIP primeiro? De recuperação; Terminalcsrutil disable
— Tetsujin 10/10

2
Eu tenho o mesmo problema. Seguiu o conselho de Tetsujin, reiniciou no modo de recuperação e foi executado csrutil disable. Depois disso, consegui executar repair_packagescom sucesso e acessar / tmp como de costume. No entanto, depois de voltar ao modo de recuperação e executar csrutil enable, meu sistema está tendo o mesmo problema. Parece que a única maneira de obter acesso ao / tmp é desabilitando a Proteção de Integridade do Sistema.
— Andrew Ferk

4
Acabei voltando ao modo de recuperação e executando csrutil disable. Após reiniciar, removi a pasta tmp sudo rm /tmp; sudo rm /private/tmp:, criei a pasta tmp sudo mkdir /private/tmp; sudo chown root:wheel /private/tmp; sudo chmod 1777 /private/tmp, criei o link simbólico: sudo ln -s /private/tmp /tmpe executei repair_pacakgesnovamente. Depois de voltar ao modo de recuperação e execução csrutil enable, tudo está funcionando novamente! No entanto, as permissões de / private / tmp costumavam ser drwxrwxrwt@e agora são drwxrwxrwt. Não tenho certeza do que @é e se isso vai me causar problemas.
— Andrew Ferk

1
@AndrewFerk: veja essas postagens apple.stackexchange.com/questions/42177/… unix.stackexchange.com/questions/10/what-does-the-mean-in-ls-l para obter explicação sobre o marcador de @ permissões estendidas
— Adam Michalik

Respostas:


22
  1. Reinicie o seu Mac no modo de recuperação
  2. Abra o menu Utilitários na barra superior> abra o Terminal

    csrutil disable
    
  3. Reiniciar

  4. Remova a pasta tmp

    sudo rm -i /tmp
    sudo rm -i /private/tmp
    
  5. Criar pasta tmp

    sudo mkdir /private/tmp
    sudo chown root:wheel /private/tmp
    sudo chmod 1777 /private/tmp
    
  6. Crie o link simbólico

    sudo ln -s /private/tmp /tmp
    
  7. Executar repair_packages(talvez você não precise fazer isso)

    sudo /usr/libexec/repair_packages --repair --standard-pkgs --volume /
    
  8. Reinicie de volta ao modo de recuperação e execute

    csrutil enable
    
  9. Reiniciar


Adereços para Andrew Ferk por descobrir uma solução; retirando seu comentário como uma resposta wiki da comunidade, para que fique mais legível.


2
Obrigado!!! Passei 3 dias puxando meu cabelo por causa disso. Não faço ideia de como as permissões foram tão danadas em primeiro lugar, mas um dia liguei o mac para uma seleção de avisos, programas que não estavam funcionando e incapacidade de instalar qualquer coisa. Isso corrigiu esse problema.
— johngeorgewright

Por que você fez essa CW?
— Revetahw diz Restabelecer Monica

1
Porque eu não queria obter crédito para uma resposta que eu simplesmente convertido de comentário de outra pessoa
— ento

Tudo bem, legal. BTW, eu não vi seu comentário até agora, pois não havia @Fiksdal.
— Revetahw diz Restabelecer Monica 3/11

10.13: sudo: / usr / libexec / repair_packages: comando não encontrado
— Даниил Пронин


0

Corrigi isso restaurando meu sistema a partir de um Time Machine Backup. Mas vale a pena tentar outras sugestões nos comentários.


0

Se você recebeu esta mensagem no terminal (ou iTerm) usando o maxOS Mojave

operação não permitida

Acontece que eu precisava adicionar meu aplicativo de terminal ao Settings.app "Segurança e privacidade"> "Acesso total ao disco"
(adicionei ambos terminal.appe iTerm.app)


-1

Tente criar e modificar permissões na /private/tmppasta sem executar csrutil disable. Isso funcionou para mim, depois de tentar excluir sem êxito e a mensagem de erro na inicialização desapareceu.


Bem-vindo ao superusuário. Não poste uma resposta para confirmar que outra resposta funcionou. O formato de perguntas e respostas do site reserva respostas para soluções para a pergunta, e cada resposta deve contribuir com outra solução. A maneira de indicar que uma resposta foi útil é investir um pouco de tempo no site e você obterá privilégios suficientes para aprovar as respostas que desejar.
— fixer1234
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.