Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En esta página se detalla cómo se interpretan los permisos de archivo de Linux en el Subsistema de Windows para Linux, especialmente cuando se accede a recursos dentro de Windows en el sistema de archivos NT. En esta documentación se da por supuesto un conocimiento básico de la estructura de permisos del sistema de archivos de Linux y el comando umask.
Al acceder a los archivos de Windows desde WSL, los permisos de archivo se calculan a partir de permisos de Windows o se leen de metadatos que WSL ha agregado al archivo. Estos metadatos no están habilitados de forma predeterminada.
Metadatos de WSL en archivos de Windows
Cuando los metadatos se habilitan como una opción de montaje en WSL, se pueden agregar e interpretar atributos extendidos en archivos Windows NT para proporcionar permisos del sistema de archivos linux.
WSL puede agregar cuatro atributos extendidos NTFS:
| Nombre del atributo | Descripción |
|---|---|
| $LXUID | Id. de propietario del usuario |
| $LXGID | Id. de propietario del grupo |
| $LXMOD | Modo de archivo (octales y tipos de permisos de sistemas de archivos, por ejemplo: 0777) |
| $LXDEV | Dispositivo, si es un archivo de dispositivo |
Además, cualquier archivo que no sea un archivo o directorio normal (por ejemplo, vínculos simbólicos, FIFOs, dispositivos de bloque, sockets unix y dispositivos de caracteres) también tiene un punto de reanálisis NTFS. Esto hace que sea mucho más rápido determinar el tipo de archivo en un directorio determinado sin tener que consultar sus atributos extendidos.
Escenarios de acceso a archivos
A continuación se muestra una descripción de cómo se determinan los permisos al acceder a archivos de diferentes maneras mediante el Subsistema de Windows para Linux.
Acceso a archivos en el sistema de archivos de unidad de Windows (DrvFS) desde Linux
Estos escenarios se producen cuando se accede a los archivos de Windows desde WSL, lo más probable es que se realice a través de /mnt/c.
Lectura de permisos de archivo desde un archivo de Windows existente
El resultado depende de si el archivo ya tiene metadatos existentes.
El archivo DrvFS no tiene metadatos (valor predeterminado)
Si el archivo no tiene metadatos asociados a él, traducimos los permisos efectivos del usuario de Windows para leer, escribir o ejecutar bits y establecerlos en este como el mismo valor para el usuario, el grupo y otros. Por ejemplo, si la cuenta de usuario de Windows tiene acceso de lectura y ejecución, pero no acceso de escritura al archivo, se mostrará como r-x para usuario, grupo y otro. Si el archivo tiene el atributo "Solo lectura" establecido en Windows, no se concede acceso de escritura en Linux.
El archivo tiene metadatos
Si el archivo tiene metadatos presentes, simplemente usamos esos valores de metadatos en lugar de traducir permisos efectivos del usuario de Windows.
Cambio de permisos de archivo en un archivo de Windows existente mediante chmod
El resultado depende de si el archivo ya tiene metadatos existentes.
El archivo chmod no tiene metadatos (valor predeterminado)
Chmod solo tendrá un efecto, si quita todos los atributos de escritura de un archivo, se establecerá el atributo "read only" en el archivo de Windows, ya que este es el mismo comportamiento que CIFS (Common Internet File System), que es el cliente SMB (bloque de mensajes del servidor) en Linux.
El archivo chmod tiene metadatos
Chmod cambiará o agregará metadatos en función de los metadatos ya existentes del archivo.
Tenga en cuenta que no puede concederse más acceso que lo que tiene en Windows, incluso si los metadatos dicen que es el caso. Por ejemplo, podría establecer los metadatos para mostrar que tiene permisos de escritura en un archivo mediante chmod 777, pero si intentó acceder a ese archivo, no podrá escribir en él. Esto se debe a la interoperabilidad, ya que los comandos de lectura o escritura en los archivos de Windows se enrutan a través de los permisos de usuario de Windows.
Creación de un archivo en DriveFS
El resultado depende de si los metadatos están habilitados.
Los metadatos no están habilitados (valor predeterminado)
Los permisos de Windows del archivo recién creado serán los mismos que si creó el archivo en Windows sin un descriptor de seguridad específico, heredará los permisos del elemento primario.
Los metadatos están habilitados
Los bits de permiso del archivo se establecen para seguir el umask de Linux y el archivo se guardará con metadatos.
¿Qué usuario de Linux y grupo de Linux posee el archivo?
El resultado depende de si el archivo ya tiene metadatos existentes.
El archivo de usuario no tiene metadatos (valor predeterminado)
En el escenario predeterminado, al montar automáticamente unidades de Windows, se especifica que el identificador de usuario (UID) de cualquier archivo se establece en el identificador de usuario del usuario de WSL y el identificador de grupo (GID) se establece en el identificador de grupo principal del usuario de WSL.
El archivo de usuario tiene metadatos
El UID y EL GID especificados en los metadatos se aplican como propietario del usuario y propietario del grupo del archivo.
Acceso a archivos de Linux desde Windows mediante \\wsl$
El acceso a los archivos de Linux a través \\wsl$ de usará el usuario predeterminado de la distribución de WSL. Por lo tanto, cualquier aplicación de Windows que acceda a los archivos de Linux tendrá los mismos permisos que el usuario predeterminado.
Creación de un nuevo archivo
El umask predeterminado se aplica al crear un nuevo archivo dentro de una distribución de WSL desde Windows. El umask predeterminado es 022o, en otras palabras, permite todos los permisos excepto los permisos de escritura para grupos y otros.
Acceso a archivos en el sistema de archivos raíz de Linux desde Linux
Los archivos creados, modificados o a los que se accede en el sistema de archivos raíz de Linux siguen las convenciones estándar de Linux, como aplicar el umask a un archivo recién creado.
Configuración de permisos de archivo
Puede configurar los permisos de archivo dentro de las unidades de Windows mediante las opciones de montaje en wsl.conf. Las opciones de montaje permiten establecer umaskmáscaras dmask de permisos y fmask .
umask se aplica a todos los archivos, dmask se aplica solo a los directorios y fmask se aplica solo a los archivos. Estas máscaras de permisos se colocan a través de una operación OR lógica cuando se aplica a los archivos, por ejemplo: Si tiene un umask valor de 023 y un fmask valor de , la máscara de 022 permisos resultante para los archivos será 023.
Más información: Por opciones de configuración de distribución con wsl.conf.
Windows Subsystem for Linux