Skip to main content

Syslogd Linux и команда Unix

FreeBSD - Managing Log files (Июнь 2026)

FreeBSD - Managing Log files (Июнь 2026)
Anonim

Sysklogd предоставляет две системные утилиты, которые обеспечивают поддержку системного ведения журнала и ловушки сообщений ядра. Поддержка сокетов и интернет-сокетов unix позволяет этому пакету поддержки поддерживать как локальную, так и удаленную регистрацию.

Регистрация системы обеспечивается версиейSyslogd(8), полученных из исходных источников BSD. Поддержка ведения журнала ядра обеспечиваетсяKlogd(8), которая позволяет вести ведение журнала ядра либо автономно, либо как клиент syslogd.

Syslogd предоставляет своего рода регистрацию, которую используют многие современные программы. Каждое зарегистрированное сообщение содержит хотя бы время и поле имени хоста, как правило, поле имени программы, но это зависит от того, насколько надежна программа ведения журнала.

В то время какSyslogd источники были сильно изменены, несколько примечаний в порядке. Прежде всего, систематическая попытка обеспечить, чтобы syslogd следовал стандартным стандартным поведением BSD. Вторая важная концепция - отметить, что эта версия syslogd прозрачно взаимодействует с версией syslog, найденной в стандартных библиотеках. Если двоичный файл, связанный с стандартными разделяемыми библиотеками, не работает правильно, мы хотели бы привести пример аномального поведения.

Основной файл конфигурации /etc/syslog.conf или альтернативный файл, предоставленный с помощью-f опция, считывается при запуске. Любые строки, начинающиеся с хэш-метки (`` # '') и пустые строки, игнорируются. Если во время разбора возникает ошибка, вся строка игнорируется.

конспект

Syslogd -a разъем -d -f файл конфигурации -час -l Список_адресов -m интервал -n -п разъем -s domainlist -v -Икс

Опции

-a разъем

Используя этот аргумент, вы можете указать дополнительные сокеты из этогоSyslogd должен слушать. Это необходимо, если вы дадите некоторый демон запустить в среде chroot (). Вы можете использовать до 19 дополнительных сокетов. Если вашей среде требуется еще больше, вам нужно увеличить символMAXFUNIX в исходном файле syslogd.c. Пример для демона chroot () описывается людьми из OpenBSD по адресу http://www.psionic.com/papers/dns.html.

-d

Включает режим отладки. Используя это, демон не будетвилка(2), чтобы установить себя в фоновом режиме, но напротив того, что осталось на переднем плане и написать много отладочной информации о текущем tty. Дополнительную информацию см. В разделе DEBUGGING.

-f файл конфигурации

Укажите альтернативный файл конфигурации вместо /etc/syslog.conf , который является значением по умолчанию.

-час

По умолчанию syslogd не будет пересылать сообщения, получаемые с удаленных хостов. Указание этого переключателя в командной строке приведет к тому, что демона журнала переадресует любые удаленные сообщения, которые он получает, на пересылку хостов, которые были определены.

-l Список_адресов

Укажите имя хоста, которое должно регистрироваться только с его простым именем хоста, а не с fqdn. Несколько узлов могут быть заданы с использованием разделителя двоеточия (``: '').

-m интервал

Syslogd регулярно регистрирует метку метки. По умолчанию интервал между двумя -- ОТМЕТКА -- линии - 20 минут. Это можно изменить с помощью этой опции. Настройка интервал к нулю полностью отключает его.

-n

Избегайте автофонирования. Это необходимо, особенно еслиSyslogd запускается и контролируетсяв этом(8).

-п разъем

Вы можете указать альтернативный сокет домена unix вместо / DEV / журнал .

Этот параметр позволит устройству получать сообщение из сети, используя сокет интернет-домена с помощью службы syslog (см. (5)). По умолчанию необходимо не получать сообщения из сети.

Этот вариант представлен в версии 1.3 пакета sysklogd. Обратите внимание, что поведение по умолчанию противоположно тому, как ведут себя более старые версии, поэтому вам может потребоваться включить это.

-s domainlist

Укажите имя домена, которое необходимо удалить до начала регистрации. Несколько доменов можно указать с помощью разделителя двоеточия (``: ''). Пожалуйста, имейте в виду, что никакие поддомены не могут быть указаны, а только целые домены. Например, если-s north.de и ведение журнала хоста разрешается до satu.infodrom.north.de, ни один домен не будет разрезан, вам нужно будет указать два домена, например:-s north.de:infodrom.north.de.

-v

Версия для печати и выход.

-Икс

Отключить поиск имен при получении удаленных сообщений. Это позволяет избежать блокировок, когда сервер имен работает на том же компьютере, на котором запущен демон syslog.

сигналы

Syslogd реагирует на набор сигналов. Вы можете легко отправить сигнал наSyslogd используя следующее:

kill -SIGNAL `cat / var / run / syslogd.pid`

SIGHUP

Это позволяетSyslogd выполнить повторную инициализацию. Все открытые файлы закрыты, файл конфигурации (по умолчанию /etc/syslog.conf ) будут перечитываться, асистемный журнал(3) объект снова запускается.

SIGTERM

Syslogd умрет.

SIGINT, SIGQUIT

Если отладка включена, они игнорируются, в противном случаеSyslogd умрет.

SIGUSR1

Включение / выключение отладки. Этот параметр можно использовать, только еслиSyslogd начинается с-d отладка.

SIGCHLD

Ждите детей, если кто-то родился, из-за стеновых сообщений.

Различия в синтаксисе файла конфигурации

Syslogd использует немного другой синтаксис для своего файла конфигурации, чем исходные источники BSD. Первоначально все сообщения определенного приоритета и выше были отправлены в файл журнала.

Например, следующая строка вызвала ВСЕ вывод от демонов, использующих средства демон (отладка - самый низкий приоритет, поэтому все выше также совпадают), чтобы войти в / USR / ADM / демоны :

# Пример syslog.conf daemon.debug / usr / adm / dememons

Согласно новой схеме это поведение остается неизменным. Разница заключается в добавлении четырех новых спецификаторов, звездочки (*), знак равенства (=), восклицательный знак (!) и знак минус (-).

* указывает, что все сообщения для указанного объекта должны быть направлены в пункт назначения. Обратите внимание, что это поведение вырождено с указанием уровня приоритета отладки. Пользователи указали, что нотация звездочки более интуитивно понятна.

= wildcard используется для ограничения регистрации в указанном классе приоритета. Это позволяет, например, маршрутизировать только отладочные сообщения к определенному источнику ведения журнала.

Например, следующая строка в syslog.conf будет направлять отладочные сообщения из всех источников на / USR / ADM / отладки файл.

# Пример syslog.conf *. = Debug / usr / adm / debug

! используется для исключения регистрации указанных приоритетов. Это влияет на все (!) Возможности задания приоритетов.

Например, следующие строки будут записывать все сообщения почты объекта, кроме тех, которые имеют информацию о приоритете, к / USR / ADM / почта файл. И все сообщения из news.info (в том числе) в news.crit (исключая) будут зарегистрированы в / USR / ADM / Новости файл.

# Пример сообщения syslog.conf. *; Mail.! = Info / usr / adm / mail news.info; news.! Crit / usr / adm / news

Вы можете использовать его интуитивно как спецификатор исключения. Вышеупомянутая интерпретация просто инвертирована. Выполняя это, вы можете использовать

mail.none

или же

почта.! *

или же

почта.! отлаживать

для пропуска каждого сообщения, которое поставляется с почтовым сервисом. Существует много возможностей для игры. :-)

- может использоваться только для префикса имени файла, если вы хотите пропустить синхронизацию файла после каждой записи на него.

Это может занять некоторую акклиматизацию для тех людей, которые привыкли к чистому поведению BSD, но тестеры показали, что этот синтаксис несколько более гибок, чем поведение BSD. Обратите внимание, что эти изменения не должны влиять на стандартsyslog.conf(5) файлов. Вы должны специально изменить файлы конфигурации, чтобы получить расширенное поведение.

Поддержка удаленного ведения журнала

Эти изменения обеспечивают сетевую поддержку средства syslogd. Поддержка сети означает, что сообщения могут быть перенаправлены с одного узла, на котором запущен syslogd, на другой узел, на котором запущен syslogd, где они будут фактически зарегистрированы в файле диска.

Чтобы включить это, вы должны указать в командной строке. Поведение по умолчанию - это то, чтоSyslogd не будет слушать сеть.

Стратегия состоит в том, чтобы syslogd прослушивал сокет unix для локально сгенерированных сообщений журнала. Такое поведение позволит syslogd взаимодействовать с syslog, найденным в стандартной библиотеке C. В то же время syslogd прослушивает стандартный порт syslog для сообщений, отправленных с других хостов. Для правильной работыСервисы(5) файлов (обычно /так далее ) должна иметь следующую запись:

syslog 514 / udp

Если эта запись отсутствуетSyslogd ни они не могут получать удаленные сообщения и не отправлять их, потому что порт UDP не может быть открыт. Вместо, Syslogd немедленно умрет, выдув сообщение об ошибке.

Чтобы заставить сообщения пересылаться другому хосту, замените обычную строку файла в syslog.conf файл с именем хоста, которому будут отправляться сообщения, добавленные с помощью @.

Например, для пересылкиВСЕ сообщений на удаленный хост, используя следующие syslog.conf запись:

# Пример файла конфигурации syslogd для # сообщений на удаленный хост вперед. *. * @hostname

Переслать всеядро сообщения на удаленный хост, файл конфигурации будет выглядеть следующим образом:

# Пример файла конфигурации для пересылки всех сообщений ядра # на удаленный хост. kern. * @hostname

Если удаленное имя узла не может быть разрешено при запуске, поскольку сервер имен может быть недоступен (его можно запустить после syslogd), вам не нужно беспокоиться.Syslogd повторите попытку, чтобы разрешить это имя десять раз, а затем пожаловаться. Другая возможность избежать этого - поместить имя хоста в / и т.д. / хосты .

С нормальнымSyslogds вы получите циклы syslog, если вы отправляете сообщения, полученные с удаленного хоста, на один и тот же хост (или более сложный для третьего хоста, который отправляет его обратно на первый и т. д.). В моем домене (Infodrom Oldenburg) мы случайно получили один и наши диски, заполненные одним и тем же сообщением. :-(

Чтобы избежать этого в дальнейшем, никакие сообщения, полученные с удаленного хоста, больше не отправляются на другой (или тот же) удаленный хост. Если есть сценарии, в которых это не имеет смысла, пожалуйста, напишите мне (Joey).

Если удаленный хост находится в том же домене, что и хост,Syslogd работает только, вместо всего fqdn будет регистрироваться только имя хоста.

В локальной сети вы можете предоставить центральный журнальный сервер для хранения всей важной информации на одной машине. Если сеть состоит из разных доменов, вам не нужно жаловаться на ведение журнала полных имен вместо простых имен хостов. Вы можете использовать функцию strip-domain-s этого сервера. Вы можете сказатьSyslogd для удаления нескольких доменов, отличных от того, на котором находится сервер, и регистрации только простых имен хостов.

С использованием-l Опция также позволяет определять отдельные узлы в качестве локальных машин. Это также приводит к регистрации только их простых имен хостов, а не fqdns.

Разъем UDP, используемый для пересылки сообщений на удаленные хосты или для приема сообщений от них, открывается только тогда, когда это необходимо. В версиях до 1.3-23 он был открыт каждый раз, но не открыт для чтения или пересылки соответственно.

Выходные данные для именных каналов (FIFO)

Эта версия syslogd поддерживает запись журнала в именованные каналы (fifos). Фиолетовый или именованный канал может использоваться в качестве адресата для сообщений журнала, добавляя символ пипса (`` | '') к имени файла. Это удобно для отладки. Обратите внимание, что fifo должен быть создан командой mkfifo до запуска syslogd.

Следующий файл конфигурации направляет сообщения отладки от ядра до fifo:

# Пример конфигурации для маршрутизации отладки ядра # сообщений ТОЛЬКО в / usr / adm / debug, который является # именованным каналом. kern. = debug | / usr / adm / debug

Проблемы с установкой

Вероятно, есть одно важное соображение при установке этой версии syslogd. Эта версия syslogd зависит от правильного форматирования сообщений функцией syslog. Функционирование функции syslog в общих библиотеках изменилось где-то в области libc.so.4. 2-4 .n. Конкретное изменение состояло в том, чтобы обнулить конец сообщения до его передачи в / DEV / журнал разъем. Правильное функционирование этой версии syslogd зависит от нулевого завершения сообщения.

Эта проблема обычно проявляется, если в системе используются старые статически связанные двоичные файлы. Бинарники, использующие старые версии функции syslog, приведут к записи пустых строк, за которыми следует сообщение с первым символом в удаленном сообщении. Переустановка этих двоичных файлов на более новые версии разделяемых библиотек устранит эту проблему.

ИSyslogd(8) иKlogd(8) можно либо запустить из init (8), либо начать как часть последовательности rc. *. Если он запускается из init, параметр -n должен быть установлен, иначе вы получите массу демонов syslog. Это потому чтов этом(8) зависит от идентификатора процесса.

Угрозы безопасности

Существует потенциал для использования демона syslogd в качестве канала для атаки на отказ в обслуживании. Благодарим меня за то, что Джон Моррисон ([email protected]) предупредил меня об этом. Программа-мошенник (mer) может очень легко затопить демона syslogd сообщениями syslog, в результате чего файлы журнала будут потреблять все оставшееся пространство в файловой системе. Разумеется, активация регистрации через сокеты домена inet подвергает систему рискам, не зависящим от программ или отдельных лиц на локальном компьютере.

Существует несколько способов защиты машины:

  1. Реализовать брандмауэр ядра, чтобы ограничить доступ хостов или сетей к сокету 514 / UDP.
  2. Ведение журнала может быть направлено на изолированную или не-корневую файловую систему, которая, если она заполнена, не повредит машину.
  3. Можно использовать файловую систему ext2, которая может быть настроена так, чтобы ограничивать определенный процент файловой системы только от использования root.НОТА что для этого потребуется, чтобы syslogd выполнялся как процесс без полномочий root. ТАКЖЕ ПРИМЕЧАНИЕ что это предотвратит использование удаленного ведения журнала, поскольку syslogd не сможет привязываться к сокету 514 / UDP.
  4. Отключение сокетов домена inet ограничит риск для локальной машины.
  5. Используйте шаг 4, и если проблема не устранена и не является второстепенной для программы / демона-изгоев, получите длину присоски * 3,5 фута (приблизительно 1 метр) и поговорите с соответствующим пользователем. Соединительная рейка. --- 3/4, 7/8 или 1in. закаленный стальной стержень, с внутренней резьбой на каждом конце. Первичное использование в нефтяной промышленности в Западной Северной Дакоте и в других местах для откачки нефти из нефтяных скважин. Вторичные виды использования предназначены для строительства лотов для кормления крупного рогатого скота и для борьбы с случайным непокорным или воинственным лицом.

отладка

Когда отладка включена, используя-d вариантSyslogd будет очень многословным, написав большую часть того, что он делает на stdout. Всякий раз, когда файл конфигурации перечитывается и повторно анализируется, вы увидите табличное представление, соответствующее внутренней структуре данных. Эта таблица состоит из четырех полей:

число

Это поле содержит порядковый номер, начинающийся с нуля. Это число представляет собой позицию во внутренней структуре данных (т. Е. Массив). Если один номер не учитывается, то может быть ошибка в соответствующей строке в /etc/syslog.conf .

шаблон

Это поле является сложным и точно отражает внутреннюю структуру. Каждая колонка означает объект (см.системный журнал(3)). Как вы можете видеть, есть еще некоторые средства, оставшиеся свободными для прежнего использования, используются только самые левые. Каждое поле в столбце представляет приоритеты (см.системный журнал(3)).

действие

В этом поле описывается конкретное действие, которое происходит при получении сообщения, которое соответствует шаблону. См.syslog.conf(5) manpage для всех возможных действий.

аргументы

В этом поле отображаются дополнительные аргументы для действий в последнем поле. Для регистрации файлов это имя файла для файла журнала; для регистрации пользователей это список пользователей; для удаленного ведения журнала это имя хоста машины для входа в систему; для консольной регистрации это используемая консоль; для tty-logging это заданный tty; стена не имеет дополнительных аргументов.

Смотрите также

лесоруб(1), системный журнал(2), (5)

соавторы

Syslogd взято из источников BSD, Грег Ветштейн ([email protected]) выполнил порт в Linux, Мартин Шульце ([email protected]) исправил некоторые ошибки и добавил несколько новых функций.Klogdбыл первоначально написан Стивом Лордом ([email protected]), Грег Веттштейн сделал большие улучшения.

Доктор Грег ВетштейнРазработка систем Enjellic Systems

Отдел исследований онкологических исследованийРаковый центр Роджера МарисаФарго, Нью-Джерси[email protected]

Стивен ТвидиОтдел компьютерных наукЭдинбургский университет, Шотландия[email protected]

Юха Виртанен[email protected]

Шейн Олдертон[email protected]

Мартин ШульцеИнфодорм Ольденбург[email protected]

Важный: Использовать человек команда ( % человек ), чтобы увидеть, как команда используется на вашем конкретном компьютере.

Статьи по Теме

  • sysklogd - Команда Linux - команда Unix
  • rwall - Что такое rwa