特定のプロセスによってアクセスされたすべてのファイルを追跡しますか?

特定のプロセスによってアクセスされたすべてのファイルを追跡しますか?

最近1つのことがありました(公開されていません)。ユーザーの介入なしにSkypeがアクセスしてはいけないファイルにアクセスしていると報告します。。 LinuxのSkypeにこれがあるかどうかはわかりませんが、知っておくとよいでしょう。特定のプロセスがアクセスするすべてのファイルを追跡する方法はありますか?

答え1

以下でプロセスを開始してくださいstrace

strace -fe open skype

すべてのシステムコールのリストopen()、つまりプロセスが存続期間中に開かれたすべてのファイル(または接続)が表示されます。

現在開いているファイル記述子を見ると、ログは提供されず、プロセスが現在アクセスしているコンテンツの「スナップショット」のみが提供されます。

答え2

SkypeプロセスのPIDが与えられたら、次のことができます。

for fd in /proc/$skype_pid/fd/*;do
    echo -n "File descriptor $fd points to "
    readlink "$fd"
done

特定のプロセスについて、その/proc/$PID/fdプロセスで現在開いているすべてのファイルへのシンボリックリンクが含まれています。これらのリンクの名前はファイル記述子番号に従って指定されます。たとえば、プロセスが標準入力をどこから取得するかを調べるには、上記readlink /proc/$pid_of_process/fd/0の内容を使用してSkypeプロセスで開かれたすべてのファイルを知ることができます。

プロセスのPIDがわからない場合は、以下を試してください。

$ pgrep skype

最初のステップは見つけることです。

これはprocfsを持つシステムでのみ機能し、GNU / Linuxもその1つです。

関連情報