私が知る限り、権限があれば通常のファイルの内容を読むことができるはずです。
以下は出力です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
。