9

Во-первых, я предполагаю, что, если это возможно, это нужно будет сделать как root (или как пользователь с общим UID root, равным 0).

Как запустить процесс, чтобы он не отображался в списке ps aux или ps ef или top если команда запускается не пользователем root?

Это вообще возможно?

Обычно я использую дистрибутивы RHEL/CentOS и Ubuntu - так что, если есть дистрибутивный ответ, это тоже нормально.

3 ответа3

12

Согласно патчу ядра http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=0499680a42141d86417a8fbaa8c8db806bea1201, вы можете использовать опцию hidepid для файловой системы proc:

hidepid = 0 (по умолчанию) означает старое поведение - любой может прочитать все общедоступные файлы /proc /PID / *.

hidepid = 1 означает, что пользователи могут иметь доступ не к каким-либо каталогам /proc //, а к своим. Чувствительные файлы, такие как cmdline, sched *, status теперь защищены от других пользователей. Так как проверка полномочий выполняется в proc_pid_permission (), а права доступа к файлам остаются нетронутыми, программы, ожидающие режимы определенных файлов, не путаются.

hidepid = 2 означает, что hidepid = 1 плюс все /proc /PID / будут невидимы для других пользователей. Это не означает, что он скрывает, существует ли процесс (его можно узнать другими способами, например, kill -0 $ PID), но он скрывает euid и egid процесса. Это усложняет задачу злоумышленника по сбору информации о запущенных процессах, о том, работает ли какой-либо демон с повышенными привилегиями, запускает ли другой пользователь какую-либо чувствительную программу, запускают ли другие пользователи вообще какую-либо программу и т.д.

gid = XXX определяет группу, которая сможет собирать информацию обо всех процессах (как в режиме hidepid = 0). Эту группу следует использовать вместо помещения пользователя root в файл sudoers или что-то в этом роде. Однако недоверенные пользователи (например, демоны и т.д.), Которые не должны следить за задачами во всей системе, не должны добавляться в группу.

Вы не можете контролировать видимость на уровне процессов, однако вы можете гарантировать, что ваши пользователи смогут видеть только свои процессы.

Если у вас версия ядра больше 3.3, попробуйте выполнить следующую команду:

 
mount /proc -o remount,hidepid=2
5

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

Альтернативой может быть запуск кода, встроенного в существующий процесс, или написание сценария-оболочки вокруг кода с безобидным именем.

В некоторых версиях PS вы можете изменить его, изменив argv [], но не уверены, работает ли он для top, и не уверены, работает ли он в linux (в основном это соглашение BSD).

Все зависит от того, что именно вы хотите достичь, делая это?

-2

используйте команду F в верхней части и команду n, например, чтобы настроить то, что вы хотите видеть. используйте команду W, чтобы написать конфигурацию, которая вам нравится, ~/.toprc - использовать? чтобы увидеть лучшие команды. Это может решить вашу проблему быстро - это для меня. С помощью F я могу добавить /удалить поля, которые я хочу видеть, в то время как в f можно использовать s, чтобы установить сортировку, а затем q, чтобы вернуться к отображению. затем n, чтобы установить, сколько процессов я хочу видеть и W сохранить в .toprc

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .