Какова политика для разрешений в / 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.