3b05a89f364964f72a2b9650306492d870ef5ba1
[ossec-hids.git] / debian / ossec-hids / usr / share / doc / ossec-hids / contrib / specs / getattr.pl
1 #!/usr/bin/perl -w
2
3 #
4 # find /var/ossec/ -exec ./getattr.pl {} \;
5 #
6
7 use File::stat;
8
9 my %UID;
10 my %GUID;
11
12 $filename = shift || die "\nsyntax: $0 <file|directory>\n\n";
13
14 get_uid();
15 get_gid();
16
17 $sb = stat($filename);
18
19 die "\nUID $sb->uid doesn't exist?! ($filename)\n\n" if (! exists($UID[$sb->uid]));
20 die "\nGID $sb->uid doesn't exist?! ($filename)\n\n" if (! exists($GID[$sb->gid]));
21
22 if ( -d $filename ) {  ### directory
23   print '%dir ' . $filename . "\n";
24 } elsif ( -f $filename ) { ### file
25   print $filename . "\n";
26 } else {
27   die("\nI can't handle: $filename\n\n");
28 }
29
30 # %attr(550, root, ossec) /var/ossec/etc
31
32 printf "%%attr(%03o, %s, %s) %s\n",
33     $sb->mode & 07777,
34     $UID[$sb->uid], $GID[$sb->gid], $filename;
35
36 #printf "%s: perm %04o, owner: %s, group: %s \n",
37 #    $filename, $sb->mode & 07777,
38 #    $UID[$sb->uid], $GID[$sb->gid];
39
40 sub get_uid
41 {
42    open(FP,'</etc/passwd') || die "\nCan't open /etc/passwd\n\n";
43
44    while ($line = <FP>) {
45      ($name,$id) = (split(/:/,$line,))[0,2];
46      $UID[$id] = $name;
47    }
48    close(FP);
49 }
50
51 sub get_gid
52 {
53    open(FP,'</etc/group') || die "\nCan't open /etc/group\n\n";
54
55    while ($line = <FP>) {
56      ($name,$id) = (split(/:/,$line,))[0,2];
57      $GID[$id] = $name;
58    }
59    close(FP);
60 }  
61