觉得你已经了解了 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/) 荣誉推出
发表回复