Какова политика для разрешений в / proc /<PID> / environment?

Я вижу, что обычный пользовательский процесс получает права на чтение для пользователя:

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

но, например Экран демон получает 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

1 ответ

Решение

На большинстве систем /usr/bin/screen устанавливается с битом setuid для root, что означает, что он сначала будет начинаться с эффективного UID 0, а только позже удалит привилегии (возвращаясь к обычному UID).

(Это используется для реализации функции "совместного использования сеанса", так как в противном случае ваш экран не сможет подключиться к сокетам экрана других пользователей.)

Но поскольку привилегированные процессы могут потенциально хранить конфиденциальную информацию в памяти, ядро ​​предоставляет им особую защиту - даже если они отбрасывают все привилегии и переключаются на ваш UID, вы все равно не можете отправлять им сигналы, подключать отладчик или создавать дампы ядра.

Опция "без дампов ядра", также известная как fs.suid_dumpable Настройка sysctl, это то, что вызывает экран /proc файлы, которые будут постоянно принадлежать пользователю root независимо от его эффективного UID.

Другие вопросы по тегам