Seite 1 von 1

Prüfroutine zu Benutzerrechten

Verfasst: 27. November 2009 23:08
von TeaAge
Hallo zusammen,

ich wollte mir ein wenig das Programmieren beibringen und hab mich ins kalte Wasser gestürzt. Ich hab mir ein C++ Buch gekauft und mir etwa die ersten 300Seiten durch gelesen um die Grundladen und das Prinzip der OOP zu verstehen.
Naja, mit diesen Kenntnissen versuch ich mich jetzt an Qt. Gott sei dank ist die Dokumentation dazu nun wirklich hervorragend.

Ich wollte jetzt also ein kleines Zusatzprogramm zur Softwareverwaltung unter Linux schreiben. Es listet scheinbar nicht mehr benötigte Pakete in einer Tabelle auf, das klappt auch wunderbar. Aus der Tabelle kann man dann ein Paket auswählen, was man behalten möchte, es also als "benötigt" makieren ... auch das klappt schon, allerdings brauche ich dafür Root-Rechte.
Ich wollte jetzt also am Anfang eine Prüfroutine schreiben, die prüft ob die Rechte ausreichen und im Zweifelsfall mit kdesu das Programm neustartet.

Bisher sieht meine main.cpp wiefolgt aus:

Code: Alles auswählen

#include <QtGui/QApplication>
#include "qt4urpmi.h"
#include <iostream>

int main(int argc, char *argv[])
{
    uid_t uid = getuid();
    char buffer;
    getcwd(&buffer,99);
    std::string cmd("/usr/lib/kde4/libexec/kdesu ");
    cmd+=*argv;
    std::cout << cmd <<  "\n";
    if (uid != 0) {
        system(cmd.c_str());
        return 0;
    }
    QApplication a(argc, argv);
    qt4urpmi w;
    w.show();
    return a.exec();
}
Beim Programmstart wird also die BenutzerID abgefragt und, falls nicht als root gestartet, mit kdesu neugstartet.
Allerdings bringt mich das in eine Endlosschleife, weil sich mit kdesu nicht die verwendete UID ändert.

Wie könnte ich so eine Abfrage anders gestallten?

Gruß,
TeaAge