почему у пользователя администратора на msys2_sshd возникла ошибка доступа, когда он пытался установить wsl?

Вопрос или проблема

Я настроил ssh-сервер на Windows 11, чтобы иметь возможность удаленно использовать его, пока я отсутствую за компьютером. Теперь я попытался установить wsl через ssh, следующий вывод командной строки и оболочки msys2 выполнен из ssh-сессии:

C:\msys64\home\user\gsudo.portable\x64>C:\Windows\System32\whoami.exe /all

ИНФОРМАЦИЯ О ПОЛЬЗОВАТЕЛЕ
----------------

Имя пользователя SID
========= ==============================================
ryuu\user S-1-5-21-3433435007-3109692699-4129412338-1001


ИНФОРМАЦИЯ О ГРУППАХ
-----------------

Имя группы                                                Тип                 SID          Атрибуты
========================================================= ================ ============ ===============================================================
Все                                                      Общепризнанная группа S-1-1-0      Обязательная группа, Включена по умолчанию, Включенная группа
NT AUTHORITY\Локальная учетная запись и участник группы Администраторов Общепризнанная группа S-1-5-114 Обязательная группа, Включена по умолчанию, Включенная группа
BUILTIN\Администраторы                                   Псевдоним           S-1-5-32-544 Обязательная группа, Включена по умолчанию, Включенная группа, Владелец группы
BUILTIN\Пользователи                                     Псевдоним           S-1-5-32-545 Обязательная группа, Включена по умолчанию, Включенная группа
NT AUTHORITY\ИНТЕРАКТИВНЫЙ                               Общепризнанная группа S-1-5-4      Обязательная группа, Включена по умолчанию, Включенная группа
ЛОГИН КОНСОЛИ                                         Общепризнанная группа S-1-2-1      Обязательная группа, Включена по умолчанию, Включенная группа
NT AUTHORITY\Аутентифицированные пользователи           Общепризнанная группа S-1-5-11     Обязательная группа, Включена по умолчанию, Включенная группа
NT AUTHORITY\Эта организация                           Общепризнанная группа S-1-5-15     Обязательная группа, Включена по умолчанию, Включенная группа
NT AUTHORITY\Локальная учетная запись                   Общепризнанная группа S-1-5-113    Обязательная группа, Включена по умолчанию, Включенная группа
NT AUTHORITY\NTLM аутентификация                         Общепризнанная группа S-1-5-64-10  Обязательная группа, Включена по умолчанию, Включенная группа
Обязательная метка\Высокий уровень обязательности        Метка              S-1-16-12288


ИНФОРМАЦИЯ О ПРЕИМУЩЕСТВАХ
----------------------

Имя полномочия                            Описание                                                 Статус
========================================= ================================================================== ========
SeIncreaseQuotaPrivilege                  Регулировать квоты памяти для процесса                   Отключено
SeSecurityPrivilege                       Управлять аудитом и журналом безопасности                Отключено
SeTakeOwnershipPrivilege                  Получить право собственности на файлы или другие объекты  Отключено
SeLoadDriverPrivilege                     Загружать и выгружать драйверы устройств                   Отключено
SeSystemProfilePrivilege                  Профилировать производительность системы                   Отключено
SeSystemtimePrivilege                     Изменять системное время                                   Отключено
SeProfileSingleProcessPrivilege           Профилировать единичный процесс                            Отключено
SeIncreaseBasePriorityPrivilege           Увеличивать приоритет планирования                         Отключено
SeCreatePagefilePrivilege                 Создать файл подкачки                                     Отключено
SeBackupPrivilege                         Резервное копирование файлов и директорий                 Включено
SeRestorePrivilege                        Восстановление файлов и директорий                        Включено
SeShutdownPrivilege                       Выключить систему                                         Отключено
SeDebugPrivilege                          Отладка программ                                          Включено
SeSystemEnvironmentPrivilege              Изменять значения окружения прошивки                       Отключено
SeChangeNotifyPrivilege                   Обойти проверку обхода                                    Включено
SeRemoteShutdownPrivilege                 Принудительное завершение работы с удаленной системы       Отключено
SeUndockPrivilege                         Удалить компьютер из док-станции                         Отключено
SeManageVolumePrivilege                   Выполнить задачи по обслуживанию томов                   Отключено
SeImpersonatePrivilege                    Выдавать права клиента после аутентификации              Включено
SeCreateGlobalPrivilege                   Создавать глобальные объекты                               Включено
SeIncreaseWorkingSetPrivilege             Увеличивать рабочий набор процесса                         Отключено
SeTimeZonePrivilege                       Изменить часовой пояс                                    Отключено
SeCreateSymbolicLinkPrivilege             Создать символические ссылки                               Отключено
SeDelegateSessionUserImpersonatePrivilege Получить токен имитации для другого пользователя в той же сессии Отключено
#  accesschk -accepteula -p sshd

Accesschk v6.15 - Отчет эффективных прав для объектов с защитой
Copyright (C) 2006-2022 Mark Russinovich
Sysinternals - www.sysinternals.com

[3284] sshd.exe
  RW NT AUTHORITY\SYSTEM
     NT AUTHORITY\Аутентифицированные пользователи
  RW BUILTIN\Администраторы
[6572] sshd-session.exe
  RW NT AUTHORITY\SYSTEM
     NT AUTHORITY\Аутентифицированные пользователи
  RW BUILTIN\Администраторы
[7004] sshd-session.exe
  RW NT AUTHORITY\SYSTEM
     NT AUTHORITY\Аутентифицированные пользователи
  RW BUILTIN\Администраторы
# /c/Windows/System32/whoami.exe
ryuu\user
# gsudo -s wsl --install
      6 [main] bash (10724) cygheap_user::init: NtSetInformationToken (TokenDefaultDacl), 0xC0000022
Установка: Подсистема Windows для Linux
Указанная сеансовая сессия не существует. Она может уже быть завершена.

Из вышеуказанного вывода видно, что sshd работает как администратор (хотя я не уверен), и терминал msys показывает # вместо $, что указывает на его выполнение от имени root/администратора. Тем не менее команда whoami показывает, что ssh-сессия работает под обычным пользователем. Есть ли способ обойти проблему с правами без UAC (так как невозможно взаимодействовать с ним в ssh-соединении)?

Я пробовал портативный gsudo, используя параметр -s, чтобы указать ему работать от имени локальной системной учетной записи, но, похоже, это не работает должным образом.

Ответ или решение

Проблема, с которой вы столкнулись, связана с недостаточными правами доступа при попытке установки WSL (Windows Subsystem for Linux) через SSH-соединение в среде MSYS2. Давайте детально разберем каждый аспект данной ситуации для выявления источника ошибки и возможных решений.

1. Понимание рабочей среды

Согласно вашему описанию, вы настроили SSH-сервер на Windows 11 и пытаетесь установить WSL, используя MSYS2 и gsudo. Вывод команды whoami /all подтверждает, что пользователь, через которого вы работаете, имеет привилегии администратора, так как он является членом группы "Administrators". Однако важно учесть, что наличие членства в группе администраторов не всегда гарантирует доступ к административным правам в среде, использующей UAC (User Account Control).

2. Проблемы с UAC

На Windows 11 UAC защищает систему от непрямых запросов на выполнение операций с повышенными привилегиями. При подключении по SSH с использованием sshd, среда может интерпретировать такие запросы как исходящие от обычного пользователя, даже если он часть группы администраторов. Это приводит к ошибке NtSetInformationToken (TokenDefaultDacl), 0xC0000022, указывающей на отсутствие необходимого правового контекста для выполнения операции.

3. Причины ошибки

  • Отсутствие прав на выполнение сессионированных процессов: При использовании SSH без интерактивного доступа к рабочему столу UAC не предоставляет возможности для повышения привилегий.
  • Неэффективное использование gsudo: Хотя gsudo должен запускать команды от имени локальной системы, в данном случае он может не предоставлять необходимых прав в условиях ssh.

4. Потенциальные решения

Использование Task Scheduler

Одним из обходных способов решения этой проблемы может быть использование Task Scheduler (Планировщик заданий):

  1. Создайте задачу в Планировщике, которая будет начинаться с повышенными привилегиями и запускает wsl --install.
  2. В SSH-сессии запустите задачу с помощью команды:
    schtasks /run /tn "Имя_Вашей_Задачи"

Временно отключение UAC

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

Использование другого клиента SSH

Другой способ заключается в использовании клиента SSH, который может поддерживать передачи привилегий более эффективно чем стандартный sshd. Например, Fluency (или другие клиенты) могут поддерживать прямое подключение к администратору с нужным контекстом.

Заключение

Суммируя все вышесказанное, проблема с установкой WSL через SSH в MSYS2 находится на сложном стыке привилегий Windows и системы UAC. Путем тщательного выбора подхода к выполнению административных задач, таких как использование Планировщика задач, можно обойти указанные ограничения. Обеспечение безопасности системы всегда должно оставаться приоритетом, поэтому придерживайтесь лучших практик и безопасных методов в процессе выполнения критически важных операций.

Оцените материал
Добавить комментарий

Капча загружается...