Skip to main content

Comando Syslogd Linux e Unix

LINUX Logger command (Pode 2025)

LINUX Logger command (Pode 2025)
Anonim

O Sysklogd fornece dois utilitários de sistema que fornecem suporte para o log do sistema e para o trapping de mensagens do kernel. O suporte a soquetes de domínio unix e da Internet permite que esse pacote de utilitário ofereça suporte ao log local e remoto.

O log do sistema é fornecido por uma versão dosyslogd(8) derivado das fontes BSD de estoque. O suporte para o log do kernel é fornecido peloklogd(8) utilitário que permite que o log do kernel seja conduzido de maneira independente ou como um cliente do syslogd.

O Syslogd fornece um tipo de log que muitos programas modernos usam. Cada mensagem registrada contém pelo menos uma hora e um campo de nome de host, normalmente também um campo de nome de programa, mas isso depende de quão confiável é o programa de registro.

Enquanto osyslogd fontes foram fortemente modificadas algumas notas estão em ordem. Primeiro de tudo, tem havido uma tentativa sistemática de garantir que o syslogd siga seu comportamento padrão e padrão do BSD. O segundo conceito importante a ser observado é que essa versão do syslogd interage de maneira transparente com a versão do syslog encontrada nas bibliotecas padrão. Se um binário ligado às bibliotecas compartilhadas padrão não funcionar corretamente, gostaríamos de um exemplo do comportamento anômalo.

O arquivo de configuração principal /etc/syslog.conf ou um arquivo alternativo, fornecido com o-f opção, é lido na inicialização. Todas as linhas que começam com a marca (`` # '') e as linhas vazias são ignoradas. Se ocorrer um erro durante a análise, toda a linha será ignorada.

Sinopse

syslogd -uma soquete -d -f arquivo de configuração -h -eu hostlist -m intervalo -n -p soquete -r -s lista de domínio -v -x

Opções

-uma soquete

Usando este argumento, você pode especificar soquetes adicionais a partir dessesyslogd tem que ouvir. Isso é necessário se você permitir que algum daemon rode dentro de um ambiente chroot (). Você pode usar até 19 soquetes adicionais. Se o seu ambiente precisa ainda mais, você tem que aumentar o símboloMAXFUNIX dentro do arquivo de origem syslogd.c. Um exemplo para um daemon chroot () é descrito pelas pessoas do OpenBSD em http://www.psionic.com/papers/dns.html.

-d

Ativa o modo de depuração. Usando isto, o daemon não irá prosseguirgarfo(2) para definir-se em segundo plano, mas oposto a essa permanência em primeiro plano e escrever muita informação de depuração sobre o atual tty. Veja a seção de DEPURAÇÃO para mais informações.

-f arquivo de configuração

Especifique um arquivo de configuração alternativo em vez de /etc/syslog.conf , que é o padrão.

-h

Por padrão, o syslogd não encaminhará mensagens recebidas de hosts remotos. Especificar essa opção na linha de comando fará com que o daemon de log encaminhe todas as mensagens remotas recebidas para os hosts de encaminhamento que foram definidos.

-eu hostlist

Especifique um nome de host que deve ser registrado apenas com seu nome de host simples e não com o fqdn. Vários hosts podem ser especificados usando o separador de dois pontos (``: '').

-m intervalo

osyslogd registra um timestamp de marca regularmente. O padrão intervalo Entre dois - MARK - linhas é de 20 minutos. Isso pode ser alterado com essa opção. Configurando o intervalo para zero desliga completamente.

-n

Evite o fundo automático. Isto é necessário especialmente se osyslogd é iniciado e controlado pornisso(8).

-p soquete

Você pode especificar um soquete de domínio unix alternativo em vez de / dev / log .

-r

Esta opção permitirá que o recurso receba uma mensagem da rede usando um soquete de domínio da Internet com o serviço syslog (consulte (5)). O padrão é não receber mensagens da rede.

Esta opção é introduzida na versão 1.3 do pacote sysklogd. Por favor, note que o comportamento padrão é o oposto de como as versões mais antigas se comportam, então você pode ter que ativar isso.

-s lista de domínio

Especifique um nome de domínio que deve ser removido antes do registro. Vários domínios podem ser especificados usando o separador de dois pontos (``: ''). Informamos que nenhum subdomínio pode ser especificado, mas apenas domínios inteiros. Por exemplo, se-s north.de é especificado e o registro do host resolve para satu.infodrom.north.de que nenhum domínio seria cortado, você terá que especificar dois domínios como:-s north.de:infodrom.north.de.

-v

Imprima a versão e saia.

-x

Desativar pesquisas de nome ao receber mensagens remotas. Isso evita deadlocks quando o servidor de nomes está sendo executado na mesma máquina que executa o daemon syslog.

Sinais

Syslogd reage a um conjunto de sinais. Você pode facilmente enviar um sinal parasyslogd usando o seguinte:

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

Sighup

Isso permitesyslogd realizar uma reinicialização. Todos os arquivos abertos estão fechados, o arquivo de configuração (o padrão é /etc/syslog.conf ) será reler e osyslog(3) a instalação é iniciada novamente.

SIGTERM

osyslogd irá morrer.

SIGINT, SIGQUIT

Se a depuração estiver habilitada, estas serão ignoradas, caso contráriosyslogd irá morrer.

SIGUSR1

Ativar / desativar a depuração. Esta opção só pode ser usada sesyslogd é iniciado com o-d opção de depuração.

SIGCHLD

Espere por childs se alguns nasceram, por causa de mensagens de parede.

Diferenças de sintaxe do arquivo de configuração

Syslogd usa uma sintaxe ligeiramente diferente para seu arquivo de configuração que as fontes originais do BSD. Originalmente todas as mensagens de uma prioridade específica e acima foram encaminhadas para o arquivo de log.

Por exemplo, a linha a seguir causou TODAS as saídas dos daemons usando os recursos do daemon (depuração é a prioridade mais baixa, portanto, todas as mais altas também corresponderão) para entrar em / usr / adm / daemons :

# Amostra syslog.conf daemon.debug / usr / adm / daemons

Sob o novo esquema, esse comportamento permanece o mesmo. A diferença é a adição de quatro novos especificadores, o asterisco (*) curinga, o sinal da equação (=), o ponto de exclamação (!) e o sinal de menos (-).

o* especifica que todas as mensagens para o recurso especificado devem ser direcionadas para o destino. Observe que esse comportamento é degenerado com a especificação de um nível de prioridade de depuração. Os usuários indicaram que a notação de asterisco é mais intuitiva.

o= O caractere curinga é usado para restringir o registro em log à classe de prioridade especificada. Isso permite, por exemplo, rotear somente mensagens de depuração para uma fonte de log específica.

Por exemplo, a seguinte linha em syslog.conf iria direcionar mensagens de depuração de todas as fontes para o / usr / adm / debug Arquivo.

# Sample syslog.conf *. = Depuração / usr / adm / debug

o! é usado para excluir o log das prioridades especificadas. Isso afeta todas as possibilidades (!) De especificar prioridades.

Por exemplo, as linhas a seguir registrariam todas as mensagens do correio do recurso, exceto aquelas com as informações de prioridade para o / usr / adm / mail Arquivo. E todas as mensagens de news.info (inclusive) para news.crit (excluindo) seriam registradas no / usr / adm / news Arquivo.

# Amostra syslog.conf mail. *; Mail.! = Info / usr / adm / mail news.info; noticias.! Crit / usr / adm / news

Você pode usá-lo intuitivamente como um especificador de exceção. A interpretação acima mencionada é simplesmente invertida. Fazendo isso você pode usar

mail.none

ou

enviar.!*

ou

mail.! debug

para pular todas as mensagens que vêm com um recurso de e-mail. Há muito espaço para brincar. :-)

o- só pode ser usado para prefixar um nome de arquivo se você quiser omitir a sincronização do arquivo após cada gravação.

Isso pode levar alguma aclimatação para aqueles indivíduos acostumados com o comportamento puro do BSD, mas os testadores indicaram que esta sintaxe é um pouco mais flexível do que o comportamento do BSD. Observe que essas alterações não devem afetar o padrãosyslog.conf(5) arquivos. Você deve modificar especificamente os arquivos de configuração para obter o comportamento aprimorado.

Suporte para log remoto

Essas modificações fornecem suporte de rede para o recurso syslogd. O suporte de rede significa que as mensagens podem ser encaminhadas de um nó que está executando o syslogd para outro nó que esteja executando o syslogd, onde elas serão realmente registradas em um arquivo de disco.

Para habilitar isso você tem que especificar o-r opção na linha de comando. O comportamento padrão é quesyslogd não vai ouvir a rede.

A estratégia é ter o syslogd escutando em um soquete de domínio unix para mensagens de log geradas localmente. Esse comportamento permitirá que o syslogd interaja com o syslog encontrado na biblioteca C padrão. Ao mesmo tempo, o syslogd escuta na porta padrão do syslog por mensagens encaminhadas de outros hosts. Para que este trabalho funcione corretamenteServiços(5) arquivos (normalmente encontrados em / etc ) deve ter a seguinte entrada:

syslog 514 / udp

Se esta entrada estiver faltandosyslogd nem pode receber mensagens remotas nem enviá-las, porque a porta UDP não pode ser aberta. Em vez de, syslogd morrerá imediatamente, apagando uma mensagem de erro.

Para fazer com que as mensagens sejam encaminhadas para outro host, substitua a linha de arquivo normal syslog.conf arquivo com o nome do host para o qual as mensagens devem ser enviadas prefixadas com um @.

Por exemplo, para encaminharTODOS mensagens para um host remoto usando o seguinte syslog.conf entrada:

# Amostra do arquivo de configuração syslogd para # mensagens para um host remoto, encaminha todas. *.* @nome de anfitrião

Para encaminhar todosnúcleo mensagens para um host remoto, o arquivo de configuração seria o seguinte:

# Arquivo de configuração de amostra para encaminhar todas as mensagens do kernel # para um host remoto. kern. * @ nome do host

Se o nome do host remoto não puder ser resolvido na inicialização, porque o servidor de nomes pode não estar acessível (pode ser iniciado após o syslogd) você não precisa se preocupar.Syslogd tentará resolver o nome dez vezes e depois reclamar. Outra possibilidade para evitar isso é colocar o hostname em / etc / hosts .

Com normalsyslogds você obteria loops de syslog se enviasse mensagens que foram recebidas de um host remoto para o mesmo host (ou mais complicado para um terceiro host que as envia de volta para o primeiro host, e assim por diante). No meu domínio (Infodrom Oldenburg) nós acidentalmente recebemos um e nossos discos foram preenchidos com a mesma mensagem. :-(

Para evitar isso mais vezes, nenhuma mensagem recebida de um host remoto é enviada para outro (ou o mesmo) host remoto mais. Se há cenários em que isso não faz sentido, por favor, mande-me uma linha (Joey).

Se o host remoto estiver localizado no mesmo domínio que o host,syslogd está em execução, apenas o nome do host simples será registrado em vez de todo o fqdn.

Em uma rede local, você pode fornecer um servidor de registro central para que todas as informações importantes sejam mantidas em uma máquina. Se a rede consistir em domínios diferentes, você não precisará reclamar do registro de nomes completos em vez de simples nomes de host. Você pode querer usar o recurso de domínio de faixa-s deste servidor. Você pode dizer aosyslogd despir vários domínios diferentes daquele em que o servidor está localizado e apenas registrar nomes de host simples.

Usando o-eu opção também existe a possibilidade de definir hosts únicos como máquinas locais. Isso também resulta em registrar apenas seus nomes de host simples e não os fqdns.

O soquete UDP usado para encaminhar mensagens para hosts remotos ou receber mensagens deles é aberto apenas quando necessário. Em lançamentos anteriores a 1.3-23, ele era aberto toda vez, mas não aberto para leitura ou encaminhamento, respectivamente.

Saída para pipes nomeados (FIFOs)

Esta versão do syslogd tem suporte para log de saída para pipes nomeados (fifos). Um fifo ou pipe nomeado pode ser usado como um destino para mensagens de log, prefixando um símbolo pipy (`` | '') no nome do arquivo. Isso é útil para depuração. Note que o fifo deve ser criado com o comando mkfifo antes que o syslogd seja iniciado.

O seguinte arquivo de configuração roteia mensagens de depuração do kernel para um fifo:

# Configuração de amostra para rotear as mensagens # de depuração do kernel SOMENTE para / usr / adm / debug que é um # pipe nomeado. kern. = debug | / usr / adm / debug

Preocupações de instalação

Há provavelmente uma consideração importante ao instalar esta versão do syslogd. Esta versão do syslogd depende da formatação adequada das mensagens pela função syslog. O funcionamento da função syslog nas bibliotecas compartilhadas mudou em algum lugar na região de libc.so.4. 2-4 .n. A mudança específica foi para terminar em nulo a mensagem antes de transmiti-la ao / dev / log soquete. O funcionamento adequado desta versão do syslogd depende da terminação nula da mensagem.

Esse problema normalmente se manifestará se antigos binários vinculados estaticamente estiverem sendo usados ​​no sistema. Binários usando versões antigas da função syslog farão com que linhas vazias sejam registradas, seguidas pela mensagem com o primeiro caractere na mensagem removida. Vincular esses binários a versões mais recentes das bibliotecas compartilhadas corrigirá esse problema.

Tanto osyslogd(8) eklogd(8) pode ser executado a partir do init (8) ou iniciado como parte da sequência rc. *. Se for iniciado a partir do init, a opção -n deve ser definido, caso contrário, você terá toneladas de daemons syslog iniciados. Isto é porquenisso(8) depende do ID do processo.

Ameaças à segurança

Existe a possibilidade de o daemon syslogd ser usado como um canal para um ataque de negação de serviço. Obrigado a John Morrison ([email protected]) por me alertar sobre esse potencial. Um programa fraudulento (mer) poderia facilmente inundar o daemon syslogd com mensagens syslog, resultando em arquivos de log consumindo todo o espaço restante no sistema de arquivos. Ativar o registro em log dos sockets de domínio inet naturalmente exporá um sistema a riscos fora de programas ou indivíduos na máquina local.

Existem vários métodos para proteger uma máquina:

  1. Implemente o firewall do kernel para limitar quais hosts ou redes têm acesso ao soquete 514 / UDP.
  2. O registro em log pode ser direcionado para um sistema de arquivos isolado ou não-raiz que, se preenchido, não prejudicará a máquina.
  3. O sistema de arquivos ext2 pode ser usado, o qual pode ser configurado para limitar uma determinada porcentagem de um sistema de arquivos ao uso apenas pela raiz.NOTA que isso exigirá que o syslogd seja executado como um processo não-raiz. TAMBÉM NOTE que isso impedirá o uso do log remoto, já que o syslogd não será capaz de se ligar ao soquete 514 / UDP.
  4. A desativação dos soquetes de domínio inet limitará o risco à máquina local.
  5. Use o passo 4 e se o problema persistir e não for secundário a um programa / daemon mal-intencionado, pegue um bastão de otário de 3,5 pés (aprox. 1 metro) * e converse com o usuário em questão. Otário rod def. --- 3/4, 7/8 ou 1 pol. haste de aço temperado, macho rosqueado em cada extremidade. Uso primário na indústria petrolífera no oeste de Dakota do Norte e outros locais para bombear 'sugar' petróleo dos poços de petróleo. Usos secundários são para a construção de lotes de gado e para lidar com o ocasional indivíduo recalcitrante ou beligerante.

Depuração

Quando a depuração está ativada usando-d opção entãosyslogd será muito detalhado escrevendo muito do que faz no stdout. Sempre que o arquivo de configuração for relido e re-analisado, você verá uma tabela, correspondente à estrutura de dados interna. Esta tabular consiste em quatro campos:

número

Este campo contém um número de série começando por zero. Este número representa a posição na estrutura de dados interna (isto é, a matriz). Se um número for omitido, pode haver um erro na linha correspondente em /etc/syslog.conf .

padronizar

Este campo é complicado e representa exatamente a estrutura interna. Cada coluna representa uma instalação (consultesyslog(3)). Como você pode ver, ainda existem algumas instalações que são deixadas livres para uso anterior, apenas as mais à esquerda são usadas. Cada campo em uma coluna representa as prioridades (consultesyslog(3)).

açao

Este campo descreve a ação específica que ocorre sempre que uma mensagem é recebida e corresponde ao padrão. Consulte osyslog.conf(5) manpage para todas as ações possíveis.

argumentos

Este campo mostra argumentos adicionais para as ações no último campo. Para o log de arquivos, este é o nome do arquivo de log; para o registro do usuário, esta é uma lista de usuários; para o registro remoto, este é o nome do host da máquina para o qual efetuar login; para console-log este é o console usado; para tty-logging este é o tty especificado; parede não tem argumentos adicionais.

Veja também

logger(1), syslog(2), (5)

Colaboradores

Syslogd é tirado de fontes BSD, Greg Wettstein ([email protected]) executou a porta para o Linux, Martin Schulze ([email protected]) corrigiu alguns bugs e adicionou vários novos recursos.Klogdfoi originalmente escrito por Steve Lord ([email protected]), Greg Wettstein fez grandes melhorias.

Dr. Greg WettsteinDesenvolvimento de Sistemas Enjélicos

Unidade de Computação da Divisão de Pesquisa em OncologiaRoger Maris Cancer CenterFargo, ND[email protected]

Stephen TweedieDepartamento de Ciência da ComputaçãoUniversidade de Edimburgo, Escócia[email protected]

Juha Virtanen[email protected]

Shane Alderton[email protected]

Martin SchulzeInfodrom Oldenburg[email protected]

Importante: Use o homem comando ( % homem ) para ver como um comando é usado em seu computador particular.

Artigos relacionados

  • sysklogd - Comando Linux - Comando Unix
  • rwall - O que é rwa