Dienste als non-root ausführen...

heady

heady

Routinier
Hi, wie ist es möglich, Dienste, die man sonst nur als root starten/stoppen... kann, als normaler User starten zu lasen.

Konkret ein Beispiel: ich möchte als User Samba starten lassen, ohne dass ich mich jemals als root sudo'e und den Dienst so starte?

Die Dienste liegen in Gentoo üblicherweise unter /etc/init.d/...

sag mal jetz schon Danke
mfg
heady
 
1. Man könnte die Zugriffsrechte dieser Dienste ändern.
2. Man schreibt sich ein kleines Script das mit ausführbar mit s (=superuser) gekennzeichnet wird.
 
2. Man schreibt sich ein kleines Script das mit ausführbar mit s (=superuser) gekennzeichnet wird.


Müsste es nicht reichen, beim Start-script unter /etc/init.d das suid-Bit zu setzen?

Probiers einfach mal.
 
Hallo

Mit dem Befehl sudoers kannst du festlegen,
wer was ausführen darf. Die dazugehörige Datei
findest du unter "/etc/sudoers".
man sudoers

Gruß Lumpi
 
Ich glaube heady meinte ein Lösung ohne "sudo".

@heady

Lieg ich da falsch?
 
Eine Lösung ohne sudo wird bei Samba nichts, da der Ports <1024 nutzt. Diese darf aber nunmal nur root nutzen. Da hilft auch alles Ändern von Rechten nichts. Und das suid-Bit bringt nichts, solange das Programm selbst kein setuid() aufruft.
 
Rechte umbiegen gut?

Eine Lösung ohne sudo wird bei Samba nichts, da der Ports <1024 nutzt. Diese darf aber nunmal nur root nutzen. Da hilft auch alles Ändern von Rechten nichts.
Was ja auch seinen Sinn hat... irgendwie wollen immer alle möglichen Leute umgehen, daß Linux zwischen Admin, User und Diensten trennt. Das ist doch aber der Sinn der Sache, daß eines davon nicht ohne Weiters im Kontext des anderen im System herumläuft....
Und das suid-Bit bringt nichts, solange das Programm selbst kein setuid() aufruft.
Könnte man nicht ein Script "smb_on" schreiben, das seinerseits ihm gehört und dann "sodo /etc/init.rd/smb start" macht und ihm das ganze in sodoers ohne Paßwort erlauben? Hab ich jetzt nicht ausprobiert... kommt die Idee rüber?
 
Zuletzt bearbeitet:
Könnte man nicht ein Script "samba_on.sh" schreiben, das seinerseits ihm gehört und dann "sodo /etc/init.rd/smb start" macht und ihm das ganze in sodoers ohne Paßwort erlauben? Hab ich jetzt nicht ausprobiert... kommt die Idee rüber?
Hallo

Wenn du Mittels sudo ;) "was auch immer" starten / beenden darfst
kannst du das natürlich in Scripte einbauen.
Aber das hat dann nichts mit dem suid-Bit zu tun ;)

Gruß Lumpi
 
Nur eine Möglichkeit...

Aber das hat dann nichts mit dem suid-Bit zu tun ;)
Nein, aber damit, daß heady unbürokratisch einen Dienst starten will, und das ginge so, ohne an Rechten rumzuschrauben und suid-Bits zu setzen. Nur eine Möglichkeit, mehr nicht. :)

Heady gibt dann einfach ein ./smb_on und schwupp...
 
ui ui...da habe ich ja eine große diskussion angezettelt...
danke erstmals - ich werde mir mal eure lösungen ansehen...

außerdem meinte ich ja jetzt nicht nur samba...
das selbige wäre toll für meinen apache und firebird server...

also würde ich eher nach einer allgemeinen lösung suchen...

an SUDOERS habe ich auch schon gedacht, da werde ich mal ein wenig
googlen

mfg heady
 
Die sudoers wird deine einzige Möglichkeit sein, da auch Apache per Default Ports <1024 (nämlich Port 80) nutzt. Schau einfach mal in 'man sudo' und 'man sudoers'. :)
 
Die Dienste liegen in Gentoo üblicherweise unter /etc/init.d/...

Wenn die Dienste schon in /etc/init.d liegen, kannst Du sie doch bequem beim Booten starten lassen, ohne einen Finger zu kruemmen, wenn Du sie in das entsprechende runlevel-Verzeichnis verlinkst. Wieso moechtest Du das nicht tun?
 
Naja, was ist, wenn der Dienst gestartet ist? Dann möcht ich ihn ja hin und wieder (kann ja mal vorkommen :) ) neustarten...aber es ist egal, ich habs bereits gelöst...

Ein Eintrag in /etc/sudoers und es funktioniert wunderbar...
 
Man kann keinem Script das suid-Bit setzen. Selbst wenn es geht dann würde das ignoriert werden! Wenn unsicheres suid, dann die Binaries selbst. Würde ich nicht machen wollen.

Eine Lösung ohne sudo funtioniert mittels Portforwarding:

Starte den beliebigen Dienst auf localhost Port > 1024. Datei- und Verzeichnisrechte ggf. auf den Applikationuser anpassen (nur wo er schreiben muss, sont nix! weniger ist mehr) Ein globaler Dienst in den Start- Stop- Diensten laufen lassen der verschieden Ports umbiegt. z.b. localhost:1234 ->extern-Interface:136
Dafür gibt es iptables-Rules oder kleine Hilfsprogramme die nur Ports "umbiegen".
 

Ähnliche Themen

Keine grafische Oberfläche (Debian Installation)

Routing Problematik

Linux Kernsystem absichern durch Chroots und gute Rechtevergabe

Displayport + externer Monitor zeigt bei startx nichts erst bei DVI

Samba Ordner&Rechte struktur Hilfe!

Zurück
Oben