59

Я пытаюсь сделать следующее на моем Mac (10.6.7):

sudo chown myusername:wheel ./entries

но Unix/Mac возвращает "Операция не разрешена". Когда я ls -lash файл преступника, он выглядит следующим образом:

8 -rwxrwxrwx   1 myusername  staff   394B Apr 26 23:26 entries

Я пробовал sudo и sudo su ; ничего не работает Есть идеи, что случилось?

Я пытаюсь chmod файлы , которые я скопировал из моей старой коробки Ubuntu. Большинство файлов успешно chmod '; только этот застрял, и я не понимаю, почему.

7 ответов7

79

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

18

У меня такая же проблема. Оказывается, оскорбительные файлы были помечены ОС как "Заблокированные". Я нашел это решение, и оно решило проблемы за считанные секунды:

http://explanatorygap.net/2005/07/10/unlocking-files-recursively-from-the-command-line/

Кажется, что команда rm изменилась в Tiger так, что если вы используете rm -Rf с повышенными привилегиями, она автоматически разблокирует файлы.

В OS X до Tiger: find /Volumes/Transit -flags +uchg -print0 | xargs -0 chflags nouchg

В OS X после Tiger: sudo rm -Rf foldername/

Кроме того, даже после OS X 10.4 могут существовать флаги метаданных файла, такие как uchg и uappnd , которые предотвращают любые изменения прав доступа или владения файлом. chflags может удалить флаги. Некоторые из атрибутов / метаданных файла и как они обрабатываются различными инструментами копирования, здесь.

12

У меня была такая же проблема с Crashplan.app.

Все решения, перечисленные здесь, мне не помогут, но вот это помогло:http://forums.macrumors.com/showthread.php?t=1546163

Вы должны изменить системные и пользовательские неизменяемые флаги:

Сделайте это, чтобы увидеть, какие флаги активны в вашем файле / папке:

ls -lhdO MyFile

Ответ может выглядеть так:

drwxrwxr-x 3 root admin schg,uchg 102B Apr 8 2013 MyFile

schg, uchg - это те неизменные флаги. Один для системы и один для пользователя. Чтобы удалить их, сделайте следующее:

chflags noschg CrashPlan.app # this removes system immutable flag
chflags nouchg CrashPlan.app # this removes the user immutable flags

Тогда, по крайней мере для меня, файл разблокирован, и вы можете удалить его!

11

В OS X 10.11 (El Capitan) это также может быть вызвано новой функцией Rootless . Смотрите этот ответ для объяснения.

Короче говоря, для некоторых важных каталогов невозможно изменить их - используете ли вы sudo , chown или chmod . Это влияет на каталог /usr (хотя вам разрешено изменять /usr/local).

Чтобы изменить защищенный от Rootless каталог, вам нужно отключить Rootless. И, конечно же, повторно включите его после внесения изменений, потому что это важное улучшение безопасности.

6

После долгих попыток вот что я должен был сделать, чтобы решить проблему:

  • Переместил файл в ~/Desktop
  • sudo chown myusername:staff ./entries
  • Перемещение файла обратно в исходное местоположение не сработало (операция снова не разрешена), поэтому ...
  • sudo rm ./entries
  • sudo mv ~/Desktop/entries ./entries
4

У меня была такая же проблема, о моей домашней папке. В конце я просто использовал поиск так:

Зайдите -> Компьютер -> ваш диск -> Пользователи -> ваше имя пользователя -> щелкните правой кнопкой мыши -> Получить информацию

Я обнаружил, что это было заблокировано, вероятно, я делал это в прошлом и забыл. Снимите флажок заблокирован, проблема устранена.

Я могу рекомендовать использовать «Get Info» из поиска, чтобы решить такие проблемы.

(OS X 10.8.3)

0

Убедитесь, что файл и его родительская папка разблокированы

Я столкнулся с подобной проблемой при попытке удалить файл подписи электронной почты Mac Mail. Я не мог удалить его, пока не разблокировал файл и его родительскую папку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .