PDA

View Full Version : Berechtigungsproblem unter IFS



peter.kinne
14-07-04, 10:03
Hallo zusammen,

wie haben ein Problem mit Berechtigungen unter IFS.

In SAP wird mit dem Systemuser in regelmäßigen Abständen ein Job gestartet. Dieser Job erstellt Tabellen in ein Verzeichnis im IFS, nehmen wir an es heißt "test_dir".

Die Berechtigung auf "test_dir" ist *public *all.

Wenn jedoch ein normaler Anwender die Tabellen lesen will, bekommt er einen Berechtigungsfehler.

Denn die erstellten Tabellen haben die Authorität des Systemusers übernommen.

Wie kann ich das Problem beseitigen ?

Vielen Dank im Voraus,

Peter Kinne

RobertMack
14-07-04, 11:33
Hallo Peter,

nach dem Erstellen/Kopieren einer Datei in das IFS schieße ich immer folgende Anweisung hinterher:

CHGAUT OBJ('/Pfad/Datei') USER(*PUBLIC) DTAAUT(*RWX)
OBJAUT(*ALL)

Gruß,

Robert

peter.kinne
14-07-04, 11:38
Hallo Peter,

nach dem Erstellen/Kopieren einer Datei in das IFS schieße ich immer folgende Anweisung hinterher:

CHGAUT OBJ('/Pfad/Datei') USER(*PUBLIC) DTAAUT(*RWX)
OBJAUT(*ALL)

Gruß,

Robert

Hallo Robert,

guter Tipp, Danke.

Aber die Tabellen werden von SAP erstellt !!!

Gruß

Peter

RobertMack
14-07-04, 11:53
Okay, dann prüfe mal die Vorgehensweise.

Falls die Dateien von der AS geholt werden (FTP, GET) dann findest Du sicher auch die Stelle, an der CHGAUT ergänzt werden muß.

Falls die Dateien "abgeliefert" werden (FTP, PUT) dann kannst Du evtl. nach der Übertragung das IFS auslesen und die CHGAUT's nachträglich ausführen (irgendwo habe ich noch so ein CL, werd's mal suchen).

Zur schnellen Hilfe kannst Du die Objekte auch manuell über die Befehlszeile mit WRKLNK ändern (ggf. als QSECOFR)

Viel Erfolg,

Robert

RobertMack
14-07-04, 12:41
Hallo nochmal, hab's gefunden:

PGM
/* VOR DER ÜBERSETZUNG AUSFÜHREN: */
/* CRTPF FILE(QTEMP/TMPFILE) RCDLEN(132) */

DCL VAR(&DIR#) TYPE(*CHAR) LEN(15) +
VALUE('/test_dir/*')
DCL VAR(&DIR) TYPE(*CHAR) LEN(15) +
VALUE('/test_dir/')
DCL VAR(&LNKOBJ) TYPE(*CHAR) LEN(80)
DCLF FILE(TMPFILE)

DSPLNK OBJ(&DIR#) OUTPUT(*PRINT) OBJTYPE(*STMF) +
DETAIL(*NAME) DSPOPT(*ALL)

CRTPF FILE(QTEMP/TMPFILE) RCDLEN(132)
MONMSG MSGID(CPF0000)

CPYSPLF FILE(QSYSPRT) TOFILE(QTEMP/TMPFILE) +
SPLNBR(*LAST) TOMBR(*FIRST)

DLTSPLF FILE(QSYSPRT) SPLNBR(*LAST) SELECT(*CURRENT +
*ALL *ALL DSPLNK)

LOOP1: RCVF RCDFMT(*FILE)
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ENDE))

IF COND(%SST(&TMPFILE 2 17) *NE +
'Objektverbindung ') THEN(GOTO CMDLBL(LOOP1))

LOOP2: RCVF RCDFMT(*FILE)
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ENDE))

CHGVAR VAR(&LNKOBJ) VALUE(&DIR *TCAT %SST(&TMPFILE +
2 50))
CHGAUT OBJ(&LNKOBJ) USER(*PUBLIC) DTAAUT(*RWX) +
OBJAUT(*ALL)
MONMSG MSGID(CPF0000)
GOTO CMDLBL(LOOP2)

ENDE: ENDPGM

peter.kinne
14-07-04, 13:02
Hallo Robert,

recht herzlichen Dank.

Ich werde prüfen, ob ich es so einsetzen kann.

Schönen Tag noch,

Peter

Fuerchau
14-07-04, 13:37
Versuch es doch einfach mit
QSH CMD('chmod 0666 /pfad/*')