Kontrola sesji użytkowników w Linuksie

Często słyszy się, że w terminalu/konsoli ciężko zarządza się zalogowanymi użytkownikami.

To prawda - jeśli myślimy w perspektywie zarządzania Windowsami. W Linuksie też znajdziemy narzędzia, które pozwalają nam sprawnie zarządzać użytkownikami.

Jest kilka możliwości. Pierwsza to znajome narzędzie who

Za man-em who - show who is logged on

Jeśli chcemy zobaczyć kto jest zalogowany w systemie to wydajemy komendę:

who

root@raspberrypi:~# who
     pi      pts/0       2019-11-09 13:54 (192.168.80.42)
     user1   pts/1       2019-11-09 15:13 (192.168.80.42)

Jest to tylko poglądowa informacja. Aby zobaczyć trochę więcej informacji na temat sesji użytkownika wydajemy polecenie:

root@raspberrypi:~# who -a
           start systemu 1970-01-01 01:00
           LOGIN     tty1        2019-11-09 12:33              473 id=tty1
           run-level 3 2019-11-09 12:33
           pi      - pts/0       2019-11-09 13:54  .          794 (192.168.80.42)
           user1   + pts/1       2019-11-09 15:13 00:07       1066 (192.168.80.42)

Pierwsza kolumna informuje kto jest zalogowany

Druga kolumna informuje do jakiego pseudoterminala lub terminala dany użytkownik został przypisany.

Trzecia kolumna informuje czas kiedy zostało to uczynione.

Czwarta jaki jest PID procesu (będzie ważny jeśli będziemy niedelikatnie podziękować użytkownikowi)

Piąta kolumna informuje skąd nastąpiło logowanie (może to być adres IP lub lokalny terminal czyli tty)

Jeśli chcemy osunąć sesję użytkownika to wydajemy polecenie:

kill PID czyli w moim przypadku kill 1066

polecenie who z opcją -H pokazuje ładnie nam nagłówki kolumn.

Jak wiemy w systemie są nie tylko użytkownicy tzw standardowi (założeni przez administratora) ale również systemowi. Tworzeni są zazwyczaj na potrzeby konkretnych aplikacji.

Aby ich wyświetlić wydajemy polecenie:

who -Hl ##l jak lolek

Drugim narzedziem jest komenda w. Jest bardziej bogatszą wersją w informacje ale brakuje jej jednej ważnej informacji PID procesu. Trzeba szukać jaki proces ma użytkownik pseudoerminala/terminala.

ps -ef |awk '$9 ~ /pts/ { print $0 }'

bądź

ps -ef |awk '$9 ~ /pts/ || $6 ~ /tty/ { print $0 }'

Zdecydowanie polecam ostatnie polecenie. Ma najwięcej możliwość i związany jest z wraz z wprowadzeniem systemd.

Komenda loginctl -l pokazuje sesje użytkowników

Aby wyświetlić więcej informacji dotyczących sesji wykonujemy polecenie:

loginctl session-status id_sesji

Aby ubić sesję uzytkownika wydajemy polecenie:

loginctl terminate-session id_sesji

lub

loginctl kill-session id_sesji