\chapter{Sonstiges}

\section{Loggen von Meldungen}

    Um Status- oder Fehlermeldungen mitzuloggen gibt es unter
    Linux den Dienst "`syslogd"'. "Uber diesen Daemon werden die Meldungen
    an ein oder mehrere konfigurierbare Ziele weitergeleitet. Diese
    Einstellungen werden "uber die "`Base configuration"' vorgenommen.

    Es empfiehlt sich daher, kurze Status- und Fehlermeldungen
    aus dem Paket "uber den syslogd mitzuloggen. Dies kann einfach "uber
    den Aufruf

\begin{verbatim}

    /usr/bin/logger -t $PACKAGE             \
                    -p $FACILITY.$LEVEL     \
                    "Text der Meldung"

    # FACILITY: auth, authpriv (for security information of a sensitive nature),
    #           cron, daemon, ftp, kern, lpr, mail, news, syslog, user, uucp,
    #           local0 .. local7
    # LEVEL:    alert, crit, debug, emerg, err, info, notice, warning

\end{verbatim}

    erfolgen. Details zum Aufruf sowie zu den m"oglichen Werten kann der
    Dokumentation zum logger entnommen werden und steht an verschiedenen
    Stellen im Internet zur Verf"ugung (Tip: Benutzung einer Suchmaschine).

    Die Logausgaben werden dabei "ublicherweise in die Datei \texttt{/var/log/messages}
    geschrieben. Damit diese Datei nicht endlos w"achst, gibt es den logrotate,
    der in regelm"assigen Abst"anden die aktuelle logdatei mit gzip komprimiert
    und eine neue Logdatei beginnt. Nach einer gewissen Zeitspanne werden
    dann die "altesten Archive gel"oscht.

    Da sehr viele verschiedene Dienste den Service des syslogd nutzen, ist
    dieser Dienst nicht besonders gut f"ur umfangreichere Logausgaben geeignet.
    Daher sollen diese in eine eigene Logdatei \texttt{/var/log/log.\PACKAGE} erfolgen.

    Um zu verhindern dass auch diese Dateien unbegrenzt wachsen, kann auch jedes
    Paket den logrotate--Mechanismus f"ur seine eigenen Logausgaben nutzen. Der
    logrotate wird dabei durch die Anlage einer Steuerdatei im Verzeichnis
    \texttt{/etc/logrotate.d/} gesteuert. Der Name dieser Steuerdatei muss wiederum
    dem Paketnamen entsprechen.

\begin{example}
Beispiel f"ur eine Logrotate--Konfigurationsdatei (Paket foo):
\begin{verbatim}
    #-----------------------------------------------------------------------------
    # /etc/logrotate.d/foo - foo logrotate configuration
    #
    # Creation:     2005-02-01  max
    # Last Update:  2005-03-06  max
    #
    # Copyright (c) 2001-2015 the eisfair team, team(at)eisfair(dot)org
    #
    # This program is free software; you can redistribute it and/or modify
    # it under the terms of the GNU General Public License as published by
    # the Free Software Foundation; either version 2 of the License, or
    # (at your option) any later version.
    #-----------------------------------------------------------------------------

    /var/log/log.foo {
        rotate 7
        daily
        compress
        missingok
        notifempty
        create 644 root root
        }

\end{verbatim}
\end{example}

    Details zu dieser Steuerdatei k"onnen der Dokumentation des logrotate
    entnommen werden.

\section{Cronjobs}

    Um automatisch zeitgesteuert ein Script ausf"uhren zu k"onnen, beispielsweise
    um einen Statusreport zu erstellen, gibt es unter Unix "`Cronjobs"'. Diese
    k"onnen von \eisfair\--Paketen mittels eines einfachen Mechanismus angelegt
    werden. Es muss lediglich eine Steuerdatei in \texttt{/var/cron/etc/root/}
    mit dem Namen des Pakets erstellt und die Aktualisierung des Cron-Daemon
    angestossen werden.

    Diese Aktualisierung geschieht mit dem Aufruf:

\begin{verbatim}

    # update crontab file
    /var/install/config.d/cron.sh

\end{verbatim}

\begin{example}
Beispiel f"ur eine Cron--Konfigurationsdatei (Paket foo):
\begin{verbatim}

    #
    # Do not edit this file, edit /etc/config.d/foo
    # Creation date: Fri Mar 11 19:54:43 CET 2005
    53 3 * * * /var/install/bin/foo-cron
    12 */2 * * * /var/install/bin/foo-cron2

\end{verbatim}
\end{example}

    In diesem Beispiel wird das Script \texttt{/var/install/bin/foo-cron} immer
    Nachts um 3:53 sowie das Script \texttt{/var/install/bin/foo-cron2} jede
    2. Stunde immer 12 Minuten nach der vollen Stunde gestartet.

    Zur Konfiguration der Ausf"uhrungszeiten gilt folgende Reihenfolge:
    Minute Stunde Tag Monat Wochentag

    Details dazu k"onnen der Dokumentation zu crontab entnommen werden.


\section{Systemdateien aktualisieren}

Manchmal ist es notwendig Eintr"age zu Systemdateien hinzuzuf"ugen bzw.
diese zu "andern. Damit die Dateien nicht direkt bearbeitet werden m"ussen,
wurde ab dem base-Paket v1.0.8 eine einheitliche Schnittstellenfunktion
realisiert. Initial wurden Funktionen f"ur das Aktualisieren von
\texttt{/etc/host.allow}, \texttt{/etc/host.deny}, \texttt{/etc/services} und
\texttt{/etc/inittab} implementiert. \\

\subsection{/etc/host.allow}

Will ein Programm Eintr"age zu der Datei /etc/hosts.allow hinzuf"ugen,
so muss es eine Datei /etc/hosts.allow.\package\ schreiben, die
wie folgt aussehen sollte:

\begin{verbatim}
#
# /etc/hosts.allow.nfsserver list file
# generated by /var/install/config.d/nfsserver.sh v1.0.1-3
#
portmap: 192.168.6.0/24
lockd:   192.168.6.0/24
rquotad: 192.168.6.0/24
mountd:  192.168.6.0/24
statd:   192.168.6.0/24
\end{verbatim}

Um die "Anderungen bzw. Erg"anzungen abschliessend zu "ubernehmen, muss noch
das Programm \texttt{/var/install/bin/update-hosts.allow \package}
aufgerufen werden. Bei der Deinstallation des Paketes muss nur die Datei
\texttt{/etc/hosts.allow.\package} gel"oscht und erneut das update-hosts.allow-Script
aufgerufen werden.

\subsection{/etc/host.deny}

Will ein Programm Eintr"age zur Datei \texttt{/etc/hosts.deny} hinzuf"ugen, so muss
es eine Datei \texttt{/etc/hosts.deny.\package} schreiben, die wie folgt
aussehen sollte:

\begin{verbatim}
#
# /etc/hosts.deny.nfsserver list file
# generated by /var/install/config.d/nfsserver.sh v1.0.4-1
#
portmap: ALL
lockd:   ALL
mountd:  ALL
rquotad: ALL
statd:   ALL
\end{verbatim}

Um die "Anderungen bzw. Erg"anzungen abschliessend zu "ubernehmen, muss noch
das Programm \texttt{/var/install/bin/update-hosts.deny \package}
aufgerufen werden. Bei der Deinstallation des Paketes muss nur die Datei
\texttt{/etc/hosts.deny.\package} gel"oscht und erneut das update-hosts.deny-Script
aufgerufen werden.

\subsection{/etc/services}

Will ein Programm Eintr"age zur Datei \texttt{/etc/services} hinzuf"ugen, so muss
es eine Datei \texttt{/etc/services.\package} schreiben, die wie folgt
aussehen sollte:

\begin{verbatim}
#
# /etc/services.antispam list file
# generated by /var/install/config.d/antispam.sh v1.2.2
#
spamd           783/tcp               # SpamAssassin daemon
\end{verbatim}

Um die "Anderungen bzw. Erg"anzungen abschliessend zu "ubernehmen, muss noch
das Programm \texttt{/var/install/bin/update-services \package} aufgerufen
werden. Als Basis wird immer die Datei \texttt{/etc/services.std} verwendet deren
Eintr"age dann ersetzt bzw. zu der neue Eintr"age hinzugef"ugt werden. Bei
der Deinstallation des Paketes muss nur die Datei \texttt{/etc/services.\package}
gel"oscht und erneut das update-services-Script aufgerufen werden.

\subsection{/etc/inittab}

Will ein Programm Eintr"age zur Datei \texttt{/etc/inittab} hinzuf"ugen, so muss
es eine Datei \texttt{/etc/inittab.\package} schreiben, die wie folgt
aussehen sollte:

\begin{verbatim}
#
# /etc/inittab.vbox list file
# generated by /var/install/config.d/vbox.sh v1.0.4-1
#
I6:2345:respawn:/usr/local/vbox/sbin/vboxgetty -d /dev/ttyI6
I7:2345:respawn:/usr/local/vbox/sbin/vboxgetty -d /dev/ttyI7
\end{verbatim}

Um die "Anderungen bzw. Erg"anzungen abschliessend zu "ubernehmen, muss noch
das Programm \texttt{/var/install/bin/update-inittab \package} aufgerufen
werden. Als Basis wird immer die Datei \texttt{/etc/inittab.std} verwendet deren
Eintr"age dann ersetzt bzw. zu der neue Eintr"age hinzugef"ugt werden. Bei
der Deinstallation des Paketes muss nur die Datei \texttt{/etc/inittab.\package}
gel"oscht und erneut das update-inittab-Script aufgerufen werden.

\subsection{/etc/sudoers}

Ab der base Version 1.7.2 gibt es eine "Anderung f"ur /etc/sudoers.

Sudo kennt nun
\begin{verbatim}
# includedir /etc/sudoers.d
\end{verbatim}

Will ein Programm Eintraege zur Datei \texttt{/etc/sudoers} hinzuf"ugen, so muss
es eine Datei \texttt{/etc/sudoers.d/\package} schreiben, die wie folgt
aussehen sollte:

\begin{verbatim}
#
# /etc/sudoers.d/eisfax list file generated by eisfax Version 1.2.0
#
Cmnd_Alias EISFAX2PDF = /usr/bin/tiff2pdf
Cmnd_Alias EISFAXCHOWN = /bin/chown
Cmnd_Alias EISFAXCHMOD = /bin/chmod

fax ALL = NOPASSWD: EISFAX2PDF, EISFAXCHOWN, EISFAXCHMOD
\end{verbatim}

F"ur diese Datei ist ein Filemod von 440 zwingend erforderlich.

\texttt{chmod 0440 /etc/sudoers.d/\package}


\subsection{Debug-Modus}

Wird die Option -debug an die genannten Scripte "ubergeben, so werden
detailliertere Informationen "uber eventuell gefundene Fehler ausgegeben.

\subsection{Beispiel}

Die Implementierung wird am Beispiel der Konfiguration des nfsserver-Paketes
gezeigt:

\begin{verbatim}
...

pgmname=`basename $0`

# set file names
configfile=$testroot/etc/config.d/nfsserver
generate_hostsallow=/etc/hosts.allow.nfsserver

# other parameters
nfsserver_version="v1.0.1-3"

...

echo "#"
echo "# $generate_hostsallow list file"
echo "# generated by $pgmname $nfsserver_version"
echo "#"

...

# set access rights
chown root $generate_hostsallow
chgrp root $generate_hostsallow
chmod 0640 $generate_hostsallow

# update file
/var/install/bin/update-hosts.allow $pgmname

...
\end{verbatim}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Systemdateien aktualisieren - update-systemfiles


\subsection{Gruppen- und User-IDs}

Um weiteres Chaos zu vermeiden, wurde jetzt eine Liste von UIDs und GIDs
festgelegt, an die sich alle Packages halten sollten. Die Liste
wurde aus den Eintr"agen von Debian Woody und SuSE gemischt, wobei im
Zweifelsfall Debian das letzte Wort hatte.

\tablehead{Username & uid & gid\\ \hline}
\begin{supertabular}{lll}
%\caption{Liste von User-IDs}
root    &       0  &    0\\
daemon  &       1  &    1\\
bin     &       2  &    2\\
sys     &       3  &    3\\
% sync    &       4  &    4\\
games   &       5  &    5\\     % (suse 12 100)
lp      &       7  &    7\\     % (suse 4    7)
mail    &       8  &    \\     % (suse 8   12)
news    &       9  &    9\\     % (suse 9   13)
uucp    &      10  &   10\\     % (suse 10  14)
proxy   &      13  &   13\\
messagebus  &  18  &   18 \\
fax     &      21  &   10\\
at      &      25  &    -\\
postgres&      26  &   26\\
vlc     &      28  &   28\\
majordom&      30  &   31\\
postgres&      31  &   32\\
wwwrun  &      30  &   33\\
backup  &      34  &   34\\
operator&      37  &   37\\
list    &      38  &   38\\
irc     &      39  &   39\\
ftp     &      40  &   49\\
gnats   &      41  &   41\\
exim    &      42  &   42\\
named   &      44  &   44\\
mumble-server & 46 &   46 \\
postfix &      51  &   51\\
mysql   &      60  &   60\\
man     &      62  &   62\\     % (suse 13  62)
zope    &      64  &    2\\
sshd    &      71  &   65\\
firebird&      84  &   84\\
clamav  &      85  &   42\\
quassel-core& 179  &  179\\
nobody  &   65534  &65534\\
identd  &     100  &65534\\
\end{supertabular}

\tablehead{Gruppenname & gid \\ \hline}
\begin{supertabular}{ll}
%\caption{Liste mit den Gruppen-IDs}
root        &   0 \\
daemon      &   1\\
bin         &   2\\
sys         &   3\\
adm         &   4\\
tty         &   5\\
cdisk       &   6\\
lp          &   7\\
disk        &   8\\
news        &   9\\     %(suse 13)
uucp        &  10\\     %(suse 14)
input       &  11\\
kmen        &  12\\
proxy       &  13\\
dialout     &  16\\     %(suse 16)
audio       &  17\\
messagebus  &  18\\
cdrom       &  20\\
voice       &  22\\
floppy      &  25\\     %(suse 19)
postgres    &  26\\
sudo        &  27\\
vlc         &  28\\
dip         &  30\\
majordom    &  31\\
postgres    &  32\\
video       &  33\\
backup      &  34\\
operator    &  37\\
list        &  38\\
irc         &  39\\
src         &  40\\
gnats       &  41\\
trusted     &  42\\
utmp        &  43\\     %(suse 22)
named       &  44\\
mumble-server & 46\\
ftp         &  49\\
staff       &  50\\
postfix     &  51\\
maildrop    &  59\\
mysql       &  60\\
man         &  62\\
sshd        &  65\\
firebird    &  84\\
users       & 100\\
quassel     & 179\\
tape        & 497\\
maschines   & 777\\
nobody     & 65533\\
nogroup    & 65534\\
\end{supertabular}

Wer meint, dass in dieser Liste ein Eintrag fehlt, der solle sich in der
Newsgroup spline.eisfair.dev melden.
