Все современные многозадачные операционные системы, включая Linux, запускают серию процессов для каждой выполняемой задачи. Приложение «Блокнот» — это процесс, окно терминала — это процесс, SSH-сервер — это процесс, каждое SSH-соединение — это процесс и так далее. Linux планирует различные системные ресурсы (время процессора, память, ввод-вывод), чтобы каждый процесс имел возможность запускаться.
Чтобы просмотреть список текущих запущенных процессов, вы можете использовать команду ps
. Попробуйте это в терминале:
ps aux
Параметры aux
сообщают ps
составить список всех системных процессов с дополнительной информацией о том, кто владеет этими процессами и какие параметры вызова использовались.
Как видите, в списке показаны процессы, принадлежащие различным пользователям, включая «pi» (пользователь Raspbian по умолчанию на Raspberry Pi), «root» и «www-data». Вот слегка измененный снимок экрана, на котором показаны процессы, а также более подробная информация о командах и их параметрах.
Если вы посмотрите вниз по списку, вы увидите команду nano MYBANKACCOUNTNUMBER.TXT
, принадлежащую пользователю «john». Представьте, если бы имя файла было немного более показательным, чем пример; такие данные доступны всем пользователям системы и могут быть использованы в злонамеренных целях.
Начиная с ядра Linux 3.2, существует способ запретить пользователям доступ к информации о процессах, которыми они не владеют. Команда ps
получает информацию о процессе из файловой системы /proc (где «proc» — сокращение от «процесс»). Появился новый параметр «hidepid», который используется при монтировании файловой системы /proc. Он может скрывать процессы и элементы управления, имеющие доступ к информации в /proc.
- hidepid=0 – поведение по умолчанию, при котором любой пользователь может читать файлы в каталоге /proc/PID/.
- hidepid=1 – это означает, что пользователи не могут получить доступ ни к одному подкаталогу /proc/PID/, кроме своего собственного. Также такие файлы, как cmdline, io, sched*, status, wchan, недоступны другим пользователям.
- hidepid=2 – все, начиная сidepid=1, а также все подкаталоги /proc/PID/ будут скрыты для других пользователей.
Файловую систему /proc можно перемонтировать «на лету», используя опцию remount команды mount
. Чтобы проверить Hidepid, вы можете перемонтировать файловую систему /proc следующим образом:
sudo mount -o remount,rw,hidepid=2 /proc
Теперь вы можете попробовать команду ps
еще раз:
ps aux
Теперь в выводе отображаются только процессы, принадлежащие пользователю «pi».
Чтобы сделать это изменение постоянным, вам необходимо отредактировать файл «/etc/fstab» вашего Pi. Файл «fstab» определяет, какие файловые системы монтируются при запуске.
sudo nano /etc/fstab
И найдите строку:
proc /proc proc defaults 0 0
И измените его на:
proc /proc proc defaults,hidepid=2 0 0
Выйдите из редактора, нажав «Ctrl + X». Теперь перезагрузите Raspberry Pi. После перезагрузки убедитесь, что файловая система /proc смонтирована с правильными параметрами. Сначала используйте mount
и grep
, чтобы просмотреть текущие параметры:
mount | grep hidepid
Теперь проверьте команду ps
, точно так же, как мы это делали выше:
ps aux
Обратите внимание, что видны только процессы, принадлежащие «pi», но в отличие от предыдущего случая, когда мы перемонтировали файловую систему /proc, теперь это постоянный параметр. Однако одно предупреждение: даже при использовании Hidepid «root» все равно может видеть все процессы и параметры вызова.
Использованный выше метод будет работать на других машинах и дистрибутивах Linux, а не только на Raspberry Pi с Raspbian. Если у вас есть вопросы по использованию параметра «hidepid» в файловой системе /proc, задавайте их в разделе комментариев ниже, и мы посмотрим, сможем ли вам помочь.