Как устроены права доступа к дискам в macOS и внешние накопители

Проблемы с правами доступа мешают читать, изменять или извлекать внешние диски на Mac. Разбираемся, как macOS работает с правами на съёмных накопителях.

Вы подключаете внешний диск, файлы читаются, но сохранить на него ничего не получается. Или диск, который прекрасно работал на другом вашем Mac, не даёт записывать на этом. Или система каждый раз спрашивает пароль, когда вы пытаетесь открыть определённые папки на внешнем диске.

Короткий ответ: большинство проблем с правами доступа на внешних дисках Mac решаются включением параметра «Игнорировать права доступа к данному тому». Выберите диск в Finder, нажмите Command-I и поставьте флажок внизу окна «Свойства». Это отключает метки владельца, которые рассинхронизируются при переносе дисков между разными Mac. Подходит только для дисков APFS и HFS+ — у exFAT системы прав доступа нет вообще.

Проблемы с правами доступа на внешних дисках сбивают с толку, потому что правила здесь отличаются от внутреннего накопителя Mac. macOS применяет права владения и доступа к внешним томам способами, которые не всегда очевидны.

Как macOS управляет правами владения на внешних дисках

У внутреннего диска вашего Mac есть понятный владелец — это вы. У вашей учётной записи есть числовой идентификатор (обычно 501 для первой созданной учётной записи), и этот идентификатор проставляется на каждом созданном вами файле.

Внешние диски несут собственные метки прав от того компьютера, который последним на них писал. Если вы создали файлы на Mac, где ваш идентификатор пользователя был 501, и подключаете диск к другому Mac, где вы тоже пользователь 501, всё совпадает. Но если идентификаторы не совпадают, возникают конфликты прав.

Это часто случается, когда диск используется на нескольких Mac, особенно в рабочем окружении, где учётные записи на каждой машине настроены по-разному.

Игнорирование прав владения на внешних томах

В macOS есть встроенное решение для проблемы несовпадения владельцев. Выберите внешний диск в Finder, нажмите Command-I, чтобы открыть «Свойства», и найдите внизу пункт «Игнорировать права доступа к данному тому».

Когда этот флажок установлен, macOS считает каждый файл на диске принадлежащим текущему пользователю. Метки владельца полностью игнорируются. Это поведение по умолчанию для большинства съёмных дисков APFS и Mac OS Extended (HFS+) — именно поэтому проблемы с правами обычно не возникают.

Обратите внимание: этот флажок появляется только для томов APFS и HFS+. Для дисков exFAT или FAT32 его нет, потому что у этих файловых систем нет собственной системы прав доступа.

Если этот параметр оказался отключён (это бывает после форматирования или после некоторых обновлений macOS), начинают появляться ошибки доступа. Включите его обратно — и проблемы исчезнут.

Учтите: для изменения этого параметра нужны права администратора. Если флажок неактивен, нажмите на значок замка внизу окна «Свойства» и введите пароль.

Права доступа APFS против exFAT

Диски APFS несут полный набор прав POSIX: флаги доступа на чтение, запись и выполнение для владельца, группы и всех остальных. Они также поддерживают списки управления доступом (ACL) для более тонкой настройки. Это та же система прав, что используется на внутреннем диске вашего Mac.

У дисков exFAT системы прав доступа нет вообще. Каждый файл доступен всем. Казалось бы, это должно полностью избавить от проблем с правами, но macOS иногда синтезирует права для томов exFAT, и это приводит к неожиданному поведению. (Выбираете файловую систему для нового диска? Смотрите APFS или exFAT: какой формат выбрать для внешнего диска на Mac.)

Когда macOS монтирует диск exFAT, она назначает владельцем текущего пользователя и применяет права по умолчанию. Обычно всё работает нормально. Но если при монтировании произошла ошибка или на диске есть повреждения файловой системы, синтезированные права могут оказаться неправильными.

Если диск exFAT внезапно стал доступен только для чтения, причина обычно в повреждении файловой системы, а не в правах доступа. Запустите «Первую помощь» в Дисковой утилите, чтобы проверить и восстановить его.

Полный доступ к диску и внешние накопители

macOS Ventura, Sonoma и Sequoia применяют ограничения Полного доступа к диску строже, чем предыдущие версии. Эти ограничения влияют на то, как приложения работают с внешними дисками.

Полный доступ к диску — это настройка конфиденциальности, которая определяет, какие приложения могут получить доступ ко всему содержимому ваших накопителей, включая внешние диски. Без Полного доступа к диску приложение может открыть файлы, которые вы ему явно передали, но не сможет свободно просматривать содержимое диска.

Для извлечения это важно, потому что диагностическим инструментам вроде Терминала нужен Полный доступ к диску, чтобы видеть все процессы, использующие диск. Без него команда lsof показывает неполные результаты. Вы запускаете lsof для своего диска, не видите ничего блокирующего, но всё равно не можете извлечь диск, потому что настоящий «виновник» скрыт от Терминала. (В нашем руководстве по команде lsof для пользователей Mac шаблоны доступа разобраны подробнее.)

Предоставьте Полный доступ к диску Терминалу (или предпочитаемому вами терминальному приложению) в разделе «Системные настройки» > «Конфиденциальность и безопасность» > «Полный доступ к диску». Так вы получите полную картину при диагностике проблем с извлечением.

Когда права доступа мешают извлечению

Проблемы с правами обычно не мешают извлечению напрямую, но вызывают косвенные сбои.

Если процесс пытается записать данные на внешний диск и натыкается на ошибку доступа, он может повторять попытку снова и снова вместо того, чтобы корректно завершиться. Каждая повторная попытка держит открытым файловый дескриптор. Процесс фактически застревает в цикле, не в состоянии ни завершить операцию, ни освободить диск.

Такое поведение характерно для программ резервного копирования, служб синхронизации и системных процессов вроде Spotlight. Они пытаются записать на диск метаданные или индекс, получают отказ из-за прав доступа и продолжают пытаться. Это одна из скрытых причин общей ошибки «диск используется» — об остальных типичных «виновниках» читайте в нашем руководстве по устранению ошибки «диск используется» в macOS.

Устранение исходной проблемы с правами (обычно включением параметра «Игнорировать права доступа к данному тому») решает и проблему с извлечением.

Восстановление прав доступа на внешних дисках

Старая функция «Восстановить права доступа диска» в Дисковой утилите была убрана в macOS El Capitan. Она применялась только к системным файлам на загрузочном диске, поэтому, вопреки распространённому заблуждению, никогда не имела отношения к внешним дискам.

Для внешних дисков ближайший аналог — сброс прав владения и доступа вручную:

sudo chown -R $(whoami) /Volumes/YourDriveName/
sudo chmod -R u+rw /Volumes/YourDriveName/

Это передаёт вашей учётной записи право владения и доступ на чтение и запись ко всему на диске. Делайте так только с личными дисками, а не с общими, где другим пользователям нужно сохранять собственные права.

Для менее радикального решения просто включите параметр «Игнорировать права доступа к данному тому», как описано выше.

Зашифрованные диски и права доступа

Если ваш внешний диск зашифрован средствами APFS, для его монтирования нужен пароль шифрования. Но после монтирования права работают как обычно.

У внешних дисков, зашифрованных через FileVault, иногда возникают проблемы с правами, если метаданные шифрования рассинхронизировались. Если вы сталкиваетесь с ошибками доступа на зашифрованном диске, попробуйте заблокировать (извлечь) и разблокировать (смонтировать с вводом пароля) его. Это заставляет macOS заново установить контекст шифрования и часто устраняет аномалии с правами.

Чтобы всё работало вместе

Проблемы с правами, сбои извлечения и ошибки файловой системы часто усиливают друг друга. Ошибка доступа приводит к зависанию фонового процесса, что блокирует извлечение, что ведёт к некорректному отключению, что вызывает повреждение файловой системы, что порождает новые ошибки доступа.

Разорвать этот круг помогает правильное извлечение. Когда диск не извлекается и вы подозреваете, что дело в правах доступа, Ejecta определит зависший процесс и позволит корректно его завершить. После этого устраните исходную проблему с правами, чтобы она больше не повторялась.

Права доступа на внешних дисках проще, чем кажется, как только вы разберётесь в модели владения. Большинство проблем решается одним флажком. Но когда происходит что-то более сложное, знание, куда смотреть, решает всё.

Если вам не хочется каждый раз обращаться к Терминалу, Ejecta точно покажет, какой процесс блокирует ваш диск, — и позволит завершить его одним кликом прямо из строки меню.

Купить — $9.99