File::Find::Rule rocks.#!/usr/local/perl -w use strict; use File::Find::Rule; use constant FMT => " %5s %-10s %-60s\n"; my @userdir = do { opendir my $dh, "/home"; grep +($_ ne '.' and $_ ne '..' and -d "/home/$_"), readdir $dh; }; my %uid = map { (getpwnam $_)[0,2] } @userdir; my $i = 0; my @offending = map { File::Find::Rule ->exec(sub { $i++ % 80 or print STDERR '.'; 1 }) ->not_uid($uid{$_}) ->in("/home/$_"); } keys %uid; print STDERR "\n"; printf FMT, 'UID', 'User', 'Offending file'; print "-" x 80 . "\n"; my %uname = reverse %uid; for (@offending) { my $fuid = +(stat)[4]; warn "Can't stat $_\n", next if not defined $fuid; $uname{$fuid} = getpwuid($fuid) unless exists $uname{$fuid}; printf FMT, $fuid, $uname{$fuid}, $_; }
Makeshifts last the longest.
In reply to Re: Homedir ownership security
by Aristotle
in thread Homedir ownership security
by sschneid
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |