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

Administration Oracle Discussion :

problème avec le "REVOKE"


Sujet :

Administration Oracle

  1. #1
    Membre actif Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Points : 208
    Points
    208
    Par défaut problème avec le "REVOKE"
    bonjour,

    j'ai une petit soucis avec l'instruction REVOKE,
    en effet quand sous sqlplus je tape :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    revoke mondroit from monuser;
    là pas de soucis,
    mais j'ai crée une procedure :
    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
     PROCEDURE user_revoke(login IN VARCHAR2,ROLE IN VARCHAR2) IS
     
     str_exec VARCHAR2(200);
     
     revoke_not_granted     EXCEPTION;
     PRAGMA EXCEPTION_INIT (revoke_not_granted , -1951);
     
     BEGIN
     
      BEGIN
     
       str_exec:='REVOKE "'||ROLE||'" FROM "'||login||'"';
       EXECUTE IMMEDIATE str_exec;
     
      EXCEPTION WHEN revoke_not_granted     THEN
         NULL;
      END;
     
     END user_revoke;
    et là si j'execute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    begin
    user_revoke('monuser','mondroit');
    end;
    j'ai l'erreur ORA-01932
    ça me saoule depuis ce matin je suis dessus, pouvez vous m'aider
    pleaaaaaase

  2. #2
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    En PL/SQL, le privilège (de révocation en l'occurence) doit être obtenu directement et non via un rôle.

  3. #3
    Membre actif Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Points : 208
    Points
    208
    Par défaut
    je ne comprends pas ce que tu veux dire
    ça a toujours marché chez moi
    et ce WE on a basculé en 9i, auparavant c'etait une 8i
    il y a peut être un lien

  4. #4
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM DBA_ROLES_PRIVS
    WHERE GRANTED_ROLE=<TON ROLE>
    Je pense qu'il y a au moins deux lignes retournées :
    la première où GRANTEE = TON USER sans "ADMIN OPTION"
    la secondeoù GRANTEE = un rôle attribué à ton USER avec "ADMIN OPTION"

  5. #5
    Membre actif Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Points : 208
    Points
    208
    Par défaut
    euh non
    par contre le user qui execute ces commandes possede un role "APP_DEVPT"
    qui lui à le privilège suivant "grant any role with grant option"
    si ça peut aider

  6. #6
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    ben voilà !
    il faut que USER ait reçu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GRANT <ROLE> to <TON USER> WITH ADMIN OPTION;
    C'est ce que je voulais dire lors de ma 1ère intervention par "En PL/SQL, le privilège (de révocation en l'occurence) doit être obtenu directement et non via un rôle."

  7. #7
    Membre actif Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Points : 208
    Points
    208
    Par défaut
    ça marchait en 8i

    j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grant grant any role to MOI with admin option
    et quand j'execute (toujours sous le user MOI)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    begin
    dbms_users.user_revoke(login => 'SBRUNET',role => 'SBE_SELECT');
    end;
    et toujours l'erreur !!!

  8. #8
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    et grant non pas any role mais juste celui à revoker ?

  9. #9
    Membre actif Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Points : 208
    Points
    208
    Par défaut
    ça n'y change rien

  10. #10
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Tu es en quelle version (exacte) ?

    et ça, ça donne quoi chez toi ?
    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
    SQL> connect system
    Enter password: 
    Connected.
    SQL> create role toto;
     
    Role created.
     
    SQL> grant toto to leo with admin option;
     
    Grant succeeded.
     
    SQL> grant toto to system;
     
    Grant succeeded.
     
    SQL> connect leo
    Enter password: 
    Connected.
    SQL> begin
      2  execute immediate ('revoke toto from system');
      3  end;
      4  /
     
    PL/SQL procedure successfully completed.

  11. #11
    Membre actif Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Points : 208
    Points
    208
    Par défaut
    Ta solution Leo marche sans problème, c'est ce que j'avais expliqué plus haut,
    mon soucis vient de la procédure user_revoke qui elle ne fonctionne pas

  12. #12
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    tes exemples plus haut ne faisaient pas état d'un revoke en PL/SQL mais uniquement en SQL !

    donc, le souci n'est pas lié aux privilèges, ni au SQL ou PL/SQL mais uniquement à ta procédure stockée.

    est-elle dans un package ? quels sont les privilèges accordés dessus ? et à qui?

  13. #13
    Membre actif Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Points : 208
    Points
    208
    Par défaut
    pourtant j'avais expliqué que cela venait du fait d'une procédure pl/sql
    elle est liée à un package
    et mon user SBRUNET à le droit d'execute sur ce package

  14. #14
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Citation Envoyé par Nounoursonne
    pourtant j'avais expliqué que cela venait du fait d'une procédure pl/sql
    Oui, mais mon dernier test montre bien que ce n'est finalement pas lié au PL/SQL....
    donc ça change complètement la donne...

    elle est liée à un package
    et mon user SBRUNET à le droit d'execute sur ce package
    comment ? via un rôle ?
    et si c'est le propriétaire qui appelle la procédure de révocation ?

  15. #15
    Membre actif Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Points : 208
    Points
    208
    Par défaut
    j'ai attribué directement à mon user le droit d'execute sur la package
    et cela n'a rien changé

    et meme si c'est le propiétaire qui lance cette procédure, c'est toujours la meme erreur

  16. #16
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    eun doute m'habite : est-ce que par hasard, sbrunet n'essayerais pas de se retirer le role à lui-même ?

    sinon, peux-tu résumer les différents comptes utilisés ?

  17. #17
    Membre actif Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Points : 208
    Points
    208
    Par défaut
    non non le user essaie d'enlever un role à un autre

    j'ai donc 2 user
    1 DBA : celui qui crée les roles, les packages etc
    1 SBRUNET : qui lui essaie de faire le revoke

  18. #18
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Citation Envoyé par Nounoursonne
    non non le user essaie d'enlever un role à un autre

    j'ai donc 2 user
    1 DBA : celui qui crée les roles, les packages etc
    1 SBRUNET : qui lui essaie de faire le revoke
    et sbrunet veut revoker quoi à qui ?

  19. #19
    Membre actif Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Points : 208
    Points
    208
    Par défaut
    le role TOTO à DBA

  20. #20
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Si le jeu d'essai ci-dessous se déroule correctement, c'est qu'il nous manque des éléments ou que ta configuration n'est pas exactement celle que tu nous donne.

    Si au contraire, cela échoue, ce sera un bug.

    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
    33
    34
    35
    SYSTEM@BD9i > create procedure revoke_role
      2  is
      3  begin
      4     execute immediate('revoke toto from system');
      5  end;
      6  /
     
    Procédure créée.
     
    SYSTEM@BD9i > create role toto;
     
    Rôle créé.
     
    SYSTEM@BD9i > grant toto to system with admin option;
     
    Autorisation de privilèges (GRANT) acceptée.
     
    SYSTEM@BD9i > create user scott identified by tiger;
     
    Utilisateur créé.
     
    SYSTEM@BD9i > grant connect to scott;
     
    Autorisation de privilèges (GRANT) acceptée.
     
    SYSTEM@BD9i > grant execute on revoke_role to scott;
     
    Autorisation de privilèges (GRANT) acceptée.
     
    SYSTEM@BD9i> connect scott/tiger
    Connecté.
     
    SCOTT@BD9i> execute system.revoke_role;
     
    Procédure PL/SQL terminée avec succès

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] Problème avec un double quote
    Par wormseric dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 26/01/2007, 14h44
  2. Problème avec la commande revoke sous oracle
    Par merlubreizh dans le forum Oracle
    Réponses: 19
    Dernier message: 28/04/2006, 15h02
  3. Formulaires : problème avec les slashes et les quotes
    Par GarGamel55 dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2005, 15h59

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