目录
背景
第一部分
su
命令第二部分
su
和su -
区别参考文献及资料
背景
Linux
操作系统是多用户多任务操作系统。多用户多任务就是可以在操作系统上建立多个用户,多个用户可以在同一时间内登录并执行各自不同的任务,互不影响。不同用户具有不同的权限,每个用户是在权限允许的范围内完成不同的任务,Linux
正是通过这种权限的划分与管理,实现了多用户多任务的运行机制。
在日常运维中,su
命令是最简单的用户切换命令,通过该命令可以实现任何用户身份的切换(包括从普通用户切换为 root 用户、从 root 用户切换为普通用户以及普通用户之间的切换)。普通用户之间切换以及普通用户切换至 root 用户,需要目标用户密钥,只有正确输入密钥,才能实现切换;从 root 用户切换至其他用户,无需知晓对方密钥,直接可切换成功。
第一部分 su
命令
su
命令的基本格式如下:
1 | root@VM-0-5-ubuntu:~# su [选项] 用户名 |
参数选项:
-
:当前用户不仅切换为指定用户的身份,同时所用的工作环境也切换为此用户的环境(包括 PATH 变量、MAIL 变量等)。使用 - 选项可省略用户名,默认会切换为 root 用户。-l
:同-
的使用类似,也就是在切换用户身份的同时,完整切换工作环境,但后面需要添加欲切换的使用者账号。-p
:表示切换为指定用户的身份,但不改变当前的工作环境(不使用切换用户的配置文件)。-m
:和-p
一样;-c
命令:仅切换用户执行一次命令,执行后自动切换回来,该选项后通常会带有要执行的命令。
第二部分 su
和 su -
区别
在实际运维使用中,经常踩的坑就是 su
和 su -
的区别了。运维人员通常认为两者是相同,或者不知道 su -
。
事实上,有-
和没有 -
是完全不同的,-
选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的。环境变量是用来定义操作系统环境的,因此如果系统环境没有随用户身份切换,很多命令无法正确执行。
初学者可以这样理解它们之间的区别,即有 - 选项,切换用户身份更彻底;反之,只切换了一部分。在不使用 su -
的情况下,虽然用户身份成功切换,但环境变量依旧用的是原用户的,切换并不完整。
参考文献及资料
1、Su Command in Linux (Switch User),链接:https://linuxize.com/post/su-command-in-linux/