Re: [pgbr-geral] permissao de coluna
Tenho a seguinte situação: Tabela A Campos: campo1,campo2,campo3 (este sendo NOT NULL DEFAULT 0); 2 usuarios: user_admin e user_normal. O user_admin tem permissão total na tabela A e o user_normal tem permissão apenas de inserção e atualização. Acontece que preciso que o campo3 fique apenas para leitura para o user_normal. Há como? A partir do PostgreSQL 8.4: GRANT SELECT ON Tabela A(campo3) TO user_normal; []s Flavio ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] permissao de coluna
CREATE TABLE teste ( id serial NOT NULL, nome text, nro integer NOT NULL DEFAULT 5, CONSTRAINT teste_pkey PRIMARY KEY (id) ); ALTER TABLE teste OWNER TO user_dono; GRANT ALL ON TABLE teste TO user_dono; GRANT ALL ON TABLE teste TO user_admin; GRANT SELECT, UPDATE, INSERT ON TABLE teste TO user_normal; GRANT SELECT(nro) ON teste TO user_normal; desta forma consegui alterar o valor da coluna nro com user_normal. o que falta? quero que o user_normal possa somente ler a coluna nro. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] permissao de coluna
2011/5/20 Beto Lima betol...@gmail.com: CREATE TABLE teste ( id serial NOT NULL, nome text, nro integer NOT NULL DEFAULT 5, CONSTRAINT teste_pkey PRIMARY KEY (id) ); ALTER TABLE teste OWNER TO user_dono; GRANT ALL ON TABLE teste TO user_dono; GRANT ALL ON TABLE teste TO user_admin; GRANT SELECT, UPDATE, INSERT ON TABLE teste TO user_normal; GRANT SELECT(nro) ON teste TO user_normal; desta forma consegui alterar o valor da coluna nro com user_normal. o que falta? quero que o user_normal possa somente ler a coluna nro. Algo está errado na sua estrutura de roles. Perguntas: 1) user_normal está com flag de superusuário? 2) user_normal é role pertencente a alguma role de grupo que tenha permissões mais relaxadas? Mande pra cá: \du+ \dp+ teste Onde teste é o nome de sua tabela. []s Flavio Gurgel ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] permissao de coluna
Role name | Superuser | Create role | Create DB | Connections | Member of -+---+-+---+ user_normal | no| no | no| no limit | {} user_admin| no| yes | no| no limit | user_dono | yes | yes | yes | no limit | {} postgres| yes | yes | yes | no limit | {} meuschema | teste | table | {user_admin=arwdDxt/user_dono,user_dono=arwdDxt/user_dono,user_normal=arw/user_dono} ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] permissao de coluna
Role name | Superuser | Create role | Create DB | Connections | Member of -+---+-+---+ user_normal | no | no | no | no limit | {} user_admin | no | yes | no | no limit | user_dono | yes | yes | yes | no limit | {} postgres | yes | yes | yes | no limit | {} Aqui ok. meuschema | teste | table | {user_admin=arwdDxt/user_dono,user_dono=arwdDxt/user_dono,user_normal=arw/user_dono} Note que user_normal está com arw (a=insert, r=select w=update) veja em http://www.postgresql.org/docs/9.0/static/sql-grant.html Faça: REVOKE ALL ON teste FROM user_normal; GRANT SELECT ON teste(campo) TO user_normal; Isto deve resolver. Você fez alguma bobagem na hora de dar privilégios OU você está usando 9.0 com default privileges no schema. []s Flavio Gurgel ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] permissao de coluna
REVOKE ALL ON teste FROM user_normal; GRANT SELECT ON teste(campo) TO user_normal; estou usando o 9 sim e com default privileges no schema. Mas se eu der revoke all na tabela, o user_normal não vai mais poder inserir ou atualizar nas demais colunas. Preciso com que ele possa selecionar, inserir, atualizar e somente ter acesso de leitura na coluna nro. por isso ja coloquei um valor default na coluna nro. Tem solução pra esse caso? ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] permissao de coluna
Em 20 de maio de 2011 19:00, Beto Lima betol...@gmail.com escreveu: REVOKE ALL ON teste FROM user_normal; GRANT SELECT ON teste(campo) TO user_normal; estou usando o 9 sim e com default privileges no schema. Mas se eu der revoke all na tabela, o user_normal não vai mais poder inserir ou atualizar nas demais colunas. Preciso com que ele possa selecionar, inserir, atualizar e somente ter acesso de leitura na coluna nro. por isso ja coloquei um valor default na coluna nro. Tem solução pra esse caso? deixe-me ver se entendi... Você quer que o usuário faça insert, update na tabela toda mas só faça select em uma das colunas? Se for isso, não , não é possível. O PostgreSQL pressupõe que para poder fazer um UPDATE o usuário também pode fazer SELECT. O mesmo vale pra DELETE, tem que ter permissão de SELECT. Só o INSERT tem regra diferente. []s Flavio Gurgel ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] permissao de coluna
certo Flavio, valeu..entendi. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral