sysck files for LPP's

John F Haugh II jfh at greenber.austin.ibm.com
Tue Feb 19 09:41:18 AEST 1991


In article <1991Feb15.141628.24143 at odi.com> benson at odi.com (Benson I. Margulies) writes:
>A properly formatted lpp should include an inventory file which is a
>complete set of sysck stanzas for all the files it installs.
>
>IBM dosen't seem to supply any automated means of generating this,
>except for the awful crock I'm about to describe.

The "inventory" file that IBM uses when v3 is built is manually
mantained in stanza file format.  There is/was no need to have a
tool to convert XYZ format to "inventory" format.

However, creating stanza files is pretty trivial - all you need is
a command that spews out the appropriate chunks of the inode info
for the files you are interested in.

For example -
--
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mode.h>
#include <stdio.h>
#include <pwd.h>
#include <grp.h>

main ()
{
	char	buf[BUFSIZ];
	struct	stat	sb;
	struct	passwd	*pwd;
	struct	group	*grp;

	while (gets (buf)) {
		if (stat (buf, &sb)) {
			perror (buf);
			continue;
		}
		printf ("%s:\n", buf);
		if (pwd = getpwuid (sb.st_uid))
			printf ("\towner = %s\n", pwd->pw_name);
		else
			printf ("\towner = %d\n", sb.st_uid);

		if (grp = getgrgid (sb.st_gid))
			printf ("\tgroup = %s\n", grp->gr_name);
		else
			printf ("\tgroup = %d\n", sb.st_gid);

		printf ("\tmode = ");
		if (sb.st_mode & 04000)
			printf ("SUID,");
		if (sb.st_mode & 02000)
			printf ("SGID,");
		if (sb.st_mode & 01000)
			printf ("SVTX,");
		printf ("%0.3o\n", sb.st_mode & 0777);

		if (S_ISREG (sb.st_mode)) {
			printf ("\ttype = FILE\n");
			printf ("\tsize = %d\n", sb.st_size);
		} else if (S_ISDIR (sb.st_mode)) {
			printf ("\ttype = DIRECTORY\n");
		} else if (S_ISMPX (sb.st_mode)) {
			printf ("\ttype = MPX_DEV\n");
		} else if (S_ISCHR (sb.st_mode)) {
			printf ("\ttype = CHAR_DEV\n");
		} else if (S_ISBLK (sb.st_mode)) {
			printf ("\ttype = BLK_DEV\n");
		} else if (S_ISFIFO (sb.st_mode)) {
			printf ("\ttype = FIFO\n");
		}
		putchar ('\n');
	}
}
--

>sysck -a seems to be the right thing, but there is no documented
>control argument that writes the new stanza's into a file other than
>/etc/security/sysck.cfg.

That's correct.

>Surely IBM has some tool with which it generates the gobs of sysck
>stanzas on each and every installation tape.

There is - but it input's stanzas in sysck format, and outputs
stanzas in sysck format.

>Surely there's a better way, or there should be.

Try hacking on the above program.  It should be suitable for your
purposes, provided you aren't getting too exotic.  You may want to
add a line for the file class, if you wish to use more than just the
default class the files will be installed with.

ObDisclaimer - I speak for myself only.
-- 
John F. Haugh II      |      I've Been Moved     |    MaBellNet: (512) 838-4340
SneakerNet: 809/1D064 |          AGAIN !         |      VNET: LCCB386 at AUSVMQ
BangNet: ..!cs.utexas.edu!ibmchs!auschs!snowball.austin.ibm.com!jfh (e-i-e-i-o)



More information about the Comp.unix.aix mailing list