![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 19 Dołączył: 13.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Piszę pomocny panel do dodawania uzytkowników do sieci(udostępnianie internetu). Głównie skrypt ładuje z bazy danych dane (formułki iptables itd) do plików mac, htb, htb_dzien, htb_noc... I teraz mój problem. Po zapisaniu tych plików na serwerze, trzeba je przeładować(odpalić), z konsoli robi sie to bardzo prosto, wpisujemy "./mac"(jeśli jestesmy w katalogu /etc/init.d) i tak z każdym plikiem. I wszystko działa, ale chciałem żeby ten pliki automatycznie się "przeładowywały" ze skryptu php. Do tego użyłem funkcje exec: Kod exec('../../../etc/init.d/mac'); i tak z kolejnymi plikami pokoleji. Niestety nie wykonuje mi tego pliku. to napisałem mały prosty skrypt pod basha, żeby sprawdzić czy funkcja exec działa na serwerze: Kod #!/bin/sh cd /etc/init.d;./mac cd /etc/init.d;./htb_dzien echo 'lol'; z php uruchamiam to funkcja exec: Kod exec('./panel.sh', $ans) foreach($ans as $line) { echo $line; } Na stronie wyświetla mi się tylko lol, niestety dalej nie odpala tych plików, a jak wykonuje ten skrypt z terminala Kod ./panel.sh to oczywiście działa. Prawa dostepu na czas testu ustawiłem na 777, do katalogów, jak i plików, gdzie znajdują sie mac, htb... jak i cały katalgo www. Mam nadzieję ze dobrze wytłumaczyłem, na czym polega problem. Z góry dziękuje za zainteresowanie. Ten post edytował Dominis 13.02.2010, 22:22:34 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 856 Pomógł: 19 Dołączył: 30.08.2005 Skąd: 100lica Ostrzeżenie: (0%) ![]() ![]() |
A nie prościej połączyć się z ssh i wykonać skrypt?
Dla przykładu |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Ja bym Ci radził sprawdzić z jakimi uprawnieniami ten skrypt idzie (IMG:style_emoticons/default/winksmiley.jpg) W końcu przeładowanie plików systemowych nie może być robione przez każdą usługę "jak leci". Zapewne system nie pozwala tego zrobić procesow bo wykrywa on brak uprawnień. Stąd w konsoli jako uprawniony user możesz to zrobić, ale już skrypt idący z uprawnieniami Apache'a takich praw nie posiada i stąd niby wszysto ok, a jednak nie OK. Wiem, że pisałeś o nadaniu 777 wszystkiemu, ale nie wiem czy proste zmiany z użyciem chmod mimo wszystko pozwolą na operacje na tak proste obejście.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 19 Dołączył: 13.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za zaintertesowanie;)
thek, wydaje mi się, że sprawdziłem wszystkie uprawnienia.. Nadałem im jak juz pisalem 777, wlasciciela i grupe dałem www-data, taka nazwa wchodzi serwer wwww. wipo, pewnie by było prościej, niestety na serwerze z tego co widze nie ma biblioteki ssh, bede musiał chyba sie pomęczyc i doinstalowac, jak nie znajde innego rozwiazania. Pozdrawiam |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 702 Pomógł: 65 Dołączył: 16.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
wykonałem podobny skrypt do obsługi iptables i kolejkowania za pomoca htb/hfsc z tym ze dane z poziomu www za pomocą php wzucam do SQL a uruchamianie i działanie firewall zajmuje sie skrypt w perlu który oczywiscie mogę uruchamiac / restartowac z poziomu www zaoszczedziło mi to wiele pracy i polecam takie rozwiązanie (IMG:style_emoticons/default/winksmiley.jpg)
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 300 Pomógł: 32 Dołączył: 31.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
thek, wydaje mi się, że sprawdziłem wszystkie uprawnienia.. Nadałem im jak juz pisalem 777, wlasciciela i grupe dałem www-data, taka nazwa wchodzi serwer wwww. To nie tak działa. Zobacz uprawnienia np. pliku /usr/bin/sudo : Właściciel root, grupa root, uprawnienia :755, ustawiony bit suid. Czyli: każdy może odpalić ten plik, i uruchomionemu plikowi zostaną nadane uprawnienia roota. Samo 777 nie wystarczy - plik się uruchomi ale nadal nie będzie mógł grzebać w iptables, bo nadal będzie miał tylko uprawnienia www-data |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 19 Dołączył: 13.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje wszystkim za pomoc, problem chyba rozwiązany.
Posłuchałem 'ucho' i użyłem sudo. nie wiem na ile to jest bezpieczne co zrobilem, ale działa... w /etc/sudoers dopisalem: Kod www-data ALL= NOPASSWD: /etc/init.d/mac www-data ALL= NOPASSWD: /etc/init.d/htb_dzien a potem w php: Kod system("sudo /etc/init.d/htb_dzien"); system("sudo /etc/init.d/mac"); Pozdrawiam, Dominik |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 22:37 |