Skocz do zawartości
Mich@ł

usuwanie katalogu - funkcja system() i rm

Polecane posty

Próbuje z poziomu php usunąć katalogi. Do tego celu chciałbym użyć funkcji system() i usuwać całość przy pomocy polecenia rm -rf, problem w tym że coś mi takie polecenie nie chce smigać.

 

Na serwerze funkcja system powinna być odblokowana (ew jak to sprawdzić?).

 

 

Linijka usuwająca katalog wygląda tak:

$path = '/home/wxvphpbb/domains/xxxxxxxxx.pl/public_html/users/xxxxxxxxx;

system ("rm -Rf $path");

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Użytwkonik www-data musi mieć prawo do tego katalogu:

 

chown -R www-data /home/wxvphpbb/domains/xxxxxxxxx.pl/public_html/users

 

 

 

Ewentualnie użyj ssh2 php i loguj się na użytkownika z prawami (np. root) i z niego wykonuj polecenia.

Edytowano przez Kamikadze (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Kamikadze, najlepiej by było aby śmigała 1 opcja tylko mam jeszcze pytanie. Jak widzę katalog users ma uprawnienia dla użytkownika danego konta w DA to czy jak zmienię je na uprawnienia dla www-data to czy nic nie popsuje;)?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Zależy co chcesz kasować jak konkretnie jeden katalog znajdujący się w users to wystarczy że ustawisz prawa na ten katalog. Jak chcesz sobie wybierać co da się poznać po skrypcie to musisz tak zrobić. Prawdopodobnie user nie będzie miał dostępu do katalogów.

 

 

Odezwij się do mnie na PM to mogę ci jakiś skrypt SSH2 wysłać :) Instalacja SSH2 jest prosta też mogę pomóc. :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

W katalogi /users/ mam kilka tysięcy katalogów w których znajdują się katalogi i pliki. Z poziomu php niestety nie mogę ich kasować ponieważ serwis zmieniał kilka razy serwer przez co pomieszane są zezwolenia ;)

 

Dlatego wpadłem na pomysł aby kasować je z poziomu powłoki.

 

Kamikadze, zaraz się odezwę na PW ;)

 

 

kafi, może i prościej tyle że trzeba się na tym znać ;) Ja z bash'a znam jedynie podstawowe polecenia i doszedłem do wniosku że prościej mi będzie właśnie skorzystać z funkcji system() w php i wysłać proste polecenie usunięcia niż męczyć się nad pisaniem skryptu w bash'u.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ktoś mówi, że ten daemon kolejkowy w bashu musi być napisany?\

 

W skrócie - tworzysz sobie tabelkę w bazie danych

| id | nazwa | data_dodania | data_usuniecia |

do crontaba użytkownika ROOT dodajesz polecenie

* * * * * /root/daemonUsuwacz.php

 

Następnie tworzysz ten plik, nadajesz mu właściciela root:root, chmoda 700, a w środku tego pliku

#!/bin/php
<?php
if(!file_exists('/root/daemonUsuwacz.new')) exit;
if(file_exists('/root/demonUsuwacz.lock')) exit;

file_put_contents('/root/daemonUsuwacz.lock', '.');

## Pobierz z bazy wpisy, gdzie data_usuniecia is not null

foreach($wpisy as $wpis)
{
system('rm -rf '.$wpis['nazwa']);
## Update db - ustaw data_usuniecia aktualnego wpisu na now()
}

unlink('/root/daemonUsuwacz.new');
unlink('/root/daemonUsuwacz.lock');
?>

 

Jak chcesz coś usunąć, to dodajesz do bazy i tworzysz plik /root/daemonUsuwacz.new (już obojętnie w sumie z jakimi uprawnieniami).

 

 

Wtedy masz swoją aplikacyjkę w php, ale odpalaną niezależnie od daemona httpd z uprawnieniami np. roota, mogącą robić co ci sie żywnie podoba.

Edytowano przez kafi (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×