Linux ssh 切换登录用户自动转到root用户
Linux ssh 切换登录用户(例如 AWS云的 ec2-user,滴滴云的 dc2-user)自动转到root用户,很多场景里需要用到。
例如,Ubuntu本机普通用户 mimvp 切换到root,AWS(ec2-user)和滴滴云(dc2-user)默认普通用户切换到root
使用SSH登录远端的Linux服务器,假设登录使用的用户名是mimvp
登录成功后,会直接进入/home/mimvp/目录下,但这时使用的用户名还是mimvp,如下所示:
mimvp@ubuntu:~$ pwd /home/mimvp mimvp@ubuntu:~$ whoami mimvp
如果要使用root用户的话,必须使用 sudo –s 进行切换,
因为root权限会频繁使用,如果希望SSH连接到Linux服务器后,自动切换到root用户,
方法如下:
1、修改普通用户的环境变量
切换到普通用户模式,修改普通用户目录下的 .bash_profile 配置文件
vim /home/mimvp/.bash_profile 或 vim ~/.bash_profile
mimvp@ubuntu:~$ pwd /home/mimvp mimvp@ubuntu:~$ sudo vim .bash_profile
在该文件中修改两处:
1)添加一行
sudo su root
2)修改一行 (可选,经测试,不用修改)
PATH=$PATH:$HOME/.local/bin:$HOME/bin
为
PATH=$PATH:$HOME/bin
修改后的 .bash_profile 配置文件:
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi sudo su root # User specific environment and startup programs #PATH=$PATH:$HOME/.local/bin:$HOME/bin PATH=$PATH:$HOME/bin export PATH
使用 SecureCRT连接工具,不用重启,重新登录,即可切换到了 root (米扑验证成功)
若本机需要生效,需要重启服务器,使修改生效
补充说明:登录后默认使用root超级账户的 .bash_profile 文件内容如下:
cat ~/.bash_profile (修改的是普通用户mimvp,不是root用的下的 ~/.bash_profile)
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH
2、/etc/sudoers 文件修改
若添加了新用户,则需要把新用户添加到 /etc/sudoers 配置文件里,实现免密码切换到 root
1)修改文件权限,拥有编辑文件写的权限
chmod u+w /etc/sudoers
2)编辑文件 /etc/sudoers
vim /etc/sudoers
在root ALL=(ALL) ALL 下添加一行 xxx ALL=(ALL) NOPASSWD:ALL
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
xxx ALL=(ALL) NOPASSWD:ALL # xxx为你的用户名
3)改回文件的原权限
chmod u-w /etc/sudoers
3、ssh 登录后,指定进入目录
只需要在 ~/.bash_profile 文件末尾增加一行
cd /your_path
例如ssh登录后默认想进入 /root/script 目录,则在 ~/.bash_profile 文件末尾增加一行:
cd /root/script
注意:若是普通用户切换到root,且切换目录,则步骤如下:
1)现在普通用户目录下,新建 script
mkdir /home/mimvp/script
2)把普通用户目录下的文件,软链接到root目录下
ln -s /home/mimvp/script /root/script
3)先进入指定目录,后切换root
cd /home/mimvp/.script
sudo su root
4)实测,在 AWS云 和 滴滴云上都成功
https://aws.amazon.com/amazon-linux-2/ [root@aws-japan .script]# [root@aws-japan .script]# pwd /home/ec2-user/.script [root@aws-japan .script]# ls -al /root/.script lrwxrwxrwx 1 root root 22 May 2 21:40 /root/.script -> /home/ec2-user/.script [root@aws-japan .script]# [root@aws-japan .script]# exit [ec2-user@aws-japan .script]$
如上,SecureCRT 登录 AWS云上后
1)[root@aws-japan .script] 自动切换到了指定目录,且切换到了 root 超级用户
2)[root@aws-japan .script]# ls -al /root/.script 可见 /root/.script 软链接到了普通用户下的 /home/ec2-user/.script
这里,为什么是在普通用户下建立 .script 目录,然后软链接到超级用户 root 的 /root/.script 目录下呢?
原因是先登录时,是普通用户 ec2-user ,没有权限访问 /root/ 目录,只能访问自身普通用户下的目录
若把目录建立在超级用户root目录下,普通用户切换指定目录,或者先切换到root再进入指定目录,都是提示权限不够,报错提示如下:
https://aws.amazon.com/amazon-linux-2/ -bash: cd: /root/.script: Permission denied
完整的ssh登录切换到root,并自动进入指定 /root/script目录
cat ~/.bash_profile 或 cat /home/mimvp/.bash_profile // 普通用户下的
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs #PATH=$PATH:$HOME/.local/bin:$HOME/bin PATH=$PATH:$HOME/bin export PATH ## 先切换目录, 在普通用户 /home/ec2-user/ 目录下 cd /home/ec2-user/.script #cd /root/.script ## 最后切换到 root, 否则不能切换到普通用户的目录下 sudo su root
附上shell脚本自动添加进入 /root/script 的shell代码
## login and cd /root/script flag=`grep "script" ~/.bash_profile | wc -l` script_dir='/root/script' if [ -d "${script_dir}" -a "${flag}" -eq "0" ]; then echo "echo -e cd ${script_dir} >> ~/.bash_profile" echo -e "\ncd ${script_dir}" >> ~/.bash_profile fi
代码说明,添加上判断有二:
1、判断 ~/.bash_profile 文件中是否已添加 script 目录
2、判断是否存在 /root/script
参考推荐:
Linux shell 脚本通过expect实现自动输入密码
Mac sudo: /etc/sudoers is owned by uid 501, should be 0
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2020-05-04 17:14:08
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!
技术文章,感谢博主的分享
写的不错