apt-get update
几天前的运行之后apt-get upgrade
,用户组没有正确应用于当前登录的用户。
我可以看到所有组都已正确保存在和中/etc/passwd
,/etc/groups
但系统重启后,仅应用了默认用户组。我没有看到任何特定错误syslog
。
系统启动后,只有默认组会应用于用户。
user@localhost:~$ id
uid=1000(user) gid=1000(user) groups=1000(user)
但是,当列出可用的组时,它们是可见的,但当前未附加到会话。
user@localhost:~$ id user
uid=1000(user) gid=1000(user) groups=1000(user),4(adm),27(sudo),999(docker)
每次创建新的 shell 会话时,我都需要手动以同一用户身份登录,然后它才能按预期工作。
user@localhost:~$ su user
user@localhost:~$ id
uid=1000(user) gid=1000(user) groups=1000(user),4(adm),27(sudo),999(docker)
知道是什么原因造成的吗?
我已经尝试过:
- 登出 / 登录
- 重新创建群组
- 重新分配组给用户
作为奖励,我可以说它的newgrp
行为很奇怪,它切换了主组而不是与其他组一起注册:
user@localhost:~$ newgrp docker
user@localhost:~$ id
uid=1000(user) gid=999(docker) groups=999(docker)
谢谢!
答案1
我遇到了同样的问题(xfce,Ubuntu 16.04 LTS)。lightdm 错误追踪建议删除/注释掉 /etc/pam.d/lightdm 中的两行,具体来说:
auth optional pam_kwallet.so
auth optional pam_kwallet5.so
应该变成:
#auth optional pam_kwallet.so
#auth optional pam_kwallet5.so
这对我有用!我猜这可能会对登录时自动解锁 KWallet 产生一些影响(如果相关的话)。
答案2
进程的组成员身份在登录时由 设置login
。系统不会跟踪组文件并修改现有进程。
您可以使用以下命令启动具有新组成员身份信息的进程newgrp
。阅读man newgrp