Verification: a143cc29221c9be0

Php chmod 777 на папку и включая все

Содержание

Сборка 21364

Общие сведения о сборке Windows 21364 доступны в блоге о Windows.

  • Доступны приложения с графическим пользовательским интерфейсом! Дополнительные сведения см. в этой записи блога.
  • Устранена ошибка при доступе к файлам через \\wsl.localhost\.
  • Исправлена потенциальная взаимоблокировка в службе LxssManager.

Сборка 21354

Общие сведения о сборке Windows 21354 доступны в блоге о Windows.

  • Чтобы избежать проблем, связанных с наличием в сети компьютера с именем wsl, необходимо изменить префикс \wsl на \wsl.localhost. Имя \wsl$ допускается.
  • Щелкните значок быстрого доступа Linux для процессов WoW.
  • Ошибка обновления, из-за которой версия 2 всегда передается через wslapi RegisterDistribution.
  • Измените fmask для каталога /usr/lib/wsl/lib на 222, чтобы файлы были помечены как исполняемые [GH 3847].
  • Устраните сбой службы WSL, если платформа виртуальной машины не включена.

Сборка 21286

Общие сведения о сборке Windows 21286 доступны в блоге о Windows.

  • Введена команда wsl.exe --cd для указания текущего рабочего каталога команды.
  • Улучшено сопоставление кодов ошибок NTSTATUS и Linux. [GH 6063]
  • Улучшены отчеты об ошибках при выполнении команды wsl.exe --mount.
  • В etc/wsl.conf добавлен параметр для включения команд запуска:
[boot]
command=

Сборка 20226.

Общие сведения о сборке Windows 20226 доступны в блоге о Windows.

  • Устранен сбой в службе LxssManager. [GH 5902]

Сборка 20211

Общие сведения о сборке Windows 20211 доступны в блоге о Windows.

  • Представлена новая команда wsl.exe --mount для подключения физических или виртуальных дисков. Дополнительные сведения см. в статье Доступ к файловым системам Linux в Windows и WSL 2.
  • Устранен сбой в службе LxssManager при проверке активности виртуальной машины. [GH 5768]
  • Включена поддержка сжатых VHD-файлов. [GH 4103]
  • Убедитесь, что библиотеки пользовательского режима Linux, установленные в c:\windows\system32\lxss\lib, сохраняются при обновлении ОС. [GH 5848]
  • Включена возможность получить список дистрибутивов, доступных для установки, с помощью команды wsl --install --list-distributions.
  • Теперь, когда пользователь выходит из системы, работа экземпляров WSL завершается.

Сборка 20190

Общие сведения о сборке Windows 20190 доступны в блоге о Windows.

  • Исправлена ошибка, препятствующая запуску экземпляров WSL 1. [GH 5633]
  • Исправлена ошибка, приводившая к зависанию при перенаправлении выходных данных процесса Windows. [GH 5648]
  • Добавлен параметр %userprofile%\.wslconfig для управления временем ожидания при простое виртуальной машины (wsl2.vmIdleTimeout=).
  • Включена поддержка запуска псевдонимов выполнения приложений из WSL.
  • Включена поддержка установки ядра WSL2 и дистрибутивов с помощью команды wsl.exe --install.

Сборка 20175

Общие сведения о сборке Windows 20175 доступны в блоге о Windows.

  • В качестве выделяемого по умолчанию объема памяти виртуальной машины WSL2 теперь используется 50 % от памяти узла или 8 ГБ в зависимости от того, что меньше [GH 4166].
  • Префикс \\wsl$ изменен на \\wsl для поддержки синтаксического анализа URI. Старый путь \\wsl$ по-прежнему поддерживается.
  • В архитектуре AMD64 вложенная виртуализация для WSL2 включена по умолчанию. Вы можете отключить ее с помощью команды %userprofile%\.wslconfig ([wsl2] nestedVirtualization=false).
  • По запросу wsl.exe --update запускается Центр обновления Майкрософт.
  • В DrvFs поддерживается переименование файлов, доступных только для чтения.
  • Сообщения об ошибках всегда выводятся на правильной странице кода.

Сборка 20150

Общие сведения о сборке Windows 20150 см. в блоге о Windows.

  • Сведения о вычислениях GPU WSL2 см. в блоге о Windows.
  • Добавлен параметр wsl.exe --install командной строки для быстрой настройки WSL.
  • Добавлен параметр командной строки wsl.exe --update для управления обновлениями ядра WSL2.
  • Используйте WSL2 в качестве значения по умолчанию.
  • Увеличено время ожидания корректного завершения работы виртуальной машины WSL2.
  • Исправлено состояние гонки virtio-9p при сопоставлении памяти устройства.
  • Не запускайте сервер 9p с повышенными привилегиями, если контроль учетных записей отключен.

Сборка 19640

Общие сведения о сборке Windows 19640 см. в блоге о Windows.

  • [WSL2] Улучшения стабильности для virtio-9p (drvfs).

Сборка 19555

Общие сведения о сборке Windows 19555 см. в блоге Windows.

  • [WSL2] Применение memory cgroup для ограничения объема памяти, используемой операциями установки и преобразования [GH 4669].
  • Предоставление команды wsl.exe для улучшения обнаружения компонентов, если дополнительный компонент подсистемы Windows для Linux не включен.
  • Изменение wsl.exe для вывода текста справки, если дополнительный компонент WSL не установлен.
  • Устранение состояния гонки при создании экземпляров.
  • Создание файла wslclient.dll, который содержит все функции командной строки.
  • Предотвращение аварийного завершения при остановке службы LxssManagerUser.
  • Исправление завершения работы wslapi.dll при первой ошибке, если значение параметра distroName равно NULL.

Сборка 19041

Общие сведения о сборке Windows 19041 см. в блоге Windows.

  • [WSL2] Очищение маски сигналов перед запуском процессов.
  • [WSL2] Обновление ядра Linux до версии 4.19.84.
  • Обработка созданной символической ссылки /etc/resolv.conf, если символическая ссылка не является относительной.

Сборка 19028

Общие сведения о сборке Windows 19028 доступны в блоге о Windows.

  • [WSL2] Ядро Linux обновлено до версии 4.19.81
  • [WSL2] Разрешение по умолчанию /dev/net/tun изменено на 0666 [GH 4629]
  • [WSL2] Объем памяти, назначенный виртуальной машине Linux по умолчанию, оптимизирован до 80 % памяти узла
  • [WSL2] Внесены исправления в работу сервера взаимодействия для обработки запросов со временем ожидания, чтобы сервер не перестал отвечать на запросы из-за неправильных вызовов

Сборка 19018

Общие сведения о сборке Windows 19018 доступны в блоге о Windows.

  • [WSL2] Для исправления неполадок с приложениями .NET по умолчанию используется параметр cache=mmap для подключения ресурсов 9p.
  • [WSL2] Исправления для ретранслятора localhost [GH 4340].
  • [WSL2] Добавлен подключаемый общедоступный ресурс tmpfs для передачи состояний между дистрибутивами.
  • Исправлено восстановление постоянного сетевого диска для \\wsl$.

Сборка 19013

Общие сведения о сборке Windows 19013 доступны в блоге о Windows.

  • [WSL2] Повышение производительности памяти служебной виртуальной машины WSL. Память, которая больше не используется, будет освобождена для узла.
  • [WSL2] Ядро обновлено до версии 4.19.79. (Добавлены модули CONFIG_HIGH_RES_TIMERS, CONFIG_TASK_XACCT, CONFIG_TASK_IO_ACCOUNTING, CONFIG_SCHED_HRTICK и CONFIG_BRIDGE_VLAN_FILTERING.)
  • [WSL2] Исправлен ретранслятор ввода для обработки ситуаций, когда STDIN является незакрытым обработчиком канала [GH 4424].
  • При проверке наличия \\wsl$ не учитывается регистр.
[wsl2]
pageReporting =     # Enable or disable the free memory page reporting feature (default true).
idleThreshold =  # Set the idle threshold for memory compaction, 0 disables the feature (default 1).

Сборка 19002

Общие сведения о сборке Windows 19002 доступны в блоге о Windows.

  • [WSL] Устранена проблема с обработкой некоторых знаков Юникода: https://github.com/microsoft/terminal/issues/2770
  • [WSL] Исправлена редко возникавшая проблема, приводившая к отмене регистрации дистрибутива, если он запускался сразу после обновления сборки новой сборкой.
  • [WSL] Устранена незначительная проблема с wsl.exe --shutdown, из-за которой таймеры бездействия экземпляра не отменялись.

Сборка 18995

Общие сведения о сборке Windows 18995 доступны в блоге о Windows.

  • [WSL2] Устранена проблема, из-за которой подключения DrvFs прекращали работать после прерывания операции (например, нажатия клавиш CTRL+C) [GH 4377].
  • [WSL2] Исправлена обработка очень больших сообщений hvsocket [GH 4105].
  • [WSL2] Устранена проблема с взаимодействием, возникавшая, если в качестве stdin использовался файл [GH 4475].
  • [WSL2] Устранено аварийное завершение службы при обнаружении непредвиденного состояния сети [GH 4474].
  • [WSL2] Запрос имени дистрибутива с сервера взаимодействия, если текущий процесс не имеет переменной среды.
  • [WSL2] Устранена проблема с взаимодействием, возникавшая, если в качестве stdin использовался файл.
  • [WSL2] Ядро Linux обновлено до версии 4.19.72.
  • [WSL2] Добавлена возможность указать дополнительные параметры командной строки ядра с помощью wslconfig.
[wsl2]
kernelCommandLine =  # Additional kernel command line arguments

Сборка 18990

Общие сведения о сборке Windows 18990 доступны в блоге о Windows.

  • Ускорен вывод списка каталогов в \\wsl$.
  • [WSL2] Внедрена дополнительная энтропия загрузки [GH 4416].
  • [WSL2] Исправлено взаимодействие с Windows при использовании su или sudo [GH 4465].

Сборка 18980

Общие сведения о сборке Windows 18980 доступны в блоге о Windows.

  • Исправлено чтение символических ссылок, которые запрещают FILE_READ_DATA. Сюда входят все символические ссылки Windows, создаваемые для обеспечения обратной совместимости, такие как "C:\Document and Settings", а также множество символических ссылок в каталоге профиля пользователя.
  • Непредвиденное состояние файловой системы перестало быть неустранимым [GH 4334, 4305].
  • [WSL2] Добавлена поддержка arm64, если ЦП или встроенное ПО поддерживает виртуализацию.
  • [WSL2] Непривилегированным пользователям разрешено просматривать журнал ядра.
  • [WSL2] Исправлена ретрансляция вывода при закрытии сокетов stdout и stderr [GH 4375].
  • [WSL2] Поддержка сквозного режима батареи и адаптера питания.
  • [WSL2] Ядро Linux обновлено до версии 4.19.67.
  • Добавлена возможность задать имя пользователя по умолчанию в /etc/wsl.conf:
[user]
default=

Сборка 18975

Общие сведения о сборке Windows 18975 доступны в блоге о Windows.

  • [WSL2] Исправлен ряд проблем с надежностью localhost [GH 4340].

Сборка 18970

Общие сведения о сборке Windows 18970 доступны в блоге о Windows.

  • [WSL2] Синхронизация времени с временем узла при выходе системы из спящего режима [GH 4245].
  • [WSL2] Создание символических ссылок NT на тома Windows, если это возможно.
  • [WSL2] Создание дистрибутивов в пространствах имен UTS, IPC, PID и Mount.
  • [WSL2] Исправлена ретрансляция портов localhost при привязке сервера к localhost напрямую [GH 4353].
  • [WSL2] Исправлено взаимодействие при перенаправлении вывода [GH 4337].
  • [WSL2] Поддержка преобразования абсолютных символических ссылок NT.
  • [WSL2] Ядро обновлено до версии 4.19.59.
  • [WSL2] Правильное задание маски подсети для eth0.
  • [WSL2] Изменение логики для выхода из циклов консольного рабочего процесса при получении сигнала о событии выхода.
  • [WSL2] Если дистрибутив не работает, то его VHD-файл можно извлечь.
  • [WSL2] Исправлена библиотека анализа конфигурации, чтобы правильно обрабатывать пустые значения.
  • [WSL2] Поддержка рабочего стола Docker путем создания подключений между дистрибутивами. Дистрибутив можно настроить для такого режима, добавив следующую строку в файл /etc/wsl.conf:
[automount]
crossDistro = true

Сборка 18945

Общие сведения о сборке Windows 18945 доступны в блоге о Windows.

WSL

  • [WSL2] Разрешен доступ к ожидающим передачи данных TCP-сокетам в WSL2 с узла по адресу localhost:.
  • [WSL2] Устранены сбои при установке и преобразовании. Добавлена дополнительная диагностика для отслеживания будущих проблем [GH 4105].
  • [WSL2] Улучшена диагностируемость проблем с сетью WSL2.
  • [WSL2] Ядро обновлено до версии 4.19.55.
  • [WSL2] Ядро обновлено с помощью параметров конфигурации, необходимых для Docker [GH 4165].
  • [WSL2] Увеличено число ЦП, назначаемых упрощенной служебной виртуальной машине, чтобы оно совпадало с числом ЦП узла (ранее это значение было ограничено 8 ЦП с помощью параметра CONFIG_NR_CPUS в конфигурации ядра) [GH 4137].
  • [WSL2] Создание файла подкачки для упрощенной виртуальной машины WSL2.
  • [WSL2] Разрешено отображение подключений пользователей в \\wsl$\ (например, sshfs) [GH 4172].
  • [WSL2] Повышена производительность файловой системы 9p.
  • [WSL2] Предотвращение неограниченного роста списка ACL виртуального жесткого диска [GH 4126].
  • [WSL2] Обновлена конфигурации ядра для поддержки squashfs и xt_conntrack [GH 4107, 4123].
  • [WSL2] Исправлен параметр interop.enabled в /etc/wsl.conf [GH 4140].
  • [WSL2] Если файловая система не поддерживает EA, возвращается ENOTSUP.
  • [WSL2] CopyFile больше не прекращает отвечать на запросы при работе с \\wsl$.
  • Параметр umask по умолчанию переключен на значение 0022, и добавлен параметр filesystem.umask в /etc/wsl.conf.
  • Исправлен wslpath, чтобы правильно разрешать символические ссылки, что повторно происходило в 19h1 [GH 4078].
  • Введен файл %UserProfile%\.wslconfig для настройки параметров WSL2.
[wsl2]
kernel=              # An absolute Windows path to a custom Linux kernel.
memory=              # How much memory to assign to the WSL2 VM.
processors=        # How many processors to assign to the WSL2 VM.
swap=                # How much swap space to add to the WSL2 VM. 0 for no swap file.
swapFile=            # An absolute Windows path to the swap vhd.
localhostForwarding= # Boolean specifying if ports bound to wildcard or localhost in the WSL2 VM should be connectable from the host via localhost:port (default true).

#  entries must be absolute Windows paths with escaped backslashes, for example C:\\Users\\Ben\\kernel
#  entries must be size followed by unit, for example 8GB or 512MB

Сборка 18917

Общие сведения о сборке Windows 18917 доступны в блоге о Windows.

WSL

  • Уже доступна версия WSL 2! Дополнительные сведения см. в блоге.
  • Устранена регрессия, из-за которой запуск процессов Windows через символические ссылки выполнялся некорректно [GH 3999].
  • Добавлены следующие параметры wsl.exe: wsl.exe --list --verbose, wsl.exe --list --quiet и wsl.exe --import --version.
  • Добавлен параметр wsl.exe --shutdown.
  • Plan 9: для успешной работы разрешено открытие каталога для записи.

Сборка 18890

Общие сведения о сборке Windows 18890 доступны в блоге о Windows.

WSL

  • Утечка сокетов не блокирует работу [GH 2913].
  • Ввод EOF в терминал может заблокировать последующие операции чтения [GH 3421].
  • В заголовок resolv.conf добавлена ссылка на wsl.conf [рассмотрено в GH 3928].
  • Взаимоблокировка в коде epoll delete [GH 3922].
  • Обработка пробелов в аргументах параметров --import и --export [GH 3932].
  • Расширение файлов, обработанных с помощью mmap, не работает должным образом [GH 3939].
  • Устранена проблема с доступом ARM64 к \\wsl$.
  • Улучшен значок по умолчанию для wsl.exe.

Сборка 18342

Общие сведения о сборке Windows 18342 доступны в блоге о Windows.

WSL

  • Мы добавили возможность доступа пользователей к файлам Linux в дистрибутиве WSL из Windows. Доступ к этим файлам можно получить с помощью командной строки. Кроме того, такие приложения для Windows, как проводник, VSCode и т. д., могут взаимодействовать с этими файлами. Чтобы получить доступ к файлам, перейдите в папку \\wsl$\, или просмотрите список выполняющихся дистрибутивов, перейдя в \\wsl$.
  • Добавлены дополнительные теги сведений о ЦП и исправлены значения Cpus_allowed[_list] [GH 2234].
  • Поддержка выполнения из ведомого потока [GH 3800].
  • Ошибки обновления конфигурации не считаются критическими [GH 3785].
  • Подсистема binfmt обновлена для правильной обработки смещений [GH 3768].
  • Включено сопоставление сетевых дисков для Plan 9 [GH 3854].
  • Поддержка преобразования путей Windows в Linux и наоборот для подключения привязок.
  • Создание разделов только для чтения для сопоставлений файлов, открытых только для чтения.

Сборка 18334

Общие сведения о сборке Windows 18334 доступны в блоге о Windows.

WSL

  • Перепроектирован способ сопоставления часового пояса Windows с часовым поясом Linux [GH 3747].
  • Устранены утечки памяти и добавлены новые функции преобразования строк [GH 3746].
  • Выполнение SIGCONT для группы потоков без потоков является холостой командой [GH 3741].
  • Правильное отображение дескрипторов файлов socket и epoll в /proc/self/fd.

Сборка 18305

Общие сведения о сборке Windows 18305 доступны в блоге о Windows.

WSL

  • Когда основной поток завершает работу, pthreads утрачивает доступ к файлам [GH 3589].
  • Команда TIOCSCTTY должна игнорировать параметр force, если он не является обязательным [GH 3652].
  • Усовершенствована командная строка wsl.exe и добавлены функции импорта и экспорта.
Usage: wsl.exe [Argument] [Options...] [CommandLine]

Arguments to run Linux binaries:

    If no command line is provided, wsl.exe launches the default shell.

    --exec, -e 
        Execute the specified command without using the default Linux shell.

    --
        Pass the remaining command line as is.

Options:
    --distribution, -d 
        Run the specified distribution.

    --user, -u 
        Run as the specified user.

Arguments to manage Windows Subsystem for Linux:

    --export 
        Exports the distribution to a tar file.
        The filename can be - for standard output.

    --import 
        Imports the specified tar file as a new distribution.
        The filename can be - for standard input.

    --list, -l [Options]
        Lists distributions.

        Options:
            --all
                List all distributions, including distributions that are currently
                being installed or uninstalled.

            --running
                List only distributions that are currently running.

    -setdefault, -s 
        Sets the distribution as the default.

    --terminate, -t 
        Terminates the distribution.

    --unregister 
        Unregisters the distribution.

    --upgrade 
        Upgrades the distribution to the WslFs file system format.

    --help
        Display usage information.

Сборка 18277

Общие сведения о сборке Windows 18277 доступны в блоге о Windows.

WSL

  • Устранена ошибка "Интерфейс не поддерживается" в сборке 18272 [GH 3645].
  • Игнорируется флаг MNT_FORCE для umount syscall [GH 3605].
  • Переключено взаимодействие WSL для использования официального API CreatePseudoConsole.
  • При перезапуске FUTEX_WAIT значение времени ожидания не сохраняется.

Сборка 18272

Общие сведения о сборке Windows 18272 доступны в блоге о Windows.

WSL

  • Предупреждение. В этой сборке есть проблема, делающая компонент WSL неработоспособным. При попытке запустить дистрибутив появится сообщение об ошибке "Интерфейс не поддерживается". Эта проблема устранена, и соответствующее исправление будет добавлено в сборку для предварительной оценки с ранним доступом, выпускаемую на следующей неделе. Если вы установили эту сборку, можно вернуться к предыдущей сборке Windows, выбрав "Параметры" > "Обновление и безопасность" > "Восстановление" и щелкнув "Вернуться к предыдущей версии Windows 10".

Сборка 18267

Общие сведения о сборке Windows 18267 доступны в блоге о Windows.

WSL

  • Устранена проблема, из-за которой зомби-процесс мог быть не удален и существовал неограниченное время.
  • WslRegisterDistribution переставал отвечать на запросы, если сообщение об ошибке превышало максимальную длину [GH 3592].
  • Разрешено использование fsync с файлами только для чтения в DrvFs [GH 3556].
  • Перед созданием символических ссылок в каталогах /bin и /sbin убедитесь, что эти каталоги существуют [GH 3584].
  • Добавлен механизм времени ожидания завершения экземпляра для экземпляров WSL. Сейчас время ожидания равно 15 секундам, то есть работа экземпляра завершается через 15 секунд после завершения последнего процесса WSL. Чтобы немедленно завершить дистрибутив, используйте следующую команду.
wslconfig.exe /terminate 

Сборка 17763 (1809)

Общие сведения о сборке Windows 17763 доступны в блоге о Windows.

WSL

  • Проверка разрешения SetPriority для syscall была слишком строгая для изменения приоритета того же потока [GH 1838].
  • Убедитесь, что для времени загрузки используется несмещенное время прерывания, чтобы избежать возврата отрицательных значений clock_gettime (CLOCK_BOOTTIME) [GH 3434].
  • Обработка символических ссылок в интерпретаторе binfmt для WSL [GH 3424].
  • Улучшена обработка очистки дескриптора файла ведущего потока группы потоков.
  • Чтобы избежать переполнения, переключите WSL на использование KeQueryInterruptTimePrecise вместо KeQueryPerformanceCounter [GH 3252].
  • Подключение Ptrace могло вызывать неправильное возвращаемое значение из системных вызовов [GH 1731].
  • Устранено несколько проблем, связанных с AF_UNIX [GH 3371].
  • Устранена проблема, которая могла привести к сбою взаимодействия WSL, если длина текущего рабочего каталога была меньше 5 знаков [GH 3379].
  • Предотвращена задержка в 1 секунду при сбое замыкания на себя подключений к несуществующим портам (GH 3286).
  • Добавлен файл заглушки /proc/sys/fs/file-max [GH 2893].
  • Уточнены сведения об области действия IPv6.
  • Поддержка PR_SET_PTRACER [GH 3053].
  • Канальная файловая система необоснованно очищала событие epoll, активируемое переходом [GH 3276].
  • Исполняемый файл Win32, запущенный с помощью символической ссылки NTFS, не учитывал имя символической ссылки [GH 2909].
  • Улучшена поддержка зомби [GH 1353].
  • Добавлены записи wsl.conf для управления поведением взаимодействия с Windows [GH 1493].
      [interop]
    
      enabled=false # enable launch of Windows binaries; default is true
    
      appendWindowsPath=false # append Windows path to $PATH variable; default is true
    
  • Устранена проблема, из-за которой команда getsockname не всегда возвращала тип семейства сокетов UNIX [GH 1774].
  • Добавлена поддержка TIOCSTI [GH 1863].
  • Неблокирующие сокеты в процессе подключения должны возвращать EAGAIN для попыток записи [GH 2846].
  • Поддержка взаимодействия с подключенными виртуальными жесткими дисками [GH 3246, 3291].
  • Устранена проблема с проверкой разрешений для корневой папки [GH 3304].
  • Ограниченная поддержка вызовов ioctl с аргументами KDGKBTYPE, KDGKBMODE и KDSKBMODE для клавиатуры tty.
  • Приложения пользовательского интерфейса Windows должны выполняться, даже если они запущены в фоновом режиме.
  • Добавлен параметр wsl --u или --user [GH 1203].
  • Устранены проблемы с запуском WSL, когда включен быстрый запуск [GH 2576].
  • Сокеты UNIX должны хранить учетные данные отключенных одноранговых узлов [GH 3183].
  • Работа неблокирующих сокетов UNIX неограниченное время завершалась сбоем и возвращалось значение EAGAIN [GH 3191].
  • Новый тип подключения drvfs по умолчанию case=off [GH 2937, 3212, 3328].
    • Дополнительные сведения см. в этом блоге.
  • Добавлен параметр wslconfig /terminate для остановки выполнения дистрибутивов.
  • Устранена проблема с пунктами в контекстном меню оболочки WSL, из-за которой неправильно обрабатывались пути с пробелами.
  • Учет регистра в именах каталогов реализован в качестве расширенного атрибута.
  • ARM64: имитация операций обслуживания кэша. Устранена проблема с dotnet.
  • DrvFs: в частном диапазоне допускаются только неэкранированные знаки, которые соответствуют экранированному знаку.
  • Устранена ошибка завышения или занижения на единицу при проверке длины интерпретатором анализатора ELF [GH 3154].
  • Абсолютные таймеры WSL со временем в прошлом не срабатывали [GH 3091].
  • Убедитесь, что вновь созданные точки повторного анализа указаны как таковые в родительском каталоге.
  • Атомарное создание каталогов с учетом регистра в DrvFs.
  • Устранена дополнительная проблема, из-за которой многопоточные операции могли возвращать ENOENT, даже если файл существовал. [GH 2712]
  • Устранена ошибка запуска WSL при включенном режиме UMCI. [GH 3020]
  • Добавлено контекстное меню обозревателя для запуска WSL [GH 437, 603, 1836]. Чтобы открыть его, нажмите и удерживайте клавишу SHIFT и щелкните правой кнопкой мыши в окне проводника.
  • Устранено неблокирующее поведение сокетов UNIX [GH 2822, 3100].
  • Устранена проблема, из-за которой команда NETLINK переставала отвечать на запросы, как было сообщено в GH 2026.
  • Добавлена поддержка флагов распространения подключения [GH 2911].
  • Устранена проблема, из-за которой усечение не вызывало события inotify [GH 2978].
  • Добавлен параметр --exec для wsl.exe, позволяющий вызвать отдельный двоичный файл без оболочки.
  • Добавлен параметр --distribution для wsl.exe, позволяющий выбрать конкретный дистрибутив.
  • Ограниченная поддержка dmesg. Теперь приложения могут входить в dmesg. Драйвер WSL записывает ограниченные сведения в dmesg. В будущем эти возможности можно будет расширить, чтобы записывать другие сведения и данные диагностики из драйвера.
    • Примечание. Сейчас dmesg поддерживается через интерфейс устройства /dev/kmsg. Интерфейс syscall syslog пока не поддерживается. Поэтому некоторые параметры командной строки dmesg, такие как -S и -C, не работают.
  • Изменены GID и режим по умолчанию для последовательных устройств, чтобы обеспечить соответствие собственному режиму [GH 3042].
  • Теперь DrvFs поддерживает расширенные атрибуты.
    • Примечание. В DrvFs были некоторые ограничения для имен расширенных атрибутов. Некоторые знаки (например, "/", ":" и "*") не допускаются, а в именах расширенных атрибутов в DrvFs не учитывается регистр.

Сборка 18252 (Skip Ahead)

Общие сведения о сборке Windows 18252 доступны в блоге о Windows.

WSL

  • Двоичные файлы init и bsdtar перемещены из библиотеки DLL lxssmanager в отдельную папку tools.
  • Устранено состязание при закрытии дескриптора файла в случае использования CLONE_FILES.
  • Обработка необязательных полей в /proc/pid/mountinfo при преобразовании путей DrvFs.
  • Допускается успешное выполнение mknod DrvFs без поддержки метаданных для S_IFREG.
  • Файлы только для чтения, созданные в DrvFs, должны иметь атрибут readonly [GH 3411].
  • Добавлено вспомогательное приложение /sbin/mount.drvfs для управления подключением DrvFs.
  • Использование переименования POSIX в DrvFs.
  • Разрешено преобразование путей в томах без GUID тома.

Сборка 17738 (Fast)

Общие сведения о сборке Windows 17738 доступны в блоге о Windows.

WSL

  • Проверка разрешения SetPriority для syscall была слишком строгая для изменения приоритета того же потока [GH 1838].
  • Убедитесь, что для времени загрузки используется несмещенное время прерывания, чтобы избежать возврата отрицательных значений clock_gettime (CLOCK_BOOTTIME) [GH 3434].
  • Обработка символических ссылок в интерпретаторе binfmt для WSL [GH 3424].
  • Улучшена обработка очистки дескриптора файла ведущего потока группы потоков.

Сборка 17728 (Fast)

Общие сведения о сборке Windows 17728 доступны в блоге о Windows.

WSL

  • Чтобы избежать переполнения, переключите WSL на использование KeQueryInterruptTimePrecise вместо KeQueryPerformanceCounter [GH 3252].
  • Подключение Ptrace могло вызывать неправильное возвращаемое значение из системных вызовов [GH 1731].
  • Устранен ряд проблем, связанных с AF_UNIX [GH 3371].
  • Устранена проблема, которая могла привести к сбою взаимодействия WSL, если длина текущего рабочего каталога была меньше 5 знаков [GH 3379].

Сборка 18204 (Skip Ahead)

Общие сведения о сборке Windows 18204 доступны в блоге о Windows.

WSL

  • Канальная файловая система необоснованно очищала событие epoll, активируемое переходом [GH 3276].
  • Исполняемый файл Win32, запущенный с помощью символической ссылки NTFS, не учитывал имя символической ссылки [GH 2909].

Сборка 17723 (Fast)

Общие сведения о сборке Windows 17723 доступны в блоге о Windows.

WSL

  • Предотвращена задержка в 1 секунду при сбое замыкания на себя подключений к несуществующим портам (GH 3286).
  • Добавлен файл заглушки /proc/sys/fs/file-max [GH 2893].
  • Уточнены сведения об области действия IPv6.
  • Поддержка PR_SET_PTRACER [GH 3053].
  • Канальная файловая система необоснованно очищала событие epoll, активируемое переходом [GH 3276].
  • Исполняемый файл Win32, запущенный с помощью символической ссылки NTFS, не учитывал имя символической ссылки [GH 2909].

Сборка 17713

Общие сведения о сборке Windows 17713 доступны в блоге о Windows.

WSL

  • Улучшена поддержка зомби [GH 1353].
  • Добавлены записи wsl.conf для управления поведением взаимодействия с Windows [GH 1493].
      [interop]
    
      enabled=false # enable launch of Windows binaries; default is true
    
      appendWindowsPath=false # append Windows path to $PATH variable; default is true
    
  • Устранена проблема, из-за которой команда getsockname не всегда возвращала тип семейства сокетов UNIX [GH 1774].
  • Добавлена поддержка TIOCSTI [GH 1863].
  • Неблокирующие сокеты в процессе подключения должны возвращать EAGAIN для попыток записи [GH 2846].
  • Поддержка взаимодействия с подключенными виртуальными жесткими дисками [GH 3246, 3291].
  • Устранена проблема с проверкой разрешений для корневой папки [GH 3304].
  • Ограниченная поддержка вызовов ioctl с аргументами KDGKBTYPE, KDGKBMODE и KDSKBMODE для клавиатуры tty.
  • Приложения пользовательского интерфейса Windows должны выполняться, даже если они запущены в фоновом режиме.

Сборка 17704

Общие сведения о сборке Windows 17704 доступны в блоге о Windows.

WSL

  • Добавлен параметр wsl --u или --user [GH 1203].
  • Устранены проблемы с запуском WSL, когда включен быстрый запуск [GH 2576].
  • Сокеты UNIX должны хранить учетные данные отключенных одноранговых узлов [GH 3183].
  • Работа неблокирующих сокетов UNIX неограниченное время завершалась сбоем и возвращалось значение EAGAIN [GH 3191].
  • Новый тип подключения drvfs по умолчанию case=off [GH 2937, 3212, 3328].
    • Дополнительные сведения см. в этом блоге.
  • Добавлен параметр wslconfig /terminate для остановки выполнения дистрибутивов.

Сборка 17692

Общие сведения о сборке Windows 17692 доступны в блоге о Windows.

WSL

  • Устранена проблема с пунктами в контекстном меню оболочки WSL, из-за которой неправильно обрабатывались пути с пробелами.
  • Учет регистра в именах каталогов реализован в качестве расширенного атрибута.
  • ARM64: имитация операций обслуживания кэша. Устранена проблема с dotnet.
  • DrvFs: в частном диапазоне допускаются только неэкранированные знаки, которые соответствуют экранированному знаку.

Сборка 17686

Общие сведения о сборке Windows 17686 доступны в блоге о Windows.

WSL

  • Устранена ошибка завышения или занижения на единицу при проверке длины интерпретатором анализатора ELF [GH 3154].
  • Абсолютные таймеры WSL со временем в прошлом не срабатывали [GH 3091].
  • Убедитесь, что вновь созданные точки повторного анализа указаны как таковые в родительском каталоге.
  • Атомарное создание каталогов с учетом регистра в DrvFs.

Сборка 17677

Общие сведения о сборке Windows 17677 доступны в блоге о Windows.

WSL

  • Устранена дополнительная проблема, из-за которой многопоточные операции могли возвращать ENOENT, даже если файл существовал. [GH 2712]
  • Устранена ошибка запуска WSL при включенном режиме UMCI. [GH 3020]

Сборка 17666

Общие сведения о сборке Windows 17666 доступны в блоге о Windows.

WSL

ПРЕДУПРЕЖДЕНИЕ! Существует проблема, препятствующая запуску WSL на некоторых наборах микросхем AMD [GH 3134]. Исправление готово и находится в процессе добавления в ветвь сборок для программы предварительной оценки Windows.

  • Добавлено контекстное меню обозревателя для запуска WSL [GH 437, 603, 1836]. Чтобы открыть его, нажмите и удерживайте клавишу SHIFT и щелкните правой кнопкой мыши в окне проводника.
  • Устранено неблокирующее поведение сокетов UNIX [GH 2822, 3100].
  • Устранена проблема, из-за которой команда NETLINK переставала отвечать на запросы, как было сообщено в GH 2026.
  • Добавлена поддержка флагов распространения подключения [GH 2911].
  • Устранена проблема, из-за которой усечение не вызывало события inotify [GH 2978].
  • Добавлен параметр --exec для wsl.exe, позволяющий вызвать отдельный двоичный файл без оболочки.
  • Добавлен параметр --distribution для wsl.exe, позволяющий выбрать конкретный дистрибутив.

Сборка 17655 (Skip Ahead)

Общие сведения о сборке Windows 17655 доступны в блоге о Windows.

WSL

  • Ограниченная поддержка dmesg. Теперь приложения могут входить в dmesg. Драйвер WSL записывает ограниченные сведения в dmesg. В будущем эти возможности можно будет расширить, чтобы записывать другие сведения и данные диагностики из драйвера.
    • Примечание. Сейчас dmesg поддерживается через интерфейс устройства /dev/kmsg. Интерфейс sycall syslog еще не поддерживается. Поэтому некоторые параметры командной строки dmesg, такие как -S и -C, не работают.
  • Устранена проблема, из-за которой многопоточные операции могли возвращать ENOENT, даже если файл существовал. [GH 2712]

Сборка 17639 (Skip Ahead)

Общие сведения о сборке Windows 17639 доступны в блоге о Windows.

WSL

  • Изменены GID и режим по умолчанию для последовательных устройств, чтобы обеспечить соответствие собственному режиму [GH 3042].
  • Теперь DrvFs поддерживает расширенные атрибуты.
    • Примечание. В DrvFs были некоторые ограничения для имен расширенных атрибутов. В частности, некоторые знаки (например, "/", ":" и "*") не допускаются, а в именах расширенных атрибутов в DrvFs не учитывается регистр.

Сборка 17133 (Fast)

Общие сведения о сборке Windows 17133 доступны в блоге о Windows.

WSL

  • Устранено прекращение ответа на запросы в WSL. [GH 3039, 3034]

Сборка 17128 (Fast)

Общие сведения о сборке Windows 17128 доступны в блоге о Windows.

WSL

  • Нет

Сборка 17627 (Skip Ahead)

Общие сведения о сборке Windows 17627 доступны в блоге о Windows.

WSL

  • Добавлена поддержка фьютексных операций с поддержкой числа пи. [GH 1006]
    • Обратите внимание на то, что приоритеты в настоящее время не поддерживаются компонентом WSL, так что существуют ограничения, но стандартное использование должно быть доступно.
  • Поддержка брандмауэра Windows для процессов WSL. [GH 1852]
    • Например, чтобы разрешить процессу Python в WSL ожидать передачи данных через какой-либо порт, используйте командную строку Windows с повышенными привилегиями: netsh.exe advfirewall firewall add rule name=wsl_python dir=in action=allow program="C:\users\\appdata\local\packages\canonicalgrouplimited.ubuntuonwindows_79rhkp1fndgsc\localstate\rootfs\usr\bin\python2.7" enable=yes
    • Дополнительные сведения о добавлении правил брандмауэра доступны по этой ссылке.
  • При использовании wsl.exe учитывается оболочка по умолчанию пользователя. [GH 2372]
  • Все сетевые интерфейсы отображаются как Ethernet. [GH 2996]
  • Улучшена обработка поврежденного файла /etc/passwd. [GH 3001]

Консоль

  • Исправления отсутствуют.

Результаты LTP:

выполняется тестирование.

Сборка 17618 (Skip Ahead)

Общие сведения о сборке Windows 17618 доступны в блоге о Windows.

WSL

  • Введена функция псевдоконсоли для взаимодействия с NT [GH 988, 1366, 1433, 1542, 2370, 2406].
  • Устаревший механизм установки (lxrun.exe) является нерекомендуемым. Для установки дистрибутивов используется Microsoft Store.

Консоль

  • Исправления отсутствуют.

Результаты LTP:

выполняется тестирование.

Сборка 17110

Общие сведения о сборке Windows 17110 доступны в блоге о Windows.

WSL

  • Разрешено завершение /init из Windows [GH 2928].
  • Теперь DrvFs по умолчанию учитывает регистр в имени отдельно для каждого каталога (аналогично параметру подключения case=dir).
    • Для использования параметра case=force (прежнее поведение) требуется задать раздел реестра. Выполните следующую команду, чтобы включить режим case=force, если его необходимо использовать: reg add HKLM\SYSTEM\CurrentControlSet\Services\lxss /v DrvFsAllowForceCaseSensitivity /t REG_DWORD /d 1
    • Если у вас есть каталоги, созданные с помощью WSL в более ранней версии Windows, в которых должен учитываться регистр, используйте fsutil.exe, чтобы пометить их как каталоги с учетом регистра: fsutil.exe file setcasesensitiveinfo enable
  • Строки, возвращаемые из uname syscall, завершаются значением NULL.

Консоль

  • Исправления отсутствуют.

Результаты LTP:

выполняется тестирование.

Сборка 17107

Общие сведения о сборке Windows 17107 доступны в блоге о Windows.

WSL

  • Поддержка TCSETSF и TCSETSW на главных конечных точках PTY [GH 2552].
  • Запуск одновременных процессов взаимодействия мог привести к возвращению EINVAL [GH 2813].
  • Устранена проблема с PTRACE_ATTACH для отображения правильного состояния трассировки в /proc/pid/status.
  • Устранено состязание, когда кратковременные процессы, клонированные с флагами CLEARTID и SETTID, могли завершиться без очистки адреса TID.
  • Отображается сообщение, если при переходе со сборки, предшествующей сборке 17093, выполняется обновление каталогов файловой системы Linux. Дополнительные сведения об изменениях в файловой системе в сборке 17093 доступны в заметках о выпуске 17093.

Консоль

  • Исправления отсутствуют.

Результаты LTP:

выполняется тестирование.

Сборка 17101

Общие сведения о сборке Windows 17101 доступны в блоге о Windows.

WSL

  • Поддержка signalfd. [GH 129]
  • Поддержка имен файлов, содержащих недопустимые знаки NTFS, благодаря их кодированию в виде частных знаков Юникода. [GH 1514]
  • Функция автоматического подключения будет переключаться в режим только для чтения, если запись не поддерживается. [GH 2603]
  • Допускается вставка суррогатных пар Юникода (например, знаков эмодзи). [GH 2765]
  • Псевдофайлы в /proc и /sys должны возвращаться готовыми для чтения и записи после выполнения команд select, poll, epoll и т. д. [GH 2838].
  • Устранена проблема, из-за которой служба могла уйти в бесконечный цикл, если реестр был незаконно изменен или поврежден.
  • Сообщения NETLINK исправлены для работы с более новой версией iproute2 (начиная с версии 4.14).

Консоль

  • Исправления отсутствуют.

Результаты LTP:

выполняется тестирование.

Сборка 17093

Общие сведения о сборке Windows 17093 доступны в блоге о Windows.

Важно!

При запуске WSL в первый раз после обновления до этой сборки необходимо выполнить некоторые действия, чтобы обновить каталоги файловой системы Linux. Это может занять несколько минут, поэтому может показаться, что WSL медленно запускается. Это должно произойти только один раз для каждого дистрибутива, установленного из Store.

  • Улучшена поддержка учета регистра в DrvFs.
    • Теперь DrvFs поддерживает учет регистра отдельно для каждого каталога. Это новый флаг, который можно задать для каталогов, чтобы указать, что все операции в этих каталогах должны выполняться с учетом регистра, что позволит даже приложениям для Windows правильно открывать файлы, отличающиеся только регистром в именах.
    • В DrvFs есть новые параметры подключения, управляющие учетом регистра для каждого каталога:
      • case=force: для всех каталогов учитывается регистр (за исключением корневого диска). Новые каталоги, созданные с помощью WSL, помечаются как каталоги с учетом регистра. Это устаревшее поведение, за исключением пометки новых каталогов как каталогов с учетом регистра.
      • case=dir: регистр учитывается только для каталогов с флагом учета регистра; для других каталогов регистр не учитывается. Новые каталоги, созданные с помощью WSL, помечаются как каталоги с учетом регистра.
      • case=off: регистр учитывается только для каталогов с флагом учета регистра; для других каталогов регистр не учитывается. Новые каталоги, созданные с помощью WSL, помечаются как каталоги без учета регистра.
    • Примечание. Каталоги, созданные WSL в предыдущих выпусках, не имеют этого флага, поэтому для них регистр не будет учитываться, если задан параметр case=dir. Способ задания этого флага для существующих каталогов будет реализован в ближайшее время.
    • Пример подключения с этими параметрами (существующие диски необходимо сначала отключить, чтобы подключить их с другими параметрами): sudo mount -t drvfs C: /mnt/c -o case=dir
    • Пока что параметр "case=force" все еще используется по умолчанию. В будущем по умолчанию будет использоваться параметр case=dir.
  • Теперь вы можете использовать косую черту в путях Windows при подключении DrvFs, например: sudo mount -t drvfs //server/share /mnt/share
  • WSL теперь обрабатывает файл /etc/fstab во время запуска экземпляра [GH 2636].
    • Это делается до автоматического подключения дисков DrvFs. Все диски, которые уже были подключены fstab, не будут автоматически подключаться. Это позволит вам изменить точку подключения для конкретных дисков.
    • Это поведение можно отключить с помощью wsl.conf.
  • Файлы mount, mountinfo и mountstats в /proc правильно экранируют специальные знаки, такие как символы обратной косой черты и пробелы [GH 2799].
  • Теперь можно копировать и перемещать из Windows специальные файлы, созданные с помощью DrvFs, такие как символьные ссылки WSL, или файлы FIFO и сокеты, если метаданные включены.

Можно настроить больше параметров WSL с помощью wsl.conf.

Мы добавили метод для автоматической настройки определенных функций в WSL, которые будут применяться при каждом запуске подсистемы. Сюда входят параметры автоподключения и конфигурация сети. Дополнительные сведения об этом можно получить из нашей записи блога: https://aka.ms/wslconf

AF_UNIX позволяет устанавливать подключения через сокет между процессами Linux в собственных процессах WSL и Windows.

Теперь приложения WSL и приложения для Windows могут взаимодействовать друг с другом через сокеты UNIX. Представьте, что вы хотите запустить службу в Windows и сделать ее доступной для приложений для Windows и приложений WSL. Теперь это возможно благодаря сокетам UNIX. Узнайте больше в записи блога https://aka.ms/afunixinterop

WSL

  • Поддержка mmap() с MAP_NORESERVE [GH 121, 2784].
  • Поддержка CLONE_PTRACE и CLONE_UNTRACED [GH 121, 2781].
  • Обработка сигнала завершения без SIGCHLD в клоне [GH 121, 2781].
  • Добавлены заглушки /proc/sys/fs/inotify/max_user_instances и /proc/sys/fs/inotify/max_user_watches [GH 1705].
  • Устранена ошибка при загрузке двоичных файлов ELF, содержащих заголовки загрузки с ненулевыми смещениями [GH 1884].
  • Заполнение нулями конечных байтов страниц при загрузке образов.
  • Сокращены случаи, когда execve автоматически завершает процесс.

Консоль

  • Исправления отсутствуют.

Результаты LTP:

выполняется тестирование.

Сборка 17083

Общие сведения о сборке Windows 17083 доступны в блоге о Windows.

WSL

  • Исправлена критическая ошибка, связанная с epoll [GH 2798, 2801, 2857].
  • Исправлено прекращение реагирования на запросы при отключении ASLR [GH 1185, 2870].
  • Обеспечена атомарность операций mmap [GH 2732].

Консоль

  • Исправления отсутствуют.

Результаты LTP:

выполняется тестирование.

Сборка 17074

Общие сведения о сборке Windows 17074 доступны в блоге о Windows.

WSL

  • Исправлен формат хранения метаданных DrvFs [GH 2777]. Важно! Метаданные DrvFs, созданные до выпуска этой сборки, будут отображаться неправильно или вообще не будут отображаться. Чтобы исправить затронутые файлы, используйте chmod и chown для повторного применения метаданных.
  • Устранена проблема с несколькими сигналами и перезапускаемыми вызовами syscall.

Консоль

  • Исправления отсутствуют.

Результаты LTP:

выполняется тестирование.

Сборка 17063

Общие сведения о сборке Windows 17063 доступны в блоге о Windows.

WSL

  • DrvFs поддерживает дополнительные метаданные Linux. Это позволяет задать владельца и режим файлов с помощью chmod или chown, а также создать специальные файлы, такие как FIFO, сокеты UNIX и файлы устройств. Сейчас эта функция отключена по умолчанию, так как еще является экспериментальной. Примечание. Исправлена ошибка в формате метаданных, используемом DrvFs. Хотя метаданные используются в этой сборке в качестве эксперимента, будущие сборки не будут правильно считывать метаданные, созданные этой сборкой. Возможно, потребуется вручную обновить владельца измененных файлов, а устройства с пользовательским идентификатором устройства потребуется создать заново.

    Чтобы включить эту функцию, подключите DrvFs с параметром metadata (чтобы включить эту функцию для существующего подключения, его необходимо сначала отключить):

    mount -t drvfs C: /mnt/c -o metadata
    

    Разрешения Linux добавляются в файл в качестве дополнительных метаданных; они не влияют на разрешения Windows. Помните, что изменение файла с помощью редактора Windows может привести к удалению метаданных. В этом случае будут восстановлены разрешения этого файла по умолчанию.

  • Добавлены параметры подключения к DrvFs для управления файлами без метаданных.

    • uid: идентификатор пользователя, используемый для владельца всех файлов.
    • gid: идентификатор группы, используемый для владельца всех файлов.
    • umask: восьмеричная маска разрешений, исключаемых для всех файлов и каталогов.
    • fmask: восьмеричная маска разрешений, исключаемых для всех обычных файлов.
    • dmask: восьмеричная маска разрешений, исключаемых для всех каталогов.

    Например:

    mount -t drvfs C: /mnt/c -o uid=1000,gid=1000,umask=22,fmask=111
    

    Используйте вместе с параметром metadata, чтобы указать разрешения по умолчанию для файлов без метаданных.

  • Появилась новая переменная среды, WSLENV, позволяющая настроить поток переменных среды между WSL и Win32.

    Например:

    WSLENV=GOPATH/l:USERPROFILE/pu:DISPLAY
    

    WSLENV — разделенный двоеточиями список переменных среды, которые могут быть добавлены при запуске процессов WSL из Win32 или при запуске процессов Win32 из WSL. Каждая переменная может иметь суффикс с косой чертой, за которой следуют флаги для указания способа преобразования.

    • p: значение — это путь, который должен быть преобразован между WSL и Win32.
    • l: значение — это список путей. В WSL это список, разделенный двоеточиями. В Win32 это список, разделенный точками с запятой.
    • u: это значение должно добавляться только при вызове WSL из Win32.
    • w: это значение должно добавляться только при вызове Win32 из WSL.

    Вы можете задать WSLENV в bashrc или в пользовательской среде Windows для пользователя.

  • Подключения DrvFs правильно сохраняют метки времени из tar, cp -p (GH 1939).

  • Символические ссылки DrvFs сообщают правильный размер (GH 2641).

  • Операции чтения и записи могут обрабатывать очень большие объемы ввода-вывода (GH 2653).

  • Функция waitpid работает с идентификаторами групп процессов (GH 2534).

  • Значительно улучшена производительность mmap для больших резервных регионов. Повышена производительность ghc (GH 1671).

  • Personality поддерживает READ_IMPLIES_EXEC; реализованы исправления для maxima и clisp (GH 1185).

  • Mprotect поддерживает PROT_GROWSDOWN; реализованы исправления для clisp (GH 1128).

  • Устранены сбои страниц в режиме перегрузки; реализованы исправления для sbcl (GH 1128).

  • Функция clone поддерживает больше сочетаний флагов.

  • Поддержка select/epoll для файлов epoll (ранее это считалось холостой командой).

  • Уведомление ptrace о нереализованных вызовах syscall.

  • Игнорирование интерфейсов, которые не выполняются, при создании серверов имен resolv.conf [GH 2694].

  • Перечисление сетевых интерфейсов без физического адреса. [GH 2685]

  • Дополнительные исправления ошибок и улучшения.

Инструменты Linux, доступные для разработчиков в Windows

  • Цепочка инструментов командной строки Windows включает в себя bsdtar (tar) и curl. Ознакомьтесь с этим блогом, чтобы узнать больше о добавлении этих двух новых инструментов и о том, как они меняют возможности разработки в Windows.

  • AF_UNIX доступен в пакете SDK для программы предварительной оценки Windows (начиная со сборки 17061). Ознакомьтесь с этим блогом, чтобы узнать больше о AF_UNIX и способах его использования разработчиками в Windows.

Консоль

  • Исправления отсутствуют.

Результаты LTP:

выполняется тестирование.

Сборка 17046

Общие сведения о сборке Windows 17046 доступны в блоге о Windows.

Фиксированный

WSL

  • Разрешено выполнение процессов без активного терминала. [GH 709, 1007, 1511, 2252, 2391 и т. д.]
  • Улучшена поддержка CLONE_VFORK и CLONE_VM. [GH 1878, 2615]
  • Пропуск драйверов фильтра TDI для сетевых операций WSL. [GH 1554]
  • DrvFs создает символические ссылки NT при выполнении определенных условий. [GH 353, 1475, 2602]
    • Цель ссылки должна быть относительной, не должна пересекать точки подключения или символические ссылки и должна существовать.
    • Пользователь должен иметь разрешение SE_CREATE_SYMBOLIC_LINK_PRIVILEGE (обычно для этого требуется запустить wsl.exe с повышенными привилегиями), если режим разработчика не включен.
    • Во всех остальных случаях DrvFs по-прежнему создает символические ссылки WSL.
  • Разрешено одновременное выполнение экземпляров WSL с повышенными привилегиями и без повышенных привилегий.
  • Поддержка /proc/sys/kernel/yama/ptrace_scope.
  • Добавлена функция wslpath для преобразования путей WSL в пути Windows и наоборот. [GH 522, 1243, 1834, 2327 и т. д.]
      wslpath usage:
        -a    force result to absolute path format
        -u    translate from a Windows path to a WSL path (default)
        -w    translate from a WSL path to a Windows path
        -m    translate from a WSL path to a Windows path, with '/' instead of '\\'
    
        EX: wslpath 'c:\users'
    

    Консоль

  • Исправления отсутствуют.

Результаты LTP:

выполняется тестирование.

Сборка 17040

Общие сведения о сборке Windows 17040 доступны в блоге о Windows.

Фиксированный

WSL

  • Исправления с момента выпуска сборки 17035 отсутствуют.

Консоль

  • Исправления с момента выпуска сборки 17035 отсутствуют.

Результаты LTP:

выполняется тестирование.

Сборка 17035

Общие сведения о сборке Windows 17035 доступны в блоге о Windows.

Фиксированный

WSL

  • Иногда не удавалось получить доступ к файлам в DrvFs с ошибкой EINVAL. [GH 2448]

Консоль

  • Устранена небольшая потеря цветов при вставке или удалении строк в режиме VT.

Результаты LTP:

выполняется тестирование.

Сборка 17025

Общие сведения о сборке Windows 17025 доступны в блоге о Windows.

Фиксированный

WSL

  • Запуск начальных процессов в новой группе процессов переднего плана [GH 1653, 2510].
  • Исправления доставки SIGHUP [GH 2496].
  • Создание имени виртуального моста по умолчанию, если оно не указано [GH 2497].
  • Реализовано /proc/sys/kernel/Random/boot_id [GH 2518].
  • Дополнительные исправления взаимодействия с каналом stdout/stderr.
  • Заглушка системного вызова syncfs.

Консоль

  • Исправление входного преобразования VT для консолей сторонних разработчиков [GH 111].

Результаты LTP:

выполняется тестирование.

Сборка 17017

Общие сведения о сборке Windows 17017 доступны в блоге о Windows.

Фиксированный

WSL

  • Пропуск пустых заголовков программы ELF [GH 330].
  • LxssManager разрешено создавать экземпляры WSL для неинтерактивных пользователей (поддержка SSH и запланированных задач) [GH 777, 1602].
  • Поддержка сценариев WSL > Win32 > WSL ("порождение") [GH 1228].
  • Ограниченная поддержка завершения работы консольных приложений, вызванных посредством взаимодействия [GH 1614].
  • Поддержка параметров подключения для devpts [GH 1948].
  • Устранена блокировка Ptrace запуска дочерних процессов [GH 2333].
  • В EPOLLET отсутствовали некоторые события [GH 2462].
  • PTRACE_GETSIGINFO возвращает больше данных.
  • Функция getdents с lseek выдавала неправильные результаты.
  • Устранены некоторые сценарии, в которых взаимодействующее приложение Win32 переставало отвечать на запросы, ожидая входных данных в канале, который больше не содержал данные.
  • Поддержка O_ASYNC для файлов tty и pty.
  • Дополнительные улучшения и исправления.

Консоль

  • В этом выпуске нет изменений, связанных с консолью.

Результаты LTP:

выполняется тестирование.

Обновление Fall Creators Update

Сборка 16288

Общие сведения о сборке Windows 16288 доступны в блоге о Windows.

Фиксированный

WSL

  • Правильная инициализация и отображение UID, GID и режима для дескрипторов файлов сокетов [GH 2490].
  • Дополнительные улучшения и исправления.

Консоль

  • В этом выпуске нет изменений, связанных с консолью.

Результаты LTP:

Изменения с момента выпуска сборки 16273 отсутствуют.

Сборка 16278

Общие сведения о сборке Windows 162738 доступны в блоге о Windows.

Фиксированный

WSL

  • Явная отмена сопоставления сопоставленных представлений разделов с файлами при завершении состояния LX MM [GH 2415].
  • Дополнительные улучшения и исправления.

Консоль

  • В этом выпуске нет изменений, связанных с консолью.

Результаты LTP:

Изменения с момента выпуска сборки 16273 отсутствуют.

Сборка 16275

Общие сведения о сборке Windows 162735 доступны в блоге о Windows.

Фиксированный

WSL

  • В этом выпуске нет изменений, связанных с WSL.

Консоль

  • В этом выпуске нет изменений, связанных с консолью.

Результаты LTP:

Изменения с момента выпуска сборки 16273 отсутствуют.

Сборка 16273

Общие сведения о сборке Windows 16273 доступны в блоге о Windows.

Фиксированный

WSL

  • Исправлена проблема, из-за которой DrvFs иногда сообщал о неправильном типе файла для каталогов [GH 2392].
  • Разрешено создание сокетов NETLINK_KOBJECT_UEVENT для разблокирования программ, использующих uevent [GH 1121, 2293, 2242, 2295, 2235, 648, 637].
  • Добавлена поддержка неблокирующего подключения [GH 903, 1391, 1584, 1585, 1829, 2290, 2314].
  • Реализован флаг системного вызова клонирования CLONE_FS [GH 2242].
  • Устранены проблемы, связанные с неправильной обработкой знаков табуляции или кавычек при взаимодействии с NT [GH 1625, 2164].
  • Устранена ошибка отказа в доступе при попытке повторного запуска экземпляров WSL [GH 651, 2095].
  • Реализованы фьютексные операции FUTEX_REQUEUE и FUTEX_CMP_REQUEUE [GH 2242].
  • Исправлены разрешения для различных файлов SysFs [GH 2214].
  • Устранена проблема, из-за которой стек Haskell переставал отвечать на запросы во время установки [GH 2290].
  • Реализованы флаги binfmt_misc "C", "O" и "P" [GH 2103].
  • Добавлены /proc/sys/kernel, /shmmax, /shmmni и /threads-max [GH 1753].
  • Добавлена частичная поддержка системного вызова ioprio_set [GH 498].
  • Реализована заглушка SO_REUSEPORT и добавлена поддержка SO_PASSCRED для сокетов NETLINK [GH 69].
  • Возвращение разных кодов ошибок из RegisterDistribuiton, если дистрибутив в данный момент устанавливается или удаляется.
  • Обеспечена отмена регистрации частично установленных дистрибутивов WSL с помощью wslconfig.exe.
  • Устранена ошибка, из-за которой сокет Python переставал отвечать на запросы при выполнении udp::msg_peek.
  • Дополнительные улучшения и исправления.

Консоль

  • В этом выпуске нет изменений, связанных с консолью.

Результаты LTP:

Всего тестов: 1904.
Всего пропущенных тестов: 209.
Всего сбоев: 229.
Журналы выполнения тестов LTP

Сборка 16257

Общие сведения о сборке Windows 16257 доступны в блоге о Windows.

Фиксированный

WSL

  • Реализован системный вызов prlimit64.
  • Добавлена поддержка ulimit -n (setrlimit RLIMIT_NOFILE) [GH 1688].
  • Заглушка MSG_MORE для TCP-сокетов [GH 2351].
  • Исправлено недопустимое поведение вспомогательного вектора AT_EXECFN [GH 2133].
  • Исправлено поведение копирования и вставки для консоли и tty и добавлена улучшенная обработка полного буфера [GH 2204, 2131].
  • Установка AT_SECURE в дополнительном векторе для программ set-user-ID и set-group-ID [GH 2031].
  • Главная конечная точка псевдотерминала не обрабатывала TIOCPGRP [GH 1063].
  • Исправлена проблема lseek с перемоткой каталогов в LxFs [GH 2310].
  • Исправлена блокировка /dev/ptmx после интенсивного использования [GH 1882].
  • Дополнительные улучшения и исправления.

Консоль

  • Исправлено отображение горизонтальных линий и знаков подчеркивания везде [GH 2168].
  • Исправлено изменение порядка процессов, усложнявшее закрытие NPM [GH 2170].
  • Добавлена новая цветовая схема: https://blogs.msdn.microsoft.com/commandline/2017/08/02/updating-the-windows-console-colors/.

Результаты LTP:

Изменения с момента выпуска сборки 16251 отсутствуют.

Поддержка системных вызовов

Ниже приведен список новых или улучшенных системных вызовов, которые реализованы в WSL. Системные вызовы в этом списке поддерживается по крайней мере в одном сценарии, но в настоящее время могут не поддерживаться все параметры.

prlimit64

Известные проблемы

Проблема GitHub 2392: WSL не распознает папки Windows…

В сборке 16257 в WSL возникли проблемы при перечислении файлов и папок Windows с помощью /mnt/c/.... Эта проблема устранена, и исправление будет выпущено в сборке для программы предварительной оценки в течение недели после 14 августа 2017 года.


Сборка 16251

Общие сведения о сборке Windows 16251 доступны в блоге о Windows.

Фиксированный

WSL

  • Удален тег бета-версии из дополнительного компонента WSL. Дополнительные сведения см. в этой записи блога.
  • Правильная инициализация сохраненных заданных UID и GID для двоичных файлов set-user-ID и set-group-ID при выполнении [GH 962, 1415, 2072].
  • Добавлена поддержка PTRACE_O_TRACEEXIT в ptrace [GH 555].
  • В ptrace добавлена поддержка PTRACE_GETFPREGS и PTRACE_GETREGSET с NT_FPREGSET [GH 555].
  • Исправлена проблема, из-за которой выполнение ptrace останавливалось на пропущенных сигналах.
  • Дополнительные улучшения и исправления.

Консоль

  • В этом выпуске нет изменений, связанных с консолью.

Результаты LTP:

Число пройденных тестов: 768 Число непройденных тестов: 244. Число пропущенных тестов: 96 Журналы выполнения тестов LTP

Сборка 16241

Общие сведения о сборке Windows 16241 доступны в блоге о Windows.

Фиксированный

WSL

  • В этом выпуске нет изменений, связанных с WSL.

Консоль

  • Исправлено вывода неправильного знака для пересечения линий DEC, о котором первоначально было сообщено здесь.
  • Исправлено отсутствие вывода текста в кодовой странице 65001 (UTF8).
  • Изменения, внесенные в значения RGB одного цвета, не переносятся в другие части палитры при изменении выбора. Это заметно облегчит использование страницы свойств консоли.
  • Нажатие клавиш Ctrl+S не работало правильно.
  • Un-Bold и -Dim полностью отсутствуют в escape-кодах ANSI [GH 2174].
  • Консоль неправильно поддерживала цветовые темы Vim [GH 1706].
  • Не удавалось вставить определенные знаки [GH 2149].
  • Изменение размера расплавления приводило к необычному изменению размера окна Bash, когда что-то было введено в строке редактирования или командной строке [GH ConEmu 1123].
  • Нажатие клавиш CTRL+L не очищало экран [GH 1978].
  • Устранена ошибка отрисовки консоли при отображении VT в HDPI [GH 1907].
  • Японские знаки выглядели необычно со знаком Юникода U+30FB [GH 2146].
  • Дополнительные улучшения и исправления.

Сборка 16237

Общие сведения о сборке Windows 16237 доступны в блоге о Windows.

Фиксированный

  • Использование атрибутов по умолчанию для файлов без EA в lxfs (root, root, 0000).
  • Добавлена поддержка дистрибутивов, использующих расширенные атрибуты.
  • Исправлено заполнение записей, возвращаемых getdents и getdents64.
  • Исправлена проверка разрешений для системного вызова shmctl SHM_STAT [GH 2068].
  • Исправлено неправильное начальное состояние epoll для tty [GH 2231].
  • Устранена проблема в DrvFs, из-за которой команда readdir не возвращала все записи [GH 2077].
  • Исправлена операция LxFs readdir с несвязанными файлами [GH 2077].
  • Допускается повторное открытие несвязанных файлов DrvFs с помощью procfs.
  • Добавлено переопределение глобального раздела реестра для отключения функций WSL (взаимодействие и монтирование дисков).
  • Исправлено неправильное число блокировок в "stat" для DrvFs (и LxFs) [GH 1894].
  • Дополнительные улучшения и исправления.

Сборка 16232

Общие сведения о сборке Windows 16232 доступны в блоге о Windows.

Фиксированный

  • В этом выпуске нет изменений, связанных с WSL.

Сборка 16226

Общие сведения о сборке Windows 16226 доступны в блоге о Windows.

Фиксированный

  • Поддержка системных вызовов, связанных с xattr (getxattr, setxattr, listxattr, removexattr).
  • Поддержка security.capablity xattr.
  • Улучшена совместимость с некоторыми файловыми системами и фильтрами, включая серверы SMB сторонних производителей. [GH 1952]
  • Улучшена поддержка заполнителей OneDrive, заполнителей GVFS и сжатых файлов Compact OS.
  • Дополнительные улучшения и исправления.

Сборка 16215

Общие сведения о сборке Windows 16215 доступны в блоге о Windows.

Фиксированный

  • Для WSL больше не требуется режим разработчика.
  • Поддержка соединений каталогов в DrvFs.
  • Обработка удаления пакетов appx дистрибутивов WSL.
  • Обновление procfs для отображения частных и общих сопоставлений.
  • В wslconfig.exe добавлена возможность очистки частично установленных или частично удаленных дистрибутивов.
  • Добавлена поддержка IP_MTU_DISCOVER для TCP-сокетов. [GH 1639, 2115, 2205]
  • Вывод семейства протоколов для маршрутов к AF_INADDR.
  • Улучшения для последовательных устройств [GH 1929].

Сборка 16199

Общие сведения о сборке Windows 16199 доступны в блоге о Windows.

Фиксированный

  • В этих выпусках нет изменений, связанных с WSL.

Сборка 16193

Общие сведения о сборке Windows 16193 доступны в блоге о Windows.

Фиксированный

  • Исправлено состояние состязания между отправкой SIGCONT и завершением группы потоков [GH 1973].
  • Устройства tty и pty изменены для передачи FILE_DEVICE_NAMED_PIPE вместо FILE_DEVICE_CONSOLE [GH 1840].
  • Исправление SSH для IP_OPTIONS.
  • Подключение DrvFs перемещено в управляющую программу инициализации [GH 1862, 1968, 1767, 1933].
  • Добавлена поддержка в DrvFs приведенных ниже символических ссылок NT.

Сборка 16184

Общие сведения о сборке Windows 16184 доступны в блоге о Windows.

Фиксированный

  • Удалена задача обслуживания пакета apt (lxrun.exe /update).
  • Исправлено отсутствие выходных данных из процессов Windows в Node.js [GH 1840].
  • Смягчены требования к соответствию в lxcore [GH 1794].
  • Исправлена обработка флага AT_EMPTY_PATH в ряде системных вызовов.
  • Исправлена проблема, из-за которой удаление файлов DrvFs с открытыми дескрипторами приводило к неопределенному поведению файла [GH 544, 966, 1357, 1535, 1615].
  • Теперь /etc/hosts будет наследовать записи из файла hosts Windows (%windir%\System32\Drivers\Etc\hosts) [GH 1495].

Сборка 16179

Общие сведения о сборке Windows 16179 доступны в блоге о Windows.

Фиксированный

  • На этой неделе изменения в WSL отсутствуют.

Сборка 16176

Общие сведения о сборке Windows 16176 доступны в блоге о Windows.

Фиксированный

  • Включена поддержка последовательных устройств.
  • Добавлен параметр IP-сокета IP_OPTIONS [GH 1116].
  • Реализована функция pwritev (при передаче файла в nginx/PHP-FPM) [GH 1506].
  • Добавлены параметры IP-сокета IP_MULTICAST_IF и IPV6_MULTICAST_IF [GH 990].
  • Поддержка параметров сокета IP_MULTICAST_LOOP и IPV6_MULTICAST_LOOP [GH 1678].
  • Добавлен параметр сокета IP(V6)_MTU для приложений node, traceroute, dig, nslookup, host.
  • Добавлен параметр IP-сокета IPV6_UNICAST_HOPS.
  • Улучшения файловой системы.
    • Разрешено подключение путей UNC.
    • Включена поддержка CDFS в DrvFs.
    • Правильная обработка разрешений для сетевых файловых систем в DrvFs.
    • Добавлена поддержка удаленных дисков в DrvFs.
    • Включена поддержка файловой системы FAT в DrvFs.
  • Дополнительные исправления и улучшения.

Результаты LTP

Изменения с момента выпуска сборки 15042 отсутствуют.

Сборка 16170

Общие сведения о сборке Windows 16170 доступны в блоге о Windows.

Мы опубликовали новуюзапись блога, в которой обсуждаем наши усилия по тестированию WSL.

Фиксированный

  • Поддержка параметров сокета IP_ADD_MEMBERSHIP и IPV6_ADD_MEMBERSHIP [GH 1678].
  • Добавлена поддержка PTRACE_OLDSETOPTIONS. [GH 1692]
  • Дополнительные исправления и улучшения.

Результаты LTP

Изменения с момента выпуска сборки 15042 отсутствуют.

Сборка 15046 для Windows 10 Creators Update

В обновление Creators Update для Windows 10 больше не планируется добавлять какие-либо исправления или функции WSL. Публикация заметок о выпуске WSL будет возобновлена в ближайшие недели, чтобы охватить дополнения, запланированные в следующих основных версиях в Центре обновления Windows. Общие сведения о сборке Windows 15046 и будущих выпусках для программы предварительной оценки доступны в блоге о Windows.

Сборка 15042

Общие сведения о сборке Windows 15042 доступны в блоге о Windows.

Фиксированный

  • Устранена взаимоблокировка при удалении пути, завершающегося "..".
  • Устранена проблема, из-за которой функция FIONBIO не возвращала 0 при успешном выполнении [GH 1683].
  • Устранена проблема с чтением сокетов датаграмм INET нулевой длины.
  • Устранена возможная взаимоблокировка из-за состояния состязания при поиске DrvFs в DrvFs [GH 1675].
  • Расширена поддержка вспомогательных данных сокетов UNIX, SCM_CREDENTIALS и SCM_RIGHTS [GH 514, 613, 1326].
  • Дополнительные исправления и улучшения.

Результаты LTP:

Число пройденных тестов: 737. Число непройденных тестов (неудачных, пропущенных и т. д.): 255.

Сборка 15031

Общие сведения о сборке Windows 15031 доступны в блоге о Windows.

Фиксированный

  • Исправлена ошибка, из-за которой поведение time(2) иногда было неправильным.
  • Исправлена проблема, из-за которой системный вызов *SIGPROCMASK мог повредить маску сигнала.
  • Теперь в уведомлении о создании процесса WSL возвращается полная длина командной строки. [GH 1632]
  • Теперь WSL сообщает о выходе из потока посредством ptrace, если GDB перестает отвечать на запросы. [GH 1196]
  • Исправлена ошибка, из-за которой устройства pty переставали отвечать на запросы после интенсивного ввода-вывода tmux. [GH 1358]
  • Исправлена проверка времени ожидания во многих системных вызовах (futex, semtimedop, ppoll, sigtimedwait, itimer, timer_create).
  • Добавлена поддержка eventfd EFD_SEMAPHORE [GH 452].
  • Дополнительные исправления и улучшения.

Результаты LTP:

Число пройденных тестов: 737. Число непройденных тестов (неудачных, пропущенных и т. д.): 255. Журналы выполнения тестов LTP


Сборка 15025

Общие сведения о сборке Windows 15025 доступны в блоге о Windows.

Фиксированный

  • Исправлена ошибка, которая нарушала работу grep 2.27 [GH 1578].
  • Реализован флаг EFD_SEMAPHORE для системного вызова eventfd2 [GH 452].
  • Реализован файл /proc/[pid]/net/ipv6_route [GH 1608].
  • Поддержка управляемого сигналами ввода-вывода для сокетов потоков UNIX [GH 393, 68].
  • Поддержка F_GETPIPE_SZ и F_SETPIPE_SZ [GH 1012].
  • Реализация системного вызова recvmmsg() [GH 1531].
  • Исправлена ошибка, из-за которой функция epoll_wait() не ожидала выполнения [GH 1609].
  • Реализация /proc/version_signature.
  • Теперь системный вызов Tee возвращает ошибку, если оба дескриптора файла ссылаются на один и тот же канал.
  • Реализовано правильное поведение SO_PEERCRED для сокетов UNIX.
  • Исправлена недопустимая обработка параметров системного вызова tkill.
  • Внесены изменения для увеличения производительности DrvFs.
  • Незначительное исправление блокировки ввода-вывода Ruby.
  • Исправлена проблема, из-за которой функция recvmsg() возвращала EINVAL для флага MSG_DONTWAIT для сокетов INET [GH 1296].
  • Дополнительные исправления и улучшения.

Результаты LTP:

Число пройденных тестов: 732. Число непройденных тестов (неудачных, пропущенных и т. д.): 255. Журналы выполнения тестов LTP


Сборка 15019

Общие сведения о сборке Windows 15019 доступны в блоге о Windows.

Фиксированный

  • Исправлена ошибка, из-за которой отображались неправильные данные об использовании ЦП в procfs для таких инструментов, как htop [GH 823, 945, 971].
  • Теперь при вызове Open() с O_TRUNC для существующего файла inotify теперь создает IN_MODIFY до IN_OPEN.
  • Исправление getsockopt SO_ERROR в сокетах UNIX для включения возможностей postgress [GH 61, 1354].
  • Реализация /proc/sys/net/core/somaxconn для языка GO.
  • Теперь фоновая задача обновления пакета apt-get запускается из представления в скрытом режиме.
  • Очищена область для IPv6-адреса localhost (сбой (Spring-Framework(Java)).
  • Дополнительные исправления и улучшения.

Результаты LTP:

Число пройденных тестов: 714. Число непройденных тестов (неудачных, пропущенных и т. д.): 249. Журналы выполнения тестов LTP


Сборка 15014

Общие сведения о сборке Windows 15014 доступны в блоге о Windows.

Фиксированный

  • Нажатие клавиш CTRL+C теперь работает ожидаемым образом.
  • Теперь htop и ps auxw показывают правильные данные об использовании ресурсов (GH 516).
  • Простое преобразование исключений NT в сигналы. (GH 513)
  • Теперь при нехватке пространства fallocate завершается ошибкой ENOSPC вместо EINVAL (GH 1571).
  • Добавлен /proc/sys/kernel/sem.
  • Реализованы системные вызовы semop и semtimedop.
  • Устранены ошибки nslookup, связанные с параметрами сокета IP_RECVTOS и IPV6_RECVTCLASS (GH 69).
  • Поддержка параметров сокета IP_RECVTTL и IPV6_RECVHOPLIMIT.
  • Дополнительные исправления и улучшения.

Результаты LTP:

Число пройденных тестов: 709. Число непройденных тестов (неудачных, пропущенных и т. д.): 255. Журналы выполнения тестов LTP

Сводка по системным вызовам

Всего системных вызовов: 384 Всего реализовано: 235. Всего заглушено: 22 Всего не реализовано: 127 Подробная разбивка


Сборка 15007

Общие сведения о сборке Windows 15007 доступны в блоге о Windows.

Известная проблема

  • Существует известная ошибка, из-за которой консоль не распознает некоторые клавиши CTRL+. Например, это может быть сочетание CTRL+C, которое будет функционировать как обычное нажатие клавиши C.

    • Возможное решение. Сопоставьте альтернативную клавишу с клавишами CTRL+C. Например, чтобы сопоставить клавиши CTRL+K с CTRL+C, выполните следующее: stty intr \^k. Это сопоставление действует в пределах терминала и должно выполняться при каждом запуске Bash. Пользователи могут изучить этот параметр, чтобы включить его в .bashrc.

Фиксированный

  • Исправлена ошибка, из-за которой подсистема WSL потребляла 100 % ресурсов ядра ЦП.
  • Теперь поддерживаются параметры сокета IP_PKTINFO и IPV6_RECVPKTINFO. (GH 851, 987)
  • Усечение физического адреса сетевого интерфейса до 16 байтов в lxcore (GH #1452, 1414, 1343, 468, 308).
  • Дополнительные исправления и улучшения.

Результаты LTP:

Число пройденных тестов: 709. Число непройденных тестов (неудачных, пропущенных и т. д.): 255. Журналы выполнения тестов LTP


Сборка 15002

Общие сведения о сборке Windows 15002 доступны в блоге о Windows.

Известная проблема

Две известные проблемы:

  • Существует известная ошибка, из-за которой консоль не распознает некоторые клавиши CTRL+. Например, это может быть сочетание CTRL+C, которое будет функционировать как обычное нажатие клавиши C.

    • Возможное решение. Сопоставьте альтернативную клавишу с клавишами CTRL+C. Например, чтобы сопоставить клавиши CTRL+K с CTRL+C, выполните следующее: stty intr \^k. Это сопоставление действует в пределах терминала и должно выполняться при каждом запуске Bash. Пользователи могут изучить этот параметр, чтобы включить его в .bashrc.
  • Во время выполнения WSL системный поток потребляет 100 % ресурсов ядра ЦП. Первопричина устранена и исправлена внутри компонента.

Фиксированный

  • Все сеансы Bash теперь должны создаваться на одном уровне разрешений. Попытка запустить сеанс на другом уровне будет заблокирована. Это означает, что консоль администратора и консоль пользователя, не являющегося администратором, не могут работать одновременно. (GH 626)
  • Реализованы следующие сообщения NETLINK_ROUTE (требуются права администратора Windows):
    • RTM_NEWADDR (поддерживает ip addr add);
    • RTM_NEWROUTE (поддерживает ip route add);
    • RTM_DELADDR (поддерживает ip addr del);
    • RTM_DELROUTE (поддерживает ip route del).
  • Проверка запланированных задач для пакетов, которые необходимо обновить, больше не будет выполняться при лимитном подключении (GH 1371).
  • Исправлена ошибка, из-за которой канал переставал отвечать на запросы, например bash -c "ls -alR /" | bash -c "cat" (GH 1214).
  • Реализован параметр сокета TCP_KEEPCNT (GH 843).
  • Реализован параметр сокета INET IP_MTU_DISCOVER (GH 720, 717, 170, 69).
  • Удалены устаревшие функции для запуска двоичных файлов NT из init с помощью поиска по пути NT. (GH 1325)
  • Исправлен режим /dev/kmsg для разрешения группового и другого доступа на чтение (0644) (GH 1321).
  • Реализован файл /proc/sys/kernel/random/uuid [GH 1092].
  • Исправлена ошибка, из-за которой время начала процесса отображалось как 2432 год (GH 974).
  • Переменная среды TERM по умолчанию заменена xterm-256color (GH 1446).
  • Изменен способ вычисления фиксации процесса во время ветвления процесса. (GH 1286)
  • Реализован файл /proc/sys/VM/overcommit_memory. (GH 1286)
  • Реализован файл /proc/net/route (GH 69).
  • Исправлена ошибка, из-за которой имя ярлыка было неправильно локализовано (GH 696).
  • Исправлена логика анализа ELF, которая неправильно проверяла заголовки программ, которые должны быть меньше или равны PATH_MAX. (GH 1048)
  • Реализован обратный вызов statfs для procfs, sysfs, cgroupfs и binfmtf (GH 1378).
  • Исправлена проблема, из-за которой окна AptPackageIndexUpdate не закрывались (GH 1184, также обсуждается в GH 1193).
  • Добавлена поддержка ADDR_NO_RANDOMIZE в ASLR personality. [GH 1148, 1128]
  • Улучшена функция PTRACE_GETSIGINFO для SIGSEGV для обеспечения правильных трассировок стека GDB во время операций AV (GH 875).
  • Анализ ELF больше не завершается ошибкой для двоичных файлов patchelf. (GH 471)
  • DNS-сервер VPN добавлен в /etc/resolv.conf (GH 416, 1350).
  • Улучшено закрытие TCP-подключений для более надежной передачи данных. (GH 610, 616, 1025, 1335)
  • Теперь возвращается правильный код ошибки при открытии слишком большого числа файлов (EMFILE). [GH 1126, 2090]
  • Журнал аудита Windows теперь отображает имя образа при аудите процесса создания.
  • Теперь запуск bash.exe из окна Bash корректно завершается ошибкой.
  • Добавлено сообщение об ошибке, когда служба взаимодействия не может получить доступ к рабочему каталогу в LxFs (например, notepad.exe. bashrc).
  • Исправлена проблема, из-за которой путь Windows в WSL был усеченным.
  • Дополнительные исправления и улучшения.

Результаты LTP:

Число пройденных тестов: 690. Число непройденных тестов (неудачных, пропущенных и т. д.): 274. Журналы выполнения тестов LTP


Поддержка системных вызовов

Ниже приведен список новых или улучшенных системных вызовов, которые реализованы в WSL. Системные вызовы в этом списке поддерживается по крайней мере в одном сценарии, но в настоящее время могут не поддерживаться все параметры.

Сборка 14986

Общие сведения о сборке Windows 14986 доступны в блоге о Windows.

Фиксированный

  • Исправлены ошибки NETLINK и PTY IOCTL.
  • Теперь отображается версия ядра 4.4.0-43 для обеспечения согласованности с Xenial.
  • Теперь Bash.exe запускается, когда ввод направляется в "nul:" (GH 1259).
  • Теперь идентификаторы потоков отображаются правильно в procfs (GH 967).
  • Теперь в inotify_add_watch() поддерживаются флаги IN_UNMOUNT | IN_Q_OVERFLOW | IN_IGNORED | IN_ISDIR (GH 1280).
  • Реализован timer_create и связанные системные вызовы. Это обеспечивает поддержку GHC (GH 307).
  • Исправлена проблема, из-за которой проверка связи возвращала время 0,000 мс (GH 1296).
  • Возвращается правильный код ошибки при открытии слишком большого числа файлов.
  • Исправлена проблема в WSL, из-за которой запрос NETLINK на данные сетевого интерфейса завершался ошибкой EINVAL, если аппаратный адрес интерфейса был 32-байтовым (например, интерфейс Teredo).
    • Обратите внимание на то, что служебная программа Linux "ip" содержит ошибку, из-за которой произойдет сбой, если WSL сообщит 32-байтовый адрес оборудования. Это ошибка в "ip", а не в WSL. В служебной программе ip прописана в коде длина строкового буфера, используемого для вывода аппаратного адреса, и этот буфер слишком мал для вывода 32-байтового аппаратного адреса.
  • Дополнительные исправления и улучшения.

Результаты LTP:

Число пройденных тестов: 669. Число непройденных тестов (неудачных, пропущенных и т. д.): 258 Журналы выполнения тестов LTP


Поддержка системных вызовов

Ниже приведен список новых или улучшенных системных вызовов, которые реализованы в WSL. Системные вызовы в этом списке поддерживается по крайней мере в одном сценарии, но в настоящее время могут не поддерживаться все параметры.

timer_create
timer_delete
timer_gettime
timer_settime

Сборка 14971

Общие сведения о сборке Windows 14971 доступны в блоге о Windows.

Фиксированный

  • Из-за независящих от нас обстоятельств в этой сборке не будет обновлений для подсистемы Windows для Linux. Регулярный выпуск плановых обновлений будет возобновлен в следующем выпуске.

Результаты LTP:

без изменений с момента выпуска сборки 14965. Число пройденных тестов: 664 Число непройденных тестов (неудачных, пропущенных и т. д.): 263. Журналы выполнения тестов LTP


Сборка 14965

Общие сведения о сборке Windows 14965 доступны в блоге о Windows.

Фиксированный

  • Поддержка RTM_GETLINK и RTM_GETADDR для NETLINK_ROUTE в сокетах NETLINK (GH 468).

    • Применение команд ifconfig и ip для перечисления сетей.
    • Дополнительные сведения см. в нашей записи блога о сетях WSL.
  • Теперь /sbin добавляется в путь пользователя по умолчанию.

  • Теперь путь пользователя NT по умолчанию добавляется к пути WSL (т. е. теперь можно ввести notepad.exe, не добавляя System32 в путь Linux).

  • Добавлена поддержка /proc/sys/kernel/cap_last_cap.

  • Теперь двоичные файлы NT можно запускать из WSL, если текущий рабочий каталог содержит знаки, отличные от ANSI (GH 1254).

  • Разрешено завершение работы при отключении сокета потока UNIX.

  • Добавлена поддержка PR_GET_PDEATHSIG.

  • Добавлена поддержка CLONE_PARENT.

  • Исправлена ошибка, из-за которой канал переставал отвечать на запросы, например bash -c "ls -alR /" | bash -c "cat" (GH 1214).

  • Обработка запросов на подключение к текущему терминалу.

  • Файл /proc//oom_score_adj помечен как записываемый.

  • Добавлена папку /sys/fs/cgroup.

  • Функция sched_setaffinity должна возвращать значение маски битов сходства.

  • Исправлена логика проверки ELF, которая неправильно предполагала, что пути интерпретатора должны содержать менее 64 знаков. (GH 743)

  • Открытые дескрипторы файлов могут оставаться открытыми в окне консоли (GH 1187).

  • Устранена ошибка, из-за которой происходил сбой rename(), если имя цели содержало конечную косую черту (GH 1008).

  • Реализован файл /proc/net/dev.

  • Исправлена ошибка, из-за которой при проверке связи возвращалось значение 0,000 мс из-за разрешения таймера.

  • Реализован файл /proc/self/environ (GH 730).

  • Дополнительные исправления ошибок и усовершенствования.

Результаты LTP:

Число пройденных тестов: 664 Число непройденных тестов (неудачных, пропущенных и т. д.): 263. Журналы выполнения тестов LTP


Сборка 14959

Общие сведения о сборке Windows 14959 доступны в блоге о Windows.

Фиксированный

  • Улучшены уведомления о процессе Pico для Windows. Дополнительные сведения см. в блоге о WSL.
  • Повышена стабильность взаимодействия с Windows.
  • Устранена ошибка 0x80070057, возникавшая при запуске bash.exe при включенной защите корпоративных данных (EDP).
  • Дополнительные исправления ошибок и усовершенствования.

Результаты LTP:

Число пройденных тестов: 665 Число непройденных тестов (неудачных, пропущенных и т. д.): 263. Журналы выполнения тестов LTP


Сборка 14955

Общие сведения о сборке Windows 14955 доступны в блоге о Windows.

Фиксированный

  • Из-за независящих от нас обстоятельств в этой сборке не будет обновлений для подсистемы Windows для Linux. Регулярный выпуск плановых обновлений будет возобновлен в следующем выпуске.

Результаты LTP:

Число пройденных тестов: 665 Число непройденных тестов (неудачных, пропущенных и т. д.): 263. Журналы выполнения тестов LTP


Сборка 14951

Общие сведения о сборке Windows 14951 доступны в блоге о Windows.

Новая функция: взаимодействие Ubuntu и Windows

Теперь двоичные файлы Windows можно вызывать непосредственно из командной строки WSL. Это дает пользователям возможность взаимодействовать со средой и системой Windows способом, который ранее был невозможен. Например, теперь пользователи могут выполнять следующие команды.

$ export PATH=$PATH:/mnt/c/Windows/System32
$ notepad.exe
$ ipconfig.exe | grep IPv4 | cut -d: -f2
$ ls -la | findstr.exe foo.txt
$ cmd.exe /c dir

Дополнительные сведения:

  • Блог команды WSL по взаимодействию
  • Документация по взаимодействию на сайте MSDN

Фиксированный

  • Ubuntu 16.04 (Xenial) теперь устанавливается для всех новых экземпляров WSL. Существующие у пользователей экземпляры Ubuntu 14.04 (Trusty) не будут обновляться автоматически.
  • Теперь отображается языковой стандарт, установленный во время установки.
  • Улучшения в терминале, включая устранение ошибки, из-за которой перенаправление процесса WSL в файл не всегда работало.
  • Время существования консоли должно быть связано со временем существования bash.exe.
  • Размер окна консоли должен быть основан на видимом размере, а не размере буфера.
  • Дополнительные исправления ошибок и усовершенствования.

Результаты LTP:

Число пройденных тестов: 665 Число непройденных тестов (неудачных, пропущенных и т. д.): 263. Журналы выполнения тестов LTP


Сборка 14946

Общие сведения о сборке Windows 14946 доступны в блоге о Windows.

Фиксированный

  • Устранена проблема, которая не позволила создавать учетные записи WSL для пользователей с именами пользователей NT, содержащими пробелы или кавычки.

  • Внесены изменения в VolFs и DrvFs, чтобы возвращалось значение 0 для количества ссылок каталога в stat.

  • Поддержка параметра сокета IPV6_MULTICAST_HOPS.

  • Ограничение в один цикл ввода-вывода консоли на tty. Например, можно выполнить следующую команду:

    • bash -c "echo data" | bash -c "ssh user@example.com 'cat > foo.txt'"
  • Пробелы в /proc/cpuinfo заменены символами табуляции (GH 1115).

  • DrvFs теперь отображается в mountinfo с именем, совпадающим с подключенным томом Windows.

  • Теперь /home и /root отображаются в mountinfo с правильными именами.

  • Дополнительные исправления ошибок и усовершенствования.

Результаты LTP:

Число пройденных тестов: 665 Число непройденных тестов (неудачных, пропущенных и т. д.): 263. Журналы выполнения тестов LTP


Сборка 14942

Общие сведения о сборке Windows 14942 доступны в блоге о Windows.

Фиксированный

  • Исправлен ряд ошибок, в том числе сбой сети ATTEMPTED EXECUTE OF NOEXECUTE MEMORY (Попытка выполнения в недоступной памяти), который блокировал SSH.
  • Добавлена поддержка inotifiy для уведомлений, созданных в приложениях для Windows в DrvFs.
  • Реализованы параметры TCP_KEEPIDLE и TCP_KEEPINTVL для mongod. (GH 695)
  • Реализован системный вызов pivot_root.
  • Реализован параметр сокета для SO_DONTROUTE.
  • Дополнительные исправления ошибок и усовершенствования.

Результаты LTP:

Число пройденных тестов: 665 Число непройденных тестов (неудачных, пропущенных и т. д.): 263. Журналы выполнения тестов LTP

Поддержка системных вызовов

Ниже приведен список новых или улучшенных системных вызовов, которые реализованы в WSL. Системные вызовы в этом списке поддерживается по крайней мере в одном сценарии, но в настоящее время могут не поддерживаться все параметры.

Сборка 14936

Общие сведения о сборке Windows 14936 доступны в блоге о Windows.

Примечание. В предстоящем выпуске WSL будет устанавливать версию Ubuntu 16.04 (Xenial) вместо Ubuntu 14.04 (Trusty). Это изменение будет применено к участникам программы предварительной оценки, которые устанавливают новые экземпляры (lxrun.exe /install или первый запуск bash.exe). Существующие экземпляры с версией Trusty не будут обновлены автоматически. Пользователи могут обновить свой образ Trusty до версии Xenial с помощью команды do-release-upgrade.

Известная проблема

В WSL существует проблема с реализацией некоторых сокетов. Ошибка проявляется как сбой с сообщением ATTEMPTED EXECUTE OF NOEXECUTE MEMORY (Попытка выполнения в недоступной памяти). Чаще всего этот сбой происходит при использовании SSH. Первопричина исправлена во внутренних сборках, и исправление будет добавлено в сборки для программы предварительной оценки при первой возможности.

Фиксированный

  • Реализован системный вызов chroot.
  • Улучшения в inotify, включая поддержку уведомлений, созданных в приложениях для Windows в DrvFs.
    • Исправление: В настоящее время недоступна поддержка в inotify изменений, исходящих из приложений Windows.
  • Привязка сокета к IPV6:: теперь поддерживает IPV6_V6ONLY (GH 68, 157, 393, 460, 674, 740, 982, 996).
  • Реализовано поведение WNOWAIT для системного вызова waitid (GH 638).
  • Поддержка параметров IP-сокета IP_HDRINCL и IP_TTL.
  • Результат read() нулевой длины должен возвращаться немедленно (GH 975).
  • Правильная обработка имен файлов и префиксов имен файлов, которые не содержат терминатор NULL в TAR-файле.
  • Поддержка epoll для /dev/null.
  • Исправлен источник времени /dev/alarm.
  • Теперь команда bash -c может выполнять перенаправление в файл.
  • Дополнительные исправления ошибок и усовершенствования.

Результаты LTP:

Число пройденных тестов: 664 Число непройденных тестов (неудачных, пропущенных и т. д.): 264. Журналы выполнения тестов LTP

Поддержка системных вызовов

Ниже приведен список новых или улучшенных системных вызовов, которые реализованы в WSL. Системные вызовы в этом списке поддерживается по крайней мере в одном сценарии, но в настоящее время могут не поддерживаться все параметры.

Сборка 14931

Общие сведения о сборке Windows 14931 доступны в блоге о Windows.

Фиксированный

  • Из-за независящих от нас обстоятельств в этой сборке не будет обновлений для подсистемы Windows для Linux. Регулярный выпуск плановых обновлений будет возобновлен в следующем выпуске.

Сборка 14926

Общие сведения о сборке Windows 14926 доступны в блоге о Windows.

Фиксированный

  • Проверка связи теперь работает в консолях без привилегий администратора.
  • Теперь поддерживается ping6, также без привилегий администратора.
  • Поддержка в inotify файлов, измененных посредством WSL. (GH 216)
    • Поддерживаемые флаги:
      • inotify_init1: LX_O_CLOEXEC, LX_O_NONBLOCK
      • События inotify_add_watch: LX_IN_ACCESS, LX_IN_MODIFY, LX_IN_ATTRIB, LX_IN_CLOSE_WRITE, LX_IN_CLOSE_NOWRITE, LX_IN_OPEN, LX_IN_MOVED_FROM, LX_IN_MOVED_TO, LX_IN_CREATE, LX_IN_DELETE, LX_IN_DELETE_SELF, LX_IN_MOVE_SELF
      • Атрибуты inotify_add_watch: LX_IN_DONT_FOLLOW, LX_IN_EXCL_UNLINK, LX_IN_MASK_ADD, LX_IN_ONESHOT, LX_IN_ONLYDIR
      • Выходные данные чтения: LX_IN_ISDIR, LX_IN_IGNORED
    • Известная проблема: Изменение файлов из приложений Windows не приводит к созданию событий.
  • Сокет UNIX теперь поддерживает SCM_CREDENTIALS.

Результаты LTP:

Число пройденных тестов: 651 Число непройденных тестов (неудачных, пропущенных и т. д.): 258 Журналы выполнения тестов LTP


Сборка 14915

Общие сведения о сборке Windows 14915 доступны в блоге о Windows.

Фиксированный

  • Socketpair для сокетов датаграмм UNIX (GH 262).
  • Поддержка сокетов UNIX для SO_REUSEADDR.
  • Поддержка сокетов UNIX для SO_BROADCAST (GH 568).
  • Поддержка сокетов UNIX для SOCK_SEQPACKET (GH 758, 546).
  • Добавлена поддержка send, recv и shutdown для сокетов датаграмм UNIX.
  • Устранена ошибка из-за неправильной проверки параметров mmap для нефиксированных адресов. (GH 847)
  • Поддержка приостановки и возобновления состояний терминала.
  • Поддержка TIOCPKT ioctl для разблокировки служебной программы Screen (GH 774).
    • Известная проблема: Не работают функциональные клавиши.
  • Исправлено состязание в TimerFd, которое могло привести к обращению LxpTimerFdWorkerRoutine к освобожденному элементу ReaderReady (GH 814).
  • Включена поддержка перезапускаемых системных вызовов для futex, poll и clock_nanosleep.
  • Добавлена поддержка подключения привязки.
  • Поддержка отмены общего доступа для пространства имен подключения.
    • Известная проблема: При создании пространства имен подключения посредством unshare(CLONE_NEWNS) текущий рабочий каталог будет по-прежнему указывать на старое пространство имен.
  • Дополнительные улучшения и исправления.

Сборка 14905

Общие сведения о сборке Windows 14905 доступны в блоге о Windows.

Фиксированный

  • Теперь поддерживаются перезапускаемые системные вызовы (GH 349, GH 520).
  • Теперь функционируют символические ссылки на каталоги, которые заканчиваются косой чертой "/" (GH 650).
  • Реализован параметр RNDGETENTCNT ioctl для /dev/random.
  • Реализованы файлы /proc/[pid]/mounts, /proc/[pid]/mountinfo и /proc/[pid]/mountstats.
  • Дополнительные исправления ошибок и усовершенствования.

Сборка 14901

Первая сборка для программы предварительной оценки для выпуска после юбилейного обновления Windows 10.

Общие сведения о сборке Windows 14901 доступны в блоге о Windows.

Фиксированный

  • Исправлена проблема конечной косой черты.
    • Теперь работают такие команды, как $ mv a/c/ a/b/.
  • Теперь при установке отображается запрос, позволяющий установить языковый стандарт Ubuntu, совпадающий с языковым стандартом Windows.
  • Поддержка procfs для папки ns.
  • Добавлены функции подключения и отключения для файловых систем tmpfs, procfs и sysfs.
  • Исправлена 32-разрядная подпись ABI для mknod[at].
  • Сокеты UNIX переведены на модель диспетчеризации.
  • Размер буфера recv сокета INET, заданный с помощью setsockopt, должен учитываться.
  • Реализован флаг получения сообщения MSG_CMSG_CLOEXEC для сокетов UNIX.
  • Перенаправление канала stdin/stdout процесса Linux (GH 2).
    • Разрешена конвейерная передача команд bash -c в командную строку. Пример: >dir | bash -c "grep foo"
  • Теперь Bash можно установить в системах с несколькими файлами подкачки (GH 538, 358).
  • Размер буфера сокета INET по умолчанию должен соответствовать установке Ubuntu по умолчанию.
  • Системные вызовы xattr согласованы с listxattr.
  • SIOCGIFCONF возвращает только интерфейсы с допустимым IPv4-адресом.
  • Исправлено действие по умолчанию для сигнала при внедрении с помощью ptrace.
  • Реализован файл /proc/sys/vm/min_free_kbytes.
  • Использование значений реестра для контекста компьютера при восстановлении контекста в sigreturn.
    • Это устраняет проблему, из-за которой у некоторых пользователей java и javac переставали отвечать на запросы.
  • Реализован файл /proc/sys/kernel/hostname.

Поддержка системных вызовов

Ниже приведен список новых или улучшенных системных вызовов, которые реализованы в WSL. Системные вызовы в этом списке поддерживается по крайней мере в одном сценарии, но в настоящее время могут не поддерживаться все параметры.

waitid
epoll_pwait


Сборка 14388 для юбилейного обновления Windows 10

Общие сведения о сборке Windows 14388 доступны в блоге о Windows.

Фиксированный

  • Исправления для подготовки к выпуску юбилейного обновления Windows 10 2-го августа.
    • Дополнительные сведения о компоненте WSL в юбилейном обновлении можно найти на нашем блоге.

Сборка 14376

Общие сведения о сборке Windows 14376 доступны в блоге о Windows.

Фиксированный

  • Удалены некоторые экземпляры, в которых функция apt-get переставала отвечать на запросы (GH 493).
  • Исправлена проблема, из-за которой неправильно обрабатывались пустые подключения.
  • Исправлена проблема, из-за которой неправильно подключались диски ramdisk.
  • Изменена процедура принятия сокетов UNIX для поддержки флагов (частично GH 451).
  • Исправлена распространенная проблема с сетью, вызывавшая ошибку "синий экран".
  • Устранена ошибка "синий экран" при доступе к /proc/[pid]/task (GH 523).
  • Исправлена высокая загрузка ЦП для некоторых сценариев использования pty (GH 488, 504).
  • Дополнительные исправления ошибок и усовершенствования.

Сборка 14371

Общие сведения о сборке Windows 14371 доступны в блоге о Windows.

Фиксированный

  • Исправлено состязание за синхронизацию SIGCHLD и wait() при использовании ptrace.
  • Исправлена обработка путей, которые завершаются косой чертой "/" (GH 432).
  • Устранен сбой при переименовании или отмене связи из-за открытых дескрипторов дочерних элементов.
  • Дополнительные исправления ошибок и усовершенствования.

Сборка 14366

Общие сведения о сборке Windows 14366 доступны в блоге о Windows.

Фиксированный

  • Исправлено создание файла с помощью символических ссылок.
  • Добавлена функция listxattr для Python (GH 385).
  • Дополнительные исправления ошибок и усовершенствования.

Поддержка системных вызовов

  • Ниже приведен список новых или улучшенных системных вызовов, которые реализованы в WSL. Системные вызовы в этом списке поддерживается по крайней мере в одном сценарии, но в настоящее время могут не поддерживаться все параметры.

Сборка 14361

Общие сведения о сборке Windows 14361 доступны в блоге о Windows.

Фиксированный

  • Теперь в DrvFs учитывается регистр при выполнении в Bash для Ubuntu в Windows.
    • Пользователи могут хранить на дисках в /mnt/c и файл case.txt, и файл CASE.TXT.
    • Учет регистра поддерживается только в Bash для Ubuntu в Windows. За пределами Bash NTFS будет отображать сведения о файлах правильно, но при взаимодействии с этими файлами из Windows может наблюдаться непредвиденное поведение.
    • Корень каждого тома (т. е. /mnt/c) не учитывает регистр.
    • Дополнительные сведения об обработке этих файлов в Windows можно найти здесь.
  • Значительно улучшена поддержка pty и tty. Теперь поддерживаются такие приложения, как tmux (GH 40).
  • Исправлена проблема с установкой, из-за которой учетные записи пользователей создавались не всегда.
  • Оптимизирована структура аргументов командной строки, которая позволяет получить очень длинный список аргументов. (GH 153)
  • Теперь можно выполнять операции delete и chmod с файлами только для чтения в DrvFs.
  • Исправлены некоторые экземпляры, в которых терминал при отключении переставал отвечать на запросы (GH 43).
  • Теперь на устройствах tty работает chmod и chown.
  • Разрешено подключение к 0.0.0.0 и :: как localhost (GH 388).
  • Теперь sendmsg и recvmsg обрабатывают векторы ввода-вывода длиной больше 1 (частично GH 376).
  • Теперь пользователи могут отказаться от автоматически создаваемого файла hosts (GH 398).
  • Автоматическое сопоставление языкового стандарта Linux с языковым стандартом NT во время установки (GH 11).
  • Добавлен файл /proc/sys/vm/swappiness (GH #306).
  • Теперь strace завершается правильно.
  • Разрешено повторное открытие каналов через /proc/self/fd (GH 222).
  • Скрытие каталогов в %LOCALAPPDATA%\lxss из DrvFs (GH 270).
  • Улучшена обработка bash.exe ~. Теперь поддерживаются такие команды, как bash ~ -c ls (GH 467).
  • Сокеты теперь уведомляют epoll о доступе на чтение во время завершения (GH 271).
  • Команда lxrun /uninstall лучше удаляет файлы и папки.
  • Исправлена команда ps -f (GH 246).
  • Улучшена поддержка приложений x11, таких как xEmacs (GH 481).
  • Обновлен начальный размер стека потока в соответствии с параметром Ubuntu по умолчанию. Теперь при системном вызове get_rlimit размер отображается правильно (GH 172, 258).
  • Улучшено отображение имен образов процессов Pico (например, для аудита).
  • Реализован файл /proc/mountinfo для команды df.
  • Исправлен код ошибки символической ссылки для дочернего имени. И еще:
  • Дополнительные улучшения исправлений ошибок и усовершенствования.

Поддержка системных вызовов

Ниже приведен список новых или улучшенных системных вызовов, которые реализованы в WSL. Системные вызовы в этом списке поддерживается по крайней мере в одном сценарии, но в настоящее время могут не поддерживаться все параметры.

GETTIMER
MKNODAT
RENAMEAT
SENDFILE
SENDFILE64
SYNC_FILE_RANGE

Сборка 14352

Общие сведения о сборке Windows 14352 доступны в блоге о Windows.

Фиксированный

  • Исправлена проблема, из-за которой большие файлы скачивались и создавались неправильно. Это должно позволить использовать npm и реализовать другие сценарии (GH 3, GH 313).
  • Удалены некоторые экземпляры, в которых сокеты переставали отвечать на запросы.
  • Исправлены некоторые ошибки ptrace.
  • Исправлена проблема с WSL, и теперь можно использовать имена файлов длиннее 255 знаков.
  • Улучшена поддержка знаков языков, отличных от английского.
  • Добавление данных о текущем часовом поясе Windows и назначение его используемым по умолчанию.
  • Уникальный идентификатор устройства для каждой точки подключения (исправление JRE — GH 49).
  • Устранена ошибка с путями, содержащими . и .. (одну и две точки).
  • Добавлена поддержка FIFO (GH 71).
  • Обновлен формат resolv.conf в соответствии с собственным форматом Ubuntu.
  • Некоторая очистка procfs.
  • Включена проверка связи для консолей администратора (GH 18).

Поддержка системных вызовов

Ниже приведен список новых или улучшенных системных вызовов, которые реализованы в WSL. Системные вызовы в этом списке поддерживается по крайней мере в одном сценарии, но в настоящее время могут не поддерживаться все параметры.

FALLOCATE
EXECVE
LGETXATTR
FGETXATTR

Сборка 14342

Общие сведения о сборке Windows 14342 доступны в блоге о Windows.

Сведения о VolFs и DriveFs можно найти в блоге о WSL.

Фиксированный

  • Исправлена проблема с установкой, возникавшая, когда в имени пользователя Windows присутствовали знаки Юникода.
  • Теперь обходное решение для обновления apt-get с помощью udev, приведенное в разделе часто задаваемых вопросов, предоставляется по умолчанию при первом запуске.
  • Включены символические ссылки в каталогах DriveFs (/mnt/).
  • Теперь работают символические ссылки между DriveFs и VolFs.
  • Устранена проблема с анализом путей верхнего уровня. Теперь ls .// будет работать должным образом.
  • Теперь работает установка npm в DriveFs и параметры -g.
  • Исправлена проблема, препятствующая запуску сервера PHP.
  • Обновлены значения среды по умолчанию, такие как $PATH, чтобы они больше соответствовали собственным переменным Ubuntu.
  • Добавлена еженедельная задача обслуживания в Windows для обновления кэша пакетов apt.
  • Исправлена проблема с проверкой заголовков ELF. Теперь WSL поддерживает все параметры Melkor.
  • Оболочка Zsh работает.
  • Теперь поддерживаются предварительно скомпилированные двоичные файлы Go.
  • Теперь запросы при первом запуске bash.exe локализованы правильно.
  • Теперь /proc/meminfo возвращает правильные сведения.
  • Сокеты теперь поддерживаются в VFS.
  • Теперь /dev подключен как tempfs.
  • FIFO теперь поддерживается.
  • Многоядерные системы теперь правильно отображаются в /proc/cpuinfo.
  • Дополнительные улучшения и сообщения об ошибках при скачивании во время первого запуска.
  • Усовершенствования и исправления системных вызовов. Список поддерживаемых системных вызовов приведен ниже.
  • Дополнительные исправления ошибок и усовершенствования.

Известные проблемы

  • Неправильное разрешение .. (две точки). в DriveFs в некоторых случаях.

Поддержка системных вызовов

Ниже приведен список новых или улучшенных системных вызовов, которые реализованы в WSL. Системные вызовы в этом списке поддерживается по крайней мере в одном сценарии, но в настоящее время могут не поддерживаться все параметры.

FCHOWNAT
GETEUID
GETGID
GETRESUID
GETXATTR
PTRACE
SETGID
SETGROUPS
SETHOSTNAME
SETXATTR

Сборка 14332

Общие сведения о сборке Windows 14332 доступны в блоге о Windows.

Фиксированный

  • Улучшенное создание resolv.conf, включая определение приоритета записей DNS.
  • Проблема с перемещением файлов и каталогов между дисками в /mnt и прочими дисками.
  • Теперь можно создавать TAR-файлы с помощью символических ссылок.
  • Добавлен каталог /run/lock по умолчанию, создаваемый при создании экземпляра.
  • Обновлен файл /dev/null для возврата правильных сведений stat.
  • Дополнительные ошибки при скачивании во время первого запуска.
  • Усовершенствования и исправления системных вызовов. Список поддерживаемых системных вызовов приведен ниже.
  • Дополнительные улучшения исправлений ошибок и усовершенствования.

Поддержка системных вызовов

Ниже приведен новый системный вызов, реализованный в WSL. Системный вызов в этом списке поддерживается по крайней мере в одном сценарии, но в настоящее время могут поддерживаться не все параметры.

Ответ 1

После долгих исследований кажется, что другим (возможно, лучшим) ответом на этот вопрос будет настройка папки www следующим образом:

  1. sudo usermod -a -G developer user1 (добавьте каждого пользователя в группу разработчиков);

  2. sudo chgrp -R developer /var/www/site.com/, чтобы разработчики могли там работать;

  3. sudo chmod -R 2774 /var/www/site.com/, чтобы только разработчики могли создавать/редактировать файлы (остальные могут читать);

  4. sudo chgrp -R www-data /var/www/site.com/uploads, чтобы www-data (apache/nginx) мог создавать загрузки.

Поскольку git запускается от имени любого пользователя, то, пока пользователь входит в группу "developer", он должен иметь возможность создавать папки, редактировать PHP-файлы и управлять репозиторием git.

Примечание: В шаге (3): '2' в 2774 означает "установить ID группы" для каталога. Это приводит к тому, что новые файлы и подкаталоги, созданные в нем, наследуют ID группы родительского каталога (вместо основной группы пользователя).

Ответ 2

Я не уверен, что это "правильно", но вот что я делаю на своем сервере:

  1. /var/www содержит папку для каждого сайта.

  2. Каждый сайт имеет назначенного владельца, который устанавливается как владелец всех файлов и папок в каталоге сайта.

  3. Все пользователи, которые поддерживают сайт, объединяются в группу для этого сайта.

  4. Эта группа назначается владельцем всех файлов и папок в каталоге.

  5. Любые файлы и папки, которые должны быть записаны веб-сервером (т. е. PHP), имеют владельца www-data, пользователя, под которым работает apache.

Помните, что для каталогов должен быть включен бит execute, чтобы можно было просмотреть их содержимое.

Ответ 3

После проведения дополнительных исследований выяснилось, что инструменты git/svn НЕ являются проблемой, поскольку они запускаются под тем пользователем, который их использует (однако демоны git/svn это совсем другое дело!). Все, что я создавал/клонировал с помощью git, имело мои права доступа, а инструмент git был указан в /usr/bin, что соответствует этому тезису.

Разрешения git доступны.

Разрешения пользователей, похоже, можно обеспечить, добавив всех пользователей, которым нужен доступ к каталогу www, в группу www-data, от имени которой работает apache (и nginx). Итак, похоже, что один из ответов на этот вопрос выглядит следующим образом:

По умолчанию /var/www принадлежит root:root, и никто не может добавлять или изменять там файлы.

1) Изменить владельца группы

Сначала нам нужно изменить группу каталога www так, чтобы она принадлежала группе "www-data", а не группе "root".

sudo chgrp -R www-data /var/www

2) Добавить пользователей в www-data

Затем нам нужно добавить текущего пользователя (и всех остальных) в группу www-data.

sudo usermod -a -G www-data demousername

3) Изменить права доступа к каталогу www

Измените разрешения так, чтобы ТОЛЬКО владелец (root) и все пользователи из группы "www-data" могли rwx (читать/писать/исполнять) файлы и каталоги (никто другой не должен иметь к ним доступа).

sudo chmod -R 2770 /var/www

Теперь все файлы и каталоги, созданные любым пользователем, имеющим доступ (т. е. входящим в группу "www-data"), будут доступны для чтения/записи apache и, следовательно, php.

Ответ 4

Привязка это не наследование прав доступа. Привязка каталога означает, что только владелец файла или владелец каталога может переименовать или удалить этот файл в каталоге, несмотря на то, что разрешения говорят об обратном. Таким образом, 1777 на /tmp/.

В классическом Unix нет наследования прав доступа, основанного на файловой системе, только на umask текущего процесса. В *BSD или Linux с setgid на каталоге групповое поле вновь созданных файлов будет установлено таким же, как и в родительском каталоге. Для чего-то большего вам нужно изучить ACL, с ACL "по умолчанию" на каталогах, которые позволяют вам иметь наследуемые разрешения. Вы должны начать с определения: * какие пользователи имеют доступ к системе *, какова ваша модель угроз.

Например, если вы занимаетесь веб-хостингом с несколькими клиентами и не хотите, чтобы они видели файлы друг друга, то вы можете использовать общую группу "webcusts" для всех этих пользователей и режим каталога 0705. Тогда файлы, обслуживаемые процессом веб-сервера (не в "webcusts"), будут видеть Other perms и будут разрешены; клиенты не смогут видеть файлы друг друга, а пользователи смогут работать со своими собственными файлами. Однако это означает, что, когда вы разрешаете CGI или PHP, вы должны убедиться, что процессы запускаются от имени конкретного пользователя (хорошая практика в любом случае для нескольких пользователей на одном хосте, для отчетности). В противном случае клиенты могут испортить файлы друг друга, поручив это CGI.

Однако если пользователь, выполняющий веб-сайт, совпадает с владельцем сайта, то возникают проблемы с невозможностью защитить контент от злоумышленников в случае дыры в безопасности скрипта. Именно в этом случае выделенные хосты выигрывают, так как вы можете иметь пользователя времени выполнения, отличного от владельца статического контента, и не беспокоиться о взаимодействии с другими пользователями.

Chmod для пользователей и права доступа

Для каждой группы пользователей определены свои права доступа. При попытке соединения веб-сервер определяет, к какой группе отнести того или иного юзера. Все они разделяются на:

  1. «user» (u) — владелец файла;
  2. «group» (g) — один из членов группы, к которой принадлежит и владелец;
  3. «others» (o) — все остальные пользователи.

Если вы подключаетесь к серверу по протоколу FTP и заходите под своим логином и паролем, то будете идентифицированы как «user», если кто-либо другой подключается по ФТП, то он будет отнесен к «group», ежели пользователь использует браузер, то попадет в категорию «others».

Теперь о правах доступа chmod к файлам и директориям. По сути они немного отличаются, хотя обозначения применяются одни и те же. Права доступа к файлам позволяют производить следующие операции с объектами:

  • r (read) — чтение (возможность просмотра содержания);
  • w (write) — запись, перезапись (изменение содержимого), но не удаление;
  • x (eXutive) — исполнение (например, запуск программного файла).

Права доступа к папкам (директориям, или каталогам) дают совершать такие действия:

  • r — чтение (можно получить список имен объектов, входящих в каталог, но не их атрибутов, то есть, невозможен просмотр размеров файлов, прав доступа, имени владельца и т.д.);
  • w — изменение содержимого (создание, переименование и удаление объектов в директории, причем, удалять можно даже те файлы, право на запись для которых не установлено);
  • x — доступ в каталог (особенность здесь такая, что если даже вы имеете все необходимые права на файл, который расположен "в глубине директорий", но не имеете права доступа хотя бы к одной поддиректории на пути к этому объекту, то не сможете добраться до него), включая возможность просмотра атрибутов (свойств) файлов.

Все эти права указываются администратором, который получает эту возможность посредством ввода пароля. Если установить максимально возможные ограничения на доступ к тем или иным файлам сайта, то можно максимально обеспечить его защищенность.

Если обратить внимание на выше представленные права в отношении каталогов (папок), то атрибут «w» имеет практический смысл только в сочетании с «x».

Таким образом, мы имеем пользователей «u», «g», «o» и соответственно права «r», «w», «x», причем, порядок их отображения слева направо следующий:

  • первым идет комплекс прав для владельца (u);
  • далее для группы (g);
  • и в конце — для всех остальных (o).

Для наглядности рассмотрим пример, когда владелец файла («u») имеет все возможные права: на чтение, запись и исполнение (r, w и x). Пользователи, отнесенные к категориям «g» (group) и «o» (others) — только на чтение(r). Тогда полная запись chmod по порядку отображения прав выглядит таким образом (значком дефиса «-» отмечают отсутствие какой-либо категории прав):

rwxr--r--

Итак, в соответствии с выше представленной информацией существует три группы пользователей и три категории действий с объектами. Чтобы не запутаться, попробуем систематизировать эти данные в форме таблиц. Для начала отметим отличия между правами для файлов и каталогов:

Тип прав Для файла Для папки
r Чтение (просмотр содержания) Изучение имен файлов, входящих в директорию
w Запись (перезапись) Добавление, переименование и удаление файлов в каталоге
x Выполнение файлика Доступ к файлам каталога и чтение их атрибутов

Далее рассмотрим разные сочетания прав (на файлы и папки):

Тип прав для пользователей (rwx) Для файла Для папки
--- Все запрещено Все запрещено
--x Выполнение Чтение атрибутов файлов
-w- Запись (перезапись) Все запрещено
-wx Запись и выполнение Разрешено все, кроме получения имен файлов, находящихся в папке
r-- Чтение содержимого Чтение имен файлов
r-x Чтение и выполнение Чтение имен файлов и их атрибутов
rw- Чтение и запись Чтение имен файлов
rwx Все возможные права Все возможные права

Информация о правах доступа из выше приведенной таблички позволяет сделать очевидные и во многом полезные для практического применения выводы.

Для каталогов чрезвычайно редко применяются следующие совокупности прав:

  • «--x» (чтение атрибутов входящих в папку файлов без получения их названий);
  • «-w-» (по сути это полный запрет, поскольку нет возможности осуществлять действия над объектами без получения полноценного доступа к ним);
  • «-wx» (все действия возможны исключая доступ к наименованиям файлов);
  • «rw-» (получение списка имен файлов, по сути он дублирует «r--»).

Для полного просмотра любой директории необходимы права на ее просмотр и доступ к файлам и их свойствам (атрибутам), иначе говоря, минимально разумные привилегии на каталог в этом случае должны быть «r-x».

На основании выше сказанного можно отметить, что на практике для каталога чаще всего используются сочетания «rwx», «r-x» и «---»

Например, возьмем вариант «-wx» и вкратце проанализируем его. В принципе, он разрешает абсолютно все действия (конечно, при условии, что и на файлики прописаны нужные права), но закрывает доступ к именам объектов в директории, что согласитесь, веет бессмыслицей, так как во многих случаях операции с объектами основываются на знании их наименований. В этом случае, наверное, лучше использовать режим «---», который запрещает всё.

Права доступа в цифрах: chmod (777, 755, 655, 444, 400)

Выше мы разобрали вариант записи чмод символами. Однако, во многих смыслах гораздо удобнее назначать те или иные права доступа в цифровом выражении:

  • r (чтение) — 4
  • w (запись) — 2
  • x (исполнение) — 1
  • - (нет прав) — 0

Теперь вновь разберем вышеприведенный пример для назначения прав доступа «rwxr--r--». Для отображения прав каждого пользователя применяется сложение его прав: r (чтение) + w (запись) + x (исполнение). Таким образом, часть записи для владельца файла u (user) «rwx» превратится в 7 (4+2+1). Для членов групп g (group) и o (others) запись «r--» преобразуется в 4 (4+0+0). Тогда вся совокупность прав в цифровом выражении будет выглядеть как «744».

В качестве резюме представлю сводную таблицу с правами доступа chmod в буквах и цифрах:

chmod Файлы Папки (директории)
Выражен. в цифрах Выражен. в символах
0 --- Запрещены все действия Запрещены все действия
1 --x Выполнение Чтение атрибутов файлов*
2 -w- Запись Запрещены все действия
3 (2 + 1) -wx Запись и выполнение Разрешено все, кроме доступа к именам файлов**
4 r-- Чтение содержимого Чтение имен файлов
5 (4 + 1) r-x Чтение и выполнение Чтение имен файлов и их атрибутов***
6 (4 + 2) rw- Чтение и запись Чтение имен файлов
7 (4 + 2 +1) rwx Все разрешено Все разрешено

* — нет возможности получения имен файлов, а также их создания/переименования/удаления.

** — можно создавать/переименовывать/удалять файлы, но отсутствует доступ к их названиям.

*** — нельзя создавать/переименовывать/удалять файлы в директории.

Теперь представлю еще одну таблицу, которая отражает суммарные права chmod для абсолютно всех групп пользователей (user, group, others) в формате цифр:

chmod Владелец u (user) Член группы g (group) Другие пользователи 0 (others)
777 Чтение, запись, исполнение Чтение, запись, исполнение Чтение, запись, исполнение
776 Чтение, запись, исполнение Чтение, запись, исполнение Чтение, запись
775 Чтение, запись, исполнение Чтение, запись, исполнение Чтение, исполнение
774 Чтение, запись, исполнение Чтение, запись, исполнение Чтение
766 Чтение, запись, исполнение Чтение, запись Чтение, запись
755 Чтение, запись, исполнение Чтение, исполнение Чтение, исполнение
655 Чтение, запись Чтение, исполнение Чтение, исполнение
644 Чтение, запись Чтение Чтение
444 Чтение Чтение Чтение

Это основные комбинации, которые наиболее часто используются в работе вебмастера. Другие формируются по аналогии. Если вы являетесь администратором сайта, но работаете с проектом, не подсоединившись по FTP протоколу, вы также относитесь к группе "Остальные пользователи". В таком случае при работе с сайтом нужно учитывать последнюю цифру в значении chmod.

Для примера возьмем файл с каким-нибудь скриптом. Чтобы он запускался при определенных действиях пользователя на сайте, вполне достаточно, чтобы на этот файлик были установлены права «4» («r--»). Можно и выше (5, 6, 7), но это не имеет смысла, так как при том же эффекте понизится уровень безопасности ресурса. На папку, в которой находится файлик со скриптом, уже требуются права «5» (доступ к директории и чтение содержимого), но опять же, не больше.

Ежели необходимо, чтобы скрипт не только предоставлял какую-то информацию, но и записывал данные (скажем, те, которые вводят посетители), то права в отношении каталога как минимум (он же и максимум, опять же, исходя из безопасности) потребуются «5», однако, для файла уже надо при этих обстоятельствах проставить «6» (что обеспечит чтение и запись).

Ежели у вас простенький сайт с использованием HTML-страниц, то на сервере, где расположены его файлики, достаточно на каталоги иметь права 755, а на файлы, входящие в их состав, 644:

Файлы

644

Владелец (user) имеет право читать и записывать файлы (исполнять запрещено), члены группы (group) и остальные (others) могут лишь их читать (rw-r--r--)

Папки

755

Владелец (user) вправе выполнять все действия, а группа и другие пользователи имеют доступ к директории, могут просматривать названия и атрибуты файликов, однако, не имеют прав их записывать, изменять названия и удалять (rwxr-xr-x)

Однако фокус в том, что в современных условиях для построения вебсайтов в массовом масштабе используются CMS (системы управления контентом), к которым относится и WordPress. А здесь могут находиться объекты, в которые необходимо производить записи от группы пользователей «others», а также, к примеру, папки с кэшем (в том числе создаваемые плагином кеширования), в которые загружается контент, включая изображения.

Поэтому назначения прав Чмод на те или иные файлы необходимо дифференцировать. Если вы входите в управление вебсайтом по FTP, то можете производить любые действия, однако во многих случаях работаем со своим проектом происходит через браузер (веб-обозреватель).

А в этом случае могут возникнуть проблемы, если права слишком завышены, и, наоборот, если права доступа к тому или иному файлу (папке) занижены, то возрастает угроза безопасности. Посему на основании вышесказанного можно определить некоторые рекомендации по практическому применению chmod для современного сайта под управлением ЦМС:

777

Для каталогов, где постоянно происходит запись и стирание файлов (например, для папки кэширования)

755

Применительно к папкам, в которые постоянно записываются файлы, но не удаляются

666

Для файлов, куда необходимо время от времени добавлять запись (пример — файл .htaccess)

644

Для файлов, используемых только для чтения (.php, .html и др.)

Также рекомендую на папки, находящиеся в корне сайта, поставить код доступа Чмод 444.

Базовые понятия прав доступа к файлам и папкам

Если же все пустить это дело на самотек и не заморачиваться с установкой нужных привилегий, то вероятность взлома вашего ресурса или заражения его вредоносным кодом будет очень велика. Хорошо, если вы осуществляли резервное копирование (бэкап) всех ваших данных, а если нет?!

Поэтому лучше сразу же, не откладывая в долгий ящик, произвести настройку и изменение Чмод для всех важных объектов вашего движка, исходя из принципа минимализма. Т.е. давать объектам минимально необходимые для корректной работы вебсайта права.

Давайте сначала разберемся в сути вопроса, чтобы понимать, что именно и каким образом мы настраиваем. Итак, приступим. Права доступа разделяются по отношению к файлам и к директориям. Обозначаются они одинаково, но означают немного разное.

В свою очередь, по отношению к файлам возможно:

  1. r — право на чтение данных.
  2. w — на изменение содержимого (запись – только изменение содержимого, но не удаление).
  3. x — на исполнение файла.

Остановимся чуть подробнее на возможности исполнения файла. Дело в том, что в linux любой файлик может быть исполнен. Является ли он исполнительным — определяется не по его расширению (понятие расширение отсутствует в файловой системе Unix), а по правам доступа Chmod. Если у какого-либо файлика установлено право на исполнение “X”, то это означает, что его можно запустить на выполнение.

По отношению к директориям возможно:

  1. r — право на чтение директории (можно прочитать содержимое директории, т.е. получить список объектов, находящихся в ней)
  2. w — на изменение содержимого директории (можно создавать и удалять объекты в ней, причем, если вы имеете право на запись, то удалять вы сможете даже те файлы, которые вам не принадлежат)
  3. x — на вход в директорию (оно всегда проверяется в первую очередь, и даже если вы имеете все нужные привилегии на объект, который закопан глубоко в цепочке каталогов, но не имеете атрибут “X” для доступа хотя бы к одной директории на пути к этому файлике, то к нему вы так и не пробьетесь )

В системах Линукс все это раздает главный администратор компьютера, доступ к которому он получает путем ввода пароля. И если большинство объектов будут иметь права только для чтения, то вирусам на таком компьютере делать будет практически нечего, т.к. они не смогут себя туда ни записать, ни затем исполниться. Именно этого результата нам нужно добиться, выставляя нужные Chmod на объекты нашего сайта.

Привилегии для групп пользователей

Сами привилегии подразделяются на три категории в зависимости от того, кто обращается к объекту:

  1. «user» — u (непосредственно владелец файлика)
  2. «group» — g (член той же группы, к которой принадлежит владелец)
  3. «world» — o (все остальные)

Сервер определяет, к какой группе пользователей вас отнести в момент подключения вас к серверу. Когда вы, например, подключаетесь к серверу по протоколу FTP, то вы входите под своим именем пользователя (и паролем), и тогда сервер относит вас к группе «user» («u)».

Прочие пользователи, которые тоже подключаются по FTP к серверу, будут отнесены к группе «group» («g»), а посетитель, который приходит к вам на вебсайт, используя свой браузер, попадает в группу «world» («o»).

Вариации трех возможных значений «r», «w» и «x» для трех категорий «u», «g» и «o» и определяют Chmod к файлам. Если не задана какая-то категория, то она заменяется знаком дефисом «-». Привилегии указываются последовательно в заданном порядке:

  1. сначала права для владельца — «u»
  2. затем для группы — «g»
  3. и в конце — для всех остальных — «o»

После того, как сервер отнесет посетителя к определенной группе, он предоставляет ему права на действия с объектами, после чего посетитель сможет прочитать, записать или выполнить файл (в зависимости от того, что разрешено делать с данным объектом его группе).

Чтобы посмотреть содержимое каталога, он должен иметь атрибут чтения «r» (для той группы, к которой сервер отнес посетителя). Чтобы создать файлик или папку в уже существующей необходимо, чтобы этот существующий каталог имел атрибут на запись «w».

Для наглядности давайте разберем пример, где владелец файла («user» — «u») имеет все права: на чтение, запись в него и исполнение, а все остальные пользователи только привилегию на чтение. Запись таких Chmod будет выглядеть так: «rwx r-- r--».

Рассмотрим ее в деталях: «rwx» (эта запись задает права на объект для владельца — «u»), «r--» (эта запись задает права на тот же объект, но в случае, если посетитель отнесен сервером к группе — «g»), «r--» (эта запись задает привилегии на объект для всех остальных пользователей — «o»).

Чем отличаются права файлов и папок

Получается, что существует три группы пользователей и три возможных действия с объектами. Еще не запутались? Разложим все сказанное выше по полочкам в виде табличек. Сначала наглядно посмотрим, чем они отличаются:

«Права» « Файл» «Папка»
r Просмотр содержимого Можно прочитать содержимое каталога
w Изменение содержимого Можно изменять содержимое каталога —
писать и удалять объекты
x Запуск файлика на выполнение Позволяет зайти в каталог и обратиться к его файликам

А так же табличка, показывающая разнообразные комбинации Chmod для разных типов объектов:

«Права» «Файл» «Папка»
--- Ничего нельзя делать Доступ к каталогу и его подкаталогам запрещен
r-- Можно читать содержимое Можно прочитать содержимое каталога
rw- Можно видеть и изменять содержимое Можно добавить, удалить, изменить файл каталога
rwx Читать, изменять и выполнять файлик Можно читать, удалять, изменять файлики, сделать каталог текущим, т.е. “войти” в этот каталог.
r-x Можно прочитать, либо выполнить Можно зайти в каталог и прочитать его содержимое, удалять или добавлять файлы нельзя.
— x Выполнить, если файлик двоичный

Пользователь может выполнить двоичный файл о существовании которого ему известно, зайти или прочитать каталог запрещено

Chmod, выраженные в цифрах (777, 400, 666, 755, 444)

Вы видите, что здесь для описания прав доступа применяются записи с использованием латинских букв и дефисов, но вы, наверное, уже сталкивались с тем, что обычно Chmod задают в цифровом виде, например, всем известная комбинации: 777, разрешающая все и всем.

Действительно, привилегии так же обозначают и цифрами:

  1. r (читать) заменяют на 4
  2. w (запись) заменяют на 2
  3. x (исполнение) заменяют на 1
  4. 0 означает – ничего не делать (то, что в буквенной записи обозначается дефисом)

Давайте опять вернемся к примеру записи, приведенному мною чуть ранее: rwx r-- r--. Если заменить в ней буквы и дефисы на цифры, в соответствии с только что описанным правилом и при этом сложить цифры в каждой тройке, то получим цифровой вид этой записи: 744.

Т.е. получается, что сумма этих цифр и показывает Чмод по отношению к файлам или папке. Например:

  1. 7 (rwx) = 4 + 2 +1 (полные права)
  2. 5 (r-x)= 4 + 0 + 1 (чтение и выполнение)
  3. 6 (rw-) = 4 + 2 + 0 (чтение и запись)
  4. 4 (r--) =4 + 0 + 0 (только чтение)
  5. и т.д.

В этой таблицы приведены все возможные комбинации привилегий записанные в цифровом виде:

«Права» «Цифровая форма» «Символьная форма»
Ничего нельзя делать 0 ---
Только чтение 4 r--
Только запись 2 — w-
Только выполнение 1 — x
Чтение и запись 6 rw-
Чтение и выполнение 5 r-x
Чтение, запись, выполнение 7 Rwx

А теперь давайте рассмотрим различные комбинации записи в цифрах, применительно к группам пользователей:

«Права» «Владелец» «Группа» «Остальные»
777 читать
записывать
исполнять
читать
записывать
исполнять
Читать
записывать
исполнять
776 читать
записывать
исполнять
читать
записывать
исполнять
Читать
записывать
775 читать
записывать
исполнять
читать
записывать
исполнять
Читать
исполнять
774 читать
записывать
исполнять
читать
записывать
исполнять
Читать
766 читать
записывать
исполнять
читать
записывать
Читать
записывать
655 читать
записывать
читать
исполнять
Читать
исполнять
644 читать
записывать
читать Читать

Вы сами (кроме того случая, когда получаете доступ к сайту по FTP) и все остальные посетители вашего ресурса, относитесь к группе “word” (все остальные), поэтому для работы с вебсайтом нам нужно в первую очередь смотреть на последнюю (третью) цифру данной записи.

Для того, чтобы при работе пользователя с сайтом «запускался файл» скрипта, достаточно будет, чтобы на него были установлены права, начиная от «4» (r-- – только чтение) (5,6,7 тоже подойдут, но это будет лишнее в плане безопасности).

Для каталога же, в котором лежит файлик этого скрипта, нужно выставить минимум «5» (r-x — можно зайти в каталог и прочитать его содержимое, удалять или добавлять нельзя). 7 тоже подойдет, но тоже будет уже лишним в плане безопасности.

Если нужно, чтобы скрипт не только читался, но и «записывал» какие-то данные (например, введенные посетителем), то минимальные права на «папку» по-прежнему будут «5», но для «файлика» уже понадобится «6» (читать и записывать).

Скорей всего на сервере, куда вы скопировали содержимое движка вашего сайта, будут установлены следующие Chmod к объектам:

Папки 755 владелец (user) может всё, группа и все остальные могут только читать каталоги и заходить в них, но им запрещено записывать файлики, изменять названия и стирать их в директориях. (rwxr-xr-x)
Файлы «644» владелец (user) может читать и изменять файлики, исполнять ему их запрещено, всем остальным запрещено их изменять и исполнять, остальные могут только читать. «(rw-r--r--)»

Если бы у вас был ресурс, состоящий из одних html страниц, то можно было бы все так и оставить. Но современные сайты построены на движках, и там могут быть объекты, в которые нужно производить запись от имени посетителей из группы «world» — o (все остальные). Это могут быть каталоги, используемые для кэширования страниц или те, в которые по ходу работы с сайтом будут загружаться картинки и др.

Само собой, что если вы зайдете на сайт по FTP, то сможете произвести запись в эти файлики или директории, но работая с вебинтерфейсом как обычный пользователь у вас могут возникнуть проблемы. Поэтому к установке тех или иных прав надо подходить избирательно:

755 для всех директорий, в которых должны записываться файлики, но не надо регулярно их стирать
777 для папок, в которые должны записываться и стираться файлы (например, для кеша)
644 для простых файлов, используемых только для чтения (.html, .php и др.)
666

для файлов, в которые может понадобится осуществлять запись (например, с базами данных .dat)