答案1
我不同意格雷格·沃森的观点。
创建帐户副本意味着您将遇到保持它们同步的问题。拥有单一的身份验证信息来源可以消除很多复杂情况,并且 LDAP 更容易集成到其他服务(网络、邮件等)中。
就 sudo 访问而言 - 如果您根据组而不是个人配置 sudoers,则可以通过 LDAP 轻松控制对设施的访问。它需要更多的前瞻性规划 - 但从长远来看更容易管理 - 您管理安全性政策不是数据文件。
使 ssh 密钥在其他机器上可用的最好方法是使用某种网络文件系统 - 它可能是 NF/Samba,但复制或共享文件系统提供相同的目标(具有不同的副作用)。
第一步应该始终是定义您的安全模型——允许本地配置会为破坏该模型提供巨大的空间。
答案2
事实上,我认为 Puppet 是比 LDAP 更好的解决方案,因为它没有 SPoF(登录是本地的,但集中管理)。
无论如何,对于您的“恶意用户”场景,您可以使用ssh_authorized_key
Puppet 资源及其ensure => absent
密钥。然后使用 Mcollective/cron 来填充它。
参见文档:http://docs.puppetlabs.com/references/latest/type.html#sshauthorizedkey
困难在于让 Puppet 管理用户主目录中的文件(可能存在也可能不存在)。您可以通过在 SSH 配置中自定义 authorized_keys 文件位置(即/var/lib/ssh/authorized_keys/%u
)来缓解此问题。
答案3
我很高兴:http://www.freeipa.org/page/Main_Page
它包含您需要的一切 - 用户、sudoers、ssh 密钥,甚至 selinux 配置。