Mateus wrote:

> Criei uma função no PostgreSql qdo tento executar com outro usuario 
> aparece a seguinte menssagem:
> 
> ERROR: must be owner of relation atualiza
> SQL state: 42501
> Context: SQL function "atualiza" statement 1
> 
Sim, se um usuário A cria uma relação T e um usuário B tenta acessá-la,
o último não terá permissão (a não ser que B seja superusuário). Durante
a execução da função ocorre a mesma coisa; a função C é executada com
permissão do usuário que a está executando, ou seja, B, mas ele não tem
permissão na tabela T que foi criada por A!
O que você pode fazer é utilizar o SECURITY DEFINER [1]. Ele funciona
como o comando 'sudo'. Tenha cuidado ao utilizar esse parâmetro, pois
você pode estar "dando" acesso inderetamente (via função) a usuários que
não tem tal permissão.
O que eu te aconselho é pensar em definir uma ROLE [2] que acessam um
conjunto X de objetos. Neste caso, podemos gerenciar mais facilmente
quem tem ou não tem mais acesso aquele conjunto específico de
permissões.

> Ja dei permissão para executar a função o que deve ser ?
> 
Além de permitir a execução da função, no corpo da função você tem
objetos que também tem permissões a serem checadas (este é o seu
problema).


[1] http://www.postgresql.org/docs/8.2/static/sql-createfunction.html
[2] http://www.postgresql.org/docs/8.2/static/user-manag.html


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/

_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a