su 指令用于切换到其他用户身份。
使用su切换身份时,如果忽略“user”,则默认切换到“root”身份,需要输入密码。当从root身份切换到其他用户时不需要输入密码,而反之则需要输入相应用户的密码。
如加上 - 或 -l 或 --login参数,切换到新用户时,会把当前的Shell环境切换到新用户的Shell环境,等同于新用户从控制台登录。
实验:
分别使用 su 和 su - 切换用户身份。
1) pwd查看当前目录:su切换到新用户时,没有显示新用户的目录。
su -切换到新用户,显示的是新用户的目录。
2) 使用set查看环境变量
普通用户
su 切换到root :
su -切换到root,此时shell的环境变量都改变为root的环境:
上面的三张截图显示,su切换时UID改变,而user和username都没有改变;使用su - 切换时,所有的环境变量都改变为新用户的。
3)touch文件abc.txt,查看abc.txt的权限、所有者、所属组。
对文件夹有wx权限时,可以对文件夹的文件进行写、rm、touch、vi、cat操作。
su切换到root用户,创建文件abc,abc的所有者和所属组都为root。
4)用echo $PATH导出PATH
普通用户时导出 PATH,
su切换到root时,导出PATH,
su - 切换到root时,导出PATH
3者的PATH内容都是不一样的。
所以只有su -切换时才不会出现PATH问题。“command not found”