Toon posts:

[php] Paswoord wijzigen via php in crontab.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een php script waarmee een gebruiker zijn of haar wachtwoord kan wijzigen. Het nieuwe wachtwoord wordt hierbij opgeslagen in een MySQL database. Een ander .php script wordt aangeroepen via de crontab en lees vervolgens de database weer uit. (php als cgi geinstallerd).

Ik doe dit omdat de crontab root rechten heeft en dus commando's m.b.t. gebruikers kan uitvoeren.

Als ik nu een wachtwoord wijzig en via SSH het script aanroep dan gaat alles perfect en wordt het wachtwoord gewijzigd. Nu wordt het script om de 5 min uitgevoerd in de crontab en worden de wachtwoorden niet meer gewijzigd? Ik heb geen flauw idee waarom hij dit nu niet meer doet, ik heb de uitvoer al naar een bestand laten "printen" om te kijken of hier fouten in zaten, maar ik kan helaas niks vinden.

Ik weet zeker dat het script uitgevoerd wordt, want de de status van het record wordt ook van "change" op "ok" gezet via het script.

Wie heeft er een idee waarom bepaalde commando's niet worden uitgevoerd binnen dit php bestand. Hier onder een stuk code.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
    // script om ww te wijzigen (ff ingekort)
    $username = $row['LOGIN'];  // gegevens uit DB
    $pass = $row['PASSWORD'];  // gegevens uit DB
    $pass = crypt($pass); 
    $pass = escapeshellarg($pass);

    $command = "ps -U ".$username." | gawk '\$1 != \"PID\" { printf \"kill -9 %s\\n\",\$1 }' | sh"; // kill if user is logged.

    system($command);

    $command = "usermod -p $pass $username";
    system($command);


dus...
de crontab voert het script wel uit, iig de SQL queries maar het commando usermod weer niet? en dat is alleen via de crontab, als je het bestand zo aanspreekt wel.

Heeft dit iets met rechten te maken?

edit:

Nu ik zo de regels en verzoeken (uit verveling) eens lees zie ik dat dit topic volgens mij beter naar Non windows Operating systems kan worden gemoved.
*** Batch en shell script topics ***

[ Voor 22% gewijzigd door Verwijderd op 30-09-2003 20:32 ]


Verwijderd

Topicstarter
niemand?

  • ge-flopt
  • Registratie: Februari 2001
  • Laatst online: 21:41
en wat krijg je als je de output van system($command); redirect naar een bestand, zodat je kunt loggen?

Verwijderd

Topicstarter
ge-flopt schreef op 02 October 2003 @ 14:09:
en wat krijg je als je de output van system($command); redirect naar een bestand, zodat je kunt loggen?
dat heb ik ook geprobeerd, maar is niks te zien... hij voert de commando's gewoon niet uit. als ik hem via de shell aanspreek dan doet die wel?

dus met: php4 bestand.php
(en ja, in de crontab staat alles incl path)

  • ge-flopt
  • Registratie: Februari 2001
  • Laatst online: 21:41
even een wijsheidje: staat hij niet toevallig op de laatste regel zonder een enter erachter?

  • tech-no-logical
  • Registratie: December 2000
  • Laatst online: 24-04 14:10
je hebt toevallig niet 'safe_mode = on' in je php.ini en de 'safe_mode_exec_dir' niet goed geset ? ik weet niet zeker of dit invloed heeft op het aanroepen van php via de shell (of cron), maar om het uit te sluiten zou je er even naar kunnen kijken...

Verwijderd

Topicstarter
tech-no-logical schreef op 02 oktober 2003 @ 23:39:
je hebt toevallig niet 'safe_mode = on' in je php.ini en de 'safe_mode_exec_dir' niet goed geset ? ik weet niet zeker of dit invloed heeft op het aanroepen van php via de shell (of cron), maar om het uit te sluiten zou je er even naar kunnen kijken...
safemode staat uit.

  • whoami
  • Registratie: December 2000
  • Laatst online: 30-04 15:31
P&W -> NOS

https://fgheysels.github.io/


  • mocean
  • Registratie: November 2000
  • Laatst online: 30-03 18:32
ge-flopt schreef op 02 oktober 2003 @ 23:31:
even een wijsheidje: staat hij niet toevallig op de laatste regel zonder een enter erachter?
In je crontab dus, das wel belangrijk namelijk!

Koop of verkoop je webshop: ecquisition.com


Verwijderd

Topicstarter
mocean schreef op 03 October 2003 @ 16:17:
[...]

In je crontab dus, das wel belangrijk namelijk!
Nee ook niet

Verwijderd

Topicstarter
Het script wordt wel uitgevoerd, alleen worden de commando's die met het php commando "system" worden uitgevoerd niet uitgevoerd. De rest voert hij ook uit, dus aan de crontab ligt het niet.

Met php kun je gebruik maken van de commando's 'system' en 'exec' om iets uit te voeren? zit hier verschil in?

en het rare is dat als ik het php via de console aanroep met "php4 script.php" hij de system commando's wel uitvoerd.

  • ge-flopt
  • Registratie: Februari 2001
  • Laatst online: 21:41
En als je php4 voor het script in je crontab zet?

Verwijderd

niet dat ik zo bekend ben met php, maar moet je niet het volledige pad opgeven naar die commando's?
Vaak draait cron in een zeer karige shell zonder zoekpaden...

  • sebas
  • Registratie: April 2000
  • Laatst online: 16-12-2025
Check je mail!

Nee, serieus, check eens de locale mail van root, output door crontab gegenereerd wordt naar de betreffende user gemaild. Daarnaast zou je even je crontab kunnen laten zien, misschien dat er dan nog wat opvalt. Je kunt in je crontab ook STDOUT EN STDERR naar aparte files sturen (met > resp 2>), en dan kijken of er nog iets gebeurt. Probeer het anders ook eens met usermod --help in je php script aan te roepen, dan kun je in elk geval makkelijk traceren waar je output terecht komt. Volledige pathnames moeten natuurlijk ook in je crontab.

Everyone complains of his memory, no one of his judgement.


  • Mark
  • Registratie: Juni 1999
  • Laatst online: 22:58
Zorg ervoor dat je in dat php script ook volledige path's gebruikt naar OS commando's. In jou geval dus bijvoorbeeld:

code:
1
$command = "usermod -p $pass $username";


Vervangen in (met natuurlijk het goede path voor jou installatie:

code:
1
$command = "/usr/sbin/usermod -p $pass $username";

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

php.net/exec
php.net/system

Probeer anders eens
PHP:
1
shell_exec('ls -al');
in je script op te nemen om te testen of dit sowieso wel werkt? Dit is toch standaard debugwerk :?

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Verwijderd

Topicstarter
Mark schreef op 04 October 2003 @ 03:26:
Zorg ervoor dat je in dat php script ook volledige path's gebruikt naar OS commando's. In jou geval dus bijvoorbeeld:

code:
1
$command = "usermod -p $pass $username";


Vervangen in (met natuurlijk het goede path voor jou installatie:

code:
1
$command = "/usr/sbin/usermod -p $pass $username";
je kunt nog wel eens gelijk hebben :-)
ben er nu even mee aan het testen, maar tot nu toe werkt het.

  • Mark
  • Registratie: Juni 1999
  • Laatst online: 22:58
Verwijderd schreef op 04 oktober 2003 @ 10:01:
[...]


je kunt nog wel eens gelijk hebben :-)
ben er nu even mee aan het testen, maar tot nu toe werkt het.
Natuurlijk heb ik gelijk :) Als je iets vanuit een cronjob start word er geen shell gestart en zullen er dus ook geen profile bestanden worden uitgevoerd. Hierdoor zal er dus ook geen PATH worden gezet en moet je dus zelf volledige paden opgeven (of een PATH statement in je script).
Pagina: 1