適切な権限があっても /proc/pid/stack ファイルを読み取ることができません

適切な権限があっても /proc/pid/stack ファイルを読み取ることができません

私が知る限り、権限があれば通常のファイルの内容を読むことができるはずです。

以下は出力ですls -l スタック~のため私のLinuxシステムで実行されているプロセスの1つのファイル(/proc/pid/stack):

-r--r--r-- 1 Usr1 Usr1 0 9月20日、18:08スタック

権限を見ると、ファイルを読むことができます。

ファイルを読み取るたびに(viスタック)のようにユーザー1、空のファイルのみが表示されます。また、ファイルを次のように開こうとするとユーザー。

[] ptrace_stop+0x154/0x270 [] get_signal_to_deliver+0x3dc/0x610 [] do_signal+0x3f/0x8d0 .. .. ..

正確に何が起こっているのかわかりませんか?

ベストアンサー1

ここで珍しいことはopen成功/proc/pid/stackですが、試してみるとread返されますEPERM

/proc/pid/stack呼び出し内容を表示するために使用されるfs/proc/base.c:proc_pid_stack()カーネルソースコードlock_trace()。呼び出し側にアクセス権がない場合は、許可エラーが返されます。ターゲットプロセス。

多くのLinuxディストリビューションではptrace、Ubuntuを使用すると、このような状況が発生します。アクセス許可は、ターゲットのptraceルートプロセスまたは親(通常は親)プロセスに制限されます。確認できます

root@ubuntu:~# cat /proc/sys/kernel/yama/ptrace_scope 
1

以下を実行して無効にできます。

root@ubuntu:~# echo 0 > /proc/sys/kernel/yama/ptrace_scope 

その後、次のことができますcat /proc/pid/stack

おすすめ記事