我的问题是我需要监控所有已实时登录或注销的用户。我知道有auth.log
个文件,但我没有权限。有没有办法只显示用户名和登录/注销时间?
答案 0 :(得分:2)
要查看当前登录的用户,传统上Unix系统上的命令为who
和w
。调用这些不受限制。由于隐私原因,不应允许普通用户在用户登录或注销时
这就是为什么你想要做的事情无法通过你可以获得的东西来实现的原因。您将不得不使用每个都有警告的解决方法。
迈克尔的答案是通过记录当前用户列表来尝试实现您的目标(他正在使用ps
,但我希望who
或w
执行此任务)。如果这是定期(每分钟或每小时左右)完成,那么稍后您可以扫描您的日志文件,以找出谁出现和消失的时间。我会这样用它:
#!/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
。
答案 1 :(得分: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
答案 2 :(得分:0)
此外,也许你可以使用last
命令。