moin!
mit decoct() und octdec() hab ich ne weile rumgespielt und festgestellt, dass es nicht so recht auf meinem server klappen wollte. dann hab ich einfach mal versucht an die funktion den wert ohne '-zeichen zu übergeben... und siehe da, es klappte. laut man isses aber wahrscheinlich nicht so ganz das gelbe vom ei...
hier mal das script:
<?
if ($_REQUEST['cmd'] == "unlock")
{
my_chmod(dirname($_SERVER['SCRIPT_FILENAME']), 0777);
}
elseif ($_REQUEST['cmd'] == "lock")
{
my_chmod(dirname($_SERVER['SCRIPT_FILENAME']), 0644);
}
else
{
echo '<a href="'.$_SERVER['PHP_SELF'].'?cmd=unlock">Alle Dateien im Admin-Verzeichnis beschreibbar machen (chmod 0777)</a><br>';
echo '<a href="'.$_SERVER['PHP_SELF'].'?cmd=lock">Rechte für alle Dateien zurücksetzen (chmod 0644)</a><br>';
}
function do_chmod($datei, $wert)
{
echo "CHMOD: ".$datei;
if (@chmod($datei, $wert)) echo "... OK"; else echo "... FEHLER";
echo "<br>";
}
function my_chmod($fname, $wert, $sub = 0)
{
$chmod_array = array();
$dir = opendir($fname);
while($file = readdir($dir))
{
if($file == "." || $file == "..")
{
continue;
}
$datei = $fname."/".$file;
if (is_dir($datei))
{
array_push($chmod_array, $datei);
my_chmod($datei, $wert, 1);
}
else
{
do_chmod($datei, $wert);
}
}
closedir($dir);
//setze die rechte für alle unterverzeichnisse zum schluss
if ($sub == 0)
{
if ($wert == 0644) $wert = 0755; // damit verzeichnis durchsuchbar bleibt, 0755
$chmod_array = array_reverse($chmod_array);
foreach($chmod_array as $datei)
{
do_chmod($datei, $wert);
}
}
}
?>
ziel war es ein script zu schreiben, welches die rechte auf selbst erstellte dateien und verzeichnisse, auch für andere benutzer, frei gibt. auf einigen servern ist es nämlich so, dass man auf diese dateien als ftp-user nicht zugreifen und somit einzelne dateien weder löschen noch bearbeiten kann. dieses script setzt nun schreibrechte für alle dateien und verzeichnisse im verzeichnis der ausführenden datei. damit nat. kein sicherheitsloch entsteht, kann man diese rechte wieder zurücksetzen - so dass das script wieder in die ordner schreiben kann.
wer lust hat, kann mir ja noch ein paar tips zur verbesserung geben. so läuft zumindest das script erst mal auf den von mir getesteten servern.
gruß.
roger.
Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de