Allow IDENT authentication on local connections (Linux only)
Hello,
the attached patch against 7.1.2 allows to use identd-like authentication
on unix domain sockets.
This is done by getting the uid of the connecting process via
getsockopt(... SO_PEERCRED ...) which to my knowledge is Linux-specific,
but I may be wrong.
The patch does not contain a configure macro to enable the feature, add
#define HAVE_SO_PEERCRED 1
to include/config.h before building to activate it.
I have been using this feature since 7.0.1 and would be grateful if
something like this could be integrated.
Regards,
Helge
Attachments:
pg-ident-local.difftext/plain; charset=US-ASCII; name=pg-ident-local.diffDownload+44-26
This is an interesting patch. We have toyed with the idea before of
getting credentials of unix-domain sockets. I think each OS has
different ways of doing it. Solaris and BSD have different ways too.
I don't see any configure.in code here to test for the CRED capability.
How does this affect pg_hba.conf? Did you specify "trust" on that line?
Do we test when they have specified trust, and if not, what word do we
use?
Hello,
the attached patch against 7.1.2 allows to use identd-like authentication
on unix domain sockets.This is done by getting the uid of the connecting process via
getsockopt(... SO_PEERCRED ...) which to my knowledge is Linux-specific,
but I may be wrong.The patch does not contain a configure macro to enable the feature, add
#define HAVE_SO_PEERCRED 1
to include/config.h before building to activate it.I have been using this feature since 7.0.1 and would be grateful if
something like this could be integrated.Regards,
Helge
Content-Description:
[ Attachment, skipping... ]
---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
On Tue, 31 Jul 2001, Bruce Momjian wrote:
I don't see any configure.in code here to test for the CRED capability.
No, as I wrote in my mail; wanted to get some comment first, if this
is useful at all. I'm no autoconf guru, so there may be a better
way (help wanted!), but here it goes as a quick hack:
AC_EGREP_CPP(yes,
#include <sys/socket.h>
#ifdef SO_PEERCRED
yes
#endif
],
AC_DEFINE(HAVE_SO_PEERCRED),
[])
and a corresponding entry to config.h.in:
/* Define if you have SO_PEERCRED */
#undef HAVE_SO_PEERCRED
I'll make a new patch if you prefer.
How does this affect pg_hba.conf? Did you specify "trust" on that line?
simply specify "ident", like the following:
local all ident sameuser
Do we test when they have specified trust, and if not, what word do we
use?
No, this would change semantics of an existing keyword. I think it is
quite logical to use "ident" as a keyword for both local and remote
connections.
Regards,
Helge
On Tue, 31 Jul 2001, Bruce Momjian wrote:
I don't see any configure.in code here to test for the CRED capability.
No, as I wrote in my mail; wanted to get some comment first, if this
is useful at all. I'm no autoconf guru, so there may be a better
way (help wanted!), but here it goes as a quick hack:AC_EGREP_CPP(yes,
#include <sys/socket.h>
#ifdef SO_PEERCRED
yes
#endif
],
AC_DEFINE(HAVE_SO_PEERCRED),
[])and a corresponding entry to config.h.in:
/* Define if you have SO_PEERCRED */
#undef HAVE_SO_PEERCRED
OK, no problem. It is easy to add.
I'll make a new patch if you prefer.
How does this affect pg_hba.conf? Did you specify "trust" on that line?
simply specify "ident", like the following:
local all ident sameuser
Do we test when they have specified trust, and if not, what word do we
use?No, this would change semantics of an existing keyword. I think it is
quite logical to use "ident" as a keyword for both local and remote
connections.
This makes sense. We can't currently do local/indent and it makes sense
to use that here. I figure we could add this and add other OS's as we
need them. Does it report an pg_hba.conf error if your OS doesn't
support this?
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026