Delen via


Bestandsmachtigingen voor WSL

Op deze pagina wordt beschreven hoe machtigingen voor Linux-bestanden worden geïnterpreteerd in het Windows-subsysteem voor Linux, met name wanneer u toegang hebt tot resources in Windows op het NT-bestandssysteem. In deze documentatie wordt ervan uitgegaan dat u basiskennis hebt van de structuur van de machtigingen voor het Linux-bestandssysteem en de umask-opdracht.

Wanneer u Windows-bestanden opent vanuit WSL, worden de bestandsmachtigingen berekend op basis van Windows-machtigingen of worden ze gelezen uit metagegevens die door WSL aan het bestand zijn toegevoegd. Deze metagegevens zijn niet standaard ingeschakeld.

WSL-metagegevens in Windows-bestanden

Wanneer metagegevens zijn ingeschakeld als koppelingsoptie in WSL, kunnen uitgebreide kenmerken in Windows NT-bestanden worden toegevoegd en geïnterpreteerd om machtigingen voor het Linux-bestandssysteem op te geven.

WSL kan vier uitgebreide NTFS-kenmerken toevoegen:

Kenmerknaam Beschrijving
$LXUID Id van gebruikerseigenaar
$LXGID Groepseigenaar-ID
$LXMOD Bestandsmodus (octale permissies en type van bestandssystemen, bijvoorbeeld 0777)
$LXDEV Apparaat, als het een apparaatbestand is

Daarnaast hebben alle bestanden die geen normaal bestand of een gewone map zijn (bijvoorbeeld symlinks, FIFOs, blokapparaten, UNIX-sockets en tekenapparaten) ook een NTFS-reparsepunt. Dit maakt het veel sneller om het soort bestand in een bepaalde map te bepalen zonder dat u query's hoeft uit te voeren op de uitgebreide kenmerken.

Scenario's voor bestandstoegang

Hieronder ziet u een beschrijving van hoe machtigingen worden bepaald bij het openen van bestanden op verschillende manieren met behulp van het Windows-subsysteem voor Linux.

Bestanden openen in het Windows Drive-bestandssysteem (DrvFS) vanuit Linux

Deze scenario's treden op wanneer u toegang hebt tot uw Windows-bestanden vanuit WSL, waarschijnlijk via /mnt/c.

Bestandsmachtigingen lezen uit een bestaand Windows-bestand

Het resultaat is afhankelijk van of het bestand al bestaande metagegevens bevat.

DrvFS-bestand heeft geen metagegevens (standaard)

Als er geen metagegevens aan het bestand zijn gekoppeld, vertalen we de effectieve machtigingen van de Windows-gebruiker om bits te lezen/schrijven/uitvoeren en deze in te stellen als dezelfde waarde voor gebruiker, groep en andere. Als uw Windows-gebruikersaccount bijvoorbeeld lees- en uitvoertoegang heeft, maar geen schrijftoegang heeft tot het bestand, wordt dit weergegeven als r-x voor gebruiker, groep en andere. Als het bestand het kenmerk Alleen-lezen heeft ingesteld in Windows, verlenen we geen schrijftoegang in Linux.

Het bestand heeft metagegevens

Als het bestand metagegevens bevat, gebruiken we deze metagegevenswaarden in plaats van effectieve machtigingen van de Windows-gebruiker te vertalen.

Bestandsmachtigingen voor een bestaand Windows-bestand wijzigen met chmod

Het resultaat is afhankelijk van of het bestand al bestaande metagegevens bevat.

chmod-bestand heeft geen metagegevens (standaard)

Chmod heeft slechts één effect, als u alle schrijfkenmerken van een bestand verwijdert, wordt het kenmerk Alleen-lezen in het Windows-bestand ingesteld, omdat dit hetzelfde gedrag is als CIFS (Common Internet File System), de SMB -client (Server Message Block) in Linux.

chmod-bestand heeft metagegevens

Chmod wijzigt of voegt metagegevens toe, afhankelijk van de bestaande metagegevens van het bestand.

Houd er rekening mee dat u uzelf niet meer toegang kunt geven dan wat u in Windows hebt, zelfs als de metagegevens zeggen dat dat het geval is. U kunt bijvoorbeeld instellen dat de metagegevens worden weergegeven dat u schrijfmachtigingen hebt voor een bestand met behulp van chmod 777, maar als u probeert dat bestand te openen, kunt u er nog steeds niet naar schrijven. Dit is dankzij interoperabiliteit, omdat alle lees- of schrijfopdrachten naar Windows-bestanden worden gerouteerd via uw Windows-gebruikersmachtigingen.

Een bestand maken in DriveFS

Het resultaat is afhankelijk van of metagegevens zijn ingeschakeld.

Metagegevens zijn niet ingeschakeld (standaard)

De Windows-machtigingen van het nieuw aangemaakte bestand zullen hetzelfde zijn als wanneer u het bestand in Windows zou maken zonder een specifieke beveiligingsdescriptor; het zal de machtigingen van de bovenliggende map overnemen.

Metagegevens zijn ingeschakeld

De machtigingsbits van het bestand zijn ingesteld om de Linux-umask te volgen en het bestand wordt opgeslagen met metagegevens.

Welke Linux-gebruiker en Linux-groep is eigenaar van het bestand?

Het resultaat is afhankelijk van of het bestand al bestaande metagegevens bevat.

Gebruikersbestand heeft geen metagegevens (standaard)

In het standaardscenario wordt bij het automatisch koppelen van Windows-stations opgegeven dat de gebruikers-id (UID) voor elk bestand wordt ingesteld op de gebruikers-id van uw WSL-gebruiker en dat de groeps-id (GID) wordt ingesteld op de primaire groeps-id van uw WSL-gebruiker.

Gebruikersbestand heeft metagegevens

De UID en GID die in de metadata zijn opgegeven, worden toegepast als de gebruikereigenaar en groepseigenaar van het bestand.

Toegang tot Linux-bestanden vanuit Windows met behulp van \\wsl$

Als u Linux-bestanden opent via, \\wsl$ wordt de standaardgebruiker van uw WSL-distributie gebruikt. Daarom heeft elke Windows-app die toegang heeft tot Linux-bestanden dezelfde machtigingen als de standaardgebruiker.

Een nieuw bestand maken

De standaard-umask wordt toegepast bij het maken van een nieuw bestand in een WSL-distributie vanuit Windows. De standaard-umask is 022, of met andere woorden: hiermee zijn alle machtigingen toegestaan, behalve schrijfmachtigingen voor groepen en anderen.

Toegang tot bestanden in het Linux-basisbestandssysteem vanuit Linux

Alle bestanden die zijn gemaakt, gewijzigd of geopend in het Linux-basisbestandssysteem, volgen standaard Linux-conventies, zoals het toepassen van de umask op een nieuw gemaakt bestand.

Bestandsmachtigingen configureren

U kunt uw bestandsrechten in uw Windows-stations configureren met behulp van de mount-opties in wsl.conf. Met de mount opties kunt u umask, dmask en fmask machtigingsmaskers instellen. De umask wordt toegepast op alle bestanden, de dmask wordt alleen toegepast op mappen en de fmask wordt alleen toegepast op bestanden. Deze machtigingsmaskers worden vervolgens via een logische OR-bewerking geplaatst wanneer ze worden toegepast op bestanden, bijvoorbeeld: Als u een umask waarde van 023 en een fmask waarde hebt van 022 dan is het resulterende machtigingsmasker voor bestanden.023

Meer informatie: Configuratieopties per distributie met wsl.conf.