Autorizzazioni dei file per WSLFile Permissions for WSL

Questa pagina descrive in che modo le autorizzazioni dei file di Linux vengono interpretate nel sottosistema Windows per Linux, soprattutto quando si accede alle risorse all'interno di Windows sul file system 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. In questa documentazione si presuppone una conoscenza di base della struttura delle autorizzazioni del file system di Linux e del comando umask.This documentation assumes a basic understanding of the Linux file system permissions structure and the umask command.

Quando accedi ai file di Windows da WSL, le autorizzazioni dei file vengono calcolate dalle autorizzazioni di Windows o lette dai metadati aggiunti al file da 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. I metadati non sono abilitati per impostazione predefinita.This metadata is not enabled by default.

Metadati di WSL nei file di WindowsWSL metadata on Windows files

Quando i metadati sono abilitati come opzione di montaggio in WSL, puoi aggiungere e interpretare attributi estesi nei file NT di Windows per fornire le autorizzazioni del file system di 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 può aggiungere quattro attributi estesi NTFS:WSL can add four NTFS extended attributes:

Nome attributoAttribute Name DescriptionDescription
$LXUID$LXUID ID del proprietario dell'utenteUser Owner ID
$LXGID$LXGID ID del proprietario del gruppoGroup Owner ID
$LXMOD$LXMOD Modalità file (tipo e ottali dell'autorizzazione del file system, ad esempio 0777)File mode (File systems permission octals and type, e.g: 0777)
$LXDEV$LXDEV Dispositivo, se è un file dispositivoDevice, if it is a device file

Inoltre, qualsiasi file che non sia un file o una directory normale (ad esempio, collegamenti simbolici, FIFO, dispositivi a blocchi, socket Unix e dispositivi a caratteri) dispone anche di un reparse point 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. Ciò consente di determinare il tipo di file in una directory specifica molto più rapidamente, senza dover eseguire query sugli attributi estesi.This makes it much faster to determine the kind of file in a given directory without having to query its extended attributes.

Scenari di accesso ai fileFile Access Scenarios

Di seguito è riportata una descrizione del modo in cui vengono determinate le autorizzazioni quando si accede ai file in modi diversi usando il sottosistema Windows per Linux.Below is a description of how permissions are determined when accessing files in different ways using the Windows Subsystem for Linux.

Accesso ai file nel file system dell'unità Windows (DrvFS) da LinuxAccessing Files in the Windows drive file system (DrvFS) from Linux

Questi scenari si verificano quando si accede ai file di Windows da WSL, molto probabilmente tramite /mnt/c.These scenarios occur when you are accessing your Windows files from WSL, most likely via /mnt/c.

Lettura delle autorizzazioni dei file da un file di Windows esistenteReading file permissions from an existing Windows file

Il risultato dipende dall'eventualità che il file disponga già di metadati esistenti.The result depends on if the file already has existing metadata.

Il file DrvFS non contiene metadati (impostazione predefinita)DrvFS file does not have metadata (default)

Se al file non sono associati metadati, convertiamo le autorizzazioni valide dell'utente di Windows, in modo da leggere/scrivere/eseguire bit e impostarle sullo stesso valore per utenti, gruppi e altri elementi.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. Se, ad esempio, l'account utente di Windows dispone dell'accesso in lettura ed esecuzione ma non di accesso in scrittura al file, verrà visualizzato come r-x per utenti, gruppi e altri elementi.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. Se per il file è impostato l'attributo "Sola lettura" in Windows, l'accesso in scrittura non verrà concesso in Linux.If the file has the 'Read Only' attribute set in Windows then we do not grant write access in Linux.

Il file contiene metadatiThe file has metadata

Se il file contiene metadati, è sufficiente usare i valori dei metadati anziché convertire le autorizzazioni valide dell'utente di Windows.If the file has metadata present, we simply use those metadata values instead of translating effective permissions of the Windows user.

Modifica delle autorizzazioni dei file da un file di Windows esistente tramite chmodChanging file permissions on an existing Windows file using chmod

Il risultato dipende dall'eventualità che il file disponga già di metadati esistenti.The result depends on if the file already has existing metadata.

Il file chmod non contiene metadati (impostazione predefinita)chmod file does not have metadata (default)

Chmod avrà un solo effetto, se rimuovi tutti gli attributi di scrittura di un file, verrà impostato l'attributo "Sola lettura" nel file di Windows, poiché si tratta dello stesso comportamento di CIFS (Common Internet file System), ovvero il client SMB (Server Message Block) in 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.

Il file chmod contiene metadatichmod file has metadata

Chmod modificherà o aggiungerà metadati a seconda dei metadati già esistenti del file.Chmod will change or add metadata depending on the file's already existing metadata.

Tieni presente che non puoi concederti un accesso maggiore rispetto a quello di Windows, anche se i metadati lo consentirebbero.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. Ad esempio, puoi impostare i metadati in modo da visualizzare che disponi di autorizzazioni di scrittura per un file usando chmod 777, ma se tenti di accedere a tale file, non potrai ancora scrivervi.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. Questo aspetto dipende dall'interoperabilità, poiché tutti i comandi di lettura o scrittura nei file di Windows vengono instradati tramite le autorizzazioni utente di Windows.This is thanks to interopability, as any read or write commands to Windows files are routed through your Windows user permissions.

Creazione di un file in DriveFSCreating a file in DriveFS

Il risultato dipende dall'eventualità che i metadati siano abilitati.The result depends on if metadata is enabled.

I metadati non sono abilitati (impostazione predefinita)Metadata is not enabled (default)

Le autorizzazioni di Windows del file appena creato saranno le stesse che avrebbe il file se fosse stato creato in Windows senza un descrittore di sicurezza specifico, erediterà le autorizzazioni dell'elemento padre.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.

I metadati sono abilitatiMetadata is enabled

I bit di autorizzazione del file sono impostati per seguire il comando umask di Linux e il file verrà salvato con i metadati.The file's permission bits are set to follow the Linux umask, and the file will be saved with metadata.

Quale utente e gruppo Linux è proprietario del file?Which Linux user and Linux group owns the file?

Il risultato dipende dall'eventualità che il file disponga già di metadati esistenti.The result depends on if the file already has existing metadata.

Il file utente non contiene metadati (impostazione predefinita)User file does not have metadata (default)

Nello scenario predefinito, quando si esegue il montaggio automatico delle unità Windows, si specifica che l'ID utente (UID) per qualsiasi file è impostato sull'ID utente dell'utente WSL e l'ID gruppo (GID) è impostato sull'ID gruppo principale dell'utente 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.

Il file utente contiene metadatiUser file has metadata

L'ID utente e l'ID gruppo specificati nei metadati vengono applicati come proprietario dell'utente e proprietario del gruppo del file.The UID and GID specified in the metadata is applied as the user owner and group owner of the file.

Accesso ai file Linux da Windows tramite \\wsl$Accessing Linux files from Windows using \\wsl$

L'accesso ai file Linux tramite \\wsl$ userà l'utente predefinito della distribuzione di WSL.Accessing Linux files via \\wsl$ will use the default user of your WSL distribution. Qualsiasi app di Windows che accede ai file Linux avrà quindi le stesse autorizzazioni dell'utente predefinito.Therefore any Windows app accessing Linux files will have the same permissions as the default user.

Creazione di un nuovo fileCreating a new file

Il valore predefinito di umask viene applicato quando si crea un nuovo file all'interno di una distribuzione di WSL da Windows.The default umask is applied when creating a new file inside of a WSL distribution from Windows. Il valore predefinito di umask è 022, consente quindi tutte le autorizzazioni eccetto quelle di scrittura per gruppi e altri elementi.The default umask is 022, or in other words it allows all permissions except write permissions to groups and others.

Accesso ai file nel file system radice di Linux da LinuxAccessing files in the Linux root file system from Linux

Tutti i file creati, modificati o a cui si accede nel file system radice di Linux seguono le convenzioni standard di Linux, ad esempio l'applicazione di umask a un file appena creato.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.

Configurazione delle autorizzazioni per i fileConfiguring file permissions

Puoi ora configurare le autorizzazioni per i file all'interno delle unità Windows usando le opzioni di montaggio in wsl.conf.You can configure your file permissions inside of your Windows drives using the mount options in wsl.conf. Le opzioni di montaggio consentono di impostare le maschere delle autorizzazioni umask, dmask e fmask.The mount options allow you to set umask, dmask and fmask permissions masks. umask viene applicato a tutti i file, dmask viene applicato solo alle directory e fmask viene applicato solo ai file.The umask is applied to all files, the dmask is applied just to directories and the fmask is applied just to files. Le maschere delle autorizzazioni vengono sottoposte a un'operazione OR logica quando vengono applicate ai file, ad esempio: Se disponi di un valore umask di 023 e di un valore fmask di 022, le maschere delle autorizzazioni risultanti per i file saranno 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.

Per istruzioni su come eseguire questa operazione, vedi l'articolo Configurare le impostazioni di avvio per ogni distribuzione con wslconf.Please see the Configure per distro launch settings with wslconf article for instructions on how to do this.