Alex_McAvoy

想要成为渔夫的猎手

Linux 的用户身份切换

【用户身份切换】

在 Linux 中,一般都是使用普通用户来登录系统的,当需要进行系统维护或软件更新时,才会转为 root 用户来操作

将普通用户转为 root 用户主要有两种方式:

  • 使用 su 命令,直接将身份变为 root,但该命令需要使用 root 密码
  • 使用 sudo 命令,执行 root 的命令串,但 sudo 需要提前设置且需要用户输入自己的密码

【su 命令】

su 命令可以实现任何用户身份间的切换,命令格式为:su [选项] [username]

常见选项有:

  • -l:后跟 username,即要切换的用户账号
  • -m:表示使用目前的环境设置,不读取新用户的配置文件
  • -c:后接命令串,仅执行一次命令

需要注意的是,单纯输入 su 并输入 root 密码后,虽然切换到了 root 身份,但由于读取变量设置方式为 non-login shell 方式,此时如 PATH 等环境变量并没有被改变

因此,在使用 su 命令切换 root 身份时,一般常采用 su - 以 login shell 的方式切换成 root 用户

此外,在使用 root 用户切换成任何用户时,均不需要输入用户密码,若想退出 su 环境,输入 exit 命令即可

【sudo 命令】

当主机是多人管理的环境时,若大家都需要使用 su 命令来切换 root 身份,那么就需要这些人都知道 root 密码,密码太多可能会流传出去,存在安全隐患

sudo 命令,可以以普通用户的身份去执行使用 root 身份来执行的命令,但该命令并非所有用户都可执行,默认情况下,系统仅限 root 用户来执行 sudo,因此,若想让某些用户能够执行 sudo 的话,需要使用 root 用户来对 /etc/sudoers 文件进行更改,将可以使用 sudo 命令的用户添加进该文件中

sudo 命令格式为:sudo [-b] [-u username] 命令,其中各选项含义如下

  • -b:后续的命令让系统自动执行,不与当前 Shell 产生影响
  • -u:后接欲切换的用户,若无该项则代表切换身份为 root 用户

感谢您对我的支持,让我继续努力分享有用的技术与知识点!