execve-problem
-
Hi
#include <iostream> #include <string> #include <fstream> #include <cstdlib> #include <unistd.h> using namespace std; int main(){ string eingabe = getenv("QUERY_STRING"); int pos = eingabe.find('&'); int laenge = eingabe.length(); string alias = eingabe; string user = eingabe; alias = alias.erase(0, pos+1); user = user.erase(pos, laenge-pos); pos = alias.find('='); alias = alias.erase(0, pos+1); pos = user.find('='); user = user.erase(0, pos+1); ofstream aliasdatei("/etc/aliases", ios::app); aliasdatei << alias << ": " << user << endl; aliasdatei.close(); if (fork() == 0){ char *parameter[]={"newaliases", NULL}; execve("/usr/bin/newaliases", parameter, NULL); } else{ cout << "Content-type: text/html" << endl << endl; cout << "<HTML>" << endl; cout << "<BODY>" << endl; cout << "Useralias angelegt" << endl; cout << "</BODY>" << endl; cout << "</HTML>" << endl; } return 0; }
Leider wird bei dem code newaliases nicht ausgeführt oder wenns ausgeführt wird greift es nicht ich hab kein Ahnung warum. In /etc/aliases wird alles korrekt eingetragen und wenn ich newaliases von Hand ausführe funktionierts auch, aber es muss eben aus dem Prog herraus laufen.
Tipps??
MFG eiskalt
-
prüfe doch mal execve auf Fehler und lass dir den genauen Fehler ausgeben
-
Kleine Anregung:
http://selfforum.teamone.de/archiv/1999_4/t06961.htm
-
Hi also ich hab das Problem mittlerweile gelöst
ich hab die aliases.db der gruppe www-data zugeordnet und der gruppe schreibrecht gegeben -rw-rw-r-- dann gehts allerdings bin ich mir nicht sicher ob das so ne gut lösung ist?THX eiskalt