Nur Zugriff mit sYSDBA möglich

Forum für Fragen rund um die Installation, Konfiguration und Inbetriebnahme von Firebird.

Moderator: martin.koeditz

Antworten
Benutzeravatar
echtet
Beiträge: 4
Registriert: Do 9. Apr 2020, 15:22

Hallo Forum,

ich habe folgendes Problem:
Ich greife mit 2 Windows10-PCs auf mehrere Datenbanken zu, die auf einem RaspberryPi liegen. Installiert ist der Firebird-Server 3.0. Inzqischen ist es mir zumindest gelungen, von den beiden Windows-PCs mit dem User SYSDBA auf die datenbanken zuzugreifen. Wenn ich z.B. mit FlameRobin neue User anlege (es sind nur 2 User), so wird immer der zugriff abgewiesen, obohl ich sie um Usermanager von Flamerobin und auch nach aufruf von GSEC sehen kann.
Früher hatte ich den Firebird 2.5 verwendet und damit hatte ich keine Probleme (wahrscheinlich weil die security2.fdb gepflegt wurde). Mit Firebird 3.0 hat sich das Berechtigungskonzept wohl stark geändert und hier hänge ich jetzt fest.
Ich habe mal die firebird.conf gepackt angehangen.
Hat jemand eine Idee?
Viele Grüße,
echtet
Dateianhänge
firebird.conf.zip
(10.81 KiB) 933-mal heruntergeladen
Benutzeravatar
andi
Beiträge: 12
Registriert: Fr 13. Mär 2020, 16:26

Hi,
Wenn der Zugriff über sysdba funktioniert. hat es ja nichts mit der firebird.conf zu tun, sondern eher, dass die Benutzer nicht die Berechtigung haben, um auf die Datenbanken/Tabellen zuzugreifen. In Flamerobin kann man den Benutzern unter "Usermanager" die jeweiligen Rechte zuweisen - Zugriff auf die Datenbank/Tabellen/Views/Stored Procs/ ...
Benutzeravatar
martin.koeditz
Beiträge: 443
Registriert: Sa 31. Mär 2018, 14:35

Hi,

ab Firebird 3 werden Benutzerberechtigungen komplett in SQL getätigt.

Hilfreich ist das Quickstart Guide ab Seite 14.
https://firebirdsql.org/file/documentat ... kStart.pdf

Die Syntax für den Benutzerbefehl ist

Code: Alles auswählen

CREATE USER name PASSWORD 'password' [<options>] [<tags>];
 [CREATE OR] ALTER USER name [SET] [PASSWORD 'password'] [<options>] [<tags>];
 ALTER CURRENT USER [SET] [PASSWORD 'password'] [<options>] [<tags>];
 DROP USER name;
 
 <options>  ::=  <option> [, <option> ...]<option>   ::=  {FIRSTNAME | MIDDLENAME | LASTNAME} 'stringvalue'
                   | ACTIVE
                   | INACTIVE
                   
 <tags>     ::=  TAGS (<tag> [, <tag> ...])
 <tag>      ::=  tagname = 'stringvalue'                  
                   | DROP tagname

Und hier noch ein paar Beispiele aus der Doku:

Code: Alles auswählen

create user dubya password 'Xwha007_noma' firstname 'GW' lastname 'Shrubbery';
create user lorna password 'Mayday_domaka'    tags (Street = 'Main Street', Number = '888');
alter user benny tags (shoesize = '8', hair = 'blond', drop weight);
alter current user set password 'SomethingEvenMoreSecretThanThis';
alter user dubya set inactive;drop user ted;
Nach Anlage der Benutzer können die Rechte wie gehabt vergeben werden:

Code: Alles auswählen

GRANT SELECT, INSERT ON TABLE SALES TO USER ALEX;
Bitte beachte auch, dass jede DB nun eine eigene Security-DB nutzen kann. Dies wird in databases.conf festgelegt.

Gruß
Martin
Martin Köditz
it & synergy GmbH
Benutzeravatar
echtet
Beiträge: 4
Registriert: Do 9. Apr 2020, 15:22

Hallo Martin Hallo andi,

Danke für die Antworten. Ich kann nun lokal auf dem RaspberryPi entwder per ISQL oder mit FlameRobin mit dem angelegten Testuser auf die Datenbanken zugreifen (also quasi lokal). Wenn ich allerdings von den besagten Windows-PCs aus zugreife, funktioniert es nicht, von dort weiterhin nur mit SYSDBA.
Müsste vielleicht doch noch in der firebird.conf etwas angepasst werden?
Bin momentan etwas ratlos...
Viele Grüße,
echtet
Benutzeravatar
martin.koeditz
Beiträge: 443
Registriert: Sa 31. Mär 2018, 14:35

Hallo echtet,

welche Fehlermeldung erhältst du beim Zugriff? Ich kann mir nur vorstellen, dass das falsche Authentifizierungsplugin genutzt wird.

Gruß
Martin
Martin Köditz
it & synergy GmbH
Benutzeravatar
echtet
Beiträge: 4
Registriert: Do 9. Apr 2020, 15:22

Hallo Martin,

ja, meine Vermutung geht auch in diese Richtung. Wenn ich z.B. mit IBEXPERT versuche auf eine Datenbank zuzugreifen, kommt folgende Fehlermeldung:
>>
Unsuccessful execution caused by a System error that precludes successful execution of subsequent statements. Vour user name and password are not defined. Ask your database administrator to set up a Firebird login.
<<
Angelegt habe ich den Testuser PAUL mit dem ISQL-Tool lokal auf dem Raspberry mit dem Befehl:
CREATE USER PAUL PASSWORD test
Im Usermanager von Flamerobin ist der User sichtbar und ich kann mich auch (lokal) als PAUL anmelden.
Aus irgendeinem Grund werden die Anmeldeinformationen von den Windows-PCs wohl nicht an den RaspberryPi durchgereicht.
Ich kann jetzt nochmal versuchen, die Einträge zum AUTHSERVER bzw. AUTHCLIENT in der firebird.conf zu variieren, aber das ist eigentlich ein "Stochern im Nebel".

Nachtrag:
Habe mit " select SEC$USER_NAME, SEC$PLUGIN from sec$users;" folgendes Ergebnis erhalten:

SEC$USER_NAME SEC$PLUGIN
=============================== ===============================
SYSDBA Srp
THIXXX Srp
ANXXXXX Srp
PAUL Srp
SYSDBA Legacy_UserManager

Wie kann ich denn einem User das Legacy-Plugin zuordnen?

Nachtrag:
Nachdem ich nun in der firebird.conf folgenden Eintrag geändert habe:
UserManager = Legacy_UserManager
funktioniert es. :D Ich musste zwar meine beiden user neu anlegen, aber nun funktioniert auch der Zugriff von den beiden Windows-PCs aus.
Ein großer Dank an Martin, der mich auf die richtige Fährte gebracht hat!!!
Was mich noch etwas irritiert ist, wenn ich wieder den ISQL-Befehl eingebe "select SEC$USER_NAME, SEC$PLUGIN from sec$users;" bekomme ich das Ergebnis:

SEC$USER_NAME SEC$PLUGIN
=============================== ===============================
SYSDBA Legacy_UserManager
PETER Legacy_UserManager

Mein Testuser "Peter" ist zwar noch da, meine beiden User ThiXX und AngXXX werden aber nicht gelistet, obwohl sie funktionieren.

Viele Grüße,
echtet
Benutzeravatar
martin.koeditz
Beiträge: 443
Registriert: Sa 31. Mär 2018, 14:35

Hallo echtet,

bitte poste mal den Inhalt deiner firebird.conf. Insbesondere die Parameter AuthServer, AuthClient und UserManager sind interessant.

Probiere mal folgende Konfiguration aus (Firebird-Dienst danach neustarten:

Code: Alles auswählen

AuthServer = Legacy_Auth, Win_Sspi
AuthClient = Legacy_Auth, Srp, Win_Sspi #Windows clients
UserManager = Legacy_UserManager
Gruß
Martin
Martin Köditz
it & synergy GmbH
Benutzeravatar
echtet
Beiträge: 4
Registriert: Do 9. Apr 2020, 15:22

Hallo Martin,
Wunderbar! Das war es! :D
Wenn ich jetzt den Befehl aufrufe: select SEC$USER_NAME, SEC$PLUGIN from sec$users
erhalte ich folgende Ausgabe:

SEC$USER_NAME SEC$PLUGIN
=============================== ===============================
SYSDBA Legacy_UserManager
THIXXX Legacy_UserManager
ANXXXX Legacy_UserManager

und die Zugriffe funktionieren von den beiden Windows-PCs aus.

Falls jemand ähnliche Probleme hat, habe ich nochmal meine aktuelle firebird.conv angehangen.
Viele Grüße,
echtet
Dateianhänge
firebird.conv.zip
(10.84 KiB) 913-mal heruntergeladen
Antworten