Dateiberechtigungen für WSL

Auf dieser Seite wird erläutert, wie Linux-Dateiberechtigungen über das Windows-Subsystem für Linux interpretiert werden, insbesondere beim Zugriff auf Ressourcen innerhalb von Windows auf dem NT-Dateisystem. Diese Dokumentation setzt ein Grundwissen der Berechtigungsstruktur des Linux-Dateisystems und des Befehls „umask“ voraus.

Beim Zugriff auf Windows-Dateien von WSL werden die Dateiberechtigungen entweder anhand der Windows-Berechtigungen berechnet oder aus Metadaten gelesen, die von WSL zur Datei hinzugefügt wurden. Diese Metadaten sind standardmäßig nicht aktiviert.

WSL-Metadaten für Windows-Dateien

Wenn Metadaten als Bereitstellungsoption in WSL aktiviert sind, können erweiterte Attribute für Windows NT-Dateien hinzugefügt und interpretiert werden, um Linux-Dateisystemberechtigungen bereitzustellen.

WSL kann vier erweiterte NTFS-Attribute hinzufügen:

Attributname Beschreibung
$LXUID Besitzer-ID des Benutzers
$LXGID Besitzer-ID der Gruppe
$LXMOD Dateimodus (Dateisystem-Berechtigungsoktale und -typ, z. B.: 0777)
$LXDEV Gerät, falls es sich um eine Gerätedatei handelt

Zusätzlich besitzen alle Dateien, die keine regulären Dateien oder Verzeichnisse sind (z. B. Symlinks, FIFOs, Blockgeräte, Unix-Sockets und Zeichengeräte) ebenfalls einen NTFS-Analysepunkt. Dadurch lässt sich die Art der Datei in einem bestimmten Verzeichnis viel schneller bestimmen, ohne die erweiterten Attribute abfragen zu müssen.

Dateizugriffsszenarien

Nachfolgend wird beschrieben, wie Berechtigungen bestimmt werden, wenn auf verschiedene Weise mithilfe des Windows-Subsystems für Linux auf Dateien zugegriffen wird.

Zugreifen auf Dateien in Windows Drive File System (DrvFS) von Linux

Diese Szenarien liegen vor, wenn Sie von WSL aus auf Ihre Windows-Dateien zugreifen, höchstwahrscheinlich über /mnt/c.

Lesen von Dateiberechtigungen aus einer vorhandenen Windows-Datei

Das Ergebnis hängt davon ab, ob die Datei bereits über Metadaten verfügt.

DrvFS-Datei enthält keine Metadaten (Standard)

Wenn der Datei keine Metadaten zugeordnet sind, werden die tatsächlichen Berechtigungen des Windows-Benutzers in Lesen/Schreiben/Ausführen-Berechtigungsbits übersetzt und die entsprechenden Werte für Benutzer, Gruppen und andere festgelegt. Wenn Ihr Windows-Benutzerkonto z. B. über Lese- und Ausführungszugriff, aber keinen Schreibzugriff für die Datei verfügt, wird dies als r-x für Benutzer, Gruppen und andere angezeigt. Wenn für die Datei das Schreibgeschützt-Attribut in Windows festgelegt ist, wird in Linux kein Schreibzugriff erteilt.

Die Datei enthält Metadaten

Wenn in der Datei Metadaten vorhanden sind, werden anstelle der Übersetzung der tatsächlichen Berechtigungen des Windows-Benutzers einfach diese Metadatenwerte verwendet.

Ändern von Dateiberechtigungen für eine vorhandene Windows-Datei unter Verwendung von „chmod“

Das Ergebnis hängt davon ab, ob die Datei bereits über Metadaten verfügt.

chmod-Datei enthält keine Metadaten (Standard)

Chmod hat nur einen Effekt: Wenn Sie alle Schreibattribute einer Datei entfernen, wird das Schreibgeschützt-Attribut für die Windows-Datei festgelegt, da dies das gleiche Verhalten wie CIFS (Common Internet File System) ist, das der SMB-Client (Server Message Block) in Linux ist.

Chmod-Datei enthält Metadaten

Chmod bewirkt das Ändern oder Hinzufügen von Metadaten in Abhängigkeit von den bereits vorhandenen Metadaten der Datei.

Denken Sie daran, dass Sie sich nicht mehr Zugriff erteilen können, als Sie in Windows besitzen, auch wenn die Metadaten dies tun. Sie könnten die Metadaten beispielsweise mit chmod 777 so festlegen, dass Sie Schreibberechtigungen für eine Datei erhalten. Wenn Sie aber versuchen, auf diese Datei zuzugreifen, können Sie trotzdem nicht in diese schreiben. Dies ist dank der Interoperabilität möglich, da alle Lese- oder Schreibbefehle für Windows-Dateien über Ihre Windows-Benutzerberechtigungen geleitet werden.

Erstellen einer Datei in DriveFS

Das Ergebnis hängt davon ab, ob Metadaten aktiviert sind.

Metadaten sind nicht aktiviert (Standard)

Die Windows-Berechtigungen der neu erstellten Datei sind identisch wie beim Erstellen der Datei in Windows ohne einen bestimmten Sicherheitsdeskriptor. Sie erben die Berechtigungen des übergeordneten Elements.

Metadaten sind aktiviert

Die Berechtigungsbits der Datei sind so festgelegt, dass Sie der Linux-Umask folgen, und die Datei wird mit Metadaten gespeichert.

Welcher Linux-Benutzer und welche Linux-Gruppe besitzt die Datei?

Das Ergebnis hängt davon ab, ob die Datei bereits über Metadaten verfügt.

Benutzerdatei enthält keine Metadaten (Standard)

Im Standardszenario legen wir beim Automatisieren von Windows-Laufwerken fest, dass die Benutzer-ID (UID) für jede Datei auf die Benutzer-ID des WSL-Benutzers und die Gruppen-ID (GID) auf die Prinzipalgruppen-ID des WSL-Benutzers festgelegt ist.

Benutzerdatei enthält Metadaten

Die in den Metadaten angegebenen UID und GID werden als Benutzerbesitzer und Gruppenbesitzer der Datei angewendet.

Zugreifen auf Linux-Dateien von Windows aus mithilfe von \\wsl$

Wenn Sie über \\wsl$ auf Linux-Dateien zugreifen, wird der Standardbenutzer der WSL-Verteilung verwendet. Daher hat jede Windows-App, die auf Linux-Dateien zugreift, dieselben Berechtigungen wie der Standardbenutzer.

Erstellen einer neuen Datei

Beim Erstellen einer neuen Datei in einer WSL-Verteilung von Windows wird die Standard-Umask angewendet. Die Standard-Umask ist 022, d. h., es werden alle Berechtigungen mit Ausnahme von Schreibberechtigungen für Gruppen und andere zugelassen.

Zugreifen auf Dateien im Linux-Stammdateisystem aus Linux

Alle Dateien, die im Linux-Stammdateisystem erstellt oder geändert bzw. auf die zugegriffen wird, folgen den Linux-Standardkonventionen, z. B. dass die Umask auf neu erstellte Dateien angewendet wird.

Konfigurieren von Dateiberechtigungen

Sie können Ihre Dateiberechtigungen innerhalb Ihrer Windows-Laufwerke mithilfe der Einbindungsoptionen in „WSL.conf“ konfigurieren. Mit den Einbindungsoptionen können Sie umask-, dmask- und fmask-Berechtigungsmasken festlegen. Die umask wird auf alle Dateien angewendet, die dmask wird nur auf Verzeichnisse angewendet, und die fmask wird nur auf Dateien angewendet. Diese Berechtigungsmasken werden dann durch eine logische ODER-Operation festgelegt, wenn sie auf Dateien angewendet werden. Beispiel: Wenn Sie über einen umask-Wert von 023 und einen fmask-Wert von 022 verfügen, wird die resultierende Berechtigungsmaske für Dateien auf 023 festgelegt.

Weitere Informationen finden Sie unter Konfigurationsoptionen pro Verteilung mit „wsl.conf“.