#!/usr/bin/perl # High speed recursive permission changer $pwd = `pwd`; $pwd = s/ /\\ /g; $dmode = @ARGV[0]; $fmode = @ARGV[1]; $user = @ARGV[2]; $group = @ARGV[3]; $verbose = @ARGV[4]; if (!$user || !$group || !$fmode || !$dmode) { print "Usage: perms.pl dirmode filemode user group [-v]\n"; exit(); } $files = `find $pwd`; @files = split("\n",$files); $i = 0; $j = 0; ($login,$pass,$uid,$gid) = getpwnam($user); $gid = getgrnam($group); if (!$uid) { print "User \"".$user."\" does not exist!\n"; exit(); } if (!$gid) { print "Group \"".$group."\" does not exist!\n"; exit(); } foreach $file (@files) { if (-d $file) { if ($verbose) { print "Setting permissions (".$dmode.", ".$uid.":".$gid.") on $file...\n"; } chmod oct($dmode), $file; chown $uid, $gid, $file; # system("chown ".$user.":".$group." \"".$file."\""); # system("chmod ".$dmode." \"".$file."\""); } else { if ($verbose) { print "Setting permissions (".$fmode.", ".$gid.":".$uid.") on $file...\n"; } chmod oct($fmode), $file; chown $uid, $gid, $file; # system("chown ".$user.":".$group." \"".$file."\""); # system("chmod ".$fmode." \"".$file."\""); } if (!$verbose) { $i++; print "Set permissions on ".$i." objects..."; print "\r"; } } if (!$verbose) { print "\n"; }