[PHP/Linux] Beheersen applicaties

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Topicstarter
Mogguh,

Ik ben momenteel bezig met een vrij uitgebreide website voor een gamehost. Nou is dit alles freelance, en doe ik dit puur als hobby, dus ik probeer geen geld te verdienen over jullie rug :+ .
Wat ik wil doen, is voor klanten van de gamehost een controle paneel maken, waarmee ze hun gameserver kunnen starten/stoppen, en eventueel een filemanager erbij om het uploaden van maps makkelijker te maken.

Het probleem waar ik constant tegen aanloop, wanneer ik probeer een gameserver te stoppen of starten, is dat PHP runt onder apache, en deze de user "www-data" heeft; een user zonder rechten, enkel in het leven geroepen om de webserver te draaien.
Via PHP is het heel goed mogelijk om processen aan te roepen en dergelijke. Dit kan bijvoorbeeld via de functies exec() of system(). Echter hier loop ik weer tegen het probleem met de users aan. Een gameserver heeft bijvoorbeeld een user met de naam 'ftd'. De server moet dan ook gestart worden onder die user, anders werken de configs niet goed.

Heeft iemand ervaring met het aansturen van processen op een dergelijke wijze? Ik weet eigenlijk niet meer goed waar ik moet zoeken. Alvast bedankt :)

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Kijk eens naar chroot.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 21:01
chroot :?

Bedoel je niet sudo?

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Topicstarter
Voor chroot is root access vereisd.. dat wilde ik nou net niet hebben, daarom is er die user www-data.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

Verwijderd

php in cgi mode draaien onder suexec??

edit: nope, gaat ook niet werken... (eerst denken, dan posten :) )

ehmmm... scriptje maken om die servers te starten en te stoppen en dat chmod +s doen??

[ Voor 68% gewijzigd door Verwijderd op 29-03-2005 01:55 ]


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Topicstarter
Het probleem zal hem echter gaan zitten in het aansturen van servers op andere boxen. Ik denk dat sudo hiervoor het beste te gebruiken is. De communicatie tussen de boxen zal nog wel wat stof tot nadenken geven.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Coen Rosdorff
  • Registratie: Januari 2000
  • Niet online
MueR schreef op dinsdag 29 maart 2005 @ 01:55:
Het probleem zal hem echter gaan zitten in het aansturen van servers op andere boxen. Ik denk dat sudo hiervoor het beste te gebruiken is. De communicatie tussen de boxen zal nog wel wat stof tot nadenken geven.
Ssh + authorized_keys voor opdrachten op andere machines.

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Verwijderd schreef op dinsdag 29 maart 2005 @ 01:52:
ehmmm... scriptje maken om die servers te starten en te stoppen en dat chmod +s doen??
En dat gaat ook niet werken, scripts een +s bitje geven heeft geen nut onder linux.

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Topicstarter
Verwijderd schreef op dinsdag 29 maart 2005 @ 01:52:
scriptje maken om die servers te starten en te stoppen en dat chmod +s doen??
Het scriptje is er al, dat vonden ze zelf wel makkelijk als ze een server vanuit SSH moeten starten (en geef ze eens ongelijk).

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Maestro
  • Registratie: Februari 2001
  • Laatst online: 17-09 22:18

Maestro

Verder met Jefferson vliegtuig

www.suphp.org misschien een optie?

Wire telegraph is a kind of a very, very long cat. You pull his tail in NYC and his head is meowing in LA. Do you understand this? And radio operates the same way: you send signals here, they receive them there. The only difference is there's no cat


Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

Ik gebruik voor precies hetzelfde doel een klein C programma, Runsuid waarmee je scripts wel suid kunt runnen. Het heeft zo zn beperkingen (en met een goede reden), maar zolang het script niet writable is voor iemand anders dan root lijkt het me redelijk ongevaarlijk.

Een andere optie is om een server daemon te gebruiken waaraan je php script connect. Die daemon vervolgens user switchen naar de user die je wilt besturen en command als die user uitvoeren. Dat proces moet dan natuurlijk wel als root draaien.

Voordeel van de laatste methode is wel dat je het ook makkelijk kan gebruiken om meerdere servers aan te sturen aangezien het niet uitmaakt waar die daemon draait, zo lang 'ie maar met het netwerk praat.

[ Voor 47% gewijzigd door Gerco op 29-03-2005 08:01 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • Thijsmans
  • Registratie: Juli 2001
  • Nu online

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

Stond er in de httpd.conf van apache niet de user waarmee apache moet runnen? Als je die nu eens verandert? :)

anders was het de php.ini, 1 v/d 2

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


Acties:
  • 0 Henk 'm!

  • jan-marten
  • Registratie: September 2000
  • Laatst online: 20:24
Via PHP de bestanden naar jezelf uploaden via FTP (PHP kan bestanden FTP'en). PHP kan dan inloggen op de eigen server onder een andere naam.

Acties:
  • 0 Henk 'm!

  • Koelkasten
  • Registratie: Februari 2001
  • Laatst online: 08-09 19:51

Koelkasten

har har koelkast op je knar

met je php bestanden een var zetten in een file of in database bijvoorbeeld in de file
/usr/local/bin/scripts/config.cfg
rebootgameserver = 0

Met je php script verander je die file (of doe je het via een database) naar rebootgameserver = 1


Vervolgens heb je in je cron job gewoon een script staan wat elke minuut gerunt wordt en kijkt of er in de file /usr/local/bin/scripts/config.cfg de rebootgameserver waarde 1 is indien ja geef je het commando om de game server te restarten. Gezien je het script uit de cron job gewoon onder root rechten kan laten draaien of elke willekeurige user (zie man cron) moet dit geen probleem zijn.

Als output van je originele php script zet je gewoon een timer neer of een melding met de game server reboot over 60 seconden.

Sommige mensen....


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Topicstarter
Prammenhanger schreef op dinsdag 29 maart 2005 @ 13:16:
Stond er in de httpd.conf van apache niet de user waarmee apache moet runnen? Als je die nu eens verandert? :)
anders was het de php.ini, 1 v/d 2
Dan heb je apache draaien onder user 'ftd', maar dat is 1 gameserver. De overige servers kan je dan niet beheren.
jan-marten schreef op dinsdag 29 maart 2005 @ 13:20:
Via PHP de bestanden naar jezelf uploaden via FTP (PHP kan bestanden FTP'en). PHP kan dan inloggen op de eigen server onder een andere naam.
Via FTP kan je geen bash scripts draaien

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

MueR schreef op dinsdag 29 maart 2005 @ 17:20:
[...]
Via FTP kan je geen bash scripts draaien
PHP:
1
exec('ssh user@server /home/user/script.sh');


En dan via een keyfile laten authenticeren.

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 21:01
Het probleem met bijna alle hier genoemde oplossingen (Apache draaien als root, ssh'en naar een andere user, enzovoorts) is dat je de webserver veel te veel macht geeft omdat je geen controle hebt over wat 'ie precies doet.

Ik denk dat de functionaliteit die sudo biedt precies is wat je nodig hebt, omdat je daarmee wel precies kunt aangeven welke commando's de webserver-gebruiker kan geven (een bepaald scriptje uitvoeren bijvoorbeeld).

Verder worden er een heleboel ingewikkelde oplossingen gegeven (met FTP en SSH, of met bestandjes and cronjobs); dat kan allemaal wel, maar het is veel praktisch en veiliger om een simpele aanpak te gebruiken. De gevolgen en risico's daarvan zijn veel beter te beheersen.
Pagina: 1