Да, Mac имеет много улучшений Unix в области файлов. Игнорируя всю resource fork вещь, которая больше не используется, есть:
- стандартные разрешения 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”, * System Integrity Protection ** (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 и либо выполнить команды с терминала (возможно, сначала вам придется использовать Disk Utility для разблокировки и монтирования вашего загрузочного диска, затем помните, что ваши файлы будут находиться под /Volumes/Macintosh HD
или любым другим именем вашего загрузочного диска) или отключить SIP вообще , а затем перезагрузиться, и команды должны затем работать. Помните, однако, что будущие обновления ОС, скорее всего, восстановят флаг restricted
и атрибут com.apple.rootless
для любых файлов, с которых вы его удалили.
_ Отключение SIP не рекомендуется _ так как оно удаляет много защиты от вредоносных программ и случайных повреждений, плюс это не обязательно, когда вы можете просто удалить защиту на основе каждого файла. Если вы отключите SIP, повторно включите его, когда вы закончите вносить изменения.
Обратите внимание, что если ls -lO
показывает, что флаг schg
установлен, вы должны перейти в однопользовательский режим, чтобы снять его. Я не собираюсь вдаваться в это, т.к. есть большие вопросы о том, почему в файле установлен этот флаг, почему вы пытаетесь его испортить и каковы будут последствия.