É possível 'esconder' um processo da listagem de 'ps' ou 'top' no Linux

8

Primeiro, eu presumo que, se isso for possível, ele precisaria ser feito como root (ou como um usuário que compartilha o UID do root de 0).

Como um processo pode ser lançado para que ele não apareça em uma listagem ps aux ou ps ef ou top se o comando for executado por não-raiz?

Isso é possível?

As distribuições que eu normalmente executo são RHEL / CentOS e Ubuntu - então, se houver uma resposta específica de distro, tudo bem.

    
por warren 13.10.2010 / 16:53

3 respostas

5

Bem, você tem algumas opções aqui. Tirar o caminho mais fácil seria trocar os programas ps e top com versões modificadas que escondem o que você deseja ocultar.

A alternativa seria executar seu código incorporado em um processo existente ou escrever um script wrapper em torno de seu código com um nome inócuo.

Em algumas versões do PS, você pode modificá-lo alterando o argv [], mas não tem certeza se ele funciona para o topo, e não tem certeza se funciona no linux (é principalmente uma convenção do BSD).

Tudo depende exatamente do que você está procurando alcançar com isso?

    
por 13.10.2010 / 17:29
12

De acordo com o patch do kernel link , você pode usar a opção hidepid para o sistema de arquivos proc:

hidepid=0 (default) means the old behavior - anybody may read all world-readable /proc/PID/* files.

hidepid=1 means users may not access any /proc// directories, but their own. Sensitive files like cmdline, sched*, status are now protected against other users. As permission checking done in proc_pid_permission() and files' permissions are left untouched, programs expecting specific files' modes are not confused.

hidepid=2 means hidepid=1 plus all /proc/PID/ will be invisible to other users. It doesn't mean that it hides whether a process exists (it can be learned by other means, e.g. by kill -0 $PID), but it hides process' euid and egid. It compicates intruder's task of gathering info about running processes, whether some daemon runs with elevated privileges, whether another user runs some sensitive program, whether other users run any program at all, etc.

gid=XXX defines a group that will be able to gather all processes' info (as in hidepid=0 mode). This group should be used instead of putting nonroot user in sudoers file or something. However, untrusted users (like daemons, etc.) which are not supposed to monitor the tasks in the whole system should not be added to the group.

Você não pode controlar a visibilidade no nível do processo, mas pode garantir que seus usuários possam ver apenas seus próprios processos.

Caso você tenha uma versão do kernel maior que 3.3, você pode tentar com o seguinte comando:

 
mount /proc -o remount,hidepid=2
    
por 19.01.2014 / 22:36
-2

use o comando F no topo e o comando n, por exemplo, para configure o que você quer ver. use o comando W para escrever o config você gosta de ~ / .toprc - use? para ver os principais comandos. Isso pode resolver seu problema rapidamente - foi o que aconteceu comigo. Com F Eu posso adicionar / remover os campos que eu quero ver, enquanto em f pode usar s para definir a classificação, então q para voltar a exibir. então n para definir como muitos processos que eu quero ver e W para salvar em .toprc

    
por 11.12.2016 / 18:48