NextCloudのログで「HMAC does not match」エラー

Linux

「HMAC does not match」エラーについて

結構前からNextCloudのログで以下のエラーが頻繁に発生するようになっています。ネットで調べたり、ChatGPTに聞いても具体的な対処方法はありません

"Message":"HMAC does not match.","Code":0,"Trace":[{"file":"/var/www/html/nextcloud/lib/private/Security/Crypto.php","line":98,

上記のエラーの原因ですが、以下が考えられます。
多くの場合、致命的なエラーではなく無視しても Nextcloud の動作に問題はありません。
ただし、現状では修正方法がよくわからないので、ログに継続して出力されるので困ります

  • Nextcloud が内部的にデータの整合性チェック(HMAC)を行った際に不一致になった
  • 破損したセッション情報
  • キャッシュの不整合
  • 共有リンクのトークン破損
  • アップロード/ダウンロード時の一時ファイル破損

対策:「該当エラー行だけをログから削除する」方法

エラーの対処方法がわからないので、ログファイルから「HMAC does not match」エラーが含まれる行を削除する方法での対策を実施することにしました。

NextCloudのログファイルは以下のあります。ディレクトリは使用されている環境によって変わります

/var/www/html/nextcloud/data/nextcloud.log

上記のファイルで、「HMAC does not match」エラーが含まれる場合は、その行を削除して一次ファイルに保存します。そのご本来の「nextcloud.log」にリネームして置き換えます。

上記の処理を、シェルスクリプトにしてCronで実行すると、定期的に「HMAC does not match」エラーが削除されます

ワンライナーでの対応

シェルスクリプトを使わずにワンライナーでCronで実行する場合は以下になります。

例:毎日 03:00 に HMAC ログだけ削除

0 3 * * * sed -i '/HMAC does not match/d' /var/www/html/nextcloud/data/nextcloud.log

シェルスクリプトでの対応

シェルスクリプト版は以下となります。このシェルスクリプトを手動で実行して「HMAC does not match」を含む行を削除してもいいですし、Cronで定期的に実行しても良いかと思います

$ vim clean_hmac_log.sh

#!/bin/bash

LOGFILE="/var/www/vhosts/html/nextcloud/data/nextcloud.log"
TMPFILE="${LOGFILE}.tmp"

# "HMAC does not match" を含む行があるか判定
if grep -q "HMAC does not match" "$LOGFILE"; then
    echo "HMAC ログが見つかったため削除処理を実行します"

    # 該当行を除外して一時ファイルへ
    grep -v "HMAC does not match" "$LOGFILE" > "$TMPFILE"

    # 上書き
    mv "$TMPFILE" "$LOGFILE"

    echo "削除処理が完了しました"
else
    echo "HMAC ログはありません(処理なし)"
fi

# 実行権を付与します
$ sudo chmod +x clean_hmac_log.sh
スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
LinuxUbuntu
スポンサーリンク
シェアする
adminをフォローする
タイトルとURLをコピーしました