chkrootkitは/ var / tmpを検索すると信号13を生成します。

chkrootkitは/ var / tmpを検索すると信号13を生成します。

私のDebian Skizeサーバーのchkrootkitログには、次のようなエラーがたくさん表示されます。

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

意味は

head terminated by signal 13

Google検索同じ質問がたくさん出てきましたが、解決策はありませんでした。

次の行から来ます/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

ルートに直接入るとき:

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

同じエラーが発生します。egrepそれに比べてあまり違いはありません。

答え1

chkrootkit は、/tmp/ および /var/tmp ディレクトリから PHP ファイルを検索します。ほとんどの場合、一部のファイルがエラーを引き起こしています。私の場合は、0バイトがたくさん含まれているテストファイルでした。削除すると問題が解決しました。

答え2

以下は、Alexの答えの後に隠されたアイデアを簡単に実装したものです。デフォルトのchkrootkitシェルスクリプトの1241行をコメントアウトし、その後に代替コードを追加しました。

###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

これがうまくいき、chkrootkitが完了できるようにします。

答え3

問題は、headシャットダウン時にstdout最初のhead出力が正常に機能しますが、stdoutへの他の書き込みは失敗することですSIGPIPE

他のアプローチを使用したい場合があります。

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

編集する

次のスクリプトをどこかに保存し、必要に応じて名前を付けて実行可能にし、headchkrootkitで置き換えます。

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

完全に互換性がないため、headここに投稿したchkrootkit部分にのみ使用してください。

関連情報