2012-05-29 6 views
5

Ho uno script che voglio eseguire subito dopo l'autenticazione di accesso dell'utente. Per fare ciò, ho aggiunto il nome dello script nel file /etc/rc5.d/S##rc.local. Ma più tardi ho avuto modo di sapere che, tutto ciò che viene aggiunto nel file rc.local viene eseguito all'avvio del sistema non dopo l'autenticazione di accesso. Qualcuno può dirmi come eseguire lo script dopo l'autenticazione di accesso utente?Come eseguire uno script dopo l'autenticazione di accesso dell'utente in linux

+1

Stai facendo questo per comodità o per sicurezza? Cioè vuoi semplicemente configurare il tuo ambiente di login (aggiungi alias, impostare variabili, ecc.) o vuoi che il tuo script venga eseguito dopo ogni accesso senza consentire agli utenti di rimuoverlo? – lanzz

+0

Per lo scopo di sicurezza. In realtà voglio eseguire lo script ogni volta che l'amministratore accede al sistema. – user976754

+2

se una delle risposte di seguito ti ha aiutato, contrassegnali come accettate. Grazie. – woohoo

risposta

3

Prova ad aggiungere questo alla tua /etc/pam.d/login:

session optional pam_exec.so /bin/bash /path/to/your/script.sh 

Sarà necessario controllare nello script se l'utente corrente è in realtà un amministratore (in base a tutto ciò che i tuoi criteri per essere amministratore sono).

+0

Ciao Lanzz, ho aggiunto questo in /etc/pam.d/login script. Ma non riesco a superare il mio script ... – user976754

+0

'pam_exec' apparentemente non mostra il suo output sul terminale in cui l'utente è connesso. Hai bisogno di visualizzare qualcosa nel tuo script, o semplicemente di eseguire qualcosa in background (ad esempio, inviare una notifica)? È possibile aggiungere un file di registro in cui verrà registrato l'output dello script: 'sessione opzionale pam_exec.so log =/percorso/a/logfile/bin/bash/percorso/a/tuo/script.sh' – lanzz

+0

Ho trovato questa linea un mio '/ etc/pam.d/login'. Penso che sia il motivo per cui uname viene stampato quando eseguo ssh su una machiine: 'sessione opzionale pam_exec.so type = open_session stdout/bin/uname -snrvm' – Nope

13

In alternativa, è possibile aggiungere lo script alla cartella /etc/profile.d.

Ulteriori informazioni su questo here e here.

In pratica, è necessario fornire al proprio script l'estensione .sh poiché tutti questi file vengono eseguiti in un loop dopo l'accesso dell'utente.

+0

Ha funzionato davvero. Grazie :) – user976754

+1

@ user976754: Sono contento che ti abbia aiutato. Si prega di contrassegnare la mia risposta come risposta accettata per questa domanda :) – woohoo

+0

Sembra che sia necessario disporre dei permessi di root per creare file in /etc/profile.d In che modo il file viene eseguito quando l'utente effettua l'accesso? Poiché il file sarà di proprietà di root. – ams