MyTetra Share
Делитесь знаниями!
Как в Debian Linux установить режим видимости чужих процессов для пользователей?
Время создания: 24.09.2025 12:27
Текстовые метки: debian, linux, astra, ubuntu, установить, переключить, настроить, proc, hidepid, PID, режим, чужой, чужие, другой, других, пользователь, видимость, доступность, процесс, команда, параметры
Раздел: Компьютер - Linux - Дистрибутив Debian
Запись: xintrea/mytetra_syncro/master/base/175870607040fadmeam6/text.html на raw.githubusercontent.com

По-умолчанию, практически во всех дистрибутивах Linux, пользователи могут видеть процессы других пользователей. По-умолчанию видны не только PID чужого процесса, но и команда, которой этот процесс был запущен. И даже обычный пользователь видит все процессы пользователя root. Но это поведение можно поменять.


Для переключения режима видимости чужих процессов, можно от root дать команду:



mount -o remount,hidepid=1 /proc



или, чтобы режим заданный видимости работал на постоянной основе, можно прописать в /etc/fstab следующую строку:



proc /proc proc defaults,hidepid=1 0 0



Данные команды монтируют виртуальную внутрисистемную файловую систему /proc с заданным параметром hidepid. Согласно документации ядра, значения у данного параметра соответсвуют следующему поведению:



  • При hidepid=1 пользователи могут видеть, что в системе работают другие процессы, но не видят их параметры запуска.
  • При hidepid=2 пользователи вообще не видят чужих процессов.
  • Пользователь root (и пользователи в группе proc, и пользователи, входящие в группу, имя которой указано в дополнительной опции ",gid=abcdefgh") всё равно могут видеть все процессы.



Однако в Debian Linux и Ubuntu дела обстоят несколько по-другому. По описанию опции hidepid=1 можно было бы ожидать, что процессы других пользователей будут видны, но их аргументы командной строки (cmdline, environ) будут скрыты. Однако в Debian (и некоторых других дистрибутивах) эффект может отличаться от «формального» описания из-за того, как именно реализованы права доступа в /proc и как работает команда ps.


Кратко, как должно быть по документации ядра:



  • hidepid=0 — видны все процессы, включая аргументы командных строк.
  • hidepid=1 — чужие процессы видны, но чтение /proc/<pid>/cmdline, /proc/<pid>/environ, /proc/<pid>/cwd и т.д. запрещено.
  • hidepid=2 — чужие процессы полностью скрыты (видны только свои).



Что происходит в Debian


В Debian/Ubuntu команда ps и другие утилиты из procps-ng используют не только /proc/<pid>/cmdline, но и /proc/<pid>/stat, /proc/<pid>/status.

При hidepid=1 для чужих процессов доступ к части этих файлов тоже блокируется, из-за чего ps aux выводит только собственные процессы, будто бы стоит hidepid=2.


Это связано с тем, что ps для корректного отображения не только командной строки, но и имени команды (COMM) и прочей статистики, должен читать эти файлы. Когда доступ ограничен — ps решает, что процесс «невидим», и отбрасывает его.


То есть, в Debian практически нет разницы между настройкой hidepid=1 или 2.



Как это исправить


Исправить сложно. Если нужен именно вариант «видеть все PID, но без аргументов командной строки», то нужно вместо ps использовать утилиты, которые читают /proc/<pid>/comm вместо /proc/<pid>/stat. Такую утилиту можно написать на Bash. Однако овчинка не стоит выделки, т. к. это не будет работать в новых версиях Debian, в которых сделаны изменения для усиления защиты: просмотр информации о чужих процессах при hidepid=1 запрещен даже для файла /proc/<pid>/comm. То есть, по факту, в Debian hidepid=1 практически эквивалентен hidepid=2.



Что можно еще сделать


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


В начале надо создать группу доступа:



sudo groupadd proc



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



sudo usermod -aG proc username



Дале в /etc/fstab прописывается:



proc /proc proc defaults,hidepid=2,gid=proc 0 0



Тогда пользователи в группе proc будут видеть все процессы (как при hidepid=0), остальные пользователи будут видеть только свои (hidepid=2).


К сожалению, промежуточного варианта «чужие процессы видны, но аргументы скрыты» в Debian добиться сложно: реализация procps-ng делает безопасность hidepid=1 ближе к hidepid=2, и это поведение глубоко интегрировано в систему.


Так же в этом разделе:
 
MyTetra Share v.0.67
Яндекс индекс цитирования