执行 sudo su 和 su root 的效果是一样的吗?

执行 sudo su 和 su root 的效果是一样的吗?

两者之间有什么技术差异?我唯一注意到的是

sudo su

要求您输入自己的密码(假设您不是 root 用户)

尽管

su root

要求您输入 root 密码。但是,两者似乎都可以让您登录到 root 用户帐户。

答案1

两者之间有细微的差别。su root(可以缩写为su)以调用它的用户身份运行 su 命令。以 rootsudo身份运行指定的命令 ( su)。su以 root 身份运行本质上是无操作,尽管它可能会启动一个新的 shell。 运行sudo -i是一种更简洁的(在我看来)运行 的方式sudo su

另外,如前所述,默认的 Ubuntu 安装中没有 root 密码,因此su自行调用将失败。

答案2

第二条命令无法在默认的 Ubuntu 安装中执行,因为root没有启用帐户。

但是假设您已经解锁了帐户root并向其提供了密码,那么我认为这两个命令可能仅在环境和 shell 变量设置方面有所不同。比较两种情况下的输出env,也许还可以比较输出set以查看差异。

答案3

另一个区别是,sudo 命令使用您的密码,并且您必须在 /etc/sudoers 文件中获得授权。sudoers 文件定义了您可以使用 sudo 执行哪些命令。su 命令使用 ROOT 密码。您必须知道该密码。

根据选择,您可以选择根环境或将您的环境发扬光大。

我使用“sudo bash”来获取 root shell。这几乎与“sudo -i”相同(也许是,我不确定)。环境的控制方式如下:“sudo su - other_user”获取 other_user 的环境。但“sudo su other_user”将您的环境转移到 other_user 的 UID 下。这意味着您的别名等将可用。

此外,使用 su 和 sudo 时,审计日志中的审计结果也不同。使用 sudo 可追溯性更高。最后,对于 su,您需要提供 root 密码,维护起来很麻烦。如果您使用 sudo 授权人员,只需更新 sudoers 文件即可添加或删除人员,他们只需记住自己的密码即可。Sudoers 还允许您决定其他人可以做什么。

答案4

sudo -i 是您执行的操作,至少从 11.00 开始,不确定 12.04 之前或之后。

将您的环境转发到 other_user 的 UID 下。如前所述

相关内容