なるほど、通常のユーザープロセスはユーザーが読み取り可能な権限を取得します。
-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
ほとんどのシステムでは、/usr/bin/screen
はrootのsetuidビットでインストールされます。つまり、最初は有効なUID 0で始まり、後で特権を削除します(通常のUIDに戻ります)。
(これは、「セッション共有」機能を実装するために使用されます。これ以外の場合、画面は他のユーザーの画面ソケットに接続できません。)
ただし、特権プロセスは機密情報をメモリに保持する可能性があるため、カーネルはそれらに特別な保護を提供します。すべての特権を削除してUIDに切り替えても、シグナルを送信したり、デバッガーを接続したり、コアダンプを作成したりすることはできません。
「コアダンプなし」オプションは、fs.suid_dumpable
sysctl設定とも呼ばれ、有効なUIDに関係なく、Screenの/proc
ファイルがrootによって永続的に所有される原因になります。