File: grouper.pl

package info (click to toggle)
libunix-configfile-perl 0.6-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 200 kB
  • sloc: perl: 880; makefile: 9
file content (36 lines) | stat: -rwxr-xr-x 1,045 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/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";