说明
su命令用于将当前的用户切换到指定用户或者以指定的用户身份执行命令或程序
语法格式
su [option] [username]
参数
- -:切换用户的同时,将用户的家目录、系统环境变量重新按照切换后的用户初始化
- -c:向shell传递单个命令
总结说明
- 1、”su 用户名”:虽然可以切换到对应的用户,但是登录后的环境变量信息还是之前用户的信息
- 2、”su - 用户名”:不但能切换用户,而且还能将登录的环境变量一并切换,这是标准的切换
- 3、root用户切换到普通用户不需要输入任何密码,切换语法:su - 用户名
- 4、普通用户切换到root必须要输入root用户的密码才能完成切换,切换语法:su - 或 su - root
- 5、如果仅希望在某个用户下执行命令,而不用切换到该用户下来操作,可使用:su - 用户名 -c “命令或脚本”
示例
1、从普通用户不带参数切换到root,这种切换时不规范的
[user02@localhost ~]$ su root #可以省略root名字,默认为root
Password:
[root@localhost user02]# pwd #家目录没有切换
/home/user02
[root@localhost user02]# env|egrep "USER|MAIL|PWD|LOGNAME" #环境变量没有切换
USER=user02
MAIL=/var/spool/mail/user02
PWD=/home/user02
LOGNAME=user02
2、从普通用户带“-”参数进行切换,这种是规范的操作
[user02@localhost ~]$ su - root #带参数 -
Password:
Last login: Sun May 13 05:51:51 EDT 2018 on pts/7
[root@localhost ~]# pwd #切换到root的家目录
/root
[root@localhost ~]# env|egrep "USER|MAIL|PWD|LOGNAME" #环境变量也是root的了哟
USER=root
MAIL=/var/spool/mail/root
PWD=/root
LOGNAME=root
3、让普通用户运行脚本(暂未做测试)
su - user01 -c "/bin/sh 脚本路径"