[pgsql-jp: 36390] Re: psql (PostgreSQL) 7.4.8 での .pgpass の不可解な動作
YAMANEKO/Mao
yneko2 @ yamamaya.com
2005年 11月 14日 (月) 17:15:40 JST
もりもとです
> .pgpass ファイルを使って特定の場合だけ認証に失敗します。
.pgpassをハンドルするあたりのソースを見てみると・・
/* Look for it in the home dir */
home = getenv("HOME");
if (!home)
return NULL;
pgpassfile = malloc(strlen(home) + 1 + strlen(PGPASSFILE) + 1);
if (!pgpassfile)
{
fprintf(stderr, libpq_gettext("out of memory\n"));
return NULL;
}
sprintf(pgpassfile, "%s/%s", home, PGPASSFILE);
ホームディレクトリを認識するのに、実効ユーザIDから求めるのではなく、
HOMEという環境変数を利用しているようですね。
シェルから実行すると、たいてい、こういう環境変数はきちんと設定されますが、
cronとか、その他の方法で起動されると、設定されていないこともあるかと。。
ちなみに、最新の 8.1 では、getpwuidを用いて、実効ユーザIDからホームを
求める方法に変更されているようです。
- YAMANEKO / Mao
http://blog.yamamaya.com/
pgsql-jp メーリングリストの案内