- Вопрос или проблема
- Метод 1 – wsl --manage --set-default-user (в настоящее время предварительная версия)
- Метод 2 – /etc/wsl.conf
- Метод 3 – Ключ реестра
- Метод 4 – LxRunOffline
- Полу-метод 5 – Выбор пользователя во время выполнения через wsl аргумент командной строки
- Для читателей, которым необходимо создать нового пользователя
- Получить id пользователя по умолчанию для дистрибутива
- Установить id пользователя по умолчанию для дистрибутива
- Ответ или решение
- Шаги для установки пользователя по умолчанию в WSL
- Заключение
Вопрос или проблема
Я клонировал дистрибутив WSL с помощью wsl --export
и wsl --import
, но теперь, запуская wsl newdistro
, я всегда вхожу как root. Я понимаю, что команда lxrun
устарела и хочу избежать её использования. Документация рекомендует использовать distroname.exe config
, но это не работает, так как этого исполняемого файла не существует.
Существует несколько возможных методов изменения/установки пользователя по умолчанию в импортированном экземпляре WSL. Хотя два метода, упомянутые в других ответах, всё ещё работают, сейчас есть два “официальных” способа.
Метод 1 – wsl --manage --set-default-user
(в настоящее время предварительная версия)
По состоянию на ноябрь 2024 года у Microsoft есть предварительная версия WSL (2.4.4.0) с встроенным флагом для установки пользователя по умолчанию. Если необходимо, вы можете (при условии, что вы используете релиз последних нескольких лет) обновить с помощью:
wsl --update --pre-release
А затем:
wsl --manage <дистрибутив> --set-default-user <имя_пользователя>
Это запрашивает идентификатор пользователя (через usr/bin/id
и, возможно, другими методами) в дистрибутиве и затем устанавливает полученный UID в реестре, как в Методе #3 ниже. Это требует, чтобы имя пользователя/id уже существовало. См. раздел “Для читателей, которым необходимо создать нового пользователя” ниже, если это необходимо.
Метод 2 – /etc/wsl.conf
Текущий рекомендуемый Microsoft способ установки имени пользователя в экземпляре — это создать /etc/wsl.conf
в экземпляре с следующими настройками:
[user]
default=username
Измените, конечно же, username на ваше имя пользователя по умолчанию.
Выйдите из вашего дистрибутива/экземпляра, затем выполните wsl --terminate <имя_дистрибутива>
из PowerShell или CMD. Когда вы перезапустите, пользователь по умолчанию должен быть установлен.
Это безопаснее и менее подвержено ошибкам, чем методы на основе реестра.
Метод 3 – Ключ реестра
Установка ключа реестра согласно @harrymc.
Метод 4 – LxRunOffline
Использование LxRunOffline для установки записи в реестре, как описано в @Jaime. В конечном итоге это имеет тот же эффект, что и Метод 3 выше.
Полу-метод 5 – Выбор пользователя во время выполнения через wsl
аргумент командной строки
Имя пользователя можно выбрать при запуске любого экземпляра WSL, используя:
wsl -u имя_пользователя
или wsl -d имя_дистрибутива -u имя_пользователя
, и т.д.
Например, wsl -d Ubuntu -u root
.
Примечание: Этот вопрос касался конкретно установки имени пользователя по умолчанию в импортированном экземпляре. Однако для полноты картины, вы также можете установить имя пользователя по умолчанию для дистрибутива, установленного из Магазина (или wsl --install
) с помощью:
<дистрибутив>.exe config --default-user <имя_пользователя>
Например, если вы установили “Ubuntu 20.04” из Магазина, то вы бы использовали:
ubuntu2004.exe config --default-user <имя_пользователя>
Здесь .exe
является “псевдонимом выполнения приложений” в Windows. Вы можете проверить имя, перейдя в “Управление псевдонимами выполнения приложений” в настройках системы Windows.
Для читателей, которым необходимо создать нового пользователя
@ndemou в комментариях в прошлом году упомянул хорошую мысль, которую я, оглядываясь назад, неправильно проигнорировал. Два других пользователя теперь упомянули в комментариях, что информация @ndemou была полезной. Мои запоздалые извинения! Вот дополнительная информация на основе совета @ndemou …
Некоторые пользователи, которые найдут этот ответ, могут запускаться как root не потому, что они --import
дистрибуцию, а возможно потому, что пользователь по умолчанию никогда не был создан во время установки. Это может произойти, если установка дистрибутива была прервана преждевременно, и вероятно по другим причинам тоже.
Под управлением Ubuntu, стандартным дистрибутивом для WSL, вы можете создать своего пользователя, начав с:
wsl ~ -u root
Если необходимо, добавьте опцию -d <дистрибутив>
.
Затем выполните:
NEWUSER=<ваше_имя_пользователя>
useradd --create-home --shell /usr/bin/bash --user-group --groups adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,netdev --password $(read -sp Password: pw ; echo $pw | openssl passwd -1 -stdin) $NEWUSER
Затем установите пользователя в качестве пользователя по умолчанию, используя /etc/wsl.conf
, как упоминалось выше.
Если вы уже создали пользователя или используете другой дистрибутив, как указывает @ndemou, убедитесь, что вы также добавили пользователя либо в группу, которая находится в sudoers
, либо напрямую в sudoers
через visudo
. См. ответы на этот вопрос для получения дополнительных сведений.
Нормальный синтаксис команды, например:
ubuntu config --default-user новое_имя_пользователя
Однако это не работает для импортированного дистрибутива, который запускается следующей командой:
wsl --distribution <НазваниеДистрибутива>
(Правка: Сообщалось, что вышеизложенное теперь также работает для импортированных дистрибутивов.)
Попробуйте этот не задокументированный метод:
- Используйте
regedit
и перейдите к ключу:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss
- Просмотрьте его подпункты для дистрибутива, который имеет правильное имя в элементе
DistributionName
- Создайте или измените элемент DWORD с именем
DefaultUid
и установите его значение на идентификатор пользователя (uid) вашего пользователя по умолчанию. Здесь пользователь root имеет id0
, в то время как первый идентификатор пользователя равен 1000 (0x3e8
).
Если это не работает для вашей настройки, вам нужно будет запустить как:
wsl --distribution ubuntu -u имя_пользователя
Для получения дополнительной информации см. :
Проверьте uid пользователя, которого вы хотите установить по умолчанию в вашей Linux консоли с помощью id
:
имя_пользователя@хост:~$ id
uid=1000(имя_пользователя) gid=1000(имя_пользователя) groups=1000(имя_пользователя),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),117(netdev),1001(docker)
имя_пользователя@хост:~$
Проверьте название дистрибутива в Powershell с помощью wsl -l -v
:
PS C:\WINDOWS\system32> wsl -l -v
NAME STATE VERSION
* ubuntu-20.04 Running 2
docker-desktop-data Running 2
docker-desktop Running 2
PS C:\WINDOWS\system32>
Отредактируйте реестр в Powershell:
Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\*\ DistributionName | Where-Object -Property DistributionName -eq ubuntu-20.04 | Set-ItemProperty -Name DefaultUid -Value 1000
Теперь должно быть хорошо.
Если вы устанавливаете некоторые пользовательские дистрибутивы в WSL, у вас не будет команды “distroname.exe” для изменения конфигурации. Вы можете использовать LxRunOffline для изменения пользователя по умолчанию. Этот инструментарий можно установить в Windows, используя choco install lxrunoffline
.
Получить id пользователя по умолчанию для дистрибутива
LxRunOffline позволяет получить и установить идентификатор пользователя по умолчанию (uid
) для любых установленных дистрибутивов. Например, если у вас есть дистрибутив с именем newdistro
, вы можете проверить пользователя по умолчанию, используя gu
(получить пользователя по умолчанию) и -n
с именем дистрибутива:
lxrunoffline gu -n newdistro
Команда возвращает число – идентификатор пользователя по умолчанию:
- пользователь
root
имеет идентификатор0
- пользователь по умолчанию, созданный во время установки, имеет идентификатор
1000
.
Установить id пользователя по умолчанию для дистрибутива
Если вы хотите установить root
в качестве пользователя по умолчанию, вы можете сделать это, используя su
(установить пользователя по умолчанию) с -n
и именем дистрибутива, и -v
с идентификатором пользователя, т.е. 0
для root
.
lxrunoffline su -n newdistro -v 0
Ни один из ответов не сработал для меня в Windows 11 с импортированным дистрибутивом Ubuntu. Скорее всего, это связано с тем, что мой пользователь является доменным пользователем, а не локальным.
Что сработало:
Если вы используете Windows Terminal, вы можете настроить профиль для вашего дистрибутива.
В настройках Профили для Windows Terminal выберите профиль вашего дистрибутива, затем нажмите на вкладку Общее и под Командной строкой
вы можете использовать один из ранее рекомендованных вариантов для команды wsl
.
Например, если вы назвали свой профиль Ubuntu
, а ваше имя пользователя bob
, то вы установите Командная строка
на wsl.exe -d Ubuntu -u bob
Пока вы на этом, вы можете настроить Начальную директорию
, то есть ту, которая открывается по умолчанию при открытии терминала для вашего дистрибутива с:
\\wsl$\Distro\home\имя_пользователя
Используя предыдущий пример, для дистрибутива с именем Ubuntu
и именем пользователя bob
, вы установите Начальную директорию
на:
\\wsl$\Ubuntu\home\bob
Обычно я переходил в терминал пользователя root и редактировал файл .bashrc
vim .bashrc
Добавьте эту строку в конец
su - $name
Для справки, если вы установили дистрибутив, отличный от Ubuntu, в WSL, например OracleLinux, то команда будет:
OracleLinux91.exe config --default-user root
Ответ или решение
Установка пользователя по умолчанию для вручную установленного дистрибутива WSL может сразу показаться сложной задачей, особенно если вы импортировали дистрибутив и всегда входите в систему как root. В этой статье мы рассмотрим шаги, которые помогут вам установить пользователя по умолчанию для дистрибутива WSL, используя актуальные и рекомендуемые методы.
Шаги для установки пользователя по умолчанию в WSL
-
Убедитесь, что пользователь создан: Прежде чем изменять конфигурацию дистрибутива, убедитесь, что файл пользователя, которого вы хотите назначить по умолчанию, уже существует. Для этого откройте вашу WSL-распределение (например, Ubuntu) и введите команду:
wsl ~ -u root
Внутри командной строки выполните:
id
Запомните
uid
(обычно 1000 для первого созданного пользователя). -
Метод 1: Использование файла
/etc/wsl.conf
- В вашем дистрибутиве создайте файл
/etc/wsl.conf
(если он не существует) и добавьте следующую конфигурацию:[user] default=username
Замените
username
на имя вашего пользователя. - После изменения файла выполните команду для завершения работы WSL:
wsl --terminate <имя_дистрибутива>
- Теперь при следующем запуске WSL ваш пользователь должен быть установлен как по умолчанию.
- В вашем дистрибутиве создайте файл
-
Метод 2: Настройка с помощью реестра
Если вы используете этот метод, выполняйте его строго в том порядке, который описан.- Запустите
regedit
и перейдите по пути:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss
- Найдите вашу дистрибуцию по
DistributionName
. - Создайте или измените элемент DWORD с именем
DefaultUid
и установите его значение равнымuid
вашего пользователя (1000 для стандартного первого пользователя).
- Запустите
-
Метод 3: Использование предрелизной версии WSL
Как упоминалось, если у вас установлена предрелизная версия WSL, вы можете воспользоваться командой:wsl --manage <дистрибутив> --set-default-user <username>
Убедитесь, что ваш дистрибутив обновлен до последней версии с помощью команды:
wsl --update --pre-release
-
Метод 4: Использование LxRunOffline
Если данные методы не сработали, можно рассмотреть сторонние инструменты, такие как LxRunOffline. Установите LxRunOffline через Chocolatey:choco install lxrunoffline
С помощью этой утилиты вы можете настроить пользователя по умолчанию с помощью команд, подобных следующим:
lxrunoffline su -n <имя_дистрибутива> -v 1000
-
Метод 5: Во время запуска WSL
Вы также можете указать пользователя при старте командной строки с помощью:wsl -u <username>
Это временное решение, но оно может быть полезным в некоторых сценариях.
Заключение
Теперь, когда вы знакомы с несколькими методами настройки пользователя по умолчанию в WSL, вы можете выбрать тот, который вам больше всего подходит. Рекомендуется использовать метод конфигурации /etc/wsl.conf
, так как он наиболее безопасен и прост в применении. При использовании реестра или других утилит будьте осторожны, чтобы избежать нежелательных изменений в системе. Успехов в работе с вашим дистрибутивом WSL!