EDYCJA : Problem polegał na tym, że Apple używa uprawnień do oznaczania kopii zapasowych i uniemożliwia ich modyfikację (prawdopodobnie funkcję bezpieczeństwa). Za pomocą chmod -RN <dir>
usunąłem dane ACL ze wszystkich folderów z ważnymi danymi, co pozwoliło mi stać się właścicielem i zastosować odpowiednie uprawnienia.
Oryginalne pytanie
Mam bardzo dużą kopię zapasową (> 700 GB), która ma teraz nieprawidłowe uprawnienia (mój identyfikator UID zmienił się podczas czystej instalacji, długa historia) i muszę je zmienić. Czasochłonną opcją jest ręczne przeglądanie każdego folderu i zmiana uprawnień, ale zajmie to wieki.
Chcę użyć, chown
aby stać się właścicielem wszystkich moich ważnych danych, a następnie użyć chmod 700
tych wszystkich folderów, aby udzielić rwx
uprawnień tylko mnie.
Idealnym rozwiązaniem jest metoda polegająca find
na rekursywnym wyszukiwaniu folderów pasujących do wyrażenia regularnego (moim obecnym jest .*/[DCV].*|Pictures|M[ou].*
), a następnie uczynienie mojego identyfikatora UID właścicielem i ustawienie uprawnień na 700.
Ważny element, którego nie mogę pojąć:
kiedy próbuję uciec chown Me DirectoryName
, dostaję chown: DirectoryName: Operation not permitted
.
Wszystko, co znajduję, wiąże się ze zmianą uprawnień do pliku, a nie katalogu. Może patrzę na to w niewłaściwy sposób?
Coś mi mówi, że nie ma sposobu na podanie mojego identyfikatora UID rwx
i ---
wszystkim innym.
Jak mogę to osiągnąć? Używam Mac OS X 10.10.3.
Wiem, że jest to forum UNIX / Linux (i biegnę Mac), ale to pytanie jest o wiele więcej na temat korzystania z powłoki, chown
, chmod
, i uprawnienia oraz wszelkie rozwiązania zamieszczonych tu będą mieć zastosowanie do dowolnego systemu operacyjnego UNIX. Byłoby lepiej, gdyby opublikowane rozwiązania sprawiły, że moje starsze kopie zapasowe pojawią się ponownie w Time Machine.
Dziękujemy wszystkim, którzy szybko odpowiedzieli, ale chown
z jakiegoś powodu po prostu nie działają na katalogach. Czy fakt, że jest to .sparsebundle
obraz dysku na dysku sieciowym, jest istotny? Zakładałem, że będzie tak samo jak na każdym dysku zewnętrznym.
find . -user $other_uid -print0 | sudo xargs chown $USER
powinien działać.
df -hT <dirname>
powinienem ci powiedzieć.
df -hT <dir>
daje danych wyjściowych dla a) katalogu głównego sieciowego dysku twardego b) obrazu dysku w sieciowym dysku twardym c) dowolnego folderu na sieciowym dysku twardym. Być może zamierzone zachowanie zostało zaimplementowane inaczej na komputerach Mac i Linux?
root_squash
włączoną opcją, więc nie będziesz w stanie wykonywać operacji związanych tylko z rootem, na przykładchown
z poziomu klienta.