Да, 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
установлен, вы должны войти в однопользовательский режим, чтобы сбросить его. Я не буду вдаваться в подробности, потому что есть большие вопросы о том, почему в файле установлен этот флаг и почему вы пытаетесь с ним связываться и каковы будут последствия.