2013/12/11 Ivan Emanuel de Moura Leite <[email protected]>

>
>
>
> Em 11 de dezembro de 2013 16:06, Rafael Fialho Corrêa <
> [email protected]> escreveu:
>
> Em 11 de dezembro de 2013 16:42, Renato Sousa <[email protected]>escreveu:
>>
>>>
>>>
>>>
>>> Em 11 de dezembro de 2013 14:41, Rafael Fialho Corrêa <
>>> [email protected]> escreveu:
>>>
>>>> Em 11 de dezembro de 2013 14:32, Renato Sousa <[email protected]>escreveu:
>>>>
>>>> Bom dia,
>>>>>
>>>>> Em 11 de dezembro de 2013 08:59, Matheus de Oliveira <
>>>>> [email protected]> escreveu:
>>>>>
>>>>>> Cara, que cliente de e-mail você usa? Suas mensagens sempre aparecem
>>>>>> estranhas. O gmail desagrupa elas do resto da thread.
>>>>>>
>>>>>> E o top-posting, não creio ser culpa do cliente de e-mail. =/
>>>>>>
>>>>> Uso o gmail mesmo.  Realmente vc tem razão, é falta de atenção
>>>>> minha... Desculpe-me! :D
>>>>>
>>>>>>
>>>>>>
>>>>>> 2013/12/10 Ivan Leite <[email protected]>
>>>>>>
>>>>>>>  Exemplo:
>>>>>>> GRANT USASE ON SCHEMA myschema FROM usuario;
>>>>>>>
>>>>>>
>>>>>> Bom, esse é um requisito se quiser que o "usuario" acesse qualquer
>>>>>> objeto dentro do esquema "myschema". Mas creio que o que você se referia
>>>>>> era o seguinte:
>>>>>>
>>>>>>     GRANT SELECT ON ALL TABLES IN SCHEMA myschema TO usuario;
>>>>>>
>>>>>> O problema é que só funciona a partir do PostgreSQL 9.0.
>>>>>>
>>>>>> Ah, e é "TO" não "FROM", o último é para REVOKE. Não se preocupe, eu
>>>>>> sempre faço isso também, mas costumo fazer o contrário: usar TO no 
>>>>>> REVOKE.
>>>>>> ^^
>>>>>>
>>>>>>
>>>>>>
>>>>> Então, na verdade  estou me confundindo com esse lance de schema.
>>>>>  Estou bem acostumado com mysql e estou apanhando um pouco do pgsql!!!!
>>>>> Dei as permissões de select para cada uma das tabelas, porém o usuário
>>>>> ainda não consegue "ver" as tabelas!  Tenho que dar permissão ao schema
>>>>> tbem ?
>>>>>
>>>>> Abraços,
>>>>>
>>>>> Renato
>>>>>
>>>>>
>>>> Desculpe a falta de gentileza, Renato, mas você leu o e-mail que você
>>>> mesmo respondeu antes de perguntar isso?
>>>> Todos os usuários precisam de permissão "usage" nos schemas criados
>>>> além do "public", para poder, tanto visualizar as tabelas, quanto exercer
>>>> suas permissões nas mesmas.
>>>>
>>>> []'s
>>>>
>>>> Olá Rafael,
>>>
>>> Não fui claro quanto a permissão do schema!  Já havia concedido a
>>> permissão USAGE ao usuário, mas algo está errado.
>>>
>>> Qdo entro com o usuário user1 obtenho a saida abaixo:
>>>
>>>  # psql -U user1 -d sbq
>>>
>>> Type "help" for help.
>>>
>>> sbq=> \dt
>>>                     List of relations
>>>  Schema |            Name             | Type  |  Owner
>>> --------+-----------------------------+-------+----------
>>>  sch1   | table1                      | table | user1
>>>  sch1   | table2                      | table | user1
>>>   .....
>>>  sch1   | tableX                      | table | user1
>>>
>>>
>>> Porém, qdo entro com o usuario user2 não consigo ver as mesmas tabelas.
>>>
>>> Abraços,
>>>
>>> Renato
>>>
>>>
>> Agora sim entendi.. hehehe
>>
>> O user1 não tem nada de diferente do user2? Não seria um super usuário?
>> As vezes esta definição atrapalha porque a consulta a alguns recursos do
>> pg_catalog só é concedida a super usuários.
>> Caso não tenham diferenças, o user1 deve ter algum privilégio a mais que
>> o user2 na base que está utilizando ou na base postgres (não sei se está
>> utilizando mais de uma base).
>>
>
> Ele pode visualizar as permissões dos diferentes roles (usuarios) e saber
> a diferença entre os dois fazendo a seguinte query:
>
> SELECT * FROM pg_roles WHERE rolname='user1' and rolname='user2';
>
>  As opções que estiverem com "t" (true) são as permissões que eles possuem.
>
>

Só para não deixar meio confuso... Essas não são necessariamente as
permissões do usuário. Seriam mais como atributos.

As diferenças são basicamente:

1) As permissões estão associadas à cada objeto  (tablespaces, schemas,
tables, etc.) enquanto os atributos são gerais (CREATEDB, SUPERUSER,
CREATEROLE, etc.).

2) As permissões são passadas para os usuários (ou roles) filhas, enquanto
os atributos são somente para a role, ou seja, permissões são herdadas
enquanto atributos não.

Para verificar as permissões de um esquema, você pode usar a seguinte
consulta:

    SELECT r.rolname, privilege_type
    FROM aclexplode((SELECT nspacl FROM pg_namespace WHERE nspname =
'sch1')) a
    INNER JOIN pg_authid r ON r.oid = a.grantee;

PS: Parabéns Ivan, agora suas mensagens estão vindo de acordo, sem
top-posting.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a