/etc/sudoers.d目录下文件是否按特定顺序读取?读取规则是什么?
/etc/sudoers.d 目录文件的读取顺序及规则
嘿,这个问题问到点子上了——毕竟sudo的配置顺序直接关系到哪些权限规则最终生效,搞清楚这点对管理sudo权限很重要。
首先明确:是的,/etc/sudoers.d/ 下的文件确实会按照特定顺序被读取,具体规则如下:
- 按文件名字典序读取:系统会按照文件名的字典排序(也就是你在终端执行
ls /etc/sudoers.d不带额外参数时输出的顺序)来加载文件。举个例子,00-base会比10-custom先被读取,a-file会在b-file之前。 - 部分文件会被自动忽略:sudo会跳过几类不需要加载的文件,避免误读备份或临时文件:
- 以
.开头的隐藏文件(比如.backup-sudo-config) - 以
~结尾的备份文件(比如my-sudo-rules~) - 文件名包含
..的文件(这类涉及路径跳转,sudo会直接忽略)
- 以
- 规则优先级:后读取的文件覆盖先读取的:如果不同文件中有冲突的sudo规则(比如两个文件对同一个用户设置了互斥的权限),最后被读取的文件中的规则会生效——因为sudo是按顺序解析所有规则,最终匹配到的规则优先级最高。
另外补充个关键细节:主配置文件/etc/sudoers里的#includedir /etc/sudoers.d(部分系统用@includedir)指令决定了sudoers.d目录的加载时机。如果这个指令放在/etc/sudoers的开头,那sudoers.d的文件会先于主文件的其他规则被读取;如果放在末尾(这是大多数系统的默认设置),主文件的规则会先加载,之后才是sudoers.d里的文件按顺序加载,此时sudoers.d的规则可以覆盖主文件里的冲突设置。
很多管理员会利用文件名的字典序来控制规则优先级,比如给需要优先加载的基础规则文件加小数字前缀(00-xxx),给需要覆盖前面规则的自定义文件加大数字前缀(99-xxx),这样就能清晰管理不同场景的sudo权限。
内容的提问来源于stack exchange,提问作者MountainX
相关产品推荐
相关产品推荐

