Все современные многозадачные операционные системы, а том числе и 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:
Как видите видны только процессы принадлежащие текущему пользователю. Но есть одно замечание. Суперпользователь по прежнему может видеть все процессы и параметры вызова.