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
Views: Raw Message | Whole Thread | Download mbox | Resend email
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

Browse pgsql-ru-general by date

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