Raspbian Autostart: Anwendung als Root ausführen

  • Hallo,

    ich versuche schon seit einiger Zeit eine, in Lazarus geschriebene, grafische Anwendung automatisch mit Root-Rechte zu starten.

    Das ganze läuft auf einem RaspberryPi mit Touchscreen und soll später stand alone, also ohne Netzwerk, Internet laufen. Da der RaspPi keine Uhr hat, die auch im abgeschalteten Zustand läuft, soll das auszuführende Programm beim Programmstart die Systemzeit setzen (über eine Eingabemaske wird Zeit und Datum vom Benutzer abgefragt). Dazu sind ja Root-Rechte von Nöten.


    Und so schaut zur Zeit meine .desktop-Datei aus (/home/pi/.config/autostart/kasse.desktop)
    Code: Alles auswählen
    [font="monospace"]
    [Desktop Entry]
    Name="Kasse"
    Comment="simple Cashdesk"
    Type=Application
    Path=/home/pi/Projekte/Kasse/
    Exec=/home/pi/Projekte/Kasse/Registrierkasse
    #Terminal=false
    [/font]


    Also wie kann ich das Programm automatisch als Root starten lassen?

  • Servus Thandor,
    warum als root? Ganz schlechte Idee ... sollte man, wenn möglich, vermeiden ...

    Es muss halt ein Benutzer angemeldet sein, damit das Programm läuft ...
    Hast Du schon probiert über raspi-config "Automatisches Anmelden als User pi am Desktop" zu aktivieren?
    Danach läuft's halt unterm Nutzer pi ...

    cu,
    -ds-

  • Hallo dreamshader,

    der Benutzer pi wird automatisch angemeldet. Mit der obigen .desktop wird das Programm auch ausgeführt. Jedoch funktionierte das Zeitsetzen nicht.

    Ich habe es jetzt anders gelöst. Was denke ich besser und sauberer ist. Ich setzte jetzt von der Anwendung eine Kommandozeile ab "sudo date -s ...".

    danke für deine Mühen

  • Da ich das ganze für einen Kumpel mach muss ich erst ein mal mit ihm darüber reden. Eine RTC wäre natürlich die sauberste Lösung. Aber das ganze System soll eigentlich ständig laufen und nur selten herunter gefahren werden, deswegen ist die manuelle Zeiteingabe jetzt nicht all zu schlimm und eben billiger.

    Leider habe ich bisher keine gute, vertrauenswürdige Quelle für so ein Modul gefunden (Aus China (ebay) habe ich momentan die Nase voll und aus DE (Amazon) übersteigen die Versandkosten den Artikelpreis)

  • Hi,


    ... keine gute, vertrauenswürdige Quelle für so ein Modul gefunden ...


    hast Du die Links oben übersehen?

    //EDIT: wenn der eh fast immer an ist ... wäre zu überlegen statt einer Knopfzelle einen kleinen LiPo Akku zu verwenden. Müsste man nur sehen, wie man das inkl. Ladelogik als kleines (Prototypen-) Platinchen realisiert.
    cu,
    -ds-

  • Und ne kleine DCF77 Empfängereinheit wäre keine Option ??

    ;) Gruß Outi :D
    Pis: 2x Pi B (Rente) / 1x Pi B+ (Rente) / 1x Pi 2 B (Rente) / 2x Pi 3 B (RaspberryMatic / Repetier Server) / 2x Pi Zero 1.2 (B. Lite) / 2x Pi Zero 1.3 (B. Lite) / 2x Pi Zero W 1.1 (B. Lite) / 1x Pi Zero 2 (mal so, mal so) / 1x Pi 3 B+ (Tests) / 1x Pi 4 B 4GB (BW Lite (Webserver)) / Pi 400 (BW) / 1x Pi 5 (BW) / 2x Pi Pico / 2x Pi Pico W
    Platinen: Sense HAT / HM-MOD-RPI-PCB / RPI-RF-MOD / PiFi DAC+ V2.0 / TV HAT / Pi 5 Kühler HAT
    Kameras: orig. Raspberry Pi Camera Module V1 & V3 / PS3 Eye

  • Ich hatte ein ähnliches Problem:
    Absetzen eines WakeUp-Befehls. Das geht m.W. nur mit root-Rechten, sollte aber "per Knopfdruck" vom Desktop aus passieren.

    Folgende Anweisung hat mich weiter gebracht:

    Code
    su-to-root -X -c <command>

    Falls su-to-root nicht installiert ist, nachinstallieren mit:

    Code
    sudo apt install menu

    Dein Code sollte dann so aussehen:

    Code
    [Desktop Entry]
    Name="Kasse"
    Comment="simple Cashdesk"
    Type=Application
    Path=/home/pi/Projekte/Kasse/
    Exec=su-to-root -X -c /home/pi/Projekte/Kasse/Registrierkasse
    Terminal=false
    StartupNotify=false
  • Das wären alles Optionen. Ich habe mit meinen Kumpel, für dem ich das Projekt mache, gesprochen. Es soll erst einmal kein weiteres Geld ausgegeben werden.

    Ich danke euch für eure vielen Empfehlungen.

    Was mein Problem anbelangt habe ich ein Möglichkeit gefunden die Uhr zu stellen ohne das ganze Programm als Root zu nutzen. Ich setze einen Kommando ab, welches dann als einziges als Root läuft.


    Als FreePascal-Code

    Code
    RunCommand(
         'sudo',
         ['date', '-s', FormatDateTime('mmm dd, yyyy hh:nn:ss', DateTime)],
         CmdResponse
      )


    =
    Shell

    Code
    sudo date -s Jan 12, 2017 22:53:38

    Die RTC und die DCF werde ich im Hinterkopf behalten, falls mein Kumpel doch merkt, das der aktuelle Status nicht so der tollste ist.

Jetzt mitmachen!

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