Fork me on GitHub

Linux系统中的su命令

目录

  • 背景

  • 第一部分 su命令

  • 第二部分 susu -区别

  • 参考文献及资料

背景

Linux操作系统是多用户多任务操作系统。多用户多任务就是可以在操作系统上建立多个用户,多个用户可以在同一时间内登录并执行各自不同的任务,互不影响。不同用户具有不同的权限,每个用户是在权限允许的范围内完成不同的任务,Linux正是通过这种权限的划分与管理,实现了多用户多任务的运行机制。

在日常运维中,su命令是最简单的用户切换命令,通过该命令可以实现任何用户身份的切换(包括从普通用户切换为 root 用户、从 root 用户切换为普通用户以及普通用户之间的切换)。普通用户之间切换以及普通用户切换至 root 用户,需要目标用户密钥,只有正确输入密钥,才能实现切换;从 root 用户切换至其他用户,无需知晓对方密钥,直接可切换成功。

第一部分 su命令

su 命令的基本格式如下:

1
root@VM-0-5-ubuntu:~# su [选项] 用户名

参数选项:

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

第二部分 susu -区别

在实际运维使用中,经常踩的坑就是 susu -的区别了。运维人员通常认为两者是相同,或者不知道 su -

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

初学者可以这样理解它们之间的区别,即有 - 选项,切换用户身份更彻底;反之,只切换了一部分。在不使用 su -的情况下,虽然用户身份成功切换,但环境变量依旧用的是原用户的,切换并不完整。

参考文献及资料

1、Su Command in Linux (Switch User),链接:https://linuxize.com/post/su-command-in-linux/

本文标题:Linux系统中的su命令

文章作者:rong xiang

发布时间:2021年06月14日 - 12:06

最后更新:2022年10月25日 - 23:10

原始链接:https://zjrongxiang.github.io/posts/cf175ca1/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%