jak zjistit, co uživatelé dělají v Linuxu
Pokud spravujete linuxový server, je dobré být připraven s řadou příkazů, které můžete použít ke kontrole aktivity uživatelů – když se uživatelé přihlašují a jak často, do jakých skupin patří, kolik místa na disku spotřebovávají, Jaký příkaz běží, kolik místa na disku zabírají, pokud čtou poštu a další.
v tomto příspěvku se podíváme na řadu příkazů, které vám pomohou pochopit, kdo je váš uživatel a jak fungují.
finger
jeden šikovný příkaz pro získání uživatelského profilu je finger. To vám umožní zjistit, kdo je přihlášen, nebo se zaměřit na jednoho uživatele, aby si prohlédli své poslední přihlášení, odkud se přihlásili, jak dlouho byli nečinní (jak dlouho od spuštění příkazu) atd. V tomto příkazu se díváme na uživatele 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.
můžeme vidět celé jméno nemo, domovský adresář a shell. Můžeme také vidět nejnovější přihlašovací a e-mailovou aktivitu nemo. Office, office telefon a domácí telefonní čísla jsou zahrnuty pouze v případě, že jsou definovány v souboru / etc/passwd v poli celé jméno. Například:
nemo:x:1001:1001:Nemo Demo,11,540-222-2222,540-333-3333:/home/nemo:/bin/bash).
výše uvedený výstup také naznačuje, že nemo nemá „plán“, ale to jen znamená, že nevytvořil.naplánujte soubor a vložte do něj nějaký text; to není vůbec neobvyklé.
bez argumentů finger zobrazí seznam aktuálních přihlašovacích údajů ve formátu uvedeném níže. Můžete vidět, kdy se přihlásili, IP adresu, ze které se přihlásili, používaný pseudo terminál (např.
$ 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
příkaz w také poskytuje pěkně formátovaný seznam aktuálně aktivních uživatelů, včetně doby nečinnosti a toho, jaký příkaz Naposledy spustili. Zobrazuje také v horním řádku, jak dlouho byl systém nahoře, a poskytuje průměry zatížení, které ukazují, jak je systém zaneprázdněn. V tomto případě (0,00 za posledních 1, 5 a 15 minut) je systém do značné míry nečinný.
$ 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
pomocí příkazu id můžete zobrazit číselné ID uživatele a ID skupiny spolu s tím, jaké skupiny je uživatel členem. Tato informace je vytažena ze souborů/etc /passwd a/etc / group. Bez argumentů, id hlásí informace pro váš účet.
$ 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
informace můžete stáhnout z / var/log / auth.soubor protokolu s příkazy jako grep. Chcete-li zobrazit nejnovější přihlašovací aktivitu pomocí auth.data protokolu, můžete spustit příkaz, jako je tento:
$ 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.
Poslední
poslední příkaz je pravděpodobně nejlepší pro prohlížení posledních přihlášení pro všechny uživatele nebo jednoho jednotlivce. Jen si pamatujte, že poslední zobrazuje nejnovější aktivitu jako první, protože to jsou informace, o které se většina administrátorů nejvíce zajímá.
$ 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
příkaz du oznámí, kolik místa domovský adresář každého uživatele používá, pokud je spuštěn proti každému adresáři v / home, jako je tento:
$ sudo du -sk /home/*289 /home/dorothy116 /home/dory88 /home/eel28 /home/gino28 /home/jadep12764 /home/nemo732 /home/shark418046 /home/shs108 /home/tadpole
ve výchozím nastavení jsou velikosti hlášeny v jednotkách 1024 bajtů.
ps a historie
pro aktuálně přihlášené uživatele můžete vždy použít příkazy jako ps-ef / grep ^nemo, abyste zjistili, jaké příkazy a procesy uživatel právě běží. Chcete-li zobrazit příkazy dříve spuštěné, můžete se pokusit podívat do souborů historie uživatelů (např.bash_history), ale všimněte si, že uživatelé mohou nastavit své účty tak, aby některé příkazy nejsou zachyceny ve svých souborech historie, a oni také mohou upravovat tyto soubory, pokud se tak rozhodnou.
počítání přihlášení
pokud chcete zobrazit, kolikrát se každý z vašich uživatelů přihlásil od posledního převrácení souboru /var/log / wtmp, můžete použít příkaz, jako je tento:
$ for USER in `ls /home`> do> cnt=`last $USER | grep ^$USER | wc -l` # count logins> echo $USER: $cnt # show login count> done
výstup bude vypadat takto:
dorothy: 0dory: 0eel: 8gino: 0jadep: 102nemo: 39shark: 50shs: 105tadpole: 0
pokud chcete více podrobností, můžete dát dohromady složitější skript, který může přidat další informace, jako jsou přihlašovací údaje a formátování.
#!/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
výše uvedený skript omezuje zobrazená data na posledních pět přihlášení, ale pokud chcete, můžete to snadno změnit. Zde je návod, jak by byla data pro jednoho uživatele formátována:
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)
kontrola pokusů o sudo
pokud chcete zjistit, zda se některý z vašich uživatelů pokouší použít sudo, když není nastaven tak, aby měl toto oprávnění, můžete spustit příkaz, jako je tento:
$ grep "NOT in sudoers" /var/log/auth.log | awk '{print }'nemo
pokud jste se někdy pokusili použít sudo v situaci, kdy nejste oprávněni zvýšit svá oprávnění a systém vám vyhrožoval “ uživatelské jméno není v souboru sudoers. Tento incident bude hlášen, “ možná se vám bude líbit vědět, že tato položka protokolu je podstatou této zprávy.“. Pokud se administrátor nebude snažit hledat prohřešky sudo, zůstanou bez povšimnutí.
Wrap-up
v systémech Linux je mnoho příkazů, které vám mohou pomoci zkontrolovat aktivitu uživatele. Doufám, že některé z těch, které jsou uvedeny v tomto příspěvku, se ukáží jako užitečné.