sudo命令尝试搜索主机名


15

最近,我通过/ etc / hostname更改了sudoers文件和主机名。更改此文件后,我的sudo命令将花费大量时间。另外,它说sudo无法解析主机kaagini(我的机器的主机名)。

为什么sudo必须知道提供对某些内容的权限的主机名?

我的sudoers文件有一个命令“ Defaults env_reset”。我看到了一些类似的问题,但是这里的上下文不是远程登录。错误显示在本地主机上。

最初对该问题进行谷歌搜索表明/ etc / hosts文件必须具有127.0.0.1的实际主机名。这解决了我的问题。但是我的实际问题是:为什么我们需要sudo?sudo是否应不管登录位置如何工作。



@OliverSalzburg我已正确表述了这个问题。请让我知道是否有任何问题
prathmesh.kallurkar,2012年

Answers:


16

/etc/sudoers文件旨在能够在多个服务器之间分发。为了实现此目的,文件中的每个许可都有一个主机部分。

通常将ALL=其设置为意味着该权限对任何服务器均有效,但是可以将其设置为特定主机:

%sudo    kaagini=(ALL) ALL

为了使sudo知道是否应应用此规则,它需要查找正在运行的主机。它使用依赖/etc/hosts正确的调用,这就是为什么错误调用失败的原因。

可能会争辩说,sudo如果将主机部分设置ALL=为所有权限,则不必费心进行名称查找,但是那样行不通-在处理规则之前,它似乎可以确定运行位置。

这确实是为了简化维护,因为sudo仅读取/ etc / sudoers来查看用户可以在当前计算机上执行的操作。但是作为具有100个服务器的管理员,这可能需要100个不同的/ etc / sudoers文件进行维护。由于sudoers的权限中包含主机部分,因此您可以维护一个sudoers文件并将其分发给所有计算机,但仍可以了解用户在每台计算机上可以执行的操作。


感谢您的回答。您可以再次访问分布式sudoers文件吗?请参阅,我在machineA上运行了一个操作系统。该操作系统的权限文件(/ etc / sudoers)是否应存储在其他计算机上。或者您的回答是说sudo命令可以说类似用户John的内容,可以从machineA进行sudo,但不能从machineB进行?
prathmesh.kallurkar,2012年

确实是为了简化维护。sudo仅读取/ etc / sudoers以查看用户可以在当前计算机上执行的操作。但是作为具有100个服务器的管理员,这可能需要100个不同的/ etc / sudoers文件进行维护。由于sudoers的权限中包含主机部分,因此您可以维护一个sudoers文件并将其分发到所有计算机,但是仍然可以精确地了解用户在每台计算机上的权限。
保罗

还有一个问题...服务器管理员是否必须在每次主sudoers文件发生更改时都必须重新压缩新的sudoers文件,还是sudo提供了一种通过网络维护sudoers文件的方法?
prathmesh.kallurkar 2012年

@ prathmesh.kallurkar不,没有内置的分发方法,但是这是Linux,所以这很正常。您将使用rsync或scp或其他工具来完成此部分。
保罗

1
我认为这是一个错误(如果只有所有规则,那么sudo不需要知道其主机名),因此提交了bugzilla.sudo.ws/show_bug.cgi?id=916
Matthias Urlichs

1

感谢Matthias Urlichs在另一条评论中提交的链接错误报告,以下命令为我解决了该问题:

Defaults !fqdn

将此行放在/etc/sudoers文件中


-3

Puppet是一种配置管理软件,它能够通过读取Puppet Manifests文件自动配置一组服务器。这样的文件可以包含您的/ etc / sudoers文件的定义,然后可以将其从人偶“ master”推送到所有人偶“ agents”。然后,所有主机都将获得/ etc / sudoers文件的相同副本,该文件可以(并且应该)包含HOST定义,因此您可以向某些用户授予某些主机上的某些命令(而不是其他主机上的命令)。


3
您能否扩大答案以解释什么是木偶,在哪里找到它以及如何使用它来解决问题? 来自审核队列
fixer1234 '16

2
请阅读“我如何推荐软件”以获取有关如何推荐软件的一些提示。您应该至少提供一个链接,有关软件本身的一些其他信息,以及如何使用它来解决问题。
DavidPostill
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.