GNU/Linux >> Tutoriels Linux >  >> Linux

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

C'est une question que j'ai vue plusieurs fois pour plusieurs versions de Linux, alors essayons d'être exhaustif.
Quelle est la méthode pour exécuter un script/commande/programme avant et après la connexion de l'utilisateur à sa session de bureau ?

Réponse acceptée :

Présentation

Exécuter un programme dans un environnement graphique avant qu'un utilisateur ne se connecte dans un environnement graphique dépend de votre gestionnaire d'affichage. Un gestionnaire d'affichage se charge de vous fournir une interface de connexion et de paramétrer votre environnement graphique une fois connecté.
les plus importants sont les suivants :

  • GDM est le gestionnaire d'affichage de GNOME.
  • LightDM est un gestionnaire d'affichage multi-bureau, peut utiliser divers frontaux é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 beau.

Nous verrons comment configurer l'exécution de la commande lorsque la fenêtre contextuelle du gestionnaire d'affichage s'affiche avant la connexion d'un utilisateur et comment exécuter quelque chose lorsque quelqu'un est enfin connecté.

Si vous ne savez pas lequel vous utilisez, vous pouvez vous référer à cette question :
Existe-t-il une simple commande linux qui me dira quel est mon gestionnaire d'affichage ?

IMPORTANT
Avant de commencer, vous allez éditer le fichier sauf si vous mentionnez exécuter la commande en tant que root . Ne supprimez 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 vous empêcher de vous connecter.

GDM

Soyez prudent avec GDM, il exécutera tous les scripts en tant que `root`, un code d'erreur différent de 0 pourrait limiter votre capacité de connexion et GDM attendra que votre script finisse de le rendre insensible tant que votre commande s'exécutera.
Pour une explication complète [lisez la documentation][5].

Avant de se connecter

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

Après la connexion

Si vous avez besoin d'exécuter des choses une fois qu'un utilisateur s'est connecté mais avant que sa session ait été initialisée, éditez le fichier :
`/etc/gdm3/PostLogin/Default`
Si vous voulez exécuter la commande après la session d'initialisation de la session (env, environnement graphique, login…) éditez le fichier :
`/etc/gdm3/PreSession/Default`

LightDM

Je parlerai de lightdm.conf et non de /etc/lightdm.conf.d/*.conf. Vous pouvez faire ce que vous voulez ce qui est important c'est de connaître les options que vous pouvez utiliser.
Attention avec lightDM, vous pourriez déjà avoir plusieurs autres scripts en cours de démarrage il faut lire précisément votre fichier de config avant de le modifier. l'ordre dans lequel vous placez ces scripts peut également influencer la manière dont la session se charge.

Connexe :Vsftpd échoue l'authentification pam ?

LightDM fonctionne un peu différemment des autres, vous mettrez des options dans les principaux fichiers de configuration pour indiquer le script qui sera exécuté.

Modifiez le fichier de configuration lightDM principal /etc/lightdm/lightdm.conf .

Vous devez ajouter la première ligne avec [Seat:*] , comme indiqué ici :

Les versions ultérieures de lightdm (15.10 et suivantes) ont remplacé l'obsolète
[SeatDefaults] par [Seat :*]

Avant de se connecter

Ajoutez une ligne `greeter-setup-script=/my/path/to/script`
Ce script sera exécuté lorsque lightDM affichera l'interface de connexion.

Après la connexion

Ajoutez une ligne `session-setup-script=/script/to/start/script`
Cela exécutera le script en tant que `root` après qu'un utilisateur se soit connecté avec succès.

LXDM

Avant de se connecter

Si vous souhaitez exécuter la commande avant que quiconque ne se connecte, vous pouvez modifier le script shell :
`/etc/lxdm/LoginReady`

Après la connexion

Si vous souhaitez exécuter la commande après que quelqu'un se soit connecté mais en tant que root, vous pouvez modifier le script shell :
`/etc/lxdm/PreLogin`
Et si vous souhaitez exécuter la commande en tant qu'utilisateur connecté, vous pouvez modifier le script :
`/etc/lxdm/PostLogin`

SSDM

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


Linux
  1. Comment créer un script d'une commande Linux

  2. Commande Linux su

  3. Comment désactiver une commande spécifique pour un utilisateur spécifique sous Linux

  4. login Exemples de commandes sous Linux

  5. matlab exécute le script à partir de la ligne de commande linux

Comment créer des utilisateurs sous Linux (commande useradd)

Comment supprimer/supprimer des utilisateurs sous Linux (commande userdel)

Commande ID sous Linux

Comment stocker une commande Linux en tant que variable dans un script shell

Comment désactiver la connexion SSH à un utilisateur spécifique sous Linux

Comment exécuter une commande dans un script shell ?