Разрешения файлов для WSL
На этой странице представлены сведения об интерпретации разрешений файлов Linux в подсистеме Windows для Linux, особенно при получении доступа к ресурсам в файловой системе NT под управлением Windows. В этой документации предполагается, что вы имеете базовое представление о структуре разрешений файловой системы Linux и командах umask.
При доступе к файлам Windows из WSL разрешения файлов вычисляются на основе разрешений Windows, либо считываются из метаданных, которые были добавлены в файл с помощью WSL. По умолчанию эти метаданные не включены.
Если метаданные включены в качестве параметра подключения в WSL, вы можете добавить и интерпретировать расширенные атрибуты в файлах Windows NT, чтобы предоставить разрешения файловой системы Linux.
WSL может добавлять четыре расширенных атрибута NTFS:
Имя атрибута | Описание |
---|---|
$LXUID | Идентификатор пользователя владельца |
$LXGID | Идентификатор владельца группы |
$LXMOD | Файловый режим (восьмеричная система и типы разрешений файловой системы, например: 0777) |
$LXDEV | Устройство (если это файл устройства) |
Кроме того, любой файл, который не является обычным файлом или каталогом (например, символические ссылки, файлы FIFO, блочные устройства, сокеты Unix и символьные устройства) также имеет точку повторного анализа NTFS. Это позволяет быстрее определить тип файла в определенном каталоге, не запрашивая его расширенных атрибутов.
Ниже приведено описание того, как определяются разрешения при получении доступа к файлам с помощью подсистемы Windows для Linux различными способами.
Эти сценарии возникают при получении доступа к файлам Windows из WSL, скорее всего с помощью /mnt/c
.
Результат будет зависеть от того, содержит ли файл уже существующие метаданные.
Если файл не имеет метаданных, связанных с ним, то мы преобразуем действующие разрешения пользователя Windows на чтение и запись и выполнение битов и задайте их таким же значением для пользователя, группы и другого. Например, если учетная запись пользователя Windows имеет доступ на чтение и выполнение, но не имеет доступа на запись в файл, для пользователя, группы и других элементов она будет отображаться как r-x
. Если для файла в Windows задан атрибут "только для чтения", доступ на запись в Linux не предоставляется.
Если файл содержит метаданные, мы будем использовать их значения вместо преобразованных действующих разрешений пользователя Windows.
Результат будет зависеть от того, содержит ли файл уже существующие метаданные.
Chmod будет иметь только один эффект, если удалить все атрибуты записи файла, то атрибут "только для чтения" в файле Windows будет установлен, так как это то же поведение, что и CIFS (общая файловая система Интернета), который является клиентом S МБ (блок сообщений сервера) в Linux.
В зависимости от уже существующих метаданных файла, файл chmod будет изменен или будут добавлены метаданные.
Помните, что вы не можете предоставить себе больше прав доступа, чем вы имели в Windows, даже если в метаданных указано, что это возможно. Например, можно задать, чтобы в метаданных отображалось, что у вас есть разрешения на запись в файл с помощью chmod 777
, но если вы попытаетесь получить доступ к этому файлу, запись будет невозможна. Это происходит благодаря взаимодействию, так как любые команды чтения или записи направляются в файлы Windows через разрешения пользователя Windows.
Результат зависит от того, включены метаданные или нет.
Разрешения Windows для созданного файла будут такими же, как если бы вы создали файл в Windows без конкретного дескриптора безопасности. Он наследует родительские разрешения.
Биты разрешений файла задаются в соответствии с командой umask в Linux, и файл будет сохранен с метаданными.
Результат будет зависеть от того, содержит ли файл уже существующие метаданные.
В сценарии по умолчанию при автоподключении дисков Windows мы указываем, что идентификатору пользователя (UID) любого файла присваивается идентификатор пользователя WSL, а идентификатору группы (GID) — идентификатор главной группы пользователя WSL.
Идентификаторы пользователя и группы, указанные в метаданных, применяются в качестве пользователя владельца и владельца группы файла.
Для получения доступа к файлам Linux с помощью \\wsl$
будет использоваться пользователь по умолчанию дистрибутива WSL. Таким образом, все приложения Windows, обращающиеся к файлам Linux, будут иметь те же разрешения, что и пользователь по умолчанию.
Параметр umask по умолчанию применяется при создании файла в дистрибутиве WSL из Windows. По умолчанию параметр umask имеет значение 022
. Или другими словами он позволяет использовать все разрешения, кроме разрешения на запись, в группах и других элементах.
Во всех файлах, созданных, измененных или доступ к которым осуществлялся с помощью корневой файловой системы Linux, используются стандартные соглашения Linux. Например, к только что созданному файлу применяется команда umask.
Вы можете настроить разрешения файлов в дисках Windows с помощью параметров подключения в wsl.conf. Параметры подключения позволяют задать маски разрешений umask
, dmask
и fmask
. umask
применяется ко всем файлам, dmask
— только к каталогам, а fmask
— только к файлам. Затем эти маски разрешений подвергаются логической операции ИЛИ во время применения к файлам, например: Если у вас есть значение umask
для 023
и значение fmask
для 022
, то полученная маска разрешений для файлов будет 023
.
Дополнительные сведения см. в разделе Добавление параметров конфигурации для дистрибутивов с использованием wsl.conf.
Отзыв о Windows Subsystem for Linux
Windows Subsystem for Linux — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: