Syslogd Linux и Unix команда

Sysklogd обезбедува две системски алатки кои обезбедуваат поддршка за системско најавување и заробување на пораките во јадрото. Поддршката на приклучоците за интернет и unix домен овозможува овој пакет за поддршка да поддржува и локално и далечинско логирање.

Системското најавување е обезбедено со верзија на syslogd (8), која произлегува од берзанските извори на BSD. Поддршката за логирање на кернелот е обезбедена од алатката klogd (8) која овозможува сечење на кернелот да се спроведува самостојно или како клиент на syslogd.

Syslogd обезбедува еден вид на најавување што го користат многу современи програми. Секоја најавена порака содржи барем време и поле за име на име, вообичаено поле за име на програма, но тоа зависи од тоа колку сигурно е програмата за најавување.

Додека изворите на syslogd биле силно изменети, неколку белешки се во ред. Прво на сите има систематски обид да се осигура дека syslogd го следи стандардното, стандардно однесување на BSD. Вториот важен концепт кој треба да се забележи е дека оваа верзија на syslogd е транспарентно поврзана со верзијата на syslog која се наоѓа во стандардните библиотеки. Ако бинарни поврзани со стандардните споделени библиотеки не функционираат правилно, би сакале еден пример на аномално однесување.

Главната конфигурациска датотека /etc/syslog.conf или алтернативна датотека, дадена со опцијата -f , се чита при стартување. Сите линии што започнуваат со хеш-марката (`` # '') и празни линии се игнорираат. Ако се случи грешка за време на парсирањето целата линија се игнорира.

Синопсис

[ -m ] [ -n ] [ -f socket ] [ -d ] [ -f config file ] [ -h ] [ -l hostlist ] [ -m interval ] [ -n ] [ -p socket ] [ -r ] [ -s domainlist ] [ - v ] [ -x ]

Опции

- приклучок

Користејќи го овој аргумент можете да наведете дополнителни сокети од тој syslogd мора да ги слушате. Ова е потребно ако сакате да дозволите некој демон да работи во chroot () средина. Можете да користите до 19 дополнителни сокети. Ако на вашето опкружување му треба уште повеќе, мора да го зголемите симболот MAXFUNIX во рамките на изворната датотека syslogd.c. Пример за демон chroot () е опишан од луѓето од OpenBSD на http://www.psionic.com/papers/dns.html.

-d

Вклучува режим за дебагирање. Користејќи го овој демонот нема да продолжи вилушката (2) за да се постави во позадина, туку спротивно на тоа остане во преден план и да напише многу дебагирачки информации за тековната tty. Погледнете го делот DEBUGGING за повеќе информации.

-f конфиг датотека

Наведете алтернативна конфигурациска датотека наместо /etc/syslog.conf , што е стандардно.

Стандардно syslogd нема да ги препраќа пораките што ги прима од оддалечените компјутери. Одредувањето на овој прекинувач на командната линија ќе предизвика даемонот на дневник да пренасочи какви било далечински пораки што ги прима за препраќање на домаќините кои се дефинирани.

- листа на домаќини

Наведете име на хост што треба да биде најавен само со нејзиното едноставно името на домаќинот, а не со fqdn. Повеќе домаќини може да се специфицираат со користење на дебелото црево (``: '') сепаратор.

-m интервал

На syslogd редовно се најавува временска ознака. Стандардниот интервал помеѓу две МАРК- линии е 20 минути. Ова може да се промени со оваа опција. Поставувањето на интервалот на нула целосно го исклучува.

-n

Избегнувајте автоматско запознавање. Ова е потребно особено ако syslogd се стартува и контролира со init (8).

-p приклучок

Можете да наведете алтернативен приклучок за Unix домен, наместо / dev / log .

-r

Оваа опција ќе овозможи објектот да прими порака од мрежата користејќи приклучок за интернет домен со услугата syslog (види (5)). Стандардно е да не примате пораки од мрежата.

Оваа опција е воведена во верзија 1.3 од пакетот sysklogd. Забележете дека стандардното однесување е спротивно на тоа како постарите верзии се однесуваат, па можеби ќе треба да го вклучите ова.

-со домен листа

Наведете име на домен што треба да се одземе пред да влезете. Повеќекратни домени може да се специфицираат со користење на сепаратор на дебелото црево (``: ''). Ве молиме да ве советуваме да не може да се наведат никакви поддомени, туку само цели домени. На пример, ако -s north.de е наведено и логувањето на домаќинот се решава на satu.infodrom.north.de нема да се намали домен, ќе треба да наведете два домени како: -s north.de:infodrom.north.de .

-v

Верзија за печатење и излез.

-x

Оневозможете ги именските имиња кога примате оддалечени пораки. Ова ги избегнува блокирањата кога серверот за имиња работи на истата машина која го води syslog-серверот.

Сигнали

Syslogd реагира на збир на сигнали. Можете лесно да испратите сигнал до syslogd користејќи го следново:

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

Sighup

Ова овозможува syslogd да изврши повторно иницијализација. Сите отворени датотеки се затворени, конфигурациската датотека (стандардно е /etc/syslog.conf ) ќе се препрочитува и повторно ќе се започне со syslog (3).

SIGTERM

Сислогот ќе умре.

SIGINT , SIGQUIT

Ако дебагирањето е овозможено, тие се игнорираат, инаку syslogd ќе умре.

SIGUSR1

Вклучете / исклучете го дебагирањето. Оваа опција може да се користи само ако syslogd се стартува со опцијата -d debug.

SIGCHLD

Чекајте деца ако некои се родени поради ѕидни пораки.

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

Syslogd користи малку поинаква синтакса за неговата конфигурациска датотека од оригиналните извори на BSD. Првично сите пораки од одреден приоритет и погоре беа пренасочени кон датотеката за евиденција.

На пример, следната линија го предизвика СИТЕ излез од демони користејќи објекти на демон (debug е најнизок приоритет, така што секој повисок ќе се совпаѓа) за да оди во / usr / adm / daemons :

# Примерок syslog.conf daemon.debug / usr / adm / daemons

Според новата шема, ова однесување останува исто. Разликата е додавање на четири нови спецификатори, ѕвездичка ( * ), знак за равенката ( = ), извичникот ( ! ) И знакот минус ( - ).

* * Одредува дека сите пораки за наведениот објект треба да бидат насочени кон дестинацијата. Имајте на ум дека ова однесување е дегенерирано со одредување на приоритетното ниво на дебагирање. Корисниците наведоа дека нотацијата на ѕвездичката е поинтуитивна.

Маската се користи за ограничување на најавување на одредената класа на приоритет. Ова овозможува, на пример, рутирање само дебагирачки пораки до одреден извор за најавување.

На пример, следнава линија во syslog.conf ќе упати пораки за дебагирање од сите извори до датотеката / usr / adm / debug .

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

На ! се користи за да се исклучи запишувањето на наведените приоритети. Ова влијае на сите (!) Можности за специфицирање на приоритетите.

На пример, следните редови ќе ги најават сите пораки од пораката од објектот, освен оние со приоритетни информации во / usr / adm / mail датотеката. И сите пораки од news.info (вклучувајќи) до news.crit (исклучувајќи) би биле запишани во / usr / adm / news датотеката.

# Примерок syslog.conf mail. *; Пошта.! = Info / usr / adm / mail news.info; news.! Crit / usr / adm / news

Можете да го користите интуитивно како одреден исклучок. Горенаведеното толкување е едноставно превртено. Прави тоа што може да го користите

mail.none

или

mail.! *

или

mail.! debug

да ја прескокнете секоја порака што доаѓа со објект за пошта. Има многу простор да се игра со него. :-)

- Може да се користи само за префикс на име на датотека, ако сакате да ја испуштите синхронизацијата на датотеката откако ќе ја напишете.

Ова може да потрае некое аклиматизација за оние лица кои се користат за чисто BSD однесување, но тестерите посочија дека оваа синтакса е малку пофлексибилна од однесувањето на BSD. Забележете дека овие промени не треба да влијаат на стандардните syslog.conf (5) датотеки. Мора да ги модифицирате посебно конфигурациските датотеки за да добиете зголемено однесување.

Поддршка за далечинско вчитување

Овие модификации обезбедуваат мрежна поддршка на објектот syslogd. Поддршката на мрежата значи дека пораките може да се пренасочат од еден јазол со трчање syslogd до друг јазол што работи со syslogd, каде што тие ќе бидат всушност најавени на датотека со дискот.

За да го овозможите ова, треба да ја наведете опцијата -r на командната линија. Стандардното однесување е дека syslogd нема да ја слуша мрежата.

Стратегијата е да имате syslogd да слушате на приклучок за еден домен за локално генерирани дневни пораки. Ова однесување ќе дозволи syslogd да интервенира со syslog се најде во стандардната C библиотека. Во исто време syslogd слуша на стандардниот syslog порт за пораки испратени од други компјутери. За да ја направите оваа работа правилно, датотеките на услугите (5) (најчесто пронајдени во / etc ) мора да имаат следниот запис:

syslog 514 / udp

Ако овој запис недостасува, syslogd не може да прима далечински пораки ниту да ги испраќа, бидејќи UDP портата не може да се отвори. Наместо тоа, syslogd веднаш ќе умре, ќе ја објави порака за грешка.

За да предизвикате пораки да бидат пренасочени кон друг домаќин, заменете ја нормалната датотечна линија во датотеката syslog.conf со името на домаќинот на кој пораките треба да се испратат со @.

На пример, за да ги пренасочите СИТЕ пораки до оддалечениот компјутер користејќи го следново syslog.conf запис:

# Примете ја конфигурациската датотека со syslogd на # пораки до оддалечениот компјутер напред сите. *. * @hostname

Да ги пренасочи сите пораки на јадрото на оддалечениот компјутер, конфигурациската датотека би била како што следува:

# Примерок конфигурациска датотека за да ги пренасочи сите пораки на јадрото # до оддалечениот компјутер. kern. * @hostname

Ако оддалеченото име на хост не може да се реши при стартување, бидејќи името-серверот можеби нема да биде достапен (може да се стартува по syslogd), не мора да се грижите. Syslogd ќе се обиде повторно да го реши името десетпати и потоа да се жали. Друга можност да се избегне ова е да се смести името на домаќинот во / etc / hosts .

Со нормални syslogd s ќе добиете syslog-loops ако испраќате пораки што беа примени од оддалечениот компјутер до истиот домаќин (или повеќе комплицирано на трет домаќин што го испраќа назад до првиот и така натаму). Во мојот домен (Infodrom Oldenburg) ние случајно добивме еден и нашите дискови се пополнија со истата порака. :-(

За да се избегне ова во натамошни времиња, нема пораки кои биле примени од оддалечениот компјутер, веќе се испраќаат на друг (или ист) далечински управувач. Ако постојат сценарија, каде што ова нема смисла, ве молам, откажете ми (Џои) линија.

Ако оддалечениот компјутер се наоѓа во истиот домен како што е домаќин, syslogd работи, само едноставното име на домаќин ќе биде најавено наместо на целата fqdn.

Во локална мрежа можете да обезбедите централен сервер за најавување за да ги имаат сите важни информации што се чуваат на една машина. Ако мрежата се состои од различни домени, не мора да се жалите за најавување на целосно квалификувани имиња наместо едноставни име на хостови. Можеби ќе сакате да ги користите функциите на лента-домен на овој сервер. Можете да му кажете на syslogd да отстранува неколку домени, различни од оној во кој се наоѓа серверот, и да се логираат само едноставни име на хостови.

Користејќи ја -l опцијата, исто така постои можност да се дефинираат единечни домаќини како локални машини. Ова, исто така, резултира со логирање само на нивните едноставни имиња на хости, а не на fqdns.

UDP-приклучокот кој се користи за препраќање пораки до оддалечените компјутери или примање на пораки од нив е отворен само кога тоа е потребно. Во изданија пред 1.3-23 беше отворен секој пат, но не се отвори за читање или за препраќање, соодветно.

Излез на именувани цевки (FIFOs)

Оваа верзија на syslogd има поддршка за излез на влезови на именуваните цевки (fifos). А fifo или име цевка може да се користи како дестинација за најавите пораки со испраќање на симбол за пип (`` | '') на името на датотеката. Ова е корисно за дебагирање. Забележете дека fifodes мора да се креираат со командата mkfifo пред да започне syslogd.

Следната конфигурациска датотека упатува пораки за дебагирање од кернелот до fifo:

# Пример за конфигурација за рутирање на отстранување на кернелот # пораки САМО во / usr / adm / debug што е # назначена цевка. kern. = debug | / usr / adm / debug

Инсталација Загриженост

Постои веројатно една важна грижа при инсталирањето на оваа верзија на syslogd. Оваа верзија на syslogd зависи од правилното форматирање на пораките од функцијата syslog. Функционирањето на функцијата syslog во заедничките библиотеки се промени некаде во регионот на libc.so.4 [2-4] .n. Специфичната промена беше да се прекине пораката пред да се пренесе во / socket / socket. Правилното функционирање на оваа верзија на syslogd зависи од нула-престанок на пораката.

Овој проблем обично се манифестира ако старите статички поврзани бинарни датотеки се користат на системот. Бинарни датотеки што користат стари верзии на функцијата syslog ќе предизвикаат празни линии да бидат најавени проследено со пораката со првиот лик во отстранетата порака. Повторното поврзување на овие бинарни датотеки со поновите верзии на споделените библиотеки ќе го исправи овој проблем.

И syslogd (8) и klogd (8) можат да се стартуваат од init (8) или да започнат како дел од rc. * Секвенцата. Ако се започне од init опцијата -n мора да се постави, во спротивно ќе добиете тони syslog демони започна. Ова е затоа што init (8) зависи од идентификацијата на процесот.

Безбедносни закани

Постои потенцијал за демонот syslogd да се користи како канал за напад на одбивање на услуга. Ви благодариме на Џон Морисон (jmorriso@rflab.ee.ubc.ca) за ме предупредување на овој потенцијал. Непријателската програма (мерка) многу лесно можеше да го поплави демон syslogd со syslog пораки кои резултираа со датотеки на дневникот кои го трошат целиот преостанат простор во датотечниот систем . Активирањето на најавување преку приклучоците за домен на inet, се разбира, ќе го изложи системот на ризици надвор од програмите или поединците на локалната машина.

Постојат неколку начини за заштита на машина:

  1. Имплементирајте го огнен ѕид на јадрото за да ограничите кои домаќини или мрежи имаат пристап до приклучокот 514 / UDP.
  2. Логирањето може да биде насочено кон изолиран или не-root систем кој, ако е исполнет, нема да ја наруши машината.
  3. Може да се користи ext2-датотечниот систем кој може да се конфигурира за да се ограничи одреден процент од датотечниот систем само за root. ЗАБЕЛЕШКА дека ова ќе бара syslogd да се извршува како не-root процес. Освен тоа, ова ќе го спречи користењето на далечинското најавување бидејќи syslogd нема да може да се поврзе со 514 / UDP приклучокот.
  4. Оневозможувањето на приклучоците за inet домен ќе го ограничи ризикот на локалната машина.
  5. Користете го чекор 4 и ако проблемот продолжи и не е секундарна за непријателската програма / демон, добијте должина од 3,5 метри (приближно 1 метар) од прачката за млеко * и разговарајте со корисникот за кој станува збор. Одвратна прачка --- 3/4, 7/8 или 1н. појачан челичен прачка, машки навој на секој крај. Примарна употреба во нафтената индустрија во Западна Северна Дакота и на други локации за пумпање на "впие" нафта од нафтени извори. Секундарните намени се за изградба на многу сточна храна и за справување со повремени непослушни или воинствени поединци.

Дебагирање

Кога дебагирањето е вклучено користејќи опција -d, тогаш syslogd ќе биде многу глазура со пишување на голем дел од она што го прави на stdout. Секогаш кога конфигурациската датотека се препрочитува и повторно се анализира, ќе видите табеларна, што одговара на внатрешната структура на податоци. Оваа табела се состои од четири полиња:

број

Ова поле содржи сериски број почнувајќи од нула. Овој број ја претставува позицијата во внатрешната структура на податоци (т.е. низата). Ако еден број е изоставен тогаш може да има грешка во соодветната линија во /etc/syslog.conf .

шема

Ова поле е незгодно и точно ја претставува внатрешната структура. Секоја колона се залага за објект (погледнете го syslog (3)). Како што можете да видите, се уште има некои објекти кои се оставени слободни за поранешна употреба, само левата повеќето се користат. Секое поле во колона ги претставува приоритетите (погледнете го syslog (3)).

акција

Ова поле ја опишува конкретната акција што се случува секогаш кога е примена порака која одговара на моделот. Погледнете во syslog.conf (5) manpage за сите можни дејства.

аргументи

Ова поле покажува дополнителни аргументи за акциите во последното поле. За најавување на датотеки ова е името на датотеката за logfile; за корисничко влезете ова е листа на корисници; за далечинско најавување, ова е името на компјутерот за да се логирате; за конзола-влезете ова е употребената конзола; за tty-logging ова е наведено tty; ѕидот нема дополнителни аргументи.

Исто така види

логгер (1), syslog (2), (5)

Соработници

Syslogd е земен од BSD извори, Грег Ветстајн (greg@wind.enjellic.com) го изврши пристаништето за Линукс , Мартин Шулце (joey@linux.de) исправи некои грешки и додаде неколку нови функции. Клогд првично беше напишан од Стив Господ (lord@cray.com), Грег Ветштајн направи големи подобрувања.

Д-р Грег Ветстајн
Енџелски системи за развој

Компјутерски објект за истражување на онкологија
Центар за рак на Роџер Марис
Фарго, НД
greg@wind.enjellic.com

Стивен Твиди
Одделот за компјутерски науки
Единбург Универзитет, Шкотска
sct@dcs.ed.ac.uk

Juha Virtanen
jiivee@hut.fi

Шејн Алдертон
shane@ion.apana.org.au

Мартин Шулце
Индекс Олденбург
joey@linux.de

Важно: Користете ја командата за човекот ( % man ) за да видите како се користи командата на вашиот компјутер.

Поврзани написи