本教程操作环境:CentOS 6系统、Dell G3电脑。 linux切换用户的命令是“su”。 u 是最简单的用户切换命令,通过该命令可以实现任何身份的切换,包括从普通用户切换为 root 用户、从 root 用户切换为普通用户以及普通用户之间的切换。 普通用户之间切换以及普通用户切换至 root 用户,都需要知晓对方的密码,只有正确输入密码,才能实现切换;从 root 用户切换至其他用户,无需知晓对方密码,直接可切换成功。 su 命令的基本格式如下:
代码语言:javascript复制
# su [选项] 用户名
选项: -:当前用户不仅切换为指定用户的身份,同时所用的工作环境也切换为此用户的环境(包括 PATH 变量、MAIL 变量等),使用 - 选项可省略用户名,默认会切换为 root 用户。 -l:同 - 的使用类似,也就是在切换用户身份的同时,完整切换工作环境,但后面需要添加欲切换的使用者账号。 -p:表示切换为指定用户的身份,但不改变当前的工作环境(不使用切换用户的配置文件)。 -m:和 -p 一样; -c 命令:仅切换用户执行一次命令,执行后自动切换回来,该选项后通常会带有要执行的命令。 【例 1】 [lamp@localhost ~]$ su -root 密码: <-- 输入 root 用户的密码 #"-"代表连带环境变量一起切换,不能省略 【例 2】 [lamp@localhost ~]$ whoami lamp #当前我是lamp [lamp@localhost ~]$ su - -c "useradd user1" root 密码: #不切换成root,但是执行useradd命令添加user1用户 [lamp@localhost ~]$ whoami lamp #我还是lamp [lamp@localhost ~]$ grep "user1' /etc/passwd userl:x:502:504::/home/user1:/bin/bash #user用户已经添加了 除了像例 2 这样,执行一条命令后用户身份会随即自动切换回来,其他切换用户的方式不会自动切换,只能使用 exit 命令进行手动切换,例如: [lamp@localhost ~]$ whoami lamp #当前我是lamp [lamp@localhost ~]$ su - lamp1 Password: <--输入lamp1用户的密码 #切换至 lamp1 用户的工作环境 [lamp@localhost ~]$ whoami lamp1 #什么也不做,立即退出切换环境 [lamp1@localhost ~]$ exit logout [lamp@localhost ~]$ whoami lamp su 和 su - 的区别 注意,使用 su 命令时,有 - 和没有 - 是完全不同的,- 选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的。我们知道,环境变量是用来定义操作系统环境的,因此如果系统环境没有随用户身份切换,很多命令无法正确执行。