Вопрос или проблема
Я настроил 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 (Планировщик заданий):
- Создайте задачу в Планировщике, которая будет начинаться с повышенными привилегиями и запускает
wsl --install
. - В SSH-сессии запустите задачу с помощью команды:
schtasks /run /tn "Имя_Вашей_Задачи"
Временно отключение UAC
Если вы можете временно отключить UAC и у вас есть доступ к консоли, это также может помочь, но этот подход не рекомендуется из соображений безопасности.
Использование другого клиента SSH
Другой способ заключается в использовании клиента SSH, который может поддерживать передачи привилегий более эффективно чем стандартный sshd
. Например, Fluency (или другие клиенты) могут поддерживать прямое подключение к администратору с нужным контекстом.
Заключение
Суммируя все вышесказанное, проблема с установкой WSL через SSH в MSYS2 находится на сложном стыке привилегий Windows и системы UAC. Путем тщательного выбора подхода к выполнению административных задач, таких как использование Планировщика задач, можно обойти указанные ограничения. Обеспечение безопасности системы всегда должно оставаться приоритетом, поэтому придерживайтесь лучших практик и безопасных методов в процессе выполнения критически важных операций.