【.com编辑】如果你正在管理Linux服务器,最好准备好使用多个命令来检查用户活动——用户登录的时间和频率,他们属于哪些用户组,有多少他们消耗的磁盘空间、运行什么命令、占用了多少磁盘空间、您是否正在阅读邮件等。本文介绍了几个命令,可以帮助您了解您的用户是谁以及他们如何工作。fingerfinger是获取用户配置文件的便捷命令。它允许您查看谁登录或关注单个用户以查看他们上次登录的时间、他们从哪里登录、他们闲置了多长时间(自他们运行命令以来多长时间)等。在这个命令中,我们看用户nemo。$fingernemoLogin:nemoName:NemoDemoDirectory:/home/nemoShell:/bin/bashOnsinceFriJun1912:58(EDT)onpts/1from192.168.0.67minutes47secondsideNewmailreceivedWedJun1718:312020(EDT)UnreadsinceSatJun1318(EDT)2home目录和nemo's电子邮件活动。只有在/etc/passwd文件的全名字段中定义了办公室、办公室电话和家庭电话号码时,才会包括此信息。例如:nemo:x:1001:1001:NemoDemo,11,540-222-2222,540-333-3333:/home/nemo:/bin/bash)。上面的输出还显示nemo没有“计划”,但这只是意味着用户没有创建.plan文件并在其中放入一些文本。这并不罕见。如果没有参数,finger将以如下所示的格式显示当前登录列表。您可以查看他们登录的时间、使用的IP地址、使用的伪终端(如pts/1)以及空闲时间。$fingerLoginNameTtyIdleLoginTimeOfficeOfficePhonenemoNemoDemopts/11:24Jun1912:58(192.168.0.6)shsSandraHenry-Stockerpts/0Jun1912:57(192.168.0.60ww命令还在格式清晰的列表中显示当前活动用户,包括空闲时间、用户最近运行的命令。它还在顶行显示系统运行了多长时间,并提供了一个负载平均数,显示系统有多忙。这里系统基本上是空闲的。$w14:23:19up1day,20:24,2users,loadaverage:0.00,0.00,0.00USERTTYFROMLOGIN@IDLEJCPPUPCPUWHATshspts/0192.168.0.612:570.00s0.14s0.01swnemopts/1192.168.0.612:581:24m0.03s0.03s-bashid如果使用id命令可以查看用户组ID的数字ID以及用户属于哪些用户组。此信息是从/etc/passwd文件和/etc/group文件中获得的。不带参数的id报告有关您的帐户的信息。$iduid=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)$idnemouid=1001(nemo)gid=1001(nemo)groups=1001(nemo),16(fish)auth.log你可以使用grep之类的命令从/var/log/auth.log文件获取信息。要使用auth.log数据显示最近的登录活动,您可以运行如下命令:$grep"Newsession"/var/log/auth.log|awk'{print$1,$2,$3,$11}'|tail-5Jun1717:22:38shs.Jun1717:58:43gdm.Jun1718:09:58shs.Jun1912:57:36shs.Jun1912:58:44nemo.lastlast命令可能最适合查看所有用户或仅一个用户的最近登录。要记住的一件事:last首先显示最近的活动,因为这是大多数管理员最感兴趣的信息。$last|head-5nemopts/1192.168.0.6FriJun1912:58stillloggedinshspts/0192.168.0.6FriJun1912:57stillloggedinshspts/0192.168.0.6WedJun1718:10-18:42(00:32)rebootsystemboot5.4.0-37-genericWedJun1717:58stillrunningshspts/2192.168.0.6WedJun1717:22-17:57(00:34)$lastnemo|head-5nemopts/1192.168.0.6FriJun1912:58-16:21(03:22)nemopts/2192.168.0.6SatJun1317:49-19:05(01:16)nemopts/1192.168.0.6ThuJun417:33-17:44(00:10)nemopts/1192.168.0.19MonMay1119:04-19:57(00:52)nemopts/1192.168.0.19TueMay512:46-17:49(05:02))du如果针对/home中的每个目录运行,du命令将报告每个用户的主目录使用了多少空间,如下所示:$sudodu-sk/home/*289/home/dorothy116/home/dory88/home/eel28/home/gino28/home/jadep12764/home/nemo732/home/shark418046/home/shs108/home/tadpole默认情况下,报告的大小以1024字节为单位。ps和history适用于当前登录的用户,您始终可以使用ps-ef|之类的命令grep^nemo查看用户当前正在运行的命令和进程。要查看以前运行的命令,请尝试查看用户的历史文件(如.bash_history),但请注意,用户可以设置帐户,以便历史文件中不会捕获某些命令,并且他们还可以编辑这些文件,如果你选择这样做。计算登录次数如果您想查看自/var/log/wtmp文件上次滚动以来每个用户登录的次数,您可以使用如下命令:$forUSERin`ls/home`>do>cnt=`last$USER|grep^$USER|wc-l`#countlogins>echo$USER:$cnt#showlogincount>done输出将如下所示:dorothy:0dory:0eel:8gino:0jadep:102nemo:39shark:50shs:105tadpole:0如果你想要更多的细节,可以创建一个更复杂的脚本来添加额外的信息,比如登录细节和格式。#!/bin/bashsepline="======================"forUSERin`ls/home`dolen=`echo$USER|awk'{printlength($0)}'`#getlengthofusernameecho$USERsep="${sepline:1:$len}"#setseparatorecho$sep#printseparatorcnt=`last$USER|grep^$USER|wc-l`#countloginsechologins:$cnt#showlogincountlast$USER|grep^$USER|head-5#showmostrecentloginsechodone上面的脚本将显示的数据限制为最后五次登录,但您可以轻松更改它。用户数据如下所示:shs===logins:105shspts/0192.168.0.6FriJun1912:57stillloggedinshspts/0192.168.0.6WedJun1718:10-18:42(00:32)shspts/2192.168.0.6WedJun1717:22-1757(00:34)shspts/0192.168.0.25WedJun1717:20-17:57(00:36)shspts/1192.168.0.6WedJun1715:19-17:57(02:38)检查是否尝试sudo如果你想看哪些用户正在尝试使用sudo,但他们没有此权限,您可以运行此命令:$grep"NOTinsudoers"/var/log/auth.log|awk'{print$6}'nemo如果您尝试在没有权限的情况下使用sudo提升和警告消息“用户名不在sudoers文件中。将报告该事件”,您可能知道此日志条目是报告的主要内容。除非管理员不遗余力地发现sudo使用违规,否则他们不会被注意到。原标题:HowtoassessuseractivityinLinux,作者:SandraHenry-Stocker
