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
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: Разделение прав |