Also: Ich habe einen neuen Benutzer angelegt (averpAdmin) dann mit dem nutzer sysdba den Nutzer im Averp Hauptprogramm angelegt. Gruppe Administrator - genau wie der sysdba.
An den User-Berechtigungen kann es auch nicht liegen, da habe ich nix gesetzt. LAut der Anzeige haben die User sysdba und mein neuer User komplett die gleichen Rechte.
Wenn ich aber eine bestellung machen will, kommt immer die Fehlermeldung
"No Permission for read/select on TABLE BARTEL". (335544352)
Hat da einer eine Idee?
Ciao
Checka
neuer nutzer hat keine berechtigungen
Moderator: SYNERPY
-
checka
- Beiträge: 52
- Registriert: Fr Dez 01, 2006 11:09 am
-
admin
- Site Admin
- Beiträge: 2673
- Registriert: Di Feb 10, 2004 5:48 am
- Wohnort: Bayreuth
Tabelle BARTEL??? Hmmm, da hat aber einer rumgebastelt, die stammt nämlich nicht von uns...
Also:
AvERP hat zwei ebenen der Rechtevergabe, einmal auf Datenbank-Ebene (hier sollte alles lesbar sein und das ist es hier nicht) und einmal auf Programm-Ebene (das ist die Zuordnung der Gruppe Administrator).
Abhilfe zu dem Problem schafft das Skript:
Generell: Änderungen mitprotokollieren, beim nächsten Update ist sonst alles, von dem wir nicht wissen, weg. Tabellennamen wie "BARTEL" sind zwar schön AvERP-konform aber hier läuft man Gefahr, dass der Name von uns auch irgendwann verwendet wird. Besser ist ein Name wie BARTEL_XYZ. An dem "_XYZ" (oder "_ABC", etc.) kann man dann erkennen, was einem gehört und damit kommt es auch nicht zu Überschneidungen.
Also:
AvERP hat zwei ebenen der Rechtevergabe, einmal auf Datenbank-Ebene (hier sollte alles lesbar sein und das ist es hier nicht) und einmal auf Programm-Ebene (das ist die Zuordnung der Gruppe Administrator).
Abhilfe zu dem Problem schafft das Skript:
Code: Alles auswählen
GRANT ALL ON BARTEL TO PUBLIC;
-
checka
- Beiträge: 52
- Registriert: Fr Dez 01, 2006 11:09 am
OK Das hat geklappt.
Jetzt ist es aber so:
Ich bekomme eine ähnliche Fehlermeldung, wenn ich versuche die kundenstammdaten (4.Seite) zu bearbeiten:
"ISC Fehlernummer: 335544352
ISC Fehlermeldung: no permission for Read/Select access to COLUMN BENUTZER"
Jetzt frage ich mich "nur" von welcher verdammten Tabelle redet der jetzt???
Ciao
Checka
Jetzt ist es aber so:
Ich bekomme eine ähnliche Fehlermeldung, wenn ich versuche die kundenstammdaten (4.Seite) zu bearbeiten:
"ISC Fehlernummer: 335544352
ISC Fehlermeldung: no permission for Read/Select access to COLUMN BENUTZER"
Jetzt frage ich mich "nur" von welcher verdammten Tabelle redet der jetzt???
Ciao
Checka
-
admin
- Site Admin
- Beiträge: 2673
- Registriert: Di Feb 10, 2004 5:48 am
- Wohnort: Bayreuth
Was gibt denn diese Prozedur zurück?
Das Ergebnis kann man auch als Skript ausführen.
Wie immer: Verwendung auf eigene Gefahr.
Code: Alles auswählen
SET TERM ^ ;
CREATE PROCEDURE P_ADMIN_PUBLICRECHTE_CHECK
RETURNS (
KEINPUBLIC VARCHAR(200))
AS
BEGIN
/* Letzter Stand 05.12.2006 08:58:26 GK */
/* Tabellen, Views, Proceduren ausgeben, wo keine PUBLIC-Rechte gesetzt sind */
/* Protokollieren, dass Aktion hier durchgelaufen ist */
IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('P_ADMIN_PUBLICRECHTE_CHECK');
FOR SELECT cast('GRANT ALL ON '||F_LRTRIM(A.RDB$RELATION_NAME)||' TO PUBLIC;' as varchar(200)) AS "TABELLE"
FROM RDB$RELATIONS A
WHERE (A.RDB$VIEW_BLR IS NULL) AND (A.RDB$SYSTEM_FLAG = 0) AND (A.RDB$EXTERNAL_FILE IS NULL) AND
A.RDB$RELATION_NAME NOT IN (SELECT B.RDB$RELATION_NAME FROM RDB$USER_PRIVILEGES B
WHERE A.RDB$RELATION_NAME = B.RDB$RELATION_NAME AND B.RDB$USER = 'PUBLIC')
UNION
SELECT DISTINCT cast('GRANT ALL ON '||F_LRTRIM(A.RDB$VIEW_NAME)||' TO PUBLIC;' as varchar(200)) AS "TABELLE"
FROM RDB$VIEW_RELATIONS A
WHERE A.RDB$VIEW_NAME NOT IN (SELECT B.RDB$RELATION_NAME FROM RDB$USER_PRIVILEGES B
WHERE A.RDB$VIEW_NAME = B.RDB$RELATION_NAME AND B.RDB$USER = 'PUBLIC')
UNION
SELECT DISTINCT cast('GRANT EXECUTE ON PROCEDURE '||F_LRTRIM(A.RDB$PROCEDURE_NAME)||' TO PUBLIC;' as varchar(200)) AS "TABELLE"
FROM RDB$PROCEDURES A
WHERE A.RDB$PROCEDURE_NAME NOT IN (SELECT B.RDB$RELATION_NAME FROM RDB$USER_PRIVILEGES B
WHERE A.RDB$PROCEDURE_NAME = B.RDB$RELATION_NAME AND B.RDB$USER = 'PUBLIC')
INTO :KEINPUBLIC DO
SUSPEND;
END^
SET TERM ; ^
DESCRIBE PROCEDURE P_ADMIN_PUBLICRECHTE_CHECK
'Admin: Tabellen, Views, Proceduren ausgeben, wo keine PUBLIC-Rechte gesetzt sind';
GRANT INSERT ON A_WASMACHTIB TO PROCEDURE P_ADMIN_PUBLICRECHTE_CHECK;
GRANT EXECUTE ON PROCEDURE P_ADMIN_PUBLICRECHTE_CHECK TO "PUBLIC";
GRANT EXECUTE ON PROCEDURE P_ADMIN_PUBLICRECHTE_CHECK TO SYSDBA;
Wie immer: Verwendung auf eigene Gefahr.
-
checka
- Beiträge: 52
- Registriert: Fr Dez 01, 2006 11:09 am