Autorisations de fichier pour WSLFile Permissions for WSL

Cette page explique en détail comment les autorisations de fichier Linux sont interprétées dans le sous-système Windows pour Linux, en particulier lors de l’accès à des ressources dans Windows, dans le système de fichiers NT.This page details how Linux file permissions are interpreted across the Windows Subsystem for Linux, especially when accessing resources inside of Windows on the NT file system. Cette documentation suppose d’avoir compris les bases de la structure des autorisations du système de fichiers Linux et de la commande umask.This documentation assumes a basic understanding of the Linux file system permissions structure and the umask command.

Lors de l’accès à des fichiers Windows à partir de WSL, les autorisations de fichier sont calculées à partir des autorisations Windows ou lues à partir des métadonnées qui ont été ajoutées au fichier par WSL.When accessing Windows files from WSL the file permissions are either calculated from Windows permissions, or are read from metadata that has been added to the file by WSL. Ces métadonnées ne sont pas activées par défaut.This metadata is not enabled by default.

Métadonnées WSL sur les fichiers WindowsWSL metadata on Windows files

Lorsque les métadonnées sont activées comme option de montage dans WSL, des 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.When metadata is enabled as a mount option in WSL, extended attributes on Windows NT files can be added and interpreted to supply Linux file system permissions.

WSL peut ajouter quatre attributs étendus NTFS :WSL can add four NTFS extended attributes:

Nom d’attributAttribute Name DescriptionDescription
$LXUID$LXUID ID d’utilisateur propriétaireUser Owner ID
$LXGID$LXGID ID de groupe propriétaireGroup Owner ID
$LXMOD$LXMOD Mode fichier (octaux et type d’autorisation des systèmes de fichiers, p. ex. : 0777)File mode (File systems permission octals and type, e.g: 0777)
$LXDEV$LXDEV Appareil, s’il s’agit d’un fichier d’appareilDevice, if it is a device file

De plus, tout fichier qui n’est pas un fichier ou un répertoire standard (p. ex. : liens symboliques, FIFO, périphériques de traitement par blocs, sockets Unix et périphériques d’entrée-sortie de caractères) a également un point d’analyse NTFS.Additionally, any file that is not a regular file or directory (e.g: symlinks, FIFOs, block devices, unix sockets, and character devices) also have an NTFS reparse point. Il est ainsi beaucoup plus rapide de déterminer le type de fichier figurant dans un répertoire donné sans avoir à interroger ses attributs étendus.This makes it much faster to determine the kind of file in a given directory without having to query its extended attributes.

Scénarios d’accès aux fichiersFile Access Scenarios

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 manières à l’aide du sous-système Windows pour Linux.Below is a description of how permissions are determined when accessing files in different ways using the Windows Subsystem for Linux.

Accès aux fichiers dans le système de fichiers du lecteur Windows (DrvFS) à partir de LinuxAccessing Files in the Windows drive file system (DrvFS) from Linux

Ces scénarios surviennent lorsque vous accédez à vos fichiers Windows à partir de WSL, probablement via /mnt/c.These scenarios occur when you are accessing your Windows files from WSL, most likely via /mnt/c.

Lecture des autorisations de fichier à partir d’un fichier Windows existantReading file permissions from an existing Windows file

Le résultat dépend du fait que le fichier a ou non déjà des métadonnées existantes.The result depends on if the file already has existing metadata.

Le fichier DrvFS n’a pas de métadonnées (par défaut)DrvFS file does not have metadata (default)

Si le fichier n’a pas de métadonnées associées, nous traduisons les autorisations effectives de l’utilisateur Windows en bits de lecture/écriture/exécution et leur attribuons la même valeur pour l’utilisateur, le groupe et autre.If the file has no metadata associated with it then we translate the effective permissions of the Windows user to read/write/execute bits and set them to the this as the same value for user, group, and other. Par exemple, si votre compte d’utilisateur Windows dispose d’un accès en lecture et exécution, mais pas d’un accès en écriture au fichier, cela sera indiqué sous la forme r-x pour l’utilisateur, le groupe et autre.For example, if your Windows user account has read and execute access but not write access to the file then this will be shown as r-x for user, group and other. Si l’attribut « Lecture seule » du fichier est défini dans Windows, nous n’accordons pas l’accès en écriture dans Linux.If the file has the 'Read Only' attribute set in Windows then we do not grant write access in Linux.

Le fichier a des métadonnéesThe file has metadata

Si le fichier a des métadonnées, nous utilisons simplement ces valeurs de métadonnées au lieu de traduire les autorisations effectives de l’utilisateur Windows.If the file has metadata present, we simply use those metadata values instead of translating effective permissions of the Windows user.

Modification des autorisations de fichier d’un fichier Windows existant à l’aide de chmodChanging file permissions on an existing Windows file using chmod

Le résultat dépend du fait que le fichier a ou non déjà des métadonnées existantes.The result depends on if the file already has existing metadata.

Le fichier chmod n’a pas de métadonnées (par défaut)chmod file does not have metadata (default)

Chmod aura un seul effet. Si vous supprimez tous les attributs d’écriture d’un fichier, l’attribut « lecture seule » du fichier Windows est défini, car il s’agit du même comportement que celui du système CIFS (Common Internet File System) qui est le client SMB (Server Message Block) dans Linux.Chmod will only have one effect, if you remove all the write attributes of a file then the 'read only' attribute on the Windows file will be set, since this is the same behaviour as CIFS (Common Internet File System) which is the SMB (Server Message Block) client in Linux.

Le fichier chmod a des métadonnéeschmod file has metadata

Chmod change ou ajoute des métadonnées en fonction des métadonnées déjà existantes du fichier.Chmod will change or add metadata depending on the file's already existing metadata.

N’oubliez pas que vous ne pouvez pas vous accorder plus d’accès que ce que vous avez sur Windows, même si les métadonnées indiquent que vous le pouvez.Please keep in mind that you cannot give yourself more access than what you have on Windows, even if the metadata says that is the case. Par exemple, vous pouvez définir les métadonnées pour qu’elles affichent que vous disposez d’autorisations en écriture à un fichier à l’aide de chmod 777, mais si vous tentez d’accéder à ce fichier, vous ne pourrez toujours pas écrire dedans.For example, you could set the metadata to display that you have write permissions to a file using chmod 777, but if you tried to access that file you would still not be able to write to it. Cela est dû à l’interopérabilité, car les commandes de lecture et d’écriture des fichiers Windows sont routées via vos autorisations d’utilisateur Windows.This is thanks to interopability, as any read or write commands to Windows files are routed through your Windows user permissions.

Création d’un fichier dans DriveFSCreating a file in DriveFS

Le résultat dépend de l’activation ou non des métadonnées.The result depends on if metadata is enabled.

Les métadonnées ne sont pas activées (par défaut)Metadata is not enabled (default)

Les autorisations Windows du fichier nouvellement créé sont les mêmes que si vous avez créé le fichier dans Windows sans un descripteur de sécurité spécifique. Il hérite des autorisations du parent.The Windows permissions of the newly created file will be the same as if you created the file in Windows without a specific security descriptor, it will inherit the parent's permissions.

Les métadonnées sont activéesMetadata is enabled

Les bits d’autorisation de fichier sont définis de façon à suivre le masque umask Linux, et le fichier est enregistré avec les métadonnées.The file's permission bits are set to follow the Linux umask, and the file will be saved with metadata.

Quel utilisateur Linux et quel groupe Linux le fichier détient-il ?Which Linux user and Linux group owns the file?

Le résultat dépend du fait que le fichier a ou non déjà des métadonnées existantes.The result depends on if the file already has existing metadata.

Le fichier utilisateur n’a pas de métadonnées (par défaut)User file does not have metadata (default)

Dans le scénario par défaut, lors du montage automatique de lecteurs Windows, nous spécifions que l’ID d’utilisateur (UID) de tous les fichiers est défini sur l’ID d’utilisateur (UID) de votre utilisateur WSL et que l’ID de groupe (GID) est défini sur l’ID de groupe principal de votre utilisateur WSL.In the default scenario, when automounting Windows drives, we specify that the user ID (UID) for any file is set to the user ID of your WSL user and the group ID (GID) is set to the principal group ID of your WSL user.

Le fichier utilisateur a des métadonnéesUser file has metadata

Les identificateurs UID et GID spécifiés dans les métadonnées sont appliqués en tant qu’utilisateur propriétaire et groupe propriétaire du fichier.The UID and GID specified in the metadata is applied as the user owner and group owner of the file.

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

L’accès aux fichiers Linux via \\wsl$ utilise l’utilisateur par défaut de votre distribution WSL.Accessing Linux files via \\wsl$ will use the default user of your WSL distribution. Par conséquent, toute application Windows accédant à des fichiers Linux aura les mêmes autorisations que l’utilisateur par défaut.Therefore any Windows app accessing Linux files will have the same permissions as the default user.

Création d’un nouveau fichierCreating a new file

Le masque umask par défaut est appliqué lors de la création d’un nouveau fichier à l’intérieur d’une distribution WSL à partir de Windows.The default umask is applied when creating a new file inside of a WSL distribution from Windows. Le masque umask par défaut est 022. En d’autres termes, il autorise toutes les autorisations, à l’exception des autorisations en écriture sur les groupes et autres.The default umask is 022, or in other words it allows all permissions except write permissions to groups and others.

Accès aux fichiers dans le système de fichiers racine Linux à partir de LinuxAccessing files in the Linux root file system from Linux

Tous les fichiers créés, modifiés ou consultés dans le système de fichiers racine Linux suivent les conventions Linux standard, telles que l’application du masque umask à un fichier nouvellement créé.Any files created, modified, or accessed in the Linux root file system follow standard Linux conventions, such as applying the umask to a newly created file.

Configuration des autorisations de fichierConfiguring file permissions

Vous pouvez configurer vos autorisations de fichier à l’intérieur de vos lecteurs Windows à l’aide des options de montage figurant dans wsl.conf.You can configure your file permissions inside of your Windows drives using the mount options in wsl.conf. Les options de montage vous permettent de définir des masques d’autorisations umask, dmask et fmask.The mount options allow you to set umask, dmask and fmask permissions masks. Le masque umask est appliqué à tous les fichiers, le masque dmask est appliqué uniquement aux répertoires et le masque fmask est appliqué uniquement aux fichiers.The umask is applied to all files, the dmask is applied just to directories and the fmask is applied just to files. Ces masques d’autorisations passent ensuite par une opération OR logique lorsqu’ils sont appliqués aux fichiers, p. ex. : Si vous avez une valeur umask de 023 et une valeur fmask de 022, le masque d’autorisations résultant pour les fichiers sera 023.These permission masks are then put through a logical OR operation when being applied to files, e.g: If you have a umask value of 023 and an fmask value of 022 then the resulting permissions mask for files will be 023.

Pour obtenir des instructions sur la procédure à suivre, consultez l’article Configurer les paramètres de lancement par distribution avec wslconf.Please see the Configure per distro launch settings with wslconf article for instructions on how to do this.