1

我的问题是我需要实时监控所有登录或注销的用户。我知道有auth.log文件,但我没有权限。有没有办法只显示用户名和登录/注销时间?

4

3 回答 3

2

要查看当前登录的用户,传统上有命令whowUnix 系统。调用这些不受限制。由于隐私原因,不应允许普通用户查看哪些用户何时登录或注销。

这就是为什么你想做的事情不能用你可用的东西来正确地实现。您将不得不使用变通方法,每个变通方法都有警告。

迈克尔的答案试图通过记录当前用户列表来实现您的目标(他正在使用ps,但我更喜欢whow用于此任务)。如果定期(每分钟或每小时左右)执行此操作,那么稍后您可以扫描您的日志文件以找出谁出现和消失的时间。我会这样使用它:

#!/bin/bash

log() {
  line=$(who | cut -d' ' -f1 | sort -u)
  echo "$(date): " $line  # _NO_ quotes around $line!
}

while sleep 3600
do
  log >> user.log
done &  # do this in the background

每小时这将记录谁在线到文件user.log中。

于 2013-10-29T11:24:43.297 回答
0

另外,也许该last命令是您可以使用的。

于 2013-10-29T14:23:09.190 回答
0

您可以使用跟踪记录的用户来关注正在运行的进程。以下场景执行此操作:

#!/bin/sh
mv current.log previous.log #Use two log file for compare users
ps aux | awk " {print $ 1}" |sort | uniq > current.log #Here unique users list
diff current.log previous.log | grep ">\|<" #comparring users lists

结果你可以查看下一个:

< avahi #logout user
> 123   #login user
> sfdfs #login user
于 2013-10-29T10:47:36.520 回答