Как скрыть процесс в Linux

Все современные многозадачные операционные системы, а том числе и Linux, запускают несколько процессов для выполнения каждого из заданий. Использование блокнота, окно терминала, SSH сервер, SSH соединение и т д — это все отдельные процессы. Операционная система, в нашем случае Linux распределяет системные ресурсы (процессорное время, память, ввод/вывод), между процессами, таким образом чтобы каждый процесс мог работать.

Чтобы посмотреть список запущенных в данный момент процессов используйте утилиту ps:

Параметры aux указывают утилите что нужно выводить все системные процессы с информацией о пользователе от которого они были запущены и командой вызова.

Как вы видите, в списке представлены процессы, принадлежащие различным пользователям, включая pi — пользователь по умолчанию в Raspberry Pi, root и www-data. Вот еще один скриншот который показывает процессы и информацию о команде их запуска и параметрах:

Если вы посмотрите в низ списка то увидите команду nano MYBANKACCOUNTNUMBER.TXT выполненную пользователем john. Эти данные предоставляются всем пользователям системы и могут быть использованы в злонамеренных целях.

В ядре версии 3.2 и выше реализирована функция запрета просмотра информации пользователем о процессах которые ему не принадлежат. Команда ps получает информацию о процессах из файловой системы /proc. Был добавлен новый параметр hidepid которые применяется при монтировании файловой системы. Он позволяет скрывать информацию о процессах от пользователей не имеющих к ним доступ.

  • hidepid = 0 — значение по умолчанию, все пользователи могут читать файлы /proc/pid
  • hidepid = 1 — пользователи могут получить доступ только к своему собственному /proc/pid подкаталогу, но файлы cmdline, io, sched*, status доступны всем
  • hidepid = 2 — все подкаталоги /proc/pid скрыты от пользователей

Файловая система /proc может быть перемонтирована на лету с помощью опции remount утилиты mount. Чтобы проверить работу hidepid можете воспользоватся следующей командой:

sudo mount -o remount,rw,hidepid=2 /proc

Затем пытаемся выполнить ps еще раз:

Теперь мы увидим только процессы запущенные от пользователя pi.

Чтобы сделать эти изменения постоянными нужно отредактировать файл /etc/fstab. Это файл контролирует монтирование файловых систем при старте.

sudo nano /etc/fstab

Найдите такую строчку:

proc /proc proc defaults 0 0

И замените ее на:

proc /proc proc defaults,hidepid=2 0 0

Закройте редактор сочетанием клавиш Ctrl+C и перезагрузите ваш компьютер. После перезагрузки /proc будет смонтирована с правильными опциями. Для проверки опций монтирования используйте команду mount и grep.

mount | grep hidepid

Теперь попытаемся запустить ps:

Как видите видны только процессы принадлежащие текущему пользователю. Но есть одно замечание. Суперпользователь по прежнему может видеть все процессы и параметры вызова.