介绍如何编写 /etc/sudoers 文件,即 sudo 权限配置文件

 

介绍

您好。我是系统解决方案部门的基础设施工程师 Wasshoi Man。
这个问题可能有点突然,但请问大家都在使用 sudo

这是你在终端工作时可能会经常用到的命令,因为它用于以 root 用户或其他用户权限执行命令。

但是,如果任何操作系统用户都可以使用此命令,从安全角度来看将会很危险,因为它允许他们编辑重要的配置文件,例如进程配置和运行守护进程。

因此,权限通常在配置文件中进行调整,以确定谁可以对什么对象、在哪里以及对什么对象执行什么操作。

这次,我想重点介绍 sudo 权限配置文件“/etc/sudoers”的描述格式。
设置服务器时也可能需要编辑此文件

你是不是想到什么就复制粘贴什么?

了解如何书写将有助于您预防意外事故,并使您能够在更实际的方面使用它,所以请借此机会了解一下。

“/etc/sudoers”的解释

“/etc/sudoers”文件中有几个默认条目,但我们来挑选一个。

根 ALL=(ALL) ALL

下面,我们将根据以上描述添加解释。

最左边的“根”

在这里您可以指定哪些人拥有权限。

在这种情况下,我们将指定要授予“root”用户的权限。

如果要为普通用户定义权限,请在此处输入用户名。

“全部”位于“="”左侧

此设置决定当在多个服务器上使用相同的设置时,线路的设置将反映在哪个服务器上。

如果您在每台服务器上单独管理 sudo 设置,则配置文件中的设置将始终反映在该服务器上。
在这种情况下,此处填写“ALL”即可。

但如果您使用目录服务或类似服务来集中管理来自多个服务器的信息,则此规则不适用。

括号内的“="”右侧

作为前提,sudo 命令最初是一个“模拟另一个用户或组并以他们的权限执行操作”的命令,而“以 root 权限操作”只是在既没有指定用户也没有指定组时的默认行为。

此字段描述可以代表哪些用户执行命令。

尽管上面的示例中省略了括号内的内容,但通常应将其指定为 (ALL:ALL),其中要模拟的用户由“sudo -u”指定在冒号的左侧,要模拟的组由“sudo -g”指定在冒号的右侧。

例如,如果您想授予用户运行只能以 root 权限运行的命令的权限,您可以执行以下操作:

用户能否成为普通用户并不重要(他们可以成为比普通用户更多的用户),因此目标通常会被赋予成为任何用户(包括 root 用户)的权限,例如(ALL)。

当然,如果您明确指定(root),则不会有问题。

*顺便说一下,如果您省略“:ALL”部分(即括号的后半部分),则表示“没有要加入的组 = 不能使用 sudo -g”。

几乎所有极右翼分子

请明确规定允许的操作。

写上“ALL”意味着你可以做任何事。

例如,如果您只想允许 hoge 用户重启 Apache,请按如下方式编写:

*请注意,您需要输入命令的完整路径。路径可能不同,因此请使用 which 命令检查路径。)

hoge ALL=(ALL:ALL) /usr/bin/systemctl restart httpd

 

上面的代码只允许你重启程序,所以如果你还想使用其他命令,请像下面这样用逗号连接起来写出这些命令。

hoge ALL=(ALL:ALL) /usr/bin/systemctl restart httpd, /usr/bin/systemctl status httpd

 

另一方面,您可以使用“!”来禁用特定命令,如下所示。

hoge ALL=(ALL:ALL) ALL, !/usr/bin/systemctl restart httpd, !/usr/bin/systemctl status httpd

奖金

指定用户时,在用户名称前加上“%”将指定用户组。

“/etc/sudoers”文件还包含以下默认条目,正是该条目赋予了被放入 wheel 组的用户与 root 用户相同的权限。

%wheel ALL=(ALL) ALL

概括

你怎么认为?

如果正确配置 sudoers,在给用户发出命令时,可以进行一些微调,例如“我只想让这个用户能够运行这个命令”或“我不想授予 root 权限,但我希望该用户能够运行特定的命令”。

从安全角度来看,这是一个至关重要的文件,所以务必了解其结构并进行正确设置!

如果您觉得这篇文章有用,请点击【点赞】!
29
加载中...
29票,平均分:1.00/129
55,351
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

基础设施 Wasshoi Man

我在系统解决方案部门工作。
我热爱这份工作,所以每天都努力学习,幸运的是,Beyond 录用了我。
从九年前开始,我就一直在考虑从眼镜换成隐形眼镜。