REVOKE

Nome

REVOKE -- revoga privilégios de acesso

Sinopse

REVOKE [ GRANT OPTION FOR ]
    { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER }
    [,...] | ALL [ PRIVILEGES ] }
    ON [ TABLE ] nome_da_tabela [, ...]
    FROM { nome_do_usuário | GROUP nome_do_grupo | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
    ON DATABASE nome_do_banco_de_dados [, ...]
    FROM { nome_do_usuário | GROUP nome_do_grupo | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { EXECUTE | ALL [ PRIVILEGES ] }
    ON FUNCTION nome_da_função ([tipo, ...]) [, ...]
    FROM { nome_do_usuário | GROUP nome_do_grupo | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON LANGUAGE nome_da_linguagem [, ...]
    FROM { nome_do_usuário | GROUP nome_do_grupo | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }
    ON SCHEMA nome_do_esquema [, ...]
    FROM { nome_do_usuário | GROUP nome_do_grupo | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

Descrição

O comando REVOKE revoga, de um ou mais usuários ou grupos de usuários, privilégios concedidos anteriormente. A palavra chave PUBLIC se refere ao grupo contendo todos os usuários, definido implicitamente.

Veja na descrição do comando GRANT o significado de cada de privilégio.

Deve ser observado que um determinado usuário possui a soma dos privilégios concedidos diretamente para o próprio usuário mais os privilégios concedidos para os grupos dos quais é membro no momento, mais os privilégios concedidos para PUBLIC. Daí, por exemplo, revogar o privilégio SELECT de PUBLIC não significa, necessariamente, que todos os usuários perdem o privilégio SELECT para o objeto: àqueles que receberam o privilégio diretamente, ou por meio de um grupo, permanecem com o privilégio.

Se for especificado GRANT OPTION FOR somente a opção de concessão do privilégio é revogada, e não o próprio privilégio.

Se o usuário possui um privilégio com opção de concessão, e concedeu este privilégio para outros usuários, então os privilégios que estes outros usuários possuem são chamados de privilégios dependentes. Se o privilégio ou a opção de concessão que o primeiro usuário possui for revogada, e existirem privilégios dependentes, estes privilégios dependentes também são revogados se for especificado CASCADE, senão a ação de revogar falha. Esta revogação recursiva somente afeta os privilégios que foram concedidos através de uma cadeia de usuários começando pelo usuário objeto deste comando REVOKE. Portanto, os usuários afetados poderão manter o privilégio se este privilégio também foi concedido por outros usuários.

Observações

Use o comando \z da aplicação psql para ver os privilégios concedidos para os objetos existentes. Consulte, também, o comando GRANT para obter informações sobre o formato.

Um determinado usuário pode revogar somente os privilégios que foram concedidos diretamente por este usuário. Se, por exemplo, o usuário A conceder um privilégio com opção de concessão para o usuário B, e o usuário B por sua vez conceder o privilégio para o usuário C, então o usuário A não poderá revogar diretamente o privilégio de C. Em vez disso, o usuário A poderá revogar a opção de concessão do usuário B e usar a opção CASCADE, para que o privilégio seja por sua vez revogado do usuário C.

Se um superusuário decidir executar o comando GRANT ou o comando REVOKE, o comando é executado como se tivesse sido executado pelo dono do objeto afetado. Uma vez que todos os privilégios partem do dono do objeto (possivelmente de forma indireta através de cadeias de opções de concessão), um superusuário pode revogar todos os privilégios, mas pode ser necessário usar CASCADE conforme mostrado acima.

Exemplos

Revogar o privilégio de inserção na tabela filmes concedido para todos os usuários:

REVOKE INSERT ON filmes FROM PUBLIC;

Revogar todos os privilégios concedidos ao usuário manuel para a visão vis_tipos:

  
REVOKE ALL PRIVILEGES ON vis_tipos FROM manuel;

Compatibilidade

As notas sobre compatibilidade presentes no comando GRANT se aplicam de forma análoga ao comando REVOKE. O sumário da sintaxe é:

REVOKE [ GRANT OPTION FOR ] privilégios
    ON objeto [ ( coluna [, ...] ) ]
    FROM { PUBLIC | nome_do_usuário [, ...] }
    { RESTRICT | CASCADE }

Um entre RESTRICT ou CASCADE é necessário de acordo com o padrão, mas o PostgreSQL assume RESTRICT por padrão.

Veja também

GRANT

SourceForge.net Logo