Это не имеет ничего общего ни с bash
ни с iptables
(как изначально предлагали ваши теги вопросов). Этот /etc/rsyslog.d/iptables.conf
является частью конфигурации rsyslogd
, а не конфигурации iptables
.
&
является частью синтаксиса, который понимает rsyslog
.
Это объясняется здесь:
Вы можете иметь несколько действий для одного селектора (или, точнее, одного фильтра такой линии селектора). Каждое действие должно быть в отдельной строке, и строка должна начинаться с символа амперсанда (&
) и не иметь фильтров. Примером будет
*.=crit :omusrmsg:rger
& root
& /var/log/critmsgs
Эти три строки отправляют критические сообщения пользователю rger
и root
а также сохраняют их в /var/log/critmsgs
. Использование нескольких действий для каждого селектора удобно, а также повышает производительность.
Тогда ~
объясняется здесь:
Если действие отмены выполнено, полученное сообщение немедленно отбрасывается. Никакой дальнейшей обработки не происходит.
[…] Discard - это просто слово stop
без дополнительных параметров:
stop
Например,
*.* stop
отбрасывает все (хорошо, вы можете добиться того же самого, вообще не запустив rsyslogd
…).
Обратите внимание , что в старой версии конфигурации тильда ~
также может быть использована вместо слова stop
В вашем случае соответствующие сообщения будут записаны в файл, а затем удалены (не обрабатывается дальше).