Re: [pgbr-geral] permissao de coluna

2011-05-20 Por tôpico Flavio Henrique Araque Gurgel
 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

2011-05-20 Por tôpico Beto Lima
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-05-20 Por tôpico Flavio Henrique Araque Gurgel
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

2011-05-20 Por tôpico Beto Lima
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

2011-05-20 Por tôpico Flavio Henrique Araque Gurgel
 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

2011-05-20 Por tôpico Beto Lima
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

2011-05-20 Por tôpico Flavio Henrique Araque Gurgel
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

2011-05-20 Por tôpico Beto Lima
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