8. Sonstiges¶
8.1. Loggen von Meldungen¶
Um Status- oder Fehlermeldungen mitzuloggen gibt es unter Linux den Dienst „syslogd“. Über diesen Daemon werden die Meldungen an ein oder mehrere konfigurierbare Ziele weitergeleitet. Diese Einstellungen werden über die „Base configuration“ vorgenommen.
Es empfiehlt sich daher, kurze Status- und Fehlermeldungen aus dem Paket über den syslogd mitzuloggen. Dies kann einfach über den Aufruf
/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
erfolgen. Details zum Aufruf sowie zu den möglichen Werten kann der Dokumentation zum logger entnommen werden und steht an verschiedenen Stellen im Internet zur Verfügung (Tip: Benutzung einer Suchmaschine).
Die Logausgaben werden dabei üblicherweise in die Datei
/var/log/messages
geschrieben. Damit diese Datei nicht endlos wächst,
gibt es den logrotate, der in regelmäßigen Abständen die aktuelle
logdatei mit xz komprimiert und eine neue Logdatei beginnt. Nach
einer gewissen Zeitspanne werden dann die ältesten Archive gelöscht.
Da sehr viele verschiedene Dienste den Service des syslogd nutzen, ist
dieser Dienst nicht besonders gut für umfangreichere Logausgaben
geeignet. Daher sollen diese in eine eigene Logdatei /var/log/log.$PACKAGE
erfolgen.
Um zu verhindern dass auch diese Dateien unbegrenzt wachsen, kann auch
jedes Paket den logrotate-Mechanismus für seine eigenen Logausgaben
nutzen. Der logrotate wird dabei durch die Anlage einer Steuerdatei im
Verzeichnis /etc/logrotate.d/
gesteuert. Der Name dieser Steuerdatei
muss wiederum dem Paketnamen entsprechen.
Beispiel für eine Logrotate-Konfigurationsdatei (Paket foo):
#-----------------------------------------------------------------------------
# /etc/logrotate.d/foo - foo logrotate configuration
#
# Creation: 2005-02-01 max
# Last Update: 2005-03-06 max
#
# Copyright (c) 2001-2019 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
}
Details zu dieser Steuerdatei können der Dokumentation des logrotate entnommen werden.
8.2. Cronjobs¶
Um automatisch zeitgesteuert ein Script ausführen zu können,
beispielsweise um einen Statusreport zu erstellen, gibt es unter Unix
„Cronjobs“. Diese können von eisfair-Paketen mittels eines einfachen
Mechanismus angelegt werden. Es muss lediglich eine Steuerdatei in
/var/cron/etc/root/
mit dem Namen des Pakets erstellt und die
Aktualisierung des Cron-Daemon angestossen werden.
Diese Aktualisierung geschieht mit dem Aufruf:
# update crontab file
/var/install/config.d/cron.sh
Beispiel für eine Cron-Konfigurationsdatei (Paket foo):
#
# 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
In diesem Beispiel wird das Script /var/install/bin/foo-cron
immer
Nachts um 3:53 sowie das Script /var/install/bin/foo-cron2
jede 2.
Stunde immer 12 Minuten nach der vollen Stunde gestartet.
Zur Konfiguration der Ausführungszeiten gilt folgende Reihenfolge: Minute Stunde Tag Monat Wochentag
Details dazu können der Dokumentation zu crontab entnommen werden.
8.3. Systemdateien aktualisieren¶
Manchmal ist es notwendig Einträge zu Systemdateien hinzuzufügen bzw.
diese zu ändern. Damit die Dateien nicht direkt bearbeitet werden
müssen, wurde ab dem base-Paket v1.0.8 eine einheitliche
Schnittstellenfunktion realisiert. Initial wurden Funktionen für das
Aktualisieren von /etc/host.allow
, /etc/host.deny
, /etc/services
und
/etc/inittab
implementiert.
8.3.1. /etc/host.allow¶
Will ein Programm Einträge zu der Datei /etc/hosts.allow
hinzufügen,
so muss es eine Datei /etc/hosts.allow.$package
schreiben, die wie
folgt aussehen sollte:
#
# /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
Um die Änderungen bzw. Ergänzungen abschliessend zu übernehmen, muss
noch das Programm /var/install/bin/update-hosts.allow $package
aufgerufen werden. Bei der Deinstallation des Paketes muss nur die
Datei /etc/hosts.allow.$package
gelöscht und erneut das
update-hosts.allow-Script aufgerufen werden.
8.3.2. /etc/host.deny¶
Will ein Programm Einträge zur Datei /etc/hosts.deny
hinzufügen, so
muss es eine Datei /etc/hosts.deny.$package
schreiben, die wie folgt
aussehen sollte:
#
# /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
Um die Änderungen bzw. Ergänzungen abschliessend zu übernehmen, muss
noch das Programm /var/install/bin/update-hosts.deny $package
aufgerufen werden. Bei der Deinstallation des Paketes muss nur die
Datei /etc/hosts.deny.$package
gelöscht und erneut das
update-hosts.deny-Script aufgerufen werden.
8.3.3. /etc/services¶
Will ein Programm Einträge zur Datei /etc/services
hinzufügen, so muss
es eine Datei /etc/services.$package
schreiben, die wie folgt
aussehen sollte:
#
# /etc/services.antispam list file
# generated by /var/install/config.d/antispam.sh v1.2.2
#
spamd 783/tcp # SpamAssassin daemon
Um die Änderungen bzw. Ergänzungen abschließend zu übernehmen, muss
noch das Programm /var/install/bin/update-services $package
aufgerufen
werden. Als Basis wird immer die Datei /etc/services.std
verwendet
deren Einträge dann ersetzt bzw. zu der neue Einträge hinzugefügt
werden. Bei der Deinstallation des Paketes muss nur die Datei
/etc/services.$package
gelöscht und erneut das update-services-Script
aufgerufen werden.
8.3.4. /etc/inittab¶
Will ein Programm Einträge zur Datei /etc/inittab
hinzufügen, so muss
es eine Datei /etc/inittab.$package
schreiben, die wie folgt aussehen
sollte:
#
# /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
Um die Änderungen bzw. Ergänzungen abschließend zu übernehmen, muss
noch das Programm /var/install/bin/update-inittab $package
aufgerufen
werden. Als Basis wird immer die Datei /etc/inittab.std
verwendet
deren Einträge dann ersetzt bzw. zu der neue Einträge hinzugefügt
werden. Bei der Deinstallation des Paketes muss nur die Datei
/etc/inittab.$package
gelöscht und erneut das update-inittab-Script
aufgerufen werden.
8.3.5. /etc/sudoers¶
Ab der base Version 1.7.2 gibt es eine Änderung für /etc/sudoers
.
Sudo kennt nun
# includedir /etc/sudoers.d
Will ein Programm Einträge zur Datei /etc/sudoers
hinzufügen, so muss
es eine Datei /etc/sudoers.d/$package
schreiben, die wie folgt
aussehen sollte:
#
# /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
Für diese Datei ist ein Filemod von 440 zwingend erforderlich.
chmod 0440 /etc/sudoers.d/$package
8.3.6. Debug-Modus¶
Wird die Option -debug an die genannten Scripte übergeben, so werden detailliertere Informationen über eventuell gefundene Fehler ausgegeben.
8.3.7. Beispiel¶
Die Implementierung wird am Beispiel der Konfiguration des nfsserver-Paketes gezeigt:
...
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"
...
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
...
8.3.8. Gruppen- und User-IDs¶
Gruppen und/oder User IDs sollen nicht hart vergeben werden. Es sollen die dafür vorhanden Skripte benutzt werden die die Eigenschaften des System berücksichtigen.
siehe => add-user
und => add-group