Hi @all,
ich habe hier einen kleinen code zum anlegen eines users mit php:
Code:
<?
if(isset($send)){
if(empty($err)){
$pwd=crypt($pwd1);
system("sudo /srv/user.sh $user $pwd $pwd1",$rc);
if($rc==0){
} else {
$err="Bitte wählen Sie einen anderen Usernamen<br>";
unset($user);
unset($send);
}
} else {
unset($send);
}
} else {
# init vars
$user=$pwd1=$pwd2="";
}
?>
<?if(!isset($send)):?>
<?if(isset($err)) echo "$err<p>"?>
<form action="<?=$PHP_SELF?>" method="GET" enctype="multipart/form-data" onSubmit="return chkForm()">
<input type="hidden" name="send" value="1">
<input type="hidden" name="uid" value="<?=md5($uid)?>">
Username:<br><input type="text" name="user" value="<?=$user?>"><br>
Passwort:<br><input type="password" name="pwd1" value="<?=$pwd1?>"><br>
Passwort wiederholung:<br><input type="password" name="pwd2" value="<?=$pwd2?>"><br>
<input type="submit" value="anlegen"><br><br>
</form>
<?else:?>
fertig
in der .sh datei steht einfach der befehl:
/usr/sbin/useradd -d verzeichnis $PASSWORD $USER
in der /etc/sudoers steht auch:
wwwrun linux=NOPASSWD: /srv/user.sh
Wenn ich die shell datei direkt über die konsole (als user wwwrun) aufrufe funktioniert diese auch! (also er legt einen user an)
Wenn ich nun aber die php datei aufrufe macht er nichts! Er legt den User nicht an!
Nur wieso?
Apache nutzt (laut der httpd.conf) auch den user wwwrun.
Imi Skript selber sind auch keine fehler.
Auch wenn ich den befehl exec anstatt sytsem nehme funktioniert es nicht!
Ich hatte das Skript auch schon einmal am laufen!
Den einzigsten unterschied den ich jetzt seh ist nur, das ich früher (wo es funktioniert hatte) php 4.3.1 hatte und nu hab ich nur php 4.2.2. Funktioniert irgendein Befehl im Skript (siehe oben) bei 4.3.1 und bei 4.2.2 nicht ? Aber dann müßte ich doch eine Fehlermeldung o.ä. kriegen.
Würd mich freun wenn ihr mir da helfen könntet
MfG
Stormsam
Lesezeichen