Mkdir
Beste,
Een onderdeel in mijn scriptje is een mkdir. Nu maakt hij de mappen mooi aan maar ik kan ze niet aanpassen noch verwijderen! Heb al allerlij zaken geprobeerd maar niets lijkt te werken. De oorzaak ligt volgens mij bij de rechten die aan het bestand gegeven worden wanneer deze opgeslagen worden! Zou iemand hiervoor de oplossing kunnen brengen?
Alvast bedankt!
Jelle
Een onderdeel in mijn scriptje is een mkdir. Nu maakt hij de mappen mooi aan maar ik kan ze niet aanpassen noch verwijderen! Heb al allerlij zaken geprobeerd maar niets lijkt te werken. De oorzaak ligt volgens mij bij de rechten die aan het bestand gegeven worden wanneer deze opgeslagen worden! Zou iemand hiervoor de oplossing kunnen brengen?
Alvast bedankt!
Jelle
Quote:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?
// CODERING BESTANDSNAAM
$testje =$imth ;
if($testje != ""){
$codebestand = $testje;
} else{
$adresje = GetIP();
$mooiadresje = str_replace( ".", "", $adresje);
$willekeurig = rand();
$eindresultaat = time().$mooiadresje.$willekeurig;
$van = 'abcdefghij';
$naar = '0123456789';
$codebestand = strtr($eindresultaat, $naar, $van);
}
//Bestanden in juiste map plaatsen en indien nodig nieuwe map aanmaken
if (is_dir('./../../../fotos/'.$catnaam.'/')){
$bestemmingsmap = './../../../fotos/'.$catnaam.'/';
} else{
$nieuwemap = mkdir( "../../../fotos/".$catnaam."/", 0777);
$bestemmingsmap = './../../../fotos/'.$catnaam.'/';
}
//BESTANDSCOPY VAN IMPORTMAP NAAR DOELBESTEMMING
$image_link = 0;
$source = $HTTP_POST_FILES['file1']['tmp_name'];
$source_mime = $HTTP_POST_FILES['file1']['type'];
$origname = $HTTP_POST_FILES['file1']['name'];
$upload_size = $HTTP_POST_FILES['file1']['size'];
// don't allow anyone to be stupid
$filearray = explode(".",$origname);
$fileext = strtolower($filearray[count($filearray) - 1]);
$badext = "CGI PHP PL ASP HTM HTML php pl asp cgi htm html";
if($fileext != ""){
if(strstr($badext,strtoupper($fileext)))
$origname .= ".txt";
}
$upload_type = split("/",$source_mime);
if( ($source != 'none') && ($source != '')){
if( $upload_type[0] == "image" ){
$image_link = 1;
}
//vaststellen welke EXTENTIE
if (($fileext == "jpg") | ($fileext == "jpeg") | ($fileext == "JPG") | ($fileext == "JPEG")){
$codebestand .= ".jpg";
}
if (($fileext == "gif") | ($fileext == "GIF")){
$codebestand .= ".gif";
}
$dest = $bestemmingsmap.$codebestand;
$uploaden = move_uploaded_file($source,$dest);
chmod('./../../../fotos/'.$catnaam.'/', 0777);
if($uploaden) {
// if(!chmod($dest,0777)) {
// echo 'Kan de attributen van het bestand niet aanpassen!';
// }
} else {
echo 'FOUT: kan deze foto niet opslaan!';
}
echo "<br /><center>Foto uploaden OK !<br />$dest</center>";
echo "<p><a href=\"./uplform.php\">Nieuwe afbeelding uploaden</a></p>";
} else {
echo "Geen bestand geselecteerd!<br />";
return;
}
$image_stats = GetImageSize($dest);
$imagesize = $image_stats[3];
$image_height = round($image_stats[1]);
$image_width = round ($image_stats[0]);
$image_url = $bestand;
//TOEVOEGEN AAN DE DATABANK
$schrijfstring = str_replace("\"",""", $oms);
$schrijfstring = str_replace("'","'", $schrijfstring);
$newline = "INSERT INTO fotos VALUES ('$codebestand', '".stripslashes($schrijfstring)."', '".stripslashes($catnaam)."', 'neen')";
if (!$result = mysql_query($newline)){
print $newline;
exit;
}
?>
// CODERING BESTANDSNAAM
$testje =$imth ;
if($testje != ""){
$codebestand = $testje;
} else{
$adresje = GetIP();
$mooiadresje = str_replace( ".", "", $adresje);
$willekeurig = rand();
$eindresultaat = time().$mooiadresje.$willekeurig;
$van = 'abcdefghij';
$naar = '0123456789';
$codebestand = strtr($eindresultaat, $naar, $van);
}
//Bestanden in juiste map plaatsen en indien nodig nieuwe map aanmaken
if (is_dir('./../../../fotos/'.$catnaam.'/')){
$bestemmingsmap = './../../../fotos/'.$catnaam.'/';
} else{
$nieuwemap = mkdir( "../../../fotos/".$catnaam."/", 0777);
$bestemmingsmap = './../../../fotos/'.$catnaam.'/';
}
//BESTANDSCOPY VAN IMPORTMAP NAAR DOELBESTEMMING
$image_link = 0;
$source = $HTTP_POST_FILES['file1']['tmp_name'];
$source_mime = $HTTP_POST_FILES['file1']['type'];
$origname = $HTTP_POST_FILES['file1']['name'];
$upload_size = $HTTP_POST_FILES['file1']['size'];
// don't allow anyone to be stupid
$filearray = explode(".",$origname);
$fileext = strtolower($filearray[count($filearray) - 1]);
$badext = "CGI PHP PL ASP HTM HTML php pl asp cgi htm html";
if($fileext != ""){
if(strstr($badext,strtoupper($fileext)))
$origname .= ".txt";
}
$upload_type = split("/",$source_mime);
if( ($source != 'none') && ($source != '')){
if( $upload_type[0] == "image" ){
$image_link = 1;
}
//vaststellen welke EXTENTIE
if (($fileext == "jpg") | ($fileext == "jpeg") | ($fileext == "JPG") | ($fileext == "JPEG")){
$codebestand .= ".jpg";
}
if (($fileext == "gif") | ($fileext == "GIF")){
$codebestand .= ".gif";
}
$dest = $bestemmingsmap.$codebestand;
$uploaden = move_uploaded_file($source,$dest);
chmod('./../../../fotos/'.$catnaam.'/', 0777);
if($uploaden) {
// if(!chmod($dest,0777)) {
// echo 'Kan de attributen van het bestand niet aanpassen!';
// }
} else {
echo 'FOUT: kan deze foto niet opslaan!';
}
echo "<br /><center>Foto uploaden OK !<br />$dest</center>";
echo "<p><a href=\"./uplform.php\">Nieuwe afbeelding uploaden</a></p>";
} else {
echo "Geen bestand geselecteerd!<br />";
return;
}
$image_stats = GetImageSize($dest);
$imagesize = $image_stats[3];
$image_height = round($image_stats[1]);
$image_width = round ($image_stats[0]);
$image_url = $bestand;
//TOEVOEGEN AAN DE DATABANK
$schrijfstring = str_replace("\"",""", $oms);
$schrijfstring = str_replace("'","'", $schrijfstring);
$newline = "INSERT INTO fotos VALUES ('$codebestand', '".stripslashes($schrijfstring)."', '".stripslashes($catnaam)."', 'neen')";
if (!$result = mysql_query($newline)){
print $newline;
exit;
}
?>
Je kan naa het aanmaken van de map ff Cmoden naar 0777
Zie in je script regel 63 t/m 65 haal ff die dubbele // weg.
Zie in je script regel 63 t/m 65 haal ff die dubbele // weg.
Gewijzigd op 05/08/2010 22:05:11 door Joey Drieling
@Joey Drieling, hij heeft inderdaad een fout bij zijn rechten maar ik ben geen voorstander van 777.
Mij is geleerd dat in een webserver de volgende rechten gehanteerd moeten worden:
Bestanden :
Read only - 440
Read/Write - 660
Mappen:
Read only - 550
Read/write - 770
Mij is geleerd dat in een webserver de volgende rechten gehanteerd moeten worden:
Bestanden :
Read only - 440
Read/Write - 660
Mappen:
Read only - 550
Read/write - 770
Als er bestanden in je map staan kan je zo ook niet verwijderen he..
770 is rwx-rwx---- waarbij de x staat voor executable cq uitvoerbaar.
660 is rw--rw----- is read write en er is geen verschil tussen mappen en bestanden, bestanden erven meestal rechten van de mappen. Verder is het vreemd dat je een map die je aangemaakt hebt niet kan weggooien. Het is onzin om daarvoor de rechten naar 777 oid te gaan zetten, dat is workaround. Als jij de map hebt aangemaakt mag jij hem ook weggooien. Maak je met php de map aan dan is de eigenaar apache en dan mag apache hem ook weggooien. Zoek de fout dus in je code en niet in de rechten en ga niet rommelen met rechten aanpassen. Geef geen rechten mee aan mappen/bestanden en zeker geen 0777 als je rechten mee moet geven geef dan 660 mee. Een directory waarin bestanden staan kan je niet weggooien, maak hem eerst leeg of doe een rm -rf of een rmdir -f
660 is rw--rw----- is read write en er is geen verschil tussen mappen en bestanden, bestanden erven meestal rechten van de mappen. Verder is het vreemd dat je een map die je aangemaakt hebt niet kan weggooien. Het is onzin om daarvoor de rechten naar 777 oid te gaan zetten, dat is workaround. Als jij de map hebt aangemaakt mag jij hem ook weggooien. Maak je met php de map aan dan is de eigenaar apache en dan mag apache hem ook weggooien. Zoek de fout dus in je code en niet in de rechten en ga niet rommelen met rechten aanpassen. Geef geen rechten mee aan mappen/bestanden en zeker geen 0777 als je rechten mee moet geven geef dan 660 mee. Een directory waarin bestanden staan kan je niet weggooien, maak hem eerst leeg of doe een rm -rf of een rmdir -f
Gewijzigd op 05/08/2010 23:25:41 door Aad B
777 is meestal het handigste, kan het anders? vast wel, is eeuwen geleden dat er ik ermee getest hebt.
777 is geen beveiligingslek op voorwaarde dat het zich in een map bevind die strenger is, denk aan de public_html bijvoorbeeld geef die strengere rechten dan kan alles erin zonder risico 777 staan.
Zet alles, maar dan ook echt ALLES op 777... dan is het inderdaad gevaarlijk
777 is geen beveiligingslek op voorwaarde dat het zich in een map bevind die strenger is, denk aan de public_html bijvoorbeeld geef die strengere rechten dan kan alles erin zonder risico 777 staan.
Zet alles, maar dan ook echt ALLES op 777... dan is het inderdaad gevaarlijk
De derde 7 is "world" en je zet dan dus alles open voor de "world". Is absoluut onnodig. Dit wordt altijd gedaan omdat men denkt dat dat problemen oplost maar het is symptoombestrijding, workaround en wat mij betreft knoeiwerk. Voordat je zegt zet ALLES op 777 zeg ik: Doe zorgvuldig foutanalyse en los de fout op en als het een rechten-fout is geef dan het juiste recht aan de betreffende map of bestand.
Ik heb dit zelf gedaan om dat de server de map/bestand dus de server als rechten had, en ik hem zelf niet kon bewerken een geen zin had om alles handmatig om te zetten. Ik weet dat het niet echt goed is en denk dat 775 of 770 beeter is, maar anders weet ik geen oplosing.
Gewijzigd op 06/08/2010 16:27:37 door Joey Drieling
Joey Drieling op 06/08/2010 16:03:40:
Ik heb dit zelf gedaan om dat de server de map/bestand dus de server als rechten had, en ik hem zelf niet kon bewerken een geen zin had om alles handmatig om te zetten. Ik weet dat het niet echt goed is maar weet anders geen oplosing.
Andere hoster nemen. 777 is nooit nodig.
Bij de meeste hosters waar je via php een map/bestand laat aan maaken staat de eigenaar op apache.
Joey Drieling op 06/08/2010 16:15:48:
Bij de meeste hosters waar je via php een map/bestand laat aan maaken staat de eigenaar op apache.
Een slechte hoster dus.
Want dat zou in principe betekenen dat als ze geen jail hebben (of een slechte) dat je zo alle bestanden van andere kan lezen.
Ik heb verschilende sites bij:
antagonist.nl
starthosting.nl
yourhosting.nl
one.com
Ik heb het met chown(path, user); geprobeert werkt niet.
antagonist.nl
starthosting.nl
yourhosting.nl
one.com
Ik heb het met chown(path, user); geprobeert werkt niet.
Gewijzigd op 06/08/2010 16:26:15 door Joey Drieling
Joey Drieling op 06/08/2010 16:23:16:
ik verschilende sites bij:
antagonist.nl
starthosting.nl
yourhosting.nl
one.com
antagonist.nl
starthosting.nl
yourhosting.nl
one.com
Oke. Dan zijn die dus slecht.
Waarom zou de hele wereld jou bestanden mogen uitlezen? Dat heeft toch geen reden. Het zijn toch jou bestanden.
IRL stop je papieren van jou toch ook niet bij iemand anders in de map...
Weet ik en je kan denk ook beeter 775 of 770 doen maar het ging toen om aleen om een map met een paar foto's.
Gewijzigd op 06/08/2010 16:29:49 door Joey Drieling




