29 stycznia, 2022

Jak sprawdzić, co robią użytkownicy w Linuksie

jeśli zarządzasz serwerem Linuksowym, dobrze jest być gotowym z wieloma poleceniami, których możesz użyć do sprawdzenia aktywności użytkownika – Kiedy użytkownicy logują się i jak często, do jakich grup należą, ile miejsca zajmują na dysku, jakie polecenia uruchamiają, ile miejsca zajmują na dysku, czy czytają pocztę i wiele innych.

w tym poście przyjrzymy się kilku poleceniom, które pomogą Ci zrozumieć, kim jest Twój użytkownik i jak działa.

finger

jednym z przydatnych poleceń do uzyskania profilu użytkownika jest finger. Pozwala zobaczyć, kto jest zalogowany lub skupić się na pojedynczym użytkowniku, aby zobaczyć jego Ostatnie logowanie, skąd się zalogował, jak długo był bezczynny (jak długo nie uruchomił polecenia) itp. W tym poleceniu patrzymy na użytkownika nemo.

$ finger nemoLogin: nemo Name: Nemo DemoDirectory: /home/nemo Shell: /bin/bashOn since Fri Jun 19 12:58 (EDT) on pts/1 from 192.168.0.6 7 minutes 47 seconds idleNew mail received Wed Jun 17 18:31 2020 (EDT) Unread since Sat Jun 13 18:03 2020 (EDT)No Plan.

widzimy pełną nazwę nemo, katalog domowy i powłokę. Możemy również zobaczyć Ostatnie logowanie i aktywność e-mailową nemo. Office, office phone i home phone są dołączane tylko wtedy, gdy są zdefiniowane w pliku /etc/passwd w polu pełna nazwa. Na przykład:

nemo:x:1001:1001:Nemo Demo,11,540-222-2222,540-333-3333:/home/nemo:/bin/bash).

wynik powyżej wskazuje również, że nemo nie ma „planu”, ale to po prostu oznacza, że nie stworzył .zaplanuj plik i umieść w nim jakiś tekst; to wcale nie jest niezwykłe.

bez argumentów finger wyświetli listę bieżących logowań w formacie pokazanym poniżej. Możesz zobaczyć, kiedy się zalogowali, adres IP, z którego się zalogowali, używany pseudo terminal (np. pts / 1) i jak długo byli bezczynni.

$ fingerLogin Name Tty Idle Login Time Office Office Phonenemo Nemo Demo pts/1 1:24 Jun 19 12:58 (192.168.0.6)shs Sandra Henry-Stocker pts/0 Jun 19 12:57 (192.168.0.60

w

polecenie w zapewnia również ładnie sformatowaną listę aktualnie aktywnych użytkowników, w tym czas bezczynności i to, jakie polecenie ostatnio uruchomili. Wyświetla również w górnej linii, jak długo system był włączony i podaje średnie obciążenia, które wskazują, jak zajęty jest system. W tym przypadku (0.00 za ostatnie 1, 5 i 15 minut) system jest w dużej mierze bezczynny.

$ w 14:23:19 up 1 day, 20:24, 2 users, load average: 0.00, 0.00, 0.00USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATshs pts/0 192.168.0.6 12:57 0.00s 0.14s 0.01s wnemo pts/1 192.168.0.6 12:58 1:24m 0.03s 0.03s -bash

id

za pomocą polecenia id możesz wyświetlić numeryczny identyfikator użytkownika i identyfikator grupy wraz z grupami, do których użytkownik jest członkiem. Informacje te są pobierane z plików/etc / passwd i/etc / group. Bez argumentów id zgłasza informacje dotyczące Twojego konta.

$ iduid=1000(shs) gid=1000(shs) groups=1000(shs),4(adm),11(admin),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),128(sambashare),500(devops)$ id nemouid=1001(nemo) gid=1001(nemo) groups=1001(nemo),16(fish)

log

możesz pobrać informacje z /var / log / auth.plik dziennika z poleceniami takimi jak grep. Aby wyświetlić najnowszą aktywność logowania przy użyciu auth.log danych, możesz uruchomić takie polecenie:

$ grep "New session" /var/log/auth.log | awk '{print ,,,}' | tail -5Jun 17 17:22:38 shs.Jun 17 17:58:43 gdm.Jun 17 18:09:58 shs.Jun 19 12:57:36 shs.Jun 19 12:58:44 nemo.

last

ostatnie polecenie jest prawdopodobnie najlepsze do przeglądania ostatnich logowań dla wszystkich użytkowników lub jednej osoby. Pamiętaj tylko, że last pokazuje najpierw najnowszą aktywność, ponieważ jest to informacja, którą większość administratorów jest najbardziej zainteresowana.

$ last | head -5nemo pts/1 192.168.0.6 Fri Jun 19 12:58 still logged inshs pts/0 192.168.0.6 Fri Jun 19 12:57 still logged inshs pts/0 192.168.0.6 Wed Jun 17 18:10 - 18:42 (00:32)reboot system boot 5.4.0-37-generic Wed Jun 17 17:58 still runningshs pts/2 192.168.0.6 Wed Jun 17 17:22 - 17:57 (00:34)$ last nemo | head -5
nemo pts/1 192.168.0.6 Fri Jun 19 12:58 - 16:21 (03:22)
nemo pts/2 192.168.0.6 Sat Jun 13 17:49 - 19:05 (01:16)
nemo pts/1 192.168.0.6 Thu Jun 4 17:33 - 17:44 (00:10)
nemo pts/1 192.168.0.19 Mon May 11 19:04 - 19:57 (00:52)
nemo pts/1 192.168.0.19 Tue May 5 12:46 - 17:49 (05:02)

du

polecenie du poinformuje, ile miejsca zajmuje katalog domowy każdego użytkownika, jeśli zostanie uruchomione przeciwko każdemu katalogowi w /home w ten sposób:

$ sudo du -sk /home/*289 /home/dorothy116 /home/dory88 /home/eel28 /home/gino28 /home/jadep12764 /home/nemo732 /home/shark418046 /home/shs108 /home/tadpole

domyślnie rozmiary są zgłaszane w jednostkach po 1024 bajty.

ps i historia

w przypadku aktualnie zalogowanych użytkowników zawsze możesz użyć poleceń takich jak ps-EF / grep ^nemo, aby zobaczyć, jakie polecenia i procesy są aktualnie uruchomione przez użytkownika. Aby wyświetlić poprzednio uruchomione polecenia, możesz spróbować zajrzeć do plików historii użytkowników (np.bash_history), ale zauważ, że użytkownicy mogą skonfigurować swoje konta tak, aby niektóre polecenia nie były przechwytywane w ich plikach historii, a także mogą edytować te pliki, jeśli tak zdecydują.

liczenie loginów

jeśli chcesz zobaczyć, ile razy każdy z Twoich użytkowników zalogował się od ostatniego przewrócenia pliku / var/ log / wtmp, możesz użyć polecenia takiego jak ta:

$ for USER in `ls /home`> do> cnt=`last $USER | grep ^$USER | wc -l` # count logins> echo $USER: $cnt # show login count> done

wyjście będzie wyglądać mniej więcej tak:

dorothy: 0dory: 0eel: 8gino: 0jadep: 102nemo: 39shark: 50shs: 105tadpole: 0

jeśli chcesz uzyskać więcej szczegółów, możesz połączyć bardziej złożony skrypt, który może dodać dodatkowe informacje, takie jak dane logowania i formatowanie.

#!/bin/bashsepline="===================="for USER in `ls /home`do len=`echo $USER | awk '{print length()}'` # get length of username echo $USER sep="${sepline:1:$len}" # set separator echo $sep # print separator cnt=`last $USER | grep ^$USER | wc -l` # count logins echo logins: $cnt # show login count last $USER | grep ^$USER | head -5 # show most recent logins echodone

powyższy skrypt ogranicza wyświetlane dane do ostatnich pięciu logowań, ale możesz to łatwo zmienić, jeśli chcesz. Oto jak dane dla jednego użytkownika zostaną sformatowane:

shs===logins: 105shs pts/0 192.168.0.6 Fri Jun 19 12:57 still logged inshs pts/0 192.168.0.6 Wed Jun 17 18:10 - 18:42 (00:32)shs pts/2 192.168.0.6 Wed Jun 17 17:22 - 17:57 (00:34)shs pts/0 192.168.0.25 Wed Jun 17 17:20 - 17:57 (00:36)shs pts/1 192.168.0.6 Wed Jun 17 15:19 - 17:57 (02:38)

sprawdzanie prób sudo

jeśli chcesz sprawdzić, czy któryś z Twoich użytkowników próbuje używać sudo, gdy nie jest skonfigurowany, aby mieć ten przywilej, możesz uruchomić polecenie takie jak to:

$ grep "NOT in sudoers" /var/log/auth.log | awk '{print }'nemo

jeśli kiedykolwiek próbowałeś użyć sudo w sytuacji, gdy nie masz uprawnień do podniesienia swoich uprawnień i system groził Ci ” nazwa użytkownika nie znajduje się w pliku sudoers. Ten incydent zostanie zgłoszony, ” możesz cieszyć się wiedząc, że ten wpis w dzienniku jest istotą tego raportu. O ile admin nie podejmie próby szukania wykroczeń sudo, pozostaną niezauważone.

Wrap-up

w systemach Linux istnieje wiele poleceń, które mogą pomóc w sprawdzaniu aktywności użytkownika. Mam nadzieję, że niektóre z tych przedstawionych w tym poście okażą się przydatne.

jak korzystać z polecenia bmon: 2-minutowe Wskazówki dotyczące Linuksa

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.