Shell/Bash代码信息

运行结果
教程手册
代码仓库
极速运行
交互输入
极速运行模式,不支持键盘输入语句但是拥有更高的运行速度,输出简洁明了 。 点击编辑器上方的运行按钮即刻体验吧。
以下是用户最新保存的代码
shell脚本方式启动Tomcat服务 发布于:2021-03-02 13:59 九九乘法表 发布于:2021-02-24 19:27 shell 基本用法记录 发布于:2021-01-29 11:02 监控cpu、内存,并且告警 发布于:2021-02-04 16:02 接口测试shell脚本 发布于:2021-01-13 16:56 自动生成openssl证书 发布于:2021-01-12 14:23 curl auth ter global 发布于:2020-09-22 11:32 截取命令结果/后面字符 发布于:2020-09-02 08:55 linux- 1.查看系统信息 发布于:2020-08-06 16:26 v2ray-shell 发布于:2020-09-21 16:13 ubuntu 常用命令 发布于:2020-02-22 17:09 又来测试了 发布于:2019-12-25 10:39 The first project of shell 发布于:2019-05-17 14:51 Shell/Bach 时间戳 发布于:2019-04-03 14:17 linux命令查询cpu、内存信息 发布于:2019-02-24 18:59 [更多]
显示目录

su 命令-用户切换

su 命令

su 命令可以实现任何身份的切换,包括从普通用户切换为 root 用户、从 root 用户切换为普通用户以及普通用户之间的切换。

普通用户之间切换以及普通用户切换至 root 用户,都需要知晓对方的密码,只有正确输入密码,才能实现切换;从 root 用户切换至其他用户,无需知晓对方密码,直接可切换成功。

基本格式

[root@localhost ~]# su [选项] 用户名
选项 作用
-: 当前用户不仅切换为指定用户的身份,同时所用的工作环境也切换为此用户的环境(包括 PATH 变量、MAIL 变量等),使用 - 选项可省略用户名,默认会切换为 root 用户。
-l: 同 - 的使用类似,也就是在切换用户身份的同时,完整切换工作环境,但后面需要添加欲切换的使用者账号。
-p: 表示切换为指定用户的身份,但不改变当前的工作环境(不使用切换用户的配置文件)。
-m: 和 -p 一样;
-c 命令: 仅切换用户执行一次命令,执行后自动切换回来,该选项后通常会带有要执行的命令。

示例

[lamp@localhost ~]$ su -root
密码: <-- 输入 root 用户的密码
#"-"代表连带环境变量一起切换,不能省略
[lamp@localhost ~]$ whoami
lamp
#当前我是lamp
[lamp@localhost ~]$ su - -c "useradd user1" root
密码:
#不切换成root,但是执行useradd命令添加user1用户
[lamp@localhost ~]$ whoami
lamp
#我还是lamp
[lamp@localhost ~]$ grep "user1' /etc/passwd
userl:x:502:504::/home/user1:/bin/bash
#user用户已经添加了

exit 命令进行手动切换

例如:

[lamp@localhost ~]$ whoami
lamp
#当前我是lamp
[lamp@localhost ~]$ su - lamp1
Password:   <--输入lamp1用户的密码
#切换至 lamp1 用户的工作环境
[lamp@localhost ~]$ whoami
lamp1
#什么也不做,立即退出切换环境
[lamp1@localhost ~]$ exit
logout
[lamp@localhost ~]$ whoami
lamp

su 和 su - 的区别

注意,使用 su 命令时,有 - 和没有 - 是完全不同的,- 选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的。我们知道,环境变量是用来定义操作系统环境的,因此如果系统环境没有随用户身份切换,很多命令无法正确执行。

举个例子,普通用户 lamp 通过 su 命令切换成 root 用户,但没有使用 - 选项,这样情况下,虽然看似是 root 用户,但系统中的 $PATH 环境变量依然是 lamp 的(而不是 root 的),因此当前工作环境中,并不包含 /sbin、/usr/sbin等超级用户命令的保存路径,这就导致很多管理员命令根本无法使用。不仅如此,当 root 用户接受邮件时,会发现收到的是 lamp 用户的邮件,因为环境变量 $MAIL 也没有切换。 初学者可以这样理解它们之间的区别,即有 - 选项,切换用户身份更彻底;反之,只切换了一部分,这会导致某些命令运行出现问题或错误(例如无法使用 service 命令)。

通过下面这个例子,可直观的看到 su 和 su - 的区别:

[lamp@localhost ~]$ whoami
lamp
#查询用户身份,我是lamp
[lamp@localhost ~]$ su root
密码:
<-输入root密码
#切换到root,但是没有切换环境变量。注意:普通用户切换到root需要密码
[root@localhost ~]# env | grep lamp
#查看环境变量,提取包含lamp的行
USER=lamp
#用户名还是lamp,而不是root
PATH=/usr/lib/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/lamp/bin
#命令査找的路径不包含超级用户路径
MAIL=/var/spool/mail/lamp
PWD=/home/lamp
LOGNAME=lamp
#邮箱、主目录、目前用户名还是lamp

在不使用 su - 的情况下,虽然用户身份成功切换,但环境变量依旧用的是原用户的,切换并不完整。

由JSRUN为你提供的Shell/Bash在线工具
        JSRUN提供的Shell/Bash在线运行,Shell/Bash 在线编译工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。

title

使用此草稿 删除草稿

皮肤:

运行模式:

嵌入代码 iframe嵌入: