默认情况下,sudo 解析/etc/sudoers.d/*
文件名中不包含.
和 的配置文件~
,意味着user.conf
被忽略并被user_conf
解析。
为什么 /etc/sudoers.d 会忽略带点的文件?这似乎是一个奇怪的决定,肯定会让很多系统管理员感到困扰?我浪费了很多时间才弄清楚为什么
/etc/sudoers.d/hans.conf
没用〜
答案1
从man 5 sudoers
[强调我的]:
该
@includedir
指令可用于创建一个sudoers.d
目录,系统包管理器可以在包安装过程中将 sudoers 文件规则放入该目录中。例如,给定:@includedir /etc/sudoers.d
sudo
将暂停处理当前文件并读取每个文件/etc/sudoers.d
,跳过以字符结尾~
或包含.
字符的文件名避免导致包管理器或编辑器临时/备份文件出现问题。
答案2
它试图忽略软件包管理器可能留下的所有可能的“备份”文件。例如,如果/etc/sudoers.d/foo
是或已经作为软件包的一部分分发,那么您可能在某个时候拥有foo.dpkg-new
或foo.rpmold
或foo.pacsave
或foo.ucf-new
,它们都不应该处于“活动”状态(它们要么属于已删除的软件包,要么是要安装的新版本)。
其他工具通常选择要求特定的后缀(例如,仅接受*.conf
而忽略其余部分);而 sudo 则选择拒绝任何带有后缀的文件名。