Почему в macOS исчезла функция «Восстановить права доступа» и как работать с правами
Фраза «Вы пробовали восстановить права?» — классический совет при проблемах на Mac. До OS X El Capitan (10.11) Disk Utility предлагал опцию «Repair Disk Permissions» (Восстановить права диска). Кажется, она помогала решить редкие неполадки. Когда же Apple убрала эту кнопку, многие стали задаваться вопросом: действительно ли проблема решена, или просто изменился способ работы с правами?
В этой статье подробно разберём:
- принципы Unix-подобных прав в macOS;
- почему Apple убрала видимую кнопку восстановления;
- где и как права всё ещё могут «сломаться»;
- безопасные команды и пошаговые инструкции для восстановления прав в папке пользователя;
- практические чек-листы для администратора и обычного пользователя.
Важно: материал ориентирован на современные версии macOS и учитывает изменения, введённые SIP (System Integrity Protection). Если вы работаете с устаревшими версиями (до El Capitan), некоторые шаги могут отличаться.
Как устроены права в macOS — простая модель
macOS наследует модель прав из Unix. Каждый файл и папка имеют набор прав и владельцев. Короткая дефиниция терминов:
- Владелец: учётная запись, которая создала файл или ей назначено владение.
- Группа: набор учётных записей, которым можно быстро дать общие права.
- Все (everyone): остальные пользователи системы.
- Право чтения (r): разрешает открыть файл или просмотреть список в папке.
- Право записи (w): разрешает изменить или удалить файл; для папок — добавлять/удалять файлы.
- Право исполнения (x): для файлов — запуск как программы; для папок — разрешение переходить внутрь (list с read).
Эти сущности задаются в виде триады прав (владелец/группа/все) и видны как r, w, x в командной строке.
Просмотр прав в Finder
В Finder щёлкните правой кнопкой по файлу или папке и выберите «Информация» (Get Info). Нажмите треугольник «Доступ и права» (Sharing & Permissions), чтобы раскрыть права.
ALT: Информация о файле в Finder с раскрытой секцией «Доступ и права»
Просмотр прав в Терминале
В Терминале команда ls -l показывает список с правами и владельцами:
ls -l "путь/до/вашего/файла"Строка начинаетcя типом и набором прав, например:
-rw-r--r-- 1 user staff 12345 1 Jan 12:34 example.txtПервая часть (-rw-r–r–) означает: файл (-), владелец имеет чтение и запись (rw-), группа — только чтение (r–), все — только чтение (r–).
ALT: Окно Терминала с выводом команды ls -l, показывающим права и владельцев файлов
Почему права «не портятся» сами по себе
Важно понимать: права не «портятся» сами по себе. Они остаются такими, какими их установил кто-то или что-то. Disk Utility в старых версиях не «ремонтировал» повреждённые биты — он сбрасывал права на рекомендуемые значения, если установщик пакета OS X ссылался на стандартные права.
Причины изменения прав:
- Установщики приложений могут изменить существующие права и не вернуть прежние.
- Неправильное использование команд chmod/chown в Терминале.
- Копирование через внешние носители или сетевые протоколы (SMB, FTP) — система может присвоить нестандартные права.
- Совместный доступ к папкам: при постоянном совместном использовании прав может понадобиться ручная корректировка.
- Скрипты или программы с ошибками, которые меняют права в каталоге ~/Library.
Пояснение: когда некая программа «сломалась», это чаще признак того, что её конфигурационные файлы или папки пользователя имеют неверные права/владельцев, а не следствие постепенного «коррозирования» прав.
Что изменил SIP (System Integrity Protection)
В OS X El Capitan Apple представила механизм SIP, который ограничивает возможность изменения важных системных каталогов. Папки под защитой SIP включают в себя, среди прочего: /System, /usr, /bin и /sbin. SIP предотвращает изменение файлов в этих каталогах даже для учётки root в обычном режиме.
Последствия для пользователя и администратора:
- Обычные изменения прав в системных каталогах больше не нужны и невозможны без отключения SIP.
- Обновления системы и встроенные установщики сами заботятся о согласованных правах в защищённых местах.
- Проблемы с правами теперь чаще происходят в каталогах вне зоны SIP: /Applications (для сторонних приложений), /Library и в домашней папке пользователя ~/.
Важно: не отключайте SIP без крайней необходимости. Это снижает безопасность системы.
Симптомы неправильных прав в домашней папке
Если права в ~/ были изменены неправильно, вы можете заметить следующие эффекты:
- Изменения в Finder, Системных настройках или Dock не сохраняются.
- Открытые окна возвращаются при повторном входе в систему.
- Система запрашивает администраторский пароль при перемещении файлов внутри Home.
- Сообщения типа «macOS needs to repair your Library to run applications».
- При сохранении файла появляются ошибки о блокировке или отсутствии прав (частая проблема с Microsoft Office).
- Приложения падают при запуске или не обновляются.
- Браузеры не загружают профиль (Firefox/Chrome — «Unable to load your profile»).
- Фотографии не появляются в приложении Photos или приложение просит выбрать библиотеку при каждом запуске.
Пошаговая инструкция: сброс прав в домашней папке (Finder + Терминал)
Следуйте только если вы увидели описанные выше симптомы и понимаете, что делаете. Сначала попробуйте простые решения (перезагрузка, обновление приложения). Если не помогло — применяйте описанные методы.
- Откройте Finder. В боковой панели правой кнопкой нажмите на вашу домашнюю папку (домик) и выберите Информация (Get Info).
ALT: Окно информации о домашней папке пользователя с раскрытой секцией прав
- Нажмите на замок внизу окна и введите пароль администратора.
- Нажмите меню действий (шестерёнка) и выберите «Применить к вложенным объектам» (Apply to enclosed items).
ALT: Меню действий в окне информации с опцией «Применить к вложенным объектам» выделенной
- Подтвердите действие и дождитесь завершения. Это распространит текущие права на все вложенные элементы.
ALT: Диалог подтверждения применения изменений прав к вложенным элементам
- Откройте Терминал и выполните команду для сброса прав пользователя на корневом томе:
diskutil resetUserPermissions / `id -u`Эта команда попытается восстановить права для текущего пользователя по умолчанию. Если команда завершится успешно — перезагрузите Mac.
Ошибка 69841: действия при возникновении
Если команда вернула ошибку 69841, действуйте по версии macOS.
Для macOS High Sierra и старее
- Откройте Терминал и выполните:
chflags -R nouchg ~- После этого снова выполните:
diskutil resetUserPermissions / `id -u`- Перезагрузите компьютер.
Для macOS Mojave и новее
На Mojave и более новых версиях требуется предоставить Терминалу «Полный доступ к диску» (Full Disk Access).
- Откройте Системные настройки → Безопасность и конфиденциальность → вкладка «Конфиденциальность».
ALT: Список приложений в разделе «Полный доступ к диску» в Системных настройках
- Нажмите замок, внесите пароль, затем добавьте приложение Терминал в список Full Disk Access.
ALT: Диалог добавления приложения Терминал в список приложений с полным доступом к диску
- После этого снова выполните команды chflags и diskutil, как указано выше.
Важно: Full Disk Access даёт термину доступ к многим приватным папкам. Добавляйте туда только доверенные приложения.
Дополнительные безопасные команды и что они делают
- Просмотреть владельца и права:
ls -la ~/Library- Проверить владельца файла:
stat -f "%Su %Sg %A" /путь/до/файла- Сменить владельца на текущего пользователя (используйте осторожно):
sudo chown -R $(whoami) /путь/до/каталога- Сбросить права в каталоге (пример):
sudo chmod -R u+rwX,go+rX,go-w /путь/до/каталогаПримечание: команды с sudo и параметром -R рекурсивны. Неправильное применение может повредить права в системных каталогах.
Когда не стоит трогать права
- Если проблема затронула только одно приложение — сначала переустановите приложение или удалите его настройки (backup!).
- Если ошибка возникает при работе с системными файлами, не отключайте SIP без веской причины.
- Не выполняйте chown/chmod рекурсивно в корне / или в /System.
План действий при проблеме с правами — быстрого реагирования
- Соберите симптомы: какие приложения/функции ведут себя неправильно?
- Проверьте логи в Console.app за соответствующее время.
- Проверьте права проблемных файлов (ls -l, stat).
- Попробуйте переустановить приложение.
- Если проблема в ~/ — используйте Finder → Информация → Применить к вложенным объектам, затем diskutil resetUserPermissions.
- Если не помогло — создайте новый временный пользователь и проверьте, повторяется ли баг.
- Если новый пользователь работает нормально — проблема в настройках вашего профиля.
- В крайнем случае восстановите из резервной копии Time Machine или переустановите macOS, не отключая SIP по умолчанию.
Ролевые чек-листы (кто что делает)
Чек-лист для обычного пользователя
- Сделать резервную копию важных файлов (Time Machine или облако).
- Перезагрузить Mac.
- Обновить приложение, которое падает.
- Попробовать открыть приложение в новом профиле пользователя.
- Если всё ещё проблема — обратиться к администратору или следовать инструкции по сбросу прав.
Чек-лист для администратора/IT специалиста
- Проверить журналы (Console) и точное время ошибки.
- Определить проблему по владельцу/путям в ~/Library и ~/.
- Не выполнять рекурсивные chown/chmod в системных каталогах.
- Предложить временное решение: переустановка приложения или сброс настроек.
- При необходимости выполнить diskutil resetUserPermissions и chflags nouchg.
- Проверить, не мешает ли антивирус или утилиты сторонних производителей.
Чек-лист для разработчика
- Проверить, где ваше приложение пишет конфиги и какие права выставляет.
- Рекомендовать пользователю хранить временные файлы в ~/Library/Containers или в ~/Library/Application Support с корректными правами.
- Избегать установки файлов с root-владением в папке пользователя.
Модель принятия решения — flowchart
flowchart TD
A'Проблема с приложением' --> B{Работает в другом аккаунте?}
B -- Да --> C[Проблема в профиле пользователя]
B -- Нет --> D[Проблема общесистемная]
C --> E[Резервная копия и сброс прав в ~/]
E --> F{Успешно?}
F -- Да --> G[Закрыть тикет]
F -- Нет --> H[Создать новый профиль / восстановление из резервной копии]
D --> I[Проверить системные логи и SIP]
I --> J{Требует ли отключение SIP?}
J -- Нет --> K[Переустановить систему / обновить]
J -- Да --> L[Отключение SIP только как крайняя мера и с бэкапом]Типичные ошибки и контрпримеры
- Контрпример: «Я восстановил права — и всё заработало» — это возможно, если у приложения были сброшены права в ~/Library или в папке приложения. Но если причина — повреждённый файл настроек, восстановление прав не поможет.
- Контрпример: «Пропали системные файлы после chmod» — обычно вызвано рекурсивными chmod/chown в корне. Это не связано с автоматическим «порчей» прав — это следствие человеческой ошибки.
Мини-методология диагностики (быстрый чек)
- Повторите баг на тестовом учётном записи.
- Сравните права проблемного файла между рабочим и тестовым аккаунтом.
- Откатите права через diskutil или вручную, если известно, какие права нужны.
- Проверяйте решение на отдельной машине или виртуальной среде, если возможно.
Критерии приёмки
- Проблемное приложение запускается без ошибок у пользователя, который жаловался.
- Настройки приложения сохраняются между сеансами.
- Нет сообщений об ошибках о правах при сохранении/открытии файлов.
- Нет необходимости отключать SIP для нормальной работы.
Тест-кейсы / кейсы приёмки
- TC-01: Создать файл в ~/Documents, установить права только для владельца, проверить открытие в приложении под той же учёткой.
- TC-02: Скопировать профиль браузера в новый аккаунт, проверить загрузку профиля.
- TC-03: Выполнить diskutil resetUserPermissions и убедиться, что основные настройки пользователя сохранились.
- TC-04: Попробовать рекурсивный chflags -R nouchg ~ и повторить resetUserPermissions после добавления Терминала к Full Disk Access (Mojave+).
Безопасность и приватность
- Не давайте Full Disk Access не доверенным приложениям.
- Не храните пароли в открытых текстовых файлах в домашней папке.
- При обмене файлами по сети проверяйте, какие права присваиваются при копировании; при необходимости корректируйте их после переноса.
Короткий словарь терминов (1‑строчные определения)
- SIP: механизм защиты целостности системы, предотвращающий изменение критичных системных файлов.
- chmod: команда для изменения прав доступа к файлам.
- chown: команда для изменения владельца файла/папки.
- diskutil resetUserPermissions: утилита для сброса прав пользователя на корневом томе.
Часто встречающиеся вопросы (FAQ)
Q: Можно ли вернуть кнопку «Восстановить права» в Disk Utility?
A: Нет. Apple изменила способ управления правами и защиту системы; кнопка физически удалена и её восстановление невозможно без глубоких модификаций ОС.
Q: Нужно ли отключать SIP, чтобы восстановить права?
A: В большинстве случаев — нет. SIP защищает системные каталоги; права в ~/ восстанавливаются без отключения SIP. Отключать SIP стоит только как крайнюю меру и с полной резервной копией.
Q: Повлияет ли сброс прав в домашней папке на мои данные?
A: Сам по себе сброс прав не удаляет данные, но всегда делайте резервную копию перед операциями с владельцами/правами.
Заключение
Apple убрала видимую опцию «Восстановить права» потому, что модель управления правами и защита системных файлов эволюционировали. Это повысило безопасность, но оставило за пользователем и администраторами ответственность за корректные права в папках пользователя и в сторонних приложениях. Понимание базовой модели прав, осторожное применение команд и следование чек-листам помогут безопасно диагностировать и исправлять проблемы.
Важно: всегда делайте резервную копию перед изменением прав и избегайте рекурсивных команд в системных каталогах.