29e932008d
This patch adds support for disabling kernel logging, opensys(). This is in addition to the character device validation check, and primarily for use in container use-cases -- where logging kernel is not needed. Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
580 lines
15 KiB
Groff
580 lines
15 KiB
Groff
.\" -*- nroff -*-
|
|
.\" Copyright (c) 1983, 1986, 1991, 1993
|
|
.\" The Regents of the University of California.
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. Neither the name of the University nor the names of its contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" @(#)syslogd.8 8.1 (Berkeley) 6/6/93
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd May 5, 2021
|
|
.Dt SYSLOGD 8
|
|
.Os sysklogd
|
|
.Sh NAME
|
|
.Nm syslogd
|
|
.Nd log systems messages
|
|
.Sh SYNOPSIS
|
|
.Nm
|
|
.Op Fl ?46AdFHKknsTtv
|
|
.Op Fl a Ar addr[/len][:port]
|
|
.Op Fl a Ar name[:port]
|
|
.Op Fl b Ar addr[:port]
|
|
.Op Fl b Ar :port
|
|
.Op Fl C Ar file
|
|
.Op Fl f Ar file
|
|
.Op Fl m Ar interval
|
|
.Op Fl P Ar file
|
|
.Op Fl p Ar sock
|
|
.Op Fl r Ar size[:count]
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm
|
|
utility reads and logs messages to the system console, log files, other
|
|
machines and/or users as specified by its configuration file.
|
|
.Pp
|
|
.Nm
|
|
support RFC3164 and RFC5424 style log messages for both local and remote
|
|
logging using Internet and UNIX domain sockets. Differences in style is
|
|
shown below.
|
|
.Pp
|
|
.Bl -tag -compact -width "RFC3164:"
|
|
.It Sy RFC3164:
|
|
.Li Aug 24 05:14:15 192.0.2.1 myproc[8710]: Kilroy was here.
|
|
.It Sy RFC5424:
|
|
.Li 2003-08-24T05:14:15.000003-07:00 192.0.2.1 myproc 8710 - - Kilroy was here.
|
|
.El
|
|
.Pp
|
|
Note, for remote logging the messages are prefixed with
|
|
.Ql <PRI>
|
|
or
|
|
.Ql <PRI>1 ,
|
|
respectively.
|
|
.Pp
|
|
.Nm
|
|
is derived from BSD sources, today
|
|
.Fx
|
|
is the reference for
|
|
.Nm
|
|
and
|
|
.Nx
|
|
for the new
|
|
.Xr syslogp 3
|
|
API, which fully supports the new features of RFC5424. Please note; 1)
|
|
the intention is to follow standard BSD
|
|
.Nm
|
|
behavior, 2) despite having a stand-alone
|
|
.Xr syslog 3 ,
|
|
and
|
|
.Xr syslogp 3
|
|
API in libsyslog,
|
|
.Nm
|
|
interacts transparently with the standard C library
|
|
.Xr syslog 3
|
|
API, as implemented in GLIBC, musl libc, and uClibc.
|
|
.Pp
|
|
When
|
|
.Nm
|
|
starts up it reads its main configuration file
|
|
.Pa /etc/syslog.conf ,
|
|
or an alternate file given with the
|
|
.Fl f Ar file
|
|
option. For details on how to configure syslog priority
|
|
(facility.severity) filtering, see
|
|
.Xr syslog.conf 5 .
|
|
.Sh OPTIONS
|
|
By default,
|
|
.Nm
|
|
reads messages from the
|
|
.Ux
|
|
domain socket
|
|
.Pa /dev/log ,
|
|
from an Internet domain socket specified in
|
|
.Pa /etc/services ,
|
|
and from
|
|
.Pa /dev/kmsg
|
|
.Pq to read kernel messages .
|
|
The command line options defined below can be used to change this
|
|
behavior.
|
|
.Pp
|
|
The options are as follows:
|
|
.Bl -tag -width indent
|
|
.It Fl 4
|
|
Force
|
|
.Nm
|
|
to use IPv4 addresses only.
|
|
.It Fl 6
|
|
Force
|
|
.Nm
|
|
to use IPv6 addresses only.
|
|
.It Fl A
|
|
Ordinarily,
|
|
.Nm
|
|
tries to send the message to only one address
|
|
even if the host has more than one A or AAAA record.
|
|
If this option is specified,
|
|
.Nm
|
|
tries to send the message to all addresses.
|
|
.It Fl a Ar address[/len][:service] | Fl a Ar domainname[:service]
|
|
Allow peers to log to this syslogd using UDP datagrams. Multiple
|
|
.Fl a
|
|
options may be specified. Any
|
|
.Fl a
|
|
option is ignored if the
|
|
.Fl s
|
|
option is also specified.
|
|
.Pp
|
|
The peer argument may be any of the following:
|
|
.Bl -tag -width 'address[/len][:service]'
|
|
.It Ql address[/len][:service]
|
|
Accept datagrams from IP
|
|
.Ar address ,
|
|
which can be specified as an IPv4 address or as an IPv6 address enclosed
|
|
with
|
|
.Sq \&[
|
|
and
|
|
.Sq \&] .
|
|
If specified, service is the name or port number of an UDP service (see
|
|
.Xr services 5 )
|
|
the source packet must belong to. A service of
|
|
.Ql *
|
|
accepts UDP packets from any source port. The default service is
|
|
.Ql syslog .
|
|
If
|
|
.Ar address
|
|
is an IPv4 address, a missing prefix
|
|
.Ar len
|
|
will be substituted by the historic class A or class B netmasks if
|
|
.Ar address
|
|
belongs in the address range of class A or B, respectively, or by'
|
|
.Ar /24
|
|
otherwise. If
|
|
.Ar address
|
|
is an IPv6 address, a missing prefix
|
|
.Ar len
|
|
will be substituted by 128.
|
|
.It Ql domainname[:service]
|
|
Accept datagrams where the reverse address lookup yields
|
|
.Ar domainname
|
|
for the sender address. The meaning of
|
|
.Ar service
|
|
is as explained above.
|
|
.Ar domainname
|
|
can contain special characters of a shell-style pattern such as
|
|
.Ql * .
|
|
.El
|
|
.It Xo
|
|
.Fl b
|
|
.Sm off
|
|
.Ar address Op \&: Ar service
|
|
.Sm on
|
|
.Xc
|
|
.It Xo
|
|
.Fl b
|
|
.Sm off
|
|
.Li \&: Ar service
|
|
.Sm on
|
|
.Xc
|
|
Bind to a specific address and/or port.
|
|
The address can be specified as a hostname,
|
|
and the port as a service name.
|
|
If an IPv6 address is specified, it should be enclosed with
|
|
.Ql \&[
|
|
and
|
|
.Ql \&] .
|
|
The default
|
|
.Ar service
|
|
is
|
|
.Ql syslog .
|
|
This option can be specified multiple times to bind to
|
|
multiple addresses and/or ports.
|
|
.It Fl C Ar file
|
|
File to use for caching last read kernel sequence number from
|
|
.Pa /dev/kmsg ,
|
|
default:
|
|
.Pa /run/syslogd.cache .
|
|
If
|
|
.Nm
|
|
cannot write to, or read from, this file it will cause repeated kernel
|
|
log messages when restarting
|
|
.Nm .
|
|
.Pp
|
|
.Sy Note:
|
|
.Nm
|
|
relies on this file being removed at system reboot. The default
|
|
location depends on the system and how
|
|
.Nm
|
|
was configured.
|
|
.It Fl d
|
|
Put
|
|
.Nm
|
|
into debugging mode.
|
|
This is probably only of use to developers working on
|
|
.Nm .
|
|
See the
|
|
.Sx DEBUGGING
|
|
section for more information.
|
|
.It Fl f Ar file
|
|
Specify the path name of an alternate configuration file;
|
|
the default is
|
|
.Pa /etc/syslog.conf .
|
|
.It Fl F
|
|
Run
|
|
.Nm
|
|
in the foreground,
|
|
rather than going into daemon mode.
|
|
This is useful if some other process uses
|
|
.Xr fork 2
|
|
and
|
|
.Xr exec 3
|
|
to run
|
|
.Nm ,
|
|
and wants to monitor when and how it exits.
|
|
.It Fl H
|
|
When logging remote messages use hostname from the message (if supplied)
|
|
instead of using address from which the message was received.
|
|
.It Fl K
|
|
Disable kernel logging. Useful in container use-cases where kernel logs
|
|
har handled by the host system.
|
|
.It Fl k
|
|
Disable the translation of
|
|
messages received with facility
|
|
.Dq kern
|
|
to facility
|
|
.Dq user .
|
|
Usually the
|
|
.Dq kern
|
|
facility is reserved for messages read directly from
|
|
.Pa /dev/kmsg .
|
|
.It Fl m Ar interval
|
|
Select the number of minutes between
|
|
.Dq mark
|
|
messages; the default is 20 minutes. Setting this to zero disables log
|
|
marks.
|
|
.It Fl n
|
|
Disable DNS query for every request.
|
|
.It Fl p Ar socket
|
|
Specify the path name of an alternate log socket to be used instead;
|
|
the default is
|
|
.Pa /dev/log .
|
|
When a single
|
|
.Fl p
|
|
option is specified, the default path name is replaced with the
|
|
specified one. When two or more
|
|
.Fl p
|
|
options are specified, the remaining path names are treated as
|
|
additional log sockets.
|
|
.It Fl P Ar file
|
|
Specify an alternative file in which to store the process ID.
|
|
The default is
|
|
.Pa /var/run/syslogd.pid .
|
|
.It Fl r Ar size[:count]
|
|
Enable built-in support for log rotation of files listed in
|
|
.Pa /etc/syslog.conf .
|
|
This feature is particularly useful for small and embedded systems that
|
|
do not want the overhead of
|
|
.Xr cron 8
|
|
and
|
|
.Xr logrotate 8 .
|
|
.Pp
|
|
The option controls the max size and number of backup files kept by the
|
|
built-in log-rotation. When present on the command line it activates
|
|
log rotation of all files with the given maximum size. It is also
|
|
possible to control log rotate per log file, see
|
|
.Xr syslog.conf 5
|
|
for details.
|
|
.Pp
|
|
The size argument takes optional modifiers; k, M, G. E.g., 100M is
|
|
100 MiB, 42k is 42 kiB, etc.
|
|
.Pp
|
|
The optional number of files kept include both gzipped files and the
|
|
first rotated (not zipped) file. The default for this, when omitted,
|
|
is 5.
|
|
.It Fl s
|
|
Operate in secure mode. Do not log messages from remote machines. If
|
|
specified twice, no network socket will be opened at all, which also
|
|
disables logging to remote machines.
|
|
.It Fl T
|
|
Always use the local time and date for messages received from the network,
|
|
instead of the timestamp field supplied in the message by the remote host.
|
|
This is useful if some of the originating hosts cannot keep time properly
|
|
or are unable to generate a correct timestamp.
|
|
.It Fl t
|
|
Keep (trust) kernel timestamp.
|
|
.Pp
|
|
On Linux systems the
|
|
.Pa /dev/kmsg
|
|
timestamp is a monotonic clock, in microseconds, relative to the boot of
|
|
the system. This timestamp is, among other things,
|
|
.Sy not
|
|
adjusted for suspend/resume cycles, meaning the kernel logs can start to
|
|
go out of sync with the rest of the system. This in turn can make it
|
|
really hard to correlate events.
|
|
.Pp
|
|
.Nm
|
|
by default only trusts the kernel timestamp when starting up the first
|
|
time. As soon as the the kernel ring buffer has been emptied,
|
|
.Nm
|
|
uses its own current time for each received kernel log message. This
|
|
option disables that behavior.
|
|
.It Fl v
|
|
Show program version and exit.
|
|
.El
|
|
.Pp
|
|
The
|
|
.Nm
|
|
utility reads its configuration file when it starts up and whenever it
|
|
receives a hangup signal.
|
|
For information on the format of the configuration file,
|
|
see
|
|
.Xr syslog.conf 5 .
|
|
.Pp
|
|
The
|
|
.Nm
|
|
utility creates its process ID file,
|
|
by default
|
|
.Pa /var/run/syslogd.pid ,
|
|
and stores its process ID there. This can be used to kill or
|
|
reconfigure
|
|
.Nm .
|
|
.Pp
|
|
The message sent to
|
|
.Nm
|
|
should consist of a single line. The message can contain a priority
|
|
code, which should be a preceding decimal number in angle braces, for
|
|
example,
|
|
.Sq Aq 5 .
|
|
This priority code should map into the priorities defined in the
|
|
include file
|
|
.In sys/syslog.h .
|
|
To log with RFC5424 style messages the priority code must be directly
|
|
followed by the version number, this is all handled by libsyslog, which
|
|
is the
|
|
.Nx
|
|
.Xr syslogp 3
|
|
API included with the
|
|
.Nm sysklogd
|
|
project.
|
|
.Pp
|
|
The date and time are taken from the received message. If the format of
|
|
the timestamp field is incorrect, time obtained from the local host is
|
|
used instead. This can be overridden by the
|
|
.Fl T
|
|
flag.
|
|
.Sh SECURITY
|
|
There are a number of methods of protecting a machine:
|
|
.Bl -enum
|
|
.It
|
|
Disabling inet domain sockets will limit risk to the local machine. Use
|
|
the secure mode flag
|
|
.Fl s
|
|
for this.
|
|
.It
|
|
When secure mode cannot be used, only allow certain remote peers using
|
|
the
|
|
.Fl a Ar PEER
|
|
flag.
|
|
.It
|
|
Implement kernel firewalling to limit which hosts or networks have
|
|
access to the 514/UDP socket.
|
|
.It
|
|
Logging can be directed to an isolated or non-root filesystem which,
|
|
if filled, will not impair the machine.
|
|
.It
|
|
Most modern UNIX filesystems can be configured to limit a certain
|
|
percentage of a filesystem to usage by root only.
|
|
.El
|
|
.Sh DEBUGGING
|
|
When debug mode
|
|
.Fl ( d )
|
|
is enabled
|
|
.Nm
|
|
only the first
|
|
.Fn init
|
|
is shown.
|
|
.Nm
|
|
then prompts you to send
|
|
.Ar SIGUSR1
|
|
to continue debugging. The output is very verbose and is probably only
|
|
useful to developers.
|
|
.Pp
|
|
When
|
|
.Nm
|
|
receives
|
|
.Ar SIGHUP
|
|
it reloads its configuration file, and at the end of the
|
|
.Fn init
|
|
sequence all log targets are listed with their respective priority per
|
|
facility, the action and the log format used:
|
|
.Pp
|
|
.Bl -tag -width priority
|
|
.It priority
|
|
Bit mapped priorities listed per facility, one priority per facility,
|
|
starting with kernel as the left-most column.
|
|
.It action
|
|
FILE, remote sink (FORW), WALL, etc. See
|
|
.Xr syslog.conf 5
|
|
for details.
|
|
.It args
|
|
The action argument and the log format used. E.g., for FILE actions the
|
|
log filename, for FORW action the remote host:port. The format is one
|
|
of; BSD, RFC5424, or RFC3164. The latter is the default except for FORW
|
|
actions.
|
|
.El
|
|
.Sh SIGNALS
|
|
.Nm
|
|
supports the following signals:
|
|
.Pp
|
|
.Bl -tag -width "TERM, QUIT"
|
|
.It HUP
|
|
This lets
|
|
.Nm
|
|
perform a re-initialization. All open files are closed, the
|
|
configuration file (see above) is reread and the
|
|
.Xr syslog 3
|
|
facility is started again.
|
|
.It TERM
|
|
This tells
|
|
.Nm
|
|
to exit gracefully. Flushing any log files to disk.
|
|
.It INT, QUIT
|
|
In debug mode these are ignored. In normal operation they act as
|
|
SIGTERM.
|
|
.It USR1
|
|
In debug mode this switches debugging on/off. In normal operation
|
|
it is ignored.
|
|
.El
|
|
.Pp
|
|
For convenience the PID is by default stored in
|
|
.Pa /var/run/syslogd.pid .
|
|
A script can look for the existence of this file to determine if
|
|
.Nm
|
|
is running, and then send signals:
|
|
.Bd -literal -offset indent
|
|
kill -SIGNAL `cat /var/run/syslogd.pid`
|
|
.Ed
|
|
.Sh FILES
|
|
.Bl -tag -width /etc/syslog.d/50-default.conf -compact
|
|
.It Pa /etc/syslog.conf
|
|
configuration file. See
|
|
.Xr syslog.conf 5
|
|
for more information.
|
|
.It Pa /etc/syslog.d/*.conf
|
|
conventional sub-directory of
|
|
.Pa .conf
|
|
files read by
|
|
.Nm .
|
|
.It Pa /etc/syslog.d/50-default.conf
|
|
conventional name for default rules.
|
|
.It Pa /var/run/syslogd.pid
|
|
default process ID file
|
|
.It Pa /var/run/syslogd.cache
|
|
cache of last read sequence number from
|
|
.Pa /dev/kmsg .
|
|
Please note,
|
|
.Nm
|
|
relies on this file being removed at system reboot.
|
|
.It Pa /dev/log
|
|
name of the
|
|
.Ux
|
|
domain datagram log socket
|
|
.It Pa /dev/kmsg
|
|
kernel log device
|
|
.El
|
|
.Sh SEE ALSO
|
|
.Xr logger 1 ,
|
|
.Xr syslog 3 ,
|
|
.Xr syslogp 3 ,
|
|
.Xr services 5 ,
|
|
.Xr syslog.conf 5 ,
|
|
.Sh HISTORY
|
|
.Nm
|
|
was originally ported to Linux by
|
|
.An Greg Wettstein Aq Mt greg@wind.enjellic.com
|
|
and the project was named
|
|
.Nm sysklogd
|
|
when a separate log daemon,
|
|
.Nm klogd ,
|
|
for Linux kernel messages was added.
|
|
.Pp
|
|
It was the default
|
|
.Nm
|
|
in Debian and Ubuntu, maintained by
|
|
.An Martin Schulze Aq Mt joey@infodrom.org ,
|
|
who fixed some bugs and added several new features. When Debian replaced
|
|
.Nm sysklogd
|
|
with
|
|
.Nm rsyslogd
|
|
the project was abandoned.
|
|
.Pp
|
|
In 2018
|
|
.An Joachim Wiberg Aq Mt troglobit@gmail.com
|
|
picked up maintenance. In 2019 the project was revived with fresh DNA
|
|
strands from both
|
|
.Fx
|
|
and
|
|
.Nx ,
|
|
.Nm klogd
|
|
was removed in v2.1 and the project was then re-licensed under the
|
|
3-clause BSD license, like its brethren.
|
|
.Pp
|
|
The
|
|
.Nm
|
|
utility first appeared in
|
|
.Bx 4.3 .
|
|
.Sh BUGS
|
|
The ability to log messages received in UDP packets is equivalent to an
|
|
unauthenticated remote disk-filling service, and should probably be
|
|
disabled
|
|
.Fl ( s )
|
|
by default. (The shipped systemd unit file disables this by default.)
|
|
See also
|
|
.Sx SECURITY
|
|
for more information on this. A future version of
|
|
.Nm
|
|
may include support for TLS, RFC5425, which includes authentication of
|
|
both senders and receivers. For now there is the
|
|
.Fl a
|
|
option, which is strongly recommended when operating as a remote sink.
|
|
.Pp
|
|
The
|
|
.Fl a
|
|
matching algorithm does not pretend to be very efficient;
|
|
use of numeric IP addresses is faster than domain name comparison.
|
|
Since the allowed peer list is being walked linearly,
|
|
peer groups where frequent messages are being anticipated
|
|
from should be put early into the
|
|
.Fl a
|
|
list.
|
|
.Pp
|
|
As mentioned in the
|
|
.Sx DESCRIPTION ,
|
|
.Nm
|
|
transparently supports the standard C library
|
|
.Xr syslog 3
|
|
API. If a binary linked to the standard C libraries does not operate
|
|
correctly, this should be reported as a bug to the
|
|
.Lk https://github.com/troglobit/sysklogd/issues sysklogd issue tracker
|