/etc/sudoers.d 中的文件是否按特定顺序读取?如果是这样,该排序的惯例是什么?
答案1
从man sudoers
,使用此命令找到的确切位置:
$ LESS='+/sudo will suspend processing' man sudoers
文件按词汇顺序进行解析。也就是说,
/etc/sudoers.d/01_first
将在之前解析/etc/sudoers.d/10_second
。请注意,由于排序是词法排序,而不是数字排序,因此/etc/sudoers.d/1_whoops
将在/etc/sudoers.d/10_second
.文件名中一致数量的前导零可以避免此类问题。
这就是标题下的内容:Including other files from within sudoers
$ LESS='+/Including other files from within sudoers' man sudoers
LC_COLLATE
词汇顺序也称为“字典顺序”,由区域设置时环境变量定义的值给出C
(数字然后大写字母然后小写字母)。这与 给出的顺序相同LC_COLLATE=C ls /etc/sudoers.d/
。
包含的文件列表以及它们加载的具体顺序可以通过以下方式公开:
$ visudo -c
/etc/sudoers: parsed OK
/etc/sudoers.d/README: parsed OK
/etc/sudoers.d/me: parsed OK
/etc/dirtest/10-defaults: parsed OK
/etc/dirtest/1one: parsed OK
/etc/dirtest/2one: parsed OK
/etc/dirtest/30-alias: parsed OK
/etc/dirtest/50-users: parsed OK
/etc/dirtest/Aone: parsed OK
/etc/dirtest/Bone: parsed OK
/etc/dirtest/aone: parsed OK
/etc/dirtest/bone: parsed OK
/etc/dirtest/zone: parsed OK
/etc/dirtest/~one: parsed OK
/etc/dirtest/éone: parsed OK
/etc/dirtest/ÿone: parsed OK
注意顺序不是 UNICODE 而是 C。
答案2
从sudoers
手册(关于#includedir
指令):
#includedir /etc/sudoers.d
sudo
将读取 中的每个文件/etc/sudoers.d
,跳过以字符结尾~
或包含.
字符的文件名,以避免导致包管理器或编辑器临时/备份文件出现问题。文件按词汇顺序进行解析。也就是说,/etc/sudoers.d/01_first
将在之前解析/etc/sudoers.d/10_second
。请注意,由于排序是词法排序,而不是数字排序,因此/etc/sudoers.d/1_whoops
将在/etc/sudoers.d/10_second
.在文件名中使用一致数量的前导零可以避免此类问题。
看man 5 sudoers
。
上面提到的词汇顺序与您从or区域设置中的ls
(or echo *
)获得的顺序相同。C
POSIX