Por que '& ~' significa “descartar as mensagens que foram correspondidas na linha anterior”?

0

Na página da Web log do iptables

Create /etc/rsyslog.d/iptables.conf with the following contents:

:msg, startswith, "iptables: " -/var/log/iptables.log
& ~

A segunda linha significa descartar as mensagens que foram correspondidas na linha anterior.
Por que & ~ significa "descartar as mensagens que foram correspondidas na linha anterior" na configuração do iptables?

    
por scrapy 18.11.2017 / 15:42

1 resposta

1

Não tem nada a ver com bash nem iptables (como sugerido originalmente nas tags de pergunta). Este /etc/rsyslog.d/iptables.conf é uma parte de rsyslogd config, não iptables config.

& é uma parte da sintaxe que rsyslog entende.

É explicado aqui :

You can have multiple actions for a single selector (or more precisely a single filter of such a selector line). Each action must be on its own line and the line must start with an ampersand (&) character and have no filters. An example would be

*.=crit :omusrmsg:rger
& root
& /var/log/critmsgs

These three lines send critical messages to the user rger and root and also store them in /var/log/critmsgs. Using multiple actions per selector is convenient and also offers a performance benefit.

Então ~ é explicado aqui :

If the discard action is carried out, the received message is immediately discarded. No further processing of it occurs. […] Discard is just the word stop with no further parameters:

stop

For example,

*.*   stop

discards everything (ok, you can achieve the same by not running rsyslogd at all…).

Note that in legacy configuration the tilde character ~ can also be used instead of the word stop.

No seu caso, as mensagens correspondentes serão registradas no arquivo e descartadas (não processadas posteriormente).

    
por 18.11.2017 / 16:49

Tags