From 9ad2524f310d67247d9b187eba7909d1635ed795 Mon Sep 17 00:00:00 2001 From: Yacine31 Date: Tue, 13 Feb 2024 18:47:46 +0100 Subject: [PATCH] ajout de directory --- get_grant_and_priv.sql | 48 ++++++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 13 deletions(-) diff --git a/get_grant_and_priv.sql b/get_grant_and_priv.sql index 40037db..56ef7f0 100644 --- a/get_grant_and_priv.sql +++ b/get_grant_and_priv.sql @@ -3,25 +3,47 @@ -- ensuite il retourne les requetes pour creer les grants associe a ce compte -- un fichier grant_USER.lst est généré dans le répertoire courant -- -set heading off pages 0 feedback off echo off verify off +SET PAGES 999 HEAD OFF FEEDBACK OFF ACCEPT v_user CHAR PROMPT 'compte utilisateur pour lequel on va extraire les GRANTS : ' +set verify off SPOOL grant_&v_user -SELECT 'REM Les roles :' FROM DUAL; -SELECT DISTINCT 'CREATE ROLE '||GRANTED_ROLE||';' FROM DBA_ROLE_PRIVS WHERE GRANTEE IN &v_users; +SELECT '-- Les roles pour le compte &v_user :' FROM DUAL; +SELECT DISTINCT 'CREATE ROLE '||GRANTED_ROLE||';' FROM DBA_ROLE_PRIVS WHERE GRANTEE=upper('&v_user'); -SELECT 'REM Les GRANTs depuis DBA_ROLE_PRIVS :' FROM DUAL; -SELECT DISTINCT 'GRANT '||GRANTED_ROLE||' TO '||GRANTEE|| CASE WHEN ADMIN_OPTION='YES' THEN ' WITH ADMIN OPTION;' ELSE ';' END "Granted Roles" FROM DBA_ROLE_PRIVS WHERE GRANTEE IN &v_users ORDER BY 1; +SELECT '-- Les GRANTs depuis DBA_ROLE_PRIVS pour le compte &v_user :' FROM DUAL; +SELECT DISTINCT 'GRANT '||GRANTED_ROLE||' TO '||GRANTEE|| CASE WHEN ADMIN_OPTION='YES' THEN ' WITH ADMIN OPTION;' ELSE ';' END "Granted Roles" FROM DBA_ROLE_PRIVS WHERE GRANTEE=upper('&v_user') ORDER BY 1; -SELECT 'REM Les GRANTs depuis DBA_SYS_PRIVS :' FROM DUAL; -SELECT DISTINCT 'GRANT '||PRIVILEGE||' TO '||GRANTEE|| CASE WHEN ADMIN_OPTION='YES' THEN ' WITH ADMIN OPTION;' ELSE ';' END "Granted System Privileges" FROM DBA_SYS_PRIVS WHERE GRANTEE IN &v_users; - -SELECT 'REM Les GRANTs depuis DBA_TAB_PRIVS :' FROM DUAL; -SELECT DISTINCT 'GRANT '||PRIVILEGE||' ON '||OWNER||'.'||TABLE_NAME||' TO '||GRANTEE||CASE WHEN GRANTABLE='YES' THEN ' WITH GRANT OPTION;' ELSE ';' END "Granted Object Privileges" FROM DBA_TAB_PRIVS WHERE GRANTEE IN &v_users; - -SELECT 'REM Les GRANTs depuis DBA_TAB_PRIVS pour le compte PUBLIC sur les objets SYS.DBMS_XXX :' FROM DUAL; -SELECT DISTINCT 'GRANT '||PRIVILEGE||' ON '||OWNER||'.'||TABLE_NAME||' TO '||GRANTEE||CASE WHEN GRANTABLE='YES' THEN ' WITH GRANT OPTION;' ELSE ';' END "Granted Object Privileges" FROM DBA_TAB_PRIVS WHERE GRANTEE IN ('PUBLIC') and OWNER='SYS' and TABLE_NAME like '%DBMS_%' order by 1; +SELECT '-- Les GRANTs depuis DBA_SYS_PRIVS pour le compte &v_user :' FROM DUAL; +SELECT 'GRANT '||PRIVILEGE||' TO '||GRANTEE|| case when ADMIN_OPTION='YES' THEN ' WITH ADMIN OPTION;' ELSE ';' END "Granted System Privileges" FROM DBA_SYS_PRIVS WHERE GRANTEE=upper('&v_user'); +SELECT '-- Les GRANTs depuis DBA_TAB_PRIVS pour le compte &v_user :' FROM DUAL; +SELECT DISTINCT + 'GRANT ' + || privilege + || ' ON ' + || + CASE + WHEN type = 'DIRECTORY' THEN + ' DIRECTORY ' + END + || owner + || '.' + || table_name + || ' TO ' + || grantee + || + CASE + WHEN grantable = 'YES' THEN + ' WITH GRANT OPTION;' + ELSE + ';' + END + "Granted Object Privileges" +FROM + dba_tab_privs +WHERE + grantee = upper('&v_user'); SPOOL OFF EXIT