Marius: Programm unter Linux als root ausführen lassen

Beitrag lesen

Hi!

Ich habe die Verknüpfung mit gksu erstellt und es funktioniert so wie ich mir das vorgestellt habe. Herzlichen Dank!
Die anderen Vorschläge werde ich mir auch noch anschauen. Danke auch dafür!

Wegen Sicherheitsproblemen mache ich mir weniger Sorgen. Dafür ist ist die Passwortabfrage ja da. Das Programm selbst startet und stopt mir auch nur den Apache. Also nichts was sich tief im System bewegt.

Wen es interessiert:

#include <gtkmm.h>  
  
void onStart();  
void onRestart();  
void onStop();  
Gtk::Label statusInfo("");  
  
int main(int argc, char* argv[]){  
    Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "");  
  
    Gtk::Window window;  
    window.set_title("Apache Control Panel");  
    window.set_position(Gtk::WIN_POS_CENTER);  
  
    statusInfo.set_width_chars(15);  
  
    Gtk::Grid layout;  
  
    Gtk::Button startButton("Start Apache");  
    startButton.signal_clicked().connect(sigc::ptr_fun(&onStart));  
  
    Gtk::Button restartButton("Restart Apache");  
    restartButton.signal_clicked().connect(sigc::ptr_fun(&onRestart));  
  
    Gtk::Button stopButton("Stop Apache");  
    stopButton.signal_clicked().connect(sigc::ptr_fun(&onStop));  
  
    layout.attach(startButton, 0, 0, 1, 1);  
    layout.attach(restartButton, 0, 1, 1, 1);  
    layout.attach(stopButton, 0, 2, 1, 1);  
    layout.attach(statusInfo, 1, 0, 1, 1);  
    layout.show_all();  
  
    window.add(layout);  
    return app->run(window);  
}  
  
void onStart(){  
    statusInfo.set_text("Apache startet");  
    system("/etc/init.d/apache2 start");  
}  
  
void onRestart(){  
    statusInfo.set_text("Apache restartet");  
    system("/etc/init.d/apache2 restart");  
}  
  
void onStop(){  
    statusInfo.set_text("Apache stoped");  
    system("/etc/init.d/apache2 stop");  
}

Das ist zwar nicht besonders schön (vor allem weil es keine wirkliche Rückmeldung über Erfolg/Fehlschlag gibt), aber es erfüllt seinen Zweck für mich und reicht mir deshalb eigentlich auch.

Danke für eure Hilfe!