Linux ·

Linux系统命令“su – user”在普通用户之间的免密切换

在一种特殊情况下,我们需要用到这种方法进行用户自动跳转。

如图,公司使用堡垒机进行服务器管理时,不同服务器机群使用了不同的系统用户进行推送,外网机群使用"userA",内网机群使用"userB",但是要求内网机群通过堡垒机登陆之后使用的系统用户也是userA,也就是userB登陆之后会马上自动切换到userA,这个切换过程对客户透明。这样做的好处是,虽然堡垒机最终的登陆用户都是userA,但是内外网机群的userA可以分开管理,增强了服务器管理的灵活性和安全性。

Linux系统命令“su - user”在普通用户之间的免密切换 Linux 第1张

Linux系统下,我们可以通过配置pam.d模块,使普通用户可以使用su命令免密码登陆root用户,然而,我们无法使用相同的方法令普通用户之间su免密码切换。

在内网机群,要实现普通用户之间的免密码切换,只需要做以下2步:

1)通过执行两条命令实现userB-->userA的免密码ssh登录

ssh-keygen -t rsa

ssh-copy-id  -i /home/userB/.ssh/id_rsa.pub  [email protected]

2)在/home/userB/.bashrc文件中追加以下内容

ssh [email protected]

以上操作完成后,在root用户登录的情况下,可以使用"su - userB"切换用户,最终切换到的用户是userA。但是,这样做还有一个不完善的地方。我们知道,通过su命令或ssh命令切换用户后,再使用exit命令退出服务器时都不会完全退出,而是退出到切换前的用户模式下。如下,退出到root用户需要执行两次exit命令。

Linux系统命令“su - user”在普通用户之间的免密切换 Linux 第2张

要解决这个问题,只需要做第3步即可:

3)在/home/userB/.bash_profile文件中追加以下内容

exit

这一步设置完之后,在userA用户模式下执行exit命令退出,会直接退到root模式下,相当于userA-->root,只需要执行一次exit命令。

Linux系统命令“su - user”在普通用户之间的免密切换 Linux 第3张

这样一来,使用userB通过堡垒机或者Xshell工具登录内网机群的服务器时,服务器都会自动切换到userA用户模式下,并且,使用exit命令退出时,都是完全退出。userB与userA之间的来回切换对客户来说是完全透明的。

参与评论