-区别 linux su和su
2010-11-29 15:46:54 weixin_33779515 阅读数 5
linux 下su 和su - 的区别
 

su是切换用户的一个命令,比如要从用户模式切换到超级管理员模式,就需要su。然而su与su -是有区别的。

su 命令解析

功能说明:变更用户身份。
语  法:su [-flmp][--help][--version][-][-c <指令>][-s ][用户帐号]
补充说明:su可让用户暂时变更登入的身份。变更时须输入所要变更的用户帐号与密码。
参  数:
-c <指令>或-command=<指令> 执行完指定的指令后,即恢复原来的身份。
-f或--fast  适用于csh与tsch,使shell不用去读取启动文件。
-.-l或--login  改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,LOGNAME。此外,也会变更PATH变量。
-m,-p或--preserve-environment  变更身份时,不要变更环境变量。
-s或--shell=  指定要执行的shell。
--help  显示帮助。
--version  显示版本信息。
[用户帐号]  指定要变更的用户。若不指定此参数,则预设变更为root。
 
su在不加任何参数,默认为切换到root用户,但没有转到root用户家目录下,也就是说这时虽然是切换为root用户了,但并没有改变root登录环境;用户默认的登录环境,可以在/etc/passwd 中查得到,包括家目录,SHELL定义等;

su root只是获得root用户的权限;
su - root
不仅获得root用户的权限,而且还执行rootprofile执行root的环境变量
 
以下是详细的命令行阐释。依据显示当前路径即可看出。
 
login as: samll
samll@192.168.192.128's password:
Last login: Tue Jun 22 19:58:55 2010
[samll@localhost ~]$ pwd                  显示当前路径
/home/small  
[samll@localhost ~]$ su                    切换用户(切换到root下,但是路径未变)
Password:                                  输入用户名和密码。
[root@localhost samll]# pwd               显示当前路径(切换后的路径)
/home/samll
[root@localhost samll]# su -              切换用户(切换到root下,且切换到root的家目录中)
[root@localhost ~]# pwd
/root
或者;
[samll@localhost ~]$ pwd
/home/samll
[samll@localhost ~]$ su -
Password:
[root@localhost ~]# pwd
/root

[samll@localhost ~]$ su -c ls
注:这是su的参数组合,表示切换到root用户,并且改变到root环境,然后列出root家目录的文件,然后退出root用户;

转载于:https://blog.51cto.com/wanwentao/435456

2014-08-23 11:07:47 weixin_34235105 阅读数 2

su  后面不加用户是默认切到 root
su  是不改变当前变量
su - 是改变为切换到用户的变量 
也就是说su只能获得root的执行权限,不能获得环境变量

而su -是切换到root并获得root的环境变量及执行权限

语法:

$ su [user_name] 
su  命令可以用来交互地更改你的用户ID和组ID。  Su是switch user 或set user id的一个缩写。这个命令让你开启一个子进程,成为新的用户 ID 和赋予你存取与这个用户ID 关联所有文件的存取权限。因此,出于安全的考虑,你在实际转换身份时,会被要求输入这个用户帐号的密码。  
如果没有参数,su 命令将你转换为 root(系统管理员)。root 帐号有时也被称为超级用户,因为这个用户可以存取系统中的任何文件。也正是这个原因,许多人将su命令看成是 supper-user(超级用户)的一个缩写。当然,你必须要提供 root密码。  想要回到你原先的用户身份,不要再使用 su 命令,你只需要使用 exit命令退出你使用su命令而生成的新的对话进程。 
$ su – username 
一些配置文件是为你的对话线索而设立的。当你使用命令 su username时,你的对话特征和你原始的登录身份一样。如果你想要你的对话进程拥有转换后的用户 ID一致的特征,你要使用短斜杠: su – username。


转载于:https://blog.51cto.com/3639953/1543728

2016-04-19 09:25:21 u011467537 阅读数 446

       大部分Linux发行版的默认账户是普通用户,而更改系统文件或者执行某些命令,需要root身份才能进行,这就需要从当前用户切换到root用户。Linux中切换用户的命令是su或su -。前天我在使用useradd这个命令时,才体会到这两者的本质区别。如图:

我首先是用su命令切换到root身份的,但是运行useradd时,出现错误:bash: useradd: command not found。google了一下,原因是在这个用su命令切换过来的root用户上。

su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了。用echo $PATH命令看一下su和su -以后的环境变量有何不同。以此类推,要从当前用户切换到其它用户也一样,应该使用su -命令。如图:

Linux就是这样,有时候配置文件多了或者少了一个空格,服务就运行不了。细节问题一定要留心,这样才能少走弯路

2015-08-06 11:14:47 chenlong331409178 阅读数 504

su和su -都可用作linux方面来切换用户,他们的不同的之处,在于

su 切换到目标用户,只是切换了身份,环境变量切换过来
su -切换到目标用户,既切换了身份,又切换了环境变量

这里是su的操作:

[root@i-rixuvhm5 ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@i-rixuvhm5 ~]# echo $PATH
/java/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@i-rixuvhm5 ~]# su mysql
[mysql@i-rixuvhm5 root]$ id mysql
uid=500(mysql) gid=500(mysql) groups=500(mysql)
[mysql@i-rixuvhm5 root]$ echo $PATH
/java/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[mysql@i-rixuvhm5 root]$ 

可以看到,当用su切换到mysql用户,环境变量path依然是原来的

su- 命令操作的结果

[root@i-rixuvhm5 ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@i-rixuvhm5 ~]# echo $PATH
/java/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@i-rixuvhm5 ~]# su - mysql
[mysql@i-rixuvhm5 ~]$ id 
uid=500(mysql) gid=500(mysql) groups=500(mysql)
[mysql@i-rixuvhm5 ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/mysql/bin:/usr/local/mysql/bin:/usr/local/mysql/lib
[mysql@i-rixuvhm5 ~]$ 

从上面的操作可以看到su - mysql 后,环境变量换成了mysql用户的环境变量

2018-03-23 13:28:23 chou_out_man 阅读数 455

Linux 中su 与su - 的区别

一、区别

  1. Linux 中切换用户的命令是 su 或 su - 。
  2. su命令和 su - 命令最大的本质区别就是: 前者只切换了root身份 , 但是shell环境仍然是普通用户的shell , 而后者是连用户和shell 环境一起切换成了root 身份了 , 只有切换了shell环境才不会出现PATH环境变量错误 。 su切换成root用户之后 pwd 一下 , 发现自己的工作目录仍然是普通用户的工作目录 ;而用su - 命令切换后 工作目录也变成了root的工作目录 , 使用echo $PATH 命令看一下su 和su - 的环境变量有何不同 。 以此类推 , 要从当前用户切换到其他用户应该使用su - 命令 。

二、 su 命令

  1. su命令 的作用是变更为其他使用者的身份 , 需要键入该使用者的密码(超级用户除外 )。
  2. 格式 su [选项] … [-] [USER [ARG] …]
  3. 主要参数
    1. -f –fast: 不必读启动文件(如: .csh .cshrc等) , 仅用于csh或cshrc两种shell 。
    2. -l –login : 加了这个参数之后 , 就似乎是重新登录为该使用者一样 , 大部分环境变量(例如: home 、 shell 、 USER 等)都是以该使用者为主 , 并且工作目录也会改变 , 假如没有指定USER , 缺省情况下是root 。
    3. -m , -p –preserve-environment : 执行su时不改变环境变量 。
    4. -c –commend: 变更账号为USER的使用者 , 并执行指令(commend) 后再变回原来的使用者 。
    5. USER : 与变更的使用者账号 , AGR 传入新的参数 。
没有更多推荐了,返回首页