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
Versuch es doch einfach mit
QSH CMD('chmod 0666 /pfad/*')