在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中的命令。