PDA

View Full Version : IFS-Berechtigungen



KM
15-05-19, 15:29
Wir haben hier seit kurzem ein seltsames Problem. Bisher bin ich immer davon ausgegangen, dass eine Datei, die man im IFS erstellt, automatisch die Berechtigungen des Ordners erhält, sofern man nichts anderes angibt.

Wir haben ein Tool im Einsatz, das über ein Java-Programm Daten per SQL aus der DB2 selektiert, in eine native xls-Datei konvertiert und diese xls-Datei direkt per "FileOutputStream" ins IFS schreibt.

Für den Ordner gibt es für den Benutzer *PUBLIC die Berechtigung DTAAUT(*RWX) OBJAUT(*ALL). Also sollte ja jeder alle Berechtigungen haben. Die xls-Datei wird jedoch mit den Berechtigungen *PUBLIC DTAAUT(*RW) OBJAUT(*ALL) und für den Benutzer, der das Tool aufgerufen hat DTAAUT(*RW) OBJAUT(*NONE) erstellt. Somit kann dieser Benutzer die xls-Datei zwar erstellen, aber hinterher nicht mehr löschen.

Wie kann das sein?

Gruß,
KM

Robi
15-05-19, 15:38
<Halbwissen>
Irgendwie ist da was mit kopieren. Wenn das Tool die Datei erst 'woanders' erzeugt um sie, wenn fertig, ins Ziel zu kopieren, greifen die Berechtigungen des 1. Ordners
</Halbwissen>

KM
16-05-19, 06:27
Irgendwie ist da was mit kopieren. Wenn das Tool die Datei erst 'woanders' erzeugt um sie, wenn fertig, ins Ziel zu kopieren, greifen die Berechtigungen des 1. Ordners
Genau das ist ja gerade nicht der Fall. Die Datei wird direkt in de Zielordner geschrieben.

Gruß,
KM

Fuerchau
16-05-19, 12:01
Automatisch passiert da leider nichts.
Man muss die Berechtigung gerade bzgl. der Vererbung schon genau definieren, sonst wird nichts vererbt..
Dies funktioniert nur vernünftig mit AUTL-Objekten und keinen expliziten IFS-Berechtigungen.
Im Gegensatz zu normalen QSYS-Objekten erlauben IFS-Objekte leider beide Varianten gleichzeitig.
Ich kann sowohl eine AUTL anhängen als auch individuelle Berechtigungen.

Der Grundsatz bei der Erstellung im IFS bleibt jedoch erhalten:
Eigner ist immer der Ersteller.
Adopted Authority wird grundsätzlich nicht unterstützt.

KM
16-05-19, 14:42
Automatisch passiert da leider nichts.

Also das kann ich mir ja jetzt gar nicht vorstellen. Wir haben bereits einige Java-Applikationen, die Dateien per FileOutputStream ins IFS schreiben und die haben alle die Berechtigung des Ordners erhalten, ohne dass spezielle Berechtigungen vergeben wurden.
Nach Deiner Theorie müsste man ja jedes mal nachdem man eine Datei ins IFS speichert, dann noch die Berechtigung setzen. Das kann ja nicht sein. Wie soll man das in einem Java-Programm denn steuern? Das würde höchstens über die Toolbox gehen.

Fuerchau
16-05-19, 16:33
Das ist korrekt. Übernommen wird die Public-Berechtigung, die per Default immer auf *EXCLUDE gestellt wird. Dies muss aber korrekt auf dem Parent-Verzeichnis konfiguriert werden.

Zerberus77
16-05-19, 20:11
Hallo KM,

hier ist es genau (wenn auch sehr kompliziert) beschrieben:
http://www-01.ibm.com/support/docview.wss?uid=nas8N1019591

MFG Zerberus

KM
17-05-19, 13:05
Hallo Zerberus,

dieses Dokument hatte ich zwar auch schon gefunden, aber bin im ersten Moment nicht ganz schlau daraus geworden. Jetzt hab ich aber folgenden Absatz nochmal genauer angeschaut und glaube es jetzt verstanden zu haben:


Initial object authorities are assigned to a new file or directory based on the authority values of the parent directory. The rules involved with this are as follows:
a. The owner for the new object has the same object authorities the owner of the parent directory to the parent directory.
b. The primary group for the new object the same object authorities the primary group of the parent directory to the parent directory.
c. *PUBLIC has the same object authorities to the new object that it has to the parent directory.

Bei meinen diversen Tests konnte ich jetzt folgendes feststellen, was mit dieser Beschreibung übereinstimmt:

Der Eigner des neuen Objekts erbt die Objekt-Berechtigungen des Ordnereigners (!) und nicht die Berechtigungen von *PUBLIC. Wenn also der Ordnereigner keine explizite Objekt-Berechtigung auf den Ordner hat, erhält der Eigner des neuen Objekts dafür auch keine Objekt-Berechtigung.

Die Objekt-Berechtigungen von *PUBLIC des Ordners werden auf *PUBLIC des neuen Objekts übernommen. Da aber das neue Objekt auch einen expliziten Eigner hat, greift hier *PUBLIC nicht.

Diese Vorgehensweise trifft auf jeden Fall zu, wenn eine Datei im IFS erstellt wird durch ein Java-Programm, das auch im IFS liegt.

Ich habe testweise jetzt auch mal ein Java-Programm erstellt, das nicht im IFS liegt, aber auch Dateien ins IFS schreibt. In diesen Fällen werden immer alle Berechtigungen des Ordners geerbt (wurde mit verschiedenen Ordnern getestet). Zusätzlich erhält der Ersteller auch alle Berechtigungen explizit.

Das finde ich jetzt zwar ganz schön kompliziert und nicht unbedingt logisch. Aber jetzt habe ich wenigstens verstanden wie es funktioniert und muss mir in Zukunft genau überlegen wie ich die Berechtigungen vergebe.

Gruß,
KM