#! /usr/bin/perl use strict; use warnings; if (scalar @ARGV < 1) { die "Usage: $0 "; } my $LOWEST_PVV_GID = int($ARGV[0]); my @lines = (); # Read old group file open(IN, "/etc/group") || die "Unable to open /etc/group: $!"; while() { my @parts = split(":"); if ($parts[2] < $LOWEST_PVV_GID || $parts[0] eq "nogroup") { push @lines, $_; } } close IN || die "Unable to close /etc/group: $!"; # Read pvv group file my $groupcount = 0; open(PVV, "/etc/group.pvv") || die "Unable to open /etc/group.pvv: $!"; while() { ++$groupcount; push @lines, $_; } close PVV || die "Unable to close /etc/group.pvv: $!"; if ($groupcount < 200) { die "/etc/group.pvv has less than 200 groups, something went wrong"; } open(OUT, ">/etc/group.tmp") || die "Unable to open /etc/group.tmp for writing: $!"; foreach (@lines) { print OUT $_ || die "Can't write to /etc/group.tmp: $!"; } close OUT || die "Unable to close /etc/group.tmp: $!"; rename "/etc/group.tmp", "/etc/group" || die "Unable to move /etc/group.tmp to /etc/group: $!";