Linux中的Su命令(切换用户)

时间:2020-03-05 15:29:47  来源:igfitidea点击:

“ su”(替代或者切换用户的缩写)实用程序允许我们使用其他用户(默认情况下为root用户)的特权运行命令。

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

在本教程中,我们将说明如何使用“ su”命令。

如何使用“ su”命令

“ su”命令的常规语法如下:

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

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

su

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

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

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

whoami

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

root

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

su 

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

su -s /usr/bin/zsh

要保留调用用户的整个环境('HOME','SHELL','USER'和'LOGNAME'),请使用'-p','--preserve-environment'选项。

su -p

使用“-”选项时,将忽略“ -p”。

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

su -c ps

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

su tyrion

苏多vs苏

在某些Linux发行版(如Ubuntu)上,出于安全原因,默认情况下禁用了root用户帐户。

这意味着没有为root设置密码,并且我们不能使用'su'切换到root。

更改为root的一种方法是在'su'命令前加上'sudo',然后输入当前登录的用户密码:

sudo su 

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

如果授予用户“ sudo”权限,则将以root身份调用“ su”命令。
运行'sudo su-'并使用用户密码与使用root密码运行'su-'相同。

与'-i'方法一起使用时,'sudo'在root用户的环境下运行交互式登录shell:

sudo -i

'sudo -i'与运行'su-'基本相同。

与“ su”相比,使用“ sudo”的优势在于无需在多个管理用户帐户之间共享root密码。

另外,使用“ sudo”,我们可以允许用户仅以root特权运行特定程序。