su
我很好奇为什么运行超级用户命令而不是超级用户执行( sudo
)。
答案1
su
和sudo
是作为另一个用户(可能是 root)运行程序(可能是 shell)的两种最常见的方法。它们具有相同的效果,但在如何确定是否允许该操作方面,它们的工作方式非常不同:
su
要求源用户是 root,或者用户证明他们有权访问目标帐户(通常通过键入密码)。sudo
需要预授权:源用户、目标用户和命令的组合必须在其配置文件中声明。
su
首先出现:它早在Unix V31973 年。当时它只涵盖成为 root 的情况(因此得名:s上-你爵士)。sudo
稍后来了1980年,添加定义复杂授权策略的可能性。因为su
它更旧、更简单,所以它是一个标准工具,可在所有类 UNIX 系统上使用,而sudo
虽然是一个非常常见的附加组件,但在默认安装和嵌入式系统中通常会缺失。
Debian 默认是su
因为它是基本系统的一部分 — 在 Linux 下,有一个su
程序GNU Coreutils(以及ls
、cp
等)并在实用程序Linux(以及mount
、fdisk
、taskset
等)。许多以 root 身份运行的系统脚本都用于su
以系统用户身份启动任务。该sudo
软件包是可选的,因为您可以在没有它的情况下运行系统,它是最终用户工具,很少被其他软件使用。
关于安全性,请参见获得root权限最安全的方法是:sudo、su还是login?
答案2
Sudo 是一个附加程序,系统上可能安装也可能不安装。它sudo
在 Debian 上以软件包形式提供。如果没有有关您所指的具体情况/代码的更多信息,最可能的答案是不能假定已安装 sudo,su
为什么POSIX 标准要求存在作为 Debian 基本系统的一部分安装。因此,任何力求最大可移植性的脚本或教程都将使用su
.