'その他'は-r--r--r--権限で/proc/PID/の下の'smaps_rollup'ファイルを読み取ることができません。なぜ?

'その他'は-r--r--r--権限で/proc/PID/の下の'smaps_rollup'ファイルを読み取ることができません。なぜ?

status2つの特定のファイル、つまり、以下のsmaps_rollupすべてのプロセスを読み取ろうとします/proc。すべてのプロセスディレクトリにはdr-xr-xr-x権限があり、これらの各ディレクトリに移動できます。

すべてのプロセスに対して両方のファイルに対する権限は-r--r--r--

これは奇妙な行動です。 PID 1で2つのファイルを読み取ろうとしましょう。statusファイルを読み取ることができますが、smaps_rollup以下を参照してください。

$ cd /proc/1

$ ls -l status smaps_rollup
-r--r--r-- 1 root root 0 Apr  5 18:34 smaps_rollup
-r--r--r-- 1 root root 0 Mar 21 12:18 status

$ grep "Swap:" status
VmSwap:     1072 kB

$ grep "Swap:" smaps_rollup
grep: smaps_rollup: Permission denied

$ cat smaps_rollup
cat: smaps_rollup: Permission denied

関連する質問を見つけましたが、そのいくつかが見つかりました[1][2][3][4]。それらのどれも同じ問題はありません。これらの他の問題に対する解決策は、ディレクトリから欠落している実行権限を変更する必要があります。ここではそうではありません。

proc のマウント情報は次のとおりです。

proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)

私はArch Linuxが提供するカーネル6.2.7-arch1-1を使用してArch Linuxを実行しています。

私はこの奇妙な行動の正確な説明を探しています。回避策としてsudoを使用することに加えて、この問題を解決する他の方法はありますか?


  1. 正しい権限があってもファイルを読み取ることができません

  2. なぜファイルを読むことができないのですか?

  3. 「その他」のファイル読み取り権限が機能しません。

  4. /proc/の読み取り権限を確認する方法/文書?

答え1

これは明示的に文書化されていないようです。man 5 proc、文書を通して/proc/[pid]/maps

ptrace このファイルへのアクセスはアクセスモードの確認によって制御されますPTRACE_MODE_READ_FSCREDSptrace(2)

文書smapsによると

これらの行の最初の行には、のマッピングと同じ情報が表示されます/proc/[pid]/maps

後者だから鋭い、同様の方法で保護されています。smaps_rollupあまり敏感ではありません開くことができるしかし、私が知っている限り、後者のパッチでは何の進展もありませんでした。

この問題を解決するには、関数を使用することが可能でなければなりませんが、まだ試していません。

多くのファイル、ディレクトリ、およびリンクは、/proc特にその権限が表すほどアクセスできるわけではありません。多くのファイルにはmaps、とsmaps同じ権限が必要ですPTRACE_MODE_READ_FSCREDS。これらの要件については、後で詳しく説明します。man 5 proc。つまり、可視権限は権限の上限と見なす必要があり、特に/procアイテムを表示するよりもカーネル設定(書き込み可能)を更新するために使用されるかどうかを判断するのに役立ちます。

関連情報