关于 sudo 你可能不知道的

Peter Czanik 的头像

·

·

·

8,198 次阅读

觉得你已经了解了 sudo 的所有知识了吗?再想想。

大家都知道 sudo,对吗?默认情况下,该工具已安装在大多数 Linux 系统上,并且可用于大多数 BSD 和商业 Unix 变体。不过,在与数百名 sudo 用户交谈之后,我得到的最常见的答案是 sudo 是一个使生活复杂化的工具。

有 root 用户和 su 命令,那么为什么还要使用另一个工具呢?对于许多人来说,sudo 只是管理命令的前缀。只有极少数人提到,当你在同一个系统上有多个管理员时,可以使用 sudo 日志查看谁做了什么。

那么,sudo 是什么? 根据 sudo 网站

“sudo 允许系统管理员通过授予某些用户以 root 用户或其他用户身份运行某些命令的能力,同时提供命令及其参数的审核记录,从而委派权限。”

默认情况下,sudo 只有简单的配置,一条规则允许一个用户或一组用户执行几乎所有操作(在本文后面的配置文件中有更多信息):

%wheel ALL=(ALL) ALL

在此示例中,参数表示以下含义:

  • 第一个参数(%wheel)定义组的成员。
  • 第二个参数(ALL)定义组成员可以在其上运行命令的主机。
  • 第三个参数((ALL))定义了可以执行命令的用户名。
  • 最后一个参数(ALL)定义可以运行的应用程序。

因此,在此示例中,wheel 组的成员可以以所有主机上的所有用户身份运行所有应用程序。但即使是这个一切允许的规则也很有用,因为它会记录谁在计算机上做了什么。

别名

当然,它不仅可以让你和你最好的朋友管理一个共享机器,你还可以微调权限。你可以将以上配置中的项目替换为列表:用户列表、命令列表等。多数情况下,你可能会复制并粘贴配置中的一些列表。

在这种情况下,别名可以派上用场。在多个位置维护相同的列表容易出错。你可以定义一次别名,然后可以多次使用。因此,当你对一位管理员不再信任时,将其从别名中删除就行了。使用多个列表而不是别名,很容易忘记从具有较高特权的列表之一中删除用户。

为特定组的用户启用功能

sudo 命令带有大量默认设置。不过,在某些情况下,你想覆盖其中的一些情况,这时你可以在配置中使用 Defaults 语句。通常,对每个用户都强制使用这些默认值,但是你可以根据主机、用户名等将设置缩小到一部分用户。这里有个我那一代的系统管理员都喜欢玩的一个示例:“羞辱”。这些只不过是一些有人输入错误密码时的有趣信息:


czanik@linux-mewy:~> sudo ls
[sudo] password for root:
Hold it up to the light 

via: <https://opensource.com/article/19/10/know-about-sudo>

作者:[Peter Czanik](https://opensource.com/users/czanik) 选题:[lujun9972](https://github.com/lujun9972) 译者:[wxy](https://github.com/wxy) 校对:[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

1 条回复

  1. 来自北京的 Firefox 52.0|GNU/Linux 用户 的头像
    来自北京的 Firefox 52.0|GNU/Linux 用户

    虽然基本看不懂,但是感觉好NB的样子

    来自北京

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注