[PHP] BSD Server restarten vanuit PHP-webpagina

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Boudi
  • Registratie: Oktober 2000
  • Laatst online: 13-07 01:06

Boudi

Always Coca Cola

Topicstarter
Ik heb een FreeBSD server met Apache erop. Ik wil graag vanuit een PHP-pagina deze server herstarten. Dus ik ben aan de slag gegaan:

- apache als root draaien (is puut lokale server, website komt nooit extern beschikbaar) --> niet zonder meer mogelijk op BSD. Eerst maar wat anders proberen

- mbv 'exec("sudo /sbin/reboot") geprobeerd. www-user aan groep 'wheel' toegevoegd, sudoers-bestand aangepast mvb visudo met regel waardoor sudo zonder password mogelijk is. Zelfde gedaan voor lokale user 'admin', vanaf de prompt als admin kan werkt de regel 'sudo /sbin/reboot' maar niet vanuit apache (als user www)

- dan maar apache als admin draaien. httpd.conf aangepast, service restart --> webpagina werkt. Na herstart server draait httpd nog steeds als admin (gezien in ps -aux | grep httpd), maar rebooten vanuit webpagina niet, totdat ik handmatig apache herstart. Dit moet dat wel gebeuren vanuit /usr/local/etc/rc.d/apache.sh restart

Iemand tips? Hoe geef ik de user waaronder apache draait (www of admin, dat is me om het even) voldoende rechten om sudo /sbin/reboot uit te voeren? Of is er een truukje om toch apache als root te draaien?

Met of zonder mayonaise?


Acties:
  • 0 Henk 'm!

Verwijderd

Een longshot: lees je de output van het commando wel?

Acties:
  • 0 Henk 'm!

  • Boudi
  • Registratie: Oktober 2000
  • Laatst online: 13-07 01:06

Boudi

Always Coca Cola

Topicstarter
Verwijderd schreef op maandag 09 juli 2007 @ 16:55:
Een longshot: lees je de output van het commando wel?
Ja, maar ook dat hielp niet echt. Zowel echo exec("sudo /sbin/reboot") als exec("sudo /sbin/reboot", $myvar); print_r($myvar) waren leeg.

Inmiddels wel opgelost overigens, dankzij een collega: sudo kon niet gevonden worden en moet dus direct worden aangeroepen met het pad erbij... dus exec("/usr/local/bin/sudo /sbin/reboot") werkt nu wel :)

Thnx anyweg!!

Met of zonder mayonaise?


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 16:36
Ik heb wel gelezen dat de boel nergens aan het net komt te hangen en dat het (jou) dus niet uitmaakt. Maar ik vind de gebruikte methode om de webserver toegang te geven tot rebooten nogal lomp. Het is niet voor niets dat je apache niet als root mag draaien...
Als de beoeling is om alleen rebooten toe te staan dan lijkt het me logischer om rebooten toe te staan voor de www-user. In zijn simpelste vorm kan dat door /usr/sbin/reboot voor iedereen executable te maken (evt suid root, geen BSD expert).

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • Puntslash
  • Registratie: December 2000
  • Niet online
Wat je ook kan doen is het commando via php wegschrijven in een bestand en vervolgens dat bestand elke minuut runnen via de cron. Zo kun je ook makkelijk andere commando's uitvoeren.

Acties:
  • 0 Henk 'm!

Verwijderd

T-MOB schreef op dinsdag 17 juli 2007 @ 09:36:...
Als de beoeling is om alleen rebooten toe te staan dan lijkt het me logischer om rebooten toe te staan voor de www-user. In zijn simpelste vorm kan dat door /usr/sbin/reboot voor iedereen executable te maken (evt suid root, geen BSD expert).
Zoiets kan je nog makkelijker regelen in je sudoers file,
daar dient zoiets voor ;)

Acties:
  • 0 Henk 'm!

  • Boudi
  • Registratie: Oktober 2000
  • Laatst online: 13-07 01:06

Boudi

Always Coca Cola

Topicstarter
True, maar behalve rebooten wil ik straks vanaf de webinterface ook nog het ip-adres kunnen wijzigen, ifup/ifdown commando's uitvoeren, en een aantal andere services gaan restarten. Dan zou ik inderdaad al deze commando's kunnen laten uitvoeren door www icm aanpassingen in het sudoers-bestand. Maar voorlopig geef ik de voorkeur aan de manier icm sudo, omdat dat qua uitzoekwerk enzo makkelijker is (nieuw commando werkt gewoon, en hoef ik niet eerst toe te voegen aan sudoers bestand....)

Met of zonder mayonaise?


Acties:
  • 0 Henk 'm!

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Waarom installeer je niet gewoon webmin dan?

Acties:
  • 0 Henk 'm!

  • Rob
  • Registratie: Februari 2000
  • Niet online

Rob

Puntslash schreef op dinsdag 17 juli 2007 @ 10:00:
Wat je ook kan doen is het commando via php wegschrijven in een bestand en vervolgens dat bestand elke minuut runnen via de cron. Zo kun je ook makkelijk andere commando's uitvoeren.
Iets netter:
Laat lokaal een scriptje draaien welke via cron elke minuut draait.
Maar laat dit scriptje niet door php maken, dat zou toch een security issue zijn (voor de TS niet, maar misschien zoekt iemand eenzelfde functionaliteit)

PHP maakt een bestandje waar bijvoorbeeld in staat:
"HERSTART"
Het lokale sciptje leest het bestandje, verwijdert het bestandje en kijkt dan welke opdracht er bij HERSTART past. (reboot dus)

of
"IP 192.168.1.1"
Het lokale scriptje leest het bestandje, verwijdert het bestandje en kijkt dan welke opdracht er bij IP 192.168.1.1 past (pas het ip adres aan)

etc.

In the beginning the Internet was a bunch of smart users with dumb terminals. Now...


Acties:
  • 0 Henk 'm!

Verwijderd

Als het volledig thuis draait en security geen issue is dan kan je sudo laten draaien zonder wachtwoord,
gooi gewoon de volgende regel bij, of uncomment 'm, in je /etc/sudoers (wel met visudo werken ;) )
code:
1
2
 # Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL

%wheel verander je dan in de apache group.
Ik denk dat dit de korste pijn is in jouw situatie.

Acties:
  • 0 Henk 'm!

  • Boudi
  • Registratie: Oktober 2000
  • Laatst online: 13-07 01:06

Boudi

Always Coca Cola

Topicstarter
crash: en dat hebben we precies zo gedaan ja (al voordat ik het topic opende)... :)

Rob: hebben we overwogen. Het is een webinterface zoals bijvoorbeeld een waarop je je router of accesspoint configureert. En daar hoef je ook niet een minuut te wachten op wijzigingen :). Viel dus al af.

blaataaps: omdat we de interface in de eigen huisstijl willen hebben, en tevens zie boven...

Met of zonder mayonaise?

Pagina: 1