prozess unter anderem user ausführen

H

heck

Grünschnabel
Hello,

Ich baue ein programm welches andere programme starten/beenden kann.
Ein general puropose launcher.

Nun brauche ich die möglichkeit ein programm unter einem anderen user ausführen zu können.
Kann man mitten im prozess den user wechseln? oder muss ich eine art ein parametriesierter fork() oder exec() ausführen (sufork(), su exec() ???).

Vielen Dank für eure Hilfe!!
HEck
 
man 2 setuid
bsp:
Code:
....
setuid(0); // UID auf root setzen
....
setuid(getuid()); // zuruecksetzen
Wichtig: Das SUID-Flag muss für das Programm gesetzt sein und ich hoffe, du weisst was du dort tust (wahrscheinlich eher nicht, sonst müsstest du nicht fragen). Gerade Anfänger bauen so gern Sicherheitslücken ein.
 
Zuletzt bearbeitet:
jez schiists mi dänn ahh

Nein ehrlich, langsam hab ich die schnauze echt voll von all diesen blöden boarden und foren.
Wer nicht fragt bleibt dumm, deshalb frage ich gerne auch wenn ich beileibe mit 8 Jahren C++ programmierpraxis und 6 Jahren Linux / UNIX erfahrung kein "anfänger" mehr bin.

zum poster oben:
Du hast wohl nicht meine 4 posts gegen deine 4000 verglichen und gelesen Heck (grünschnabel). ahh alles klar. ein anfänger....
nein echt.

Und das ist nicht was ich will. Ich will den User wechseln so mit einem syscall vermutlich, so richtig ohne setuid bit und krimskrams.
Danke...
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

sorry, aber das nervt micht echt. oder muss ich von 100 worten 95 aus dem fachchinesisch benützen, so das das einfache problem dreifach so hoch klingt und keiner mehr den wald vor lauter bäumen mehr sieht (Ja, den wald vor lauter bäumen). Das ist bull*h*t.
Dafür wird man als als anfänger gestempelt, wenn eine vereinfachte ausdrucksweise bevorzugt und noch nie ein su (für alle anfänger: su - substitute user) (under solaris) programmiert hat...
Ich bin immer vorsichtig jemandem so ans bein zu pinkeln.
 
Zuletzt bearbeitet:
Genau das macht setuid() doch. Der Programmcode zwischen 'setuid(0);' und 'setuid(getuid());' läuft dann in diesem Beispiel als root. Trotzdem ist ein SUID-Flag notwendig, da das Programm sonst seine UID nicht ändern darf. Gibt nunmal gewisse Sicherheitsmechanismen in Linux/Unix mit denen man sich als Programmierer abfinden muss. Wenn du soviel Erfahrung hast, solltest du das eigentlich wissen. Im übrigen ist mir dein Postcount egal, würde es sogar gern sehen, wenn die einfach ausgeblendet würden, wie es z.B. im HaBo üblich ist, da ich mittlerweile schon per PM von anderen Usern gefragt werde, wenn diese ein Problem haben, was auf Dauer ziemlich nervig ist. Ich habe dich als Anfänger gesehen, da jemand, der so viel Erfahrung hat, eigentlich wissen sollte, dass er mit
Code:
man -k uid | grep "(2)"
eine Liste der möglichen Systemaufrufe bekommt.
Also nochmal zum Mitschreiben:
Code:
<sonstiger Code>

setuid(0); // UID auf root ändern

<Code der mit root-Rechten laufen soll/muss>

setuid(getuid()); // UID auf den Owner des Programms zurücksetzen

<sonstiger Code>
 
Aber es ist mir jetzt auch egal. Ich weiss was isch weiss und du hast anscheinend vergessen was du nicht weisst.
unglaublich der herr theton, aber was solls...

Ich habe dich als Anfänger gesehen, da jemand, der so viel Erfahrung hat, eigentlich wissen sollte, dass er mit
Code:
man -k uid | grep "(2)"
eine Liste der möglichen Systemaufrufe bekommt.
Also nochmal zum Mitschreiben:

Nein, habe ich nicht gewusst!!! ich habe für diesen zweck bis anhin apropos verwendet.
 
Nunja, solange deine Frage jetzt beantwortet ist... :rolleyes:
 
cool das du cool bleibst.
sorry dass es mir den deckel gelupft hat. Muss galub ein wenig sicherheitskonzepte unter unix nachholen...
 

Ähnliche Themen

centos & Gnome autostart

Prozess im Hintergrund ausführen?

Ausführbare C-Datei von Mac OS auf Embedded Linux ausführen

ca. 1200 PDF-Dateien auslesen und bestimmte Daten in eine CSV-Datei speichern

Zeile für Zeile auslesen und Befehl ausführen

Zurück
Oben