Ubuntu 18.04升级后无法在用户之间切换

Xav*_*uvw 5 ecryptfs login kwallet switch-user 18.04

我已将 Ubuntu 16.04 升级到 Ubuntu 18.04。我暂时不打算进一步升级到 Ubuntu 20.xx。除了从桌面环境内切换用户之外,一切看起来都很顺利。我的桌面环境过去和现在都是 Unity。

这台计算机中有两个用户。预期的行为是,在桌面环境中,我可以切换到任何其他配置文件,而无需退出当前配置文件,就像在多用户系统中一样。事实上,我总是必须从一个配置文件中注销才能登录另一个配置文件。

无论哪个配置文件在先,下面的内容总是会发生。


1 升级后立即

1.1 问题

升级后的情况是:

  1. 我分别登录两个桌面配置文件:PASS。
  2. 一旦我进入任一配置文件并单击菜单访问另一个配置文件,什么也不会发生:失败。

所以我留在原地。我需要完全注销才能访问其他配置文件。

1.2 部分修复

我按照建议重新安装桌面环境

sudo apt remove lightdm
sudo apt install lightdm
sudo reboot
Run Code Online (Sandbox Code Playgroud)

这仅部分解决了问题。

  1. 我可以分别登录任一配置文件:PASS、OLD。
  2. 如果我单击配置文件内的菜单来访问任何其他配置文件,则会发生一些情况:我会看到登录屏幕,其中输入密码:PASS,NEW。
  3. 输入密码的登录屏幕的分辨率相当粗糙:失败,新。
  4. 当我输入另一个配置文件的密码后,它会挂起几秒钟,然后再循环回到登录屏幕。
    1. 因此,我无法访问其他用户配置文件:失败,新。
    2. 但是,我可以重新登录到之前的个人资料。

其他动作如

sudo apt install ubuntu-unity-desktop
Run Code Online (Sandbox Code Playgroud)

或者

sudo dpkg-reconfigure lightdm
Run Code Online (Sandbox Code Playgroud)

没有效果或者是多余的。确实,无论桌面环境是Unity还是Ubuntu,都会出现同样的问题。


2 现状

2.1 终端测试

我可以从终端登录这两个配置文件。进入配置文件 A 的桌面环境后,我移动到 tty 终端并登录配置文件 B。

  1. 第一次登录时,在提示之前系统消息是

         Could not find key with description: [SIGNATURE]
         Could not find process_request_key_err in user session keyring for sig specified
         Error parsing option; rc = [-2]
    
    Run Code Online (Sandbox Code Playgroud)

    两个测试keyctl showls通过:所以我可以看到会话密钥环(上面的未找到消息是无意义的)和目录内容(上面的消息是无关紧要的)。

  2. 我退出并重新登录。在提示之前还有另一条消息

         Signature not found in user keyring
         Perhaps try the interactive 'ecryptfs-mount-private'
    
    Run Code Online (Sandbox Code Playgroud)

    测试keyctl show失败(上面的未找到消息是一致的)并ls通过(上面的消息仍然无关紧要)。即使我尝试ecryptfs-mount-private加载密钥,用户切换问题仍然存在,并且这些消息在下次重新启动时再次出现。

  3. 有时这些消息根本不显示(因此,在终端内一帆风顺),但在桌面环境中切换帐户的问题仍然存在。

在终端中,我可以查看并浏览主目录的内容。在所有情况下,都不会因加密而发生阻塞。

2.2 从桌面环境

  1. 如果我退出配置文件 A 的桌面环境并重新开始,则输入密码的登录屏幕会整齐地呈现(没有粗糙的分辨率)。我可以登录个人资料 B。
  2. 当我尝试从配置文件 A 切换到配置文件 B 并且在未注销的情况下离开配置文件 A 的桌面环境时,我始终可以通过键入用户密码返回配置文件 A。也就是说:它也按照我期望的方式来激活配置文件 B。
  3. 如果我创建一个具有管理员权限的新用户 C(@matigo 的建议),则会发生以下情况:
    1. 我无法从 A 和 B 切换到 C,就像我无法在 A 和 B 之间切换一样;
    2. 我也无法从登录屏幕登录新创建的 C:欢迎屏幕返回到自身。无论我是否为用户 C 设置了密码,后者都会发生,因此这不是人为错误。

2.3 其他帖子

我查看了这些其他帖子,它们引用了 Ubuntu 的旧版本


3. 错误分析journalctl

这是遵循lemrm 的建议。这是我的情况:

wmctrl -m
Name: Compiz
Class: N/A
PID: N/A
Window manager's "showing the desktop" mode: OFF

echo $DESKTOP_SESSION 
unity

echo $GDMSESSION
unity

echo $XDG_CURRENT_DESKTOP
Unity:Unity7:ubuntu
Run Code Online (Sandbox Code Playgroud)

3.1 无libpam-kwallet*

该命令journalctl -p err -b在 上返回以下有趣的行lightdm

dec 10 21:33:59 computer lightdm[3992]: PAM unable to dlopen(pam_kwallet.so): /lib/security/pam_kwalle
dec 10 21:33:59 computer lightdm[3992]: PAM adding faulty module: pam_kwallet.so
dec 10 21:33:59 computer lightdm[3992]: PAM unable to dlopen(pam_kwallet5.so): /lib/security/pam_kwall
dec 10 21:33:59 computer lightdm[3992]: PAM adding faulty module: pam_kwallet5.so
dec 10 21:33:59 computer lightdm[3992]: pam_unix(lightdm:auth): conversation failed
dec 10 21:33:59 computer lightdm[3992]: pam_unix(lightdm:auth): auth could not identify password for ...
Run Code Online (Sandbox Code Playgroud)

我找到了这些资源

pam_kwallet.sopam_kwallet5.so属于包

我的系统中缺少这些。我确实安装了它们。

有趣的区别是,当我通过菜单移至另一个配置文件时,我不会再次进入欢迎界面并选择配置文件,而是在当前配置文件的“重新输入”页面中(就好像我按下了Ctrl + L)。我仍然需要注销才能找到进入另一个配置文件的方法。我只能回到我所在的个人资料。

3.2 与libpam-kwallet*

journalctl -p err -b有关的行lightdm变为:

dec 10 22:16:23 computer lightdm[1766]: pam_kwallet(lightdm:session): pam_kwallet: Impossible to write walletKey to walletPipe
dec 10 22:16:23 computer lightdm[1767]: pam_kwallet5(lightdm:session): pam_kwallet5: Impossible to write walletKey to walletPipe
Run Code Online (Sandbox Code Playgroud)

我还没有找到太多可以利用的Impossible to write walletKey to walletPipe :

  1. 源代码:https ://github.com/KDE/kwallet-pam/blob/master/pam_kwallet.c
  2. 投诉: https: //forums.gentoo.org/viewtopic-p-8220820.html
  3. 错误报告:https://bugs.launchpad.net/lightdm/+bug/1781418

3.3pam_ecryptfs

在我尝试从菜单中更改用户后,按照 3.1,日志在 3.2 中的消息中又追加了一行

dec 10 23:28:11 computer compiz[2490]: pam_ecryptfs: seteuid error
Run Code Online (Sandbox Code Playgroud)

之后我检查:

dpkg -S pam_ecryptfs
ecryptfs-utils: /usr/share/man/man8/pam_ecryptfs.8.gz
ecryptfs-utils: /lib/security/pam_ecryptfs.so
Run Code Online (Sandbox Code Playgroud)

这将焦点从lightdm和转移kwalletcompizecryptfs。这些资源适用于:


4. 问题

因此,问题似乎纯粹是管理从任何第一个当前配置文件到桌面环境内任何其他配置文件的切换。

基本上,我总是必须从一个配置文件中注销才能登录另一个配置文件。所以没有多用户行为。

有什么建议来解决这个问题吗?

lem*_*mrm 1

gnome-session此行为可能与<-> desktop environment<->有关windowmanager

  1. ctrl通过+ alt+打开新的 tty 来测试新帐户 (C) F3,使用给定的凭据登录并startx

  2. 检查你的错误日志并journalctl -p err -b可能发布在pastebin

3.用ie检查是否少了东西dpkg -l | grep '^ii' | grep gnome-s

  1. 通过(参见此处)检查您当前的环境

    • 窗口管理器: wmctrl -m
    • 会议:echo $DESKTOP_SESSION
    • 桌面环境:echo $XDG_CURRENT_DESKTOP

    对我来说,它是 ie GNOME-Shell ubuntu-xorg ubuntu-GNOME,通过安装或重新安装进行 dist 升级后安装

    sudo apt install gnome-session gnome-shell ubuntu-desktop-minimal

  2. 解决ecryptfs问题,看这个答案

  3. 删除的选项compiz,请参阅此处(应该以相同的方式工作18.04

  4. 完成此步骤后,执行以下操作可能会有所帮助sudo apt full-upgrade


归档时间:

查看次数:

685 次

最近记录:

4 年,4 月 前