Skip to main content

Syslogd Linux i Unix Command

LINUX Logger command (Czerwiec 2026)

LINUX Logger command (Czerwiec 2026)
Anonim

Sysklogd udostępnia dwa narzędzia systemowe, które zapewniają obsługę rejestrowania systemu i pułapkowania komunikatów jądra. Obsługa gniazd internetowych i unixowych umożliwia temu pakietowi narzędziowemu zarówno logowanie lokalne, jak i zdalne.

Rejestrowanie systemu odbywa się przez wersjęsyslogd(8) pochodzą ze źródłowych źródeł BSD. Obsługa rejestrowania jądra zapewniona jest przezklogd(8) narzędzie, które umożliwia rejestrowanie jądra w trybie autonomicznym lub jako klient syslogd.

Syslogd zapewnia rodzaj rejestrowania, którego używa wiele nowoczesnych programów. Każda zarejestrowana wiadomość zawiera co najmniej pole czasowe i nazwę hosta, zwykle także pole nazwy programu, ale zależy to od tego, na ile wiarygodny jest program logowania.

Podczas, gdysyslogd źródła zostały mocno zmodyfikowane, a kilka notatek jest w porządku. Przede wszystkim podjęto systematyczne próby upewnienia się, że syslogd działa zgodnie z domyślnym, standardowym zachowaniem BSD. Drugą ważną kwestią, na którą należy zwrócić uwagę, jest to, że ta wersja syslogd współdziała w sposób transparentny z wersją syslog znalezioną w standardowych bibliotekach. Jeśli plik binarny powiązany ze standardowymi bibliotekami współdzielonymi nie działa poprawnie, chcielibyśmy podać przykład anormalnego zachowania.

Główny plik konfiguracyjny /etc/syslog.conf lub alternatywny plik, podany przy pomocy-fa opcja, jest odczytywana przy uruchomieniu. Wszelkie linie zaczynające się od znaku skrótu (`` # '') i puste wiersze są ignorowane. Jeśli podczas parsowania wystąpi błąd, cała linia jest ignorowana.

Streszczenie

syslogd -za gniazdo elektryczne -re -fa plik konfiguracyjny -h -l lista hostów -m interwał -n -p gniazdo elektryczne -r -s lista domen -v -x

Opcje

-za gniazdo elektryczne

Za pomocą tego argumentu możesz określić dodatkowe gniazdasyslogd musi słuchać. Jest to konieczne, jeśli zamierzasz uruchomić demona w środowisku chroot (). Możesz użyć maksymalnie 19 dodatkowych gniazd. Jeśli Twoje środowisko potrzebuje jeszcze więcej, musisz zwiększyć symbolMAXFUNIX w pliku źródłowym syslogd.c. Przykład demona chroot () opisują osoby z OpenBSD pod adresem http://www.psionic.com/papers/dns.html.

-re

Włącza tryb debugowania. Dzięki temu demon nie będzie kontynuowałwidelec(2), aby ustawić się w tle, ale w przeciwieństwie do tego pozostanie na pierwszym planie i napisać dużo informacji debugowania na bieżącej tty. Zobacz sekcję DEBUGGING, aby uzyskać więcej informacji.

-fa plik konfiguracyjny

Podaj alternatywny plik konfiguracyjny zamiast /etc/syslog.conf , który jest domyślny.

-h

Domyślnie syslogd nie przekazuje wiadomości otrzymanych od zdalnych hostów. Określenie tego przełącznika w wierszu polecenia spowoduje, że demon dziennika będzie przekazywał wszystkie zdalne komunikaty, które otrzyma, do zdefiniowanych hostów przekazujących.

-l lista hostów

Podaj nazwę hosta, która powinna być logowana tylko za pomocą prostej nazwy hosta, a nie fqdn. Wiele hostów może być określonych przy użyciu separatora dwukropka (``: '').

-m interwał

Thesyslogd regularnie rejestruje znacznik czasu znacznika. Domyślny interwał pomiedzy dwa -- ZNAK -- linie to 20 minut. Można to zmienić za pomocą tej opcji. Ustawianie interwał do zera wyłącza go całkowicie.

-n

Unikaj automatycznego tworzenia tła. Jest to szczególnie potrzebne, jeśli:syslogd jest uruchamiany i kontrolowany przezw tym(8).

-p gniazdo elektryczne

Zamiast tego możesz podać alternatywne gniazdo domeny unix / dev / log .

-r

Ta opcja umożliwi urządzeniu otrzymywanie wiadomości z sieci za pomocą gniazda domeny internetowej z usługą syslog (patrz (5)). Domyślnie nie otrzymujesz żadnych wiadomości z sieci.

Ta opcja została wprowadzona w wersji 1.3 pakietu sysklogd. Zwróć uwagę, że domyślne zachowanie jest przeciwieństwem zachowania starszych wersji, więc być może trzeba to włączyć.

-s lista domen

Podaj nazwę domeny, która powinna zostać usunięta przed zalogowaniem. Wiele domen można określić przy użyciu separatora dwukropka (``: ''). Należy pamiętać, że nie można podać żadnych subdomen, ale tylko całe domeny. Na przykład, jeśli-s north.de jest określona, ​​a rejestracja hosta zostaje rozwiązana na satu.infodrom.north.de żadna domena nie zostanie obcięta, musisz podać dwie domeny, takie jak:-s north.de:infodrom.north.de.

-v

Wydrukuj wersję i zakończ.

-x

Wyłącz wyszukiwanie nazw podczas odbierania komunikatów zdalnych. Pozwala to uniknąć zakleszczeń, gdy serwer nazw działa na tym samym komputerze, na którym działa demon syslog.

Sygnały

Syslogd reaguje na zestaw sygnałów. Możesz łatwo wysłać sygnał dosyslogd używając następujących:

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

Sighup

To pozwalasyslogd przeprowadzić ponowną inicjalizację. Wszystkie otwarte pliki są zamknięte, plik konfiguracyjny (domyślnie jest /etc/syslog.conf ) zostaną ponownie przeczytane isyslog(3) obiekt jest ponownie uruchamiany.

SIGTERM

Thesyslogd umrze.

SIGINT, SIGQUIT

Jeśli debugowanie jest włączone, są one ignorowane, w przeciwnym raziesyslogd umrze.

SIGUSR1

Włącz / wyłącz debugowanie. Ta opcja może być używana tylko wtedy, gdysyslogd zaczyna się od-re opcja debugowania.

SIGCHLD

Poczekaj na dziecko, jeśli niektórzy się urodzili, z powodu wiadomości o ścianach.

Różnice w składni pliku konfiguracji

Syslogd używa nieco innej składni pliku konfiguracyjnego niż oryginalne źródła BSD. Pierwotnie wszystkie wiadomości o określonym priorytecie i wyżej zostały przekazane do pliku dziennika.

Na przykład następujący wiersz spowodował WSZYSTKIE dane wyjściowe z demonów za pomocą obiektów demonów (debugowanie jest najniższym priorytetem, więc każdy wyższy będzie również pasował), aby przejść do / usr / adm / daemons :

# Przykładowy plik syslog.conf daemon.debug / usr / adm / daemons

Zgodnie z nowym schematem zachowanie to pozostaje takie samo. Różnica polega na dodaniu czterech nowych specyfikatorów, gwiazdki (*) wieloznacznik, znak równania (=), wykrzyknik (!) i znak minus (-).

The* określa, że ​​wszystkie wiadomości dla określonego obiektu mają być kierowane do miejsca docelowego. Należy zauważyć, że to zachowanie jest zdegenerowane z określeniem poziomu priorytetu debugowania. Użytkownicy wskazali, że notacja gwiazdkowa jest bardziej intuicyjna.

The= symbol wieloznaczny służy do ograniczenia logowania do określonej klasy priorytetu. Pozwala to, na przykład, kierować tylko komunikaty debugowania do określonego źródła rejestrowania.

Na przykład następujący wiersz w syslog.conf będzie kierował komunikaty debugowania ze wszystkich źródeł do / usr / adm / debug plik.

# Sample syslog.conf *. = Debug / usr / adm / debug

The! służy do wykluczania rejestrowania określonych priorytetów. Wpływa to na wszystkie (!) Możliwości określania priorytetów.

Na przykład poniższe wiersze będą rejestrować wszystkie wiadomości z wiadomości e-mail obiektu, z wyjątkiem tych, które mają priorytet informacji / usr / adm / mail plik. Wszystkie wiadomości od news.info (w tym) do news.crit (z wyłączeniem) będą rejestrowane w pliku / usr / adm / news plik.

# Sample syslog.conf mail. *; Mail.! = Info / usr / adm / mail news.info; nowości.! Crit / usr / adm / news

Możesz używać go intuicyjnie jako specyfikatora wyjątków. Powyższa interpretacja jest po prostu odwrócona. Możesz tego użyć

mail.none

lub

Poczta.!*

lub

mail.! debug

aby pominąć każdą wiadomość, która pochodzi z obiektu pocztowego. Jest dużo miejsca do zabawy. :-)

The- może być użyty tylko do prefiksowania nazwy pliku, jeśli chcesz pominąć synchronizację pliku po każdym zapisie do niego.

Może to wymagać pewnej aklimatyzacji w przypadku osób używających czystego zachowania BSD, ale testerzy wskazali, że ta składnia jest nieco bardziej elastyczna niż zachowanie BSD. Pamiętaj, że te zmiany nie powinny mieć wpływu na standardsyslog.conf(5) pliki. Musisz specjalnie zmodyfikować pliki konfiguracyjne, aby uzyskać ulepszone zachowanie.

Wsparcie dla zdalnego logowania

Modyfikacje te zapewniają obsługę sieci dla obiektu syslogd. Obsługa sieci oznacza, że ​​komunikaty mogą być przekazywane z jednego węzła z uruchomionym syslogd do innego węzła z uruchomionym syslogd, gdzie będą faktycznie zalogowane do pliku na dysku.

Aby to włączyć, musisz określić-r opcja w wierszu poleceń. Domyślne zachowanie tosyslogd nie słucha sieci.

Strategia polega na tym, aby syslogd nasłuchiwał na gnieździe domeny unix dla generowanych lokalnie komunikatów. To zachowanie pozwoli syslogd na współdziałanie z dziennikiem syslog znalezionym w standardowej bibliotece C. W tym samym czasie syslogd nasłuchuje na standardowym porcie syslog dla wiadomości przekazywanych z innych hostów. Aby to działało poprawnieusługi(5) pliki (zazwyczaj znajduje się w /itp ) musi mieć następujący wpis:

syslog 514 / udp

Jeśli ten wpis nie istniejesyslogd nie można odbierać komunikatów zdalnych ani wysyłać ich, ponieważ port UDP nie może zostać otwarty. Zamiast, syslogd umrze natychmiast, wydmuchując komunikat o błędzie.

Aby spowodować przesłanie wiadomości do innego hosta, zastąp normalny wiersz pliku w syslog.conf plik z nazwą hosta, do którego wiadomości mają być wysyłane, poprzedzony znakiem @.

Na przykład, aby przekazać dalejWSZYSTKO wiadomości do zdalnego hosta za pomocą następujących syslog.conf wejście:

# Przykładowy plik konfiguracyjny syslogd do # komunikatów do zdalnego hosta przesyła wszystko. *. * @hostname

Aby przekazać wszystkiejądro komunikaty do zdalnego hosta plik konfiguracyjny byłby następujący:

# Przykładowy plik konfiguracyjny do przekazywania wszystkich komunikatów # jądra do zdalnego hosta. kern. * @hostname

Jeśli zdalnej nazwy hosta nie można rozwiązać przy uruchomieniu, ponieważ serwer nazw może nie być dostępny (może być uruchomiony po syslogd), nie musisz się martwić.Syslogd spróbuje powtórzyć imię dziesięć razy, a następnie narzekać. Inną możliwością uniknięcia tego jest umieszczenie nazwy hosta w / etc / hosts .

Z normalnymsyslogds dostaniesz pętle syslog, jeśli wyślesz wiadomości, które zostały odebrane ze zdalnego hosta do tego samego hosta (lub bardziej skomplikowane do trzeciego hosta, który odsyła go z powrotem do pierwszego, i tak dalej). W mojej domenie (Infodrom Oldenburg) przypadkowo dostaliśmy jeden, a nasze dyski wypełniły się tą samą pojedynczą wiadomością. :-(

Aby tego uniknąć w późniejszym czasie, żadne wiadomości odebrane od zdalnego hosta nie są już wysyłane do innego (lub tego samego) zdalnego hosta. Jeśli są scenariusze, w których to nie ma sensu, proszę daj mi (Joey) wiersz.

Jeśli host zdalny znajduje się w tej samej domenie co host,syslogd jest uruchomiony, tylko prosta nazwa hosta zostanie zarejestrowana zamiast całego pliku fqdn.

W sieci lokalnej możesz dostarczyć centralny serwer dziennika, aby wszystkie ważne informacje były przechowywane na jednym komputerze. Jeśli sieć składa się z różnych domen, nie musisz narzekać na rejestrowanie w pełni kwalifikowanych nazw zamiast prostych nazw hostów. Możesz użyć funkcji strip-domain-s tego serwera. Możesz powiedziećsyslogd aby usunąć kilka domen innych niż ta, w której znajduje się serwer i logować tylko proste nazwy hostów.

Używając-l opcja istnieje również możliwość zdefiniowania pojedynczych hostów jako maszyn lokalnych. To również powoduje, że rejestrowane są tylko ich proste nazwy hostów, a nie fqdns.

Gniazdo UDP używane do przesyłania komunikatów do hostów zdalnych lub odbierania z nich wiadomości jest otwierane tylko wtedy, gdy jest potrzebne. W wersjach wcześniejszych niż 1.3-23 był otwierany za każdym razem, ale nie był otwierany odpowiednio do czytania lub przekazywania.

Wyjście do nazwanych potoków (FIFO)

Ta wersja syslogd obsługuje zapisywanie danych wyjściowych do nazwanych potoków (fifos). Fizycznie lub nazwany potok może być użyty jako miejsce docelowe dla komunikatów dziennika, poprzedzając nazwę pliku pipy ("` | "). Jest to przydatne do debugowania. Zauważ, że fifo musi zostać utworzone za pomocą komendy mkfifo przed uruchomieniem syslogd.

Poniższy plik konfiguracyjny trasuje komunikaty debugowania z jądra do fifo:

# Przykładowa konfiguracja do kierowania debugowania jądra # wiadomości TYLKO do / usr / adm / debug, który jest potokiem o numerze #. kern. = debug | / usr / adm / debug

Problemy z instalacją

Podczas instalowania tej wersji syslogd istnieje prawdopodobnie jedna ważna uwaga. Ta wersja syslogd jest zależna od właściwego formatowania wiadomości przez funkcję syslog. Funkcjonowanie funkcji syslog w dzielonych bibliotekach zmieniło się gdzieś w regionie libc.so.4. 2-4 .n. Konkretną zmianą było zakończenie wiadomości przed jej przesłaniem do / dev / log gniazdo elektryczne. Prawidłowe działanie tej wersji syslogd zależy od zerowego zakończenia komunikatu.

Ten problem zwykle objawia się, jeśli w systemie są używane stare statycznie połączone pliki binarne. Pliki binarne używające starszych wersji funkcji syslog powodują, że puste linie są rejestrowane, a następnie wiadomość z usuniętym pierwszym znakiem w komunikacie. Ponowne połączenie tych plików binarnych z nowszymi wersjami współużytkowanych bibliotek rozwiąże ten problem.

Obojesyslogd(8) iklogd(8) może być uruchamiany z init (8) lub uruchomiony jako część sekwencji rc. *. Jeśli jest uruchomiony z init, opcja -n musi być ustawiony, w przeciwnym razie dostaniesz mnóstwo demonów syslog. To dlatego, żew tym(8) zależy od ID procesu.

Zagrożenia bezpieczeństwa

Istnieje możliwość, że demon syslogd będzie używany jako kanał do ataku typu "odmowa usługi". Podziękowania dla John Morrison ([email protected]) za poinformowanie mnie o tym potencjale. Nieuczciwy program (mer) może bardzo łatwo zalać demona syslogd komunikatami syslog, co spowoduje, że pliki dziennika zużyją całą pozostałą przestrzeń w systemie plików. Aktywacja rejestrowania w gniazdach domeny inet będzie oczywiście narażać system na ryzyko poza programami lub osobami na lokalnej maszynie.

Istnieje wiele metod ochrony maszyny:

  1. Zaimplementuj zaporę jądra, aby ograniczyć dostęp hostów lub sieci do gniazda 514 / UDP.
  2. Rejestrowanie może być skierowane na izolowany lub nie rootowy system plików, który, jeśli zostanie wypełniony, nie wpłynie negatywnie na maszynę.
  3. Można użyć systemu plików ext2, który można skonfigurować tak, aby ograniczał pewien procent systemu plików do użycia tylko przez root.UWAGA to wymaga, aby syslogd działał jako proces inny niż root. RÓWNIEŻ UWAGA to uniemożliwi użycie zdalnego rejestrowania, ponieważ syslogd nie będzie mógł powiązać z gniazdem 514 / UDP.
  4. Wyłączenie gniazd domeny inet ograniczy ryzyko do lokalnego komputera.
  5. Użyj kroku 4 i jeśli problem nadal występuje i nie jest drugorzędny wobec nieuczciwego programu / demona, uzyskaj 3,5 stopy (około 1 metra) długości sucker * i rozmawiaj z użytkownikiem, o którym mowa. Sucker rod def. --- 3/4, 7/8 lub 1in. hartowany pręt stalowy, z gwintem zewnętrznym na każdym końcu. Podstawowe zastosowanie w przemyśle naftowym w zachodniej Dakocie Północnej i innych miejscach do pompowania "ssania" ropy naftowej z szybów naftowych. Wtórne zastosowania służą do konstruowania partii paszy dla bydła i do radzenia sobie z okazjonalną oporną lub wojującą osobą.

Debugowanie

Gdy debugowanie jest włączone przy użyciu-re opcja następniesyslogd będzie bardzo gadatliwy, pisząc wiele z tego, co robi na stdout. Po każdym ponownym odczytaniu pliku konfiguracyjnego zobaczysz tabelę odpowiadającą wewnętrznej strukturze danych. Ta tabela składa się z czterech pól:

numer

To pole zawiera numer seryjny rozpoczynający się od zera. Liczba ta reprezentuje pozycję w wewnętrznej strukturze danych (to znaczy w macierzy). Jeśli jedna liczba zostanie pominięta, może wystąpić błąd w odpowiednim wierszu /etc/syslog.conf .

wzór

To pole jest trudne i dokładnie reprezentuje wewnętrzną strukturę. Każda kolumna oznacza obiekt (patrzsyslog(3)). Jak widać, niektóre urządzenia są nadal wolne do użytku, a tylko lewe są używane. Każde pole w kolumnie reprezentuje priorytety (patrzsyslog(3)).

akcja

To pole opisuje konkretną akcję, która ma miejsce, gdy odbierany jest komunikat zgodny z wzorcem. Patrz:syslog.conf(5) strona podręcznika dla wszystkich możliwych działań.

argumenty

To pole pokazuje dodatkowe argumenty dla działań w ostatnim polu. Dla rejestrowania plików jest to nazwa pliku logu; dla logowania użytkowników jest to lista użytkowników; dla zdalnego logowania jest to nazwa hosta komputera do zalogowania; dla logowania konsoli jest używana konsola; dla rejestrowania tty jest to określone tty; ściana nie ma dodatkowych argumentów.

Zobacz też

rejestrator(1), syslog(2), (5)

Współpracownicy

Syslogd pochodzi ze źródeł BSD, Greg Wettstein ([email protected]) wykonał port dla Linuxa, Martin Schulze ([email protected]) naprawił kilka błędów i dodał kilka nowych funkcji.Klogdzostał pierwotnie napisany przez Steve'a Lorda ([email protected]), Greg Wettstein dokonał znacznych ulepszeń.

Dr Greg WettsteinRozwój systemów Enjellic

Dział Obliczeniowy Zakładu Badań OnkologiiCentrum Cancer Roger MarisFargo, ND[email protected]

Stephen TweedieKatedra InformatykiEdinburgh University, Szkocja[email protected]

Juha Virtanen[email protected]

Shane Alderton[email protected]

Martin SchulzeInfodrom Oldenburg[email protected]

Ważny: Użyj mężczyzna dowództwo ( % mężczyzna ), aby zobaczyć, jak polecenie jest używane na danym komputerze.

Powiązane artykuły

  • sysklogd - Linux Command - Command Unix
  • rwall - Co to jest rwa