Файл не можна переміщувати кореневим способом на 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; він сказав, що на моєму диску не було помилок. Що тут відбувається?


1
lsattrне стандартна команда OS X; спробуйте ls -leO@замість цього. Крім того, на якому томі міститься файл? Спробуйте mountпобачити, з якими атрибутами змонтовано гучність.
Гордон Девіссон

1
@GordonDavisson, здається, ти на правильному шляху. ls -leo @ каже, що файл - єдиний з атрибутом "uchg", який для мене звучить як "незмінний".
eje211

Ласкаво просимо до "Запитайте різних" Я
видаляю

Відповіді:


30

Здається, що файл заблокований для мене, саме тому з'являється атрибут uchg. Ви повинні мати змогу використовувати таку команду, щоб видалити заблокований атрибут:

chflags nouchg file

або клацніть правою кнопкою миші файл у Finder, натисніть "Отримати інформацію" та зніміть прапорець "Заблокований"


1
Га! Схоже, ви відповіли на власне запитання так само, як я публікував цю відповідь!
binarybob

84

Для людей , наткнутися на це в OS X 10.11+ ери (El Capitan або більш пізньої версії): Apple , додав цілий новий рівень безпеки в OS X . Вони відібрали в кореня деякі привілеї. У файлі, який ви намагаєтеся змінити, є restrictedпрапор. Тільки restrictedпроцеси, підписані Apple, зможуть змінювати ці файли. Тим НЕ менше, ви можете відключити цю систему безпеки, завантажившись в режимі відновлення і відключити його в терміналі, виконавши: csrutil disable.

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


1
Що означає csr в csrutil?
Майкл Террі

12
Я вважаю, що Бенджамін Франклін сказав: "Ті, хто не жертвує простотою використання для дезертаря безпеки". Або щось.
дгіг

5

Спробуйте:

chflags -f -R nouchg directory

в каталозі вищого рівня, щоб зупинити цю проблему.


FWIW: У мене виникла ця проблема, zsh: locking failed for /Users/me/.zhistory: operation not permitted: reading anywayі запустивши цю команду в домашньому каталозі, її виправили
raine

0

У мене теж була ця проблема, і я виявив, що папка, у якій був файл, заблокована. Тому переконайтеся, що це неправда. Виконайте "отримання інформації" у папці у пошуку, і переконайтесь, що заблокований прапорець не встановлений.


0

Я розумію, що це дуже стара тема, але я не бачу цієї теми, що стосується мого симптому, тому я подумав, що опублікую іншу думку.

У мене це сталося із зовнішнім накопичувачем, який прекрасно функціонував на iMac Snow Leopard, який по дорозі був оновлений до El Capitan. На початку цього року я взяв цей накопичувач і поклав його в нове вікно Windows 10, на якому працював Paragon HFS для Windows. Я скопіював сотні Гб файлів З ОС Windows TO HFS + на цьому диску і підключити його назад в IMAC. Все працювало нормально, за винятком одного сценарію оболонки, який у мене був, що поетапні файли для резервного копіювання зіткнулися з проблемою uchg.

Коротше кажучи: файли та папки, створені в 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

0

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

$ 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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.