Chmod und Chown WSL-Verbesserungen in Windows 10
Linux-Benutzer sind definitiv mit den Konsolentools chown und chmod vertraut. Diese beiden Apps sind unerlässlich, wenn es um die Berechtigungs- und Eigentumsverwaltung geht. Vor kurzem hat Microsoft eine Reihe von Verbesserungen an diesen Tools in seinem eigenen Linux-Subsystem vorgenommen, das mit Windows 10 gebündelt ist.
Werbung
Sie können jetzt den Besitzer und die Gruppe von Dateien mit chmod/chown festlegen und die Lese-/Schreib-/Ausführungsberechtigungen in WSL ändern. Sie können auch spezielle Dateien wie Fifos, Unix-Sockets und Gerätedateien erstellen. Es war ein lang erwartetes Feature für viele WSL-Benutzer.
Eine weitere interessante Änderung sind neue Mount-Optionen mit DrvFs-Dateisystem zum Projizieren von Berechtigungen auf Dateien neben der Bereitstellung neuer Linux-Metadaten für Dateien und Ordner.
Bevor Sie diese neuen Funktionen nutzen können, müssen Sie einen Schritt ausführen: Sie müssen drvfs aushängen und mit dem Flag 'metadata' erneut einhängen. Geben Sie dazu am Terminal folgende Befehle ein:
sudo umount /mnt/c sudo mount -t drvfs C: /mnt/c -o Metadaten
Sie können überprüfen, ob es korrekt gemountet ist, indem Sie "mount -l" ausführen, um etwa Folgendes anzuzeigen:
DrvFs ist ein Dateisystem-Plugin für WSL, das Interop zwischen WSL und dem Windows-Dateisystem unterstützt. DrvFs ermöglicht WSL das Mounten von Laufwerken mit unterstützten Dateisystemen unter /mnt, wie /mnt/c, /mnt/d usw.
DrvFs fügt eine Reihe neuer Mount-Optionen hinzu. Sie sind wie folgt:
Die neuen Mount-Optionen umfassen:
- uid: die Benutzer-ID, die für den Eigentümer aller Dateien verwendet wird
- gid: die Gruppen-ID, die für den Besitzer aller Dateien verwendet wird
- umask: eine oktale Maske der auszuschließenden Berechtigungen für alle Dateien und Verzeichnisse.
- fmask: eine oktale Maske von Berechtigungen, die für alle regulären Dateien ausgeschlossen werden sollen.
- dmask: eine oktale Maske von Berechtigungen, die für alle Verzeichnisse ausgeschlossen werden sollen.
Siehe folgendes Beispiel:
sudo mount -t drvfs C: /mnt/c -o Metadaten, uid=1000,gid=1000,umask=22,fmask=111
Nachdem Sie den Befehl mount ausgeführt haben, wird Ihr Mount (in diesem Fall C:) mit allen Parametern aufgelistet, die Sie beim Abfragen einer Liste der gemounteten Geräte übergeben haben.
Diese Änderung ermöglicht es, Windows-Ordner und -Partitionen unter einem anderen Benutzerkonto in WSL zu mounten, anstatt das Standard.
Mit dieser Änderung werden Linux-Berechtigungen als zusätzliche Metadaten für eine Datei gespeichert. Dadurch können sowohl Linux- als auch Windows-Berechtigungen für eine einzelne Datei gespeichert werden. Jetzt können Sie Berechtigungen sowohl in WSL als auch in Windows separat ändern, ohne die Umgebung zu beschädigen. Wie Sie sich vielleicht erinnern, Das Ändern von Linux-Dateien von Windows könnte WSL früher brechen.
Neu erstellte Dateien in WSL werden standardmäßig mit Metadaten erstellt und berücksichtigen die von Ihnen festgelegten Mount-Optionen.
Wichtige Hinweise
Es gibt einige Dinge, die Sie beim Basteln mit den neuen Metadaten beachten sollten:
Beim Bearbeiten einer Datei mit einem Windows-Editor werden möglicherweise die Linux-Metadaten der Datei entfernt. In diesem Fall wird die Datei auf ihre Standardberechtigungen zurückgesetzt.
Das Entfernen aller Schreibbits einer Datei in WSL bewirkt, dass Windows die Datei als schreibgeschützt markiert.
Wenn Sie mehrere WSL-Distributionen installiert haben oder mehrere Windows-Benutzer mit WSL installiert sind, verwenden sie alle dieselben Metadaten für dieselben Dateien. Die UIDs der einzelnen WSL-Benutzerkonten können sich unterscheiden. Dies ist beim Festlegen von Berechtigungen zu beachten.
Sie können beispielsweise die Schreibberechtigungen für eine Datei in Windows deaktivieren und die Datei chmod, um anzuzeigen, dass die Schreibberechtigungen in WSL aktiviert sind. Oder Sie können Leseberechtigungen unter Windows aktivieren und Leseberechtigungen in WSL entfernen. Sie können dieses Konzept unten veranschaulicht sehen.
Quelle: Microsoft.