Используя Linux, я хотел бы отслеживать исполняемые файлы, которые выполняются от моего имени, включая всю командную строку (на практике каждый exec * () выполняется как мой собственный пользователь). Предполагается, что программа, которую я не контролирую, для выполнения задачи выполняет программу, которую я передаю, но я хочу убедиться, что она это делает, и какие опции она использует. Программа, которой я не управляю, подлый и, кажется, меняет поведение в зависимости от имени программы, которую она должна выполнить для задачи, поэтому я не могу передать сценарий оболочки, который бы регистрировал информацию и вызывал реальное программа.
Могу ли я получить информацию обо всех exec * (), выполненных моим пользователем в системе в Linux, включая полную командную строку? Если не считать ps
цикла, то есть. Я бы предпочел сделать это непосредственно в системе, в которой я работаю, и мне не требуется root-доступ, но при необходимости я могу создать систему, в которой у меня есть root-доступ, установить программы и провести там исследование.
Использование Ubuntu 12.4 LTS.
audit
дает ответ , но «целая командная строка» в оболочке также может повлиять на дочерний процесс, используя параметры перенаправления / конвейера и envvar, а также содержащие подстановки / расширения, несущественное цитирование и расстояние, и структуры управления, как doa && dob
, и вы не получите их.