chkrootkit lança o Sinal 13 ao pesquisar por / var / tmp

0

No meu servidor debian squeeze no log do chkrootkit, recebo muitos desses erros:

/usr/bin/find: Prozeß "head" wurde durch das Signal 13 abgebrochen.
/usr/bin/find: Prozeß "head" wurde durch das Signal 13 abgebrochen.

que significa

head terminated by signal 13

Uma pesquisa do Google dá muitos dos mesmos problemas, mas não há solução .

Ele vem dessas linhas em /usr/sbin/chkrootkit :

if [ 'echo abc | head -n 1' = "abc" ]; then
      fileshead="'${find} ${ROOTDIR}tmp ${ROOTDIR}var/tmp ${findargs} -type f -exec head -n 1 {} \; | $egrep '#!.*php' 2> /dev/null'"
else
      fileshead="'${find} ${ROOTDIR}tmp ${ROOTDIR}var/tmp ${findargs} -type f -exec head -1 {} \; | grep '#!.*php' 2> /dev/null'"
fi

quando eu entro diretamente como root:

/usr/bin/find /var/tmp -type f -exec head -1 {} \; | grep php 2> /dev/null;date

Eu recebo os mesmos erros. egrep não faz diferença.

    
por rubo77 15.08.2013 / 15:47

3 respostas

1

O chkrootkit procura por arquivos PHP nos diretórios / tmp / e / var / tmp. Provavelmente, alguns arquivos lá acionam o bug. No meu caso, era um arquivo de teste com muitos bytes zero - excluir o arquivo resolveu o problema.

    
por 26.11.2013 / 03:25
1

Aqui está uma implementação simples das ideias por trás da resposta de Alex abaixo. Eu comentei o código na linha 1241 do shell script chkrootkit principal e adicionei o código de substituição seguindo-o:

###if [ 'echo abc | head -n 1' = "abc" ]; then
###      fileshead="'${find} ${ROOTDIR}tmp ${ROOTDIR}var/tmp ${findargs} -type f -exec head -n 1 {} \; | $egrep '#!.*php' 2> /dev/null'" 
###else
###      fileshead="'${find} ${ROOTDIR}tmp ${ROOTDIR}var/tmp ${findargs} -type f -exec head -1 {} \; | grep '#!.*php' 2> /dev/null'"
###fi

SUFF='date "+%m%d%H%M%S.%N"'
echo > /tmp/matches.$SUFF

for F in '${find} ${ROOTDIR}tmp ${ROOTDIR}var/tmp ${findargs} -type f -print'
do
    read line <$F
    match='echo "$line" | grep '#!.*php' 2> /dev/null'
    if [ -n "$match" ]
    then
        echo "$F : $match" >> /tmp/matches.$SUFF
    fi
done

fileshead='cat /tmp/matches.$SUFF'
rm -f /tmp/matches.$SUFF

Isso funciona e permite que o chkrootkit seja concluído.

    
por 04.11.2016 / 02:37
0

O problema é que head na saída fecha a stdout , a primeira head de saída funciona corretamente, mas qualquer outra gravação na stdout falha com SIGPIPE .

Você pode querer usar uma abordagem diferente

head -q -n1 $(find /somedir/ -type f)|grep someword

editar

salve um script como o abaixo em algum lugar, nomeie-o como quiser, torne-o executável e substitua head no chkrootkit.

#!/bin/sh
shift
test -f "$1" || exit 1
read line <$1 
echo "$line"

Não é totalmente compatível com head , portanto, use-o apenas por parte do chkrootkit que você postou aqui.

    
por 17.08.2013 / 21:37

Tags