chmod -R -r funktioniert nicht auf macOS High sierra

1696
NameZero912

Ich habe ein Upgrade von El Capitan auf High Sierra (Beta 9) durchgeführt. Auf El Capitan kann der Befehl chmod -R -r <path to dir>problemlos ausgeführt werden (Leserechte werden rekursiv zurückgenommen). In High Sierra bekomme ich die Fehlermeldung chmod: <path to dir>: Permission denied.

Beachten Sie, dass additive Befehle wie chmod -R +r <path to dir> sie funktionieren auf High Sierra.

Ich habe dies auf dem Hauptsystemvolume meiner internen MPB-Festplatte (APFS-Dateisystem, da das Installationsprogramm HFS + -Laufwerke automatisch auf SSDs konvertiert) und auf einer HFS + -RAM-Diskette getestet. Das Verhalten war das gleiche.

Ist dies eine Fehlermeldung an Apple wert? Fehlt mir etwas?

0
Beliebiger Ordner oder spezifisch? Ich denke SIP ... Tetsujin vor 6 Jahren 1
Ist es möglich, dass High Sierra die Berechtigungsänderungen zuerst im TOP-Ordner durchführt? Das heißt, vielleicht hat es tatsächlich die Leseberechtigungen im obersten Ordner entfernt, und das hat verhindert, dass chmod weiter absteigt? jimtut vor 6 Jahren 1
Hm, nach ein paar weiteren Tests habe ich festgestellt, dass das Problem auch bei El Capitan besteht. Ich adressiere einen normalen leeren Ordner, den ich erstellt habe, auf den ich (standardmäßig) die Berechtigungen drwxr-xr-x (also im Wesentlichen 755) habe. Nehmen wir an, der Ordner befindet sich unter `/ tmp / somefolder`. Dann schlägt chmod -R -r / tmp / somedir immer fehl (unabhängig davon, ob es untergeordnete Objekte enthält oder nicht), während` sudo chmod -R -r / tmp / Somedir gelingt. Warum brauche ich Sudo / Admin-Berechtigungen, um Leseberechtigungen aus einem Verzeichnis rekursiv zu entfernen?!? NameZero912 vor 6 Jahren 0
Nach einigem Experimentieren kann ich sagen, dass, obwohl `chmod -R -r / tmp / somedir` fehlschlägt, die Leseberechtigungen für` / tmp / somedir` widerrufen werden, nicht jedoch für Unterverzeichnisse (falls vorhanden) any) - `sudo` ist erforderlich, um die Berechtigungsänderung wirklich rekursiv durchzuführen. Es macht überhaupt keinen Sinn und legt nahe, dass chmod sehr schlecht implementiert wird (und das wurde aus irgendeinem Grund nie entdeckt ... es kann einfach nicht wahr sein!). Es scheint mir, dass chmod die Operation zuerst auf das Verzeichnis der höchsten Ebene anwendet und diese dann nicht auf Unterverzeichnisse anwendet (und sogar fehlschlägt, wenn es keine gibt). NameZero912 vor 6 Jahren 0
`finden -d -exec chmod -r {} ";" `ist der Weg zu gehen. NameZero912 vor 6 Jahren 0

0 Antworten auf die Frage