Linux中的Sudo和Su有什么区别?

如果您是Linux用户,则可能会看到对sudo和su的引用。关于How-To Geek和其他地方的文章指示Ubuntu用户使用sudo和其他Linux发行版的用户使用su,但是有什么区别?

Sudo和su是获得root特权的两种不同方法。每种功能以不同的方式运行,默认情况下,不同的Linux发行版使用不同的配置。

根用户

su和sudo均用于以root权限运行命令。 root用户基本上等同于Windows上的管理员用户– root用户具有最大权限,并且可以对系统执行任何操作。 Linux上的普通用户以减少的权限运行–例如,他们无法安装软件或写入系统目录。

要执行需要这些权限的操作,您必须使用su或sudo来获取它们。

Su vs. Sudo

执行su命令时,如果没有其他选项,su命令将切换到超级用户或root用户。您必须输入root帐户的密码。但这不是su命令的全部功能–您可以使用它切换到任何用户帐户。如果执行 苏鲍勃 命令,系统将提示您输入Bob的密码,然后外壳程序将切换到Bob的用户帐户。

在root shell中运行命令后,您应该输入 出口 离开根shell并返回到受限特权模式。

Sudo使用root特权运行一个命令。执行时 sudo命令,系统会提示您输入当前用户帐户的密码,然后再运行 命令 作为root用户。默认情况下,Ubuntu会记住密码15分钟,直到15分钟后才会再次要求输入密码。

这是su和sudo之间的关键区别。 Su将您切换到root用户帐户,并需要root帐户的密码。 Sudo使用root特权运行一个命令-它不会切换到root用户,也不需要单独的root用户密码。

Ubuntu与其他Linux发行版

su命令是在Linux上获取root权限的传统方法。 sudo命令已经存在很长时间了,但是Ubuntu是第一个默认情况下仅使用sudo的流行Linux发行版。当您安装Ubuntu时,将创建标准的根帐户,但未为其分配密码。您必须先为root帐户分配密码,然后才能以root用户身份登录。

默认情况下,使用sudo而不是su有许多优点。 Ubuntu用户仅需提供并记住一个密码,而Fedora和其他发行版则要求您在安装过程中分别创建root和用户帐户密码。

另一个优点是,它阻止用户以root用户身份登录-或使用su获取root shell-并保持root shell打开以执行其正常工作。以root身份运行较少的命令可以提高安全性并防止系统范围内的意外更改。

默认情况下,基于Ubuntu的发行版(包括Linux Mint)也使用sudo而不是su。

一些技巧

Linux是灵活的,因此使su与sudo类似地工作不需要太多工作,反之亦然。

要以root用户身份使用su运行单个命令,请运行以下命令:

su -c“命令”

这类似于使用sudo运行命令,但是您将需要root帐户的密码,而不是当前用户帐户的密码。

要获得带有sudo的完整的交互式root shell,请运行 须藤–i。

您必须提供当前用户帐户的密码,而不是根帐户的密码。

在Ubuntu中启用root用户

要在Ubuntu上启用root用户帐户,请使用以下命令为其设置密码。请记住,Ubuntu建议不要这样做。

须藤passwd根

在设置新密码之前,Sudo会提示您输入当前用户帐户的密码。使用新密码从终端登录提示符或使用su命令以root用户身份登录。您绝对不应以root用户身份运行完整的图形环境-这是非常差的安全性做法,许多程序都会拒绝运行。

将用户添加到Sudoers文件

Ubuntu中只有管理员类型的帐户才能使用sudo运行命令。您可以从“用户帐户”配置窗口中更改用户帐户的类型。

Ubuntu会自动将在安装过程中创建的用户帐户指定为管理员帐户。

如果您使用的是其他Linux发行版,则可以通过运行以下命令授予用户使用sudo的权限 维苏多 具有root特权的命令(因此运行 su 首先或使用 su -c).

将以下行添加到文件中,替换 用户 用户帐户名称:

用户ALL =(ALL:ALL)ALL

Ctrl-X 然后 ÿ 保存文件。您也可以将用户添加到文件中指定的组中。文件中指定的组中的用户将自动具有sudo特权。

Su的图形版本

Linux还支持su的图形版本,该版本在图形环境中要求您输入密码。例如,您可以运行以下命令以获取图形密码提示,并以root用户权限运行Nautilus文件浏览器。按 Alt-F2 从图形运行对话框运行命令而无需启动终端。

鹦鹉螺

gksu命令还有其他一些技巧-它保留了您当前的桌面设置,因此当您以其他用户身份启动图形程序时,它们不会显得不正确。诸如gksu之类的程序是使用root特权启动图形应用程序的首选方式。

Gksu使用基于su或sudo的后端,具体取决于您使用的Linux发行版。

您现在应该准备同时遇到su和sudo!如果您使用不同的Linux发行版,您将遇到这两种情况。


$config[zx-auto] not found$config[zx-overlay] not found