Rootrechte ohne sudo/Programm im Hintergrund

Hallo zusammen,

ich habe ein Programm geschrieben, das eine Socketverbindung aufbaut.
Wenn ich es starten will muss ich immer “sudo ./programm 1468“ eingeben.
Gibt es eine Möglichkeit das Programm mit root Rechten auszuführen ohne dass ich sudo davor schreiben muss ?

Ich verwende es zusammen mit dem Befehl „nohub“ damit das Programm im Hintergrund läuft. Aber leider kommt es dann immer zu Problemen wenn ich „sudo nohub ./programm 1468“

Kann mir einer helfen ?

Vielleicht hängt Dein Problem mit “nohub” eher damit zusammen, dass es nohup heißt?

Oh dann hab ich mich hier vertippt. Ich meine natürlich nohup

Ist es wichtig, dass es sich um genau diesen Port handelt? Oberhalb von Port 2048 kannst du die nämlich ohne sudo öffnen. Ansonsten hat dein “root” einen anderen Pfad, so dass es u.U. nötig ist den kompletten Pfad zu nohup anzugeben, da es nicht automatisch gefunden wird.

EDIT: natürlich Mumpitz Ports < 1024 sind nur durch root nutzbar.

Es gibt da Möglichkeiten - das sogenannte setuid-Bit. Das tut aber normalerweise für Shell-Skripte nicht - aus Sicherheitsgründen. Jetzt wäre also die Frage, was für eine Art Programm Du da geschrieben hast?

Yeah mit ner anderen Portnummer läuft es ohne root. Sehr nice.

Aber es bleibt immer noch ein Problem mit dem “nohup”.

Ich erklär euch mal kurz was mein Programm macht:

Das Programm wartet bis ein Befehl von nem anderen Rechner über eine Socketverbindung kommt.
Gibts dann den Namen des Befehlts aus und führt ihn aus
Grundversion ist: linuxhowtos.org/C_C++/socket.htm

es kommt folgendens beim ausführen:

mac:Test maxpower$ nohup /Users/maxpower/programm 1525
appending output to nohup.out

und dann anstatt es verschwindet, bleib das Terminal offen und das Programm läuft weiter und gibt auch fleisig seine Meldungen auf dem terminal aus.

…was würde denn passieren, wenn Du es mit einem Kaufmanns-Und im Terminal startest? Also

./programm 1525 &

…ggf. das & auch hinter der nohup-Zeile?

Braucht noch ein exit Bin mir aber nicht sicher ob das im Script funktioniert…

Uh - nein, ein exit ist glaube ich nicht das, was wir brauchen - zumal es ja um ein C-Programm geht, wenn ich das richtig verstanden habe?

? Aber das Programm ruft das Terminal auf, das geschlossen werden soll: exit. Aber ich lasse mich gerne eines besseren belehren, Herr Lehrer. ;))

Ich hab was gefunden:

wenn ich ./programm 1623 & eingeb und dann ctrl a und d drücke läuft es 1A im Hintergrund. Aber wie kann ich das in einem Script automatisieren ?

Geht das irgendwie mit “screen” ?

zu meinem Programm:

Es läuft im Terminal, wartet auf Befehle und gibt nichts aus, sondern führt AppleScripts aus

;-P

Ja, an screen hatte ich auch schon gedacht. Nur: wie willst Du denn das Programm eigentlich starten? Per Mausklick?