Group Permission

G.D.Thurman plug-discuss@lists.plug.phoenix.az.us
Fri, 12 Jul 2002 13:38:02 -0700 (MST)


On Thu, 11 Jul 2002, Carl Parrish wrote:

> How do you add a group into a group in the /etc/group file??
>
The following AWK script passed minimal unit testing.

# filename:  groupmerge.awk
#
# To merge group b into group a...
# awk -f groupmerge.awk /etc/group a b
#
# caveats:  magic #s used; no error handling

BEGIN {
   if (4 != ARGC) {
      printf("Usage:  awk -f groupmerge.awk group_file to_group from_group\n");
      printf("Example:  awk -f groupmerge.awk /etc/group techies cvs");
      exit 1;
   }
   to=ARGV[2];
   from=ARGV[3];
   ARGC=2;
   FS=":";
}
$1 == to {
   d=sprintf("%s:%s:%s:", $1, $2, $3);
   s=$4;
   next;
}
{ printf("%s:%s:%s:%s\n", $1, $2, $3, $4); }
$1 == from {
   g=$4;
}
END {
   printf("%s%s", d, s);
   split(g, groups, ",");
   for (i in groups)
      if (!match(s, groups[i]))     # avoid dups
         printf(",%s", groups[i]);
   printf("\n");
}