Я новичок в strace, и я хочу спрятать раздвоенный ребенок. Поскольку я хочу делать это в качестве обычного пользователя, процесс, который я хочу привязать с помощью pid, должен быть дочерним элементом процесса трассировки (strace), поэтому мне нужно разворачивать дважды. В Баш:Спрячьте pid, включенные дочерние процессы
((sleep 1; echo "I'm echoed from a child of strace")& exec strace -p $!)
#the sleep is for giving strace time to attach itself
Это все работает, но я хочу, чтобы отслеживать детей отслеживаемой процесс слишком и, как только я добавить -f
переключатель в Трассирование, я получаю сообщение об ошибке:
((sleep 1; echo "I'm echoed from a child of strace")& exec strace -fp $!)
#=> strace: attach: ptrace(PTRACE_ATTACH, ...): No such process
Любые консультации ?
Не на ubuntu я не могу. Для этого у них есть политика безопасности. То, что вы делаете, это создание дочернего элемента strace, запустив его аргумент команды. У меня нет аргумента команды для того, что я хочу контролировать. Я хочу контролировать ветку в более крупном пакете. Я могу перейти к этой ветке с помощью нереста с параметром, но это снова пройдет через все установочные коды. Вот почему я предпочитаю разветвлять и трассировать pid, но мне также необходимо ограничить процессы, вызываемые веткой (используйте ключ -f), а не только ветвь. Код bash - это просто демонстрация проблемы в простых выражениях. – PSkocik
Возможность отслеживать процессы, которые не являются вашими детьми, представляет собой угрозу безопасности - одно взломанное приложение на уровне пользователя сможет прослушивать то, что делают другие приложения, и, например, узнать о паролях таким образом. – PSkocik
Это может быть отключено, хотя - см. Здесь: https://wiki.ubuntu.com/Security/Features#ptrace – pdw