január 29, 2022

hogyan láthatjuk, hogy a felhasználók mit csinálnak Linuxban

ha Linux szervert kezel, jó, ha készen áll számos parancsra, amelyek segítségével ellenőrizheti a felhasználói tevékenységeket – amikor a felhasználók bejelentkeznek, és milyen gyakran, milyen csoportokhoz tartoznak, mennyi lemezterületet fogyasztanak, milyen parancsot futtatnak, mennyi lemezterületet foglalnak el, ha olvassák a leveleiket és így tovább.

ebben a bejegyzésben számos olyan parancsot fogunk megvizsgálni, amelyek segítenek megérteni, hogy ki a felhasználó és hogyan működik.

finger

az egyik praktikus parancs a felhasználói profil megszerzéséhez az finger. Ez lehetővé teszi, hogy lássa, ki van bejelentkezve, vagy egyetlen felhasználóra összpontosítson az utolsó bejelentkezés megtekintéséhez, Honnan jelentkeztek be, mennyi ideig voltak tétlenek (mióta futtattak egy parancsot) stb. Ebben a parancsban a nemo felhasználót nézzük.

$ 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.

láthatjuk nemo teljes nevét, saját könyvtárát és shell-jét. Láthatjuk a nemo legutóbbi bejelentkezési és e-mail tevékenységét is. Az Office, az office phone és az otthoni telefonszámok csak akkor szerepelnek, ha az /etc/passwd fájlban vannak megadva a teljes név mezőben. Például:

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

a fenti kimenet azt is jelzi, hogy Nemónak nincs “terve”, de ez csak azt jelenti, hogy nem hozott létre egy .tervezze meg a fájlt, és tegyen bele egy kis szöveget; ez egyáltalán nem szokatlan.

argumentumok nélkül az finger megjeleníti az aktuális bejelentkezések listáját az alábbi formátumban. Láthatja, hogy mikor jelentkeztek be, az IP-címet, ahonnan bejelentkeztek, a használt pszeudo terminált (pl. pts/1), és mennyi ideig voltak tétlenek.

$ 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

A w parancs szépen formázott listát is tartalmaz az aktuálisan aktív felhasználókról, beleértve az üresjárati időt és a legutóbb futott parancsot. Azt is megjeleníti a felső sorban, hogy mennyi ideig a rendszer már fel, és megadja terhelési átlagok, amelyek jelzik, hogy milyen elfoglalt a rendszer. Ebben az esetben (0,00 az elmúlt 1, 5 és 15 percben) a rendszer nagyrészt tétlen.

$ 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

az id paranccsal megtekintheti a felhasználó numerikus azonosítóját és csoportazonosítóját, valamint azt, hogy a felhasználó milyen csoportoknak tagja. Ez az információ az /etc/passwd és /etc/group állományokból származik. Argumentumok nélkül az id jelenti a fiók adatait.

$ 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)

auth.log

az információkat a /var/log/auth könyvtárból lehet kirántani.naplófájl olyan parancsokkal, mint a grep. A legutóbbi bejelentkezési tevékenység megjelenítése az auth használatával.naplózási adatok, futtathat egy ilyen parancsot:

$ 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.

utolsó

az utolsó parancs valószínűleg a legjobb az összes felhasználó vagy egy személy legutóbbi bejelentkezéseinek megtekintéséhez. Ne feledje, hogy a last először a legfrissebb tevékenységet mutatja, mivel ez az az információ, amely a legtöbb adminisztrátort leginkább érdekli.

$ 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

a du parancs jelzi, hogy mennyi helyet használ az egyes felhasználók saját könyvtára, ha a /home minden könyvtárához hasonlóan fut:

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

alapértelmezés szerint a méretek 1024 bájtos egységekben jelennek meg.

ps and history

az aktuálisan bejelentkezett felhasználók számára mindig használhat olyan parancsokat, mint a ps-ef | grep ^nemo, hogy megnézze, milyen parancsokat és folyamatokat futtat a felhasználó. A korábban futtatott parancsok megtekintéséhez próbálja meg megvizsgálni a felhasználók előzményfájljait (pl., .bash_history), de vegye figyelembe, hogy a felhasználók úgy állíthatják be a fiókjukat, hogy bizonyos parancsok ne legyenek rögzítve az előzményfájljaikban, és ha úgy döntenek, szerkeszthetik ezeket a fájlokat is.

bejelentkezések számlálása

ha meg szeretné tekinteni, hogy az egyes felhasználók hányszor jelentkeztek be a /var/log/wtmp fájl utolsó átfordítása óta, használhat egy ehhez hasonló parancsot:

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

a kimenet így fog kinézni:

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

ha további részletekre van szüksége, összeállíthat egy összetettebb szkriptet, amely további információkat adhat hozzá, például a bejelentkezési adatokat és a formázást.

#!/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

a fenti szkript a legutóbbi öt bejelentkezésre korlátozza a megjelenített adatokat, de ezt könnyen megváltoztathatja, ha úgy tetszik. Itt van, hogy az adatok egy felhasználó lenne formázva:

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)

sudo kísérletek ellenőrzése

ha szeretné látni, hogy valamelyik felhasználó megpróbálja-e használni a sudo-t, amikor nincs beállítva erre a jogosultságra, futtathat egy ilyen parancsot:

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

ha valaha is megpróbálta használni a sudo-t olyan helyzetben, amikor nem jogosult a jogosultságok emelésére, és a rendszer azzal fenyeget, hogy “a felhasználónév nincs a sudoers fájlban. Ezt az esetet jelenteni fogják:” lehet, hogy élvezni fogja, hogy ez a naplóbejegyzés a jelentés lényege. Hacsak az admin nem tesz erőfeszítéseket a sudo vétségek keresésére, észrevétlenül maradnak.

Wrap-up

sok parancs van a Linux rendszereken, amelyek segítenek ellenőrizni a felhasználói tevékenységet. Remélem, hogy az ebben a bejegyzésben bemutatottak közül néhány hasznosnak bizonyul.

a bmon parancs használata: 2 perces Linux tippek

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.