chmod -R -r nie działa na macOS High sierra


1

Uaktualniłem z El Capitan do High Sierra (beta 9). Na El Capitan uruchomienie polecenia chmod -R -r <path to dir>działa poprawnie (rekurencyjnie cofanie uprawnień do odczytu). W High Sierra pojawia się komunikat o błędzie bez sensu chmod: <path to dir>: Permission denied.

Należy pamiętać, że dodatki takie jak polecenia chmod -R +r <path to dir> nie działają dobrze na High Sierra.

Przetestowałem to na głównym woluminie systemowym mojego wewnętrznego dysku MPB (system plików APFS, ponieważ instalator konwertuje woluminy HFS + automatycznie na dyski SSD) i na dysku HFS + RAM. Zachowanie było takie samo.

Czy to jest warte zgłoszenia błędu do Apple? Czy coś brakuje?


1
Dowolny folder lub konkretny? Myślę SIP ...
— Tetsujin

1
Czy to możliwe, że High Sierra najpierw rozpocznie zmiany uprawnień w folderze TOP? Czyli może faktycznie usunęło uprawnienia do odczytu w górnym folderze, a to uniemożliwiło chmodowi dalsze zejście?
— jimtut

Hm, po kilku kolejnych testach odkryłem, że problem dotyczy również El Capitan. Zwracam się do normalnego pustego folderu, który utworzyłem, do którego (domyślnie) mam uprawnienia drwxr-xr-x (czyli 755 zasadniczo). Powiedzmy, że folder znajduje się w /tmp/somefolder, a następnie chmod -R -r /tmp/somedirzawsze kończy się niepowodzeniem (bez względu na to, czy ma obiekty potomne, czy nie), podczas gdy się sudo chmod -R -r /tmp/somedirpowiedzie. Dlaczego potrzebuję uprawnień sudo / admin do rekurencyjnego usuwania uprawnień do odczytu z katalogu?!?
— NameZero912,

Po dalszych eksperymentach mogę powiedzieć, że nawet jeśli się chmod -R -r /tmp/somedirnie powiedzie, uprawnienia do odczytu są cofane /tmp/somedir, ale nie dla żadnych podkatalogów (w przypadku, gdy takie istnieją) - sudojest wymagane, aby naprawdę dokonać rekurencyjnej zmiany uprawnień. To nie ma żadnego sensu i sugeruje, że chmod jest wdrożony bardzo słabo (i z jakiegoś powodu nigdy go nie odkryto ... to po prostu nie może być prawda!). Wydaje mi się, że chmod najpierw stosuje operację do katalogu najwyższego poziomu, a następnie nie stosuje jej do podkatalogów (a nawet kończy się niepowodzeniem, jeśli nie ma żadnych).
— NameZero912,

find <path> -d -exec chmod -r {} ";"jest droga.
— NameZero912,
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.