Was sind die technischen Unterschiede zwischen "chmod -w file" und "chflags uchg file"?

1393
selbie

BSD / MacOS-Frage.

chmod -w fileentfernt alle Schreibberechtigungen aus der Datei

chflags uchg filesetzt das vom Benutzer nicht veränderliche Bit (auch als "gesperrtes Bit" bezeichnet) für die Datei fest

Was sind die technischen Unterschiede und Verhaltensunterschiede dieser beiden Befehle, abgesehen von der offensichtlichen Feststellung "Berechtigungen gegen Flag setzen"? Wann wird einer dem anderen vorgezogen?

5
Das bevorzugte Werkzeug hängt davon ab, welche Aufgabe Sie ausführen möchten. Abgesehen von den technischen Unterschieden sind offensichtlich die Berechtigungen und nur die Flags einer Datei oder eines Ordners festgelegt. Ramhound vor 10 Jahren 0
Darauf bin ich gekommen. Welche Aufgaben schlagen sich vor? selbie vor 10 Jahren 1
Auf einigen Betriebssystemen können Sie das vom Benutzer unveränderliche Bit nicht ** entfernen **, es sei denn, Sie haben die Sicherheitsstufe 0. (Und das ist etwas, das Sie nicht ohne Neustart senken können). Das ist nicht so sehr ein technischer oder ein Sicherheitsunterschied. Hennes vor 10 Jahren 1
Wenn unter FreeBSD [securelevel] (http://www.freebsd.org/doc/faq/security.html#idp66560048)> 0 ist, können die Markierungen _system_ unveränderlich oder Nur anhängen nicht deaktiviert werden. Roland Smith vor 10 Jahren 1

1 Antwort auf die Frage

5
Gordon Davisson

Drei Unterschiede fallen mir aus dem Kopf:

  • Das uchg-Flag sperrt den Inhalt der Datei und ihren Verzeichniseintrag, während die Dateiberechtigungen nur für den Inhalt der Datei gelten. Dies bedeutet, dass eine Datei, bei der alle Schreibrechte entfernt wurden, weiterhin von jedem Benutzer mit Schreibzugriff auf das Verzeichnis, in dem sich die Datei befindet, noch verschoben, umbenannt oder sogar gelöscht werden kann.
  • Der root-Benutzer ignoriert Dateiberechtigungen, unterliegt jedoch einer Uchg-Sperre. Der Root-Benutzer kann die Datei jedoch entsperren, dies ist also kein so großer Unterschied.
  • Zumindest unter OS X kann das Entfernen aller Schreibrechte in den POSIX-Berechtigungen durch eine Zugriffssteuerungsliste in der Datei überschrieben werden. chmod -wentfernt keine ACL-Einträge, die Schreibzugriff gewähren, sodass einige Benutzer und / oder Gruppen möglicherweise noch Schreibberechtigungen haben.