TextEdit weigert sich, eine Datei in /Users/Shared zu ändern, die einem anderen Benutzer gehört, trotz Modus 666

Ich habe eine Textdatei in /Users/Shared, die von allen Benutzern auf meinem Mac bearbeitet werden soll. Das Fenster "Informationen abrufen" zeigt, dass jeder Lese- und Schreibzugriff hat, und wenn ich die Datei mit TextEdit auf einem Nicht-Eigentümerkonto öffne, gibt die Titelleiste nicht an, dass die Datei gesperrt ist. Wenn ich jedoch versuche, meine Änderungen zu speichern, werde ich mit den Popups „Das Dokument konnte nicht [gespeichert/automatisch gespeichert]. Sie haben keine Berechtigung“ konfrontiert.

Ich habe versucht, den Nicht-Eigentümer-Benutzer zur Berechtigungsliste im Fenster "Informationen abrufen" hinzuzufügen. Kein Würfel.

Ausgaben von ls(mit bearbeiteten Namen):

$ ls -l /Users/
total 0
drwxr-xr-x+ 14 Guest        _guest   476  7 Apr 11:14 Guest
drwxrwxrwt  45 root         wheel   1530 12 Apr 17:40 Shared
drwxr-xr-x+ 15 fileowner    staff    510 22 Feb 12:49 fileowner
drwxr-xr-x+ 17 admin        staff    578 21 Dec 10:55 admin
$ ls -l /Users/Shared/Links.txt 
-rw-rw-rw-@ 1 fileowner  wheel  619 25 Feb 19:44 /Users/Shared/Links.txt

Ich kann dieses Verhalten auf zwei separaten Computern reproduzieren, auf dem einen mit 10.8 und dem anderen mit 10.9, aber nicht auf dem mit 10.6.

Antworten (1)

Beachten Sie, dass die Berechtigungszeichenfolge für /Users/Shared mit einem „t“ endet. Dies zeigt an, dass das Sticky-Bit für dieses Verzeichnis gesetzt ist. Laut "Mann 8 klebrig",

 A directory whose `sticky bit' is set becomes an append-only directory,
 or, more accurately, a directory in which the deletion of files is
 restricted.  A file in a sticky directory may only be removed or renamed
 by a user if the user has write permission for the directory and the user
 is the owner of the file, the owner of the directory, or the super-user.

Ich vermute, dass TextEdit beim Speichern einer Datei zuerst versucht, die alte Datei umzubenennen oder zu entfernen. Aber in einem Verzeichnis mit gesetztem Sticky-Bit kann dies nur der Eigentümer tun. Daher der berechtigungsbasierte Fehler.

Sie könnten dies testen, indem Sie so etwas als Benutzer Guest versuchen

echo " " >> /Users/Shared/Links.txt

Wenn dies erfolgreich ist, zeigt es, dass Guest in die Datei schreiben kann und dass TextEdit die Datei umbenennen oder entfernen muss, nicht nur umschreiben.

Willkommen, wir mögen detaillierte Antworten wie diese.
Ihr Terminal-Befehl ging ohne Probleme durch, daher sieht es so aus, als würde die Implementierung der Dateiversionierung seit 10.7 das Umbenennen und/oder (Um-)Verschieben verwenden, anstatt zu überschreiben. Danke!
@Buscar: Danke für die Begrüßung. Schön, dass ich etwas beitragen konnte. epimorphic: Danke, dass du mich wissen lässt, was passiert ist. Es ist immer schön zu hören, dass die eigene Idee funktioniert hat. :)