我在登录时没有获取补充组

我在登录时没有获取补充组

我可以通过 ssh 访问云虚拟机上全新安装的 Ubuntu 22.04。我的密码输入是

fish:x:1001:100::/home/fish:/bin/bash

和 /etc/group 包含

users:x:100:
sudo:x:27:gsluser,fish

当我登录时,我得到sh而不是bash并且我不会自动加入该sudo组,尽管groups说我应该加入。如果我newgrp进入sudo,我会同时得到:

$ groups
users
$ groups fish
fish @ users sudo
newgrp sudo
$ groups
sudo users
$ 

我在各种配置文件和 bashrc 文件中都看不到任何奇怪的地方,并且 sshd.conf 自安装以来没有变化。谁能解释这种行为?

答案1

从问题的评论中可以看出,您正在使用 SSH 连接共享通过预先存在的共享 SSH 连接连接到远程系统。

当您使用 SSH 连接共享时(请参阅文档了解-M-S命令行选项在手册ssh(1),以及解释ControlMasterControlPath以及相关配置选项手册ssh_config(5))远程 shell 是从单个远程会话生成的。当创建此单个远程会话时,就会建立辅助组和其他属性,并且这些属性将保留在适当位置,并针对通过同一共享 SSH 连接建立的每个进一步连接进行复制。

这就是为什么当您注销并再次登录时,新的辅助组(和登录 shell)不会生效。

解决方案是不使用共享 SSH 连接进行连接,

ssh -S none remotehost

...或者通过强制终止连接

ssh -O exit remotehost

...然后建立到远程主机的新连接。

相关内容