Linux sudo2025年03月17日 | 阅读 9 分钟 引言Linux sudo 命令代表 Super User Do。通常,它被用作超级用户被允许执行的一些命令的前缀。 如果我们将该命令与其他命令一起作为前缀,它将以高权限执行该命令。换句话说,它将允许用户以及适当的授权,以其他用户(例如超级用户)的身份执行命令。 它等同于 Windows 中的选项 “以管理员身份运行”。sudo 选项允许我们拥有多个管理员。可以使用 sudo 命令的用户需要在位于 “/etc/sudoers/” 的 sudoers 文件中拥有条目。 注意:要查看或编辑文件,我们必须应用 sudo 命令。为了编辑文件,建议使用“visudo”命令。sudo 命令默认要求用户使用密码验证自己,该密码是用户密码,而不是 root 密码本身。 sudo 命令语法sudo 命令的语法如下所述 sudo 命令中的选项下面解释了 sudo 命令中的一些重要选项 1. -V: 它代表 version (版本)。此选项使 sudo 命令能够打印版本号并退出。如果请求用户已经是 root,-V 选项将打印出默认的 sudo 列表暂停。 ![]() 2. -l: 它代表 list (列表)。此选项将帮助打印出用户在当前主机上允许的各种命令。 它显示当前用户可以将每个命令作为 sudo 应用。 ![]() 3. -h 或 -help: 在此选项中,h 代表 help (帮助)。此选项使 sudo 命令能够打印使用消息并退出。 ![]() 4. -v: 它代表 validate (验证)。如果 sudo 命令将更新用户的时间戳,则 validate 将在必要时提示用户密码。它将 sudo 命令超时延长 5 分钟,但不执行命令。它不提供任何结果。 5. -k: 它代表 kill (终止)。此选项使 sudo 的用户时间戳无效。因此,下次执行 sudo 命令时将需要密码。-k 选项不需要任何密码,它的加入是为了允许用户通过 .logout 文件撤销 sudo 命令的权限。 6. -b: 它代表 background (后台)。此选项通知 sudo 命令在后台执行提供的命令。 注意:如果使用此选项,我们不能使用 shell 任务控制来操纵进程。![]() 7. -K: 此选项与 -k 选项相同。但是,它代表 sure kill (确切终止)。此选项用于完全删除用户的时间戳。它同样不需要任何密码。 8. -p: 它代表 prompt (提示)。此选项允许我们覆盖(默认)密码提示并应用自定义提示。允许使用一些百分比转义符,如下所示:
![]() 9. -n: 此选项将在不询问密码的情况下运行命令。如果我们希望将一些命令作为后台任务(或在 shell 脚本中)执行,而我们不希望 sudo 命令询问密码,则此选项非常有用。此选项是 non-interactive(非交互式)的缩写。 10. -u: 它代表 user (用户)。此选项使 sudo 命令能够以用户身份执行所描述的命令,而不是以 root 身份执行。要指定 uid 而不是用户名,我们可以使用 #uid。 11. -H: 它代表 HOME。此选项可以将 HOME 环境变量设置为 root 用户的 home 目录,如 passwd 文件中所述。sudo 命令默认不更改 HOME。 12. -s: 它代表 shell (shell)。此选项执行通过 SHELL 环境变量描述的 shell(如果已设置),或者执行 passwd 文件中描述的 shell。 13. -S: 它代表 stdin (标准输入)。此选项使 sudo 命令能够通过标准输入而不是终端设备读取密码。 14. -: 此选项说明 sudo 命令必须停止处理命令行参数。它与 -s 标志结合使用时最有用。 15. -a: 它代表 authentication type (认证类型)。此选项使 sudo 命令能够在验证用户时使用所描述的认证类型,如 /etc/login/.config 所允许。 系统管理员可以通过在 /etc/login/.config 中包含 “auto-sudo” 条目来描述 sudo 特定的认证方法列表。 ![]() sudo 命令中的环境变量以下是 sudo 命令应用的一些环境变量
sudo 命令的历史Cliff Spencer 和 Robert Coggeshall 在 1980 年于纽约州立大学/布法罗分校计算机科学系编写了实际的子系统。Robert Coggeshall 将 sudo 带到了科罗拉多大学博尔德分校。在 1986 年至 1993 年间,科罗拉多大学博尔德分校工程学院和计算机科学系的 IT 成员以及 Todd C. Miller 大幅度修改了功能和代码,并将其应用于科学领域。 自 1994 年以来,最新版本由 Todd .C Miller(OpenBSD 开发者)公开管理,并自 1999 年起根据 ISC 风格的许可证共享。 Thomas Claburn 在 2009 年 11 月回应微软拥有 sudo 权限一事时,将此类不确定性描述为言过其实。这些说法被狭义地框定在特定的 GUI 上,而不是 sudo 方法。 sudo 命令的设计用户可以在必要时向 sudo 提供自己的密码,而不是超级用户,这与 su 命令不同。它允许可访问的用户在不泄露其他帐户密码的情况下行使受限权限。
sudo 命令的配置/etc/sudoers 文件包含允许在拥有 root 用户或其他列出用户权限的同时运行一组命令的用户组或用户列表。该程序可以配置为需要密码。 sudo 命令的影响在一些系统发行版中,sudo 命令已经取代了(默认)使用不同的超级用户登录进行各种管理操作,最重要的是在一些 Apple 的 macOS 以及 Linux 发行版中。 它阻止了一些漏洞利用,并且允许更安全地记录管理命令。 RBACsudo 命令可以与 SELinux 协同工作,用于在基于角色的访问控制中在不同类型的角色之间进行转换。 类似程序和工具visudo 是一个命令行实用程序,允许以故障安全方式编辑 sudo 配置文件。它执行语法和健全性检查,并通过锁阻止多个同时编辑。 runas 程序在 Microsoft Windows 中提供相同的性能;但是,它无法将当前长命令行传递给子进程、环境变量或目录。 它不支持一般提权,但有助于以任何其他用户身份执行子进程。对于 Windows,真正的 sudo 和 su 可以在 Hamilton C shell 中添加,它们可以传输所有这些状态细节并以另一个用户身份或提权启动子进程。 sudo 有 GUI 版本(尤其是 gksudo),但它在 Debian 中已被弃用,并且在 Ubuntu 中也不再使用。各种其他类型的用户界面并非直接基于 sudo 设计,但为管理目标提供了相同的(临时)权限提升,例如 Mac OS X 的授权服务、Microsoft Windows 中的用户帐户控制以及 Unix 类操作系统中的 pkexec。 自 OpenBSD 5.8 版本(2015 年 10 月)以来,doas 可用。它已被指定用于取代 OpenBSD 基本系统中的 sudo 命令。 su 与 sudo如果我们习惯于更经典的 Linux 设置,那么我们习惯于使用 su 命令来获得 root 权限。我们也可以使用 su 命令来有效地以 root 身份登录(root 的主目录成为我们的主目录)。 使用这些类型的发行版,我们也可以以路由用户身份登录。但是,以 root 用户身份登录并不是一个好主意。如果我们使用的发行版依赖于 su 命令并允许 root 用户登录,那么以我们的标准用户身份登录,然后使用 su 命令切换到 root 用户。 我们很可能会发现,在使用基于 sudo 的发行版时,我们无法以 root 用户身份登录。事实上,在 Ubuntu 等一些发行版中,root 用户帐户已被禁用。 我们无法以 root 用户身份登录并使用 su 命令成为 root 用户。我们可以做的是使用 sudo 命令执行这些命令以获得管理权限。 sudo 命令的使用有两种不同的方法来使用 Linux 执行管理应用程序。我们可以使用 su 命令切换到超级用户或 root 用户,或者我们可以利用 sudo 命令。 当我们在终端上花费时间时,sudo 是我们将非常频繁使用的一个重要命令。使用 sudo 命令而不是以 root 用户身份登录更安全,因为我们可以仅向单个用户授予一些管理权限,而无需他们知道 root 密码。 我们如何实现它取决于我们使用哪个发行版。一些发行版允许 root 用户(如 OpenSUSE、Red Hat 或 Fedora),而另一些则不允许(如 Debian 和 Ubuntu)。 使用 sudo 命令在其最基本的形式中很简单。例如,我们必须执行 dpkg 来安装一个软件。如果标准用户只运行 dpkg -i software.deb 命令,我们将收到一条错误消息,指出用户没有权限运行该命令。 这就是为什么默认情况下,标准用户无法在 Linux 机器上安装各种应用程序。如果要在 Linux 机器上安装任何应用程序,我们需要拥有超级用户的权限。 我们将转而运行 sudo dpkg -i software.deb 命令,以便我们可以成功执行安装。 安装 sudo 命令sudo 命令包已预装在大多数 Linux 发行版上。要确认该包已安装在我们的系统上,必须遵循以下步骤:
在 Fedora 和 CentOS 上安装 Sudo在 Debian 和 Ubuntu 上安装 Sudo![]() 更新 sudo 的命令![]() 下一主题基本 Linux 命令 |
我们请求您订阅我们的新闻通讯以获取最新更新。