pra*_*kar 20 root sudo sudoers
最近,我通过 /etc/hostname.conf 更改了 sudoers 文件和主机名。更改此文件后,我的 sudo 命令需要花费大量时间。此外,它说 sudo 无法解析主机 kaagini(我机器的主机名)。
为什么 sudo 必须知道主机名才能为某些东西提供权限?
我的 sudoers 文件有一个命令“默认值 env_reset”。我看到了一些类似的问题,但这里的上下文不是远程登录。错误显示在本地主机上。
该问题的初始谷歌搜索表明 /etc/hosts 文件必须具有 127.0.0.1 的实际主机名。这解决了我的问题。但我的实际问题是:为什么我们需要这个 sudo ?无论登录位置如何,sudo 都应该工作。
Pau*_*aul 19
该/etc/sudoers文件旨在能够在多个服务器之间分发。为了实现这一点,文件中的每个权限都有一个主机部分。
这通常设置为ALL=这意味着该权限对任何服务器都有效,但是它可以设置为特定主机:
%sudo kaagini=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
为了让 sudo 知道是否应该应用此规则,它需要查找运行它的主机。它使用依赖于/etc/hosts正确性的调用,这就是为什么它在错误时失败的原因。
可能会争辩说,sudo如果主机部分设置ALL=为所有权限,则不需要费心进行名称查找,但它只是不能那样工作 - 它似乎在处理规则之前确定它运行的位置.
这实际上是为了便于维护,因为 sudo 只读取 /etc/sudoers 来查看用户可以在当前机器上做什么。但是作为拥有 100 个服务器的管理员,这可能需要维护 100 个不同的 /etc/sudoers 文件。由于 sudoers 在权限中包含主机部分,因此您可以维护单个 sudoers 文件并将其分发到所有机器,但仍然可以细化用户可以在每台机器上执行的操作。
小智 9
感谢Matthias Urlichs 在另一条评论中提交的链接错误报告,以下命令为我解决了这个问题:
Defaults !fqdn
Run Code Online (Sandbox Code Playgroud)
将此行放在/etc/sudoers文件中
| 归档时间: |
|
| 查看次数: |
7785 次 |
| 最近记录: |