43 lines
1.1 KiB
Perl
43 lines
1.1 KiB
Perl
#! /usr/bin/perl
|
|
use strict;
|
|
use warnings;
|
|
|
|
if (scalar @ARGV < 1) {
|
|
die "Usage: $0 <lowest_gid>";
|
|
}
|
|
|
|
my $LOWEST_PVV_GID = int($ARGV[0]);
|
|
|
|
my @lines = ();
|
|
|
|
# Read old group file
|
|
open(IN, "/etc/group") || die "Unable to open /etc/group: $!";
|
|
while(<IN>) {
|
|
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(<PVV>) {
|
|
++$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: $!";
|