我正在尝试为我的用户创build一个集中的数据库,以便我的服务器和Web访问,这样我就可以允许这些用户通过sshlogin(如果他们有权访问),并通过我的Web服务查看他们的帐户和系统信息。
我已经阅读了LDAP,但我希望能够pipe理Postgresql等不同数据库中的用户,以便我可以更轻松地将数据库绑定到Web服务,并在需要更多用户详细信息时控制SQL迁移和模式。
我研究了Puppet之类的东西,但是对于我想要做的事情来说有点太多了,现在我不需要pipe理多个服务器。 我试图研究Puppet如何处理服务器用户身份validation,但是我没有find太多的信息。
我的问题:是否有办法创build一个LDAP以外的用户信息集中的数据库,如Postgres,我可以用来对ssh和web用户进行身份validation?
是。
Linux和UNIX系统上的系统authentication已经通过PAM,Pluggable Authentication Modules几十年了。
PAM的原理是,如果你想使用新的身份validation后端,你不需要重新编译所有使用身份validation,如系统validation,SSH,FTP,远程loginsudo等应用程序。简单地加载正确的模块和使用PAM的一切可以自动使用新的身份validation后端。
因此,如果您的应用程序使用PAM(还有很多很多),那么已经存在,或者您可以为备用用户/身份validation存储创build一个PAM模块。
pam-pgsql就是这样一个使用PostGres SQL数据库中的表的PAM模块。 这将使与Web应用程序的集成变得简单,或者您可以使用Web服务器的PAM集成以及validation访问。
此外,一些应用程序与PAM之外的数据库后端本地集成。
LDAP在Linux机器上确实做了三件事情:
validation:
这是PAM的领域,它使用用户名/密码来validation用户是用户。
授权:
这是PAM不能满足需求的地方,PAM是开/关,你要么获得批准,要么你没有。 授权是关于组员资格。
属性:
你的主目录在哪里? 你叫什么名字?
最后两项由nss后端处理。 如果您查看/etc/nsswitch.conf,您会发现它使用标准后端将系统调用转换为ldap查找。
如果你不想使用LDAP,那么你需要使用不同版本的nss插件库来支持你想要使用的数据库。 其中一些存在,但是你正在重新创造一个相当大的轮子。
就傀儡而言,它使用SSL证书进行客户端身份validation。 与ssh的方式有些相似。
你的傀儡问题应该是一个不同的问题,因为它不是真的相关。
我已经考虑过你所要求的更多,你可以通过一种方法来实现你想要使用puppet模块中的数据库查询。 由于puppet语言是它自己的东西,而不是通用语言的扩展,所以您可能必须编写/寻找一个puppet资源提供者,它将返回一个用户名列表,然后让puppetpipe理/ etc / passwd等机器上的文件。
这将是更直接的执行在厨师。 我相信这是可能的傀儡。 也可以(和恕我直言最佳做法)从数据库条目更新您的LDAP服务器。 这实际上取决于您运营的规模以及您希望更改传播的速度。