Linux ssh 切换登录用户自动转到root用户,很多场景里需要用到。

例如,Ubuntu本机普通用户切换到root,AWS和滴滴云默认普通用户切换到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

# .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

完整的ssh登录切换到root,并自动进入指定 /root/script目录

cat ~/.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

cd /root/script

 

附上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 sudo 免密码输入

Linux shell 脚本通过expect实现自动输入密码

Ubuntu 14.04 设置开机启动脚本

Mac OS 查看网络端口

Mac 上启用 root 用户或更改 root 密码

Mac sudo: /etc/sudoers is owned by uid 501, should be 0