[pgsql-jp: 34764] Re: 最後に作成したグループにHBAが効かない
TAKATSUKA Haruka
harukat @ epoque.co.jp
2005年 1月 29日 (土) 03:37:43 JST
高塚と申します。
On Fri, 28 Jan 2005 16:23:07 +0900
佐藤卓史 <takusato1974 @ yahoo.co.jp> wrote:
> はじめまして。佐藤と申します。
> よろしくお願いいたします。
>
> Gentoo Linux 上に PostgreSQL 7.4.6 をインストール、設定していて、
> 「pg_hba.conf」の「+グループ名」が効かないことがあることに気が付きました。
本当ですね。
=# CREATE GROUP group1;
=# CREATE USER user1 encrypted password 'user1';
=# ALTER GROUP group1 ADD USER user1;
とすると、即座に $PGDATA/data/global/pg_group が更新されるのに、
=# create group group1;
=# create user user1 encrypted password 'user1' in group group1;
だと変化しません。
|backend/commands/user.c
| void
| AtEOXact_UpdatePasswordFile(bool isCommit)
| {
| Relation urel = NULL;
| Relation grel = NULL;|
|
| if (!(user_file_update_needed || group_file_update_needed))
| return;
user_fileとgroup_fileを片方ずつ更新が必要な状況なら動作するわけで、
これバグですよね。
(残念ながら) PosetgreSQL 8.0では既に直されているみたいです。
#ピント外れてましたら識者ツッコミ求む
>
> いろいろ調べてみると、どうも一番最後に作成したグループに対して効かないよ
> うです。再現させる手順は以下の通りです。
>
> --------
> 1. デーベース初期化後、「pg_hba.conf」を以下のように変更し、PostgreSQLを
> 起動。
> local all +group1,+group2 md5
> local all all trust
>
> 2.グループ「group1」と所属するユーザ「user1」を作成。
> # create group group1;
> # create user user1 encrypted password 'user1' in group group1;
>
> 3.「psql -U ユーザ名 -l」を実行。
> → user1:パスワードを求められない。
>
> 4.グループ「group2」と所属するユーザ「user2」を作成。
> # create group group2;
> # create user user2 encrypted password 'user2' in group group2;
>
> 5.「psql -U ユーザ名 -l」を実行。
> → user1:パスワードを求められる。
> user2:パスワードを求められない。
>
> 6.グループ「dummy」を作成し、すぐに削除。
> # create group dummy;
> # drop group dummy;
>
> 7.「psql -U ユーザ名 -l」を実行。
> → user1、user2:パスワードを求められる。
> --------
>
> アクセス制御をかけたいグループを最後に作成しなければ問題ないのですが、ご
> 報告させていただきます。
>
> --
> Takuji Sato <takusato1974 @ yahoo.co.jp>
> http://www.geocities.jp/takusato1974/
>
> __________________________________
> Let's Celebrate Together!
> Yahoo! JAPAN
> http://pr.mail.yahoo.co.jp/so2005/
>
--
-- TAKATSUKA Haruka -- 高塚 遙 --
harukat @ epoque.co.jp / arukat @ ezweb.ne.jp
http://harukat.hp.infoseek.co.jp
pgsql-jp メーリングリストの案内