이 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
나는 그것이 정보의 처음 3개 열을 얻는다는 것을 알고 있습니다.utmp와 wtmp, 모든 사람에게 읽기 액세스 권한이 있지만어디서 정보를 얻나요?게으른시간과무엇사용자가 현재 무엇을 하고 있는지?
ls -l $(which w)
w
이는 프로그램에 setuid 비트가 설정되어 있지 않으며 일반 사용자로서 해당 프로그램을 볼 수 있는 권한이 없음을 나타냅니다 /proc
.
답변1
적어도 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);
...
stat()
x
작동하려면 상위 디렉터리에 대한 실행() 권한 만 필요합니다 .