2012-05-29 16 views
5

Mam skrypt, który chcę uruchomić tuż po uwierzytelnieniu logowania użytkownika. Aby to osiągnąć, dodałem nazwę skryptu w pliku /etc/rc5.d/S##rc.local. Ale później dowiedziałem się, że wszystko, co jest dodane w pliku rc.local, zostaje wykonane w czasie rozruchu systemu, a nie po uwierzytelnieniu logowania. Czy ktoś może mi powiedzieć, jak uruchomić skrypt po uwierzytelnieniu użytkownika?Jak uruchomić skrypt po uwierzytelnieniu logowania użytkownika w Linuksie

+1

Czy robisz to dla wygody lub dla bezpieczeństwa? To znaczy. czy chcesz tylko skonfigurować swoje środowisko logowania (dodać aliasy, ustawić zmienne itp.), czy chcesz, aby twój skrypt działał po każdym logowaniu, nie pozwalając użytkownikom na jego usunięcie? – lanzz

+0

Dla celów bezpieczeństwa. Właściwie chcę uruchomić skrypt za każdym razem, gdy administrator loguje się do systemu. – user976754

+2

jeśli którakolwiek z poniższych odpowiedzi Ci pomogła, zaznacz je jako zaakceptowane. dzięki. – woohoo

Odpowiedz

3

warto dodać to do Twojego /etc/pam.d/login:

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

Trzeba będzie sprawdzić w skrypcie jeśli bieżący użytkownik jest rzeczywiście administrator (według cokolwiek twoje kryteria bycia administratorem są).

+0

Witaj Lanzz, dodałem to w skrypcie /etc/pam.d/login. Ale nie można uzyskać exceuted mój skrypt ... – user976754

+0

'pam_exec' najwyraźniej nie wyświetla swoich danych wyjściowych na terminalu, w którym zalogowany jest użytkownik. Czy chcesz wyświetlić coś w swoim skrypcie lub po prostu wykonać coś w tle (np. Wysłać powiadomienie)? Możesz dodać plik dziennika, w którym będą zapisywane dane wyjściowe skryptu: 'sesja opcjonalna pam_exec.so log =/path/to/logfile/bin/bash/path/to/your/script.sh' – lanzz

+0

Znalazłem tę linię jako moją '/ etc/pam.d/login'. Myślę, że to jest powód, dla którego uname jest drukowane, gdy ssh do machiine: 'sesja opcjonalna pam_exec.so typ = open_session stdout/bin/uname -snrvm' – Nope

13

Można również dodać skrypt do folderu /etc/profile.d.

Więcej informacji na ten temat: here i here.

Zasadniczo powinieneś nadać skryptowi rozszerzenie .sh, ponieważ wszystkie te pliki są wykonywane w pętli po zalogowaniu użytkownika.

+0

To działało naprawdę. Dzięki :) – user976754

+1

@ user976754: Cieszę się, że ci pomogło. Proszę oznaczyć moją odpowiedź jako zaakceptowaną odpowiedź na to pytanie :) – woohoo

+0

Wygląda na to, że musisz mieć uprawnienia roota do tworzenia plików w /etc/profile.d Jak ten plik zostanie wykonany, gdy użytkownik się zaloguje? Ponieważ plik będzie własnością root. – ams

Powiązane problemy