Введение / Зачем это нужно
Ошибки прав доступа в macOS часто проявляются как «У вас нет разрешений», отказ в запуске приложений или невозможность сохранить изменения в документах. Система использует строгую модель ACL и POSIX-разрешений для изоляции данных. Этот гайд поможет вам безопасно диагностировать и исправить нарушения, вернув контроль над файлами без использования стороннего софта.
Требования / Подготовка
Перед началом убедитесь, что у вас есть права администратора на текущем аккаунте Mac. Сделайте резервную копию целевой папки через Time Machine или скопируйте её на внешний диск. Работайте только с пользовательскими данными (~/Документы, ~/Загрузки). Внесение изменений в системные директории (/System, /Library) может нарушить работу macOS.
Шаг 1: Диагностика текущих разрешений
Откройте приложение «Терминал» (находится в Программы → Утилиты) и выполните команду, указав путь к проблемному файлу или папке:
ls -la ~/Документы/проект
Вывод покажет права в формате -rwxr-xr--. Первый символ обозначает тип (- для файла, d для папки), далее идут три группы: владелец, группа, остальные. Буква r — чтение, w — запись, x — выполнение. Если вместо ожидаемых прав вы видите ---------- или владельца root, переходите к исправлению.
Шаг 2: Сброс через графический интерфейс
Для большинства задач не требуется командная строка. Найдите проблемный элемент в Finder, выделите его и нажмите Cmd + I. В открывшемся окне прокрутите вниз до раздела «Общий доступ и права доступа».
- Нажмите на замок в нижнем углу и введите пароль администратора.
- В списке пользователей выберите свой аккаунт и измените статус на «Чтение и запись».
- Нажмите кнопку с шестерёнкой и выберите «Применить к вложенным объектам» (только для папок). Система мгновенно обновит ACL для всех вложенных файлов.
Шаг 3: Точная настройка через Терминал
Если интерфейс Finder не срабатывает или нужно обработать сотни файлов, используйте chown (смена владельца) и chmod (изменение битов прав). Выполняйте команды последовательно.
Сначала верните владение вашей учетной записи:
# Замените ~/путь/к/папке на реальный адрес
sudo chown -R $(whoami):staff ~/путь/к/папке
Флаг -R применяет операцию рекурсивно, $(whoami) автоматически подставит текущее имя пользователя.
Затем настройте стандартные безопасные разрешения:
# 755 для папок (чтение/запись/выполнение владельцу, остальным только чтение и выполнение)
sudo find ~/путь/к/папке -type d -exec chmod 755 {} +
# 644 для файлов (чтение/запись владельцу, остальным только чтение)
sudo find ~/путь/к/папке -type f -exec chmod 644 {} +
⚠️ Важно: Никогда не используйте
sudo chmod 777 -R. Это открывает полный доступ ко всем файлам, что делает данные уязвимыми для вредоносных скриптов.
Шаг 4: Восстановление через Дисковую утилиту
При масштабных повреждениях файловой системы APFS ручное исправление неэффективно. Перезагрузите Mac, удерживая кнопку питания до появления параметров запуска. Выберите «Параметры» → «Продолжить», чтобы войти в режим восстановления.
Откройте «Дисковую утилиту», выберите загрузочный диск Macintosh HD — Data и нажмите «Первая помощь». Утилита автоматически проверит и восстановит базовые разрешения каталогов, не затрагивая пользовательские файлы. Перезагрузите систему после завершения.
Проверка результата
Вернитесь в Терминал и повторно запустите ls -la ~/путь/к/папке. Убедитесь, что владелец совпадает с вашим логином, а права соответствуют шаблону drwxr-xr-x для папок. Попробуйте открыть файл в стандартном приложении или скопировать его на внешний накопитель. Ошибки «Отказано в доступе» больше появляться не должны.
Возможные проблемы
Команда возвращает Operation not permitted
Это защитный механизм SIP или требование «Полного доступа к диску». Перейдите в Системные настройки → Конфиденциальность и безопасность → Полный доступ к диску, добавьте Терминал в список и перезапустите его.
Права сбрасываются после перезагрузки
Некоторые приложения (например, облачные хранилища или антивирусы) блокируют запись в свои каталоги. Временно приостановите синхронизацию или добавьте папку в исключения защитного ПО перед применением chmod.
Файл остаётся заблокированным флагом uchg
Флаги файловой системы имеют приоритет над POSIX-правами. Снимите блокировку командой:
sudo chflags nouchg ~/путь/к/файлу
После снятия флага повторите шаги назначения владельца и разрешений.