Prozesse unter andere Benutzerid

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
Jens
Beiträge: 404
Registriert: 31.03.2004 07:51:08
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Prozesse unter andere Benutzerid

Beitrag von Jens » 21.12.2009 12:29:37

Hallo Forum,

mich würde eure Meinung interessieren zum im Betreff genanntem Thema. Ich habe eine Software die selber nicht dazu in der Lage ist per Config File unter einem anderen Benutzer zu laufen. Mein Ziel ist es jetzt das diese Software nach einem Neustart automatisch gestartet wird, in meinem Fall via rc.local. Da das ganze nicht unter Root laufen soll fallen mir pauschal nur zwei Möglichkeiten ein den Prozess unter einer bestimmten Benutzerid laufen zu lassen.

1. Owner der File ändern und SUID Bit setzen, Software startet mit den Owner Berechtigungen.
2. z.b. via su -c "/startline/progx"

Irgendwie gefällt mir das aber noch nicht so ganz, da in Variante 1 immer nur ein bestimmter Benutzeraccount genutzt wird und in Variante 2 immer ein su die ganze Zeit läuft.

Gibt es da bessere Varianten soetwas zu lösen?

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Prozesse unter andere Benutzerid

Beitrag von rendegast » 21.12.2009 13:03:13

Debiansudo
Syntax der Konfigdatei:
'man sudoers'
und /usr/share/doc/sudo/examples/sudoers.

Sicherheitstechnisch ein wenig tricky:
Erlaubtes 'Kommando+Parameter' sollte sauber definiert sein, damit ein Benutzer nicht 'Kommando+Parameter+weitereParameter' setzen kann.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

severin
Beiträge: 481
Registriert: 26.04.2005 13:30:43

Re: Prozesse unter andere Benutzerid

Beitrag von severin » 21.12.2009 14:06:28

Ich sehe nicht, was Dich an 2 stört. Ein "die ganze Zeit laufendes su" bedeutet doch in dem Fall nur, dass progx unter der neuen Nutzerkennung läuft. Die Vorsicht gegenüber "su" kommt doch daher, dass "su" im allgemeinen "su root" impliziert (oder irre ich mich da?). *Das* ist gefährlich, aber darum geht es doch hier nicht.

Benutzeravatar
Jens
Beiträge: 404
Registriert: 31.03.2004 07:51:08
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Re: Prozesse unter andere Benutzerid

Beitrag von Jens » 21.12.2009 14:42:42

severin hat geschrieben:Ich sehe nicht, was Dich an 2 stört. Ein "die ganze Zeit laufendes su" bedeutet doch in dem Fall nur, dass progx unter der neuen Nutzerkennung läuft. Die Vorsicht gegenüber "su" kommt doch daher, dass "su" im allgemeinen "su root" impliziert (oder irre ich mich da?). *Das* ist gefährlich, aber darum geht es doch hier nicht.
Das "su", mit dem gestartet wird, läuft auch so lange weiter bis der eigentliche Prozess beendet wird. Ob das jetzt schlimm ist lass ich mal dahingestellt =). Die Variante mit sudo werde ich mir aber nochmal genauer anschauen, ich denke könnte so funktionieren wie ich mir das denke :)

Danke für den Hinweiß :mrgreen:

cosmac
Beiträge: 4578
Registriert: 28.03.2005 22:24:30

Re: Prozesse unter andere Benutzerid

Beitrag von cosmac » 22.12.2009 01:05:26

hi,

falls du cron laufen hast, kannst du das Programm auch aus /etc/crontab heraus starten:

Code: Alles auswählen

@reboot  jens  /pfad/zum/programm
Eigentlich brauchen wir doch eine abgespeckte Version von su. Es ist doch kaum mehr nötig als:

Code: Alles auswählen

setgid (gid);
setuid (uid);
execve ("/pfad/zum/program", args, env);
warum gibt es sowas nicht fertig?
Beware of programmers who carry screwdrivers.

pferdefreund
Beiträge: 3800
Registriert: 26.02.2009 14:35:56

Re: Prozesse unter andere Benutzerid

Beitrag von pferdefreund » 22.12.2009 07:28:02

Sowas hb ich mir schon vor Monaten geschrieben, inclusive
Abgleich mit /etc/password und Userid 0 (root) wird nicht zugelassen.
Damit starte ich eigene Daemons usw mit der entsprechenden userid.
Das Teil heißt bei mir runas. Die libpferd wird nur für das Entfernen
des \n am Befehlsende usw gebraucht - läßt sich sicherlich auch
anders regeln. Ist auch sicherlich, da ich aus der Z/OS-Welt komme und
mir C selbst beigebracht habe, nicht wirklich perfekt - aber es funktioniert
problemlos..

Code: Alles auswählen

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <libpferd.h>

char udatum[] = __DATE__;
char uzeit[] = __TIME__;
char befehl[2048];
uid_t nuserid;
int extuserid;
int rc = 0;
void hoerauf(void);
int main (int argc, char *argv[]) {
printf("RZ der Pferdefreunde Lindheim - Runas - Version 0.1\n");
printf("%s%s%s%s\n","Umandlumg am ",udatum,"-", uzeit);
if (argc != 3) {
printf("Nur 2 Argumente erlaubt\n");
printf("1. Argument - Usernummer\n");
printf("2. Argument - Befehlsstring in \"\n");
printf("   Beispiel runas 222 \"befehl arg1 arg2\"\n");
rc = 1;
hoerauf();
}
extuserid = atoi(argv[1]);
printf("%s%i\n","Userid = ",extuserid);
strcpy(befehl,argv[2]);
nonewline((char *) &befehl);
printf("%s%s\n","Befehl = ",befehl);
nuserid = extuserid;
if (nuserid == 0) {
printf("Userid Root aus Sicherheitsgruenden nicht erlaubt\n");
rc = 1;
hoerauf();
}
rc = setuid(nuserid);
if (rc != 0) {
printf("Wechsel Userid dumm gelaufe\n");
hoerauf();
}
rc = system(befehl);
hoerauf();
return 0;
}
void hoerauf(void) {
printf("%s%04i\n","Programm-Ende Runas - RC:", rc); 
exit (rc);
}


Clio

Re: Prozesse unter andere Benutzerid

Beitrag von Clio » 22.12.2009 13:16:43

Pferdefreund hat geschrieben:
Die libpferd
Da kommt man ja direkt ins wiehern...... :P

und
"Umandlumg am ",udatum
soll bestimmt Umwandlung heißen....oder?

pferdefreund
Beiträge: 3800
Registriert: 26.02.2009 14:35:56

Re: Prozesse unter andere Benutzerid

Beitrag von pferdefreund » 23.12.2009 07:06:29

Soll wirklich Umwandlung heißen - aber mit solchen Programmfehlern
kann ich leben. Ja, die libpferd liefert einige Hilfsroutinen, um mir
das Leben mit C etwas leichter zu machen. Da gibts dann auch
einen inspect wie im Cobol, einen MVC für Strings, wie im Assembler
und ähnliche Dinge, z. B Datumsformatierungen, Systemdatum usw...

cosmac
Beiträge: 4578
Registriert: 28.03.2005 22:24:30

Re: Prozesse unter andere Benutzerid

Beitrag von cosmac » 23.12.2009 12:23:41

besonders schön finde ich ja

Code: Alles auswählen

printf("Wechsel Userid dumm gelaufe\n");
das ist noch echte Assembler-Tradition, jedes Byte zählt :D
Beware of programmers who carry screwdrivers.

pferdefreund
Beiträge: 3800
Registriert: 26.02.2009 14:35:56

Re: Prozesse unter andere Benutzerid

Beitrag von pferdefreund » 23.12.2009 13:10:57

Tja, so war das früher - wir haben sogar bei gepacken Datumsfeldern
das Vorzeichen im rechten Halbbyte entfernt und so bei Meldezeiten z. B
pro Datumsfeld ein Byte gespart - bei Millionen von Datensätzen hatte sich
das gerechnet. Da wurden aus 4 Byte für dec fixed 7 dann 3 Byte - und
das pro Datumsfeld - da kamen schon ein paar MB zusammen...
Byte 1 2 3 4
Original war hex 0881220C für das 6-stellige datum 881220 (20.12.1988)
881220

cosmac
Beiträge: 4578
Registriert: 28.03.2005 22:24:30

Re: Prozesse unter andere Benutzerid

Beitrag von cosmac » 23.12.2009 13:46:44

genau so geht's, deshalb werde ich auch nie verstehen, warum die 12- und 24-Bit Architekturen so gut wie ausgestorben sind. Die Wortbreiten passen viel besser zum wirklichen Leben als 8 oder 16 Bit. Obwohl, DEC hat auf der PDP11 statt ASCII RAD50 verwendet. Damit passen drei Zeichen in ein 16-Bit Wort und wer braucht schon Kleinbuchstaben oder Sonderzeichen. Jedenfalls gab's keinen Stress mit Zwischenraum in Dateinamen.
Beware of programmers who carry screwdrivers.

Antworten