Avatar billede bbrockie Nybegynder
27. oktober 2002 - 21:54 Der er 9 kommentarer og
2 løsninger

Slet fil (Linux)

Hej folkens.
Jeg sidder og roder lidt med en skript hvor jeg gerne skulle få lov at slette nogle bestemte filer. Desværre så kører det ikke helt som planlagt, da jeg får følgende fejlbesked:

---

Warning: chmod failed: Operation not permitted in /var/www/html/filer/test/index.php on line 74

Warning: unlink() failed (No such file or directory) in /var/www/html/filer/test/index.php on line 75

---
Som i nok ser så forsøger jeg at få følgende til at virke ;)

if (isset($deldir))
{
$fulldelpath = ($deldir . '/' . $delfile);
chmod ($fulldelpath, 777);
    unlink ($fulldelpath);
    $delstate = ("you have deleted " . $fulldelpath);
}


---
Variablerne ser ellers sådan ud:

$deldir = /var/www/html/filer
$delfile = testfil.bin

På forhånd mange tak! :O)
Avatar billede oz2kas Nybegynder
27. oktober 2002 - 21:59 #1
"chmod ($fulldelpath, 777);" skulle gerne være "chmod ($fulldelpath, 0777);"
Avatar billede spaff Nybegynder
27. oktober 2002 - 21:59 #2
Problemet ligger i at du kører som den bruger din www-server kører med. Og hvis den ikke er ejer af den fil du prøver at køre chmod og unlink på, så får du den fejl du beskriver. Sørg for at filen er ejet af den bruger som www-serveren kører under, så virker det. Ellers må du lave et suid perl script som fx kører som root som kan lave det du har brug for og så kalde det med exec() fra din php-fil.
Avatar billede oz2kas Nybegynder
27. oktober 2002 - 22:00 #3
ellers kan du alternativt prøve at udføre chmod som:
"system ("chmod (".$fulldelpath.", 0777)");
Avatar billede spaff Nybegynder
27. oktober 2002 - 22:02 #4
oz2kas << Det vil give nøjagtigt samme problem, da det ikke handler om hvordan man udfører kommandoen, men om hvilke privilegier den bruger har som serveren kører under.
Avatar billede oz2kas Nybegynder
27. oktober 2002 - 22:06 #5
det har du ret i.
Avatar billede bbrockie Nybegynder
27. oktober 2002 - 22:39 #6
Hvad skal jeg så ændre brugeren til? - Skal jeg bare tilføje Apache brugeren til en anden gruppe?
Avatar billede oz2kas Nybegynder
27. oktober 2002 - 22:44 #7
du skal bare være opmærksom på at brugeren har adgang til filen.
kig evt. med "ls -l /foo"
Avatar billede bbrockie Nybegynder
27. oktober 2002 - 22:58 #8
Apache brugeren er sat til den samme der "ejer" filerne på serveren. Skulle det ikke være godt nok så?
Avatar billede oz2kas Nybegynder
27. oktober 2002 - 23:13 #9
ja
Avatar billede bbrockie Nybegynder
27. oktober 2002 - 23:18 #10
Er det en eller anden opsætning jeg skal have gjort i enten Apache eller PHP for at tillade mig brugen af chmod kommandoen?
Unlink failer ligeledes med:

---

Warning: unlink() failed (Permission denied) in /var/www/html/eurolance/filemanager/users/index.php on line 76

---
Øger gerne flere points hvis vi kan nå et mål her :O)
Avatar billede spaff Nybegynder
28. oktober 2002 - 10:01 #11
Som sagt tidligere så kan du lave det med et suid perlscript.

delfile.pl:
-------------------
#!/usr/bin/perl -U
$file = $ARGV[0];
unlink $file;
-------------------
chown root delfile.pl
chmod u+s delfile.pl

Ovenstående gør at perl-scriptet bliver udført som "root" *BEWARE!*

den kan du så kalde fra dit php-script med:

exec("delfile.pl $fulldelpath",$result);
if ($result)
  echo $result;

Så kan det lade sig gøre. Men du skal lige være opmærksom på at delfile.pl er et djævelsk værktøj i den udformning jeg har lavet den i, da den ikke tjekker NOGET SOM HELST, og en ondsindet bruger derfor kan slette en hvilken som helst fil med den.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester