HowTos für allgemeine Administration

Die Kapitel Erste Schritte und Wartung erklären den Einstieg in den Umgang und die Wartung von Debian Edu. Die HowTos in diesem Kapitel sind Tipps und Tricks für Fortgeschrittene.

Mittels etckeeper lassen sich alle Änderungen an Dateien in /etc/ mit Hilfe von Git als System für die Versionskontrolle zurückverfolgen.

Dies ermöglicht es festzustellen, wann eine Datei hinzugefügt, verändert oder entfernt wurde. Im Falle einer Textdatei lässt sich auch feststellen, was geändert wurde. Das Git-Repository befindet sich in /etc/.git/.

Änderungen werden automatisch stündlich protokolliert; damit ist es möglich, die Entwicklung der Konfiguration zurück zu verfolgen.

Um die Entwicklung anzusehen, kann der Befehl etckeeper vcs log benutzt werden. Um Änderungen zwischen zwei Zeitpunkten einzusehen, kann ein Befehl wie z.B. etckeeper vcs diff verwendet werden.

Rufen Sie man etckeeper auf, um weitere Optionen kennenzulernen.

Nützliche Befehle sind:

etckeeper vcs log
etckeeper vcs status
etckeeper vcs diff
etckeeper vcs add .
etckeeper vcs commit -a
man etckeeper

Mit Ausnahme der /boot/-Partition sind alle Partitionen in Debian Edu auf logischen LVM-Datenträgern. Seit dem Linux-Kernel 2.6.10 ist es möglich, Partitionen zu vergrößern, während sie eingehängt sind. Um Partitionen zu verkleinern, müssen diese weiterhin ausgehängt sein.

Es ist eine gute Idee, das Anlegen sehr großer Partitionen (etwa mehr als 20 GiB) zu vermeiden, weil es sehr lange dauert, um darauf fsck auszuführen oder um sie per Backup wiederherzustellen, wenn das notwendig sein sollte. Falls möglich, ist es besser, statt einer großen mehrere kleine Partitionen zu erstellen.

Um die Vergrößerung voller Partitionen zu vereinfachen, wird das Skript debian-edu-fsautoresize zur Verfügung gestellt. Es liest die Konfiguration unter /usr/share/debian-edu-config/fsautoresizetab, /site/etc/fsautoresizetab und /etc/fsautoresizetab ein und schlägt - basierend auf den in diesen Dateien definierten Regeln - die Vergrößerung zu kleiner Partitionen vor. Ohne Argumente aufgerufen gibt es nur die Befehle aus, die zum Vergrößern der Dateisysteme nötig sind. Wenn die Dateisysteme tatsächlich vergrößert werden sollen, muss das Skript mit dem Argument -n ausgeführt werden.

Das Skript wird stündlich automatisch auf jedem Client der fsautoresize-hosts-»Netgroup« ausgeführt.

Wenn die vom Squid-Proxy verwendete Partition geändert wird, muss der Wert für die Cachegröße in etc/squid/squid.conf ebenfalls aktualisiert werden. Das Hilfsskript /usr/share/debian-edu-config/tools/squid-update-cachedir wird bereitgestellt, um dies automatisch zu tun, indem es die aktuelle Partitionsgröße von /var/spool/squid/ überprüft und Squid so konfiguriert, dass es 80 % davon als Cachegröße verwendet.

»Logical-Volume-Management« (LVM) erlaubt es, Partitionen zu vergrößern, während diese eingehängt sind und benutzt werden. Mehr Informationen zu LVM finden Sie unter LVM HowTo.

Um einen logischen Datentäger zu vergrößern, müssen Sie einfach dem lvextend Befehl die Information mitgeben, auf wie viel Sie die Partition vergrößern wollen. Um beispielsweise die Partition home0 auf 30GiB zu vergrößern, verwenden Sie:

lvextend -L30G /dev/vg_system/skole+tjener+home0
resize2fs /dev/vg_system/skole+tjener+home0

Um home0 um 30GiB zu vergrößern, fügen Sie ein '+' (-L+30G) hinzu.

Mit ldapvi können Einträge in der LDAP-Datenbank mit einem normalen Texteditor von der Befehlszeile aus editiert werden.

Folgender Befehl muss ausgeführt werden:

ldapvi -ZD '(cn=admin)'

Bemerkung: ldapvi verwendet den durch die Umgebungsvariable EDITOR als Standard vorgegebenen Editor. Nach Ausführen von beispielsweise export EDITOR=vim wird vim als Editor verwendet.

Verwendung von ldapvi Achtung: ldapvi ist ein sehr mächtiges Werkzeug. Verwenden Sie es vorsichtig und richten Sie kein Durcheinander in der LDAP-Datenbank an; dies gilt auch für JXplorer.

Die Verwendung von Kerberos für NFS zum Einhängen von Heimatverzeichnissen ist eine Sicherheitsfunktion. Arbeitsplatzrechner und LTSP-Clients funktionieren nicht ohne Kerberos. Es werden die Stufen krb5, krb5i und krb5p unterstützt (krb5 bedeutet Kerberos-Authentifizierung, i steht für Integritätsprüfung und p für Datenschutz, d. h. Verschlüsselung); die Belastung sowohl des Servers als auch des Arbeitsplatzrechners steigt mit der Sicherheitsstufe, krb5i ist eine gute Wahl und wurde als Standard gewählt.

Dieses Tool erlaubt es, den Standarddrucker in Abhängigkeit von Ort, Maschine oder Gruppenzugehörigkeit zu setzen. Weitere Informationen stehen in der Datei /usr/share/doc/standardskriver/README.md.

Die Konfigurationsdatei /etc/standardskriver.cfg muss durch den Admin erstellt werden, die Datei /usr/share/doc/standardskriver/examples/standardskriver.cfg kann als Beispiel dienen.

Wenn Sie für die Bearbeitung von Daten in LDAP einen Editor mit graphischer Benutzeroberfläche bevorzugen, dann probieren Sie den standardmäßig installierten jxplorer aus. Verwenden Sie diese Einträge, um Schreibzugriff zu bekommen:

host: ldap.intern
port: 636
Security level: ssl + user + password
User dn: cn=admin,ou=ldap-access,dc=skole,dc=skolelinux,dc=no

ldap-createuser-krb is a small command line tool to create user accounts, it is invoked as follows:

ldap-createuser-krb5 [-u uid] [-g gid] [-G group[,group]...] [-d department] <username> <gecos>

All arguments except the username and GECOS field are optional, the latter usually should contain the full name of the user. Unless specified the tool will pick the next free UID and GID automatically and not assign any additional groups to the user. If no department is given, it will pick the first gosaDepartment from LDAP which is likely skole and for regular users usually not what you want, so you should pick an appropriate value for the user, e.g. Teachers or Students. After entering and confirming the password and entering the LDAP administrator password, ldap-createuser-krb5 will create the user account in LDAP, set the Kerberos password, create the home directory, and add a corresponding Samba user. The following screenshot shows an example invocation to create a user account named harhir for a teacher whose full name is "Harry Hirsch":

root@tjener:~# ldap-createuser-krb5 -d Teachers harhir "Harry Hirsch"
new user password: 
confirm password: 

dn: uid=harhir,ou=people,ou=Teachers,dc=skole,dc=skolelinux,dc=no
changetype: add
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: gosaAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: krbPrincipalAux
objectClass: krbTicketPolicyAux
sn: Harry Hirsch
givenName: Harry Hirsch
uid: harhir
cn: Harry Hirsch
userPassword: {CRYPT}$y$j9T$TWnq55O1rvyLhjF.$oVf.t.RXC1v/4Y8FhV0umno629mo7bP7/YJyig6HET6
homeDirectory: /skole/tjener/home0/harhir
loginShell: /bin/bash
uidNumber: 1004
gidNumber: 1004
gecos: Harry Hirsch
shadowLastChange: 19641
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
krbPwdPolicyReference: cn=users,cn=INTERN,cn=kerberos,dc=skole,dc=skolelinux,dc=no
krbPrincipalName: harhir@INTERN

ldap_initialize( <DEFAULT> )
Enter LDAP Password: 
add objectClass:
        top
        person
        organizationalPerson
        inetOrgPerson
        gosaAccount
        posixAccount
        shadowAccount
        krbPrincipalAux
        krbTicketPolicyAux
add sn:
        Harry Hirsch
add givenName:
        Harry Hirsch
add uid:
        harhir
add cn:
        Harry Hirsch
add userPassword:
        {CRYPT}$y$j9T$TWnq55O1rvyLhjF.$oVf.t.RXC1v/4Y8FhV0umno629mo7bP7/YJyig6HET6
add homeDirectory:
        /skole/tjener/home0/harhir
add loginShell:
        /bin/bash
add uidNumber:
        1004
add gidNumber:
        1004
add gecos:
        Harry Hirsch
add shadowLastChange:
        19641
add shadowMin:
        0
add shadowMax:
        99999
add shadowWarning:
        7
add krbPwdPolicyReference:
        cn=users,cn=INTERN,cn=kerberos,dc=skole,dc=skolelinux,dc=no
add krbPrincipalName:
        harhir@INTERN
adding new entry "uid=harhir,ou=people,ou=Teachers,dc=skole,dc=skolelinux,dc=no"
modify complete

Authenticating as principal root/admin@INTERN with password.
kadmin.local:  change_password harhir@INTERN
Enter password for principal "harhir@INTERN": 
Re-enter password for principal "harhir@INTERN": 
Password for "harhir@INTERN" changed.
kadmin.local:  lpcfg_do_global_parameter: WARNING: The "encrypt passwords" option is deprecated
Added user harhir.

Es ist möglich, aber nicht notwendig, stable-updates direkt zu verwenden: Stable-Updates werden regelmäßig (etwa alle zwei Monate) anlässlich der Veröffentlichung von Stable-Pointreleases in die Stable-Suite übernommen.

Sie benutzen Debian Edu, weil Sie seine Stabilität schätzen. Es läuft sehr gut, es gibt nur ein Problem: Manchmal ist eine Software ein wenig mehr veraltet als Ihnen recht ist. Hier kommt backports.debian.org ins Spiel.

Backports sind extra kompilierte Pakete aus Debian-Testing (meistens) und Debian-Unstable (allerdings nur in Ausnahmefällen, insbesondere Sicherheitsaktualisierungen), so dass sie ohne neue Bibliotheken (sofern das möglich ist) auf einer stabilen Debian-Distribution wie Debian Edu laufen. Es wird empfohlen, nur diejenigen Backports auszuwählen, die Sie benötigen und nicht alle verfügbaren zu benutzen.

Die Nutzung von Backports ist einfach:

echo "deb http://deb.debian.org/debian/ bookworm-backports main" > /etc/apt/sources.list.d/bookworm-backports.sources.list
apt update

Anschießend können Pakete aus Backports einfach installiert werden; der folgende Befehl wird die Backports-Version von tuxtype installieren:

apt install tuxtype/bookworm-backports

Backports werden (falls verfügbar) automatisch aktualisiert - genauso wie andere Pakete. So wie das normale Depot hat Backports drei Sektionen: main, contrib und non-free.

Falls Sie ein Upgrade von einer Version zu einer nächsten (wie z.B. von Bookworm 12.1 auf 12.2) durchführen wollen, aber keine Internetverbindung, nur physikalische Medien haben, dann führen Sie folgende Schritte aus:

Legen Sie die CD / DVD / Blu-ray Disc ein oder stecken Sie den USB-Stick ein und benutzen Sie den Befehl apt-cdrom:

apt-cdrom add

Zitat aus der Handbuchseite von apt-cdrom(8):

Dann sind diese beiden Befehle für das Upgrade auszuführen:

apt update
apt full-upgrade

killer ist ein Perl-Skript, das Hintergrundprozesse aufräumt. Hintergrundprozesse sind definiert als Prozesse, die zu Nutzern gehören, die zur Zeit nicht am System angemeldet sind. Das Skript wird per Cron-Job einmal in der Stunde ausgeführt.

unattended-upgrades ist ein Debian-Paket, das automatisch Sicherheitsaktualisierungen (und andere Aktualisierungen) installieren kann. Falls installiert, ist das Paket so vorkonfiguriert, dass Sicherheitsaktualisierungen erfolgen. Die Log-Dateien gibt es in /var/log/unattended-upgrades/; außerdem gibt es immer /var/log/dpkg.log und /var/log/apt/.

Es ist möglich, Energie und Geld zu sparen, indem Client-Rechner nachts automatisch ausgeschaltet und morgens wieder eingeschaltet werden. Das Paket shutdown-at-night versucht, den Rechner ab 16:00 Uhr nachmittags zu jeder vollen Stunde auszuschalten, schaltet ihn aber nicht aus, wenn er anscheinend Benutzer hat. Es wird versucht, dem BIOS mitzuteilen, den Rechner um 07:00 Uhr morgens einzuschalten, und der Hauptserver wird versuchen, die Rechner ab 06:30 Uhr durch das Senden von Wake-on-LAN-Paketen einzuschalten. Diese Zeiten können in den Crontabs der einzelnen Rechner geändert werden.

Falls Sie das vorhaben, sollten folgende Punkte beachtet werden:

Legen Sie auf Rechnern, die über Nacht abgeschaltet werden sollen, die Datei /etc/shutdown-at-night/shutdown-at-night mit Hilfe von »touch« an - oder fügen Sie die entsprechenden Rechnernamen (wie in 'uname -n' angegeben) der »Netgroup« »shutdown-at-night-hosts« hinzu. Das Hinzufügen der Rechner zur »Netgroup« in LDAP kann mit der GOsa²Webschnittstelle erfolgen. Für diese Rechner muss ggf. im BIOS die Wake-On-Lan-Funktion (WOL) aktiviert werden. Außerdem muss sichergestellt werden, dass alle Router und Switches auch dann WOL-Pakete weiterleiten, wenn die angesprochenen Rechner ausgeschaltet sind. Von einigen Switches ist bekannt, dass sie keine WOL-Pakete weiterleiten, wenn die Empfängeradresse nicht in deren ARP-Tabelle vorhanden ist.

Um Wake-On-Lan auf dem Server einzuschalten, tragen Sie die Client-Rechner in die Datei /etc/shutdown-at-night/clients ein: Eine Zeile pro Client, zuerst die IP-Adresse, danach die MAC-Adresse (bzw. Ethernet-Adresse), durch Leerzeichen voneinander getrennt. Alternativ können Sie ein Skript /etc/shutdown-at-night/clients-generator schreiben, das eine solche Liste erstellt.

Hier sehen Sie ein Beispiel /etc/shutdown-at-night/clients-generator, das mit sitesummary genutzt werden kann:

  #!/bin/sh
  PATH=/usr/sbin:$PATH
  export PATH
  sitesummary-nodes -w

Wenn die »Netgroup« benutzt wird, um shutdown-at-night auf den Clients zu aktivieren, ist dieses Skript eine Alternative; es nutzt das Netgroup-Werkzeug aus dem Paket ng-utils:

  #!/bin/sh
  PATH=/usr/sbin:$PATH
  export PATH
  netgroup -h shutdown-at-night-hosts

Um Maschinen, die hinter einer Firewall liegen, vom Internet aus erreichen zu können, könnten Sie das Paket autossh installieren. Dies erlaubt das Einrichten eines SSH-Tunnels zu einer Maschine im Internet, zu der Sie Zugang haben. Von dieser Maschine aus können Sie dann über den SSH-Tunnel den Server hinter der Firewall erreichen.

Bei der Standardinstallation laufen alle Dienste auf dem Hauptserver, Hostname tjener. Um auf einfache Weise einige Dienste auf eine andere Maschine zu verlagern, gibt es das Installationsprofil Minimal. Eine Installation unter Verwendung dieses Profils führt zu einer Maschine, die zum Debian-Edu-Netzwerk gehört, auf der aber (noch) keine Dienste laufen.

Diese Schritte sind erforderlich, um eine Maschine für einige Dienste aufzusetzen:

FIXME: The HowTos from https://wiki.debian.org/DebianEdu/HowTo/ are either user- or developer-specific. Let's move the user-specific HowTos over here (and delete them over there)! (But first ask the authors (see the history of those pages to find them) if they are fine with moving the howto and putting it under the GPL.)