Kann nicht in ~/Library schreiben, obwohl die Berechtigungen in Ordnung zu sein scheinen

Ich bin total ratlos über dieses – ein Macbook Air, 10.9.2. Soweit ich das beurteilen kann, sollte ich in der Lage sein, in mein Bibliotheksverzeichnis zu schreiben. Alles, was ich sehen kann, deutet darauf hin, dass ich in der Lage sein sollte:

[njvack@zot Library]$ sw_vers | grep ProductVersion
ProductVersion: 10.9.2
[njvack@zot Library]$ id -a
uid=503(njvack) gid=20(staff) groups=20(staff),403(com.apple.sharepoint.group.3),12(everyone),61(localaccounts),402(com.apple.sharepoint.group.2),100(_lpoperator),401(com.apple.sharepoint.group.1)
[njvack@zot Library]$ pwd
/Users/njvack/Library
[njvack@zot Library]$ ls -ld@ .
drwx------@ 58 njvack  staff  1972 Apr 14 16:06 .
    com.apple.metadata:_kTimeMachineNewestSnapshot    50 
    com.apple.metadata:_kTimeMachineOldestSnapshot    50 
[njvack@zot Library]$ touch foo
touch: foo: Permission denied

Und dann kann ich aus irgendeinem Grund in arbeiten ~/Library/iMovie, obwohl die Berechtigungen eigentlich identisch sein sollten:

njvack@zot Library]$ cd iMovie/
[njvack@zot iMovie]$ pwd
/Users/njvack/Library/iMovie
[njvack@zot iMovie]$ ls -ld@ .
drwx------+ 4 njvack  staff  136 Apr 16 08:41 .
[njvack@zot iMovie]$ touch foo

Was könnte das noch verursachen? Was kann ich überprüfen? FWIW, Check Permissions des Festplattendienstprogramms beschwert sich über nichts.

EDIT: Wie vorgeschlagen, hier sind die ACL-Einträge:

[njvack@zot Library]$ ls -led .
drwx------@ 58 njvack  staff  1972 Apr 14 16:06 .
 0: group:everyone deny add_file,delete,add_subdirectory,delete_child,writeattr,writeextattr,chown

... und da ACLs UNIX-Berechtigungen außer Kraft setzen , war das Entfernen der ACLs der Trick:

[njvack@zot Library]$ pwd
/Users/njvack/Library
[njvack@zot Library]$ chmod -RN .
[njvack@zot Library]$ touch foo

Wie habe ich solche beschissenen ACLs in meiner ~/Library bekommen? Ich habe keine Ahnung.

Funktioniert sudo?
Was ls -ld@eOzeigt es? (Die -eund -Ozeigen Zugriffssteuerungseinträge bzw. Datei-Flags.)
@GordonDavisson Es waren ACL-Einträge, danke! Wenn Sie eine Antwort hinzufügen (chmod -RN ~/Library entfernt sie rekursiv), werde ich sie akzeptieren :)

Antworten (1)

Um den Rest der Berechtigungen (ACLs und Datei-Flags) anzuzeigen, fügen Sie -eund -Ozum lsBefehl hinzu. Ich verwende gewöhnlich ls -leO@als "Sag mir alles"-Version von ls.

In diesem Fall war das Problem ein "Deny"-Zugriffssteuerungseintrag, der die regulären POSIX-Berechtigungen außer Kraft setzt. Ich habe keine Ahnung, wie das möglicherweise zu Ihrem ~/Library-Ordner hinzugefügt wurde, aber Sie können es mit entfernen chmod -N ~/Library.

Es ist ein bisschen spät, aber ich hätte die Verwendung von -R(rekursiv auf alle Inhalte anwenden) für diesen chmodBefehl nicht empfohlen, da es einige Elemente in ~/Library gibt, die ACLs haben sollen (hauptsächlich, um ein versehentliches Umbenennen oder Löschen wichtiger Elemente zu verhindern). . Aber ich glaube nicht, dass das Entfernen von allem wirklich schaden wird, und wenn Sie sich Sorgen über andere falsche ACLs machen, ist das rekursive Zurücksetzen sinnvoll.

Auf eine Reihe von Unterverzeichnissen wurden auch verrückte ACLs angewendet, also würde es entweder „die magischen Fehler für immer debuggen“ (das führte zum Beispiel dazu, dass iTunes mir mitteilte, dass mein iPhone-Backup beschädigt war, außer dass überhaupt keine Backups vorhanden waren ) oder 'Scheiß auf die ACLs' und ich habe mich für Letzteres entschieden :)
In diesem Fall ist rekursives Zurücksetzen die beste Option. Ich habe mich ein wenig umgesehen, und ich sehe keine der "Standard"-ACLs, die tatsächlich wichtig erscheinen.