Файл не может быть перемещен пользователем root в OS X

53

Я попытался переместить несколько файлов в подпапку на OS X. Один отказался переместить. Это сказал Operation not permitted. Я попробовал еще раз как root:

$ sudo mv file subfolder/
mv: rename file to subfolder/file: Operation not permitted
$ sudo mv file filex
mv: rename file to filex: Operation not permitted
$ lsattr file
lsattr: Inappropriate ioctl for device While reading flags on file

Я пробовал lsattrна других файлах; все файлы, которые я пробовал, дали мне одно и то же сообщение:Inappropriate ioctl for device While reading...

Исходя из Linux, я не знал о флагах, поэтому вот вывод ls -leO@ file:

$ ls -leO@ file otherfile
-rwxrwxrwx  1 eeytan  staff  uchg 79549 Nov 11  2010 file
-rw-r--r--  1 eeytan  staff  -     5071 Sep  7 02:37 otherfile

Я попробовал Дисковую утилиту OS X; он сказал, что на моем диске не было ошибок. Что тут происходит?

eje211
источник
1
lsattrне является стандартной командой OS X; попробуйте ls -leO@вместо. Кроме того, на каком объеме находится файл? Попробуйте mountпосмотреть, с какими атрибутами смонтирован том.
Гордон Дэвиссон
1
@GordonDavisson, кажется, вы на правильном пути. ls -leo @ говорит, что файл является единственным с атрибутом "uchg", который для меня звучит как "неизменяемый".
eje211 9.09.13
Добро пожаловать, чтобы спросить другого! Я удалю правки и
внесу

Ответы:

30

Похоже, файл заблокирован для меня, поэтому атрибут uchg появляется. Вы должны использовать следующую команду для удаления заблокированного атрибута:

chflags nouchg file

или щелкните правой кнопкой мыши файл в Finder, нажмите «Получить информацию», затем снимите флажок «Заблокировано»

binarybob
источник
1
Ха! Похоже, вы ответили на свой вопрос так же, как я отправил этот ответ!
двоичный Боб
84

Для людей , наткнуться на это в эпоху OS X 10.11+ (El Capitan или новее): Apple , добавил целый новый уровень безопасности в OS X . Они отняли некоторые привилегии у root. Файл, который вы пытаетесь изменить, имеет restrictedфлаг. Только restrictedпроцессы, подписанные Apple, смогут изменять эти файлы. Тем не менее, вы можете отключить эту систему безопасности, загрузившись в режиме восстановления и отключить его в терминале, выполнив: csrutil disable.

Кроме того, вы также можете просто запустить Терминал в режиме восстановления и удалить файл там. Или даже попробуйте загрузиться в среде Linux с поддержкой HFS + (по крайней мере, если вы еще не используете APFS), чтобы изменить файл.

Мартейн Курто
источник
1
Что означает csr в csrutil?
Майкл Терри
12
Я полагаю, что это был Бенджамин Франклин, который сказал: «Те, кто жертвует простотой использования ради безопасности, тоже не стоит». Или что-то.
Джиг
5

Пытаться:

chflags -f -R nouchg directory

на каталог более высокого уровня, чтобы остановить эту проблему.

dvand
источник
FWIW: у меня была эта проблема, zsh: locking failed for /Users/me/.zhistory: operation not permitted: reading anywayи выполнение этой команды в моем домашнем каталоге исправило ее
raine
1

У меня был файл, который я не мог удалить в терминале:

$ sudo ls -leO@ foo@example.com/Documents/.%cb_defense/cb.doc
-rw-rw-rw-  1 root  wheel  - 41984  1 Mar 11:20 foo@example.com/Documents/.%cb_defense/cb.doc

$ sudo rm -rf foo@example.com/Documents/.%cb_defense/cb.doc
rm: foo@example.com/Documents/.%cb_defense/cb.doc: Operation not permitted

Для меня работало открытие Finder и удаление целого каталога. Насколько я понимаю, Finder удаляет каталоги как единое целое, не обращая внимания на их содержимое, поэтому на него не распространяются те же ограничения, что и на обычные rm -rf.

Leons
источник
0

У меня тоже была эта проблема, и я обнаружил, что папка, в которой находился файл, была заблокирована. Поэтому убедитесь, что это не так. Сделайте «получить информацию» о папке в поисковике и убедитесь, что заблокированный флажок не установлен.

abbaroo
источник
0

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

У меня было такое с внешним диском, который отлично работал на Snow Leopard iMac, который по пути был обновлен до El Capitan. Ранее в этом году я взял этот диск и поместил его в новую коробку Windows 10, на которой работала Paragon HFS for Windows. Я скопировал сотни ГБ файлов из Windows TO HFS + на этот диск и подключил его обратно в iMac. Все работало нормально, за исключением одного сценария оболочки, который у меня был, когда поставленные файлы для резервного копирования столкнулись с этой проблемой.

Вкратце: файлы и папки, созданные в El Capitan или Windows 10 с использованием Paragon HFS, при перемещении обратно в окно Snow Leopard «заблокированный» переключатель не будет отмечен при выборе Get Infoв Finder. Тем не менее, другие предложения работали хорошо для меня:

  • убедитесь, что это проблема, запустив ls -leO@(это заглавная буква) в файле с подозрением
  • от имени root запускайте chflags -R nouchgв родительском каталоге (в Snow Leopard нет -f)

Это будет работать, только не ожидайте точно таких же визуальных подсказок, если ваш диск работал между операционными системами или если вы используете Paragon HFS.

Майк Хоккурц
источник
chflags -f -R каталог nouchg работает, спасибо
odjeezeus