Да, Mac имеет много улучшений Unix в области файлов. Не обращая внимания на целую ветвь ресурсов , которая больше не используется, есть:
- стандартные разрешения Unix
ugo rwx и так далее. Применяются обычные инструменты Unix.
- ACL, видимые с помощью
ls -le и изменяемые с помощью chmod [ -a | +a | =a ] .
- Флаги файла можно просмотреть с помощью
ls -lO (заглавная, не ноль) и изменить с помощью chflags .
- расширенные атрибуты, которые можно просматривать с помощью
ls -l@ (только ключи атрибутов), а также просматривать и изменять с помощью xattr . (Используйте xattr -h для помощи, если man xattr ничего вам не дает.)
- Начиная с OS X 10.11 "El Capitan", защита целостности системы (SIP) дополнительно защищает некоторые файлы от изменений от обычных процессов, даже при использовании
sudo для запуска от имени пользователя root . Файлы, защищенные SIP, будут перечислены ls -lO как имеющие флаг restricted и / или будут перечислены ls -l@ как имеющие атрибут com.apple.rootless .
Вам может быть отказано в операциях с файлом из-за разрешений Unix, списков ACL, файловых флагов или SIP. Чтобы полностью разблокировать файл:
sudo chmod -N file # Remove ACLs from file
sudo chmod ugo+rw file # Give everyone read-write permission to file
sudo chflags nouchg file # Clear the user immutable flag from file
sudo chflags norestricted file # Remove the SIP protection from file
sudo xattr -d com.apple.rootless file # Remove SIP protection from file
Если защита целостности системы (SIP) включена, sudo chflags norestricted и sudo xattr -d com.apple.rootless также будут возвращать ошибку "Операция не разрешена". Чтобы снять флажок и / или атрибут, вам нужно загрузиться в macOS Recovery и запустить команды из терминала (возможно, вам сначала придется использовать Дисковую утилиту, чтобы разблокировать и смонтировать загрузочный диск, затем помните, что ваши файлы будут в /Volumes/Macintosh HD или как там у вашего загрузочного диска) или вообще отключите SIP, а затем перезагрузите компьютер, и команды должны работать. Имейте в виду, однако, что будущие обновления ОС, скорее всего, восстановят флаг с restricted и атрибут com.apple.rootless для всех файлов, из которых вы его удалили.
Отключение SIP не рекомендуется, так как оно снимает большую защиту от вредоносных программ и случайных повреждений, а также не требуется, когда вы можете просто снять защиту для каждого файла отдельно. Если вы отключите SIP, включите его снова после внесения изменений.
Обратите внимание, что если ls -lO показывает, что флаг schg установлен, вы должны войти в однопользовательский режим, чтобы сбросить его. Я не буду вдаваться в подробности, потому что есть большие вопросы о том, почему в файле установлен этот флаг и почему вы пытаетесь с ним связываться и каковы будут последствия.