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 ]

REVOKE [ GRANT OPTION FOR ]
    { CREATE | ALL [ PRIVILEGES ] }
    ON TABLESPACE nome_do_espaço_de_tabelas [, ...]
    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.

O significado dos tipos de privilégio deve ser visto na descrição do comando GRANT.

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 perderão o privilégio SELECT para o objeto: os usuários que receberam o privilégio diretamente, ou por meio de um grupo, ainda terão 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. Caso contrário, tanto o privilégio quanto a opção de concessão serão revogados.

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 serão revogados se for especificado CASCADE, senão a ação de revogar falhará. 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 o privilégio também tiver sido concedido por outros usuários.

Observações

Para ver os privilégios concedidos para os objetos existentes pode ser utilizado o comando \z do aplicativo psql. Para obter informações sobre o formato deve ser consultado o comando GRANT.

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 concedeu um privilégio com opção de concessão para o usuário B, e o usuário B por sua vez concedeu 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 usando a opção CASCADE, para que o privilégio seja, por sua vez, revogado do usuário C. Outro exemplo é o caso em que tanto A quanto B concederam o mesmo privilégio a C: neste caso A poderá revogar sua própria concessão, mas não poderá revogar a concessão feita por B e, portanto, C continuará com o privilégio mesmo que A revogue o privilégio.

Se alguém que não for dono do objeto tentar revogar privilégios sobre o objeto, o comando falhará inteiramente caso o usuário não possua ao menos um privilégio para o objeto. Se o usuário possuir algum privilégio para o objeto o comando prosseguirá, mas só revogará os privilégios para os quais o usuário tem a opção de concessão. A forma REVOKE ALL PRIVILEGES emite uma mensagem de advertência quando o usuário não possui ao menos uma opção de concessão, enquanto as outras formas emitem uma mensagem de advertência quando o usuário não possui opção de concessão para algum dos privilégios especificamente identificados no comando (Em princípio estas informações também se aplicam ao dono do objeto, mas como o dono é sempre tratado como possuindo todas as opções de concessão estes casos nunca ocorrem).

Se um superusuário decidir submeter o comando GRANT ou REVOKE, o comando será executado como se tivesse sido submetido 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 sobre a visão vis_tipos:

REVOKE ALL PRIVILEGES ON vis_tipos FROM manuel;

Deve ser observado que este comando significa, na verdade, "revogue todos os privilégios que eu concedi".

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 }

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

Consulte também

GRANT

SourceForge.net Logo CSS válido!