我管理的服务器出现问题。帐户(特别是我的帐户)似乎没有正确的组。我认为通过查看以下命令序列最容易证明该问题:
Last login: sometime from somewhere
user.x@srv:~$ groups
user.x
user.x@srv:~$ groups user.x
user.x : user.x grp1 grp2
user.x@srv:~$ su - user.x
Password:
user.x@srv:~$ groups
user.x grp1 grp2
user.x@srv:~$ exit
user.x@srv:~$ groups
user.x
因此,问题是登录(通过 SSH)后错误地报告了 user.x 的组。如果再次模拟登录 ( ) 或通过或命令su -
提供用户名,则可以正常工作。groups
id
不正确的组会导致各种问题,例如无法使用 sudo。我怎样才能解决这个问题?
可能相关的更多信息:
- 服务器是 NIS 客户端,每 15 分钟同步一次
- 该问题很少见,但并非唯一,目前有 2 位用户在过去半年中遇到了该问题
- 这个问题似乎只发生在经常通过 SSH 连接到机器的用户身上
答案1
问题是组信息首先从 nis 中提取,然后从 nis 的本地副本(由 ypserv 制作)中提取
解决方案是将 /etc/nsswitch.conf 更改为
group: compat
到:
group: files nis compat
答案2
组权限是在创建 shell 时设置的。第一个 shell 的groups
输出仅显示user.x
,该 shell 是在添加其他组之前创建的吗?如果是这样,只需注销并重新登录即可。
答案3
看起来用户 shell 的配置有问题。检查 shell 的定义方式/etc/passwd
,并检查/etc/profile
用户的登录脚本(如.bashrc
、.bash_login
等.profile
)是否有任何错误。如果您找不到任何可以修复该问题的内容,请备份这些文件并恢复默认文件。可能重新安装外壳。