我已将 Ubuntu 16.04 升级到 Ubuntu 18.04。我暂时不打算进一步升级到 Ubuntu 20.xx。除了在桌面环境中切换用户外,一切似乎都进展顺利。我的桌面环境过去是 Unity,现在也是。
这台电脑有两个用户。预期的行为是,在桌面环境中,我可以切换到任何其他配置文件,而无需退出当前配置文件,就像在多用户系统中一样。事实上,我总是必须从一个配置文件退出才能登录另一个配置文件。
无论哪个配置文件是第一个,下面的情况总是会发生。
1 升级后立即
1.1 问题
升级后的情况如下:
- 我分别登录两个桌面配置文件:PASS。
- 当我进入任一配置文件并点击菜单访问另一个配置文件时,没有什么发生:失败。
所以我留在原地。我需要完全退出才能访问其他个人资料。
1.2 部分修复
我按照建议重新安装桌面环境
sudo apt remove lightdm
sudo apt install lightdm
sudo reboot
这只能部分解决问题。
- 我可以分别登录任一配置文件:PASS、OLD。
- 如果我点击个人资料内的菜单来访问任何其他个人资料,某物发生:我被呈现登录屏幕输入密码:PASS,NEW。
- 输入密码的登录屏幕的分辨率相当粗糙:FAIL、NEW。
- 在我输入其他配置文件的密码后,它会挂起几秒钟,然后才循环回到登录屏幕。
- 因此,我无法访问其他用户配置文件:FAIL、NEW。
- 不过,我可以重新登录以前的配置文件。
其他行动如
sudo apt install ubuntu-unity-desktop
或者
sudo dpkg-reconfigure lightdm
无效或多余。事实上,无论桌面环境是 Unity 还是 Ubuntu,都会发生同样的问题。
2 现状
2.1 从终端进行测试
我可以同时登录两个账户从终端进入配置文件 A 的桌面环境后,我转到 tty 终端并登录配置文件 B。
首次登录时,在提示之前系统消息是
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]
两项测试均
keyctl show
通过ls
:所以我可以看到会话密钥环(上面的未找到消息是无稽之谈)和目录内容(上面的消息无关紧要)。我退出并再次登录。在提示符之前还有另一条消息
Signature not found in user keyring Perhaps try the interactive 'ecryptfs-mount-private'
测试
keyctl show
失败(上面的未找到消息是一致的)并ls
通过(上面的消息仍然不重要)。即使我尝试ecryptfs-mount-private
加载密钥,用户切换问题仍然存在,并且这些消息在下次重新启动时再次出现。有时这些消息根本不会显示(因此,在终端内一切顺利),但在桌面环境中切换帐户的问题仍然存在。
在终端中,我可以看到并浏览主目录的内容。在所有情况下,加密都不会造成阻塞。
2.2 从桌面环境
- 如果我退出配置文件 A 的桌面环境并重新开始,则带有密码输入的登录屏幕会清晰呈现(没有粗糙的分辨率)。我可以登录配置文件 B。
- 当我尝试从配置文件 A 切换到配置文件 B 并且未注销而离开配置文件 A 的桌面环境时,我始终可以通过输入用户密码返回配置文件 A。也就是说:它以我期望的方式运行,以激活配置文件 B。
- 如果我创建具有管理员权限的新用户 C(@matigo 的建议),则会发生以下情况:
- 我无法从 A 和 B 精确地切换到 C,就像我无法在 A 和 B 之间切换一样;
- 我也无法从登录屏幕登录新创建的 C:欢迎屏幕返回到其自身。无论我是否为用户 C 设置了密码,后者都会发生,因此这不是人为错误。
2.3 其他岗位
我查看了其他帖子,它们涉及 Ubuntu 的旧版本
- 无法在 13.10 中切换用户
- Ubuntu 无法切换用户
- 升级到 14.04 后切换用户不起作用
- 从 16.04 升级到 18.04 后,无法在用户会话密钥环中找到挂载选项中指定的 sig 的有效密钥
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
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 ...
我找到了这些资源
- 2017年:Ubuntu 16.04 启动缓慢...pam_kwallet5.so 问题。
- 2018年:ubuntu 18.04 中是否需要/必要 libpam-kwallet?
- https://bugs.launchpad.net/ubuntu/+source/lightdm/+bug/1309535
库pam_kwallet.so
和pam_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
我没有找到太多关于这个的信息无法将 walletKey 写入 walletPipe我可以利用:
- 源代码:https://github.com/KDE/kwallet-pam/blob/master/pam_kwallet.c
- 投诉:https://forums.gentoo.org/viewtopic-p-8220820.html
- 错误报告: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
之后我检查:
dpkg -S pam_ecryptfs
ecryptfs-utils: /usr/share/man/man8/pam_ecryptfs.8.gz
ecryptfs-utils: /lib/security/pam_ecryptfs.so
这将焦点从lightdm
和转移kwallet
到compiz
和ecryptfs
。这些资源适用:
- https://bugs.launchpad.net/ecryptfs/+bug/1085706(已确认且未分配的漏洞,首次报告于 2012 年,最后一次报告于 2021 年)
4. 问题
因此,问题似乎纯粹是管理从任何第一个当前配置文件到桌面环境内的任何其他配置文件的切换。
基本上,我总是必须退出一个配置文件才能登录另一个配置文件。因此不存在多用户行为。
有什么建议可以解决这个问题吗?
答案1
gnome-session
此行为可能与<-> desktop environment
<->有关windowmanager
使用
ctrl
++打开新 tty 测试新帐户(C),使用给定的凭据登录并alt
F3
startx
检查错误日志
journalctl -p err -b
并可能发布在粘贴箱。
3. 通过 ie 检查是否缺少某些内容dpkg -l | grep '^ii' | grep gnome-s
。
通过以下方式检查当前环境(看这里)
- 窗口管理器:
wmctrl -m
- 会议:
echo $DESKTOP_SESSION
- 桌面环境:
echo $XDG_CURRENT_DESKTOP
对我来说
GNOME-Shell
ubuntu-xorg
ubuntu-GNOME
,即在 dist-upgrade 之后通过 install 或 reinstall 安装sudo apt install gnome-session gnome-shell ubuntu-desktop-minimal
- 窗口管理器:
解决
ecryptfs
问题,请参阅这个答案删除选项
compiz
,请参阅这里(应该以相同的方式工作18.04
)完成这些步骤后,也许可以做一个
sudo apt full-upgrade