我们真的应该使用 chef 来管理 sudoers 文件吗?

Should we really use chef to manage the sudoers file?

这是我的问题。我担心如果 Chef 破坏了 sudoers 文件中的某些内容,可能是 Chef 用户错误地使用了说明书,那么服务器将完全无法访问。

我不希望我们完全失去一个客户的生产服务器,因为我们弄乱了 sudoers 文件并且无法再通过 ssh 进入盒子。

Chef 有一个功能可以帮助验证者。您可以像这样在您的 sudoer 模板上设置 verifies

template '/etc/sudoers' do
  source 'whatever.erb
  verify 'visudo -c -f %{path}'
end

如果 visudo 拒绝语法,临时文件将永远不会被放置到位并且收敛将失败。当然,如果您有语法上有效但无用的 sudoer,这无济于事。您可能会考虑使用 /etc/sudoers.d 结构,因为这样可以使每一位至少保持一定程度的分离,并且更不容易意外打击自己。