Вопрос или проблема
У меня установлен сервер 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
закомментированы, что обычно должно предотвращать работу процессов от имени администратора, если пользователь не состоит в группе администраторов. Тем не менее, для полной уверенности стоит рассмотреть каждую строку конфигурации и убедиться, что там нет других настроек, которые могут необычным образом влиять на разрешение прав.
Применение
Для решения вашей проблемы мы можем предложить несколько шагов:
-
Проверьте конфигурацию SSHD: Убедитесь, что в файле
C:\ProgramData\ssh\sshd_config
нет настроек, которые могли бы вызвать подобное поведение. Также, попробуйте явно указатьAuthorizedKeysFile
для записей пользователей, чтобы не было путаницы со старыми конфигурациями или устаревшими ключами доступа. -
Используйте
busybox pdrop
: Как уже отмечалось, это утилита может помочь в сбросе повышенных привилегий во время SSH-сессии. Это полезно, если текущий процесс вызывает команды с неправильными привилегиями. -
Проверьте принадлежность к группам: Запустите на Windows PowerShell или командную строку с правами администратора и проверьте, к каким группам относится пользователь
foo
. Если он принадлежит к группе администраторов, это может подтверждать проблему. -
Обновите OpenSSH: Если это возможно, обновите OpenSSH до последней версии, так как в новых релизах могут быть решены проблемы с управлением правами пользователей.
-
Регистрация событий: Включите более детальную регистрацию событий для OpenSSH, чтобы отслеживать, как и почему происходят подобные изменения прав.
В результате выполнения этих шагов, вы должны увидеть, что создаваемая вами директория будет иметь владельцем пользователя foo
, а не BUILTIN\Administrators
. Конфигурация прав доступа и правильное использование утилитами, поддерживающих управление правами, должны дать вам понимание, почему подобные проблемы возникли и как их можно избежать в будущем.