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