Tenho estado a actualizar um pouco o meu repositório para um sistema próprio, ainda não está criado, mas vou deixar aqui um script muito útil ainda numa versão inicial.
Muita gente tem problemas de segurança devido às permissões erradas, por norma usa-se 755 para pastas e 644 para ficheiros, é bastante difícil andar a verificar ficheiro a ficheiro, pelo que fica aqui uma solução ainda em versão inicial mas funcional.
<?php
/** Change permissions of files, script V1.0 by anjo2 **/
$dir = "";
$chdir = 0755;
$chfile = 0644;
$subfolders = 1; // 1 - Search in subfolders | 0 - Only search in folder "$dir"
function ch_dir($dir, $subfolders, $chdir, $chfile)
{
if(empty($dir)) $listdir = scandir("./");
else $listdir = scandir($dir);
$listdir = array_diff($listdir, array("..", "."));
foreach($listdir as $file)
{
if(is_dir($dir.$file))
{
if(substr(decoct(fileperms($dir.$file)), 1) !== $chdir)
{
echo $dir.$file." - ".substr(decoct(fileperms($dir.$file)), 1);
chmod($dir.$file, $chdir);
echo " - ".substr(decoct(fileperms($dir.$file)), 1)." \n";
}
if($subfolders)
{
$temp = ch_dir($dir.$file."/", 1, $chdir, $chfile);
}
}
else
{
if(substr(decoct(fileperms($dir.$file)), 2) !== $chfile)
{
echo $dir.$file." - ".substr(decoct(fileperms($dir.$file)), 2);
chmod($dir.$file, $chfile);
echo " - ".substr(decoct(fileperms($dir.$file)), 2)." \n";
}
}
}
}
ch_dir($dir, $subfolders, $chdir, $chfile);
?>
Basta executarem no browser. Ignorem o output
Atenção, isto é uma versão ainda verde, falta-lhe muita coisa, a intenção é só mudar os que estão mal e indicar os que não conseguiu mudar, podendo escolher o que sai para output ou então para um log.
Aceita-se sugestões.
PS.: O significado do output é:
ficheiro - permissões actuais - novas permissões
ex.:
index.php - 0777 - 0644