Como evitar privilégios na tabela padrão concedidos para PUBLIC - Informix
O usuário mandou criar uma tabela e dar a permissão de select public, depois de criar a tabela com a permissão fui checar e descobri que as permissões (delete, insert e update) estavam liberadas também mais como isso pode ocorrer? Vou simular o que ocorreu e mostrar duas soluções para este problema, primeiro vamos criar uma tabela com a permissão de select public (somente)
SQL: New Run Modify Use-editor Output Choose Save Info Drop Exit
Run the current SQL statements.
----------------------- dw_sig@sefaz_sig ------- Press CTRL-W for Help --------
drop table nl2020 ;
CREATE TABLE dba.nl2020 (
conta DECIMAL(9,0),
ug_id DECIMAL(6,0),
gestao_id DECIMAL(5,0),
data_lanc DATE,
num_doc VARCHAR(11),
evento DECIMAL(6),
qdd DECIMAL(4),
ug_ident DECIMAL(6),
gestao_ident DECIMAL(5),
dt_emis DATE,
dc VARCHAR(1),
valor FLOAT,
insc_evento VARCHAR(22),
observacao CHAR(231)
);
grant select on "dba".nl2020 to "public" as "dba";
Checando as permissões dessa tabela o public esta liberado pra tudo - não deveria;-------------------------------------------------------------------------------------------------
25/11/2013 ***** INFORMIX BASIC SERVICES ***** 15:13:01
-------------------------------------------------------------------------------------------------
grant select on "dba".nl2020 to "public" as "dba";
grant update on "dba".nl2020 to "public" as "dba";
grant insert on "dba".nl2020 to "public" as "dba";
grant delete on "dba".nl2020 to "public" as "dba";
grant index on "dba".nl2020 to "public" as "dba";
Pressione qualquer tecla para continuar...
Solução 1
Criando desse jeito dá certo
SQL: New Run Modify Use-editor Output Choose Save Info Drop Exit
Run the current SQL statements.
----------------------- dw_sig@sefaz_sig ------- Press CTRL-W for Help --------
CREATE TABLE dba.nl2020 (
conta DECIMAL(9,0),
ug_id DECIMAL(6,0),
gestao_id DECIMAL(5,0),
data_lanc DATE,
num_doc VARCHAR(11),
evento DECIMAL(6),
qdd DECIMAL(4),
ug_ident DECIMAL(6),
gestao_ident DECIMAL(5),
dt_emis DATE,
dc VARCHAR(1),
valor FLOAT,
insc_evento VARCHAR(22),
observacao CHAR(231)
);
revoke all on "dba".nl2020 from "public" as "dba";
grant select on "dba".nl2020 to "public" as "dba";
Ela fica com essas permissões corretas
-------------------------------------------------------------------------------------------------
25/11/2013 ***** INFORMIX BASIC SERVICES ***** 15:13:01
-------------------------------------------------------------------------------------------------
grant select on "dba".nl2020 to "public" as "dba";
Pressione qualquer tecla para continuar...
Solução 2
Adicionando esta variável de ambiente
[s343:informix]$/opt/informix64/etc> export NODEFDAC=yes
Executando o script que vai criar a tabela e dando a permissão de grant select
SQL: New Run Modify Use-editor Output Choose Save Info Drop Exit
Run the current SQL statements.
----------------------- dw_sig@sefaz_sig ------- Press CTRL-W for Help --------
CREATE TABLE dba.nl2020 (
conta DECIMAL(9,0),
ug_id DECIMAL(6,0),
gestao_id DECIMAL(5,0),
data_lanc DATE,
num_doc VARCHAR(11),
evento DECIMAL(6),
qdd DECIMAL(4),
ug_ident DECIMAL(6),
gestao_ident DECIMAL(5),
dt_emis DATE,
dc VARCHAR(1),
valor FLOAT,
insc_evento VARCHAR(22),
observacao CHAR(231)
);
grant select on "dba".nl2020 to "public" as "dba";
Ficou assim a permissão, correta
-------------------------------------------------------------------------------------------------
25/11/2013 ***** INFORMIX BASIC SERVICES ***** 15:13:01
-------------------------------------------------------------------------------------------------
grant select on "dba".nl2020 to "public" as "dba";
Pressione qualquer tecla para continuar...
A variável de ambiente NODEFDAC, quando definido como YES, impede o public de receber automaticamente esses privilégios no nível de tabela.
Referencia1 - Referencia2
0 comentários:
Enviar um comentário