Andrey N. Oktyabrski wrote:
> Здравствуйте.
>
> Стоит такая задача:
> есть несколько таблиц, записи в них имеют признак типа "такой-то юзер
> постгреса имеет право на select/update этой записи", надо сделать
> как-то, чтобы юзер не мог сделать то, что ему запрещено.
>
> Я планировал сделать это так:
> create table _tbl (...);
> create view tbl as select * from _tbl where owner = session_user();
> revoke all on tbl from <юзер>;
> grant select on tbl to <юзер>;
> revoke all on _tbl from <юзер>;
> grant insert, update, delete on _tbl to <юзер>;
>
> Но тогда
> update _tbl set fld = 123 where id = 21;
> не работает - постгрес говорит, что нет прав. grant select on _tbl to
> <юзер> спасает, но я не хочу чтобы юзер читал из таблицы, для этого
> сделано представление-подмножество таблицы.
>
> Как выйти из положения? Или есть какое-то решение без view?
Да, мысль пришла... Может ли кто-нибудь подсказать, в каком месте хачить
исходники постгреса на предмет разрешения update без прав на select? С
целью соорудить патч и попытаться попросить Олега закоммитить его :-)
Если это, конечно, politically correct solution.