Linux中使用 su 命令切换用户

su ( 替代或切换用户的缩写) 实用程序,可以运行另一用户的特权命令,默认情况下是 root 用户。

使用 su 是在当前登录会话中切换到管理帐户的最简单方法。当不允许 root 用户通过 ssh 或使用 GUI 显示管理器登录系统时,这特别方便。

在本教程中,我们将解释如何使用该 su 命令。

如何使用 su 命令

su 命令的常规语法如下:

su [OPTIONS] [USER [ARGUMENT...]]

不带任何选项调用时, su 的默认行为是以 root 用户身份运行交互式 shell :

su

系统将提示您输入 root 密码,如果通过身份验证,则运行该命令的用户将临时成为 root 用户。

会话中的 shell (SHELL) 和 home (HOME) 环境变量是通过替代用户的 /etc/passwd 条目设置的,并且当前目录不变。

要确认用户已更改,请使用以下 whoami 命令:

whoami

该命令将打印运行当前 shell 会话的用户的名称:

root

调用 su 时最常用的选项是 --l--login 。这使该 shell 成为登录 shell ,其环境与真实登录非常相似,并更改了当前目录

su -

如果要运行另一个 shell 程序而不是 passwd 文件中定义的外壳程序,请使用 -s--shell 选项。例如,要切换到 root 并运行 zsh shell ,您可以输入:

su -s /usr/bin/zsh

为了保持整个环境 (HOMESHELLUSER ,和 LOGNAME 主叫用户)使用 -p--preserve-environment 选项。

su -p

使用该 - 选项时,将 -p 被忽略。

如果要以替代用户身份运行命令而不启动交互式 shell ,请使用 -c--command 选项。例如,要以超级用户身份调用命令 ps ,您可以输入:

su -c ps

要切换到另一个用户帐户,请将用户名作为参数传递给 su 。例如,要切换到用户 tyrion ,您可以输入:

su tyrion

sudo 与 su

在某些 Linux 发行版(如 Ubuntu) 上,出于安全原因,默认情况下禁用了 root 用户帐户。这意味着没有为 root 设置密码,并且您不能用于 su 切换到 root 。

更改为 root 的一种方法是在 su 命令前添加 sudo 并输入当前登录的用户密码:

sudo su -

sudo 命令允许您以其他用户(默认情况下为 root 用户)运行程序。

如果授予用户 sudo 权限,则该 su 命令将以 root 身份调用。运行 sudo su - 和使用 root 运行 su - 效果相同。

与该 -i 选项 sudo 一起使用时,请以 root 用户的环境运行交互式登录 shell :

sudo -i

sudo -isu - 运行基本相同。

使用 sudo  的好处是不需要在多个管理用户帐户之间共享 root 密码。

另外,通过, sudo 您可以允许用户仅以 root 特权运行特定程序。

结论

su 是一个命令行实用程序,可让您临时成为另一个用户并执行命令。