Announcement

Collapse
No announcement yet.

Berechtigungen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Berechtigungen

    Hallo zusammen,

    ich möchte von einem User "U1" ein Skript ausführen, welches einen User "U2" inklusive Tabellen etc. anlegt.

    Nun möchte ich aber (als "U1" angemeldet) an einen weiteren User "U3" Berechtigungen vergeben.

    Ich meinte:
    grant execute on U2.Funktion1 to U3.

    Leider bekomme ich die Fehlermeldung: "Unzureichende Berechtigung".

    Meine Frage:

    Welche Berechtigung muss U1 besitzen, um den o.g. Grant ausführen zu können.

    Vielen Dank im Voraus

    Oskar

  • #2
    Hallo:

    - GRANT ANY PRIVILEDGE resp GRANT ANY ROLE

    Comment


    • #3
      Hallo Ulrich,

      danke für die Info.
      Ich hab dem Benutzer "U1" nun beide rollen mit Admin-Option zugeordnet.

      Leider bekomm ich die Fehlermeldung immer noch.

      Was mach ich da falsch?

      danke für die Hilfe

      gruß

      oskar

      Comment


      • #4
        - Welche Berechtigungen hat den U1 jetzt insgesamt ?

        Comment


        • #5
          Hallo Ulrich,

          folgende Berechtiungen hat U1

          with admin OPTION
          connect Y Y
          dba Y Y

          with admin OPTION:
          alter tablespace Y
          create table Y
          create tablespace Y
          grant any privilege Y
          grant any role Y
          unlimited tablespace Y

          gruß

          Oskar

          Comment


          • #6
            - Versuche bitte mal, die Role RESOURCE zu geben

            Comment


            • #7
              hab ich gerade versucht, mit ADMIN-Option

              immer noch "Unzureichende Berechtigungen"

              Comment


              • #8
                - Hmm. keine Ahnung, an was es liegen könnte.. Anbei mal eine Aufstellung der Rolen / Priv's, welche wir für unsere Entwicklungsuser benutzen. Damit klappen solche Sachen bei uns.

                Wir haben folgende Rollen definiert (hierarchisch)

                U_ALLG --> ALTER SESSION,CREATE SESSION, CREATE SYNONYM
                P_ALLG --> CREATE TABLE, CREATE VIEW, CREATE PROCEDURE etc..(Für Programmierung) sowie Rollen U_ALLG und SELECT_CATALOG_ROLE
                M_ALLG --> CREATE PUBLIC SYNONYM, DROP PUBLIC SYNONYM, RESTRICTED SESSION sowie die Role P_ALLG

                Unsere Entwicklungsuser haben nun die ROLE M_ALLG zugeteilt, sowie zusätzlich die Rollen CONNECT und RESOURCE, sowie IMP_FULL_DATABASE (Nur bei Bedarf), ausserdem noch die Privs DEBUG_xxx und UNLIMITED Tablespace.

                Damit können wir problemlos (als Owner der Objekte) die entsprechenden GRANT's für die eigentlichen DB-Benutzer (wir arbeiten mit einem oder ausnahmsweise mehreren Proxy-Usern in der DB) zuteilen.

                Gruss

                Comment


                • #9
                  Hallo Ulrich,

                  ich habe die Privs, die Du angegeben hast, zugeordnet.
                  Es funktioniert noch nicht.
                  Ich denke, das Problem ist, daß der user, der die Grants vergeben soll, nicht der owner der Objekte ist.

                  Ich möchte von einem Benutzer "U1" ausgehend einen User "U2" anlegen. Auf einen Teil der Funktionen und Prozeduren des "U2" sollen weitere User "U3" zugreifen dürfen.

                  Ziel ist es, ein Create-Skript zu haben und nicht eines, mit dem ich den "U2" erstelle und danach ein zweites, das unter "U2" ausgeführt werden muß, um die Privs der eigenen Objekte an andere User zu verteilen.

                  Trozdem vielen Dank erstmal für Deine Unterstützung.

                  Schöne Grüße

                  Oskar

                  Comment


                  • #10
                    Originally posted by oskar View Post
                    ...
                    Ich meinte:
                    grant execute on U2.Funktion1 to U3.

                    Leider bekomme ich die Fehlermeldung: "Unzureichende Berechtigung".

                    ...
                    Hallo Oskar,

                    die Fehlermeldung "Unzureichende Berechtigung" bekommst du auch, wenn in der Funktion U2.Funktion1 auf Objekte zugegriffen wird, auf die der Grantende zwar Zugriff aber nicht mit ADMIN OPTION hat. Kann denn U2 das GRANT EXECUTE problemlos absetzen?

                    Trotz allem würde ich es aber vorziehen, das Anlegen von Objekten und das erteilen von Rechten unter dem jeweiligen Schema vorzunehmen. Du mußt dazu auch keine zwei Scripte haben. Da du den User U2 ja über das Script anlegst, verfügst du doch über Username/Pwd, so daß du auch ein "CONNECT U2/pwd4u2@deineDB" im Script einbauen kannst.

                    Gruß Falk
                    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                    Comment


                    • #11
                      Hallo Falk,

                      danke für den Tip.

                      Ich werde die von Dir vorgeschlagene skript-basierte Lösung vorziehen.

                      Das mit der Berechtigung mit admin-option werd ich später ausprobieren.

                      Nochmals vielen Dank.

                      gruß

                      Oskar

                      Comment


                      • #12
                        Privilegien

                        Hallo oskar,

                        natürlich ist es möglich, Dein Problem zu lösen!

                        Das von Ulrich Vaid vorgeschlagene Privileg "GRANT ANY PRIVILEGE" bezieht sich nur auf System Privilegien. Das Pendant für Objekt Privilegien ist "GRANT ANY OBJECT PRIVILEGE".

                        Folgendes Skript sollte problemlos funktionieren:
                        connect SYSTEM/<password>@<db>
                        CREATE User U1 identified by U1
                        /
                        GRANT CREATE SESSION
                        , CREATE USER
                        , CREATE ANY PROCEDURE
                        , GRANT ANY OBJECT PRIVILEGE
                        to U1
                        /

                        connect U1/U1@<db>
                        CREATE User U2 identified by U2
                        /
                        CREATE User U3 identified by U3
                        /
                        CREATE Function U2.F return int is BEGIN return 0; END F;
                        /
                        GRANT EXECUTE on U2.F to U3
                        /



                        Siegfried

                        Comment

                        Working...
                        X