Wie unterscheidet sich das Unix-Dateiberechtigungssystem von dem von Windows?

8

Verwandte Frage: Wie unterscheidet sich das Linux-Dateisystem / die Linux-Organisation von Windows?

Ich bin ein wenig mit der Funktionsweise von Berechtigungen in Bezug auf Dateien und Verzeichnisse vertraut. Jeder Eintrag verfügt über eine ownerund group-Eigenschaft, die den Eigentümer der Datei und die Gruppe darstellt, zu der der Eigentümer gehört (korrigieren Sie mich, wenn ich falsch liege).

Wie unterscheidet sich dies von der Organisation der Berechtigungen im NTFS-Dateisystem unter Windows? Welche Vorteile hat das Unix-Berechtigungssystem gegenüber NTFS?

Nathan Osman
quelle

Antworten:

15

NTFS verfügt über Windows-ACEs. Unix verwendet "Modusbits" für jede Datei.

Unter NTFS kann jede Datei einen Eigentümer und null oder mehr Windows-Zugriffssteuerungseinträge (ACEs) haben. Ein ACE besteht aus einem Principal (Benutzer und Gruppen sind Principals), einer Reihe von Operationen (Lesen, Schreiben, Ausführen usw.) und der Frage, ob diese Operationen zulässig oder verweigert sind. Dateien können viele ACEs haben. Andere Objekte in Windows als Dateien können ebenfalls ACEs aufweisen, z. B. Registrierungseinträge, Druckerobjekte und andere Dinge. Alle ACEs werden bei einem Dateivorgang berücksichtigt. Verweigern hat Vorrang vor Zulassen.

Windows-ACEs unterstützen die Vererbung, bei der Sie einen ACE für ein Verzeichnis festlegen und automatisch an Verzeichnisse niedrigerer Ebene weitergeben können.

Dateien in Unix haben einen Eigentümer (Eigentümer) und eine Eigentümergruppe (Eigentümergruppe). Es gibt drei feste "Auftraggeber", die Eigentümer, Mitglieder der Eigentümergruppe und alle anderen (auch bekannt als Welt) sind. Für jeden Principal gibt es drei "Bits", die Lese-, Schreib- und Ausführungsfähigkeiten abdecken. (Diese haben für Verzeichnisse andere Bedeutungen als Dateien, siehe hier ). Diese Bits bestimmen, wer welche Operationen ausführen kann. Dies wird als Dateimodus bezeichnet und ist in die Datei integriert (es gibt keine separaten ACEs).

Die meiste Zeit beschäftigen Sie sich mit den "Welt" -Berechtigungen, dh wenn Sie alle drei Bits für "Welt" auf 0 setzen, kann niemand, der nicht der Eigentümer oder Gruppenbesitzer ist, etwas mit der Datei tun. Unix-Berechtigungen funktionieren nur im Dateisystem. Da die meisten Objekte jedoch als Dateien angezeigt werden, können Sie Berechtigungen verwenden, um den Zugriff auf Datenträger, Drucker usw. einzuschränken. Unix-Berechtigungen sind einfacher, aber "gröber". Unix-Berechtigungen unterstützen keine Vererbung und wirken sich nicht auf Verzeichnisse niedrigerer Ebene aus, mit Ausnahme der Ausführungsberechtigung für Verzeichnisse (glaube ich), die dazu führt, dass neu erstellte Dateien Berechtigungen für das Verzeichnis übernehmen (wirkt sich jedoch nicht auf aktuell erstellte Dateien aus).

Traditionell haben Unix-Dateien einen einzelnen Eigentümer und eine einzelne Eigentümergruppe. Es gibt Erweiterungen für Linux, die Dateien ähnlich wie Windows ACEs zu Dateien hinzufügen.

Der Vorteil von Unix besteht nur darin, dass ein einfacheres System normalerweise einfacher zu verstehen, zu sichern und schneller ist, da das Dateisystem beim Öffnen von Dateien nicht zusätzlich zu Inodes auch ACEs abrufen muss.

LawrenceC
quelle
4
Das ist die setgid- Berechtigung für Verzeichnisse, und Dateien erben die Eigentümergruppe, nicht die Berechtigungen.
Random832
3
@ George: Eine Sache, an die Sie denken müssen, ist, dass die Gruppe NICHT die Gruppe des Eigentümers ist, sondern separat. Siehe Kapitel (1).
Hallo71
@ Random832: Danke für die Klarstellung.
LawrenceC
3
Die meisten Distributionen unterstützen heutzutage erweiterte Zugriffssteuerungslisten (Access Control Lists, ACLs), die standardmäßig in den verschiedenen verfügbaren Dateisystemen kompiliert wurden. Der Name des Softwarepakets erforderlich , um Zugang und ändern wird diese in der Regel genannt acloder facloder etwas ähnliches, mit den beiden Programmen benannt setfaclund getfaclzu ändern oder Zugriffssteuerungsliste Einstellungen abzurufen.
Shadur
6

Eine ganz andere Sache ist, dass "ausführbar" eine Berechtigung unter Linux / Unix ist, die nicht auf dem Namen oder der Erweiterung der Datei basiert.

Dies ist ein Vorteil gegenüber Windows, da Sie unter Linux sicherstellen können, dass etwas nicht ausgeführt wird, indem Sie ausführbare Berechtigungen entfernen. Es sind überhaupt keine magischen Erweiterungen von Bedeutung. Dies ist wahrscheinlich ein Grund, warum herkömmliche Dateiviren unter Unix und Linux genau nirgendwo hinkamen.

Bruce Ediger
quelle
2
Windows verfügt tatsächlich über eine ausführbare Berechtigung, obwohl sie den Zweck zunichte machen, indem sie sie standardmäßig festlegen.
Patches
1
Erweiterungen spielen auch unter Windows keine Rolle.
Logan Capaldo
1
@Logan: Eigentlich haben sie unter Windows Bedeutung. Die Dateierweiterung bestimmt, mit welchen Programmen es geöffnet werden kann, und gibt dem Explorer an, um welchen Dateityp es sich handelt, damit Miniaturansichten generiert werden können. Im letzteren Fall könnte dies möglicherweise einen Fehler ausnutzen, der im Miniaturbildgenerator vorhanden ist, und daher ein System gefährden.
Nathan Osman
1
@George Gleiches gilt für einen grafischen Dateimanager mit einem fehlerhaften Thumb Nail Previewer auf jedem Betriebssystem. Mein Punkt war, dass CreateProcess keine zwei Hupen gibt, wenn Ihr Programm mit .exe endet (und dies ist leicht zu sehen, wenn Sie ein Programm von cmd.exe ausführen), aber es kümmert sich tatsächlich um das Ausführungsbit.
Logan Capaldo
2
@ George, genau wie Unix (es sei denn, Sie möchten darüber streiten, ob die Suche nach einem Shebang "fortgeschritten" ist oder nicht). Ich wollte nur klarstellen, dass die Dateierweiterung nichts mit dem Sicherheitsmodell zu tun hat. Wenn Sie eine ausführbare Datei unter Windows als nicht ausführbar markieren, hat dies den gleichen Effekt wie unter Unix.
Logan Capaldo