#!/usr/bin/perl -n
my ($symbolic_mode, $name) = /^(.{10})[^/]*(.*)/;
$_ = $symbolic_mode;
my $numeric_mode = 0;
$numeric_mode |= 04000 if /^...[sS]......$/;
$numeric_mode |= 02000 if /^......[sS]...$/;
$numeric_mode |= 01000 if /^.........[tT]$/;
$numeric_mode |= 00400 if /^.r........$/;
$numeric_mode |= 00200 if /^..w.......$/;
$numeric_mode |= 00100 if /^...[xs]......$/;
$numeric_mode |= 00040 if /^....r.....$/;
$numeric_mode |= 00020 if /^.....w....$/;
$numeric_mode |= 00010 if /^......[xs]...$/;
$numeric_mode |= 00004 if /^.......r..$/;
$numeric_mode |= 00002 if /^........w.$/;
$numeric_mode |= 00001 if /^.........[xt]$/;
chmod $numeric_mode, $name
__END__
Burde umidelbart gøre tricket, antaget at alle inddatalinjer giver
absolutte filnavne og der ikke gives noget spøjst inddata.
Nu har jeg haft lejlighed til at sætte en test maskine op hvor jeg kan lege lidt med det script du lavede til mig. Umiddelbart giver det dog følgende "fejlmeddelelse":
Unmatched [ before HERE mark in regex m/^(.{10})[ << HERE ^/ at /root/fixPerm.sh line 3.
Jeg kinder desværre ikke til perl overhovedet så jeg er lidt på herrensmark her - alle forslag er meget velkomne.
/Lasse