web-dev-qa-db-fra.com

Comment exécuter la commande avant la connexion de l'utilisateur sur Linux

C'est une question que j'ai vue plusieurs fois pour plusieurs saveurs Linux, essayons donc d'être exhaustive.
[.____] Quelle est la méthode pour exécuter script/commande/programme avant et après la connexion de l'utilisateur dans sa session de bureau?

5
Kiwy

Introduction

Pour exécuter un programme dans l'environnement graphique avant qu'un utilisateur connecté dans un environnement graphique dépend de votre gestionnaire d'affichage. Un gestionnaire d'affichage est chargé de vous fournir une interface de connexion et de configurer votre environnement graphique une fois connecté.
[.____] Les plus importants sont les suivants:

  • GDM est le gestionnaire d'affichage GNOME.
  • LightDM est un gestionnaire d'affichage cross-dektop, peut utiliser divers fronts fronts écrits dans n'importe quelle boîte à outils.
  • LXDM est le gestionnaire d'affichage LXDE, mais indépendant de l'environnement de bureau LXDE.
  • SDDM est un gestionnaire d'affichage moderne pour X11 et Wayland visant à être rapide, simple et magnifique.

Nous allons examiner comment configurer l'exécution de la commande lorsque le gestionnaire d'affichage contextuel avant tout utilisateur connecté et comment exécuter quelque chose lorsque quelqu'un est enfin connecté.

Si vous ne connaissez pas lequel vous êtes en cours d'exécution, vous pouvez vous référer à cette question:
[.____] Y a-t-il une simple commande Linux qui me dira quel est mon gestionnaire d'affichage?

[~ # ~] Important [~ # ~]
Avant de commencer, vous allez modifier le fichier que, sauf si la mention exécute la commande root. Ne retirez pas les éléments existants dans ces fichiers, sauf si vous savez ce que vous faites et faites attention à ce que vous mettez dans ces fichiers. Cela pourrait supprimer votre capacité à vous connecter.

Gdm

Soyez prudent avec GDM, il exécutera tout script comme root, un code d'erreur différent de 0 pourrait limiter votre capacité de connexion et GDM attendront que votre script ait fini de le rendre irresponsable tant que votre commande fonctionne.
Pour une explication complète Lire la documentation .

Avant de vous connecter

Si vous devez exécuter des commandes avant qu'un utilisateur connecté, vous pouvez modifier le fichier:
[.____] /etc/gdm3/Init/Default.
[.____] Ce fichier est un script shell qui sera exécuté avant que le gestionnaire d'affichage ne soit affiché à l'utilisateur.

Après la connexion

Si vous devez exécuter des choses une fois qu'un utilisateur s'est connecté, mais avant que sa session ait été initialisée, modifiez le fichier:
[.____] /etc/gdm3/PostLogin/Default Si vous souhaitez exécuter la commande après la session d'initialisation de la session (ENV, environnement graphique, login ...) Modifier le fichier:
[.____] /etc/gdm3/PreSession/Default

Lightdm

Je parlerai de lightdm.conf et non sur /etc/lightdm.conf.d/*.conf. Vous pouvez faire ce que vous voulez ce qui est important est de connaître les options que vous pouvez utiliser. Soyez prudent avec LightDM, vous pouvez déjà avoir plusieurs autres scripts de démarrage que vous devriez lire précisément votre fichier de configuration avant de la modifier. De plus, l'ordre dans lequel vous mettez que ces script pourraient influencer la manière dont la session charge.

Avant de vous connecter

LightDM fonctionne un peu différemment des autres que vous mettrez des options dans les fichiers de configuration principaux pour indiquer le script qui sera exécuté.
[.____] Modifier le fichier Conf principal LightDM:
[.____] /etc/lightdm/lightdm.conf
[.____] Ajouter une ligne greeter-setup-script=/my/path/to/script
[.____] Ce script sera exécuté lorsque LightDM affiche l'interface de connexion.

Après la connexion

Vous pouvez éditer /etc/lightdm/lightdm.conf Encore une fois et ajouter une ligne:
[.____] session-setup-script=/script/to/start/script
Ceci exécutera le script comme root après un utilisateur connecté avec succès.

Lxdm

Avant de vous connecter

Si vous souhaitez exécuter la commande avant que quiconque connectée, vous pouvez modifier le script Shell:
[.____] /etc/lxdm/LoginReady

Après la connexion

Si vous souhaitez exécuter la commande après une personne connectée mais en tant que root, vous pouvez modifier le script Shell:
[.____] /etc/lxdm/PreLogin
[.____] et si vous souhaitez exécuter la commande comme utilisateur connecté, vous pouvez modifier le script:
[.____] /etc/lxdm/PostLogin

SSDM

Impossible de trouver des informations appropriées à ce sujet ... N'hésitez pas à éditer cette partie.

13
Kiwy