Невозможно записать в каталог / tmp в macOS, невозможно исправить разрешения: «Операция не разрешена»

13

macOS El Capitan (10.11) не может устанавливать какие-либо обновления программного обеспечения или устанавливать какое-либо программное обеспечение, так /tmpкак /private/tmpпапки и папки не доступны для записи.

Запуск этого:

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

Дает мне эту ошибку:

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

Есть ли способ вручную удалить папки tmp и воссоздать их? Когда я пытался переименовать или удалить, /tmpили /private/tmpя продолжал получать операции не разрешено. sudo chmod 1777также не таким же образом , на обоих /tmpи /private/tmpпапок

Дисковая утилита сообщает, что диск исправен, и при запуске первой помощи проблем не обнаружено.

Есть ли способ перенаправить tmpместоположение в другую папку для записи?

Али
источник
1
Вы сначала отключили SIP? Из восстановления; Терминалcsrutil disable
Тецудзин
2
У меня такая же проблема. Следуя совету Тецуджина, перезапустился в режиме восстановления и побежал csrutil disable. После этого я смог выполнить repair_packagesс успехом и получить доступ к / tmp как обычно. Однако после возврата в режим восстановления и выполнения csrutil enable, моя система имеет ту же проблему. Кажется, единственный способ получить доступ к / tmp - отключить защиту целостности системы.
Эндрю Ферк
4
Я закончил тем, что вернулся в режим восстановления и выполнил csrutil disable. После перезапуска я удалил папку tmp:, sudo rm /tmp; sudo rm /private/tmpсоздал папку tmp sudo mkdir /private/tmp; sudo chown root:wheel /private/tmp; sudo chmod 1777 /private/tmp, создал символическую ссылку: sudo ln -s /private/tmp /tmpи repair_pacakgesснова запустился . После возврата в режим восстановления и запуска csrutil enableвсе снова работает! Однако разрешения / private / tmp были drwxrwxrwt@и есть drwxrwxrwt. Я не уверен, что @это, и если это вызовет у меня проблемы.
Эндрю Ферк
1
@AndrewFerk: см. Эти сообщения apple.stackexchange.com/questions/42177/… unix.stackexchange.com/questions/10/what-does-the-mean-in-ls-l для объяснения маркера @ расширенных разрешений
Адам Михалик

Ответы:

22
  1. Перезагрузите Mac в режиме восстановления
  2. Откройте меню Утилиты в верхней панели> откройте Терминал

    csrutil disable
    
  3. перезагружать

  4. Удалить папку tmp

    sudo rm -i /tmp
    sudo rm -i /private/tmp
    
  5. Создать папку TMP

    sudo mkdir /private/tmp
    sudo chown root:wheel /private/tmp
    sudo chmod 1777 /private/tmp
    
  6. Создать символическую ссылку

    sudo ln -s /private/tmp /tmp
    
  7. Запустить repair_packages(вам может не понадобиться)

    sudo /usr/libexec/repair_packages --repair --standard-pkgs --volume /
    
  8. Перезагрузитесь обратно в режим восстановления и запустите

    csrutil enable
    
  9. перезагружать


Реквизиты Эндрю Ферк для выяснения исправления; вытащить свой комментарий в качестве ответа сообщества вики, чтобы он был более читабельным.

ENTO
источник
2
Спасибо!!! Я потратил 3 дня, вырывая свои волосы из-за этого. Понятия не имею, как разрешения так сильно облажались, но однажды я включил Mac для выбора предупреждений, программ, которые не работают, и невозможности установить что-либо. Это решило эту проблему.
Джонгеоррайт
Почему ты сделал это CW?
Revetahw говорит восстановить Monica
1
Потому что я не хочу , чтобы получить кредит на ответ , который я просто преобразованного из чужого комментария
енто
Хорошо круто Кстати, я не видел ваш комментарий до сих пор, так как не было @Fiksdal.
Revetahw говорит восстановить Monica
10.13: sudo: / usr / libexec / repair_packages: команда не найдена
Даниил Пронин
1
sudo chmod 1777 /private/tmp

Сделал это для меня.

Renetik
источник
0

Я исправил это, восстановив мою систему из резервной копии Time Machine. Но другие предложения в комментариях тоже стоит попробовать.

Али
источник
0

Если вы получили это сообщение в терминале (или iTerm), используя maxOS Mojave

операция не разрешена

Оказалось, что мне нужно добавить мое терминальное приложение в файл Settings.app «Безопасность и конфиденциальность»> «Полный доступ к диску»
(я добавил оба terminal.appи iTerm.app)

Эйден Мун
источник
-1

Попробуйте создать и изменить разрешения для /private/tmpпапки без запуска csrutil disable. Это сработало для меня, после неудачной попытки удаления и исчезло сообщение об ошибке при загрузке.

user69083
источник
Добро пожаловать в Супер пользователя. Пожалуйста, не публикуйте ответ, чтобы подтвердить, что другой ответ сработал. Формат вопросов и ответов сайта оставляет за собой ответы на решения вопроса, и каждый ответ должен содержать другое решение. Чтобы показать, что ответ был полезен, нужно потратить немного времени на сайт, и вы получите достаточные привилегии, чтобы проголосовать за понравившиеся ответы.
fixer1234