Необходимо настроить auditd
записывать execve
события. Пример на RHEL5:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve
WARNING - 32/64 bit syscall mismatch, you should specify an arch
[root@ditirlns01 ~]#
Я игнорирую предупреждение дуги, и это, кажется, не имеет значения, но можно использовать -F arch=b64
или -F arch=b32
установить его, если Вы хотите.
Результат вышеупомянутого:
[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 ~]#
Это очевидно быстро и грязно, но это - основы того, как Вы делаете это. Что необходимо сделать, точно, вероятно, зависит в большой степени от того, что Вы пытаетесь сделать точно. Можно уменьшить контрольный поток с помощью различных фильтров в auditctl
команда, но я не знаю ни одной той информации, таким образом, я не знаю, что включать. Если бы Вам нужно что-то более определенное, я предложил бы Вас или проверить страницу справочника или добавить комментарий к этому ответу, и я обновлю его еще немного.
Надежда, которая помогает продвинуть Вас в правильном направлении.
Править:
Так как Ваш вопрос включает рассмотрение конкретного пользователя, я могу показать Вам что:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F euid=16777216
WARNING - 32/64 bit syscall mismatch, you should specify an arch
Идентичный вышеупомянутому, но только execve
кем-то работающим с эффективным идентификатором пользователя 16777216
будет зарегистрирован. Если необходимо указать пользователя loginuid
значение (кто они первоначально вошли в систему как) затем Вы фильтруете auid
вместо этого:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F auid=16777216
WARNING - 32/64 bit syscall mismatch, you should specify an arch
Фильтры AUID/loginuid были бы полезны, например, если пользователь сделает a su
или sudo
базироваться. В той ситуации будет много материала, работающего как корень, но Вы только обеспокоены материалом, который был начат рассматриваемым пользователем. auditctl
также позволяет Вам фильтры стека, таким образом, можно отфильтровать обоими euid
и 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"
Попробуйте это с GNU SED:
sed -ne '/signal:/{h;b};/^[^ ]/{p;x};p' file
См.: Человек SED
Я рекомендую запустить iw --help
и прочитать последнюю строку вывода.
Кроме того, я думаю, что вы могли бы обойтись без всех этих труб и использовать одно единственное sed
обращение:
iw wlan0 scan | sed -n '/signal:/{s/^[[:blank:]]*/ * /;h}
/^[[:blank:]]*SSID: /{s///;G;p};/primary/{s/^[[:blank:]]*/ /;p}'
т.е. :
/signal:/{s/^[[:пробел:]]*/ * /;h}
- отформатировать сигнал
и скопировать через h
старый пробел
/^[[:пробел:]]*SSID: /{s//; G;p}
- строка формата SSID
, добавьтеG
строку из пространства удержания к шаблону и распечатайте
/primary/{s/^[[:blank:]]*/ /;p}
- строка формата primary
и p
распечатайте ее
На моем компьютере выполнение ...
sudo iw wlp0s18f2u1 scan |
sed -Ee:n -e'$!N;/^.sig/!D' \
-e'/\* pri/s/.([^\t]*\t).*(SSID:[^\t]*\t).*p/\2\1p/;t' \
-ebn
... дает такие результаты, как ...
SSID: ATT477A7i6
signal: -61.00 dBm
primary channel: 6
SSID: ATT5K5I6b4
signal: -65.00 dBm
primary channel: 6
SSID: ATT960
signal: -75.00 dBm
primary channel: 6
SSID: Bernardo Shores WiFi 4
signal: -77.00 dBm
primary channel: 6
Он работает с GNU sed
. Более портативная версия может выглядеть так:
( t=$(printf \\t) nt=[\^$t]*$t
sudo iw wlp0s18f2u1 scan |
sed -e:n -e'$!N;/^.sig/!D' \
-e"/* pri/s/.\($nt\).*\(SSID:$nt\).*p/\2\1p/;t" \
-ebn
)