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ć, chownaby stać się właścicielem wszystkich moich ważnych danych, a następnie użyć chmod 700tych wszystkich folderów, aby udzielić rwxuprawnień tylko mnie.
Idealnym rozwiązaniem jest metoda polegająca findna 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 rwxi ---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 chownz jakiegoś powodu po prostu nie działają na katalogach. Czy fakt, że jest to .sparsebundleobraz 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 $USERpowinien 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_squashwłączoną opcją, więc nie będziesz w stanie wykonywać operacji związanych tylko z rootem, na przykładchownz poziomu klienta.