Bashなどの一部のprocは、そのprocを作成したユーザーが/proc/<pid>/
リソース全体を読み取り可能にしていることに気付きました。ただし、chromeやgnome-keyring-daemonなどの他のprocは、プロセス自体が通常のユーザーによって所有されており、suidが呼び出されていないにもかかわらず、ほとんどの/proc/<pid>/
リソースにrootからのみアクセスできます。
カーネルを少し掘り下げて、タスクに「ダンプ可能」フラグがない場合、/ proc /のものが制限されることがわかりましたが、どのシナリオでタスクがダンプ不能になるかを理解するのに苦労しています(setuidの場合を除くこれはchromeまたはgnome-keyring)には適用されません:
https://github.com/torvalds/linux/blob/164c09978cebebd8b5fc198e9243777dbaecdfa0/fs/proc/base.c#L1532
根本的なメカニズムとその理由を理解するのを手伝ってくれる人はいますか?
ありがとう!
編集:
SSHエージェント(gnome-keyring-daemon
など)をユーザーがダンプできるようにしたくない理由についての優れたドキュメントを見つけました。まだわからないhowgnome-keyring-daemon
がそれ自体をダンプ不能にしています。
Linuxには、dumpable
フラグを変更するシステムコールがあります。これがいくつかのサンプルコードです 私が書いた 数年前:
#include <sys/prctl.h>
...
/* The last three arguments are just padding, because the
* system call requires five arguments.
*/
prctl(PR_SET_DUMPABLE,1,42,42,42);
それはgnome-keyring-daemon
セキュリティ上の理由から、意図的にdumpable
フラグをゼロに設定します。