Вход в Windows 10 через OpenSSH Server как обычный пользователь создает каталог с группой Администраторы в качестве владельца.

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

У меня установлен сервер OpenSSH на Windows 10, и я добавил мой публичный ключ в файл: C:\Users\foo\.ssh\authorized_keys.

Когда я вхожу в систему, используя учетную запись Windows по SSH, и создаю новый каталог, владельцем оказывается BUILTIN\Administrators, а не пользователь, под которым я подключаюсь:

$ ssh foo@win10host

Microsoft Windows [Version 10.0.17763.1339]
(c) 2018 Microsoft Corporation. Все права защищены.

foo@WIN10HOST C:\Users\foo>mkdir test

foo@WIN10HOST C:\Users\foo>dir /q
 Volume in drive C has no label.
 Volume Serial Number is 6334-07A6

 Directory of C:\Users\foo

07/21/2020  11:03 AM    <DIR>          NT AUTHORITY\SYSTEM    .
07/21/2020  11:03 AM    <DIR>          NT AUTHORITY\SYSTEM    ..
06/03/2020  01:05 PM    <DIR>          WIN10HOST\foo               .ssh
07/15/2020  07:22 AM    <DIR>          WIN10HOST\foo               3D Objects
07/15/2020  07:22 AM    <DIR>          WIN10HOST\foo               Contacts
07/21/2020  10:38 AM    <DIR>          WIN10HOST\foo               Desktop
07/15/2020  07:22 AM    <DIR>          WIN10HOST\foo               Documents
07/15/2020  07:22 AM    <DIR>          WIN10HOST\foo               Downloads
07/15/2020  07:22 AM    <DIR>          WIN10HOST\foo               Favorites
07/15/2020  07:22 AM    <DIR>          WIN10HOST\foo               Links
07/15/2020  07:22 AM    <DIR>          WIN10HOST\foo               Music
07/15/2020  07:22 AM    <DIR>          WIN10HOST\foo               Pictures
07/15/2020  07:22 AM    <DIR>          WIN10HOST\foo               Saved Games
07/15/2020  07:22 AM    <DIR>          WIN10HOST\foo               Searches
07/21/2020  11:03 AM    <DIR>          BUILTIN\Administrators      test

whoami показывает, что я пользователь foo во время SSH-сессии…

foo@WIN10HOST C:\Users\foo>whoami
win10host\foo

Почему каталог test создан с владельцем BUILTIN\Administrators вместо WIN10HOST\foo?

Как можно настроить OpenSSH, чтобы пользователь foo был владельцем?

Спасибо!


В конфигурационном файле SSHD в C:\ProgramData\ssh\sshd_config следующие строки закомментированы:

#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

Вы можете использовать busybox pdrop для понижения повышенных привилегий.

Подробнее: https://github.com/PowerShell/Win32-OpenSSH/issues/1652#issuecomment-1571924424

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

Ваш вопрос о том, почему директория test, созданная пользователем через OpenSSH-сервер на Windows 10, имеет владельца BUILTIN\Administrators, а не WIN10HOST\foo, является интересной задачей, связанной с управлением правами пользователей и особенностями работы OpenSSH на Windows. Давайте рассмотрим теоретическую, практическую и прикладную сторону этого вопроса.

Теория

На Windows 10 конфигурация прав доступа и управление пользователями может работать иначе, чем на других операционных системах, таких как Unix или Linux. Одной из возможных причин, почему директория test создаётся с владельцем BUILTIN\Administrators, может быть то, что процесс, который инициирует создание директорий через OpenSSH, работает с повышенными привилегиями (т.е. от имени администратора).

Эта ситуация может возникнуть по разным причинам. Возможно, OpenSSH сервер был настроен так, что процессы, которые он инициирует, работают с правами администратора, либо ваш пользователь каким-то образом имеет права администратора в рамках SSH-сессии. Это может быть связано с неправильной конфигурацией или особенностями текущих настроек Windows.

Пример

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

Как вы уже упомянули, команды, связанные с группой администраторов, в C:\ProgramData\ssh\sshd_config закомментированы, что обычно должно предотвращать работу процессов от имени администратора, если пользователь не состоит в группе администраторов. Тем не менее, для полной уверенности стоит рассмотреть каждую строку конфигурации и убедиться, что там нет других настроек, которые могут необычным образом влиять на разрешение прав.

Применение

Для решения вашей проблемы мы можем предложить несколько шагов:

  1. Проверьте конфигурацию SSHD: Убедитесь, что в файле C:\ProgramData\ssh\sshd_config нет настроек, которые могли бы вызвать подобное поведение. Также, попробуйте явно указать AuthorizedKeysFile для записей пользователей, чтобы не было путаницы со старыми конфигурациями или устаревшими ключами доступа.

  2. Используйте busybox pdrop: Как уже отмечалось, это утилита может помочь в сбросе повышенных привилегий во время SSH-сессии. Это полезно, если текущий процесс вызывает команды с неправильными привилегиями.

  3. Проверьте принадлежность к группам: Запустите на Windows PowerShell или командную строку с правами администратора и проверьте, к каким группам относится пользователь foo. Если он принадлежит к группе администраторов, это может подтверждать проблему.

  4. Обновите OpenSSH: Если это возможно, обновите OpenSSH до последней версии, так как в новых релизах могут быть решены проблемы с управлением правами пользователей.

  5. Регистрация событий: Включите более детальную регистрацию событий для OpenSSH, чтобы отслеживать, как и почему происходят подобные изменения прав.

В результате выполнения этих шагов, вы должны увидеть, что создаваемая вами директория будет иметь владельцем пользователя foo, а не BUILTIN\Administrators. Конфигурация прав доступа и правильное использование утилитами, поддерживающих управление правами, должны дать вам понимание, почему подобные проблемы возникли и как их можно избежать в будущем.

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

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