如果你管理一个Linux服务器,最好准备一些命令,您可以使用它们来检查用户活动——当你的用户登录和多久,他们属于什么组织,他们每天消耗多少磁盘空间,他们正在运行什么命令,多少磁盘空间占用,如果他们正在阅读邮件和更多。
在这篇文章中,我们将看到一些可以帮助你理解你的用户是谁以及他们是如何工作的命令。
手指
获取用户配置文件的一个方便命令是手指。它允许您查看谁登录了,或者关注单个用户,查看他们最近的登录,从哪里登录的,他们空闲了多长时间(他们运行一个命令有多长时间),等等。在这个命令中,我们看到的是用户nemo。
$ finger nemo登录:nemo Name: nemo Demo目录:/home/nemo Shell: /bin/bash自6月19日星期五12:58 (EDT)自192.168.0.6 pts/1 7分47秒空闲新邮件收到6月17日星期三18:31 (EDT)自6月13日18:03 (EDT)未读。
我们可以看到nemo的全名、主目录和shell。我们还可以看到尼莫最近的登录和电子邮件活动。中定义的办公室、办公室电话和家庭电话号码才包括在内/ etc / passwd文件的全名字段。例如:
尼莫:x: 1001:1001:尼莫的演示,11540 - 222 - 2222,540-333-3333:/ home /尼莫:/ bin / bash)。
上面的输出还表明,nemo没有一个“计划”,但这仅仅意味着他没有创建一个“计划”.plan将一些文本放入文件中;这一点也不奇怪。
没有参数,手指将以如下所示的格式显示当前登录的列表。您可以看到他们何时登录,他们登录的IP地址,使用的伪终端(例如pts/1),以及他们空闲了多长时间。
$ finger Login Name Tty Idle Login Time Office Office Phone nemo Demo pts/1 1:24 Jun 19 12:58 (192.168.0.6) shs Sandr雷竞技投注下载a henly - stocker pts/0 6月19日12:57 (192.168.0.60
w
的wcommand还提供了一个格式良好的当前活动用户列表,包括空闲时间和最近运行的命令。它还在顶部一行中显示系统已经运行了多长时间,并提供了表明系统有多忙的平均负载。在这种情况下(1、5和15分钟为0.00),系统基本上处于空闲状态。
$ w 14:23:19起1天,20:24,2个用户,加载平均:0.00,0.00,0.00用户TTY从登录@ IDLE JCPU PCPU什么shs pts/0 192.168.0.6 12:57 0.14s 0.01s w nemo pts/1 192.168.0.6 12:58 1:24m 0.03 0.03 -bash
id
与id命令中,可以查看用户的数字ID和组ID以及用户所属的组。该信息是从/ etc / passwd和所属文件。不带参数,id为您的帐户报告信息。
$ id uid=1000(shs) gid=1000(shs)组=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)组=1001(nemo),16(fish)
auth.log
你可以从/var/log/auth.log具有以下命令的文件grep。使用。显示最近的登录活动auth.log数据,您可以运行如下命令:
$ grep "New session" /var/log/auth.log | awk '{打印$1,$2,$3,$11}' |尾部-5 Jun 17 17:22:38 shs6月17日17:58:43 gdm。6月17日18:09:58嘘。6月19日12:57:36嘘。6月19日12:58:44尼莫。
去年
的去年命令可能是查看所有用户或单个用户最近登录的最佳方法。只要记住去年首先显示最近的活动,因为这是大多数管理员最感兴趣的信息。
去年|头5美元nemo分/ 1 192.168.0.6星期五6月19日12:58仍然登录啦pts / 0 192.168.0.6星期五6月19日12:57仍然登录啦pts / 0 192.168.0.6结婚6月17 - 18 18:42(00:32)重新引导系统启动5.4.0-37-generic结婚6月17 17:58仍然运行无分/ 2 192.168.0.6结婚6月17日17:22 - 17:57(00:34)去年尼莫|头5美元
6月19日星期五12:58 - 16:21 (03:22)
周六6月13日17:49 - 19:05 (01:16)
6月4日星期四17:33 - 17:44 (00:10)
5月11日星期一19:04 - 19:57 (00:52)
5月5日星期二12:46 - 17:49 (05:02)
杜
的杜中的每个目录运行时,命令将报告每个用户的主目录使用了多少空间/家庭是这样的:
$ 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和历史
对于当前登录的用户,您可以始终使用以下命令ps -ef | grep ^nemo查看用户当前正在运行的命令和进程。要查看以前运行的命令,可以尝试查看用户的历史文件(例如,. bash_history),但请注意,用户可以设置他们的帐户,这样某些命令就不会被记录在他们的历史文件中,而且如果他们愿意,他们还可以编辑这些文件。
计算登录
如果您想查看您的每个用户自/var/log/wtmp文件最后滚动,您可以使用如下命令:
$ for USER in ' ls /home ' > do > cnt= ' last $USER | grep ^$USER | wc -l ' # count登录> echo $USER: $cnt #显示登录计数>完成
输出将是这样的:
多萝西:0多莉:0鳗鱼:8吉诺:0杰普:102尼莫:39鲨鱼:50嘘:105蝌蚪:0
如果需要更多细节,可以将更复杂的脚本放在一起,添加一些额外的信息,如登录细节和格式。
# !/bin/bash sepline = " = = = = = = = = = = = = = = = = = = = = "为用户在ls /家庭的len =“echo $ USER | awk”{打印长度(0美元)}“# 9月得到用户名长度echo $ USER = " $ {sepline: 1: $ len}”#集分离器echo $ 9 #打印分离器cnt = '去年$ USER | grep ^ $ USER | wc - l’#计数登录回声登录:问#显示登录数去年用户美元| grep ^ $ USER |头5 #显示最近登录回声
上面的脚本将显示的数据限制为最近的5次登录,但是如果您愿意,可以轻松更改。以下是一个用户的数据如何格式化:
啦= = =登录:105无分/ 0 192.168.0.6星期五6月19日12:57仍然登录啦pts / 0 192.168.0.6结婚6月17 - 18 18:42(00:32)合成pts / 2 192.168.0.6结婚6月17日17:22 - 17:57(00:34)无分/ 0 192.168.0.25结婚6月17日十七20 - 17:57(00:36)无分/ 1 192.168.0.6 6月17日结婚十五19 - 17:57 (02:38)
检查sudo尝试
如果你想看看你的用户是否正在尝试使用sudo当它们没有被设置为具有此特权时,您可以运行如下命令:
$ grep "NOT in sudoers" /var/log/auth.log | awk '{打印$6}' nemo
如果你曾经尝试过sudo如果您没有被授权提升权限,并且系统威胁您说“用户名不在sudoers文件中”。该事件将被报告,”您可能希望知道这个日志条目是该报告的本质。除非管理员努力寻找sudo他们会被忽视的。
总结
Linux系统上有很多命令可以帮助您检查用户活动。我希望这篇文章中提到的一些会被证明是有用的。