Das ist eine Frage, die ich schon mehrmals für verschiedene Linux-Varianten gesehen habe, also versuchen wir, erschöpfend zu sein.
Was ist die Methode, um Skripte/Befehle/Programme vor und nach der Anmeldung des Benutzers in seiner Desktop-Sitzung auszuführen?
Akzeptierte Antwort:
Einführung
Um ein Programm in einer grafischen Umgebung auszuführen, bevor sich ein Benutzer in einer grafischen Umgebung anmeldet, hängt es von Ihrem Display-Manager ab. Ein Display-Manager ist dafür verantwortlich, Ihnen eine Anmeldeschnittstelle bereitzustellen und Ihre grafische Umgebung einzurichten, sobald Sie sich angemeldet haben.
Die wichtigsten sind die folgenden:
- GDM ist der GNOME-Anzeigemanager.
- LightDM ist ein Cross-Desktop-Display-Manager, der verschiedene Front-Ends verwenden kann, die in jedem Toolkit geschrieben sind.
- LXDM ist der LXDE-Anzeigemanager, aber unabhängig von der LXDE-Desktopumgebung.
- SDDM ist ein moderner Display-Manager für X11 und Wayland, der darauf abzielt, schnell, einfach und schön zu sein.
Wir werden untersuchen, wie die Ausführung von Befehlen eingerichtet wird, wenn das Popup-Fenster des Display-Managers angezeigt wird, bevor sich ein Benutzer anmeldet, und wie etwas ausgeführt wird, wenn jemand endlich angemeldet ist.
Wenn Sie nicht wissen, welchen Sie verwenden, können Sie sich auf diese Frage beziehen:
Gibt es einen einfachen Linux-Befehl, der mir sagt, was mein Display-Manager ist?
WICHTIG
Bevor ich anfange, werden Sie die Datei bearbeiten, außer wenn erwähnt wird, dass der Befehl als root
ausgeführt wird . Entfernen Sie keine vorhandenen Inhalte in diesen Dateien, es sei denn, Sie wissen, was Sie tun, und seien Sie vorsichtig, was Sie in diese Dateien einfügen. Dadurch könnten Sie sich nicht mehr anmelden können.
GDM
Seien Sie vorsichtig mit GDM, es wird alle Skripte als „root“ ausführen, ein anderer Fehlercode als 0 könnte Ihre Anmeldemöglichkeiten einschränken und GDM wird warten, bis Ihr Skript fertig ist, wodurch es nicht mehr reagiert, solange Ihr Befehl ausgeführt wird.
Für eine vollständige Erklärung [lesen Sie die Dokumentation][5].
Vor der Anmeldung
Wenn Sie Befehle ausführen müssen, bevor sich ein Benutzer angemeldet hat, können Sie die Datei bearbeiten:
`/etc/gdm3/Init/Default`.
Diese Datei ist ein Shell-Skript, das vor der Anzeige ausgeführt wird Manager wird dem Benutzer angezeigt.
Nach der Anmeldung
Wenn Sie Dinge ausführen müssen, nachdem sich ein Benutzer angemeldet hat, aber bevor seine Sitzung initialisiert wurde, bearbeiten Sie die Datei:
`/etc/gdm3/PostLogin/Default`
Wenn Sie den Befehl nach der Sitzung ausführen möchten der Sitzungsinitialisierung (env, grafische Umgebung, Login…) bearbeiten Sie die Datei:
`/etc/gdm3/PreSession/Default`
LightDM
Ich werde über lightdm.conf sprechen und nicht über /etc/lightdm.conf.d/*.conf. Sie können tun, was Sie wollen, wichtig ist, die Optionen zu kennen, die Sie verwenden können.
Seien Sie vorsichtig mit lightDM, Sie könnten bereits mehrere andere Skripte starten, Sie sollten Ihre Konfigurationsdatei genau lesen, bevor Sie sie bearbeiten. Auch die Reihenfolge, in der Sie diese Skripte platzieren, kann die Art und Weise beeinflussen, wie die Sitzung geladen wird.
LightDM funktioniert etwas anders als die anderen. Sie werden Optionen in die Hauptkonfigurationsdateien einfügen, um das auszuführende Skript anzugeben.
Bearbeiten Sie die LightDM-Hauptkonfigurationsdatei /etc/lightdm/lightdm.conf
.
Sie sollten die erste Zeile mit [Seat:*]
hinzufügen , wie hier angegeben:
Spätere Versionen von lightdm (ab 15.10) haben die veralteten
[SeatDefaults] durch [Seat:*]
Vor der Anmeldung
Fügen Sie eine Zeile hinzu:`greeter-setup-script=/my/path/to/script`
Dieses Skript wird ausgeführt, wenn lightDM die Anmeldeoberfläche anzeigt.
Nach der Anmeldung
Fügen Sie eine Zeile `session-setup-script=/script/to/start/script`
hinzu. Dadurch wird das Skript als `root` ausgeführt, nachdem sich ein Benutzer erfolgreich angemeldet hat.
LXDM
Vor der Anmeldung
Wenn Sie den Befehl ausführen möchten, bevor sich jemand angemeldet hat, können Sie das Shell-Skript bearbeiten:
`/etc/lxdm/LoginReady`
Nach der Anmeldung
Wenn Sie den Befehl ausführen möchten, nachdem sich jemand als Root angemeldet hat, können Sie das Shell-Skript bearbeiten:
`/etc/lxdm/PreLogin`
Und wenn Sie den Befehl als angemeldeter Benutzer ausführen möchten, Sie können das Skript bearbeiten:
`/etc/lxdm/PostLogin`
SSDM
Konnte keine genauen Informationen darüber finden … Fühlen Sie sich frei, diesen Teil zu bearbeiten.