chmod -R -r не работает на macOS High sierra

0

Я обновился с Эль-Капитана до Высокой Сьерры (бета-версия 9). На Эль-Капитане работает команда chmod -R -r <path to dir> работает отлично (рекурсивно отменяет права на чтение). На High Sierra я получаю сообщение об ошибке, не связанной со смыслом chmod: <path to dir>: Permission denied,

Обратите внимание, что аддитивные команды, такие как chmod -R +r <path to dir> делать отлично работает на Высокой Сьерре.

Я проверил это на основном системном томе моего внутреннего диска MPB (файловая система APFS, поскольку установщик автоматически преобразует тома HFS + на твердотельные накопители) и на RAM-диске HFS +. Поведение было таким же.

Это достойно сообщения об ошибке в Apple? Я что-то пропустил?

NameZero912
источник
1
Любая папка или конкретная? Я думаю SIP ...
Tetsujin
1
Возможно ли, что High Sierra сначала начнет вносить изменения в папку TOP? То есть, может быть, он на самом деле удалил права на чтение в верхней папке, и это препятствовало дальнейшему снижению chmod?
jimtut
Хм, после еще нескольких тестов я обнаружил, что проблема также существует с El Capitan. Я обращаюсь к обычной пустой папке, которую я создал, на которую у меня (по умолчанию) есть разрешения drwxr-xr-x (итого 755 по сути). Допустим, эта папка находится в /tmp/somefolder, затем chmod -R -r /tmp/somedir всегда терпит неудачу (независимо от того, есть ли у него дочерние объекты или нет), в то время как sudo chmod -R -r /tmp/somedir преуспевает. Зачем мне нужны sudo / admin-permissions для рекурсивного удаления прав на чтение из dir?!?
NameZero912
После еще нескольких экспериментов я могу сказать, что, хотя chmod -R -r /tmp/somedir не удается, права на чтение отменяются для /tmp/somedir, но не для каких-либо подкаталогов (если они есть) - sudo требуется действительно выполнить изменение разрешения рекурсивно. Это не имеет никакого смысла, и предполагает, что chmod реализован очень плохо (и это никогда не было обнаружено по какой-то причине ... это просто не может быть правдой!). Мне кажется, что chmod сначала применяет операцию к каталогу самого высокого уровня, а затем не может применить ее к подкаталогам (и даже терпит неудачу, если их нет).
NameZero912
find <path> -d -exec chmod -r {} ";" это путь
NameZero912