如何在 WSL 发行版中禁用自动登录?

如何在 WSL 发行版中禁用自动登录?

我在 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.dPAM 模块。

    缺点:由于登录需要经过 PAM,因此 WSL 本身设置的环境变量不可用。这包括:

    • WSLPATH提供的附加了 Windows 路径的 。因此,在运行 时login,如果不指定其完整路径,您将无法访问codepowershell.exe和其他 Windows 命令。

    • DISPLAY用于在 WSLg 中运行 GUI 应用程序。

    • WSL_xxx变量

    • WT_来自 Windows 终端的信息

    • 和更多。

    因此,某些 WSL 功能将会降级。

相关内容