Bonjour,
J'aimerai savoir comment je peux savoir si un user oracle peut lire dans un fichier unix.
Je vous remercie d'avance
Bonjour,
J'aimerai savoir comment je peux savoir si un user oracle peut lire dans un fichier unix.
Je vous remercie d'avance
bonsoir,
tu ne te serais pas trompé de forum par hasard?
tu regardes les droits sur le fichier d'abord (si tu as accès c'est déjà bon signe)
puis à quel(s) groupe(s) appartient le user (/etc/groups par exemple)
Si tu veux lire un fichier qui se trouve dans le serveur de la base de données avec un utilisateur oracle, tu renseigne le paramètre utl_file_dir.
d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
ça encourage.
Je n'ai pas l'impression que le demandeur initial suive la question, mais à toutes fins utiles...
Un utilisateur connecté à la base Oracle peut accéder à des répertoires du système d'exploitation (on ne peut pas descendre au niveau du fichier) par deux moyens :
- la paramètre d'instance UTL_FILE_DIR (comme mentionné par Islamov2000), mais dont l'usage est déconseillé, car on ne peut pas choisir qui accèdera au répertoire désigné
- le mécanisme des objets logiques DIRECTORY.
Concernant les objets DIRECTORY, le droit d'accès à un répertoire peut être donné à un utilisateur soit directement, soit par l'entremise d'un rôle.
Cela fait donc 3 situations à identifier.
Je recherche ici les répertoires de l'OS auxquels SCOTT à accès (sans préciser si c'est un accès READ ou WRITE, mais on pourrait l'ajouter).
Résultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 set linesize 160 col repertoire format a20 col chemin format a50 col utilisateur format a20 col chaine format a50 SELECT repertoire, chemin, utilisateur, chaine FROM (SELECT connect_by_root nom_rep AS repertoire, connect_by_root chemin AS chemin, grantee AS utilisateur, ltrim(sys_connect_by_path(grantee, ' -> '), ' -> ') AS chaine FROM (SELECT DISTINCT grantee, table_name AS nom_rep, dd.directory_path AS chemin, 'REP' AS nature FROM dba_tab_privs tp join dba_directories dd ON tp.owner = dd.owner AND tp.table_name = dd.directory_name WHERE tp.privilege IN ( 'READ', 'WRITE' ) UNION SELECT grantee, granted_role, 'BIDON' AS chemin, 'ROLE' AS nature FROM dba_role_privs) START WITH nature = 'REP' CONNECT BY PRIOR grantee = nom_rep UNION SELECT 'param UTL_FILE_DIR' AS repertoire, sp.value AS chemin, u.username AS utilisateur, 'param UTL_FILE_DIR' AS chaine FROM dba_users U cross join v$system_parameter2 SP WHERE SP.name = 'utl_file_dir') WHERE utilisateur = 'SCOTT';
Comme on le voit, DIRTEST est accédé à travers une cascade de rôles, SUBDIR est accédé en direct, est c:\temp est accessible via le paramètre UTL_FILE_DIR.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 REPERTOIRE CHEMIN UTILISATEUR CHAINE -------------------- -------------------------------------------------- -------------------- ------------------------------ DIRTEST f:\oracle\demo SCOTT R1 -> R2 -> R3 -> SCOTT SUBDIR F:\oracle\ora102\demo\schema\order_entry\/2002/Sep SCOTT SCOTT param UTL_FILE_DIR c:\temp SCOTT param UTL_FILE_DIR
Consultant / formateur Oracle indépendant
Certifié OCP 12c, 11g, 10g ; sécurité 11g
Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager