A parte do chkrootkit que você está vendo é esta:
###
### 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
E é o segundo comando find
que está causando o erro. O problema é que há uma condição de corrida entre o comando find
ao encontrar um arquivo e quando ele chega à parte -exec
e executa head
no arquivo. Entre esses dois momentos, outro processo está excluindo alguns dos arquivos de sessão do PHP expirados antigos.
Em distros baseadas no Debian, geralmente é uma tarefa cron em /etc/cron.d/php5
que é executada às 9 e 39 minutos após cada hora. Não tenho certeza do que as distribuições baseadas em RedHat fazem e, claro, isso é personalizável. O PHP possui um mecanismo interno para acionar um encadeamento de limpeza de sessão com uma probabilidade de 1 em 1000 (essa probabilidade também é configurável) em cada solicitação.
Sua taxa de 1 em 50 é provavelmente resultado de pequenas variações em qualquer mecanismo que esteja excluindo seus arquivos de sessão antigos do PHP.