sudo权限设置的/etc/sudoers文件的编写简介
介绍
你好。我是系统解决方案部门的基础设施经理。
这是一个突然的问题,但是你们都使用 sudo
它用于使用 root 用户或其他用户权限执行命令,因此它可能是您在终端上工作时经常使用的命令。
但是,如果任何操作系统用户能够使用此命令,他们将能够编辑重要的配置文件(例如进程配置)或操作守护程序,从而产生安全风险。
因此,通常会在配置文件中调整“谁可以做什么、在哪里、做什么”的权限。
这次,我想重点讨论一下 sudo 权限设置文件“/etc/sudoers”的描述格式。
设置服务器时您可能有机会修改此文件。
你们都是以某种方式复制和粘贴吗?
通过了解描述方法,可以防止意外的发生,也可以用在更实用的方法上,所以请趁这个机会来看看。
“/etc/sudoers”的描述
“/etc/sudoers”文件中有几个默认条目,但让我们挑选一个。
根全部=(全部)全部
下面,我将根据这个描述添加一个解释。
最左边的“根”
您可以在此处指定谁拥有权限。
在本例中,我们指定授予“root”用户的权限。
如果您想确定一般用户的权限,请在此处输入用户名。
“ALL”位于“=”左侧
当在多个服务器上使用相同的设置时,这是哪个服务器的设置将反映该行中的规范。
如果您单独管理每台服务器上的 sudo 设置,则设置文件将始终应用于该服务器本身。
那么这种情况下,这个描述为“ALL”是没有问题的。
例外情况是使用目录服务等集中管理来自多个服务器的信息。
“=”右边,括号的内容
前提是sudo命令原本是一个“代表另一个用户或组进行操作并以该权限进行操作”的命令,而在未指定用户或组时“以root权限进行操作”是默认的。这只是一个动作。
此项描述哪些用户可以代表其他用户执行命令。
注意,上例中省略了括号的内容,但原来如(ALL:ALL)中,可以用“sudo -u”替换的用户在冒号的左边,而可以用“sudo -u”替换的用户在冒号的左边,替换为“sudo -g”在右侧指定组。
例如,在您想要授予用户执行只能以 root 权限执行的命令的权限时,
你是否可以成为普通用户(你可以成为更多用户)并不重要,因此目标通常被授予成为任何人的特权,包括root,例如(ALL)。
当然,如果明确指定(root)也没有问题。
*顺便说一句,如果省略“:ALL”部分,即括号的后半部分,则意味着“没有可以使用的组= sudo -g 无法使用。”
关于最右边的 ALL
指定允许哪些操作。
写下 ALL 意味着你可以做任何事情。
例如,如果你想只允许hoge用户重新启动Apache,则如下编写。
*注意命令必须写完整路径。路径可能不同,因此请使用which命令检查。 )
hoge ALL=(ALL:ALL) /usr/bin/systemctl 重新启动 httpd
上面的描述只允许您重新启动,所以如果您还想能够使用其他命令,请用逗号将它们连接起来并如下所示编写。
hoge ALL=(ALL:ALL) /usr/bin/systemctl 重新启动 httpd, /usr/bin/systemctl 状态 httpd
另一方面,您可以通过使用“!”编写描述来仅禁用特定命令,如下所示。
hoge ALL=(ALL:ALL) ALL, !/usr/bin/systemctl 重新启动 httpd, !/usr/bin/systemctl 状态 httpd
奖金
如果在可以指定用户的部分的开头添加“%”,则将指定一个组。
“/etc/sudoers”文件默认也有以下描述,正是因为这个描述体现了当用户被添加到wheel组时,他们获得了与root权限相同的权力。
%wheel 全部=(全部) 全部
概括
你怎么认为?
如果你正确配置 sudoers,当你创建用户时,你可以说“我只想让这个用户执行这个命令”,或者“我不想授予 root 权限,但我希望能够执行特定命令。”可以进行微调。
从安全角度来看,这是一个关键文件,因此在设置之前一定要了解其结构!