[pgsql-jp: 36040] Re: PostgreSQL 7.4.8 の REVOKE 出来無いユーザ
戸田 晃晴
toda-mxa @ cnt.necst.nec.co.jp
2005年 9月 22日 (木) 21:07:24 JST
新守様
ありがとうございます。
戸田です。
ユーザID=100を使用して、ユーザ作成し、
$ createuser -i 100 100
Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER
testdb=# select * from pg_user;
usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig
----------+----------+-------------+----------+-----------+----------+----------+-----------
postgres | 1 | t | t | t | ******** | |
testuser | 101 | t | t | t | ******** | |
nagios | 102 | t | f | f | ******** | |
www | 103 | t | t | t | ******** | |
100 | 100 | t | f | f | ******** | |
(5 rows)
REVOKEすると、
testdb=# REVOKE ALL ON admin_id FROM "100";
REVOKE
を表示して、postgresユーザが、GRANTしたユーザ権限は、
REVOKE出来る様になりましたが、
他のユーザ=testusereが、GRANTしたユーザ権限は、REVOKE出来無いでしょうか?
testusereユーザから、psqlを起動しても、同じく、REVOKEを表示するが、
実際は出来ていない状態です。
testdb=# \z
Access privileges for database "testdb"
Schema | Table | Access privileges
--------+----------------+------------------------------------------------------------------
public | admin_testid | {postgres=*******/postgres}
public | dead | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
public | declined | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
public | member | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
public | myrecomnd | {postgres=a*r*w*d*R*x*t*/postgres}
public | net | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
public | netid | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
public | netid_back | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
public | objectperson | {postgres=a*r*w*d*R*x*t*/postgres}
public | resignmember | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
public | unanswer | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
(11 rows)
以上。よろしくお願いいたします。
On Thu, 22 Sep 2005 18:40:25 +0900
toshiaki shinmori <shinmori @ cbnet.co.jp> wrote:
> 新守と申します。
>
> ちょっと戸田さんと状況が違いますが参考になればと思いメール
> しました。
>
> 私の場合は各テーブルからユーザの権限をREVOKEする前に、誤って
> dropuserしてしまいました。
> 対応として、createuserの--sysidを使用してユーザIDを指定して
> ユーザを作成し、各テーブルの権限をREVOKEしまくりました。
> PostgreSQL 8.0.3でのことですが、7.3.8でも同様にできると思いま
> す。
> 一括でできればいいのでしょうがちょっと思いつきませんでした。
>
> 的外れでしたら申し訳ありません。
>
> 以上
>
>
> On Fri, 09 Sep 2005 14:59:06 +0900
> 戸田 晃晴 <toda-mxa @ cnt.necst.nec.co.jp> wrote:
>
> > 戸田と申します。
> >
> > PostgreSQL 7.4.8 の REVOKE 出来無いユーザについて、
> > アクセス権限の定義を削除する為、以下のREVOKEコマンドを
> > 実行しましたが、削除出来ません。
> > 一括で、強制削除する方法は有りませんでしょうか?
> >
> >
> > システム構成
> > OS:RedHat WS.3
> > $ cat /etc/redhat-release
> > Red Hat Enterprise Linux WS release 3 (Taroon)
> >
> > PostgreSQL 7.4.8
> > testdb=# select version();
> > version
> > -------------------------------------------------------------------------
> > PostgreSQL 7.4.8 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-20)
> > (1 row)
> >
> > PostgreSQL 7.4.6から、PostgreSQL 7.4.8にバージョンアップして使用しています。
> > バージョンアップの為、データをバックアップ/リストア時に、
> > $ psql -d template1 -f db.out
> > psql:db.out:112: ERROR: user "100" does not exist
> > GRANT ALL ON TABLE t_netid TO "100";
> > psql:db.out:145: ERROR: user "100" does not exist
> >
> > を表示したので、データはそのまま使用しています。
> >
> >
> > アクセス権限の取り上げが出来無いユーザが有ります。
> >
> > testdb=# \z
> > Access privileges for database "testdb"
> > Schema | Table | Access privileges
> > --------+---------------+------------------------------------------------------------------
> > public | admin_testid | {postgres=*******/postgres,100=arwdRxt/postgres}
> > public | dead | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
> > public | declined | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
> > public | member | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
> > public | myrecomnd | {postgres=a*r*w*d*R*x*t*/postgres,100=arwdRxt/postgres}
> > public | net | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
> > public | netid | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
> > public | netid_back | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
> > public | objectperson | {postgres=a*r*w*d*R*x*t*/postgres,100=arwdRxt/postgres}
> > public | resignmember | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
> > public | unanswer | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
> > (11 rows)
> >
> > の表示で、ユーザ登録されていないユーザ=100 が表示されており、
> > REVOKEコマンドで削除出来ません。
> > REVOKE ALL PRIVILEGES ON admin_testid FROM "100";
> > ERROR: user "100" does not exist
> >
> > ユーザ=100 を登録して、
> > testdb=# \du
> > List of database users
> > User name | User ID | Attributes
> > -----------+---------+----------------------------
> > 100 | 104 |
> > nagios | 102 | create database
> > testuser | 101 | superuser, create database
> > postgres | 1 | superuser, create database
> > www | 103 | superuser, create database
> > (5 rows)
> >
> > REVOKEすると、
> > REVOKE ALL PRIVILEGES ON admin_testid FROM "100";
> > REVOKE
> >
> > を表示しますが、削除出来ていません。以下のコマンドでも削除出来ませんでした。
> > REVOKE ALL PRIVILEGES ON DATABASE testdbe FROM "100" CASCADE;
> > REVOKE
> > REVOKE ALL PRIVILEGES ON DATABASE testdbe FROM "100" RESTRICT;
> > REVOKE
> >
> > REVOKE ALL PRIVILEGES ON admin_testid FROM "100" CASCADE;
> > REVOKE
> > REVOKE ALL PRIVILEGES ON admin_testid FROM "100" RESTRICT;
> > REVOKE
> >
> > ユーザ=www も、REVOKE出来ません。ユーザ名にpublicを使用しても同じでした。
> >
> > ユーザ=100 を登録して、バックアップ/リカバーすれば
> > 問題無く終了すると思われますが、必要ないユーザは削除したい。
> >
> >
> > 以上。よろしくお願いいたします。
> >
>
> +----+----+----+----+----+----+----+
> (株)コンピューター・ビジネス 新守
> e-mail: shinmori @ cbnet.co.jp
> +----+----+----+----+----+----+----+
--
戸田 晃晴 <toda-mxa @ cnt.necst.nec.co.jp>
pgsql-jp メーリングリストの案内