#!/usr/local/bin/perl -w # grouper.pl - Manipulate the group file # $Id: grouper.pl,v 1.1 1999/07/01 14:25:54 ssnodgra Exp $ use Unix::GroupFile; unless (@ARGV > 1) { print "Instructions:\n"; print "$0 -a group user ... Add users to group\n"; print "$0 -c group user ... Create new group\n"; print "$0 -r group user ... Remove users from group\n"; exit; } $grp = new Unix::GroupFile("/etc/group") or die "Can't open group file"; $option = shift; $group = shift; die "Bad group name: $group\n" unless $group =~ /^[a-z][a-z\d]{1,7}$/; if ($option eq "-a") { # Add users to group $grp->add_user($group, @ARGV) or die "Add failed\n"; } elsif ($option eq "-c") { die "Group $group already exists\n" if defined $grp->gid($group); $grp->group($group, "*", $grp->maxgid + 1, @ARGV); } elsif ($option eq "-r") { $grp->remove_user($group, @ARGV) or die "Remove failed\n"; } else { die "Bogus option $option\n"; } print "Rewriting group file...\n"; $grp->commit(backup => '~'); print "Done!\n";