IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Oracle Discussion :

Trouver les droits d'un utilisateur


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2011
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 39
    Points : 31
    Points
    31
    Par défaut Trouver les droits d'un utilisateur
    Bonjour,

    J'aimerais savoir s'il existe un select permettant de retrouver le résultat de la création d'utilisateur avec droits suivants :

    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
     
    create user &&utillisateur1 identified by &&mdp1 default tablespace &&3 temporary tablespace &&4 quota unlimited on &&3 quota unlimited on &&4;
    grant &&5 to &&1 with admin option;
    grant select on sys.obj$ to &&1 &&WITH GRANT OPTION;
    grant select on sys.ind$ to &&1 &&WITH GRANT OPTION;
    grant select on sys.user$ to &&1 &&WITH GRANT OPTION;
    grant select on sys.col$ to &&1 &&WITH GRANT OPTION;
    grant select on sys.icol$ to &&1 &&WITH GRANT OPTION;
    grant select on sys.con$ to &&1 &&WITH GRANT OPTION;
    grant select on sys.ccol$ to &&1 &&WITH GRANT OPTION;
    grant select on sys.cdef$ to &&1 &&WITH GRANT OPTION;
    grant select on sys.ts$ to &&1 &&WITH GRANT OPTION;
    grant select on sys.seg$ to &&1 &&WITH GRANT OPTION;
    grant create view to &&1 with admin option;
    grant create trigger to &&1 with admin option;
    Y a t'il un moyen d'exporter tout ses éléments pour les rejouer par requête ensuite.
    Par exemple, j'ai 2 utilisateurs qui semble avoir la même table temporaire physique...mais qui ont 2 tablespace par défaut? est ce rationnel ?
    Bref je voudrais pour un utilisateur1 trouver sa tablespace par défaut et son fichier temporaire

  2. #2
    Membre expérimenté Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Points : 1 597
    Points
    1 597
    Par défaut
    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
    SQL> desc dba_users
     Nom
     -------------------------------
     USERNAME
     USER_ID
     PASSWORD
     ACCOUNT_STATUS
     LOCK_DATE
     EXPIRY_DATE
     DEFAULT_TABLESPACE
     TEMPORARY_TABLESPACE
     CREATED
     PROFILE
     INITIAL_RSRC_CONSUMER_GROUP
     EXTERNAL_NAME
     PASSWORD_VERSIONS
     EDITIONS_ENABLED
     AUTHENTICATION_TYPE
    Donc

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select USERNAME, 
         , DEFAULT_TABLESPACE
         , TEMPORARY_TABLESPACE
    from dba_users ;

    Réponds à la question des 2 Tablespaces (temporaire et permanent) utilisés par défaut par l'utilisateur.

    Une table temporaire est propre à un schéma (et donc à un utilisateur). Ce qui signifie que même si deux utilisateurs U1 et U2 utilisent chacun une table temporaire T, en fait U1 utilisae U1.T et U2 utilise U2.T.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2011
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 39
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    donc si le résultat de la requête est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT USERNAME, 
         , DEFAULT_TABLESPACE
         , TEMPORARY_TABLESPACE
    FROM dba_users ;
    USERNAME    TABLESPACE    TEMPORARY_TABLESPACE
    TOTO           TABLE_TOTO           TEMP
    TATA           TABLE_TATA           TEMP
    pour avoir le même résultat est ce que je fais
    solution1
    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
     
     
    set utillisateur1 =TOTO
    set mdp1=mdp_toto
    set 3 = TABLE_TOTO
    set 4 = TEMP
     
    CREATE user &&utillisateur1 IDENTIFIED BY &&mdp1 DEFAULT tablespace &&3 TEMPORARY tablespace &&4 quota unlimited ON &&3 quota unlimited ON &&4;
    GRANT &&5 TO &&1 WITH admin OPTION;
    GRANT SELECT ON sys.obj$ TO &&1 &&WITH GRANT OPTION;
    GRANT SELECT ON sys.ind$ TO &&1 &&WITH GRANT OPTION;
    GRANT SELECT ON sys.user$ TO &&1 &&WITH GRANT OPTION;
    GRANT SELECT ON sys.col$ TO &&1 &&WITH GRANT OPTION;
    GRANT SELECT ON sys.icol$ TO &&1 &&WITH GRANT OPTION;
    GRANT SELECT ON sys.con$ TO &&1 &&WITH GRANT OPTION;
    GRANT SELECT ON sys.ccol$ TO &&1 &&WITH GRANT OPTION;
    GRANT SELECT ON sys.cdef$ TO &&1 &&WITH GRANT OPTION;
    GRANT SELECT ON sys.ts$ TO &&1 &&WITH GRANT OPTION;
    GRANT SELECT ON sys.seg$ TO &&1 &&WITH GRANT OPTION;
    GRANT CREATE VIEW TO &&1 WITH admin OPTION;
    GRANT CREATE TRIGGER TO &&1 WITH admin OPTION;

    ou

    solution2

    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
     
     
    set utillisateur1 =TOTO
    set mdp1=mdp_toto
    set 3 = TABLE_TOTO
    set 4 = TABLE_TOTO
     
    CREATE user &&utillisateur1 IDENTIFIED BY &&mdp1 DEFAULT tablespace &&3 TEMPORARY tablespace &&4 quota unlimited ON &&3 quota unlimited ON &&4;
    GRANT &&5 TO &&1 WITH admin OPTION;
    GRANT SELECT ON sys.obj$ TO &&1 &&WITH GRANT OPTION;
    GRANT SELECT ON sys.ind$ TO &&1 &&WITH GRANT OPTION;
    GRANT SELECT ON sys.user$ TO &&1 &&WITH GRANT OPTION;
    GRANT SELECT ON sys.col$ TO &&1 &&WITH GRANT OPTION;
    GRANT SELECT ON sys.icol$ TO &&1 &&WITH GRANT OPTION;
    GRANT SELECT ON sys.con$ TO &&1 &&WITH GRANT OPTION;
    GRANT SELECT ON sys.ccol$ TO &&1 &&WITH GRANT OPTION;
    GRANT SELECT ON sys.cdef$ TO &&1 &&WITH GRANT OPTION;
    GRANT SELECT ON sys.ts$ TO &&1 &&WITH GRANT OPTION;
    GRANT SELECT ON sys.seg$ TO &&1 &&WITH GRANT OPTION;
    GRANT CREATE VIEW TO &&1 WITH admin OPTION;
    GRANT CREATE TRIGGER TO &&1 WITH admin OPTION;

  4. #4
    Membre expérimenté Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Points : 1 597
    Points
    1 597
    Par défaut
    La solution 1 en elevant les '&&' devant les 'WITH'
    Code sql : 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
    define utillisateur1 =&1
    define mdp1=&2
    -- SET 3 = TABLE_TOTO
    -- SET 4 = TEMP
     
    CREATE user &&utillisateur1 IDENTIFIED BY &&mdp1 DEFAULT tablespace &&3 TEMPORARY tablespace &&4 quota unlimited ON &&3 quota unlimited ON &&4;
    GRANT &&5 TO &&1 WITH admin OPTION;
    GRANT SELECT ON sys.obj$ TO &&1 WITH GRANT OPTION;
    GRANT SELECT ON sys.ind$ TO &&1 WITH GRANT OPTION;
    GRANT SELECT ON sys.user$ TO &&1 WITH GRANT OPTION;
    GRANT SELECT ON sys.col$ TO &&1 WITH GRANT OPTION;
    GRANT SELECT ON sys.icol$ TO &&1 WITH GRANT OPTION;
    GRANT SELECT ON sys.con$ TO &&1 WITH GRANT OPTION;
    GRANT SELECT ON sys.ccol$ TO &&1 WITH GRANT OPTION;
    GRANT SELECT ON sys.cdef$ TO &&1 WITH GRANT OPTION;
    GRANT SELECT ON sys.ts$ TO &&1 WITH GRANT OPTION;
    GRANT SELECT ON sys.seg$ TO &&1 WITH GRANT OPTION;
    GRANT CREATE VIEW TO &&1 WITH admin OPTION;
    GRANT CREATE TRIGGER TO &&1 WITH admin OPTION;

    et les variable 1, 2, 3, 4, 5 doivent être des paramètres de ton script

  5. #5
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Je crois qu'il faut clarifier pas mal de choses avant d'aller plus loin.

    Sans vouloir être désobligeant, j'ai l'impression que vous avez fait un copier coller de quelque chose que vous ne comprenez pas.

    1) Déjà, quelle est votre version d'Oracle ?

    Citation Envoyé par Jenesépa Voir le message
    Par exemple, j'ai 2 utilisateurs qui semble avoir la même table temporaire physique
    2) Je suppose que c'est de tablespace temporaire que vous parlez ?

    3) Ensuite, pourquoi intervenez-vous sur les tables telles que SYS.OBJ$ ?
    En temps normal, on n'a pas besoin d'accéder à ces tables.

    4) Ces droits WITH GRANT OPTION ou WITH ADMIN OPTION sont-ils bien nécessaires ?

    5) Quel est réellement et précisément votre objectif ?
    Dans le titre, vous parlez de "droits", dans le corps de votre question, il ne s'agit apparemment que de tablespace principal ou temporaire... Difficile de s'y retrouver !
    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

  6. #6
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par Jenesépa Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    set utillisateur1 =TOTO
    set mdp1=mdp_toto
    set 3 = TABLE_TOTO
    set 4 = TEMP
    Pour définir une variable de substitution, SET n'est pas possible, c'est DEFINE.
    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

  7. #7
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par ojo77 Voir le message
    Une table temporaire est propre à un schéma (et donc à un utilisateur). Ce qui signifie que même si deux utilisateurs U1 et U2 utilisent chacun une table temporaire T, en fait U1 utilisae U1.T et U2 utilise U2.T.
    D'après ma demi-compréhension de la question, cette histoire de table temporaire est hors sujet, mais je trouve néanmoins votre formulation très ambiguë.

    Sous Oracle, les tables temporaires sont obligatoirement de type GLOBAL, c'est à dire qu'elles sont accessibles par tous les utilisateurs sans qu'il soit nécessaire de donner des droits particuliers. (Par contre les données de cette table temporaire sont privées : chaque session ne peut voir que les données qu'elle a elle-même introduites).
    Si SCOTT crée une table temporaire TABTEMP, HR peut immédiatement accéder à cette table en la désignant par SCOTT.TABTEMP, puisque SCOTT en est le propriétaire.
    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

  8. #8
    Membre expérimenté Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Points : 1 597
    Points
    1 597
    Par défaut
    Citation Envoyé par Pomalaix Voir le message
    D'après ma demi-compréhension de la question, cette histoire de table temporaire est hors sujet, mais je trouve néanmoins votre formulation très ambiguë.

    Sous Oracle, les tables temporaires sont obligatoirement de type GLOBAL, c'est à dire qu'elles sont accessibles par tous les utilisateurs sans qu'il soit nécessaire de donner des droits particuliers. (Par contre les données de cette table temporaire sont privées : chaque session ne peut voir que les données qu'elle a elle-même introduites).
    Si SCOTT crée une table temporaire TABTEMP, HR peut immédiatement accéder à cette table en la désignant par SCOTT.TABTEMP, puisque SCOTT en est le propriétaire.
    En effet mes termes ne sont pas assez précis. Donc de manière plus claire (j'espère)

    L'utilisateur u1 peut créer la table temporaire t
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    create global temporary table t as select * from dba_objects where 1=2;

    L'utilisateur u2 peut lui aussi créer une table temporaire t

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    create global temporary table t as select * from dba_segments where 1=2;

    Si u1 utilise la table temporaire t sans préciser de schéma, il utilisera U1.T. De même si u2 utilise la table temporaire t sans préciser de schéma, il utilisera U2.T.

    Bon ceci dit ça ne semble en effet pas être le problème ici.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Février 2011
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 39
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    En fait je récupère une mécanique d'import/export (qui n'est pas moi) pour mettre à jour une base de test (j'ai vu des tutoriaux qui m'ont l'air plus simple comme celui ci => http://orafrance.developpez.com/dbahelp/#L2.1).
    Mais j'hésite à sortir des sentiers fléchés. D'autant plus que la procédure d'import/export permet de diminuer la taille physique des DBF sur un serveur saturé (si autre méthode fiable et sans risque pour diminuer la taille je suis preneur ).

    Donc pour continuer la création de 2 utilisateurs avec la requête citée en est le point final.
    Les allégations de la procédures d'import cite de mettre en valeur :
    1=>TOTO
    2=>TOTO
    3=>TOTO
    4=>WITH GRANT OPTION
    Seulement ça m'a étonné car qd je faisais la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT *FROM dba_users ;
    Je ne voyais pas de table temporaire TOTO ni non plus physiquement, alors j'ai donc après qq recherche préférer soumettre mes doutes à vos conseils avisés.
    Mon objectif est juste de comparer l'existant qui a été créé avec cette requête pour mettre à jour de façon précise la procédure et la base de test.

    Pour répondre à Pomalaix

    1) Déjà, quelle est votre version d'Oracle ?
    => 9.2.0.4 Standard

    2) Je suppose que c'est de tablespace temporaire que vous parlez ?
    =>Oui

    3) Ensuite, pourquoi intervenez-vous sur les tables telles que SYS.OBJ$ ?
    En temps normal, on n'a pas besoin d'accéder à ces tables.
    => C'est dans la procédure

    4) Ces droits WITH GRANT OPTION ou WITH ADMIN OPTION sont-ils bien nécessaires ?
    => C'est dans la procédure

    5) Quel est réellement et précisément votre objectif ?
    Dans le titre, vous parlez de "droits", dans le corps de votre question, il ne s'agit apparemment que de tablespace principal ou temporaire... Difficile de s'y retrouver !
    => Voir plus haut

    Si j'ai bien compris Ojo77 je dois mettre TEMP dans ma requête car c'est ce que je vois dans le résultat de la requête sur dba_users. Je m'excuse pour le vocabulaire je suis plus à l'aise sur d'autre BDD.

    Merci beaucoup pour vos réponses à tous et si vous pouviez m'éclairer sur les limites de la méthode http://orafrance.developpez.com/dbahelp/#L2.1 et s'il existe une fonction de maintenance sans risque comme dans pervasive ou sql server pour réduire la taille des fichiers de données et les remettre au propre

  10. #10
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2007
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2007
    Messages : 419
    Points : 616
    Points
    616
    Par défaut
    bonjour,

    si ce sont les droits sur les objets qui t'intéressent c'est la table dba_tab_privs qu'il faut consulter, si tu veux savoir qui possède quoi, c'est la table dba_objects, les droits d'écriture dans un tablespace, c'est la table dba_ts_quotas t les tablespaces par défaut... c'est bien dans dba_users.

    maintenant, je trouve que les with grant options sont bien inutiles, que l'accès aux vues des sys sont étranges, et qu'une réponse "c'est dans la procédure" est bien insatisfaisante au vu des implications de certains choix de construction de schémas par rapports aux exigences de sécurité

  11. #11
    Nouveau membre du Club
    Inscrit en
    Février 2011
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 39
    Points : 31
    Points
    31
    Par défaut
    Merci pour vos réponses et vos précisions.
    Cela m'a aidé, par ailleurs je suis allé dans l'interface oracle de gestion qui m'a permis de confirmer tout ça.
    En effet toutes les infos sont écrites graphiquement dans l'arborescence définissant les propriétés de l'utilisateur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête qui récupère les droits d'un utilisateur
    Par peck dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 20/04/2006, 09h40
  2. Connaitres les droits de l'utilisateur
    Par CrazySeb dans le forum Langage
    Réponses: 2
    Dernier message: 16/04/2006, 00h12
  3. [sécurité] les droits d'un utilisateur
    Par Maglight dans le forum Oracle
    Réponses: 1
    Dernier message: 26/12/2005, 10h24
  4. [XP Pro] Restreindre les droits d'un utilisateur
    Par Cereal123 dans le forum Sécurité
    Réponses: 5
    Dernier message: 12/10/2005, 14h57
  5. Purger les droits d'un utilisateur
    Par Pari dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/01/2004, 12h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo