It is fairly easy, you run it in the directory you want to recursively change permissions on.
For example:
perl perms.pl 750 640 zefie zefieWould set all files under my home directory to 640 (rw/r/-), and all directories to 750 (rwx/rx/-), and make the owner and group "zefie".
#!/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; } else { if ($verbose) { print "Setting permissions (".$fmode.", ".$gid.":".$uid.") on $file...\n"; } chmod oct($fmode), $file; chown $uid, $gid, $file; } if (!$verbose) { $i++; print "Set permissions on ".$i." objects..."; print "\r"; } } if (!$verbose) { print "\n"; }
No comments:
Post a Comment