Freigeben über


Dateiberechtigungen für WSL

Auf dieser Seite wird erläutert, wie Linux-Dateiberechtigungen im Windows-Subsystem für Linux interpretiert werden, insbesondere beim Zugriff auf Ressourcen innerhalb von Windows im NT-Dateisystem. In dieser Dokumentation wird ein grundlegendes Verständnis der Linux-Dateisystemberechtigungsstruktur und des Umask-Befehls vorausgesetzt.

Beim Zugriff auf Windows-Dateien von WSL werden die Dateiberechtigungen entweder aus 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 in WSL als Bereitstellungsoption aktiviert sind, können erweiterte Attribute für Windows NT-Dateien hinzugefügt und interpretiert werden, um Linux-Dateisystemberechtigungen zu erteilen.

WSL kann vier erweiterte NTFS-Attribute hinzufügen:

Attributname BESCHREIBUNG
$LXUID Benutzerbesitzer-ID
$LXGID Gruppenbesitzer-ID
$LXMOD Dateimodus (Berechtigungstata und Typ der Dateisysteme, z. B.: 0777)
$LXDEV Gerät, wenn es sich um eine Gerätedatei handelt

Darüber hinaus verfügen alle Dateien, die keine normale Datei oder ein normales Verzeichnis sind (z. B. Symlinks, FIFOs, Blockgeräte, Unix-Sockets und Zeichengeräte), auch über einen NTFS-Analysepunkt. Dadurch wird es viel schneller, die Art der Datei in einem bestimmten Verzeichnis zu bestimmen, ohne die erweiterten Attribute abfragen zu müssen.

Dateizugriffsszenarien

Nachfolgend finden Sie eine Beschreibung, wie Berechtigungen beim Zugriff auf Dateien auf unterschiedliche Weise mithilfe des Windows-Subsystems für Linux bestimmt werden.

Zugreifen auf Dateien im Windows-Laufwerkdateisystem (DrvFS) von Linux

Diese Szenarien treten auf, wenn Sie über WSL auf Ihre Windows-Dateien zugreifen./mnt/c

Lesen von Dateiberechtigungen aus einer vorhandenen Windows-Datei

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

DrvFS-Datei verfügt nicht über Metadaten (Standard)

Wenn der Datei keine Metadaten zugeordnet sind, übersetzen wir die effektiven Berechtigungen des Windows-Benutzers in Bits mit Lese-/Schreib-/Ausführungsvorgängen und legen sie auf denselben Wert für Benutzer, Gruppe und andere fest. Wenn Ihr Windows-Benutzerkonto beispielsweise Lese- und Ausführungszugriff hat, aber keinen Schreibzugriff auf die Datei hat, wird dies wie r-x für Benutzer, Gruppe und andere angezeigt. Wenn die Datei das Attribut "Schreibgeschützt" in Windows festgelegt hat, gewähren wir keinen Schreibzugriff in Linux.

Die Datei verfügt über Metadaten

Wenn die Datei Metadaten enthält, verwenden wir einfach diese Metadatenwerte, anstatt effektive Berechtigungen des Windows-Benutzers zu übersetzen.

Ändern von Dateiberechtigungen für eine vorhandene Windows-Datei mithilfe von chmod

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

chmod-Datei besitzt keine Metadaten (Standard)

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

chmod-Datei hat Metadaten

Chmod ändert oder fügt Metadaten abhängig von den bereits vorhandenen Metadaten der Datei hinzu.

Bitte beachten Sie, dass Sie sich nicht mehr Zugriff gewähren können als das, was Sie unter Windows haben, auch wenn die Metadaten sagen, dass dies der Fall ist. Sie können beispielsweise die Metadaten so festlegen, dass sie anzeigen, dass Sie über Schreibberechtigungen für eine Datei chmod 777verfügen, aber wenn Sie versucht haben, auf diese Datei zuzugreifen, können Sie sie trotzdem nicht in die Datei schreiben. Dies ist aufgrund der Interoperabilität möglich, da alle Lese- oder Schreibbefehle an Windows-Dateien über Ihre Windows-Benutzerberechtigungen weitergeleitet 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 entsprechen dem, wenn Sie die Datei in Windows ohne einen bestimmten Sicherheitsdeskriptor erstellt haben, erbt sie die Berechtigungen des übergeordneten Elements.

Metadaten sind aktiviert.

Die Berechtigungsbits der Datei werden so festgelegt, dass sie dem Linux-Umask folgen, und die Datei wird mit Metadaten gespeichert.

Welche Linux-Benutzer- und Linux-Gruppe besitzt die Datei?

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

Die Benutzerdatei verfügt nicht über Metadaten (Standardeinstellung)

Im Standardszenario geben wir beim automatischen Bereitstellen von Windows-Laufwerken an, dass die Benutzer-ID (UID) für jede Datei auf die Benutzer-ID Ihres WSL-Benutzers festgelegt ist und die Gruppen-ID (GID) auf die Prinzipalgruppen-ID Ihres WSL-Benutzers festgelegt ist.

Benutzerdatei verfügt über Metadaten

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

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

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

Erstellen einer neuen Datei

Der Standardumask wird beim Erstellen einer neuen Datei in einer WSL-Verteilung von Windows angewendet. Der Standardumask ist 022, oder mit anderen Worten, es erlaubt alle Berechtigungen außer Schreibberechtigungen für Gruppen und andere.

Zugreifen auf Dateien im Linux-Stammdateisystem von Linux

Alle Dateien, die im Linux-Stammdateisystem erstellt, geändert oder darauf zugegriffen werden, folgen den Standard-Linux-Konventionen, z. B. das Anwenden des Umask auf eine neu erstellte Datei.

Konfigurieren von Dateiberechtigungen

Sie können Ihre Dateiberechtigungen auf Ihren Windows-Laufwerken mithilfe der Bereitstellungsoptionen in wsl.conf konfigurieren. Mit den Bereitstellungsoptionen können Sie Masken und fmask Berechtigungen festlegenumaskdmask. Die umask Anwendung wird auf alle Dateien angewendet, die dmask nur auf Verzeichnisse angewendet werden und die fmask nur auf Dateien angewendet werden. Diese Berechtigungsmasken werden dann beim Anwenden auf Dateien durch einen logischen OR-Vorgang durchlaufen, z. B.: Wenn Sie einen umask Wert haben und einen fmask Wert 022023 haben, lautet 023die resultierende Berechtigungsmaske für Dateien .

Weitere Informationen: Pro Verteilungskonfigurationsoptionen mit wsl.conf.