Nie można zapisać do katalogu / tmp w systemie macOS, nie można poprawić uprawnień: „Operacja niedozwolona”

12

MacOS El Capitan (10.11) nie jest w stanie zainstalować wszelkie aktualizacje oprogramowania lub instalować żadnego oprogramowania, ponieważ /tmpi /private/tmpfoldery nie wydają się być zapisywalny.

Uruchamianie tego:

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

Daje mi ten błąd:

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

Czy istnieje sposób ręcznego usunięcia folderów tmp i ponownego ich utworzenia? Gdy próbowałem zmienić nazwę lub usunąć /tmplub /private/tmpciągle otrzymywałem operację, nie było to dozwolone. sudo chmod 1777również nie w ten sam sposób w obu /tmpi /private/tmpfolderów

Narzędzie dyskowe mówi, że dysk jest sprawny i nie wykryto żadnych problemów podczas uruchamiania pierwszej pomocy.

Czy istnieje sposób przekierowania tmplokalizacji do innego folderu do zapisu?

Ali
źródło
1
Czy najpierw wyłączyłeś SIP? Z odzysku; Terminalcsrutil disable
Tetsujin
2
Mam ten sam problem. Postępował zgodnie z radą Tetsujin, uruchomił się ponownie w trybie odzyskiwania i uruchomił csrutil disable. Potem udało mi się wykonać repair_packagesz sukcesem i jak zwykle uzyskać dostęp do / tmp. Jednak po powrocie do trybu odzyskiwania i uruchomieniu csrutil enablemój system ma ten sam problem. Wydaje się, że jedynym sposobem na uzyskanie dostępu do / tmp jest wyłączenie ochrony integralności systemu.
Andrew Ferk
4
W końcu wróciłem do trybu odzyskiwania i wykonałem csrutil disable. Po ponownym uruchomieniu usunąłem folder tmp:, sudo rm /tmp; sudo rm /private/tmputworzyłem folder tmp sudo mkdir /private/tmp; sudo chown root:wheel /private/tmp; sudo chmod 1777 /private/tmp, utworzyłem symlink: sudo ln -s /private/tmp /tmpi uruchomiłem repair_pacakgesponownie. Po powrocie do trybu odzyskiwania i uruchomieniu csrutil enablewszystko znów działa! Jednak uprawnienia / private / tmp kiedyś były drwxrwxrwt@i teraz są drwxrwxrwt. Nie jestem pewien, co to @jest i czy spowoduje mi to problemy.
Andrew Ferk
1
@AndrewFerk: zobacz te posty apple.stackexchange.com/questions/42177/… unix.stackexchange.com/questions/10/what-does-the-mean-in-ls-l w celu wyjaśnienia znacznika @ uprawnień rozszerzonych
Adam Michalik

Odpowiedzi:

18
  1. Uruchom ponownie komputer Mac w tryb odzyskiwania
  2. Otwórz menu Narzędzia w górnym pasku> otwórz Terminal

    csrutil disable
    
  3. Restart

  4. Usuń folder tmp

    sudo rm -i /tmp
    sudo rm -i /private/tmp
    
  5. Utwórz folder tmp

    sudo mkdir /private/tmp
    sudo chown root:wheel /private/tmp
    sudo chmod 1777 /private/tmp
    
  6. Utwórz dowiązanie symboliczne

    sudo ln -s /private/tmp /tmp
    
  7. Uruchom repair_packages(nie musisz tego robić)

    sudo /usr/libexec/repair_packages --repair --standard-pkgs --volume /
    
  8. Uruchom ponownie w trybie odzyskiwania i uruchom

    csrutil enable
    
  9. Restart


Wspiera Andrew Ferka za znalezienie rozwiązania; wyciągając swój komentarz jako odpowiedź wiki społeczności, aby był bardziej czytelny.

ento
źródło
2
Dziękuję Ci!!! Spędziłem nad tym 3 dni. Nie mam pojęcia, w jaki sposób uprawnienia zostały tak wkręcone, ale pewnego dnia włączyłem komputer Mac do wyboru ostrzeżeń, programów niedziałających i niemożności zainstalowania czegokolwiek. To rozwiązało ten problem.
johngeorgewright
Dlaczego zrobiłeś to CW?
Revetahw
Bo nie chcą uzyskać kredyt na odpowiedź, która mi jedynie przeliczone z czyjejś komentarz
ENTO
Ok, w porządku. BTW, do tej pory nie widziałem twojego komentarza, ponieważ nie było @Fiksdal.
Revetahw
10.13: sudo: / usr / libexec / repair_packages: nie znaleziono polecenia
Даниил Пронин
1
sudo chmod 1777 /private/tmp

Zrobiłem to dla mnie.

Renetik
źródło
0

Naprawiłem to, przywracając mój system z kopii zapasowej Time Machine. Ale inne sugestie w komentarzach również są warte wypróbowania.

Ali
źródło
0

Spróbuj utworzyć i zmodyfikować uprawnienia do /private/tmpfolderu bez uruchamiania csrutil disable. To działało dla mnie, po nieudanej próbie usunięcia i komunikat o błędzie podczas uruchamiania zniknął.

użytkownik69083
źródło
Witamy w Super User. Nie wysyłaj odpowiedzi, aby potwierdzić, że inna odpowiedź zadziałała. Format pytań i odpowiedzi na stronie rezerwuje odpowiedzi na pytania i każda odpowiedź powinna zawierać inne rozwiązanie. Sposobem na wskazanie, że odpowiedź była przydatna, jest zainwestowanie trochę czasu w stronę, a zyskasz wystarczające uprawnienia, aby głosować na odpowiedzi, które ci się podobają.
fixer1234
0

Jeśli dostałeś tę wiadomość w terminalu (lub iTerm) za pomocą maxOS Mojave

operacja niedozwolona

Okazało się, że muszę dodać moją aplikację terminalową do Settings.app „Bezpieczeństwo i prywatność”> „Pełny dostęp do dysku”
(dodałem zarówno terminal.appi iTerm.app)

Aiden Moon
źródło