Frank E. schrieb:
Ich habe eine GUI-App geschrieben, die auf einem Raspi4 unter Raspian
mittels Autostart-Option gleich nach dem Boot loslaufen soll. Das habe
ich mit einem Eintrag in:
1 |
> sudo nano /etc/xdg/lxsessions/LXDE-pi/autostart (Enter)
|
2 |
>
|
und
1 |
|
2 |
> @/home/userfolder/filefolder/appfolder/appname
|
3 |
>
|
Diese Sache mit dem @-Präfix hat Dir hmmm bereits erklärt, daher möchte ich nur auf einige andere Möglichkeiten hinweisen.
Wenn Du die Applikation über /etc/xdg/lxsessions/LXDE-pi/autostart startest, wird sie als Benutzer "root" mit all seinen Privilegien gestartet. Da das in der Regel aus Sicherheitsgründen keine sonderlich gute Idee ist, existieren mehrere Möglichkeiten, um das zu verhindern:
Zunächst kannst Du das Programm als Benutzer-Autostart einrichten. Damit wird es in der Datei
1 |
/home/<username>/.config/lxsession/LXDE/autostart
|
(für de RasPi könnte es notwendig sein, daß das Verzeichnis "LXDE" stattdessen "LXDE-pi" heißen muß) eingetragen und gestartet, sobald sich der betreffende Benutzer einloggt, für den es konfiguriert ist, auch mit Autologin. Wenn ein anderer Benutzer sich einloggt, für den der Programmstart nicht konfiguriert ist, wird das Programm auch nicht gestartet.
Oder wenn das Programm zwar für jeden Benutzer gestartet werden, aber unter einer bestimmten Benutzer-Id laufen soll, sind die Befehle
1 |
su <userid|username> -c '/home/userfolder/filefolder/appfolder/appname'
|
oder
1 |
sudo -u <userid|username> /home/userfolder/filefolder/appfolder/appname
|
(Bitte beachte die Feinheit mit den Quotes.)
Wenn das Programm bei der Initialisierung jedoch Dinge tun muß, die einem privilegierten Benutzer vorbehalten sind, kann es nach der Initialisierung mit den Systembefehlen set[res]?uid(2) undset[res]?gid(2) den Kernel anweisen, mit den dabei angegebenen Benutzer- und Gruppenids weiterzuarbeiten.
Wenn Du keinen kompletten Desktop brauchst, sondern nur dieses eine Programm immer Fullscreen (sog. "Kiosk-Modus") laufen lassen willst, dann kannst Du es mit einem minimalen Windowmanager verwenden und Dein Programm als direkten X-Client laufen lassen. Dann läuft unter X wirklich nur dieses eine Programm -- auch in diesem Falle gilt das oben zu den Privilegien Gesagte. Ich hätte dazu ein Beispiel, mußte allerdings eben feststellen, daß das schon zehn Jahre alt, weder an systemd noch an andere Entwicklungen der Linuxwelt angepaßt worden und daher ohne Anpassungen vermutlich kein hilfreiches Beispiel mehr ist. Dennoch wollte ich die Möglichkeit der Vollständigkeit halber erwähnen.
Viel Spaß und Erfolg bei Deinem Projekt! :-)