su是switch user切换用户的缩写,su命令允许您使用其他用户,默认情况下使用root用户的权限运行命令。

在本教程中,我们将说明如何使用su命令。包括su的命令语法与常见的选项,sudo与su命令的比较与区别,切换用户时并留在当前的目录中等。

如何使用su命令

su命令的一般语法如下:

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

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

su

系统将提示您输入root密码,如果通过身份验证,则运行命令的用户将临时成为root。并替换用户的/etc/passwd设置shell程序和HOME家目录等环境变量,但当前目录未更改。

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

whoami

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

root

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

su -

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

su -s /usr/bin/zsh

要保留主叫用户的整个环境(HOMESHELLUSERLOGNAME),请使用-p--preserve-environment选项。

su -p

使用-选项时,将忽略-p。如果要以切换用户运行命令而不启动交互式shell,请使用-c--command选项。例如,要以超级用户身份调用ps命令,您可以输入以下命令:

su -c ps

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

su myfreax

sudo vs su

在某些Linux发行版上,如Ubuntu出于安全原因,默认情况下root用户帐户是被禁用的。这意味着没有为root设置密码,并且您不能使用su切换到root。切换为root的一个选项是在su命令前加上sudo,然后输入当前登录用户的密码:

sudo su -

sudo命令允许您以其他用户运行命令。默认将以root身份调用su命令。运行sudo su -并使用用户密码与su -使用root密码相同。与-i选项一起使用时,sudo将在root用户的环境中运行交互式登录Shell:

sudo -i

sudo -i与运行su -基本相同。与su相比,使用sudo的优势在于无需在多个管理用户帐户之间共享root密码。此外,通过sudo,您可以允许用户仅以root运行指定的命令。

结论

su可让您临时成为另一个用户并与并使用当前用户环境执行命令。如果您有任何疑问或反馈,请随时发表评论。