为什么对 /etc/passwd 的更改不生效?

为什么对 /etc/passwd 的更改不生效?

/etc/passwd通过运行usermod -s来更改我的 shell 进行编辑。 (chsh不起作用,因为它会提示输入密码;我们使用密钥进行 SSH。)

当我断开连接并重新连接时,更改不会生效。我sshd也重启了,还是没有。

答案1

我用的是ControlMaster,而且我实际上并没有断开连接。

ControlMaster是一个 SSH 配置选项,它使连接保持打开状态一段时间,并且可以通过同一连接多路复用 SSH 会话(这可以避免速度缓慢的密钥交换)。但是,如果您从 shell ^D,然后重新运行ssh你还没有杀死原来的连接

重新启动sshd只会重新启动侦听过程:任何正在进行的会话都保持活动状态,因此也不会重新启动连接。

显然启动新的 shell 不会重新检查/etc/passwd更改。

解决方案就是终止连接:ssh <hostname> -O exit,然后重新登录。

相关内容