• 10 odgovora
  • 5.490 pregleda
Brisanje direktorijuma sa sadrzajem 30.09.2002. u 17:05 · pre 292 meseci #1
rmdir(); zahteva da direktorijum bude prazan.

Da li postoji nacin da se obrise direktorijum sa kompletnim sadrzajem?
Potpis
*************************************
Re: Brisanje direktorijuma sa sadrzajem 30.09.2002. u 17:33 · pre 292 meseci #2
Napravi dve funkcije i pozivaj ih rekurzivno. Znaci imas funkciju brisidir() koja otvara direktorijum i poziva funkciju brisifajlove(), a kada ova vrati true, uklanja sam direktorijum. brisifajlove() koristi unlink() funkciju i ako naleti na dir, poziva brisidir() funkciju. Posto su sve varijable lokalne, sve ce lepo raditi.
Potpis
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
Re: Brisanje direktorijuma sa sadrzajem 30.09.2002. u 21:04 · pre 292 meseci #4
Da, ipak sam odabrao drugi način:

system("rm -rf /etc/mod/registar/$imemodula");

Prvobitna zamisao je bila da koristim listu fajlova i diretktorijuma ali je unix komanda ipak (doduše malo sirovo) rešenje koje vrši posao na mnogo jednostavniji način.

Hvala!
Potpis
*************************************
Re: Brisanje direktorijuma sa sadrzajem 01.10.2002. u 09:59 · pre 292 meseci #6
U mom slučaju, ovo ne mora da bude nikakva opasnost. Evo i zašto:

CMS koji pišem deli korisnike u kategorije. Svaka kategorija ima svoj direktorijum. Svaki pokušaj da se pristupi bilo kom skriptu kategorije se rigorozno proverava. Ukoliko se pokaže da onaj ko zahteva skript nije ulogovan - brutalno biva izbačen napolje :))

<?

provera da li je ulogovan();

if (jeste) {
?>
Ovde ide sve sto se prikazuje i obavlja...
<?
}
else {
Header("Location: ../index.php");
}

?>

E sada, ovaj skript, koji bi pozivao sistemske komande se nalazi u modulu koji pripada samo najvišoj kategoriji, Administratori. Iako je malo verovatno da će neko od njih da se igra sa CMS-om, ipak je i funkcija system(); tako postavljena da je nemoguće ručno joj dodeliti parametar za brisanje...

Da li postoji neki sigurnosni propust koji sam ovde prevideo? (ako je moguće utvrditi nešto iz ovako grubog opisa).
Potpis
*************************************
Re: Brisanje direktorijuma sa sadrzajem 02.10.2002. u 02:45 · pre 292 meseci #7
Citat:

ipak je i funkcija system(); tako postavljena da je nemoguće ručno joj dodeliti parametar za brisanje...


a ovo?

Citat:

system("rm -rf /etc/mod/registar/$imemodula");


pa samo zamisli da promenjiva $imemodula "nekako" dobije vrednost "../../../bla/truc"...


druga stvar, ma koliko (bio jak, ima neko jaci ;) da si ti siguran u svoje administratore da nece da hakuju nesto namerno, da li si siguran da svaki od njih ume da se cuva i sacuva svoju sifru, ili svoj sistem od keshiranja sifri, ili bilo sta slicno.

generalno, ovako nesto se vrlo retko radi na ovaj nacin, osim ako ne ide preko ssl zasticene veze (https://bla.truc/)

nemoj da te ja uplasim. tvoj program je mozda nemoguce prevariti, ali ja ti samo savetujem da se ovako obicno ne programira...
Potpis
blogče :: unescaped beta
  »
go-paste extenzija
  »
reč dana: backup
  »
bočne koalicije
Re: Brisanje direktorijuma sa sadrzajem 02.10.2002. u 06:52 · pre 292 meseci #8
zombie, i da ' $imemodula "nekako" dobije vrednost "../../../bla/truc" ' opet se nista strasno ne bi desilo doduse na UNIX/Linux-u, jer na oba operativna sistema Apache radi kao apache, httpd, nobody, www, tako da taj "user" ne moze da brise nista u nekim ../../.. direktorijumima. Na Windozama je druga prica. Ako je Apache na Windows-u, onda se zahteva da se otvore cetvore oci! :)
Srecom ja nemam nijedan web server koji je na Windows-u. Jedina masina na kojoj je Windows (ova) sluzi samo i iskljucivo za igranje i za surfanje (mada i ostale sluze za isto) i jos kojekakve gluposti.
Potpis
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
Re: Brisanje direktorijuma sa sadrzajem 02.10.2002. u 14:41 · pre 292 meseci #9
moze da ti obrise ceo sajt, ako to nije nista onda ne znam sta je... apache user ima privilegije nad svim fajlovima tvog sajta...

Zasto ne bi napravio dve funkcije koje brisu fajlove... mada u principu cim trebas da brises direktorijume, taj cms bas i ne radi ok... naime sta cuvas u tim dir-ovima? slike? pa to moze i u jednom dir-u, pa da cuvas ime slike i kategoriju u mysql-u
Potpis
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
Re: Brisanje direktorijuma sa sadrzajem 02.10.2002. u 18:21 · pre 292 meseci #10
Hehe, momci - trenutno sam u frci da napisem nesto sto ce da obavlja posao. Kad to zavrsim (posto mislim da je ovakav CMS veoma interesantan) objavljujem ga u javnosti kao OpenSource projekat pa cemo da vidimo kakva resenja imate.

U principu, moguce je nekako dodeliti eksterno ubaciti ime ali se trenutno od toga ne bojim - vise me brine da ne prekoracim rok :).
Potpis
*************************************
Re: Brisanje direktorijuma sa sadrzajem 03.10.2002. u 00:51 · pre 292 meseci #11
Citat:
leka:
zombie, i da ' $imemodula "nekako" dobije vrednost "../../../bla/truc" ' opet se nista strasno ne bi desilo doduse na UNIX/Linux-u, jer na oba operativna sistema Apache radi kao apache, httpd, nobody, www, tako da taj "user" ne moze da brise nista u nekim ../../.. direktorijumima.


sve ovo ja znam, ali ti izgleda ne znash bash sve detalje.. ehem, kao sto rece goX.

josh jedan od direktorijuma koji se moze pobrisati je /tmp koji najcesce sadrzi podatke o sesijama. ovo ovde ne predstavlja problem (brisanje sesija) ali negde drugde cak i to je sigurnosna rupa (citanje/menjanje istih).

takodje, to sto ti ne koristish win za hostovanje prezentacija, blago tebi, ali recimo ako on ovaj sistem objavi kao open source (kao sto preti ;), i neki neupuceni korisnik ga instalira na win makini, sta onda...

on je lepo pitao sta moze da podje lose sa ovakvom logikom. ja sam samo dao svoje skromno misljenje...
Potpis
blogče :: unescaped beta
  »
go-paste extenzija
  »
reč dana: backup
  »
bočne koalicije
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme