From e1e532811436fc5022c1f5866cceccf03bf421d2 Mon Sep 17 00:00:00 2001 From: waichoi22 Date: Wed, 6 Apr 2022 10:41:33 -0400 Subject: [PATCH] HFSUnload utilities to manage RACF DB unload data Upload the set of files for the HFSUnload utilities to manage RACF DB unload data for Bruce Wells. --- .../Downloads/HFSUnload/HFSUnloadReadMe.pdf | Bin 0 -> 127308 bytes zOS-RACF/Downloads/HFSUnload/RACHFSLD.txt | 116 ++ zOS-RACF/Downloads/HFSUnload/RACHFSTB.txt | 259 ++++ zOS-RACF/Downloads/HFSUnload/irrhfsu.o | Bin 0 -> 118784 bytes zOS-RACF/Downloads/HFSUnload/irrhfsu.txt | 1090 +++++++++++++++++ 5 files changed, 1465 insertions(+) create mode 100644 zOS-RACF/Downloads/HFSUnload/HFSUnloadReadMe.pdf create mode 100644 zOS-RACF/Downloads/HFSUnload/RACHFSLD.txt create mode 100644 zOS-RACF/Downloads/HFSUnload/RACHFSTB.txt create mode 100644 zOS-RACF/Downloads/HFSUnload/irrhfsu.o create mode 100644 zOS-RACF/Downloads/HFSUnload/irrhfsu.txt diff --git a/zOS-RACF/Downloads/HFSUnload/HFSUnloadReadMe.pdf b/zOS-RACF/Downloads/HFSUnload/HFSUnloadReadMe.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d6915078a29da683c85bd67b16cabcb24e897af7 GIT binary patch literal 127308 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 M6R@y|$%zyEA15N?PXGV_ literal 0 HcmV?d00001 diff --git a/zOS-RACF/Downloads/HFSUnload/RACHFSLD.txt b/zOS-RACF/Downloads/HFSUnload/RACHFSLD.txt new file mode 100644 index 00000000..a5b0863c --- /dev/null +++ b/zOS-RACF/Downloads/HFSUnload/RACHFSLD.txt @@ -0,0 +1,116 @@ +----------------------------------------------------------------------------- +-- Copyright 2022, IBM Corporation -- +-- -- +-- Licensed under the Apache License, Version 2.0 (the "License"); -- +-- you may not use this file except in compliance with the License. -- +-- You may obtain a copy of the License at -- +-- -- +-- http://www.apache.org/licenses/LICENSE-2.0 -- +-- -- +-- Unless required by applicable law or agreed to in writing, software -- +-- distributed under the License is distributed on an "AS IS" BASIS, -- +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.-- +-- See the License for the specific language governing permissions and -- +-- limitations under the License. -- +-- -- +LOAD DATA + INDDN IRRHFSU + RESUME YES + LOG NO + INTO TABLE USER01.HFS_BD + WHEN(1:4)='0900' ( + HFSBD_NAME POSITION(006:1028) CHAR(1023), + HFSBD_INODE POSITION(1030:1039) INTEGER EXTERNAL(10), + HFSBD_FILE_TYPE POSITION(1041:1048) CHAR(8), + HFSBD_OWN_UID POSITION(1050:1059) INTEGER EXTERNAL(10), + HFSBD_OWN_UNAME POSITION(1061:1068) CHAR(8), + HFSBD_OWN_GID POSITION(1070:1079) INTEGER EXTERNAL(10), + HFSBD_OWN_GNAME POSITION(1081:1088) CHAR(8), + HFSBD_S_ISUID POSITION(1090:1090) CHAR(1), + HFSBD_S_ISGID POSITION(1095:1095) CHAR(1), + HFSBD_S_ISVTX POSITION(1100:1100) CHAR(1), + HFSBD_OWN_READ POSITION(1105:1105) CHAR(1), + HFSBD_OWN_WRITE POSITION(1110:1110) CHAR(1), + HFSBD_OWN_EXEC POSITION(1115:1115) CHAR(1), + HFSBD_GRP_READ POSITION(1120:1120) CHAR(1), + HFSBD_GRP_WRITE POSITION(1125:1125) CHAR(1), + HFSBD_GRP_EXEC POSITION(1130:1130) CHAR(1), + HFSBD_OTH_READ POSITION(1135:1135) CHAR(1), + HFSBD_OTH_WRITE POSITION(1140:1140) CHAR(1), + HFSBD_OTH_EXEC POSITION(1145:1145) CHAR(1), + HFSBD_APF POSITION(1150:1150) CHAR(1), + HFSBD_PROGRAM POSITION(1155:1155) CHAR(1), + HFSBD_SHAREAS POSITION(1160:1160) CHAR(1), + HFSBD_AAUD_READ POSITION(1165:1172) CHAR(8), + HFSBD_AAUD_WRITE POSITION(1174:1181) CHAR(8), + HFSBD_AAUD_EXEC POSITION(1183:1190) CHAR(8), + HFSBD_UAUD_READ POSITION(1192:1199) CHAR(8), + HFSBD_UAUD_WRITE POSITION(1201:1208) CHAR(8), + HFSBD_UAUD_EXEC POSITION(1210:1217) CHAR(8), + HFSBD_AUDITID POSITION(1219:1250) CHAR(32), + HFSBD_FID POSITION(1252:1267) CHAR(16), + HFSBD_CREATE_DATE POSITION(1269:1278) DATE EXTERNAL(10), + HFSBD_CREATE_TIME POSITION(1280:1287) TIME EXTERNAL(8), + HFSBD_LASTREF_DATE POSITION(1289:1298) DATE EXTERNAL(10), + HFSBD_LASTREF_TIME POSITION(1300:1307) TIME EXTERNAL(8), + HFSBD_LASTCHG_DATE POSITION(1309:1318) DATE EXTERNAL(10), + HFSBD_LASTCHG_TIME POSITION(1320:1327) TIME EXTERNAL(8), + HFSBD_LASTDAT_DATE POSITION(1329:1338) DATE EXTERNAL(10), + HFSBD_LASTDAT_TIME POSITION(1340:1347) TIME EXTERNAL(8), + HFSBD_NUMBER_LINKS POSITION(1349:1358) INTEGER EXTERNAL(10), + HFSBD_SHARELIB POSITION(1360:1360) CHAR(1), + HFSBD_ACCESS_ACL POSITION(1365:1365) CHAR(1), + HFSBD_FILEMOD_ACL POSITION(1370:1370) CHAR(1), + HFSBD_DIRMOD_ACL POSITION(1375:1375) CHAR(1), + HFSBD_SECLABEL POSITION(1380:1387) CHAR(8), + HFSBD_DSNAME POSITION(1389:1432) CHAR(44), + HFSBD_LINK POSITION(1434:2456) CHAR(1023) + ) + + INTO TABLE USER01.HFS_AC + WHEN(1:4)='0901' ( + HFACC_NAME POSITION(006:1028) CHAR(1023), + HFACC_INODE POSITION(1030:1039) INTEGER EXTERNAL(10), + HFACC_TYPE POSITION(1041:1048) CHAR(8), + HFACC_UNIXID POSITION(1050:1059) INTEGER EXTERNAL(10), + HFACC_ID_NAME POSITION(1061:1068) CHAR(8), + HFACC_READ POSITION(1070:1070) CHAR(1), + HFACC_WRITE POSITION(1075:1075) CHAR(1), + HFACC_EXEC POSITION(1080:1080) CHAR(1) + ) + + INTO TABLE USER01.HFS_AF + WHEN(1:4)='0902' ( + HFACF_NAME POSITION(006:1028) CHAR(1023), + HFACF_INODE POSITION(1030:1039) INTEGER EXTERNAL(10), + HFACF_TYPE POSITION(1041:1048) CHAR(8), + HFACF_UNIXID POSITION(1050:1059) INTEGER EXTERNAL(10), + HFACF_ID_NAME POSITION(1061:1068) CHAR(8), + HFACF_READ POSITION(1070:1070) CHAR(1), + HFACF_WRITE POSITION(1075:1075) CHAR(1), + HFACF_EXEC POSITION(1080:1080) CHAR(1) + ) + + INTO TABLE USER01.HFS_AD + WHEN(1:4)='0903' ( + HFACD_NAME POSITION(006:1028) CHAR(1023), + HFACD_INODE POSITION(1030:1039) INTEGER EXTERNAL(10), + HFACD_TYPE POSITION(1041:1048) CHAR(8), + HFACD_UNIXID POSITION(1050:1059) INTEGER EXTERNAL(10), + HFACD_ID_NAME POSITION(1061:1068) CHAR(8), + HFACD_READ POSITION(1070:1070) CHAR(1), + HFACD_WRITE POSITION(1075:1075) CHAR(1), + HFACD_EXEC POSITION(1080:1080) CHAR(1) + ) + + INTO TABLE USER01.HFS_FS + WHEN(1:4)='0904' ( + HFMFS_DSNAME POSITION(006:049) CHAR(64), + HFMFS_TYPE POSITION(051:058) CHAR(8), + HFMFS_MODE POSITION(060:069) CHAR(10), + HFMFS_SECURITY POSITION(071:080) CHAR(10), + HFMFS_SETUID POSITION(082:091) CHAR(10), + HFMFS_MUID POSITION(093:102) INTEGER EXTERNAL(10), + HFMFS_MUSER POSITION(104:111) CHAR(8), + HFMFS_MOUNTPOINT POSITION(0113:1135) CHAR(1023) + ) diff --git a/zOS-RACF/Downloads/HFSUnload/RACHFSTB.txt b/zOS-RACF/Downloads/HFSUnload/RACHFSTB.txt new file mode 100644 index 00000000..c79f7d51 --- /dev/null +++ b/zOS-RACF/Downloads/HFSUnload/RACHFSTB.txt @@ -0,0 +1,259 @@ +----------------------------------------------------------------------------- +-- Copyright 2022, IBM Corporation -- +-- -- +-- Licensed under the Apache License, Version 2.0 (the "License"); -- +-- you may not use this file except in compliance with the License. -- +-- You may obtain a copy of the License at -- +-- -- +-- http://www.apache.org/licenses/LICENSE-2.0 -- +-- -- +-- Unless required by applicable law or agreed to in writing, software -- +-- distributed under the License is distributed on an "AS IS" BASIS, -- +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.-- +-- See the License for the specific language governing permissions and -- +-- limitations under the License. -- +-- -- +------------------------------------------------------------------------ +-- Create the TABLESPACE for the IRRHFSU tables -- +------------------------------------------------------------------------ +-- ; + CREATE TABLESPACE IRRHFSU IN RACFDB2 + LOCKSIZE TABLESPACE + SEGSIZE 64 + PCTFREE 0 + USING STOGROUP STOGRP01 + PRIQTY 2000 + SECQTY 500 + ERASE YES + ; +------------------------------------------------------------------------ +-- HFS Basic Data -- +------------------------------------------------------------------------ +-- ; +CREATE TABLE USER01.HFS_BD ( + HFSBD_NAME VARCHAR(1023) NOT NULL, + HFSBD_INODE INTEGER NOT NULL, + HFSBD_FILE_TYPE CHAR(8) NOT NULL, + HFSBD_OWN_UID INTEGER NOT NULL, + HFSBD_OWN_UNAME CHAR(8), + HFSBD_OWN_GID INTEGER NOT NULL, + HFSBD_OWN_GNAME CHAR(8), + HFSBD_S_ISUID CHAR(1) NOT NULL, + HFSBD_S_ISGID CHAR(1) NOT NULL, + HFSBD_S_ISVTX CHAR(1) NOT NULL, + HFSBD_OWN_READ CHAR(1) NOT NULL, + HFSBD_OWN_WRITE CHAR(1) NOT NULL, + HFSBD_OWN_EXEC CHAR(1) NOT NULL, + HFSBD_GRP_READ CHAR(1) NOT NULL, + HFSBD_GRP_WRITE CHAR(1) NOT NULL, + HFSBD_GRP_EXEC CHAR(1) NOT NULL, + HFSBD_OTH_READ CHAR(1) NOT NULL, + HFSBD_OTH_WRITE CHAR(1) NOT NULL, + HFSBD_OTH_EXEC CHAR(1) NOT NULL, + HFSBD_APF CHAR(1) NOT NULL, + HFSBD_PROGRAM CHAR(1) NOT NULL, + HFSBD_SHAREAS CHAR(1) NOT NULL, + HFSBD_AAUD_READ CHAR(8) NOT NULL, + HFSBD_AAUD_WRITE CHAR(8) NOT NULL, + HFSBD_AAUD_EXEC CHAR(8) NOT NULL, + HFSBD_UAUD_READ CHAR(8) NOT NULL, + HFSBD_UAUD_WRITE CHAR(8) NOT NULL, + HFSBD_UAUD_EXEC CHAR(8) NOT NULL, + HFSBD_AUDITID CHAR(32) NOT NULL, + HFSBD_FID CHAR(16) NOT NULL, + HFSBD_CREATE_DATE DATE NOT NULL, + HFSBD_CREATE_TIME TIME NOT NULL, + HFSBD_LASTREF_DATE DATE NOT NULL, + HFSBD_LASTREF_TIME TIME NOT NULL, + HFSBD_LASTCHG_DATE DATE NOT NULL, + HFSBD_LASTCHG_TIME TIME NOT NULL, + HFSBD_LASTDAT_DATE DATE NOT NULL, + HFSBD_LASTDAT_TIME TIME NOT NULL, + HFSBD_NUMBER_LINKS INTEGER NOT NULL, + HFSBD_SHARELIB CHAR(1) NOT NULL, + HFSBD_ACCESS_ACL CHAR(1) NOT NULL, + HFSBD_FILEMOD_ACL CHAR(1) NOT NULL, + HFSBD_DIRMOD_ACL CHAR(1) NOT NULL, + HFSBD_SECLABEL CHAR(8), + HFSBD_DSNAME CHAR(44), + HFSBD_LINK VARCHAR(1023) + ) + IN RACFDB2.IRRHFSU + ; + +------------------------------------------------------------------------ +-- HFS File Access record -- +------------------------------------------------------------------------ +-- ; +CREATE TABLE USER01.HFS_AC ( + HFACC_NAME VARCHAR(1023) NOT NULL, + HFACC_INODE INTEGER NOT NULL, + HFACC_TYPE CHAR(8) NOT NULL, + HFACC_UNIXID INTEGER NOT NULL, + HFACC_ID_NAME CHAR(8), + HFACC_READ CHAR(1) NOT NULL, + HFACC_WRITE CHAR(1) NOT NULL, + HFACC_EXEC CHAR(1) NOT NULL + ) + IN RACFDB2.IRRHFSU + ; + +------------------------------------------------------------------------ +-- HFS File Model Access record -- +------------------------------------------------------------------------ +-- ; +CREATE TABLE USER01.HFS_AF ( + HFACF_NAME VARCHAR(1023) NOT NULL, + HFACF_INODE INTEGER NOT NULL, + HFACF_TYPE CHAR(8) NOT NULL, + HFACF_UNIXID INTEGER NOT NULL, + HFACF_ID_NAME CHAR(8), + HFACF_READ CHAR(1) NOT NULL, + HFACF_WRITE CHAR(1) NOT NULL, + HFACF_EXEC CHAR(1) NOT NULL + ) + IN RACFDB2.IRRHFSU + ; + + +------------------------------------------------------------------------ +-- HFS Directory Model Access record -- +------------------------------------------------------------------------ +-- ; +CREATE TABLE USER01.HFS_AD ( + HFACD_NAME VARCHAR(1023) NOT NULL, + HFACD_INODE INTEGER NOT NULL, + HFACD_TYPE CHAR(8) NOT NULL, + HFACD_UNIXID INTEGER NOT NULL, + HFACD_ID_NAME CHAR(8), + HFACD_READ CHAR(1) NOT NULL, + HFACD_WRITE CHAR(1) NOT NULL, + HFACD_EXEC CHAR(1) NOT NULL + ) + IN RACFDB2.IRRHFSU + ; + + +------------------------------------------------------------------------ +-- HFS Mounted File System record -- +------------------------------------------------------------------------ +-- ; +CREATE TABLE USER01.HFS_FS ( + HFMFS_DSNAME CHAR(64) NOT NULL, + HFMFS_TYPE CHAR(8) NOT NULL, + HFMFS_MODE CHAR(10) NOT NULL, + HFMFS_SECURITY CHAR(10) NOT NULL, + HFMFS_SETUID CHAR(10) NOT NULL, + HFMFS_MUID INTEGER NOT NULL, + HFMFS_MUSER CHAR(8) NOT NULL, + HFMFS_MOUNTPOINT VARCHAR(1023) + ) + IN RACFDB2.IRRHFSU + ; + + + +------------------------------------------------------------------------ +-- Indices for the HFS Basic Data Record Type (0900) -- +------------------------------------------------------------------------ +-- ; +CREATE INDEX USER01.HFS_BD_IX1 + ON USER01.HFS_BD + (HFSBD_OWN_UID) + USING STOGROUP STOGRP01 + PRIQTY 100 + SECQTY 50 + CLUSTER + PCTFREE 0 + CLOSE NO + ; +CREATE INDEX USER01.HFS_BD_IX2 + ON USER01.HFS_BD + (HFSBD_OWN_UNAME) + USING STOGROUP STOGRP01 + PRIQTY 100 + SECQTY 50 + PCTFREE 0 + CLOSE NO + ; +CREATE INDEX USER01.HFS_BD_IX3 + ON USER01.HFS_BD + (HFSBD_OWN_GID) + USING STOGROUP STOGRP01 + PRIQTY 100 + SECQTY 50 + PCTFREE 0 + CLOSE NO + ; +CREATE INDEX USER01.HFS_BD_IX4 + ON USER01.HFS_BD + (HFSBD_OWN_GNAME) + USING STOGROUP STOGRP01 + PRIQTY 100 + SECQTY 50 + PCTFREE 0 + CLOSE NO + ; + +CREATE INDEX USER01.HFS_AC_IX1 + ON USER01.HFS_AC + (HFACC_UNIXID) + USING STOGROUP STOGRP01 + PRIQTY 100 + SECQTY 50 + PCTFREE 0 + CLOSE NO + ; + +CREATE INDEX USER01.HFS_AC_IX2 + ON USER01.HFS_AC + (HFACC_ID_NAME) + USING STOGROUP STOGRP01 + PRIQTY 100 + SECQTY 50 + PCTFREE 0 + CLOSE NO + ; +CREATE INDEX USER01.HFS_AF_IX1 + ON USER01.HFS_AF + (HFACF_UNIXID) + USING STOGROUP STOGRP01 + PRIQTY 100 + SECQTY 50 + PCTFREE 0 + CLOSE NO + ; + + +CREATE INDEX USER01.HFS_AF_IX2 + ON USER01.HFS_AF + (HFACF_ID_NAME) + USING STOGROUP STOGRP01 + PRIQTY 100 + SECQTY 50 + PCTFREE 0 + CLOSE NO + ; + + +CREATE INDEX USER01.HFS_AD_IX1 + ON USER01.HFS_AD + (HFACD_UNIXID) + USING STOGROUP STOGRP01 + PRIQTY 100 + SECQTY 50 + PCTFREE 0 + CLOSE NO + ; + + +CREATE INDEX USER01.HFS_AD_IX2 + ON USER01.HFS_AD + (HFACD_ID_NAME) + USING STOGROUP STOGRP01 + PRIQTY 100 + SECQTY 50 + PCTFREE 0 + CLOSE NO + ; + diff --git a/zOS-RACF/Downloads/HFSUnload/irrhfsu.o b/zOS-RACF/Downloads/HFSUnload/irrhfsu.o new file mode 100644 index 0000000000000000000000000000000000000000..efdbee30f47311ffcbbf124cc43fdd4d1a6987cc GIT binary patch literal 118784 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 F`~|H@;ROHy literal 0 HcmV?d00001 diff --git a/zOS-RACF/Downloads/HFSUnload/irrhfsu.txt b/zOS-RACF/Downloads/HFSUnload/irrhfsu.txt new file mode 100644 index 00000000..50121826 --- /dev/null +++ b/zOS-RACF/Downloads/HFSUnload/irrhfsu.txt @@ -0,0 +1,1090 @@ +/********************************************************************** + * Copyright 2022, IBM Corporation + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ +/**********************************************************************/ +/* hfsu : C program which unloads the security data of HFS files in */ +/* a manner compatible with that of the IRRDBU00 utility. */ +/* */ +/* Author: Bruce Wells brwells@us.ibm.com */ +/* */ +/* This program contains code made available by IBM Corporation on */ +/* an AS IS basis. Any one receiving these programs is considered to */ +/* be licensed under IBM copyrights to use the IBM-provided source */ +/* code in any way he or she deems fit, including copying it, */ +/* compiling it, modifying it, and redistributing it, with or without */ +/* modifications, except that it may be neither sold nor incorporated */ +/* within a product that is sold. No license under any IBM patents */ +/* or patent applications is to be implied from this copyright */ +/* license. */ +/* */ +/* The software is provided "as-is", and IBM disclaims all warranties,*/ +/* express or implied, including but not limited to implied warranties*/ +/* of merchantibility or fitness for a particular purpose. IBM shall */ +/* not be liable for any direct, indirect, incidental, special or */ +/* consequential damages arising out of this agreement or the use or */ +/* operation of the software. */ +/* */ +/* A user of this program should understand that IBM cannot provide */ +/* technical support for the program and will not be responsible for */ +/* any consequences of use of the program. */ +/* */ +/* NOTE: Some variant characters were replaced by their trigraph */ +/* representation in order to avoid problems using codepage */ +/* 1047 in various countries. */ +/* */ +/* The is replaced by */ +/* --- -------------- */ +/* left bracket ??( */ +/* right bracket ??) */ +/* vertical bar ??! */ +/* */ +/* Return values: */ +/* 0 - Successful completion */ +/* 1 - ftw() error */ +/* 2 - w_getmntent() error */ +/* 3 - Unable to obtain mount table storage */ +/* 5 - File I/O error */ +/* */ +/* Note: When using BPXBATCH, it multiplies the return value */ +/* by 256. */ +/* */ +/* Change Activity: */ +/* */ +/* $L0=HFSU HRF2608 000301 PDBRW1: Original Code @L0A*/ +/* $L1=HFSACL HRF7706 010615 PDSN1: ACL support @L1A*/ +/* $P1=Defect1 HRF7706 020529 PDBRW1: ACL fix @P1A*/ +/* $L2=MLS HRF7708 020605 PDBRW1: MultiLevel Security @L2A*/ +/* $L3=Filesys HRF7780 121017 PDBRW1: Show file system container @L3A*/ +/* $L4=Links HRF7780 121017 PDBRW1: Show contents of links @L4A*/ +/* $P2=Defect2 HRF7780 121105 PDBRW1: Propagate bad RC to exit @P2A*/ +/* $L5=FsAttrs HRF7780 121119 PDBRW1: Show file system attrs @L5A*/ +/* $P3=Defect3 HRF7780 130712 PDBRW1: Fix conditional compile @P3A*/ +/* $P4=Defect4 HRF7780 130730 PDBRW1: Change 0904 logic @P4A*/ +/* */ +/* Change Description: */ +/* */ +/* A000000-999999 Original Code */ +/* A - Updated by Shozab Naqvi to support the shared library @L1A*/ +/* extended attribute, and Access Control Lists (ACLs). @L1A*/ +/* C - Wrap conditional logic around include of acl.h @P1A*/ +/* - Put defaults into fields which can currently be null @P1A*/ +/* - Use trigraph representations of some variant characters @P1A*/ +/* to minimize codepage problems @P1A*/ +/* A - Unload the SECLABEL (security label) field @L2A*/ +/* A - Show data set containing the file system containing each @L3A*/ +/* object @L3A*/ +/* A - Show contents of symlinks and external links @L4A*/ +/* - Remove obsolete conditional compiler directives @L4A*/ +/* C - File error is not being propagated all the way out @P2A*/ +/* A - Add support to unload mount table information @L5A*/ +/* A - Allow code to be compiled on an R12 system @P3A*/ +/* A - Instead of first calculating how many file systems there @P4A*/ +/* are, and then retrieving them, structure the logic more @P4A*/ +/* like the documented samples by iteratively passing in a @P4A*/ +/* fixed size buffer. This seems to fix a reported problem @P4A*/ +/* where not all mounted file systems were being returned. @P4A*/ +/* */ +/**********************************************************************/ + +#define _XOPEN_SOURCE +#define _OPEN_SYS +#define _POSIX_SOURCE +#include +#include +#include +#include +#include +/*#include /*@L5A*/ +#define __UU +#include +#include +#include +#include + +int traverse (const char *file); +int unload (const char *file, const struct stat *st, int type); +char* mapit(const char idtype, int idvalue); + +int FS_Info(); /* Unload mount table information @L5A*/ + +int ACL_Info(const char *file,acl_type_t type_d,const struct stat *st, + int aclType); +static lacl_t Get_acl (const char *file,acl_type_t type_d,int *ret_num); + +FILE *stream; +int cleanup=0,entry_delete_counter=0; /* entry_delete_counter keeps + track of the deleted ACL + entries */ +int mountinfo=0; /* Don't include mount table info. + 1 = add mount info to output + 2 = output contains *only* + mount info @L5A*/ +/**********************************************************************/ +/* Declarations associated with the mount table entry @L3A*/ +/**********************************************************************/ +struct { /* Contains single mount entry */ + MNTE3H header; + W_MNTENT3 mount_table??(1??); +} work_area; /*@L3A*/ + +dev_t devnum=0; /* Device number of current file + system @L3A*/ +char fsname??(45??)="not specified"; /* Current file system data set + name @L3A*/ + +/**********************************************************************/ +/* Declarations associated with the uid/user and gid/group caches */ +/**********************************************************************/ +const int maxcache = 10; /* max no. of cache elements */ +struct cachelem { /* structure of a cache element */ + struct cachelem *prev; /* ptr to previous element */ + struct cachelem *next; /* ptr to next element */ + int id; /* uid or gid value */ + char name??(9??); /* associated user ID or group name + @P1C*/ +}; +struct cachelem *uidcache = 0; /* ptr to head of uid cache */ +struct cachelem *gidcache = 0; /* ptr to head of gid cache */ +int uidcount,gidcount; /* no. elements in uid,gid cache */ + +char *outvalue = NULL; +const char usertype = 'U'; +const char grouptype = 'G'; + + + +/**********************************************************************/ +/* main: */ +/* Read the input arguments and see if -c for cleanup is */ +/* specified. If so, set cleanup = 1. Cleanup removes ACL */ +/* references that can't be mapped to a user or group. */ +/* */ +/* Read the input arguments and see if -f filename was */ +/* specified. If so, see if it refers to an MVS data set. */ +/* If so, insert quotes into the path name. Open the output */ +/* file, if specified. Else use stdout. Then, invoke the */ +/* tree traversal routine for each specified file/directory. */ +/* */ +/* When done, free storage associated with the uid/gid cache */ +/* mechanisms. */ +/**********************************************************************/ +int +main(int argc, register char **argv) +{ + int ret,ret2; + int FS_rc = 0; /* rc from FS_Info routine @L5A*/ + int myargc = --argc; /* Subtract one for program name @L5A*/ + char outfile??(50??); /*@P1C*/ + struct cachelem *tempptr; + struct cachelem *nextptr; + struct stat* info; + FILE *fd; + + uidcount =0; + gidcount =0; + stream = stdout; + ++argv; + if (myargc > 0) { /*@L5C*/ + if (strcmp(*argv,"-c")==0) { + ++argv; + --myargc; /*@L5C*/ + cleanup=1; + } + if ((myargc > 0) && + (strcmp(*argv,"-m")==0)) { + ++argv; + --myargc; /*@L5C*/ + mountinfo=1; /* Add mount table info to output @L5A*/ + } + if ((myargc > 0) && + (strcmp(*argv,"-M")==0)) { + ++argv; + --myargc; /*@L5C*/ + mountinfo=2; /* Mount table is the only output @L5A*/ + } + if ((myargc > 0) && + (strcmp(*argv,"-f")==0)) + { + ++argv; + --myargc; /*@L5C*/ + if (strncmp("//",*argv,2)==0) + { + strcpy(outfile,"//"); + strcat(outfile,"'"); + strcat(outfile,&(argv??(0??)??(2??))); /*@P1C*/ + strcat(outfile,"'"); + } + else strcpy(outfile,*argv); + + stream = fopen(outfile,"a,lrecl=4096,recfm=vb"); + ++argv; + --myargc; /*@L5C*/ + } + } + + if (stream == 0) { + perror("IRR67700I fopen() error on output file\n"); + exit(2); + } + + /* Allocate storage for uid/gid name string */ + outvalue = (char *)malloc(9); + + /*******************************************************************/ + /* Initialize the mount table header. This single-entry table */ + /* will be used to obtain an individual mount entry when a */ + /* mount point is crossed. @L3A*/ + /*******************************************************************/ + memset(&work_area, 0x00, sizeof(work_area)); /*@L3A*/ + /* 'header' initialization to specify MNTE3 mapping format @L3A*/ + memcpy(work_area.header.mnt3H_cbid, MNTE3H_ID, 4); /*@L3A*/ + work_area.header.mnt3H_cblen = sizeof(struct mnte3); /*@L3A*/ + work_area.header.mnt3H_bodylen = sizeof(struct w_mntent3); /*@L3A*/ + + /*******************************************************************/ + /* If mount table information is desired, go create 0904 records */ + /* for all mounted file systems. @L5A*/ + /*******************************************************************/ + if (mountinfo > 0) { + FS_rc = FS_Info(); + if ((mountinfo == 2) && (FS_rc > 0)) { + ret2 = fclose(stream); + return FS_rc; + } + } + + /*******************************************************************/ + /* If we are not being asked for mount table information */ + /* exclusively, then go process input path names as usual. @L5A*/ + /*******************************************************************/ + if (mountinfo != 2) { /*@L5A*/ + for (; *argv != NULL; ++argv) + ret ??!= traverse(*argv); /*@P1C*/ + } /*@L5A*/ + + ret2 = fclose(stream); + + /* Release storage for uid/gid name string */ + free(outvalue); + + /* Release uid cache storage */ + for (tempptr = uidcache ; uidcount ; tempptr = nextptr) + { + nextptr = tempptr->next; + free(tempptr); + --uidcount; + } + + /* Release gid cache storage */ + for (tempptr = gidcache ; gidcount ; tempptr = nextptr) + { + nextptr = tempptr->next; + free(tempptr); + --gidcount; + } + + /* Print out a message indicating how many ACL entries were */ + /* deleted as a result of specifying the -c option. We will write */ + /* this message to the terminal, but if there is an error opening */ + /* the terminal (for example, if we are invoked by BPXBATCH), */ + /* then we will write the message to stderr instead. */ + if (cleanup==1) { + fd = fopen("/dev/tty","w"); + if (!fd) { + fprintf(stderr,"IRR67707I error opening /dev/tty\n"); + fprintf(stderr,"IRR67708I There were %d extended ACL entries" \ + " deleted as a result of specifying the" \ + " -c option.\n",entry_delete_counter); + } + else { + fprintf(fd,"IRR67708I There were %d extended ACL entries" \ + " deleted as a result of specifying the" \ + " -c option.\n",entry_delete_counter); + fclose(fd); + } + } + return (ret); +} + +/**********************************************************************/ +/* traverse: */ +/* Use the C library function ftw() to invoke the unload routine */ +/* for every object in the subtree specified by the input file. */ +/* The input can be a single file, in which case its contents */ +/* are unloaded. */ +/**********************************************************************/ +int +traverse(const char *file) +{ + int ftw_rc = 0; /*@P2A*/ + + ftw_rc = ftw(file, unload, 10); /*@P2A*/ + if (ftw_rc < 0) /*@P2C*/ + { + perror("IRR67701I ftw() error\n"); + return (1); + } + return (ftw_rc); /*@P2C*/ +} + +/**********************************************************************/ +/* unload: */ +/* Unload the security contents of the file into the output file. */ +/* The data is taken from the stat structure passed in by ftw. */ +/* In addition, UIDs are mapped into RACF user IDs and GIDs are */ +/* mapped into RACF group names. */ +/* */ +/* Checks for the existence of access, file default and directory */ +/* default ACLs. For each ACL that exists a call to ACL_Info is */ +/* made to unload that ACL. */ +/**********************************************************************/ +int +unload(const char *file, const struct stat *st, int type) +{ + char *tempval; + char *filetype; + struct tm *timeptr; + int i,ch; + char dest??(11??); /*@P1C*/ + int p_ret; + + switch (type) + { + case FTW_NS: + fprintf(stderr,"IRR67702I stat() could not be executed" \ + " on %s. Possible search error on parent" \ + " directory.\n",file); + break; + + case FTW_DNR: + fprintf(stderr,"IRR67703I Unable to read directory %s\n",file); + break; + + case FTW_D: + case FTW_F: + case FTW_SL: + /*********************************************************/ + /* If the file system device number is different from */ + /* the previous object's, then we have crossed a */ + /* mount point into a different file system. */ + /* Obtain its information via w_getmntent() so we can */ + /* output the correct file system data set name. The */ + /* current devno and fsname are saved globally so we */ + /* can reuse them when nothing has changed. @L5M*/ + /*********************************************************/ + if (st->st_dev != devnum) { /* If devno has changed */ + /* Save new value as current value. */ + devnum = st->st_dev; /*@L5M*/ + /* Set devno in mount table header to request only */ + /* this entry from w_getmntent(). */ + work_area.header.mh3_devno = devnum; /*@L5M*/ + if (w_getmntent((char *) &work_area, + sizeof(work_area)) == -1) { + perror("IRR67709I w_getmntent() error\n"); /*@L5M*/ + devnum = 0; /* Reset devnum so we try again @L5M*/ + } + else { + memcpy(fsname, + work_area.mount_table??(0??).mnt3_fsname, + sizeof(fsname)); /* Save new fsname @L5M*/ + } + } + + /* HFSBD_RECORD_TYPE - Type of this "IRRDBU00" record */ + /* */ + /* For each file, we will check the fprintf return code */ + /* once to see if we're still ok. If not, exit. For */ + /* example, if the output file runs out of space, this */ + /* program would chug merrily on unless we detect this */ + /* and stop. Theoretically, any of the following fprintf*/ + /* statements could fail, and with buffering, it is hard */ + /* to predict, so we will just check once for every file.*/ + p_ret = fprintf(stream,"0900"); + if (p_ret < 0) + { + perror("IRR67704I fprintf() error while writing to" \ + " output file\n"); + return (5); /* Arbitary number... */ + } + /* HFSBD_NAME - path name of file being unloaded */ + fprintf(stream," %-1023.1023s",file); + /* HFSBD_INODE - inode (file serial number) */ + fprintf(stream," %010u",st->st_ino); + /* HFSBD_FILE_TYPE - type of file */ + if (S_ISREG(st->st_mode)) + filetype="FILE "; + else if (S_ISDIR(st->st_mode)) + filetype="DIR "; + else if (S_ISSOCK(st->st_mode)) + filetype="SOCKET "; + else if (S_ISEXTL(st->st_mode,st->st_genvalue)) + filetype="EXTLINK "; + else if (S_ISLNK(st->st_mode)) + filetype="SYMLINK "; + else if (S_ISFIFO(st->st_mode)) + filetype="FIFO "; + else if (S_ISBLK(st->st_mode)) + filetype="BLOCK "; + else if (S_ISCHR(st->st_mode)) + filetype="CHAR "; + else + filetype="????????"; /*@P1C*/ + fprintf(stream," %s",filetype); + + + /* HFSBD_FILE_OWN_UID - owning UID */ + fprintf(stream," %010u",st->st_uid); + /* HFSBD_FILE_OWN_UNAM - corresponding RACF user ID */ + fprintf(stream," %-8s",mapit(usertype,st->st_uid)); + /* HFSBD_FILE_OWN_GID - owning GID */ + fprintf(stream," %010u",st->st_gid); + /* HFSBD_FILE_OWN_GNAM - corresponding RACF group name */ + fprintf(stream," %-8s",mapit(grouptype,st->st_gid)); + + /* HFSBD_S_ISUID - set-uid bit */ + (st->st_mode & S_ISUID)? + fprintf(stream," YES "): fprintf(stream," NO "); + /* HFSBD_S_ISGID - set-gid bit */ + (st->st_mode & S_ISGID)? + fprintf(stream," YES "): fprintf(stream," NO "); + /* HFSBD_S_ISVTX - sticky bit */ + (st->st_mode & S_ISVTX)? + fprintf(stream," YES "): fprintf(stream," NO "); + /* HFSBD_OWN_READ - owner read permission bit */ + (st->st_mode & S_IRUSR)? + fprintf(stream," YES "): fprintf(stream," NO "); + /* HFSBD_OWN_WRITE - owner write permission bit */ + (st->st_mode & S_IWUSR)? + fprintf(stream," YES "): fprintf(stream," NO "); + /* HFSBD_OWN_EXEC - owner search/execute permission bit */ + (st->st_mode & S_IXUSR)? + fprintf(stream," YES "): fprintf(stream," NO "); + /* HFSBD_GRP_READ - group read permission bit */ + (st->st_mode & S_IRGRP)? + fprintf(stream," YES "): fprintf(stream," NO "); + /* HFSBD_GRP_WRITE - group write permission bi t */ + (st->st_mode & S_IWGRP)? + fprintf(stream," YES "): fprintf(stream," NO "); + /* HFSBD_GRP_EXEC - group search/execute permission bit */ + (st->st_mode & S_IXGRP)? + fprintf(stream," YES "): fprintf(stream," NO "); + /* HFSBD_OTH_READ - other read permission bit */ + (st->st_mode & S_IROTH)? + fprintf(stream," YES "): fprintf(stream," NO "); + /* HFSBD_OTH_WRITE - other write permission bit */ + (st->st_mode & S_IWOTH)? + fprintf(stream," YES "): fprintf(stream," NO "); + /* HFSBD_OTH_EXEC - other search/execute permission bit */ + (st->st_mode & S_IXOTH)? + fprintf(stream," YES "): fprintf(stream," NO "); + + /* HFSBD_APF - APF authorization setting */ + (S_ISAPF_AUTH(st->st_mode,st->st_genvalue))? + fprintf(stream," YES "): fprintf(stream," NO "); + /* HFSBD_PROGRAM - program control setting */ + (S_ISPROG_CTL(st->st_mode,st->st_genvalue))? + fprintf(stream," YES "): fprintf(stream," NO "); + /* HFSBD_SHAREAS - runs in shared address space setting. */ + /* This is a "negative" flag so the tests are reversed */ + (S_ISNO_SHAREAS(st->st_mode,st->st_genvalue))? + fprintf(stream," NO "): fprintf(stream," YES "); + + /* HFSBD_AAUD_READ - auditor read setting */ + if ((st->st_auditoraudit & (AUDTREADFAIL+AUDTREADSUCC)) + == (AUDTREADFAIL+AUDTREADSUCC) ) + tempval = "ALL "; + else if (st->st_auditoraudit & AUDTREADFAIL) + tempval = "FAIL "; + else if (st->st_auditoraudit & AUDTREADSUCC) + tempval = "SUCCESS "; + else + tempval = "NONE "; + fprintf(stream," %s",tempval); + /* HFSBD_AAUD_WRITE - auditor write setting */ + if ((st->st_auditoraudit & (AUDTWRITEFAIL+AUDTWRITESUCC)) + == (AUDTWRITEFAIL+AUDTWRITESUCC) ) + tempval = "ALL "; + else if (st->st_auditoraudit & AUDTWRITEFAIL) + tempval = "FAIL "; + else if (st->st_auditoraudit & AUDTWRITESUCC) + tempval = "SUCCESS "; + else + tempval = "NONE "; + fprintf(stream," %s",tempval); + /* HFSBD_AAUD_EXEC - auditor execute setting */ + if ((st->st_auditoraudit & (AUDTEXECFAIL+AUDTEXECSUCC)) + == (AUDTEXECFAIL+AUDTEXECSUCC) ) + tempval = "ALL "; + else if (st->st_auditoraudit & AUDTEXECFAIL) + tempval = "FAIL "; + else if (st->st_auditoraudit & AUDTEXECSUCC) + tempval = "SUCCESS "; + else + tempval = "NONE "; + fprintf(stream," %s",tempval); + + /* HFSBD_UAUD_READ - owner read setting */ + if ((st->st_useraudit & (AUDTREADFAIL+AUDTREADSUCC)) + == (AUDTREADFAIL+AUDTREADSUCC) ) + tempval = "ALL "; + else if (st->st_useraudit & AUDTREADFAIL) + tempval = "FAIL "; + else if (st->st_useraudit & AUDTREADSUCC) + tempval = "SUCCESS "; + else + tempval = "NONE "; + fprintf(stream," %s",tempval); + /* HFSBD_UAUD_WRITE - owner write setting */ + if ((st->st_useraudit & (AUDTWRITEFAIL+AUDTWRITESUCC)) + == (AUDTWRITEFAIL+AUDTWRITESUCC) ) + tempval = "ALL "; + else if (st->st_useraudit & AUDTWRITEFAIL) + tempval = "FAIL "; + else if (st->st_useraudit & AUDTWRITESUCC) + tempval = "SUCCESS "; + else + tempval = "NONE "; + fprintf(stream," %s",tempval); + /* HFSBD_UAUD_EXEC - owner execute setting */ + if ((st->st_useraudit & (AUDTEXECFAIL+AUDTEXECSUCC)) + == (AUDTEXECFAIL+AUDTEXECSUCC) ) + tempval = "ALL "; + else if (st->st_useraudit & AUDTEXECFAIL) + tempval = "FAIL "; + else if (st->st_useraudit & AUDTEXECSUCC) + tempval = "SUCCESS "; + else + tempval = "NONE "; + fprintf(stream," %s",tempval); + + /* HFSBD_AUDIT_ID - RACF audit id for this file */ + fprintf(stream," "); + for (i=0;ist_auditid);++i) + fprintf(stream,"%02X",(int)st->st_auditid??(i??));/* + @P1C*/ + + /* HFSBD_FID - file identifier */ + fprintf(stream," "); + for (i=0;ist_fid);++i) + fprintf(stream,"%02X",(int)st->st_fid??(i??)); /*@P1C*/ + + /* HFSBD_CREATE_DATE - file create date */ + timeptr = localtime(&st->st_createtime); + ch = strftime(dest,sizeof(dest),"%Y-%m-%d",timeptr); + fprintf(stream," %s",dest); + /* HFSBD_CREATE_TIME - file create time */ + ch = strftime(dest,sizeof(dest),"%H:%M:%S",timeptr); + fprintf(stream," %s",dest); + /* HFSBD_LASTREF_DATE - file last access date */ + timeptr = localtime(&st->st_atime); + ch = strftime(dest,sizeof(dest),"%Y-%m-%d",timeptr); + fprintf(stream," %s",dest); + /* HFSBD_LASTREF_TIME - file last access date */ + ch = strftime(dest,sizeof(dest),"%H:%M:%S",timeptr); + fprintf(stream," %s",dest); + /* HFSBD_LASTCHG_DATE - file last status change date */ + timeptr = localtime(&st->st_ctime); + ch = strftime(dest,sizeof(dest),"%Y-%m-%d",timeptr); + fprintf(stream," %s",dest); + /* HFSBD_LASTCHG_TIME - file last status change date */ + ch = strftime(dest,sizeof(dest),"%H:%M:%S",timeptr); + fprintf(stream," %s",dest); + /* HFSBD_LASTDAT_DATE - file last data modification date */ + timeptr = localtime(&st->st_mtime); + ch = strftime(dest,sizeof(dest),"%Y-%m-%d",timeptr); + fprintf(stream," %s",dest); + /* HFSBD_LASTDAT_TIME - file last data modification date */ + ch = strftime(dest,sizeof(dest),"%H:%M:%S",timeptr); + fprintf(stream," %s",dest); + + /* HFSBD_NUMBER_LINKS - number of links to file */ + fprintf(stream," %010u",st->st_nlink); + + /* HFSBD_SHARELIB */ + (S_ISSHARE_LIB(st->st_mode, st->st_genvalue))? + fprintf(stream, " YES "): fprintf(stream, " NO "); + + /* Check for Access ACL */ + if (st->st_fspflag2&S_ACCESSACL) { + fprintf(stream, " YES "); + } + else fprintf(stream, " NO "); + + /* Check for file default ACL */ + if (st->st_fspflag2&S_FMODELACL){ + fprintf(stream, " YES "); + } + else fprintf(stream, " NO "); + + /* Check for directory default ACL */ + if (st->st_fspflag2&S_DMODELACL){ + fprintf(stream, " YES "); + } + else fprintf(stream, " NO "); + + /* HFSBD_SECLABEL @L2A*/ + if (st->st_seclabel) /* If not binary 0's @L2A*/ + fprintf(stream," %-8s",st->st_seclabel); /*@L2A*/ + else /*@L2A*/ + fprintf(stream, " "); /*@L2A*/ + + /*********************************************************/ + /* Output the file system data set name. If we had an */ + /* error obtaining the mount entry above, the devnum */ + /* will be set to 0, and we simply output blanks. @L5C*/ + /*********************************************************/ + if (devnum == 0) { /* If error obtaining mntent */ + fprintf(stream, " %-44.44s", " "); /* Blanks @L3A*/ + } + /* Write out the current file system data set name */ + else + fprintf(stream, " %-44.44s", fsname); /*@L3A*/ + + + /*********************************************************/ + /* If the file is a symlink, report its contents. This */ + /* works for external links as well. @L4A*/ + /*********************************************************/ + if (S_ISLNK(st->st_mode)) { + char symbuff??(1024??); /* Max=1023, + ending null @L4A*/ + int linksize = readlink(file, + symbuff, + sizeof(symbuff)); /*@L4A*/ + if (linksize < 0) { + perror("IRR67710I readlink() error\n"); /*@L4A*/ + fprintf(stream," %-1023.1023s"," "); /* Blanks @L4A*/ + } + else { + symbuff??(linksize??) = 0; /* Add null at end @L4A*/ + fprintf(stream," %-1023.1023s", symbuff); /*@L4A*/ + } + } + else + fprintf(stream," %-1023.1023s"," "); /* Blanks @L4A*/ + + + /*********************************************************/ + /* Done with basic data record!!! */ + /* Add a newline character at end of record */ + /*********************************************************/ + fprintf(stream,"\n"); + + + /*********************************************************/ + /* Now unload ACL information. */ + /*********************************************************/ + + /* Check for Access ACL */ + if (st->st_fspflag2&S_ACCESSACL) + ACL_Info(file, ACL_ACCESS, st, 901); + + /* Check for file default ACL */ + if (st->st_fspflag2&S_FMODELACL) + ACL_Info(file, ACL_FILDEF, st, 902); + + /* Check for directory default ACL */ + if (st->st_fspflag2&S_DMODELACL) + ACL_Info(file, ACL_DIRDEF, st, 903); + + break; + + + default: + break; + } + return (0); +} + +/**********************************************************************/ +/* mapit: */ +/* Map the input uid to a RACF user ID, or an input gid to a RACF */ +/* group name. A local cache is maintained. It contains the */ +/* mappings for the 10 most recently encountered uids and gids. */ +/* When a match is found, it is moved to the front of the linked */ +/* list. When a new entry is needed, it is placed at the head of */ +/* the list, and if maxcache entries already exist, the last one */ +/* is removed. Because files within a directory generally have the */ +/* same owner, this should drastically reduce the number of calls */ +/* to the user/group database, and hence, pathlength and RACF I/O. */ +/**********************************************************************/ +char* +mapit(const char idtype, int idvalue) +{ + int match = 0; + int toobig = 0; + struct passwd *p; + struct group *grp; + struct cachelem **cacheptr; /* ptr to head of relevant cache */ + struct cachelem *tempptr; /* ptr to current cache element */ + + /* Get cache type appropriate to input type (user or group) */ + if (idtype == usertype) + cacheptr = &uidcache; + else + cacheptr = &gidcache; + + /* Scan the cache for a match on the input uid/gid */ + for (tempptr = *cacheptr ; tempptr ; tempptr = tempptr->next) { + + if (tempptr->id == idvalue) + { + strcpy(outvalue,tempptr->name); + /* If the cache element is not already at the head of the list, + move it there now. */ + if (tempptr != *cacheptr) + { + /* Dequeue the matched element */ + (tempptr->prev)->next = tempptr->next; + (tempptr->next)->prev = tempptr->prev; + /* Insert matched element at head of queue */ + tempptr->prev = (*cacheptr)->prev; + tempptr->next = *cacheptr; + ((*cacheptr)->prev)->next = tempptr; + (*cacheptr)->prev = tempptr; + *cacheptr = tempptr; + } + match = 1; + break; + } + + /* Bail out if we've come full circle in the linked list */ + if (tempptr->next == *cacheptr) + break; + } + + /* If no match was found, call to map the id to a name. Create a */ + /* new cache element and insert it at the front of the list. */ + if (!match) + { + /* Map the id to a name */ + if (idtype == usertype) + if ((p = getpwuid(idvalue)) == NULL) + strcpy(outvalue," "); + else + strcpy(outvalue,p->pw_name); + else + if ((grp = getgrgid(idvalue)) == NULL) + strcpy(outvalue," "); + else + strcpy(outvalue,grp->gr_name); + + /* Create a new cache element */ + tempptr = (struct cachelem*)malloc(sizeof(struct cachelem)); + tempptr->id = idvalue; + strcpy(tempptr->name,outvalue); + + /* If the cache exists, insert new element as 1st element */ + if (*cacheptr) + { + /* Set new element's next and prev ptrs */ + tempptr->prev = (*cacheptr)->prev; + tempptr->next = *cacheptr; + /* Set last element's prev ptr to new element */ + ((*cacheptr)->prev)->next = tempptr; + /* Set original first's prev ptr to new element */ + (*cacheptr)->prev = tempptr; + /* Set cache head to new element */ + *cacheptr = tempptr; + /* increment the cache counter */ + if (idtype == usertype) + if (uidcount < maxcache) + ++uidcount; + else + toobig = 1; + else + if (gidcount < maxcache) + ++gidcount; + else + toobig = 1; + + /* If maxcache elements has been exceeded, dequeue and free the + last element. */ + if (toobig) + { + tempptr = (*cacheptr)->prev; + (tempptr->prev)->next = tempptr->next; + (tempptr->next)->prev = tempptr->prev; + free(tempptr); + } + } + /* Nothing in cache yet. Initialize cache ptr to this new element, + and set the element's next and prev ptr to itself. */ + else + { + *cacheptr = tempptr; + tempptr->next = tempptr; + tempptr->prev = tempptr; + if (idtype == usertype) + uidcount = 1; + else + gidcount = 1; + } + } + + return(outvalue); + } + +/**********************************************************************/ +/* FS_Info: */ +/* Create a type 0904 record for every mounted file system. */ +/* We use w_getmntent to iteratively obtain a chunk of mount */ +/* ta ble entries. We create a Type 0904 record for each */ +/* returned entry. @L5A*/ +/**********************************************************************/ +int FS_Info(){ + + int p2_ret; + char *mountmode; + + int entries; /* Number of mount entries returned */ + int tot_entries = 0; /* Total number of mounted file systems @P4A*/ + int entry; /* Index into mount table */ + struct { + MNTE3H header; + W_MNTENT3 mount_table??(100??); + } work_area; /* Buffer to contain 100 entries @P4C*/ + W_MNTENT3 *tabentry; /* Pointer to a mount table entry */ + + + /* Clear the buffer storage @P4C*/ + memset(&work_area, 0x00, sizeof(work_area)); + /* 'header' initialization to specify MNTE3 mapping format @P4C*/ + memcpy(work_area.header.mnt3H_cbid, MNTE3H_ID, 4); + work_area.header.mnt3H_cblen = sizeof(struct mnte3); + work_area.header.mnt3H_bodylen = sizeof(struct w_mntent3); + + /*******************************************************************/ + /* Iteratively obtain 100 entries at a time. @P4A*/ + /*******************************************************************/ + do { /* While there are still entries to process @P4A*/ + if ((entries = w_getmntent((char *) &work_area, + sizeof(work_area))) == -1) + perror("w_getmntent() error"); + + /*****************************************************************/ + /* Loop for the number of returned entries, creating a type */ + /* 904 record for each entry. */ + /*****************************************************************/ + else { /* No error */ + /*fprintf(stdout,"There are %d entries returned\n", entries);*/ + tot_entries+=entries; /* add number returned to total @P4A*/ + + for (entry=0; entrymnt3_fsname); + + /* HFMFS_TYPE - File system type */ + fprintf(stream, " %-8.8s", tabentry->mnt3_fstname); + + /* HFMFS_INODE - the root inode - Doesn't seem very useful? */ + /*fprintf(stream, " %010u", tabentry->mnt3_rootino);*/ + + /* HFMFS_MODE - mount mode: READONLY or READWRITE */ + if (tabentry->mnt3_mode.mntentfsmoderdonly) + mountmode="READONLY "; + else + mountmode="READWRITE "; + fprintf(stream," %s",mountmode); + + /* HFMFS_SECURITY- mount mode: SECURITY or NOSECURITY */ + if (tabentry->mnt3_mode.mntentfsmodenosec) + mountmode="NOSECURITY"; + else + mountmode="SECURITY "; + fprintf(stream," %s",mountmode); + + /* HFMFS_SETUID - mount mode: SETUID or NOSETUID */ + if (tabentry->mnt3_mode.mntentfsmodenosuid) + mountmode="NOSETUID "; + else + mountmode="SETUID "; + fprintf(stream," %s",mountmode); + + /* HFMFS_MUID - mounting UID */ + #if __EDC_TARGET > __EDC_LE410C /* Must be >= z/OS R13 @P3C*/ + fprintf(stream," %010u", tabentry->mnt3_fsusrmntUID); + + /* HFMFS_MUSER - corresponding RACF user ID */ + fprintf(stream," %-8s", mapit(usertype, + tabentry->mnt3_fsusrmntUID)); + #else /* Lower than R13, just print blanks */ + fprintf(stream," "); + #endif /* __EDC_LE410C */ /*@P3C*/ + + /* HFMFS_MOUNTPOINT - path name of mount point */ + fprintf(stream," %-1023.1023s", tabentry->mnt3_mountpoint); + + fprintf(stream, "\n"); + + } /* For each returned entry */ + } /* No w_getmntent() error */ + } while (entries > 0); /* Iterate if any entries were returned @P4A*/ + +/*fprintf(stdout,"There were %d total entries returned\n", + tot_entries); +*/ + return (0); +} /*@L5A*/ + +/**********************************************************************/ +/* ACL_Info: */ +/* Extracting information from a Access ACL */ +/* Process is similar to the unload function. The */ +/* sys/acl.h and sys/stat.h libraries are utilized */ +/* in this function. */ +/* */ +/* Also if -c was specified the function will remove */ +/* ACL references that do not map to a user or group. */ +/**********************************************************************/ +int ACL_Info(const char *file,acl_type_t type_d,const struct stat *st, + int aclType){ + lacl_t acl_d, acl_delete; + acl_entry_t entry_d; + int ret_num; + struct passwd *p; + struct group *grp; + + acl_delete = acl_init(1024); + + if ((acl_d=Get_acl(file, type_d, &ret_num)) == NULL) { + return(1); + } + while (acl_get_entry(acl_d, &entry_d)==1) { + + /* TYPE_RECORD_TYPE */ + fprintf(stream, "0%d", aclType); + + + /* TYPE_NAME - path name of file being unloaded */ + fprintf(stream," %-1023.1023s",file); + + /* TYPE_INODE */ + fprintf(stream, " %010u", st->st_ino); + + /* TYPE_TYPE */ + if (entry_d->acle_type == ACL_USER) + fprintf(stream, " USER "); + else if (entry_d->acle_type == ACL_GROUP) + fprintf(stream, " GROUP "); + + + /* TYPE_ID */ + fprintf(stream, " %010u", entry_d->acle_id); + + /* TYPE_ID_NAME */ + if (entry_d->acle_type == ACL_USER) { + fprintf(stream, " %-8s", mapit(usertype, entry_d->acle_id)); + } + + else if (entry_d->acle_type == ACL_GROUP) { + fprintf(stream, " %-8s", mapit(grouptype, entry_d->acle_id)); + } + + + /* TYPE_READ */ + if (entry_d->acle_value.aclp_read==1) + fprintf (stream, " YES "); + else fprintf (stream, " NO "); + + /* TYPE_WRITE */ + if (entry_d->acle_value.aclp_write==1) + fprintf (stream, " YES "); + else fprintf (stream, " NO "); + + /* TYPE_EXECUTE */ + if (entry_d->acle_value.aclp_execute==1) + fprintf (stream, " YES "); + else fprintf (stream, " NO "); + + /* Inserting ACL entries into buffer that need to be deleted */ + if (entry_d->acle_type == ACL_USER) { + if ((p = getpwuid(entry_d->acle_id))==NULL && cleanup==1){ + entry_delete_counter ++; + acl_create_entry(&acl_delete, entry_d, ACL_VER_1); + } + } + + else if (entry_d->acle_type == ACL_GROUP) { + if ((grp = getgrgid(entry_d->acle_id))==NULL && cleanup==1){ + entry_delete_counter++; + acl_create_entry(&acl_delete, entry_d, ACL_VER_1); + } + } + + fprintf(stream, "\n"); + + } + /* Deleting ACL entries */ + acl_set_file(file, type_d, acl_delete, ACL_DELETE, &entry_d); + acl_free(acl_delete); + + return (0); + } + +/**********************************************************************/ +/* Get_acl: */ +/* Function contructs the ACL buffer from the file provided. */ +/* the ACL is returned, if there was no entry NULL is returned */ +/**********************************************************************/ +static lacl_t Get_acl (char const *file,acl_type_t type_d,int *ret_num){ + static lacl_t acl_d = NULL; + char *string; + int rc; + int num, num2; + + *ret_num = 0; + + /* call acl_init() to get ACL buffer */ + if (acl_d == NULL) + if ((acl_d = acl_init(1024)) == NULL) + return (NULL); + + /*Check buffer */ + rc = acl_get_file(file, type_d, acl_d, &num); + + /*Checking for error from acl_get_file */ + if (rc < 0 && type_d==ACL_ACCESS) { + perror("IRR67705I acl_get_file() error\n"); + fprintf(stderr,"IRR67706I Error retrieving the ACCESS ACL" \ + " for the file %s \n", file); + return(NULL); + } + if (rc < 0 && type_d==ACL_FILDEF) { + perror("IRR67705I acl_get_file() error\n"); + fprintf(stderr,"IRR67706I Error retrieving the FILE DEFAULT ACL" \ + " for the file %s \n", file); + return(NULL); + } + if (rc < 0 && type_d==ACL_DIRDEF) { + perror("IRR67705I acl_get_file() error\n"); + fprintf(stderr,"IRR67706I Error retrieving the DIRECTORY" \ + " DEFAULT ACL for the file %s \n", file); + return(NULL); + } + /* if acl_get_file() was successful */ + return (acl_d); + + }