Subversion Repositories DevTools

Rev

Rev 4011 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#! /usr/bin/perl
########################################################################
# Copyright (C) 1998-2013 Vix Technology, All rights reserved
#
# Module name   : faclscan.pl
# Module type   : Makefile system
# Compiler(s)   : Perl
# Environment(s):
#
# Description   : Scan dpkg_archive for users with special access
#
# Usage:
#
#......................................................................#

require 5.008_002;
use strict;
use warnings;

use Pod::Usage;
use Getopt::Long;

my $dpkg_archive;
my $dpkg_archive_len;
my $file;
my $owner;
my $group;
my @users;
my $user;

#
#   Find dpkg_archive
#
$dpkg_archive = $ENV{GBE_DPKG} || die ("EnvVar GBE_DPKG not defined\n");
$dpkg_archive =~ s~/+$~~;
$dpkg_archive_len = length ($dpkg_archive) + 1;

#
#   Ensure its a directory
#
die ("GBE_DPKG ($dpkg_archive) is not a directory\n") unless ( -d $dpkg_archive );

#
# Scan package archive
#
open (DIR ,"getfacl -p $dpkg_archive/* |") || die ("getfacl failed: $!\n");
while ( <DIR> )
{
    $_ =~ s~\s*$~~;
#print "$_\n";
    if ( m~^#\s+file:\s+(.*)~ ) {
        displayUsers();
        $file = substr($1, $dpkg_archive_len);
    }
    $owner = $1
        if ( m~^#\s+owner:\s+(.*)~ );
    $group = $1
        if ( m~^#\s+group:\s+(.*)~ );
     if ( m~^user:(.*?):(.*)~  ) {
        $user = $1;
        if ( $user ne '' && $user ne 'pkgadm' ) {
            push @users, $user;
        }
    }
}
close DIR;
displayUsers();

#-------------------------------------------------------------------------------
# Function        : Display a user entry if it is not as expected
#
# Description     : 
#
# Inputs          : 
#
# Returns         : 
#

sub displayUsers
{
    return unless ( defined $file );
    if ( @users ) {
        printf("%-30s:%s\n", $file , join(' ', sort @users));
    }
    if ( $owner ne 'pkgadm' ) {
        print "$file : OWNER: $owner\n";
    }
    if ( $group ne 'ccperdev' ) {
        print "$file : GROUP: $group\n";
    }
    

    $file = undef;
    $owner = undef;
    $group = undef;
    @users = ();
}