如何判断postgres是否安装了kerberos?

时间:2013-01-28 18:57:44

标签: postgresql kerberos

我正在尝试配置postgres(8.4.13)以使用Kerberos。我似乎无法让它发挥作用。我一直在阅读的一个“问题”是,必须使用kerberos支持构建postgres。好吧,我有的postgres是从互联网上下载的rpm。我怎么知道这个postgres是否是用Kerberos支持构建的?有没有办法列出“已安装的组件?谢谢!”

2 个答案:

答案 0 :(得分:6)

pg_config可能会有所帮助,例如:

pg_config --configure

答案 1 :(得分:3)

某些二进制文件具有类似命令的命令,可以让您查看它们的编译方式。我不确定postgres是否会这样做。您可以使用--version(但这通常非常简约)和--describe-config将转储如下值:

Security and Authentication    STRING  FILE:/usr/local/etc/postgresql/krb5.keytab 
                 Sets the location of the Kerberos server key file

如果为postgresql安装配置了kerberos功能。

许多打包系统也有捕获编译时选项的方法,这些选项被传递给构建过程(FreeBSD的pkg info -f例如这样做)。已经有一段时间了,因为我使用了rpm,而较新的版本可能有直接在二进制上进行此类查询的方法。在我管理的基于rpm的系统上,我会将src.rpm和.spec文件保存在每个已安装应用程序的本地存储库中。这是为了遵守内部“政策”:-)并跟踪配置和OPTFLAGS设置,构建中使用的源代码等。

以下是对类似问题的回复:

https://serverfault.com/questions/36037/how-can-i-find-what-options-an-rpm-was-compiled-with

用于查看二进制文件链接的库的通用UNIX方法是使用“ldd”,如下所示:

$~/ ldd /usr/local/bin/postgres                              
/usr/local/bin/postgres:
    libgssapi.so.3 => /usr/local/lib/libgssapi.so.3 (0x800a38000)
    libxml2.so.5 => /usr/local/lib/libxml2.so.5 (0x800b74000)
    libpam.so.5 => /usr/lib/libpam.so.5 (0x800dc4000)
    libssl.so.6 => /usr/lib/libssl.so.6 (0x800ecc000)
    libcrypto.so.6 => /lib/libcrypto.so.6 (0x80101f000)
    libm.so.5 => /lib/libm.so.5 (0x8012bf000)
    libc.so.7 => /lib/libc.so.7 (0x8013df000)
    libintl.so.9 => /usr/local/lib/libintl.so.9 (0x801621000)
    libheimntlm.so.1 => /usr/local/lib/libheimntlm.so.1 (0x80172a000)
    libkrb5.so.26 => /usr/local/lib/libkrb5.so.26 (0x801830000)
    libheimbase.so.1 => /usr/local/lib/libheimbase.so.1 (0x8019ad000)
    libhx509.so.5 => /usr/local/lib/libhx509.so.5 (0x801ab1000)
    libwind.so.0 => /usr/local/lib/libwind.so.0 (0x801bf9000)
    libsqlite3.so.8 => /usr/local/lib/libsqlite3.so.8 (0x801d21000)
    libasn1.so.8 => /usr/local/lib/libasn1.so.8 (0x801ec3000)
    libcom_err.so.2 => /usr/local/lib/libcom_err.so.2 (0x802058000)
    libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x80215b000)
    libroken.so.19 => /usr/local/lib/libroken.so.19 (0x802358000)
    libcrypt.so.5 => /lib/libcrypt.so.5 (0x802469000)
    libthr.so.3 => /lib/libthr.so.3 (0x802589000)
    libz.so.5 => /lib/libz.so.5 (0x8026a2000)

正如您在我的系统上看到的那样,postgresql二进制文件链接到libkrb5.so.26,libgssapi.so.3,libheimntlm.so.1等(这些是Heimdal Kerberos库)。

[编辑:我仍然认为Milen的反应很可能是最好的,最彻底的和推荐的方法但是我今天遇到的一个警告是:在我的大多数系统上(大多数是FreeBSD)pg_config似乎是安装的postgresql-client pkg等可能有不同的选项集,而不是构建postgresql-server时选择的选项。我倾向于在客户端中构建大量功能,以便他们可以连接到通常在不同机器上运行的一系列服务器。具有客户端命令行shell和库(在大多数基于RPM或Linux系统中的postgresql-devel)的包为连接到数据库服务器的python,perl等的数据库模块和库提供了功能。当您拥有一个在数据库后端抓取并存储数据(CRUD)的Web应用程序时,客户端库通常驻留在单独的主机上。也就是说,最有可能的二进制客户端/服务器/开发包使用相同的选项集构建;-) 无论如何,只是另一个数据点...欢呼。]

希望有所帮助。

干杯,