Linux中的Su命令(切换用户)
“ 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特权运行特定程序。