Mik*_*age 31
实际上,它们都会使您成为超级用户。然而,他们做的事情略有不同,方式略有不同。
首先,su -
将您切换到登录 shell,而sudo -s
不会。实际上,这通常意味着您的环境变量不会切换到root
's for sudo -s
。请注意,您可以运行只是su
为了不获取登录 shell,或sudo -i
获取登录 shell [并非在所有版本中]。
其次,su
并su -
切换到新的用户,要求您为新用户进行身份验证。sudo -s
并且sudo -i
(并且只是常规sudo foo
)让您运行一个您已获得预授权的命令 [参见/etc/sudoers
],可能是通过要求您确认您当前的ID。
如果你想真的很可爱,你也可以运行sudo su -
,它会请求以su -
root用户身份登录()由root用户(sudo
部分)运行。
如果 root 用户被锁定(例如在 Ubuntu 上),您将无法使用su
. 在这种情况下,您需要使用sudo -s
或sudo -i
小智 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 密码,要么假设他们在您离开后可以完全访问您的系统。
归档时间: |
|
查看次数: |
28563 次 |
最近记录: |