CentOS命令行下su与su -的区别

浏览次数:1806 关键词 ( 命令行  区别  CentOS  su  )

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”