Partager via


Autorisations de fichier pour WSL

Cette page détaille la façon dont les autorisations de fichier Linux sont interprétées dans le sous-système Windows pour Linux, en particulier lors de l’accès aux ressources à l’intérieur de Windows sur le système de fichiers NT. Cette documentation suppose une compréhension de base de la structure des autorisations du système de fichiers Linux et de la commande umask.

Lors de l’accès aux fichiers Windows à partir de WSL, les autorisations de fichier sont calculées à partir des autorisations Windows ou sont lues à partir de métadonnées qui ont été ajoutées au fichier par WSL. Ces métadonnées ne sont pas activées par défaut.

Métadonnées WSL sur les fichiers Windows

Lorsque les métadonnées sont activées en tant qu’option de montage dans WSL, les attributs étendus sur les fichiers Windows NT peuvent être ajoutés et interprétés pour fournir des autorisations de système de fichiers Linux.

WSL peut ajouter quatre attributs étendus NTFS :

Nom de l’attribut Descriptif
$LXUID ID du propriétaire de l’utilisateur
$LXGID ID du propriétaire du groupe
$LXMOD Mode fichier (octals d’autorisation des systèmes de fichiers et type, par exemple : 0777)
$LXDEV Appareil, s’il s’agit d’un fichier d’appareil

En outre, tout fichier qui n’est pas un fichier ou un répertoire standard (par exemple, les liens symboliques, les fiFO, les périphériques de blocage, les sockets unix et les appareils de caractères) a également un point d’analyse NTFS. Cela rend beaucoup plus rapide la détermination du type de fichier dans un répertoire donné sans avoir à interroger ses attributs étendus.

Scénarios d’accès aux fichiers

Vous trouverez ci-dessous une description de la façon dont les autorisations sont déterminées lors de l’accès aux fichiers de différentes façons à l’aide du sous-système Windows pour Linux.

Accès aux fichiers dans le système de fichiers de lecteur Windows (DrvFS) à partir de Linux

Ces scénarios se produisent lorsque vous accédez à vos fichiers Windows à partir de WSL, probablement via /mnt/c.

Lecture des autorisations de fichier à partir d’un fichier Windows existant

Le résultat dépend du fait que le fichier possède déjà des métadonnées existantes.

Le fichier DrvFS n’a pas de métadonnées (par défaut)

Si le fichier n’a pas de métadonnées associées, nous traduisez les autorisations effectives de l’utilisateur Windows en bits de lecture/écriture/exécution, puis nous les définissons comme la même valeur pour l’utilisateur, le groupe et d’autres. Par exemple, si votre compte d’utilisateur Windows dispose d’un accès en lecture et en exécution, mais qu’il n’y a pas d’accès en écriture au fichier, cela s’affiche comme r-x pour l’utilisateur, le groupe et d’autres. Si le fichier a l’attribut « Lecture seule » défini dans Windows, nous n’accordons pas l’accès en écriture dans Linux.

Le fichier a des métadonnées

Si le fichier comporte des métadonnées, nous utilisons simplement ces valeurs de métadonnées au lieu de traduire les autorisations effectives de l’utilisateur Windows.

Modification des autorisations de fichier sur un fichier Windows existant à l’aide de chmod

Le résultat dépend du fait que le fichier possède déjà des métadonnées existantes.

Le fichier chmod n’a pas de métadonnées (valeur par défaut)

Chmod n’aura qu’un seul effet, si vous supprimez tous les attributs d’écriture d’un fichier, l’attribut « lecture seule » sur le fichier Windows sera défini, car il s’agit du même comportement que CIFS (Common Internet File System) qui est le client SMB (Server Message Block) dans Linux.

Le fichier chmod contient des métadonnées

Chmod modifie ou ajoute des métadonnées en fonction des métadonnées déjà existantes du fichier.

Gardez à l’esprit que vous ne pouvez pas vous donner plus d’accès que ce que vous avez sur Windows, même si les métadonnées indiquent que c’est le cas. Par exemple, vous pouvez définir les métadonnées pour afficher que vous disposez d’autorisations d’écriture sur un fichier à l’aide chmod 777d’un fichier, mais si vous avez essayé d’accéder à ce fichier, vous ne pourrez toujours pas y écrire. Cela est dû à l’interopérabilité, car toutes les commandes de lecture ou d’écriture dans les fichiers Windows sont routées via vos autorisations utilisateur Windows.

Création d’un fichier dans DriveFS

Le résultat dépend du fait que les métadonnées sont activées.

Les métadonnées ne sont pas activées (par défaut)

Les autorisations Windows du fichier nouvellement créé sont les mêmes que si vous avez créé le fichier dans Windows sans descripteur de sécurité spécifique, il héritera des autorisations du parent.

Les métadonnées sont activées

Les bits d’autorisation du fichier sont définis pour suivre l’umask Linux, et le fichier sera enregistré avec des métadonnées.

Quel groupe Linux et utilisateur Linux possèdent le fichier ?

Le résultat dépend du fait que le fichier possède déjà des métadonnées existantes.

Le fichier utilisateur n’a pas de métadonnées (valeur par défaut)

Dans le scénario par défaut, lors du montage automatique des lecteurs Windows, nous spécifions que l’ID utilisateur (UID) d’un fichier est défini sur l’ID utilisateur de votre utilisateur WSL et que l’ID de groupe (GID) est défini sur l’ID de groupe principal de votre utilisateur WSL.

Le fichier utilisateur a des métadonnées

L’UID et le GID spécifiés dans les métadonnées sont appliqués en tant que propriétaire de l’utilisateur et propriétaire du groupe du fichier.

Accès aux fichiers Linux à partir de Windows à l’aide de \\wsl$

L’accès aux fichiers Linux via \\wsl$ utilise l’utilisateur par défaut de votre distribution WSL. Par conséquent, toute application Windows accédant aux fichiers Linux aura les mêmes autorisations que l’utilisateur par défaut.

Création d’un fichier

L’umask par défaut est appliqué lors de la création d’un fichier à l’intérieur d’une distribution WSL à partir de Windows. L’umask par défaut est 022, ou en d’autres termes, il autorise toutes les autorisations à l’exception des autorisations d’écriture pour les groupes et d’autres.

Accès aux fichiers dans le système de fichiers racine Linux à partir de Linux

Tous les fichiers créés, modifiés ou accessibles dans le système de fichiers racine Linux suivent les conventions Linux standard, telles que l’application de l’umask à un fichier nouvellement créé.

Configuration des autorisations de fichier

Vous pouvez configurer vos autorisations de fichier à l’intérieur de vos lecteurs Windows à l’aide des options de montage dans wsl.conf. Les options de montage vous permettent de définir umasket fmaskdmask de masques d’autorisations. L’application umask est appliquée à tous les fichiers, elle dmask est appliquée uniquement aux répertoires et elle fmask est appliquée uniquement aux fichiers. Ces masques d’autorisation sont ensuite placés dans une opération OR logique lorsqu’ils sont appliqués aux fichiers, par exemple : si vous avez une umask valeur et une fmask valeur, le masque d’autorisations 022 résultant pour les fichiers sera 023023 .

En savoir plus : par options de configuration de distribution avec wsl.conf.