Software mit root Rechten installieren

  • Hallo Zusammen,

    ich bin leider generell noch nicht so bewandert was das Thema Linux angeht, deshalb die generelle Frage:
    Ich möchte verschiedene Software mit so viel Rechten ausstatten, dass bei einem Aufruf beispielsweise das Kommando "sudo" davor nicht mehr notwendig ist.
    Beispiele:
    Funksteckdosen, dort habe ich die Installation soweit abgeschlossen (als user pi). Wenn ich einen "send" Befehl ausführen möchte, dann benötige ich folgendes Kommando: "sudo send 11111 1 1". Ich möchte jedoch das Kommando ohne sudo ausführen.
    pi-blaster, hier wird folgendes beschrieben: "[font="Helvetica, arial, freesans, clean, sans-serif"]this means that only pi-blaster needs to be root, your application can run as a normal user". Wie installiere ich pi-blaster also root?[/font]
    [font="Helvetica, arial, freesans, clean, sans-serif"]jetty, ich habe einen Webserver auf meinem Pi laufen, der vor der Anmeldung an den Pi automatisch gestartet wird. Dieser Webserver benötigt ebenso root Rechte.[/font]

    [font="Helvetica, arial, freesans, clean, sans-serif"]Installiert habe ich bisher immer im Verzeichnis home/pi/[/font]

    [font="Helvetica, arial, freesans, clean, sans-serif"]Danke für eure Hilfe[/font]

  • Gut das mit dem Webserver als Root ist die Notlösung.

    Der Server hat die Aufgabe nach Userinteraktion den Befehl "sudo send..." abzusetzen, jedoch funktionierte das bisher nicht. Meine Vermutung, dass es an den nicht vorhandenen root Rechten liegt.
    Jedoch brauche ich diese Informationen weiterhin für oi-blaster. Wäre also nett wenn du mir sagen könntest wie das funktioniert

  • Damit der www-data Benutzer auch sudo nutzen darf musst du diesen auch in /etc/sudoers eintragen bzw am besten den entsprechenden Befehl dort mit angeben.
    Die Datei am besten über den Befehl visudo bearbeten (wenn du anstatt vi lieber nano nutzen willst gibst du ein mal  export EDITOR=nano ein)

    Alternativ würde ich dir aber dazu raten dem www-data Benutzer nur zu erlauben ein gewissen Script auszuführen in denen dann weitere Befehle deklariert sind die er mit root Rechten ausführen darf..
    Wie das wiederum geht kannst du im Spoiler > dieses Posts < nachlesen

  • eine viel bessere möglickeit ist evtl nicht gleich deinem /var/www die 777 rechte zu geben.

    google nach public_html apache2 und befolge das tutorial.

    public_html ist ein ordner in deinem home. Der Apache hohlt sich dann dort die daten ab und startet auch dort die scripts.
    Anstatt deine webseite auf /varr/www zu legen. legst du es in public_html.

    Somit wird das mit deinem Benutzer ausgeführt.


    Zu public_html hattte ich mal ein Tutorial erstellt hier im Forum. Ich weiß nicht ob ein Admin das freigegeben hat oder nicht.

  • xenon: Und was soll das bei dem Problem mit den fehlenden Rechten helfen?

    Damit Ihr eine Möglichkeit habt, Euch von dem ganzen 'sudo'-Unsinn beim Webserver zu trennen:
    Es gibt in der Linux-Rechteverwaltung das 'SetUserIP'-Bit (suid). Das sorgt dafür, daß ein Programm nicht mit den Rechten der Users der es aufruft sondern mit den Rechten des Besitzers ausgeführt wird.
    Dazu müßt Ihr root als Besitzer für send festlegen:
    sudo chown root send
    und das s-Bit setzen:
    sudo chmod u+s send

    ein ls -l send sollte etwa folgendes ergeben:
    -rwsr-xr-x root staff 16988 dec 31 23:59 send

    Wenn es dabei Fehlermeldungen gibt, seht nach ob Ihr auch in dem Verzeichnis seid in dem send liegt. Üblicherweise kopiert man es vorher nach /usr/local/bin/.

    Einmal editiert, zuletzt von orb (29. August 2013 um 18:15)

  • Super Leute. Das hilft mir jetzt schon mal sehr denk ich.
    Ich bin mir noch unsicher ob sich mein jetty Server gleich verhält wie ein Apache. Aber das werde ich dann sehen.

    Was mich noch generell interessiert Wenn ich nun so etwas wie pi-blaster installierte und es root rechte generell bekommen soll, so wie in der installations Anleitung beschrieben. Gibt es da ein Verzeichnis wo man es generell reinpackt? Oder wie macht man das im allgemeinen?

  • Bei den ganzen Linux-Distributionen hat sich eigendlich durchgesetzt, daß die Verzeichnisse unterhalt /usr/local von keinem Update/Upgrade/Systemwechsel angefasst werden und deßhalb swollte man da sein Programme ablegen, die mehrere Benutzer nutzen sollen.
    Außerdem umgeht man so Probleme mit den Rechten die es geben kann wenn sie in irgendeinem User-Verzeichnis liegen. Da man aber inzwischen mit einer überschaubaren Anzahl von Usern arbeitet ist das nicht mehr wirklich wichtig.

  • Hallo,

    ich hoffe ich bin hier richtig gelandet und hab den richtigen Thread erwischt.

    Ich will mit dem Aufruf einer PHP-Seite eine dpkg-Datei installieren.

    So sieht meine install.sh Datei aus:

    Code
    sudo dpkg -i DATEI

    und in PHP rufe ich die Datei so auf :

    Code
    exec("./install.sh &");

    Jetzt habe ich schon heraus bekommen, weil ich dafür Root-Rechte benötige, muss ich die Datei in "sudoers" eintragen.
    Das würde ich mit folgendem Eintag machen:

    Code
    www-data ALL=NOPASSWD: /var/www/uploads/install.sh


    Jetzt hier meine Fragen:
    Funktioniert das, wenn ich diesen Eintrag in die /etc/sudoers-Datei unten einfüge?
    Ist dann wirklich nur die Datei freigegeben, das sie als Root ausgeführt wird, oder wirkt sich das noch auf andere Dateien/Ordner aus?

  • Probieren geht über Studieren


    Guck in den Spoiler hier: GPIO Ports Konfigurieren
    Und auch noch mal hier: pi mit raspberry-remote und schalten per PHP

    Dann sollte deine Frage beantwortet sein


    PS: du musst dann aber auch das Script über sudo ausführen, sonst wird das nichts...
    Und für den Fall das du Rückghabewerte haben möchtest ob die Installation geklappt hat, solltest du kein & nutzen sondern so wie ich es verwendet habe $output und/oder $return_var
    Alternativ ginge auch popen();

  • Danke.
    Also so funktioniert der Aufruf in PHP jetzt:

    Code
    exec("sudo ./install.sh", $output, $return_var);

    und ich bekomme jetzt auch die komplette Shell-Ausgabe angegeben.
    DANKE.

    Und wenn ich das richtig verstanden habe, dann wird auch nur die eine Datei mit root-Rechten ausgeführt und nichts weiteres.
    Also so wie ich es wollte.

    :thumbs1:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!