Plik nie może zostać przeniesiony przez root na OS X


53

Próbowałem przenieść kilka plików do podfolderu w systemie OS X. Jeden odmówił przeniesienia. To powiedziało Operation not permitted. Próbowałem ponownie jako 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

Próbowałem lsattrna innych plikach; wszystkie pliki, które próbowałem, dały mi ten sam komunikat:Inappropriate ioctl for device While reading...

Pochodząc z Linuksa, nie wiedziałem o flagach, więc oto wynik 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

Próbowałem OS X Disk Utility; powiedział, że na moim dysku nie było żadnych błędów. Co tu się dzieje?


1
lsattrnie jest standardową komendą OS X; spróbuj ls -leO@zamiast tego. Ponadto na jakim woluminie znajduje się plik? Spróbuj mountsprawdzić, z jakimi atrybutami jest zamontowany wolumin.
Gordon Davisson

1
@GordonDavisson, wydaje się, że jesteś na dobrej drodze. ls -leo @ mówi, że plik jest jedynym z atrybutem „uchg”, co dla mnie brzmi jak „niezmienne”.
eje211

Witamy w Zapytaj inaczej!
Usuwam zmiany, zadam

Odpowiedzi:


30

Wygląda na to, że plik jest dla mnie zablokowany, dlatego pojawia się atrybut uchg. Powinieneś być w stanie użyć następującego polecenia, aby usunąć zablokowany atrybut:

chflags nouchg file

lub kliknij plik prawym przyciskiem myszy w Finderze, kliknij „Uzyskaj informacje”, a następnie usuń zaznaczenie pola wyboru „Zablokowane”


1
Ha! Wygląda na to, że odpowiedziałeś na własne pytanie, tak jak ja zamieszczałem tę odpowiedź!
binarybob

84

Dla ludzi, potykając się na to w OS X 10.11+ era (El Capitan lub nowsze): Apple dodaje całą nową warstwę zabezpieczeń w OS X . Odebrali niektóre uprawnienia z rootowania. Plik, który próbujesz zmodyfikować, ma restrictedflagę. Tylko restrictedprocesy podpisane przez Apple będą mogły modyfikować te pliki. Można jednak wyłączyć ten system bezpieczeństwa poprzez uruchamianie w trybie awaryjnym i wyłączenie go w Terminalu wykonując: csrutil disable.

Możesz też po prostu uruchomić Terminal w trybie odzyskiwania i usunąć tam plik. Lub nawet spróbuj uruchomić w środowisku Linux z obsługą HFS + (przynajmniej jeśli nie korzystasz jeszcze z APFS), aby zmienić plik.


1
Co oznacza csr w csrutil?
Michael Terry,

12
Wierzę, że to Benjamin Franklin powiedział „Ci, którzy poświęcają łatwość użycia dla bezpieczeństwa dezerterów”. Lub coś.
dgig

5

Próbować:

chflags -f -R nouchg directory

w katalogu wyższego poziomu, aby zatrzymać ten problem.


FWIW: Miałem ten problem zsh: locking failed for /Users/me/.zhistory: operation not permitted: reading anywayi naprawiłem to polecenie w moim katalogu domowym
raine

0

Miałem również ten problem i odkryłem, że folder, w którym znajdował się plik, został zablokowany. Upewnij się więc, że to nieprawda. Wykonaj polecenie „pobierz informacje” o folderze w wyszukiwarce i upewnij się, że zablokowane pole wyboru nie jest zaznaczone.


0

Zdaję sobie sprawę, że to bardzo stary temat, ale nie widzę tego wątku dotyczącego mojego objawu, więc pomyślałem, że opublikuję kolejną opinię.

Zdarzyło mi się to z zewnętrznym dyskiem, który działał idealnie na Snow Leopard iMac, który został po drodze uaktualniony do El Capitan. Na początku tego roku wziąłem ten dysk i umieściłem go w nowym pudełku systemu Windows 10 z systemem Paragon HFS dla systemu Windows. I kopiowane setki GB plików OD systemie Windows DO HFS + na tym dysku i podłączeniu go do komputera iMac. Wszystko działało dobrze, z wyjątkiem jednego skryptu powłoki, który miałem, że pliki tymczasowe do tworzenia kopii zapasowych napotkały ten problem uchg.

W skrócie: pliki i foldery utworzone w systemie El Capitan lub Windows 10 przy użyciu Paragon HFS, po przeniesieniu z powrotem do pola Snow Leopard, „zablokowane” pole radiowe NIE zostanie zaznaczone po wybraniu Get Infow Finderze. Jednak sugestie innych działały dla mnie dobrze:

  • sprawdź, czy to jest problem, uruchamiając ls -leO@(to duża litera) w podejrzanym pliku
  • jako root uruchom chflags -R nouchgw katalogu nadrzędnym (nie ma opcji -f w systemie Snow Leopard)

Będzie działać, po prostu nie oczekuj takich samych wizualnych wskazówek, jeśli twój dysk przeszedł między systemami operacyjnymi lub jeśli używasz Paragon HFS.


chflags -f -R katalog nouchg działa dzięki
odjeezeus

0

Miałem plik, którego nie mogłem usunąć w terminalu:

$ 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

Dla mnie zadziałało otwarcie Findera i usunięcie całego katalogu zawierającego. W moim rozumieniu Finder usuwa katalogi jako całość całkowicie ignorując ich zawartość, więc nie podlega takim samym ograniczeniom jak zwykłe rm -rf.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.