该w命令显示了关于谁登录了他们正在做什么的一堆信息。
来自维基百科的例子:
$ w
11:12am up 608 day(s), 19:56, 6 users, load average: 0.36, 0.36, 0.37
User tty login@ idle what
smithj pts/5 8:52am w
jonesm pts/23 20Apr06 28 -bash
harry pts/18 9:01am 9 pine
peterb pts/19 21Apr06 emacs -nw html/index.html
janetmcq pts/8 10:12am 3days -csh
singh pts/12 16Apr06 5:29 /usr/bin/perl -w perl/test/program.pl
Run Code Online (Sandbox Code Playgroud)
我知道,它会从第一个3个栏信息utmp和wtmp文件,这对每个人的读取权限,但它从哪里获得的信息空闲时间,什么用户目前正在做?
ls -l $(which w)表明该w程序没有设置 setuid 位,作为普通用户,我无权查看/proc.
nkm*_*kms 15
至少在 linux 上,由于终端上的任何用户输入都将访问当前用户设备,因此它会stat()调用/dev/{tty,pts/}?*并检查atime登录用户。
来自w.c:
/* stat the device file to get an idle time */
static time_t idletime(const char *restrict const tty)
{
struct stat sbuf;
if (stat(tty, &sbuf) != 0)
return 0;
return time(NULL) - sbuf.st_atime;
}
static void showinfo(utmp_t * u, int formtype, int maxcmd, int from,
...
print_time_ival7(idletime(tty), 0, stdout);
...
Run Code Online (Sandbox Code Playgroud)
stat()只需要x父目录的执行 ( ) 权限即可工作。
| 归档时间: |
|
| 查看次数: |
1960 次 |
| 最近记录: |