web-dev-qa-db-ja.com

/ proc / <PID> / environmentの権限に関するポリシーは何ですか?

なるほど、通常のユーザープロセスはユーザーが読み取り可能な権限を取得します。

-r-------- 1 1000 1000 0 Nov 19 13:51 /proc/9083/environ

しかしf.ex。 SCREENデーモンはroot所有権を取得します:

-r-------- 1 root root 0 Nov 19 13:47 /proc/9167/environ

ただし、9167はユーザーUIDでもあります。

# ps axnu|grep 9167
    1000  9167  0.0  0.0  23488  2008 ?   Ss   13:47   0:00 SCREEN
2
midenok

ほとんどのシステムでは、/usr/bin/screenはrootのsetuidビットでインストールされます。つまり、最初は有効なUID 0で始まり、後で特権を削除します(通常のUIDに戻ります)。

(これは、「セッション共有」機能を実装するために使用されます。これ以外の場合、画面は他のユーザーの画面ソケットに接続できません。)

ただし、特権プロセスは機密情報をメモリに保持する可能性があるため、カーネルはそれらに特別な保護を提供します。すべての特権を削除してUIDに切り替えても、シグナルを送信したり、デバッガーを接続したり、コアダンプを作成したりすることはできません。

「コアダンプなし」オプションは、fs.suid_dumpable sysctl設定とも呼ばれ、有効なUIDに関係なく、Screenの/procファイルがrootによって永続的に所有される原因になります。

2
user1686