Linux系统管理工具包 监视用户的使用情况Word文档下载推荐.docx
- 文档编号:17707636
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:12
- 大小:22.27KB
Linux系统管理工具包 监视用户的使用情况Word文档下载推荐.docx
《Linux系统管理工具包 监视用户的使用情况Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Linux系统管理工具包 监视用户的使用情况Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
-H选项用于为输出中的各列添加标题信息。
您可以参见清单4中给出的示例。
清单4.带-a和-H选项的who命令
1.$who-aH
2.NAME
LINE
TIME
IDLE
PID
COMMENTS
3.
.
systemboot
Sep1211:
35
4.
run-level3
35
3
0
S
5.zsmon
Sep1211:
3:
14
215
6.LOGIN
console
0:
20
221
7.LOGIN
510
(:
0)
8.mc
+pts/2
569
9.mcbrown
+pts/3
12
675
通过开头的两行,您可以了解最近一次启动系统的时间,以及最近一次运行级别更改的日期和详细情况。
这里所显示的计算机正在运行Solaris,并且它使用zsmon守护进程来监视串行端口上的登录。
然后,您将拥有两个到控制台的、标记的登录,其中一个是活动用户的登录,而另一个则附加到X服务器(:
0表示X窗口系统的屏幕参考)。
最后的两行是使用安全Shell(SSH)的远程登录。
对于所有的活动进程,您都将获取一个进程ID,这意味着您可以在ps列表中通过ID来识别原始用户。
LINE列是用户所连接到的终端;
控制台显然是该计算机的主键盘和监视器。
pts行指的是自动创建的、用以处理远程SSH连接的伪终端。
当然,了解谁正在使用本地计算机是一件很有趣的工作,但是对于网络中其他的计算机,情况又如何呢?
获取远程用户的信息
有两个后台服务可以提供远程用户的信息,它们分别是rusers和rwho,分别通过两个守护进程rusersd(通常称为in.rusersd)和rwhod(也称为in.rwhod)来实现。
这两个服务都依赖于远程过程调用(RemoteProcedureCall,RPC)协议,以便在整个网络的范围内共享信息。
以前一直认为,启用rwhod和rusersd是对网络资源的浪费,因为这两个守护进程在网络中不断地广播信息,从而占用了带宽。
在拥有大量主机的网络中,所生成的信息量可能是非常大的。
现在,与网络的传输速度相比,所生成的信息量相对较小。
rwhod和rusersd在所有的系统中都是不可用的,但是对于那些提供了相应工具的系统来说,使用这些工具可以很容易地获取您所想要的信息。
如果这些工具还没有运行,那么您需要启动in.rwhod和in.rusersd守护进程。
一旦这两个守护进程开始运行,您就可以使用各种各样的工具输出所有计算机的相关信息。
rwho工具是who工具的远程、支持网络的版本。
清单5给出了一个示例。
清单5.rwho工具
1.$rwho-a
solaris-desktop:
consoleSep1211:
41
3.mc
pts/1
32
:
06
4.mc
ultra3:
29
5.mcbrown
ultra3:
pts/3
37
6.M
rwhod工具发出广播信息,并且捕获来自其他主机的广播信息,在/var/spool/rwhod目录中对其进行整理。
rusers工具向网络上其他主机中的rusersd守护进程发送广播,以便返回当前登录的用户的信息,如清单6所示。
清单6.rusers工具
1.$rusers
2.Sendingbroadcastforrusersdprotocolversion3...
3.192.168.0.31mcmcbrown
4.solaris-desktop.mcmc
在rwhod守护进程开始运行之后,还可以使用另一个工具ruptime,该工具可以返回本地网络中所有运行rwhod的服务器的加载和正常运行时间信息。
清单7显示了一个示例。
对于确定多台计算机的状态,并且不希望逐个地对它们进行登录,这是一个非常合适的工具。
清单7.ruptime工具
1.$ruptime
2.solaris-desktop
up
53,
1user,
load0.00,0.00,0.00
3.ultra3
46,
2users,
对于who和rwho来说,将当前连接到您的计算机的who信息记录到/var/adm/utmp文件中,而曾经登录(并已注销)的用户的历史信息则保存于wtmp计算机中。
所有这些文件都包含了大量的信息,但是这些文件都没有可用的直接格式。
让我们更深入地研究这些文件,并了解如何显示这些信息。
用户活动所使用的日志文件
有很多文件用于记录用户的登录和活动。
用于记录这种信息的文件主要包括下面三个:
*utmp,这个文件记录了当前登录的用户的相关信息。
对于用户的每次登录,它都应该包含一条相应的记录。
*wtmp,这个文件记录了用户进行的所有登录(和注销)。
在一个繁忙的系统中,这个文件是相当大的,因为对于每次登录,它都包含一条登录和一条注销记录。
这个文件还包含了一些系统相关的日志信息,如重新启动、关闭和日期更改。
*lastlog,这个文件记录了每个用户最近一次登录的时间。
对于每个用户,这个文件仅包含一条记录。
在您了解了这些文件是何时、采用何种方式写入的之后,那么这些文件之间的关系就相当直观了。
基本顺序如下所示:
*当用户登录的时候,打开lastlog文件,并对他们的记录中的登录日期和时间进行更新。
然后,打开utmp,并记录他们的当前登录信息。
将登录记录(通常将这些信息的副本添加到lastlog)写入到utmp日志中,以记录相应的登录信息。
*在注销期间,删除写入到utmp的登录记录(因为该用户不再处于登录状态),但是将一条新记录写入到wtmp,以记录该用户已经注销的事实。
*这些文件的格式都是二进制的;
所以,必须使用一种单独的、能够读取和解析其中信息的工具来报告这些信息。
通常,wtmp和lastlog文件的基本格式是相同的,并且它们都使用一种简单格式来记录登录时间、登录行和主机名称行信息,如清单8中所示,其中显示了Solaris格式。
清单8.wtmp中的Solaris格式
1.structlastlog{
2.
time_t
ll_time;
char
ll_line[UT_LINESIZE];
ll_host[UT_HOSTSIZE];
5.};
对于不同的操作系统,格式是不相同的,因此您必须非常小心地提取合适的信息。
在AIX&
reg;
中,清单9显示了utmp定义。
清单9.utmp定义
1.structutmp
2.{
ut_user[8];
ut_id[14]
5.
ut_line[12];
6.
short
ut_type;
7.
pid_t
ut_pid;
8.
structexit_status
9.
{
10.
e_termination;
11.
e_exit;
12.}
清单10显示了记录的ut_type字段值的定义。
清单10.ut_type字段值的定义
1.#defineEMPTY
2.#defineRUN_LVL
1
3.#defineBOOT_TIME
2
4.#defineOLD_TIME
3
5.#defineNEW_TIME
4
6.#defineINIT_PROCESS
5
7.#defineLOGIN_PROCESS
6
8.
10.#defineUSER_PROCESS
7
11.#defineDEAD_PROCESS
8
12.#defineACCOUNTING
9
13.#defineUTMAXTYPEACCOUNTING
因为是根据用户ID进行编码的,所以该记录中不包括用户名信息。
如果登录用户的ID是1000,那么可以通过访问位于1000xsizeof(structlastlog)的记录来定位对应的lastlog记录。
utmp文件结构与其非常类似,但因为它是关于登录、注销、以及其他事件条目的顺序日志,所以该记录包括清单11中的登录信息。
清单11.utmp文件结构定义
1.structutmp{
ut_line[UT_LINESIZE];
ut_name[UT_NAMESIZE];
ut_host[UT_HOSTSIZE];
ut_time;
6.};
Linuxut_type具有类似的值定义,如清单12中所示。
清单12.Linuxut_type定义
1.#defineUT_UNKNOWN
4.#defineNEW_TIME
5.#defineOLD_TIME
8.#defineUSER_PROCESS
9.#defineDEAD_PROCESS
10.#defineACCOUNTING
还有一种更加复杂的结构定义,如清单13中所示。
清单13.更加复杂的utmp结构定义
shortut_type;
/*typeoflogin*/
pid_tut_pid;
/*PIDofloginprocess*/
charut_line[UT_LINESIZE];
/*devicenameoftty-"
/dev/"
*/
charut_id[4];
/*initidorabbrev.ttyname*/
charut_user[UT_NAMESIZE];
/*username*/
charut_host[UT_HOSTSIZE];
/*hostnameforremotelogin*/
structexit_statusut_exit;
/*Theexitstatusofaprocess
markedasDEAD_PROCESS*/
10.
11./*Theut_sessionandut_tvfieldsmustbethesamesizewhen
12.
compiled32-and64-bit.
Thisallowsdatafilesandshared
13.
memorytobesharedbetween32-and64-bitapplications*/
14.#if__WORDSIZE==64&
&
defined__WORDSIZE_COMPAT32
15.
int32_tut_session;
/*SessionID,usedforwindowing*/
16.
struct{
17.
int32_ttv_sec;
/*Seconds*/
18.
int32_ttv_usec;
/*Microseconds*/
19.
}ut_tv;
/*Timeentrywasmade*/
20.#else
21.
longintut_session;
22.
structtimevalut_tv;
/*Timeentrywasmade*/
23.#endif
24.
25.
int32_tut_addr_v6[4];
/*IPaddressofremotehost*/
26.
char__unused[20];
/*Reservedforfutureuse*/
27.};
大多数系统都提供了一些简单工具,以便为您提取相关的信息。
要转储wtmp文件的内容,可以使用last命令。
该命令将转储所有的信息(请参见清单14)。
清单14.使用last命令转储wtmp文件的内容
1.$last
2.statmon
ftp
nautilus.mcslp.pWedSep1215:
50-15:
50
(00:
00)
3.statmon
narcissus.mcslp.WedSep1215:
4.statmon
nostromo.mcslp.pWedSep1215:
5.statmon
sulaco.mcslp.priWedSep1215:
49-15:
49
6.statmon
45-15:
45
7.statmon
8.statmon
通常,如果需要的话,您可以通过用户、主机或者tty对信息进行筛选。
例如,要获取root所进行的所有登录,可以使用清单15中所示的内容。
清单15.获取root所进行的所有登录
1.$lastroot
2.root
MonSep2511:
32-11:
3.root
27-11:
27
4.root
SatSep
913:
17-13:
28
11)
5.root
910:
47-13:
(02:
26)
6.root
SunSep
306:
52-down
(6+03:
54)
7.root
214:
24-down
(16:
27)
8.root
208:
02-down
(06:
13)
9.root
FriAug2517:
16-down
39)
10.root
SunAug2016:
04-16:
04
11.root
ThuJul2007:
23-07:
31
07)
12.root
22-07:
23
13.root
ThuJul2002:
57-02:
57
14.root
WedJul1912:
22-down
(05:
38)
15.root
10-12:
19
08)
16.root
05-12:
09
04)
17.root
WedJul1911:
47-11:
55
18.
19.wtmpbeginsWedJul1909:
54
因为wtmp还包含关于重新启动和关闭的信息,所以您也可以列出这些信息(请参见清单16)。
清单16.获取关于重新启动和关闭的信息
1.$lastreboot
2.reboot
WedSep1211:
28
3.reboot
systemdown
WedSep
512:
16
4.reboot
MonSep
313:
03
5.reboot
ThuMar
111:
33
6.reboot
109:
57
7.reboot
108:
12
8.reboot
05
9.reboot
10.reboot
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux系统管理工具包 监视用户的使用情况 Linux 系统管理 工具包 监视 用户 使用 情况