首页 > 解决方案 > 区分用户注销和会话过期注销(SSH 和 Web 控制台)

问题描述

我们正在寻找一种解决方案,以便在用户退出系统时记录事件(例如记录到系统日志中)。这可能是从 shell (bash) 注销或使用 ssh 注销。我们想要区分通过“退出”显式用户注销和刚刚过期(超时)的用户会话。那可能吗?如何?寻找解决方案的方向是什么?

该系统是 RHEL7/CentOS7 并使用 VMWare 运行(还应记录 Web 控制台注销)。

标签: bashcentoslogoutsyslogopenssh

解决方案


您可能需要太多不同的解决方案。

  • 对于将有登录事件的正常会话,您可以在“退出”事件上设置陷阱。这将包括显式注销(CTRL/D 或退出)、被信号杀死(不是信号 9)和超时。寻找 bash 'trap' 命令。这些可以在 loginn 启动脚本 (bashrc) 中设置
  • 对于 SSH 会话,设置远程 'bashrc' 可以捕获会话结束(包括超时、信号)。

编辑

可以通过检查“$?”来获得“超时”的指示。在 TRAP 处理程序中。它将是 142 对应于 ALRM 信号(kill -l 142=ARLM)。这不是明确的文档,但与 kill -ALRM 的默认信号处理程序一致。

function my_trap {
  local X=$1
  if [ "$X" = "$(kill -l ALRM)" ] ; then
     Log Timeout
  else
     Log Exit/EOF
  fi
}

trap 'my_trap $?' EXIT

推荐阅读