Autorizzazioni dei file per 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. In questa documentazione si presuppone una conoscenza di base della struttura delle autorizzazioni del file system di Linux e del comando umask.
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. I metadati non sono abilitati per impostazione predefinita.
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.
WSL può aggiungere quattro attributi estesi NTFS:
Nome attributo | Descrizione |
---|---|
$LXUID | ID del proprietario dell'utente |
$LXGID | ID del proprietario del gruppo |
$LXMOD | Modalità file (tipo e ottali dell'autorizzazione del file system, ad esempio 0777) |
$LXDEV | Dispositivo, se è un file dispositivo |
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. Ciò consente di determinare il tipo di file in una directory specifica molto più rapidamente, senza dover eseguire query sugli attributi estesi.
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.
Questi scenari si verificano quando si accede ai file di Windows da WSL, molto probabilmente tramite /mnt/c
.
Il risultato dipende dall'eventualità che il file disponga già di metadati esistenti.
Se al file non sono associati metadati, le autorizzazioni effettive dell'utente di Windows vengono convertite in bit di lettura/scrittura/esecuzione e impostate su questo valore come lo stesso valore per utente, gruppo e altro. 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. Se per il file è impostato l'attributo "Sola lettura" in Windows, l'accesso in scrittura non verrà concesso in Linux.
Se il file contiene metadati, è sufficiente usare i valori dei metadati anziché convertire le autorizzazioni valide dell'utente di Windows.
Il risultato dipende dall'eventualità che il file disponga già di metadati esistenti.
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 modificherà o aggiungerà metadati a seconda dei metadati già esistenti del file.
Tieni presente che non puoi concederti un accesso maggiore rispetto a quello di Windows, anche se i metadati lo consentirebbero. 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. 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.
Il risultato dipende dall'eventualità che i metadati siano abilitati.
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.
I bit di autorizzazione del file sono impostati per seguire il comando umask di Linux e il file verrà salvato con i metadati.
Il risultato dipende dall'eventualità che il file disponga già di metadati esistenti.
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.
L'ID utente e l'ID gruppo specificati nei metadati vengono applicati come proprietario dell'utente e proprietario del gruppo del file.
L'accesso ai file Linux tramite \\wsl$
userà l'utente predefinito della distribuzione di WSL. Qualsiasi app di Windows che accede ai file Linux avrà quindi le stesse autorizzazioni dell'utente predefinito.
Il valore predefinito di umask viene applicato quando si crea un nuovo file all'interno di una distribuzione di WSL da Windows. Il valore predefinito di umask è 022
, consente quindi tutte le autorizzazioni eccetto quelle di scrittura per gruppi e altri elementi.
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.
Puoi ora configurare le autorizzazioni per i file all'interno delle unità Windows usando le opzioni di montaggio in wsl.conf. Le opzioni di montaggio consentono di impostare le maschere delle autorizzazioni umask
, dmask
e fmask
. umask
viene applicato a tutti i file, dmask
viene applicato solo alle directory e fmask
viene applicato solo ai file. Queste maschere di autorizzazione vengono quindi inserite in un'operazione OR logica quando vengono applicate ai file, ad esempio se si ha un valore umask
di 023
e un valore fmask
di 022
la maschera di autorizzazioni risultante per i file sarà023
.
Altre informazioni: Opzioni di configurazione per distribuzione con wsl.conf.
Feedback su Windows Subsystem for Linux
Windows Subsystem for Linux è un progetto di open source. Selezionare un collegamento per fornire feedback: