GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire il comando prima dell'accesso dell'utente su Linux?

Questa è una domanda che ho visto diverse volte per diverse versioni di Linux, quindi cerchiamo di essere esaurienti.
Qual è il metodo per eseguire script/comandi/programma prima e dopo l'accesso dell'utente alla sua sessione desktop?

Risposta accettata:

Introduzione

L'esecuzione di un programma in ambiente grafico prima che un utente abbia effettuato l'accesso in un ambiente grafico dipende dal proprio display manager. Un display manager ha il compito di fornirti un'interfaccia di accesso e configurare il tuo ambiente grafico una volta effettuato l'accesso.
i più importanti sono i seguenti:

  • GDM è il display manager di GNOME.
  • LightDM è un display manager cross-desktop, può utilizzare vari front-end scritti in qualsiasi toolkit.
  • LXDM è il display manager LXDE ma indipendente dall'ambiente desktop LXDE.
  • SDDM è un moderno display manager per X11 e Wayland che mira a essere veloce, semplice e bello.

Esamineremo come impostare l'esecuzione del comando quando viene visualizzato il display manager prima che qualsiasi utente abbia effettuato l'accesso e come eseguire qualcosa quando qualcuno ha finalmente effettuato l'accesso.

Se non sai quale stai utilizzando, puoi fare riferimento a questa domanda:
C'è un semplice comando Linux che mi dirà qual è il mio display manager?

IMPORTANTE
Prima di iniziare, modificherai il file che, tranne se menzionato, esegui il comando come root . Non rimuovere le cose esistenti in quei file a meno che tu non sappia cosa stai facendo e fai attenzione a ciò che metti in quei file. Ciò potrebbe rimuovere la tua capacità di accedere.

GDM

Fai attenzione con GDM, eseguirà tutti gli script come `root`, un codice di errore diverso da 0 potrebbe limitare la tua capacità di accesso e GDM attenderà che lo script finisca rendendolo irresponsabile finché il comando viene eseguito.
Per una spiegazione completa [leggi la documentazione][5].

Prima dell'accesso

Se hai bisogno di eseguire comandi prima che un utente abbia effettuato l'accesso, puoi modificare il file:
`/etc/gdm3/Init/Default`.
Questo file è uno script di shell che verrà eseguito prima della visualizzazione manager viene visualizzato all'utente.

Dopo l'accesso

Se hai bisogno di eseguire le cose dopo che un utente ha effettuato il login ma prima che la sua sessione sia stata inizializzata, modifica il file:
`/etc/gdm3/PostLogin/Default`
Se vuoi eseguire il comando dopo la sessione di inizializzazione della sessione (env, ambiente grafico, login...) modificare il file:
`/etc/gdm3/PreSession/Default`

LightDM

Parlerò di lightdm.conf e non di /etc/lightdm.conf.d/*.conf. Puoi fare quello che vuoi, l'importante è conoscere le opzioni che puoi usare.
Fai attenzione con lightDM, potresti già avere molti altri script che iniziano dovresti leggere con precisione il tuo file di configurazione prima di modificarlo. anche l'ordine in cui metti quegli script potrebbe influenzare il modo in cui la sessione viene caricata.

Correlati:Vsftpd fallisce l'autenticazione pam?

LightDM funziona in modo leggermente diverso dagli altri, inserirai le opzioni nei file di configurazione principali per indicare lo script che verrà eseguito.

Modifica il file di configurazione principale di lightDM /etc/lightdm/lightdm.conf .

Dovresti aggiungere la prima riga con [Seat:*] , come indicato qui:

Le versioni successive di lightdm (dalla 15.10 in poi) hanno sostituito l'obsoleto
[SeatDefaults] con [Seat:*]

Prima dell'accesso

Aggiungi una riga `greeter-setup-script=/my/path/to/script`
Questo script verrà eseguito quando lightDM mostra l'interfaccia di accesso.

Dopo l'accesso

Aggiungi una riga `session-setup-script=/script/to/start/script`
Questo eseguirà lo script come `root` dopo che un utente ha effettuato l'accesso con successo.

LXDM

Prima dell'accesso

Se vuoi eseguire il comando prima che chiunque abbia effettuato l'accesso, puoi modificare lo script della shell:
`/etc/lxdm/LoginReady`

Dopo l'accesso

Se vuoi eseguire il comando dopo che qualcuno ha effettuato l'accesso ma come root, puoi modificare lo script della shell:
`/etc/lxdm/PreLogin`
E se vuoi eseguire il comando come utente connesso, puoi modificare lo script:
`/etc/lxdm/PostLogin`

SSDM

Impossibile trovare informazioni adeguate a riguardo... Sentiti libero di modificare questa parte.


Linux
  1. Come bloccare e sbloccare l'utente in Linux

  2. Comando su Linux

  3. Come disabilitare un comando specifico per un utente specifico in Linux

  4. login Esempi di comandi in Linux

  5. matlab esegue lo script dalla riga di comando linux

Come creare utenti in Linux (comando useradd)

Come eliminare/rimuovere utenti in Linux (comando userdel)

Comando ID in Linux

Come memorizzare un comando Linux come variabile nello script della shell

Come disabilitare l'accesso SSH a un utente specifico in Linux

Come eseguire un comando in uno script della shell?