在Linux中,su命令(切换用户)用于以不同的用户身份运行命令。

在本指南中,你将通过实际例子学习如何使用su命令。

前提条件运行Linux的系统访问终端窗口/命令行(Ctrl-Alt-T,Ctrl-Alt-F2),

su命令的工作原理

su命令用于以其他用户身份运行命令,这是在当前登录会话中切换或更改管理帐户的最简单方法。

某些版本的Linux(例如,Ubuntu)默认情况下会禁用root用户帐户,从而使系统更加安全。但是,这也限制了用户运行特定的命令。

使用su临时充当root用户允许你绕过此限制,可以用不同的用户身份执行不同的任务。

注:root帐户是系统具有完全访问权限的主管理员帐户,由于此帐户的更改严重性,并且由于受到损害的风险,大多数Linux版本日常使用普通的用户帐户。

su命令语法

要使用su命令,请按如下方式将它输入命令行:su [options] [username [arguments]]

如果指定了用户名,su默认为超级用户(root )。

su命令选项

要显示命令列表,请输入以下命令:su -h

以下是与su命令一起使用的一些常见选项:用户名-用你要用来登录的实际用户名替换用户名。这可以是用户,而不仅仅是root,-c或-command [command]运行指定用户的特定命令,-或-l或-login [username]运行登录脚本以更改为特定的用户名,你需要输入该用户的密码,-s或-shell [shell]允许你指定一个不同的shell环境来运行,-h或-help =显示su命令的帮助文件,-p或--preserve-environment保留shell环境(HOME,shell,USER,LOGNAME),

su命令示例

切换到其他用户

要在此终端窗口中切换登录用户,请输入以下命令:su -l [other_user]

你被要求输入密码,输入它,登录名将更改为该用户。

如果省略用户名,它默认为root帐户,现在,登录用户可以运行所有系统命令,这也将改变主目录和可执行文件的路径。

使用whoami命令验证是否切换到其他用户。

注意:如果你在身份验证方面遇到问题,可以通过几个简单步骤更改root或sudo密码。

以其他用户身份运行特定命令

要以不同的用户身份运行特定命令,请使用-c选项:su -c [command] [other_user]

系统将通过询问用户密码进行响应。

输入此示例时,系统将使用指定的帐户运行ls (列出目录内容)命令。

使用不同的shell

要使用不同的shell或操作环境,请输入以下命令:su -s /usr/bin/zsh

此命令在Z root中打开shell用户帐户。

在同一环境中使用不同的用户

可以使用-p选项保留当前用户帐户的环境:su -p [other_user]

用要切换到的实际用户名替换[other_user]。

用户帐户将切换,但是你将保留相同的主目录,如果你需要以其他用户身份运行命令,但是需要访问当前用户的数据,这将很有用。

要验证仍在同一个home环境中,请使用echo $HOME命令,该命令将显示你使用的目录。

命令比较:su和sudo

sudo命令

sudo命令授予对root功能的一次性或有限时间访问,通常,sudo命令用于快速运行管理命令,然后返回到用户帐户的常规权限。

要提供sudo访问,必须将用户添加到sudo组中。

注:默认情况下,某些版本的Linux (例如Ubuntu )禁用root帐户,这意味着没有给root用户分配密码,但是,可以通过运行以下命令并输入当前登录的用户的密码切换到root:sudo su ->

su命令

使用su命令可以将当前用户切换到其他用户,如果需要以不同的(非根)用户身份运行命令,请使用-l [username]选项指定用户帐户,此外,su还可以用于动态地更改为不同的shell解释器。

su是一个较旧但是功能更全面的命令,通过使用-c选项将单个命令传递给shell,它可以复制sudo的功能。

结束语

现在知道了如何使用su命令临时更改用户并执行Linux中的命令。