Как скрыть аргументы, отправленные исполняемому файлу из ps [duplicate]

На этот вопрос уже есть ответ здесь:

Я написал сценарий, который использует ps -G -o uid,cmd для регистрации команд, которые определенная группа пользователей системы выполняет во времени.

Что я хочу знать, так это возможно ли, чтобы пользователи скрывали то, что они делают, от моего сценария. И как они могут это сделать, если да. Обратите внимание, что мои пользователи не входят в группу sudo. Поэтому они не могут использовать prctl; мне нужен другой вариант, не требующий административных привилегий

Я думал, что если обернуть мой код в функцию, задать для нее псевдоним и вызывать этот псевдоним, то это скроет мой скрипт, но, похоже, это не работает. Так есть ли способ скрыть код из ps?

Вот MVC моего кода, чтобы показать, почему я думаю, что трюк с псевдонимом не работает:

#!/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

И вот краткое изложение связанных частей того, что я получаю в результате:

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)

Обратите внимание, что в выводе были некоторые отступы (из-за опции -H в ps), которые я удалил, и отступы дублирующей строки были другими.

Из этого я сделал вывод, что создание псевдонимов и т.д. не работает. Под не работает я имею в виду, что мои пользователи не могут сделать псевдонимы для своих команд и запускать эти команды и скрывать свои команды таким образом. Потому что если бы они могли, моя команда ps, для которой я задал псевдоним в своем скрипте, не должна была бы появиться в результате.

Итак, вот вопрос простыми словами:

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

p.s. Пожалуйста, обратите внимание, что я знаю о методах pam для протоколирования и прочего. Я просто хочу проверить, работает ли этот метод.

p.s.s. Я указал метод alias, потому что друг сказал мне, что это будет работать, но это не сработало. Поэтому я уже объяснил, что это, похоже, не работает, чтобы предотвратить людей от прихода и предоставления этого в качестве ответа.

просьба!!!

Может кто-нибудь объяснить мне, почему мой вопрос закрыт как точный дубликат другого вопроса, а ответы в упомянутом вопросе вообще не решают мою проблему!???

0
задан 3 January 2018 в 02:26

1 ответ

Почему бы не сделать сценарий оболочки с тем же именем, которое называет Вашу команду, но фильтрует вывод с grep? Конечно, добавьте каталог исполняемого файла к началу $PATH, таким образом, любой вызов к Вашей программе будет Вашим сценарием оболочки. Например:

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

Это покажет все процессы это ps шоу кроме "Process name". Поместите его в сценарий оболочки удара с помощью полного пути для команд. Поместите эту команду в /directory/x и добавьте ниже сценария к /etc/profile.d/path.sh

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

Это переопределит любую ссылку на ps к Вашему пользовательскому сценарию. Lmk, если Вы имеете какие-либо вопросы и надеетесь, что это помогает!:)

0
ответ дан 31 October 2019 в 23:34

Другие вопросы по тегам:

Похожие вопросы: