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?

eje211
źródło
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”

binarybob
źródło
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.

Martijn Courteaux
źródło
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.

dvand
źródło
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.

abbaroo
źródło
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.

Mike Hockurtz
źródło
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@ [email protected]/Documents/.%cb_defense/cb.doc
-rw-rw-rw-  1 root  wheel  - 41984  1 Mar 11:20 [email protected]/Documents/.%cb_defense/cb.doc

$ sudo rm -rf [email protected]/Documents/.%cb_defense/cb.doc
rm: [email protected]/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.

Leony
źródło