Autologin und Autostart eines QT-Programms unter Suse 8.2
Hallo, Ich würde gerne mein Suse-System so einstellen, dass nach dem Starten automatisch ein Benutzer (nicht root) eingeloggt wird, und im Anschluss daran, direkt ein grafisches Qt-Programm geladen wird. Bisher habe ich es so gelöst, dass ich beim grafischen Login den Benutzer anmelde. Im Anschluss daran wird KDE geladen. Im Autostart-Ordner befindet sich ein Skript, welches das Programm startet. Allerdings will ich davon weg, dass man sich immer anmelden muss. Auch die Lösung mit dem Autostart-Ordner ist nicht gewünscht, da bis zum Start des Programms theoretisch noch eine Interaktion mit KDE möglich wäre, was nicht sein soll. Ansonsten hätte ch die automatische Anmeldung, welche in Yast aktivierbar ist genommen. Weiß jemand dazu eine Lösung? Als weiteres besteht noch das Problem, dass ich verhindern will, dass man während des Programmbetriebes mittels den Tastenkombinationen Alt+Strg+Fx in die verschiedenen Konsolen wechseln kann. Die 'einfachen' Kombinationen wie z.B. Alt+F2 konnte ich schon verhindern, indem ich die entsprechenden Events abgefangen habe. Aber die Konsolen-Kombinationen kann ich noch nicht abfangen. Wie ginge dies evtl.? Mein letztes Problem besteht darin, dass ich in meinem Programm dem Benutzer die Möglichkeit geben will, den Rechner neu zu starten. Ich hatte da an die Befehle shutdown -r bzw reboot gedacht, welche ich über den Befehl 'system()' aus meinem Programm aufrufen wollte. Allerdings kann man diese Konsolenbefehle nur als root ausführen. Die Benutzung von 'su' bzw. 'sudo' klappt nicht, da ich im Anschluss daran ja das Passwort eingeben muss, und dieses lässt sich nicht mittels system() übergeben. Gibt es evtl. weitere mögliche Befehle? Ich freue mich auf Vorschläge für Problemlösungen. Danke im Voraus. Marc
Am Mittwoch, 1. September 2004 22:34 schrieb Marc Klünder:
Hallo, Ich würde gerne mein Suse-System so einstellen, dass nach dem Starten automatisch ein Benutzer (nicht root) eingeloggt wird, und im Anschluss daran, direkt ein grafisches Qt-Programm geladen wird.
Hallo, Ich habe soetwas so gelöst, dass ich im Homeverzeichnis des Benutzers einfach die Datei .xinitrc erstellt bzw. bearbeitet habe, so dass diese nur einen einzigen Eintrag hatte: exec konqueror (Bei mir sollte nur noch der Konqueror starten) Ein Windowmanager wurde dann gar nicht erst geladen. Der Nachteil dabei liegt darin, dass auch keine Fensterdekorationen verfügbar sind. Die automatische Benutzeranmeldung kann man in kcontrol unter Systemverwaltung - Anmeldungsmanager einstellen. Es wird dann das geladen was sich in der .xinitrc befindet. Im Yast kann man auch irgendwo einstellen, dass Benutzer den Rechner neu starten dürfen. Hoffe weitergeholfen zu haben. Adriano
Hallo, On Wednesday 01 September 2004 22:34, Marc Klünder wrote:
Als weiteres besteht noch das Problem, dass ich verhindern will, dass man während des Programmbetriebes mittels den Tastenkombinationen Alt+Strg+Fx in die verschiedenen Konsolen wechseln kann. Die 'einfachen' Kombinationen wie z.B. Alt+F2 konnte ich schon verhindern, indem ich die entsprechenden Events abgefangen habe. Aber die Konsolen-Kombinationen kann ich noch nicht abfangen. Wie ginge dies evtl.?
Ganz einfach lässt sich das AFAIK vollkommen abfangen, wenn man z.B. in der ~/.Xmodmap die Tasten (Fx) anders belegt. Die Möglichkeit scheint ja gegeben zu sein. Ferdinand
Am Mittwoch, 1. September 2004 21:34 schrieb Marc Klünder:
Hallo, Ich würde gerne mein Suse-System so einstellen, dass nach dem Starten automatisch ein Benutzer (nicht root) eingeloggt wird, und im Anschluss daran, direkt ein grafisches Qt-Programm geladen wird. Bisher habe ich es so gelöst, dass ich beim grafischen Login den Benutzer anmelde. Im Anschluss daran wird KDE geladen. Im Autostart-Ordner befindet sich ein Skript, welches das Programm startet. Allerdings will ich davon weg, dass man sich immer anmelden muss. Auch die Lösung mit dem Autostart-Ordner ist nicht gewünscht, da bis zum Start des Programms theoretisch noch eine Interaktion mit KDE möglich wäre, was nicht sein soll. Ansonsten hätte ch die automatische Anmeldung, welche in Yast aktivierbar ist genommen. Weiß jemand dazu eine Lösung? Als weiteres besteht noch das Problem, dass ich verhindern will, dass man während des Programmbetriebes mittels den Tastenkombinationen Alt+Strg+Fx in die verschiedenen Konsolen wechseln kann. Die 'einfachen' Kombinationen wie z.B. Alt+F2 konnte ich schon verhindern, indem ich die entsprechenden Events abgefangen habe. Aber die Konsolen-Kombinationen kann ich noch nicht abfangen. Wie ginge dies evtl.?
Ist der Kiosk-Modus in KDE nicht genau für sowas gemacht? http://www.kde.org/areas/sysadmin/ -- Portable, adj.: Survives system reboot.
Hallo Marc, hallo Leute, Am Mittwoch, 1. September 2004 22:34 schrieb Marc Klünder:
Ich würde gerne mein Suse-System so einstellen, dass nach dem Starten automatisch ein Benutzer (nicht root) eingeloggt wird, und im Anschluss daran, direkt ein grafisches Qt-Programm geladen wird. Bisher habe ich es so gelöst, dass ich beim grafischen Login den Benutzer anmelde.
Automatisches Login geht auch. Entweder im KDM so einstellen (geht übers KDE-Kontrollzentrum) oder ein kleines Startscript schreiben, das su kioskuser -c starx ausführt.
Im Anschluss daran wird KDE geladen. Im Autostart-Ordner befindet sich ein Skript, welches das Programm startet. Allerdings will ich davon weg,
diverse Tips zur xinitrc hast Du ja schon erhalten. Nur noch eins: Ich würde für sowas nicht unbedingt KDE empfehlen ;-) Nimm lieber einen "leichten" Windowmanager ohne viele Zusatzfunktionen, wenn Du sowieso alles abschalten willst. Zu ändern ist das über die .xinitrc oder über $WINDOWMANAGER
Als weiteres besteht noch das Problem, dass ich verhindern will, dass man während des Programmbetriebes mittels den Tastenkombinationen Alt+Strg+Fx in die verschiedenen Konsolen wechseln kann.
Das sind Tastenkombinationen des X-Servers. In man XF86Config sind im Abschnitt "Serverflags Section" diverse Optionen gelistet, um diese Tastenkombinationen abzuschalten.
Mein letztes Problem besteht darin, dass ich in meinem Programm dem Benutzer die Möglichkeit geben will, den Rechner neu zu starten. Ich hatte da an die Befehle shutdown -r bzw reboot gedacht, welche ich über den Befehl 'system()' aus meinem Programm aufrufen wollte. Allerdings kann man diese Konsolenbefehle nur als root ausführen. Die Benutzung von 'su' bzw. 'sudo' klappt nicht, da ich im Anschluss daran ja das Passwort eingeben muss, und dieses lässt sich nicht mittels system() übergeben.
Das wäre auch nicht sonderlich sicher *g*
Gibt es evtl. weitere mögliche Befehle?
sudo ohne Passwort ;-) visudo aufrufen und die folgende Zeile eingeben: halt ALL=(ALL) NOPASSWD:/sbin/init 6 Dadurch darf der Benutzer "halt" den folgenden Befehl ausführen: sudo /sbin/init 6 Gruß Christian Boltz -- 3.-5.9.2004: Hoffest der Landjugend Insheim www.landjugend-insheim.de
Hallo Christian, also, dank der Hilfe habe ich die meisten Probleme gelöst. Die Rechte zum Rebooten usw. habe ich über die sudoers-Datei eingestellt. Auch das mit den Strg+Alt+ Fn habe ich mit der XF86Config hinbekommen. Das Autologin habe ich in der Datei /etc/opt/kde3/share/config/kdm/kdmrc konfiguriert. Das klappt auch alles. Allerdings habe ich das mit dem Autostart noch nicht hinbekommen. Bisher wird nach dem automatischen Login noch immer ein Startskript in $HOME/Autostart ausgeführt, welches das Programm startet. Aber dann habe ich ja wie bisher beschrieben, dass zwischen KDE- und Programmstart noch eine Interaktion mit KDE möglich ist.
Im Anschluss daran wird KDE geladen. Im Autostart-Ordner befindet sich ein Skript, welches das Programm startet. Allerdings will ich davon weg,
diverse Tips zur xinitrc hast Du ja schon erhalten.
Nur noch eins: Ich würde für sowas nicht unbedingt KDE empfehlen ;-) Nimm lieber einen "leichten" Windowmanager ohne viele Zusatzfunktionen, wenn Du sowieso alles abschalten willst. Zu ändern ist das über die .xinitrc oder über $WINDOWMANAGER
Den Tip mit der .xinitrc habe ich ausprobiert (übrigens auch mit der .xsession). Allerdings fehlen dann wie erwähnt die Fensterdekorationen. Auch wenn ich in meinem Programm weitere Dialoge (z.B. zur Eingabe von irgendwas) öffne, bekommen z.B. die Eingabefelder keinen Fokus. Auch mit der Maus sind diese nicht auswählbar. Ich vermute, dies liegt ebenfalls daran, dass noch kein Windowsmanager geladen ist. Ich wurde auch noch auf den Kiosk-Modus vom KDE hingewiesen. Allerdings habe ich da noch nicht den Durchblick bekommen (ich habe mich z.B. über den Link auf http://www.kde.org/areas/sysadmin/ informiert). Kennt einer vielleicht noch bessere Infos/Hinweise/Anleitungen zum Kiosk-Modus? Ich habe mir auch mal die Startreihenfolge vom KDE (über KDM) angesehen. Wenn ich es richtig verstanden habe, wird nach dem kdeinit der ksmserver geladen. Dort wird zunächst der WM KWin und dann die .desktop-Dateien aus /opt/kde3/share/autostart geladen (z.B. der Desktop und die Kontrollleiste). In diesen Dateien ist z.B. auch angegeben, welche Dateien zuvor ausgeführt werden müssen. Ich habe mal versucht, dort eine eigene Datei zu erzeugen, welche vor(!) der kdesktop ausgeführt sein sollte. Aber das hat nicht hingehauen. Wäre im Endeffekt dann wohl auch nicht mein Wunsch gewesen, da diese Einstellungen scheinbar für alle Nutzer gelten. Ich habe leider keine Beschreibungen über den Aufbau der .desktop-Dateien gefunden. Aufgrund der Startabfolge beim KDE kam mir der folgende Gedanke: zunächst wird vom ksmserver KWin geladen (und evtl noch einige wenige unbedingt benötigte Module). Im Anschluss wird mein Programm automatisch gestartet (somit mit WM-Unterstützung). Wird das Programm beendet könnte dann ja die Abarbeitung vom ksmserver fortschreiten und die restlichen Module (KDesktop, Panel/Kicker) laden, so dass man danach normal mit dem KDE arbeiten kann. Ist dies dann evtl. auch so einzurichten, dass dies nicht für alle Benutzer gilt? Wäre dieser Lösungsansatz überhaupt umsetzbar? Der Vorteil von KDE wäre in meinem Fall folgender: Das gewünschte Programm soll automatisch gestartet werden. Verschiedene authorisierte Benutzer sollen aber auch die Möglichkeit habe, über eine Passworteingae das Programm zu verlassen und direkt im Anschluss unter dem angemeldeten Benutzer mit KDE zu arbeiten. Das wäre zwar wohl auch mit einigen anderen WM möglich, aber diese Leute haben sich jetzt zumindest schon mit KDE angefreundet ;-). Soll heissen, ein neuer WM bringt erfordert von diesen Leuten erneuten Lernwillen. Aber dennoch: welcher andere WM wäre denn sonst zu empfehlen? Bestände da dann nicht auch das Problem mit der Interaktion mit dem System vor dem Autostart des Programms? Vielen Dank für die Hilfe bisher. Ich hoffe, auch bei meinen restlichen Problemen weiß jemand Rat. Danke im Voraus. Marc
Hallo Marc, hallo Leute, Am Dienstag, 14. September 2004 17:25 schrieb Marc Klünder: [...]
Im Anschluss daran wird KDE geladen. Im Autostart-Ordner befindet sich ein Skript, welches das Programm startet. Allerdings will ich davon weg,
diverse Tips zur xinitrc hast Du ja schon erhalten.
Nur noch eins: Ich würde für sowas nicht unbedingt KDE empfehlen ;-) Nimm lieber einen "leichten" Windowmanager ohne viele Zusatzfunktionen, wenn Du sowieso alles abschalten willst. Zu ändern ist das über die .xinitrc oder über $WINDOWMANAGER
Den Tip mit der .xinitrc habe ich ausprobiert (übrigens auch mit der .xsession). Allerdings fehlen dann wie erwähnt die Fensterdekorationen. Auch wenn ich in meinem Programm weitere Dialoge (z.B. zur Eingabe von irgendwas) öffne, bekommen z.B. die Eingabefelder keinen Fokus. Auch mit der Maus sind diese nicht auswählbar. Ich vermute, dies liegt ebenfalls daran, dass noch kein Windowsmanager geladen ist.
Jepp, vermutlich. Probier mal, das entsprechende Programm im Hintergrund zu starten, also z. B. mit mozilla & - dadurch müsste dann auch der Rest der .xinitrc ausgeführt werden.
Ich habe leider keine Beschreibungen über den Aufbau der .desktop-Dateien gefunden.
Gibts irgendwo auf kde.org oder freedesktop.org (IIRC, ansonsten Google bemühen). Aber so kompliziert sehen zumindest die üblichen Einträge nicht aus.
Aufgrund der Startabfolge beim KDE kam mir der folgende Gedanke: zunächst wird vom ksmserver KWin geladen (und evtl noch einige wenige unbedingt benötigte Module). Im Anschluss wird mein Programm automatisch gestartet (somit mit WM-Unterstützung). Wird das Programm beendet könnte dann ja die Abarbeitung vom ksmserver fortschreiten und die restlichen Module (KDesktop, Panel/Kicker) laden, so dass man danach normal mit dem KDE arbeiten kann. Ist dies dann evtl. auch so einzurichten, dass dies nicht für alle Benutzer gilt? Wäre dieser Lösungsansatz überhaupt umsetzbar?
Der Vorteil von KDE wäre in meinem Fall folgender: Das gewünschte Programm soll automatisch gestartet werden. Verschiedene authorisierte Benutzer sollen aber auch die Möglichkeit habe, über eine Passworteingae das Programm zu verlassen und direkt im Anschluss unter dem angemeldeten Benutzer mit KDE zu arbeiten.
Das hört sich zwar gut an, hat aber gewisse Risiken. Was ist, wenn das Programm aus irgendeinem Grund abschmiert? Dann haben plötzlich alle Kiosk-Gäste vollen User-Zugriff... Ich würde das anders lösen: Ein Kiosk-User, von mir aus auch ohne Passwort, wird automatisch eingeloggt. Nach Beenden des erlaubten Programms erfolgt automatisch ein Logout und ein beliebiger User kann sich (mit beliebigem WM) anmelden. Anschließend loggt er sich aus und den Kiosk-User wieder ein. Klar, das macht etwas mehr Arbeit, wäre aber wohl deutlich sicherer.
Das wäre zwar wohl auch mit einigen anderen WM möglich, aber diese Leute haben sich jetzt zumindest schon mit KDE angefreundet ;-). Soll heissen, ein neuer WM bringt erfordert von diesen Leuten erneuten Lernwillen. Aber dennoch: welcher andere WM wäre denn sonst zu empfehlen?
Sortier einfach in YaST nach der Paketgröße, der kleinste passt ;-) (sprich: da ich kein Kiosksystem brauche und einen recht neuen Rechner habe, nutze ich nur KDE und kann Dir deshalb nichts anderes empfehlen.) Vorschlag: frag mal in suse-linux nach einem "leichten" WM für ein Kiosksystem, da kommen wohl mehr Antworten als hier.
Bestände da dann nicht auch das Problem mit der Interaktion mit dem System vor dem Autostart des Programms?
Du musst einfach dafür sorgen, dass nichts da ist, mit dem jemand interagieren könnte ;-) Gruß Christian Boltz --
So... Hm... ich bin etwas aufgeschmissen. How to troubleshoot without trouble? Schwierige Frage, aber eine gute sig ;-) Umgekehrt wär mir lieber. :-) [> Christian Boltz und Ratti in fontlinge-devel]
participants (5)
-
Adriano Curilli
-
Christian Boltz
-
Ferdinand Ihringer
-
Marc Klünder
-
Michael Armbrecht