1. Start
  2. Unternehmen
  3. Blog
  4. Warum das SYS-Passwort (manchmal) unwichtig ist

Warum das SYS-Passwort (manchmal) unwichtig ist

Der Benutzer SYS

Der Benutzer SYS in einer Oracle Datenbank ist der grundlegende administrative Benutzer, ähnlich dem “root” unter Linux. Wenn eine Datenbank angelegt wird, wird demnach ein möglichst komplexes Passwort vergeben, um den bestmöglichen Schutz zu gewährleisten. Das ist auch völlig in Ordnung und wichtig. Der erste Anmeldeversuch direkt auf dem Server an der Datenbank könnte dann so aussehen:

 

[oracle@vm160 ~]$ env | grep ORA
ORACLE_SID=orcl19
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/db/19

[oracle@vm160 ~]$ sqlplus sys

SQL*Plus: Release 19.0.0.0.0 - Production on Tue May 20 08:36:20 2025
Version 19.25.0.0.0

Copyright (c) 1982, 2024, Oracle.  All rights reserved.

Enter password: *******************************************
ERROR:
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER

 

Das klappt also schon mal nicht.

Die Rolle SYSDBA

Die Rolle SYSDBA ist eine spezielle Rolle, die mit einer Gruppe im Betriebssystem verknüpft ist. Diese Zuordnung wird während der Installation festgelegt. Es gibt noch ein paar mehr Rollen dieser Art für verschiedene administrative Zwecke, z.B. SYSOPER, SYSBACKUP usw. Hier mal exemplarisch die Liste der verschiedenen Gruppen, die zu einer Oracle Datenbank Installation auf Linux gehören:

 

[oracle@vm160 ~]$ grep 543 /etc/group
oinstall:x:54321:oracle,orarman,mydba
dba:x:54322:oracle
oper:x:54323:oracle
backupdba:x:54324:oracle
dgdba:x:54325:oracle
kmdba:x:54326:oracle
racdba:x:54330:oracle

 

Was es damit genau auf sich hat, dazu später. 

Die Anmeldung als SYS

Wie die Fehlermeldung im ersten Beispiel schon sagt, muss die Anmeldung als SYS mit der Rolle SYSDBA (oder SYSOPER) erfolgen. Also probieren wir das aus:

 

[oracle@vm160 ~]$ sqlplus sys as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Mon May 19 13:44:25 2025
Version 19.25.0.0.0
Copyright (c) 1982, 2024, Oracle.  All rights reserved.
Enter password: *******************************************
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.25.0.0.0
SYS @ ORCL19:CDB$ROOT:>show user
USER is "SYS"

 

Perfekt, alle Zeichen des Passwortes auf Anhieb korrekt eingegeben und voila, wir sind als SYS an der Datenbank angemeldet. So stellt man sich das vor. Doch hat man immer so ein Glück?

 

[oracle@vm160 ~]$ sqlplus sys/falschespasswort as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Mon May 19 08:15:12 2025
Version 19.25.0.0.0
Copyright (c) 1982, 2024, Oracle.  All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.25.0.0.0
SYS @ ORCL19:CDB$ROOT:>show user
USER is "SYS"

 

Moment, das ist ganz sicher nicht das korrekte Passwort. Aber angemeldet ist man trotzdem. Na egal, erst mal das passwortlose Anmelden mit “/ as SYSDBA” ausprobieren:

 

[oracle@vm160 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Mon May 19 08:14:58 2025
Version 19.25.0.0.0
Copyright (c) 1982, 2024, Oracle.  All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.25.0.0.0
SYS @ ORCL19:CDB$ROOT:>show user
USER is "SYS"

 

Na wenigstens klappt das auch wie erwartet. Was passsiert denn nun aber, wenn man einen ganz anderen Nutzer verwendet für die Anmeldung?

 

[oracle@vm160 ~]$ sqlplus falscheruser/komischespasswort as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Mon May 19 08:15:50 2025
Version 19.25.0.0.0
Copyright (c) 1982, 2024, Oracle.  All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.25.0.0.0
SYS @ ORCL19:CDB$ROOT:>show user
USER is "SYS"

 

Das geht auch? Und wir sind trotzdem SYS? Was ist denn da los? Was soll denn der ganze Aufstand mit dem komplexen Passwort? 

 

 

Die Authentifizierung von SYS

Die Authentifizierung bei der lokalen Anmeldung an einer Oracle Datenbank wird über das Betriebssystem realisiert. Wird “as SYSDBA” bei der Verbindung angegeben, wird einfach geprüft, ob der aktuelle Benutzer im Betriebssystem zur der Gruppe gehört, die für die Rolle SYSDBA bestimmt wurde, im Beispiel also die Gruppe “dba”. Ist das der Fall, wird man automatisch als Benutzer SYS an der Datenbank angemeldet. Das ist der Grund, warum jegliches mühsames Eintippen von Nutzername oder Passwort vergebene Mühe ist und von der Datenbank ignoriert wird, da die Authentifizierung bereits erfolgt ist. 

Die Kombination von Benutzername und Passwort kommt erst bei der Anmeldung über SQL*Net zum Tragen. Dann wird die Authentifizierung tatsächlich mithilfe der Passwortdatei durch die Datenbank selbst durchgeführt.

Weitere Benutzer mit SYSDBA Rechten

Das Verhalten kann man leicht nachvollziehen, indem man einen weiteren Betriebssystemnutzer erstellt, der zur Gruppe “dba” gehört.

 

[root@vm160 ~]# useradd -G oinstall,dba mydba
[root@vm160 ~]# id mydba
uid=54323(mydba) gid=54331(mydba) groups=54331(mydba),54321(oinstall),54322(dba)

 

Der Benutzer “mydba” gehört somit auch der Gruppe “dba” an. Man kann sich nun auch passwortlos an der Oracle Datenbank anmelden, wenn man als “mydba” im Betriebssystem agiert, die richtigen Umgebungsvariablen vorausgesetzt.

 

[mydba@vm160 ~]$ env | grep ORA
ORACLE_SID=orcl19
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/db/19
[mydba@vm160 ~]$ sqlplus sys/weissichnicht as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Mon May 19 08:27:48 2025
Version 19.25.0.0.0
Copyright (c) 1982, 2024, Oracle.  All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.25.0.0.0
SYS @ ORCL19:CDB$ROOT:>show user
USER is "SYS"

 

Nach den obigen Erklärungen wenig überraschend sind wir nun ebenfalls wieder als SYS an der Datenbank angemeldet und können entsprechend agieren.

 

 

Kommentare

Keine Kommentare

Kommentar schreiben

* Diese Felder sind erforderlich