两者之间有什么技术差异?我唯一注意到的是
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 下。如前所述