[PHP] Falscher CHMOD bei hochgeladenen Dateien

sverebom

Vice Admiral
Registriert
Aug. 2004
Beiträge
6.455
Hi,

ich betreibe ein BurningBoard Lite, welches ich mit einem Hack erweitert habe, der es gestattet, Dateianhänge hoch zu laden. Dummerweise erhalten diese Dateien CHMOD 600m wodurch sie im Forum nicht angezeigt werden. Ich müsste es nun so einrichten, das die Dateien beim Hochladen den CHMOD 755 erhalten. An der Stelle möchte einen PHP-Crack bitten, mal über den anghängten Hack zu fliegen und mal zu schauen, wo man die entsprechende Anweisung einsetzen müsste. Dabei dürften die Dateien addreply.php, newthread.php und editpost.php im Ordner "fertige Dateien" besonders interessant sein (der Code des Hacks ist durch Kommentare abgehoben).

Für den Anfang wäre aber schon mal eine ausformulierte Anweisung zum ändern des CHMODs auch schon hilfreich. Vielleicht kann ich mit meinem beschränkten PHP-Wissen den Code selber entsprechend ändern.

Danke

Edit:
Ich hab mal eben geguckt und entdeckt, das es einen Befehl chmod gibt. Mein beschränktes Verständis sagt mir nun, das ich einfach den Befahl mitsamt gewünschter Datei und gewünschten CHMOD angeben muß. Nur, wo leite ich hieraus

Code:
if(!isset($_POST['preview'])) {
 if ($_FILES['atta']['name'] != ""){
  if($_FILES['atta']['size'] > $attachment_settings['size']) eval ("\$error .= \"".$tpl->get("attachment_error1")."\";");
  if(!eregi("(".$attachment_settings['typ'].")$", $_FILES['atta']['name'])) eval ("\$error .= \"".$tpl->get("attachment_error2")."\";");
  if(!$error) {
   if (file_exists("attachments/".$_FILES['atta']['name'])) {
    mt_srand ((double)microtime()* 1000000);
    $zahl = mt_rand (0, 100);
    $dname = explode(".",$_FILES['atta']['name']);
    $dnamesize = count($dname);
    $upfile_ext = $dname[$dnamesize -1];
    $upfile_ext = strtolower($upfile_ext);
    $extnum = strlen($upfile_ext);
    $attanum = strlen ($_FILES['atta']['name']);
    $unterschied = $attanum - $extnum - 1;
    $filename = substr($_FILES['atta']['name'],0,$unterschied);
    $_FILES['atta']['name'] = $filename . $zahl . "." . $upfile_ext;
   }
   move_uploaded_file($_FILES['atta']['tmp_name'], "attachments/".$_FILES['atta']['name']);
   $attachments = 1;
  }
 }
}

den Dateinamen ab?
Den Befehl chmod muß ich nach "move_uploaded_file", als fast an das Ende, angeben oder?

Edit:
Also mit

chmod ("attachments/$filename", 0755);

funzt es nicht.
 
Zuletzt bearbeitet:
haha, ich galub, ich hab's.
ich hab unter "$attachments = 1" einfach

$file = "attachments/".$_FILES['atta']['name'];
chmod ("$file", 0755);

eingefügt.

Kann man das vielleicht noch ein wenug runder gestalten, ohne die Variable usw.?
 
Hallo,

du kannst deinen obigen Code noch gegen 'chmod("attachments/".$_FILES['atta']['name'], 0755);' ersetzen.
Kürzer wird es ansonsten aber nicht mehr gehen. ;)

MfG mh1001
 
Ích mein, das ich dies ebenfalls versucht habe, was nicht funktionierte. Aber ich versuch's nochmal.

Danke
 
Zurück
Oben