Skip site navigation (1) Skip section navigation (2)

Re: Разделение

From: "Andrey N(dot) Oktyabrski" <ano(at)antora(dot)ru>
To: "Andrey N(dot) Oktyabrski" <ano(at)antora(dot)ru>
Cc: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>, pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: Разделение
Date: 2006-02-17 11:59:03
Message-ID: 43F5BA87.8090606@antora.ru (view raw or flat)
Thread:
Lists: pgsql-ru-general
Andrey N. Oktyabrski wrote:
> qq=> UPDATE t SET a = 'ano' where i = 3;
> ERROR:  доступ запрещён для связи t
> qq=> DELETE FROM t where i > 2;
> ERROR:  доступ запрещён для связи t
> 
> Потому я и хочу возможность update/delete без необходимости разрешения 
> select.
Тут вот человек патчик соорудил, который даёт нужную функциональность, 
но мы не уверены, что он не делает где-то дырку в безопасности. Надо, 
чтобы его проверил человек, хорошо знакомый с дизайном постгреса:

--- postgresql-8.1.2/src/backend/executor/execMain.c    2005-11-22 
21:23:08.000000000 +0300
+++ postgresql/src/backend/executor/execMain.c  2006-02-17 
13:19:29.000000000 +0300
@@ -460,6 +460,16 @@
         bool            do_select_into;
         TupleDesc       tupType;

+       if ( operation == CMD_UPDATE )
+       {
+               ListCell   *l;
+               foreach(l, parseTree->rtable)
+               {
+                       RangeTblEntry *rte = lfirst(l);
+                       rte->requiredPerms ^= ACL_SELECT;
+               }
+       }
+
         /*
          * Do permissions checks.  It's sufficient to examine the 
query's top
          * rangetable here --- subplan RTEs will be checked during

In response to

pgsql-ru-general by date

Next:From: Andrey N. OktyabrskiDate: 2006-03-02 12:45:10
Subject: Компиляция pgsql на солярке компилятором sun studio
Previous:From: Oleg BartunovDate: 2006-02-14 15:43:43
Subject: Re: Разделение прав

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group