命令“su -s”和“sudo -s”之间有什么区别?

Cal*_*lum 24 linux unix sudo

两个超级用户命令有什么区别,su -ssudo -s

他们都提供了一个可以访问超级用户帐户的 shell。

Mik*_*age 31

实际上,它们都会使您成为超级用户。然而,他们做的事情略有不同,方式略有不同。

首先,su -将您切换到登录 shell,而sudo -s不会。实际上,这通常意味着您的环境变量不会切换到root's for sudo -s。请注意,您可以运行只是su为了获取登录 shell,或sudo -i获取登录 shell [并非在所有版本中]。

其次,susu -切换到新的用户,要求您为新用户进行身份验证。sudo -s并且sudo -i(并且只是常规sudo foo)让您运行一个您已获得预授权的命令 [参见/etc/sudoers],可能是通过要求您确认您当前的ID。

如果你想真的很可爱,你也可以运行sudo su -,它会请求以su -root用户身份登录()由root用户(sudo部分)运行。

如果 root 用户被锁定(例如在 Ubuntu 上),您将无法使用su. 在这种情况下,您需要使用sudo -ssudo -i

  • 还值得一提的是,在许多发行版中,`sudo` 没有为普通用户提供默认权限。在这些系统上,`su` 是唯一的选择。 (5认同)

小智 12

su -s
Run Code Online (Sandbox Code Playgroud)

将切换到用户(在本例中为 root)并启动您指定的 shell,或其他几种确定 shell 的方法之一。如果您想以 root 快速使用 zsh 或其他 shell,这非常有用……并且由于某种原因您没有使用 sudo。

sudo -s
Run Code Online (Sandbox Code Playgroud)

只需使用 sudo 执行一个 shell,它就会给你一个 root shell。您也可以将 shell 传递给它。

su -s 更旧,比 sudo -s 命令更旧。我的猜测是开发人员正试图尽可能轻松地切换到使用 sudo。


小智 9

su 是更改为另一个用户的命令,可以运行 shell 或执行特定命令。您必须以其他用户身份进行身份验证。如果你想su到root,你需要root密码。

sudo 是作为不同用户执行另一个命令(可选 shell)的命令。您必须以您自己的用户身份进行身份验证。管理员在 sudoers 文件中指定使用 sudo 的权限(以及您可以使用它执行的特定操作)。

如果您授予某人对 su 的访问权限(例如,通过为他们提供 root 密码),那么他们可以用它做任何事情——运行其他命令、打开 shell、更改密码、通过 ssh 远程登录等等。您实际上是在让他们访问另一个帐户,而“su”只是他们可以用它做的一件事。

sudo 的粒度要细得多。您可以向用户或组授予权限。您可以允许用户或组在特定时间范围内执行 sudo(例如,周一至周五,上午 9 点至下午 5 点)。您可以指定允许他们运行的特定命令列表(例如仅 /usr/local/bin/run_backup),或者您可以指定他们被允许运行命令的特定用户(例如 www、backup、staff 等) )。

除了它的灵活性之外,sudo 在所有情况下都是更好的解决方案,因为它不需要访问用户没有的任何东西。如果您授予某人 sudo 访问权限,您可以通过删除他们在 sudoers 文件中的行或从 sudoers 组中删除他们来撤销它。如果您删除他们的帐户,他们的访问权限就会消失。

如果你给他们 root 密码,即使假设他们没有对它做任何不愉快的事情,那么他们将永远知道它。如果您有多人需要 root 访问权限来执行管理任务,这意味着要么在有人离开时更改所有 root 密码,要么假设他们在您离开后可以完全访问您的系统。


bad*_*adp 5

  • su会询问您root用户密码。
  • sudo会询问您密码(并且您需要清除 sudo 访问权限才能执行此操作)。

  • 通常,这是 sudo 的默认行为,但也可以将其配置为要求您提供 root 或其他密码。 (2认同)