PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : User anlegen mit php über sudo



Stormsam
02-12-2003, 16:21
Hi @all,

ich habe hier einen kleinen code zum anlegen eines users mit php:


<?
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!
:confused:
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

Gaert
02-12-2003, 17:55
Schau mal in die php.ini - könnte mit dem Safemode zusammenhängen...

Stormsam
02-12-2003, 20:43
Hi!

danke für den tipp !
Mein Safe Mode Teil in der php.ini sieht so aus:

; Safe Mode
safe_mode = Off

safe_mode_gid = Off

safe_mode_include_dir =
safe_mode_exec_dir =

;open_basedir =

safe_mode_allowed_env_vars = PHP_

safe_mode_protected_env_vars = LD_LIBRARY_PATH

disable_functions =

Also wenn ich das mit der php.ini vom dem anderen server mit php 4.3.1 vergleiche ist alles genau gleich!
Ich habs zum testen einfach mal auf on gesetzt (und apache neu gestartet), hat aber nicht viel gebracht, bzw. hat gar nichts gebracht ;)

Was könnte man noch ändern?

MfG
Stormsam

Jana
03-12-2003, 20:15
Ich weiß nicht, wie oft ich es schon gesagt habe.
Mit PHP kann man keine User anlegen.
Diese Möglichkeit wurde PHP vor ca. 5 Jahren aus Sicherheitsgründen genommen. :rolleyes:

Stormsam
03-12-2003, 20:50
doch das geht!
Ich hatte es ja auf nem anderen rechner hinbekommen, nur da lief php 4.3.1.
Nun hab ich php 4.2.2.

Es ist ja eigentlich nicht direkt php sondern sudo und eine shell datei.
-> system("sudo /srv/user.sh $user $pwd $pwd1",$rc);

Es muss irgendeine Einstellung in php sein, was anderes fällt mir nicht ein, den das Shell script ansich funktioniert (wenn ich es direkt als user wwwrun in der konsole aufrufe!)

hat da vielleicht jemand noch eine idee woran das liegen könnte?

Stormsam
04-12-2003, 18:58
Hi @all,

nun habe ich mit hilfe von Gaert es hinbekommen das der befehl system funktioniert. Allerdings mit einem anderen beispiel.
Es war einfach ein Skript das den Pink ausführen sollte und diesen anzeigen sollte. Das habe ich nun hinbekommen.

Nun glaub ich nicht mehr das es an php liegt ... hat da vielleicht jemand noch eine idee?

mfG
Stormsam

Badsteve
04-12-2003, 19:54
leite doch mal die Ausgabe des Scripts / der Programme in eine Datei um.