wie immer melde ich mich wenns ein problem gibt.
diesmal ist SUDO schuld daran.
problem: auf meinem server läuft suse mit apache. apache user ist 'http-www'. für ein administratives script ist es notwendig dass http-www user anlegen und deren passwort ändern kann, deshalb greife ich auf sudo zurück. der sudoers eintrag dazu schaut folgendermaßen aus:
Code: Select all
http-www ALL = NOPASSWD: /usr/sbin/useradd, /usr/bin/passwd [A-z]*, !/usr/bin/passwd root
code:
Code: Select all
<?
$command = 'sudo -u root /usr/sbin/useradd john-doe';
$cmd = escapeshellcmd($command);
system($cmd);
?>
okey problem 2: des script soll nach dem anlegen des users das passwort ändern. sprich sudo -u root /usr/bin/passwd john-doe. allerdings erwartet ja passwd eine (eigentlich 2..) eingabe/n. wie kann ich passwd dazu bringen mit nur einem befehl das passwort zu ändern?
eine möglichkeit währe "expect", damit hab ich früher mal gearbeitet, mit diesem tool kann man shellscripte schreiben die nach einer bestimmten ausgabe selbstständig weiterarbeiten.. allerdings bin ich trotzdem auf der suche nach alternativen.
hat jemand lösungen/vorschläge?
grüße und danke im vorraus
j.w.