我在 WSL 上运行了一个 Ubuntu 发行版。每次加载时,它都会lraj22
默认打开我的用户。使用/etc/wsl.conf
文件,我设置
[user]
default=
它仍然会打开我的用户配置文件。如果我将其设置为root
,它会打开根配置文件,如果我将其设置为某个不存在的用户notarealuser
,它会出错并返回到我的配置文件。
如果可能的话,如何禁用 WSL 发行版(特别是 Ubuntu)上的自动登录功能?
注:供参考,问题如何为手动安装的 WSL 发行版设置默认用户?演示如何设置默认用户。我正在尝试取消设置默认用户,以便要求输入用户名/密码才能访问系统。
答案1
我不知道有这种方法 - 似乎不存在。您可以使用反馈中心向 Microsoft 报告问题。
作为一种非常弱的解决方法,您可以将默认用户设置为极其有限的来宾用户帐户。这将强制使用命令进行真正的登录su - username
,这将需要密码。
答案2
WSL 发行版始终会有一个“默认”用户。这是因为WSL 发行版是“容器”容器没有“登录”的概念,而是从父命名空间“进入”。Docker 的工作方式相同。
有几种可能的解决方法。从您的评论来看,您当前的情况存在以下问题:
... 不断切换用户
...su
不等同于在 Windows 上注销并登录...
... [使用su
],您可以退出并返回,并且命令将记录为调用用户
考虑到这一点,您可以:
wsl
在命令行上指定用户名使用以下命令启动 WSL:
wsl ~ -u <username>
这将以另一个用户身份进入 WSL 发行版。您甚至可以同时以不同的用户身份打开多个终端。
docker exec --user <username>
这与表格的工作方式类似(见这个答案)。退出以这种方式启动的 shell 之后,您实际上将退出分发本身(而不是返回到父用户)。
不推荐:
login
启动WSL时直接使用命令wsl -u root -e login
优点:运行所有正常登录活动,例如
/etc/profile.d
PAM 模块。缺点:由于登录需要经过 PAM,因此 WSL 本身设置的环境变量不可用。这包括:
WSL
PATH
提供的附加了 Windows 路径的 。因此,在运行 时login
,如果不指定其完整路径,您将无法访问code
、powershell.exe
和其他 Windows 命令。DISPLAY
用于在 WSLg 中运行 GUI 应用程序。WSL_xxx
变量WT_
来自 Windows 终端的信息和更多。
因此,某些 WSL 功能将会降级。