O script do
Unix/Linux gera um script que revoga os direitos de qualquer usuário a
ROLE_USUARIO, exclui todos os direitos da role, cria se não existir e passa a
ela os direitos de execução a todas as rotinas e de manipulação de todas as
tabelas e por fim libera a role aos usuários cadastrados na tabela USUARIO.
Repare que
o script role.sh é parametrizado. É necessário informar qual o banco de dados
em que será criado a role e liberado o acesso.
/opt/interbase/script/role.sh
if [ ! $1 ]; then
echo Informe
o nome do banco de dados.
exit
fi
if [ -f tmp_role.sql
]; then
rm tmp_role.sql
fi
../bin/isql $1 -u
sysdba -p masterkey -i role.sql
echo
"commit;">>tmp_role.sql
cat tmp_role.sql|grep
[aeiou]>tmp_role.sql
../bin/isql $1 -u
sysdba -p masterkey -i tmp_role.sql
/opt/interbase/script/role.sql
output tmp_role.sql;
select 'revoke
role_usuario from '||rdb$user||';' from rdb$user_privileges where
rdb$relation_name='ROLE_USUARIO';
select distinct 'revoke all on '||rdb$relation_name||' from ROLE_USUARIO;'
from rdb$user_privileges where rdb$user='ROLE_USUARIO' and rdb$object_type=0;
select 'revoke
execute on procedure '||rdb$relation_name||' from ROLE_USUARIO;' from
rdb$user_privileges where rdb$user='ROLE_USUARIO' and rdb$object_type=5;
select 'create role
role_usuario;' from rdb$database where not exists (select * from rdb$roles
where rdb$role_name='ROLE_USUARIO');
select 'grant all on
'||rdb$relation_name||' to role_usuario;' from rdb$relations where rdb$flags=1;
select 'grant execute
on procedure '||rdb$procedure_name||' to role_usuario;' from rdb$procedures;
output;
connect
"/opt/interbase/database/corporativo.gdb" user sysdba password
masterkey;
output tmp_role.sql;
select 'grant
role_usuario to '||usuario||';' from usuario;
exit;