[PHP] Shutdown initieren met Apache & PHP

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • TheLunatic
  • Registratie: April 2001
  • Laatst online: 16-08 21:48

TheLunatic

Ouwe boxen.

Topicstarter
Op mijn thuisservertje draai ik Apache 2.2 met PHP5 in Win2K3S. Er maakt ongeveer 1 persoon gebruik van de server: ik. Soms word ik ineens gebeld dat thuis de stroom eraf moet, en dan kan ik mijn server niet uitzetten. Gevolg: server wordt bruut uitgezet door de stroom er af te halen.

Nou wil ik een eenvoudig PHP script maken dat een shutdown -s -f -t 0 uitvoert. Maar niet geheel onverwacht: het werkt niet. Volgens mij heb ik een probleem met rechten.

Wat heb ik al geprobeerd:
• Bij wijze van probeersel heb ik Apache laten starten als admin user, maar dan doet-ie juist helemaal niks, zelfs geen webpagina tonen. Als ik als deze zelfde admin remote inlog en een shutdown uitvoer werkt dat wel.
• Ik vond dit topic maar dat gaat over IIS en biedt voor mij geen oplossing.
• Shutdown commando in een batch file plaatsen en die starten; werkt ook niet.

Wie biedt raad?

Mother, will they like this song?


Acties:
  • 0 Henk 'm!

Verwijderd

Je kunt natuurlijk gewoon RDP gebruiken om je systeem te beheren.

Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou iets met sudo proberen om de user waaronder Apache draait het recht te geven om het shutdown-command uit te voeren.

[edit]
Makkelijker, maar minder controle over wie het precies uit kan voeren: chmod u+s /sbin/shutdown

[ Voor 30% gewijzigd door Verwijderd op 19-08-2009 23:59 ]


  • GiantLeap
  • Registratie: Oktober 2005
  • Laatst online: 19-09 11:59

GiantLeap

One GiantLeap for mankind

Verwijderd schreef op woensdag 19 augustus 2009 @ 23:55:
Ik zou iets met sudo proberen om de user waaronder Apache draait het recht te geven om het shutdown-command uit te voeren.

[edit]
Makkelijker, maar minder controle over wie het precies uit kan voeren: chmod u+s /sbin/shutdown
Ging het hier niet over Windows? ;)

Mario Kart Tour: 211982902522
Rockstar Games Social Club (PC): GiantLeap

RC spul:
Traxxas Nitro Rustler
Hubsan X4 H107D
DJI Phantom 2 Vision+


  • GlowMouse
  • Registratie: November 2002
  • Niet online
Verwijderd schreef op woensdag 19 augustus 2009 @ 23:55:
Makkelijker, maar minder controle over wie het precies uit kan voeren: chmod u+s /sbin/shutdown
Als dat zou werken, kan elke user dan niet het bestand shutdown kopieren van een vergelijkbaar systeem en vanuit zijn homedir elk systeem waar hij een account op heeft kunnen afsluiten?

Verwijderd

GlowMouse schreef op donderdag 20 augustus 2009 @ 00:11:
[...]

Als dat zou werken, kan elke user dan niet het bestand shutdown kopieren van een vergelijkbaar systeem en vanuit zijn homedir elk systeem waar hij een account op heeft kunnen afsluiten?
Werkt inderdaad niet. Heb het even getest (op Mac, maar zal wel hetzelfde zijn he)..

mbGH:~ Guido$ ./shutdown
shutdown: NOT super-user

Verwijderd

MHz schreef op donderdag 20 augustus 2009 @ 00:07:
[...]


Ging het hier niet over Windows? ;)
Oeps :X
GlowMouse schreef op donderdag 20 augustus 2009 @ 00:11:
[...]

Als dat zou werken, kan elke user dan niet het bestand shutdown kopieren van een vergelijkbaar systeem en vanuit zijn homedir elk systeem waar hij een account op heeft kunnen afsluiten?
Geen idee, maar als ik mijn shutdown-binary zo chmod kan ik opeens gewoon als user afsluiten verder. Maar verder niet echt relevant aangezien het hier om Windows gaat.

[ Voor 59% gewijzigd door Verwijderd op 20-08-2009 00:39 ]


  • PhilipsFan
  • Registratie: Oktober 2003
  • Laatst online: 22:01
Je laat php een batchfile wegschrijven met de gewenste opdracht, gevolgd door de opdracht om de batchfile te wissen. Vervolgens maak je een scheduled task aan die de betreffende batchfile aanroept als de gewenste user. Die task laat je bv om de 5 minuten herhalen.

Risico is dat iemand die dit ontdekt willekeurige commando's in je batchfile kan plaatsen. Veiliger is een lokaal programmaatje schrijven (en die uit laten voeren met een scheduled task) dat de shutdown uitvoert als een file aanwezig is (en die vervolgens wist).

  • TheLunatic
  • Registratie: April 2001
  • Laatst online: 16-08 21:48

TheLunatic

Ouwe boxen.

Topicstarter
Verwijderd schreef op woensdag 19 augustus 2009 @ 23:41:
Je kunt natuurlijk gewoon RDP gebruiken om je systeem te beheren.
Doe ik ook, maar niet vanaf elke pc kan je rdp'en (zoals op beschermde werkomgevingen) ...

Scheduled task heb ik ook over nagedacht maar dat vind ik geen mooie oplossing. Het komt hooguit eens per maand voor en dan krijg ik elke 5 minuten, elke dag (in totaal 8640 keer) terwijl het maar één keer nodig is ...

Mother, will they like this song?


  • Spiral
  • Registratie: December 2005
  • Niet online
Je zou ook remote desktop kunnen doen via http. Daar zijn verschillende tools voor. Microsoft zelf heeft ook https://www.mesh.com/ moet je een applicatie installeren op je server en dan kan je via je webbrowser je remote desktop benaderen.

To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles


  • mithras
  • Registratie: Maart 2003
  • Niet online
TheLunatic schreef op donderdag 20 augustus 2009 @ 07:48:
[...]


Doe ik ook, maar niet vanaf elke pc kan je rdp'en (zoals op beschermde werkomgevingen) ...

Scheduled task heb ik ook over nagedacht maar dat vind ik geen mooie oplossing. Het komt hooguit eens per maand voor en dan krijg ik elke 5 minuten, elke dag (in totaal 8640 keer) terwijl het maar één keer nodig is ...
Op zich biedt je daar wel een goed aanknopingspunt. Je zou met php een bestand kunnen wegschrijven, bijvoorbeeld C:/shutdown. Dan heb je een cronjob draaien die elke 5 minuten checkt of het bestand bestaat:


code:
1
2
3
4
if (fileExists(ShutdownFile)) 
    removeFile(ShutdownFile)
    doShutdown()
endif
Het is erg tegen beveiligingsprincipes in (imho) als je met php allemaal (in Linux termen) su taken uit gaan proberen te voeren :)

  • anthonycd
  • Registratie: Februari 2006
  • Laatst online: 15-04 16:30
Spiral schreef op donderdag 20 augustus 2009 @ 09:02:
Je zou ook remote desktop kunnen doen via http. Daar zijn verschillende tools voor. Microsoft zelf heeft ook https://www.mesh.com/ moet je een applicatie installeren op je server en dan kan je via je webbrowser je remote desktop benaderen.
Win2K3 SBS heeft het er zelfs inzitten zal ik je vertellen. Standaard werkt dit dacht ik alleen op pc's achter het interne netwerk, maar je kunt ook ip-adressen toevoegen... misschien is dit een optie? Remote Web Workplace heet het dacht ik..

Zie hier : http://www.youtube.com/watch?v=aayUR43KzPI

[ Voor 4% gewijzigd door anthonycd op 20-08-2009 09:11 . Reden: youtube ]


  • PhilipsFan
  • Registratie: Oktober 2003
  • Laatst online: 22:01
TheLunatic schreef op donderdag 20 augustus 2009 @ 07:48:
[...]


Doe ik ook, maar niet vanaf elke pc kan je rdp'en (zoals op beschermde werkomgevingen) ...

Scheduled task heb ik ook over nagedacht maar dat vind ik geen mooie oplossing. Het komt hooguit eens per maand voor en dan krijg ik elke 5 minuten, elke dag (in totaal 8640 keer) terwijl het maar één keer nodig is ...
Je kunt een aparte user aanmaken met admin rechten en deze gebruiken voor de scheduled task. Dan heb je geen last van popups of dos-schermen als je zelf aangelogd bent. Een mooie oplossing is het inderdaad niet, maar het werkt... Tot iemand met iets beters komt ;)

  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:43
Wat je ook zou kunnen doen is een soort van webmin installeren voor windows, die bestaan vast en zeker wel!

Edit:
Kijk nou....er is zelfs een webmin voor windows http://www.webmin.com/windows.html

[ Voor 32% gewijzigd door LoBbY_1 op 20-08-2009 09:48 ]

Een echte golver is nooit uitgeput


  • Cascade
  • Registratie: Augustus 2006
  • Laatst online: 16-09 11:44
Is een UPS geen oplossing?

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
kun je niet een heel klein C# appje maken die gewoon netjes via de windows api's shutdown initieert op het moment dat hij uitgevoerd wordt, je hebt geen admin rechten nodig op WIndows XP/Server 2003 om een shutdown uit te voeren en volgens mij kan php prima een programma uitvoeren.

Kun je ook niet gewoon een bat bestand laten uitvoeren wat simpel shutdown doet?

~ Mijn prog blog!


  • Shagura
  • Registratie: Augustus 2001
  • Laatst online: 14-09 08:25
Ik weet niet zo veel van Win2k3 of Windows Server edities, maar in XP kan je gewoon de apache user shutdown rechten geven in Control Panel -> Administrative Tools -> Local Policies -> Local Security Settings -> Shut down the system.

  • xzaz
  • Registratie: Augustus 2005
  • Laatst online: 18-09 10:54
Ooit gemaakt met autoit / php.
Php: http://us3.php.net/manual/en/function.parse-ini-file.php
Autoit:
code:
1
2
3
4
5
6
7
8
9
10
#RequireAdmin
While 1
    InetGet("http://www.mywebsite.com/shutdown.ini", "C:\Temp\shutdown.ini")
    $check = IniRead("C:\Temp\shutdown.ini","sd","switch",0)

    if $check = 1 Then
        Shutdown(64) ;Hibernate
    EndIf
Sleep(60000) ;minuut wachten
Wend


Nu kan je ook een log bij houden met _FileWriteLog() en eventueel uploaden naar je webserver dmv FTP.
Zo is het dus zo lek als een mandje. Je kan misschien nog een 'wachtwoord' er in gooien. if wachtwoord = 92349942942 then....

[ Voor 23% gewijzigd door xzaz op 20-08-2009 11:30 . Reden: Veiligheid ]

Schiet tussen de palen en je scoort!

Pagina: 1