WSL: что такое и как использовать подсистему Windows для Linux

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

WSLпротив WSL2

В мае 2020 года для Windows 10 Microsoft представила пользователям WSL2 обновленную и улучшенную версию WSL1. Основное различие между первой версией и второй версией этой подсистемы состоит в том, что, хотя первая версия работала на промежуточном уровне между аппаратным обеспечением и операционной системой, WSL2 теперь имеет свою собственную виртуальную машину Hyper-V, которая наряду с ядром A специально Скомпилированный для этой цели, позволяет намного лучше взаимодействовать с системными вызовами, улучшая производительность и все возможности, которые он нам предлагает.

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

WSL2 против виртуальной машины

Итак, какие преимущества (и недостатки) дает WSL2 по сравнению с установкой Linux на виртуальной машине, такой как VirtualBox or VMware? Первое отличие состоит в том, что, хотя Linux на виртуальной машине изолирован, WSL2 полностью интегрирован с Windows, поэтому обе системы могут взаимодействовать друг с другом. Кроме того, подсистема Windows может загружать Linux всего за одну секунду, тогда как виртуальная машина значительно медленнее загружает систему.

Потребление ресурсов также очень значительно. Пока WSL2 очень легкий и потребляет очень мало Оперативная память В этом отношении виртуальная машина потребляет гораздо больше ресурсов.

И, хотя это правда, что виртуальная машина предлагает больше контроля и больше настроек Подсистема Windows для Linux запускается только тогда, когда она нам нужна, и загружает только процессы и службы, необходимые для того, что нам нужно сделать.

Читайте также:  Linux-хостинг: особенности и преимущества

Если мы не знаем, какую систему использовать, мы рекомендуем используя виртуальную машину когда:

  • Давайте должны получить максимальную отдачу от Linux.
  • Давайте сделаем прогноз масштабируемости, основанный на уровнях производства.
  • Мы хотим использовать операционную систему с графическим интерфейсом и приложениями.
  • Давайте интенсивно использовать сеть, в которой важна производительность.

И мы можем выбрать WSL, когда:

  • Мы хотим запустить основные команды Linux.
  • Мы хотим тратить мало памяти и мало ресурсов ПК.
  • Нам нужна эффективность хранения.
  • Мы не хотим / можем / не знаем, как использовать виртуальные машины.
  • Нам нужен быстрый доступ к файловой системе и непосредственное взаимодействие с файловой системой Windows.

Настройка через GPO

Если терминальных серверов много или необходимо централизованно задать политику ограничения сессий, можно воспользоваться групповыми политиками Active Directory.

Заходим в консоль управления политиками — создаем политику с любым понятным названием — переходим в настройку созданной политики.

В зависимости от необходимости применять политику к пользователям и/или компьютерам, используем следующие ветки для настройки:

  • Конфигурация компьютера\Политики\Административные шаблоны\Компоненты Windows\Службы удаленных рабочих столов\Узел сеансов удаленных рабочих столов\Ограничение сеансов по времени (Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Session Time Limits)
  • Конфигурация пользователя\Политики\Административные шаблоны\Компоненты Windows\Службы удаленных рабочих столов\Узел сеансов удаленных рабочих столов\Ограничение сеансов по времени (User Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Session Time Limits)

* если для пользователей и компьютеров используются отдельные организационные юниты, необходимо создавать политику в соответствующей ветке.

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

Параметр Описание Значения
Завершать сеанс при достижении ограничения по времени (End session when time limits are reached) Задает глобальную настройку, которая разрешает или запрещает лимиты, в принципе. Включено — включает режим ограничения сессий (для нашей цели выбираем это значение). Отключено — выключает и запрещает лимиты. Не задано — выключает для политик, но разрешает локальные настройки на сервере.
Задать ограничение по времени для активных, но бездействующих сеансов служб удаленных рабочих столов (Set time limit for active but idle Terminal Services sessions) Если пользователь завершил работу с сервером, но не завершил сеанс, можно установить ограничение сессии этим параметром. Таким образом, пользователи, которые не завершают сеанс будут автоматически выкинуты из сессии. Включено — активируем лимит для бездействующих сеансов (выставляем ее). И в выпадающем списке указываем время бездействия, например 3 часа. Отключено — отключает лимит на бездействующие сессии. Не задано — настройка задается локально на сервере.
Задать ограничение по времени для отключенных сеансов (Set time limit for disconnected sessions) Если пользователь отключил сеанс, но не вышел из системы, можно автоматически его разлогинить с помощью этой опции. Включено — активируем лимит для завершенных сеансов (выставляем ее). И в выпадающем списке указываем время, например 3 часа. Отключено — отключает лимит на завершенные сессии. Не задано — настройка задается локально на сервере.
Задать ограничение по времени для активных сеансов служб удаленных рабочих столов (Set time limit for active Remote Desktop Services sessions) Независимо от того, работает пользователь в системе или нет, сервер завершит его сеанс, отправив уведомление за 2 минуты до отключения. Включено — активируем лимит для активных сеансов. В выпадающем списке необходимо указать время. Данную опцию лучше не применять. С практической точки зрения опция создаст много неудобств. Отключено — отключает лимит на завершенные активные сессии. Не задано — настройка задается локально на сервере.

Для применения настроек ждем или выполняем команду на сервере:

gpupdate /force

Проверяем, применились ли политики:

gpresult /r

Использование фильтров

Если нам необходимо применить ограничения через политики только для определенных серверов/пользователей, применяем фильтры безопасности.

Для этого создаем группу в Active Directory и добавляем туда нужные серверы (или пользователей).

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

а) команда для проверки компьютера:

gpresult /r /scope:computer

б) для пользователя:

gpresult /r /scope:user

Если в созданной группе компьютера/пользователя нет, то:

а) для пользователя выходим из сеанса сервера и подключаемся по новой.

б) на сервере выполняем команды:

klist -lh 0 -li 0x3e7 purge

gpupdate /force

Если в нашей среде Active Directory несколько сайтов, то наши настройки могут появиться на нужном контроллере через несколько минут (как правило, до 15). Если нет возможности ждать, можно форсировать процесс репликации с помощью инструмента «Active Directory — сайты и службы».

Далее при создании групповой политики удаляем группу «Прошедние проверку», которая присутствует по умолчанию:

И добавляем созданную ранее, например:

После настраиваем политику по инструкции выше.

Чтобы проверить, что настройка применилась только у нужным нам объектам, на сервере выполняем команду:

gpresult /r

Файлы правил

Правила можно не только задавать через командную строку, но и прописывать в файле etc/audit/ Начинается этот файл с так называемых метаправил, в которых задаются общие настройки журналирования:

# удаляем все ранее созданные правила -D # задаём количество буферов, в которых будут храниться сообщения -b 320 # указываем, что делать в критической ситуации (например, при переполнении буферов): 0 — ничего не делать; 1 — отправлять сообщение в dmesg, 2 — отправлять ядро в панику -f 1

Далее следуют пользовательские правила. Их синтаксис предельно прост: достаточно просто перечислить соответствующие опции команды auditctl. Рассмотрим пример типового конфигурационного файла:

# отслеживать системные вызовы unlink () и rmdir() -a exit,always -S unlink -S rmdir # отслеживать системные вызовы open () от пользователя с UID 1001 -a exit,always -S open -F loginuid=1001 # отслеживать доступ к файлам паролей и групп и попытки их изменения: -w /etc/group -p wa -w /etc/passwd -p wa -w /etc/shadow -p wa -w /etc/sudoers -p wa # отслеживать доступ к следующей директории: -w /etc/my_directory -p r # закрыть доступ к конфигурационному файлу для предотвращения изменений -e 2

Изменения конфигурации вступят в силу после перезапуска демона auditd:

$ sudo service auditd restart

Заключение

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

У каждого пользователя Linux есть свой список must have команд. Наверняка и вам есть чем дополнить данный обзор? Делитесь своими любимыми командами Linux в комментариях!

Хотите, чтобы операционка работала как швейцарские часы? Надёжная и мощная платформа для развёртывания любых дистрибутивов Linux — VDS от Eternalhost!

Оцените материал: [Всего голосов: 8 Средний: 4.5/5]