[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 メーリングリストの案内