关于/etc/sudoers.d目录忽略含点号文件名的技术疑问
关于/etc/sudoers.d目录忽略含点号文件名的技术疑问
太懂你这种浪费好几分钟排查的崩溃感了!我之前也踩过这个坑,给你好好捋捋:
首先先明确默认规则:默认情况下sudo解析/etc/sudoers.d/下的配置文件时,会自动忽略文件名包含.或~的文件——这就导致你放的hans.conf直接被跳过,而像hans_conf这种用下划线代替点的文件就能正常被解析。
至于为啥会有这么“反直觉”的设计?其实是出于安全和避免配置出错的考虑:
- 很多文本编辑器(比如Vim)在编辑文件时会生成临时交换文件(比如
.hans.conf.swp),编辑完成后还可能留下带~的备份文件(比如hans.conf~); - 如果sudo不加过滤地加载所有文件,这些临时/备份文件要么内容不完整,要么格式不符合sudoers的要求,很容易导致sudo配置失效,甚至直接让你连sudo权限都用不了。
当然,如果实在习惯用.conf后缀的文件名,也不是没办法解决:你可以修改/etc/sudoers里的#includedir配置行,把默认的#includedir /etc/sudoers.d改成自定义的匹配规则,比如#includedir /etc/sudoers.d/*.conf,这样就能加载所有.conf结尾的文件了。不过要注意,这么改之后如果有编辑器生成的.conf.swp这类带点的临时文件,也会被尝试加载,反而可能引发新的问题,所以操作前一定要谨慎。
备注:内容来源于stack exchange,提问作者hanshenrik
相关产品推荐
相关产品推荐

