su只是切换了root身份,但是SHELL环境依然是普通用户的SHELL;su - 是用户身份和SHELL环境都切换成root(比如我们公司的XXX,我经常看到他在切换管理员的时候就直接执行su)废话就不多说了,以普通用户lb切换到root为例直接实战。
1、不完整切换
[root@node1 ~]# useradd lb [root@node1 ~]# id lb uid=501(lb) gid=501(lb) groups=501(lb) [root@node1 ~]# grep "lb" /etc/passwd lb:x:501:501::/home/lb:/bin/bash [root@node1 ~]# su - lb [lb@node1 ~]$ whoami lb [lb@node1 ~]$ su Password: [root@node1 lb]# whoami root [root@node1 lb]# env|egrep "USER|^PATH|MAIL|PWD" USER=lb PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/lb/bin MAIL=/var/spool/mail/lb PWD=/home/lb
2、完整切换
[lb@node1 ~]$ su - Password: [root@node1 ~]# whoami root [root@node1 ~]# env|egrep "USER|^PATH|MAIL|PWD" USER=root MAIL=/var/spool/mail/root PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin PWD=/root
3、su命令小结
【功能说明】
用户角色切换,"-"表示切换用户环境变量(完整切换)
【语法格式】
su [OPTION]... [-] [USER [ARG]...]
【实践操作】
[root@node1 ~]# su – lb [lb@node1 ~]$
【常用参数】
- 切换用户环境变量
-l 同"-",会切换用户环境变量
-c 指定用户身份执行命令,如:su - lb -c "touch lb.txt",执行完指定命令后恢复到原来的身份
本文出自 “闲来无事唠唠嗑” 博客,请务必保留此出处http://laokebang.blog.51cto.com/12486963/1891679
原文:http://laokebang.blog.51cto.com/12486963/1891679