Jak uzyskać powiadomienie, gdy inni użytkownicy logują się do „mojego” systemu?

9

Znam whopolecenie pokazujące mi wszystkich zalogowanych użytkowników. Ale chcę być w jakiś sposób poinformowany, gdy ktoś oprócz mnie zaloguje się do mojego systemu. Każdy aplet? Byłoby również miło, gdyby aplet pokazywał liczbę różnych zalogowanych użytkowników, co oznacza posiadanie powłoki logowania i nawiązanego połączenia ssh.

matematyka
źródło
BTW: czy ktoś może komentować przerwanie prób. Czy wówczas nadal wykonywany jest plik /etc/profile.d? Wydaje mi się, że zależy to od włamania, więc w przypadku ataków ssh brutalnej siły może się to utrzymywać, a eskalacja praw do uruchomionych usług może nie mieć miejsca. Ahh wydaje się, że monitorowanie użytkowników nie jest łatwym zadaniem.
matematyka

Odpowiedzi:

10

W przypadku części powiadomienia, gdy ktoś loguje się w twoim systemie, możesz spróbować umieścić mały skrypt w /etc/profile.dskrypcie. Za pomocą powiadomienia-wysyłania (część pakietu libnotify-bin) możesz spróbować:

/etc/profile.d/notify_log.sh

notify-send -t 3000 "User logged in" `whoami`

a następnie za każdym razem, gdy ktoś zaloguje się do twojego systemu, otrzymasz powiadomienie.

EDYCJA: Więc to nie działa dobrze :( Jeśli skonfigurowałeś serwer pocztowy na swoim komputerze, możesz użyć polecenia mail zamiast notify-send.

Ale zgodnie z postem tutaj lepszym rozwiązaniem byłby skrypt pam_exec .

Cédric Julien
źródło
Dobry pomysł, ale nie ma potrzeby, aby był wykonywalny i nie musiał mieć shebang, ponieważ pliki /etc/profile.d/są pobierane. Tylko powłoki logowania (terminale wirtualne i logowanie ssh) i niektóre dane logowania GUI wykonują inicjalizację profilu.
enzotib
@enzotib: dziękuję za wskazówki, poprawiłem swoją odpowiedź :)
Cédric Julien
Ok, próbowałem, ale jak dotąd bez powodzenia. Powodem jest to, że jeden użytkownik nie może łatwo powiadomić innego. Dlatego należy ustawić niektóre zmienne środowiskowe, patrz: g-loaded.eu/2007/11/18/… . Do tej pory mam jakiś plik wykonywalny, który robi to, ale nie po zalogowaniu!?! Jeśli zaraz source /etc/profile.d/notify_log.shpo zalogowaniu przez ssh, powiadomienie zostanie wysłane. Wydaje mi się, że nie jest poprawnie wykonywany po zalogowaniu. Zaobserwowałem /var/log/auth.log bez powodzenia. Jakaś pomoc?
matematyka
Znalazłem powód: używam ZSH i / etc / zsh / zprofile jest pusty, powinien być źródłem / etc / profile, który z kolei powinien źródła /etc/profile.d/*.sh, ale nic nie robi! > - (.. Wyślę to wtedy jawnie i sprawdzę wszystkie inne zainstalowane powłoki, ponieważ nie wiem, które powłoki logowania są używane przez wszystkich użytkowników LDAP .. W każdym razie dzięki.
matem.
@brubelsabs: oups, zredagowałem swoją odpowiedź innymi rozwiązaniami
Cédric Julien
2

Robimy to, tworząc plik /etc/profile.d/notify.sho następującej treści:

#!/bin/sh

sender="[email protected]"
recepient="[email protected]"
subject="Privileged Account logon used"
message="`env`"
    echo "$message" | mail -s "$subject" -r "$sender" -Smtp=mail.example.com "$recepient"

Zakładając, że mailx jest zainstalowany.

Antonio
źródło
Tak, czasami możesz przegapić powiadomienie na pulpicie, ale poczta zwykle pozostaje.
matematyka
@Antonio Czy musisz dodać skrypt do crontab? Wygląda na to, że nie działa.
cokedude