解決策 1:
解決策 1 :システムタップ
systemtap を使用して、.bashrc
の inode で unlink() を使用しようとしているすべての PID を表示できます。 と .bash_profile
ファイル。
systemtap とカーネルのデバッグ シンボルをインストールします。
unlink.stap
という名前のファイルを作成します 次の内容で:
probe syscall.unlink
{
printf ("%s(%d) unlink (%s) userID(%d)\n", execname(), pid(), argstr, uid())
}
次に sudo stap unlink.stap
で実行します
解決策 2 :通知する
inotify を使用して、ファイルがいつ削除されたかを確認することもできます。
解決策 3 :ftrace
別の解決策は、ftrace を使用することです:
trace-cmd record -e \*unlink\*
ファイルが削除されるのを待ち、CTRL+C を押して trace-cmd record ...
を停止します 、次に実行:
trace-cmd report
解決策 4 :bpftrace
bpftrace
をインストール 、次に実行:
bpftrace -e 'tracepoint:syscalls:sys_enter_unlink* { printf("%s %s\n", comm, str(args->pathname)); }'
解決策 2:
ミセアの回答に加えて、root としてファイルを chattr +i して、ファイルを削除しようとしたときにエラーがログに記録されるかどうかを確認できます。
解決策 3:
ユーザー自身が (誤って) それらを削除していないことを確信していますか?
同じ問題を抱えた無知な(Windows)ユーザーが何人かいました.ftpクライアントでホームディレクトリにアクセスするたびに、それらのファイルを自分で削除したことが判明しました..xxxxファイルに気づきました(ftpクライアントはそれらを隠しませんでした) 「混乱」を取り除きました。
そのうちの 1 人が、数日前に削除したファイルが自然に再表示されることについて不平を言うまで、彼らが自分たちでそれを行ったとは思いもしませんでした.
解決策 4:
ログアウト時に特定のファイルを消去するために、bash ログアウト スクリプト (~/.bash_logout) を使用しています。
解決策 5:
find /home/user -name filename -exec rm -f {} \; を実行している侵入者のようです。 彼のすべてのこっそりした後:)。推測ですが、バックアップ ファイルも削除されるとおっしゃっていました。