chkrootkit 结果 - 未找到 php 会话文件

chkrootkit 结果 - 未找到 php 会话文件

当我运行 chkrootkit 时,有时会得到以下结果:

Searching for suspect PHP files...                          
/usr/bin/find: `/tmp/sess_nq0tiekcsl41jb93795gnrug54': No such file or directory
/usr/bin/find: `/tmp/sess_s904a26ph28gpspdh1bpke6fg6': No such file or directory
/usr/bin/find: `/tmp/sess_5efg9ic1bebo93q1c2c9d86qu3': No such file or directory

这种情况并不常见 - 也许 50 次扫描中只有 1 次会出现这种情况。

这是什么意思?

答案1

您正在查看的 chkrootkit 部分是这样的:

###
### Suspect PHP files
###
if [ "${QUIET}" != "t" ]; then
   printn "Searching for suspect PHP files... "; fi
   files="`${find} ${ROOTDIR}tmp ${ROOTDIR}var/tmp ${findargs} -name '*.php' 2> /dev/null`"
   fileshead="`${find} ${ROOTDIR}tmp ${ROOTDIR}var/tmp ${findargs} -type f -exec head -1 {} \; | grep php 2> /dev/null`"
if [ "${files}" = "" -a "${fileshead}" = "" ]; then
   if [ "${QUIET}" != "t" ]; then echo "nothing found"; fi
else
  echo "${files}"
  echo "${fileshead}"
fi

find导致错误的是第二条命令。问题在于,在find命令查找文件和到达文件-exec并运行head文件之间存在竞争条件。在这两个时刻之间,另一个进程正在删除一些旧的、过期的 PHP 会话文件。

在基于 Debian 的发行版中,这通常是一个 cron 作业,在/etc/cron.d/php5每小时的 9 分和 39 分运行。我不确定基于 RedHat 的发行版会做什么,当然,这是可定制的。PHP 有一个内置机制,可以在每次请求时以 1/1000 的概率(此概率也是可配置的)触发会话清理线程。

您所说的 1/50 的概率可能是由于删除旧 PHP 会话文件的机制略有不同所致。

相关内容