Linux用户行为分析具体方法

无论何时,都要对用户的所有行为做到记录和可追溯,这在解决一些疑难杂症的时候很有帮助,因为你不知道什么时候会有些牛鬼蛇神对机器做些匪夷所思的操作,下面为大家详细讲解一下Linux用户行为分析。

finger命令

‎finger是获取用户个人资料的一个便捷命令。 它使您可以查看谁已登录或专注于单个用户,以查看上一次登录、他们从何处登录、闲置时间有多久(自运行命令以来有多久)等。 在该命令中, 我们查看用户nemo。‎

$ finger nemo  
Login: nemo Name: Nemo Demo  
Directory: /home/nemo Shell: /bin/bash  
On since Fri Jun 19 12:58 (EDT) on pts/1 from 192.168.0.6  
7 minutes 47 seconds idle  
New mail received Wed Jun 17 18:31 2020 (EDT)  
Unread since Sat Jun 13 18:03 2020 (EDT)  
No Plan.

‎我们可以看到nemo的全名、主目录和外壳,还可以看到nemo的最新登录和电子邮件活动。 仅在/etc/passwd文件中的全名字段中定义了办公室、办公室电话和家庭电话号码,这些信息才包括在内。 比如说:‎

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

‎上面的输出还表明nemo没有“计划”,但这只是意味着该用户没有创建.plan文件、并将一些文本放入其中。 这并不罕见。‎

‎如果没有参数,finger将以如下所示的格式显示当前登录列表。 您可以看到他们何时登录、从哪个IP地址登录、使用中的伪终端(比如pts/1)以及闲置了多久。‎

$ finger  
Login Name Tty Idle Login Time Office Office Phone  
nemo 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命令

‎w命令也以一份格式清晰的列表显示了目前活动的用户,包括闲置时间、用户最近运行了什么命令。 它还在最上面一行显示系统已运行了多久,并提供负载平均数字,表明系统有多忙碌。 在这里,系统基本上处于闲置状态。‎

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

id命令

‎如果使用id命令,您可以查看用户的数值ID和用户组ID以及该用户是哪些用户组的成员。 这些信息从/etc/passwd文件和/etc/group文件获取而来。 没有参数的id报告您帐户的信息。‎

$ id  
uid=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 nemo  
uid=1001(nemo) gid=1001(nemo) groups=1001(nemo),16(fish)  
auth.log

‎您可以使用grep之类的命令从/var/log/auth.log文件获取信息。 为了使用auth.log数据显示最近登录活动,您可以运行这样的命令:‎

$ grep "New session" /var/log/auth.log | awk '{print $1,$2,$3,$11}' | tail -5  
Jun 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命令

‎last命令可能最擅长查看所有用户或某一个用户的最近登录。 记住一点:last首先显示最近的活动,因为这是大多数管理员最感兴趣的信息。‎

$ last | head -5  
nemo pts/1 192.168.0.6 Fri Jun 19 12:58 still logged in  
shs pts/0 192.168.0.6 Fri Jun 19 12:57 still logged in  
shs 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 running  
shs 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命令

如果针对/home中的每个目录运行,du命令会报告每个用户的主目录在使用多少空间,就像这样:

$ sudo du -sk /home/*  
289 /home/dorothy  
116 /home/dory  
88 /home/eel  
28 /home/gino  
28 /home/jadep  
12764 /home/nemo  
732 /home/shark  
418046 /home/shs  
108 /home/tadpole

默认情况下,报告的大小以1024字节为单位。

ps和history命令

‎针对当前登录的用户,您始终可以使用ps -ef | grep ^nemo之类的命令,查看用户目前在运行哪些命令和进程。 想查看以前运行的命令,可以试着查看用户的历史记录文件(比如.bash_history),不过要注意,用户可以设置帐户,以便某些命令不被捕获到历史记录文件中,他们还可以编辑这些文件,如果选择这么做的话。‎

统计登录次数

如果您想查看自/var/log/wtmp文件上一次翻转以来每个用户登录的次数,可以使用这样的命令:

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

输出会像是这样:

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

如果您想要更多的细节,可以创建一个较复杂的脚本,以便添加另外一些信息,比如登录细节和格式。

#!/bin/bash  
sepline="===================="  
for USER in `ls /home`  
do  
len=`echo $USER | awk '{print length($0)}'# 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  echo  
done

‎上述‎‎脚本‎‎将显示的数据限制在最近的五次登录,但是您可以轻松改变。 以下是一个用户的数据的格式会什么样:‎

shs  
===  
logins: 105  
shs pts/0 192.168.0.6 Fri Jun 19 12:57 still logged in  
shs 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的情况

如果您想看看用户中有谁企图使用sudo、而他们本无这项权限,可以运行这样的命令:

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

‎如果您在无权提升权限的情况下试图使用sudo,而系统发出警告信息“用户名不在sudoers文件中。 将报告该事件”,您可能会知道这个日志条目是该报告的精髓。 除非管理员竭力寻找sudo使用违规,否则它们不会被人注意。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/222628.html<

(0)
管理的头像管理
上一篇2025-04-15 14:18
下一篇 2025-04-15 14:20

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注