Ubuntu 22.04中使用usermod -a -G添加用户到新组不持久化的问题
Ubuntu 22.04中使用usermod -a -G添加用户到新组不持久化的问题
我在Ubuntu 22.04上碰到了一个挺棘手的问题,给大家详细说说情况:
首先,用户fred的初始组权限是这样的:
fred $ sudo -i root $ id fred uid=1001(fred) gid=1001(fred) groups=1001(fred),27(sudo)
为了让他能使用VirtualBox相关功能,我用usermod命令把他加到vboxusers组:
root $ usermod -a -G vboxusers fred
执行完后立刻查看,确实已经成功添加了:
root $ id fred uid=1001(fred) gid=1001(fred) groups=1001(fred),27(sudo),141(vboxusers)
但奇怪的是,当我注销fred的会话再重新登录后,这个组居然不见了:
fred $ sudo -i root $ id fred uid=1001(fred) gid=1001(fred) groups=1001(fred),27(sudo)
不过用getent查看组信息时,vboxusers里明明还是有fred的:
fred $ getent groups | grep vboxusers vboxusers:x:141:fred
更有意思的是,只要手动执行newgrp vboxusers,组权限就会立刻恢复:
fred $ id uid=1001(fred) gid=1001(fred) groups=1001(fred),27(sudo) fred $ newgrp vboxusers fred $ id uid=1001(fred) gid=1001(fred) groups=1001(fred),27(sudo),141(vboxusers)
可一旦注销再登录,这个问题又会重复出现...
可能的解决办法
针对这个问题,我整理了几种常见的排查和解决方向,你可以逐一尝试:
- 彻底清理用户会话:有时候注销操作并没有完全杀死用户的所有进程,导致组信息没有刷新。可以切换到root用户,执行
pkill -u fred杀死所有属于fred的进程,再重新登录fred账号试试。 - 检查PAM配置:Ubuntu的会话管理依赖PAM模块,确保
/etc/pam.d/common-session文件中没有阻止组信息更新的配置,必要时可以添加session required pam_mkhomedir.so(如果涉及用户目录初始化),修改后重启PAM服务或直接重启系统。 - 刷新组缓存:执行
grpconv命令同步/etc/group和/etc/gshadow的组数据库信息,之后重新登录用户,让系统加载最新的组权限。 - 排查远程认证服务:如果你的系统使用了LDAP或者其他远程身份认证服务,需要确认服务端已经同步了组信息,确保本地能正确获取到最新的用户组权限。
备注:内容来源于stack exchange,提问作者Pro West
相关产品推荐
相关产品推荐

