Como esconder os argumentos enviados para o executável de ps [duplicate]

0

Eu escrevi um script que usa ps -G <groupid> -o uid,cmd para registrar os comandos que um determinado grupo de usuários de um sistema executa no tempo.

O que eu quero saber é se é possível que os usuários ocultem o que estão fazendo no meu script. E como eles podem fazer isso? Por favor, note que meus usuários não estão no grupo sudo. Então eles não podem usar prctl ; Preciso de outra opção que não exija privilégios administrativos

Pensei em colocar meu código em uma função e definir um alias para ele. Chamar esse alias ocultaria meu script, mas parece que não funciona. Então existe alguma maneira de esconder o código de ps ?

Aqui está um MVC do meu código para mostrar porque acho que o truque do alias não funciona:

#!/bin/bash
foo(){
    sleep 3 
    ps -G 1,2,3 -o uid,cmd -H
}
alias bar='foo'
while true
do
    sleep 1
    ${BASH_ALIASES[bar]}
    echo 1 
done

E aqui está um resumo das partes relacionadas do que recebo como resultado:

myid -bash                             (Reasonable)
myid /bin/bash ./myscript.sh           (Reasonable)
myid /bin/bash ./mysctipt.sh           (I don't care but I wonder why it's appearing twice!)
myid ps -G 1,2,3 -o uid,cmd -H         (What I don't want to be viewable)
myid sshd: myusername@pts/9            (Reasonable)

Por favor, note que houve algum recuo na saída (devido à -H opção em ps ) que removi e os recuos da linha duplicada foram diferentes.

A partir disso, concluímos que o alias etc. não funciona. Por não funcionar, quero dizer que meus usuários não podem fazer alias para seus comandos e executar esses comandos e ocultar seus comandos dessa maneira. Porque se pudessem meu comando ps para o qual eu tinha definido um alias no meu script não deveria ter aparecido no resultado.

Então, aqui está a pergunta em palavras simples:

Existe uma maneira de os usuários não-sudo do meu sistema executar alguns scripts de uma maneira que eu não seja capaz de perceber usando o comando ps.

p.s. Por favor, note que estou ciente dos métodos pam para registro e outras coisas. Eu só quero ver se esse método funciona.

p.s.s Eu indiquei o método de apelido porque um amigo me disse que isso funcionaria, mas não funcionou. Então eu já expliquei que não parece funcionar para impedir as pessoas de virem e darem isso como resposta.

pedido

!!!

Alguém por favor pode explicar ao meu porque a minha pergunta é encerrada como sendo uma cópia exata de outra questão, enquanto as respostas na questão mencionada não resolve o meu problema?

    
por yukashima huksay 01.01.2018 / 16:35

1 resposta

0

Por que não criar um script de shell com o mesmo nome que chama seu comando, mas filtra a saída com grep ? É claro que adicione o diretório do executável ao início do $ PATH para que qualquer chamada para o seu programa seja seu script de shell. Por exemplo:

#!/bin/bash
/bin/ps | /bin/grep -v "Process name"

Isso mostrará todos os processos que ps mostra, exceto "Process name" . Coloque-o em um script de shell bash usando o caminho completo para seus comandos. Coloque este comando em /directory/x e adicione o script abaixo em /etc/profile.d/path.sh

#!/bin/bash
PATH="/directory/x:$PATH";

Isso substituirá qualquer referência a ps ao seu script personalizado. Lmk se você tiver alguma dúvida e espero que isso ajude! :)

    
por Kyle H 01.01.2018 / 17:18