Você precisa configurar auditdpara gravar execveeventos. Exemplo no RHEL5:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve
WARNING - 32/64 bit syscall mismatch, you should specify an arch
[root@ditirlns01 ~]#
Ignoro o aviso de arco e ele não parece importar, mas você pode usá-lo -F arch=b64ou -F arch=b32configurá-lo, se quiser.
O resultado do exposto acima é:
[root@ditirlns01 ~]# ls /tmp/whatever
ls: /tmp/whatever: No such file or directory
[root@ditirlns01 ~]# grep whatever /var/log/audit/audit.log
type=EXECVE msg=audit(1386797915.232:5527206): argc=3 a0="ls" a1="--color=tty" a2="/tmp/whatever"
type=EXECVE msg=audit(1386797927.133:5527241): argc=3 a0="grep" a1="whatever" a2="/var/log/audit/audit.log"
[root@ditirlns01 ~]#
Isso é obviamente rápido e sujo, mas é o básico de como você faz isso. O que você precisa fazer exatamente depende muito do que você está tentando fazer exatamente. Você pode reduzir o fluxo de auditoria usando vários filtros no auditctlcomando, mas eu não conheço nenhuma dessas informações e não sei o que incluir. Se você precisar de algo mais específico, sugiro que você verifique a página de manual ou poste um comentário para esta resposta, e eu a atualizarei um pouco mais.
Espero que ajude a empurrá-lo na direção certa.
EDITAR:
Como sua pergunta envolve a visualização de um usuário em particular, posso mostrar a você que:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F euid=16777216
WARNING - 32/64 bit syscall mismatch, you should specify an arch
Idêntico ao anterior, mas somente execvepor alguém executando com o ID de usuário efetivo de 16777216será registrado. Se você precisar especificar o loginuidvalor do usuário (com quem eles inicialmente efetuaram login no sistema), filtre auid:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F auid=16777216
WARNING - 32/64 bit syscall mismatch, you should specify an arch
Os filtros AUID / loginuid seriam úteis, por exemplo, se o usuário fizer um suou sudofazer root. Nessa situação, haverá muitas coisas sendo executadas como root, mas você só se preocupa com as coisas que foram iniciadas pelo usuário em questão. auditctltambém permite empilhar filtros para que você possa filtrar por ambos euide auid:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F auid=16777216 -F euid=0
WARNING - 32/64 bit syscall mismatch, you should specify an arch
[root@ditirlns01 ~]# ls /tmp/nashly -ltar
ls: /tmp/nashly: No such file or directory
[root@ditirlns01 ~]# grep nashly /var/log/audit/audit.log
type=EXECVE msg=audit(1386798635.199:5529285): argc=4 a0="ls" a1="--color=tty" a2="/tmp/nashly" a3="-ltar"
type=EXECVE msg=audit(1386798646.048:5529286): argc=3 a0="grep" a1="nashly" a2="/var/log/audit/audit.log"