[PHP] Exec? - Panel sterowania do aplikacji pod centos.

0

Witam,
posiadam serwer dedykowany pod CentOS.

Od niedawna udostępniam pewien serwer do gry (SA:MP, sponsoruje [?]). Często jest tak, że muszę wyłączyć i włączyć te aplikacje (serwera do gry), aby pewne pliki się przeładowały. Dla mnie to czasami uciążliwe jeżeli muszę co chwile tenże serwer do gry restartowac, dlatego zwracam się z pytaniem: Czy dałoby się bez udostępniania SSH w PHP napisać skrypt którym mógłbym włączać te aplikacje/wyłączać? Tak żeby można było to robić za pomocą strony WWW. Czy nadało by się do tego "exec()"? Proszę o jakieś podpowiedzi, może przykłady.

Pozdrawiam, Leonardian.

0

Prawdopodobnie się da, pytanie tylko, czy jesteś w wstanie tak skonfigurować PHP, aby inni nie mogli resetować tego serwera. Może się to okazać dość skomplikowane, chyba, że to nie ma znaczenia. Pamiętaj tylko aby PHP działało z uprawnieniami do tego serwera.

0

Czyli mam zmienić uprawnienia użytkownika "php" tak?

Mi chodzi o to, że mam taki panel jakby (chce sponsorować serwery dla kilku klanów jeszcze) i po zalogowaniu możesz te aplikacje restartowac tylko. Nic więcej nie byłoby potrzebne :).

0

Hmm, tak jak pisałem, technicznie jest to możliwe, ale zwiększa ryzyko "nieautoryzowanego dostępu". Więc trzeba mieć to na uwadze.

0

A regularnie się to wyłącza? Możesz ustawić reset co jakiś czas...

0

php bedzie dzialal z prawami jakie ma apache, lepiej ich nie zmieniac.

lepiej rozbic to wszystko na poszczegolne banalnie proste elementy i zrobic tak:

piszesz sobie w php skrypcik ktory tworzy plik, np.: /tmp/plik (tam kazdy ma prawo pisac) czy ~/public_html/plik (woj katalog domowy). nawet nie musisz tworzyc przycisku:

<?PHP
   touch("/tmp/plik");
   chmod("/tmp/plik",0666); // wlascielem jest apache, wiec niech kazdy moze go skasowac.
   echo "/tmp/plik utworzony";
?>

wrzuczasz go do jakiegokolwiek podkatalogu strony jako index.php

ograniczas dostep do tego tego katalogu poprzez autoryzacje w .htaccess:

Deny from All

AuthName "Powiedz przyjacielu i wejdz"
AuthType Basic
# authuserfile tworzysz za pomoca htpasswd2 - masz centosa, masz rowniez mana do tego polecenia
AuthUserFile /home/twoj katalog/.htpass
require valid-user

Satisfy Any

# dodatkowo mozesz wydzielic adresy z ktorych usytkownicy nie beda pytani o haslo
Allow from 127.0.0.1/255.0.0.0  
Allow from 192.168.3.2/255.255.255.0

piszesz skrypt w sh/bashu (/sciezka/skrypt.sh):

#!/bin/bash

if [ -f /tmp/plik ] ; then
  rm -f /tmp/plik   # po to byl potrzebny na wszelakij sluczaj chmod 666
  pkill gra
  sleep 2 # dajesz czas na zamkniecie procesu np. 2 sek
  /sciezka/gra # odpalasz gre ponownie
fi

potem do crontaba uzytkownika z ktorego odpalana jest gra dopisujesz (crontab -e -u uzytkownik_z_ktorego_odpalasz_gre)

* * * * * /sciezka/skrypt.sh 1>/dev/null 2>&1

bonusy:

  1. masz 4 elementy banalnie proste
  2. mozesz tworzyc pliczek nie tylko poprzez skrypt php

antybonus:

  1. skrytp jest odpalany co minute, wiec mozesz czekac nawet 59 sekund na przeladowanie. mozesz pominac to rezygnujac z crona i skryptu na rzecz czegos w stylu:
#!/bin/bash

while true ; do
  if [ -f /tmp/plik ] ; then
    rm -f /tmp/plik   # po to byl potrzebny na wszelakij sluczaj chmod 666
    pkill gra
    sleep 2 # dajesz czas na zamkniecie procesu np. 2 sek
    /sciezka/gra # odpalasz gre ponownie
  fi
  sleep 3  # czesttliwosc z jaka skrypt sprawdza istnienie pliku
done

to odpalasz albo poprzez polecenie screen albo poprzez nohup

0

po cholere tak komplikowac? czy Leonardian napisał, że udostępnia również hosting w php? Moze niech ktos zaproponuje uruchomienie pythona, z oddzielnym virtualnym srodowiskiem jako fcgi z uprawnieniami sterowanymi za pomoca selinuxa + całość zamknięta w jailu :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1