== Einrichtung des Diskless Workstation Chroot == <> === Chroot Erstellen === Das Diskless Workstation Chroot wird automatisch bei der Installation eines Debian Edu Terminal (LTSP) Servers erstellt. Dieses Chroot liegt auf einem frisch installierten LTSP Server im Ordner {{{/opt/ltsp/amd64}}} (ggf. auch unter {{{/opt/ltsp/i386}}}). Wir beschreiben im folgenden die Umgangsweise mit einem amd64-Chroot. Werden viele alte Thin Client Geräte genutzt, ist es ggf. erforderlich ein i386 Chroot vorzuhalten. ==== Möglichkeit 1: Chroot selbst anlegen ==== Nach der Debian Edu Terminalserver Installation wird das Diskless Chroot mittels {{{ŧar}}} verpackt und auf den Diskless Workstation Server nach {{{/srv/ltsp/amd64}}} kopiert. {{{ # Als Super-User root@ltspserver00: # ================================= ltspserver00:~$ cd /opt ltspserver00:/opt$ rsync -aHAX --numeric-ids ltsp root@disklserver:/srv }}} ==== Möglichkeit 2: ITZkS-Chroot für DLWs beziehen ==== '''Empfohlen:''' Das IT-Zukunft Schule Projekt pflegt ein stets aktuells Diskless Workstation Chroot. Dieses kann auf den {{{disklserver}}} synchronisiert werden. Dieser Service steht allerdings nur Projekt-Kunden zur Verfügung. ===== Chroot-Verzeichnis via NFSv3 exportieren ===== Um das Diskless Workstation Chroot Verzeichnis (Achtung: bitte entsprechend amd64 oder i386 im Pfad verwenden) via NFSv3 zu exportieren, muss dieser Eintrag der Datei {{{/etc/exports}}} hinzugefügt werden:{{{ $ sudo -i $ echo "/srv/ltsp/amd64 @workstation-hosts(ro,async,no_root_squash,subtree_check) 127.0.0.1(ro,async,no_root_squash,subtree_check,insecure)" >> /etc/exports $ exportfs -ar $ exit }}} ===== Chroot für Aktualisierung vorbereiten (nur wenn Chroot selbst gepflegt wird) ===== Über das Paket {{{itzks-packages-disklserver}}} wurde das Skript {{{diskless-workstation-shell}}} auf {{{disklserver.intern}}} installiert. Dieses Skript ruft eine Shell im Diskless Workstation Chroot auf, so dass Software-Aktualisierungen und anderen Aufgaben im Chroot durchgeführt werden können.{{{ sudo diskless-workstation-shell }}} Im Chroot muss jetzt die APT-Quelle von IT-Zukunft Schule hinzugefügt werden. Von dort wird u.a. das Paket {{{itzks-systems-config}}} installiert, welches weitere APT Quellen dem System hinzufügt.{{{ $ editor /etc/apt/sources.list.d/itzks.list """ deb http://packages.it-zukunft-schule.de/debian bullseye main deb http://packages.it-zukunft-schule.de/debian bullseye-backports main """ $ apt-get update --allow-insecure-repositories && apt-get install itzks-keyring && apt-get update && apt-get install itzks-systems-common }}} ===== Kernel im Chroot aktualisieren ===== /!\ Die untenstehenden Arbeitsschritte werden im Diskless Workstation Chroot ausgeführt (Kommando: {{{diskless-workstation-shell}}}). Vor der Software-Aktualisierung spielen wir einen aktuellen Kernel ein:{{{ $ apt-get install linux-image-amd64 }}} Danach das Chroot verlasse (Kommando: {{{exit}}}) und für die Boot-Umgebung das aktuelle Kernel-Image (+ InitRamDisk) bereitstellen:{{{ # ltsp kernel /srv/ltsp/* }}} ===== Software im Chroot aktualisieren ===== /!\ Die untenstehenden Arbeitsschritte werden im Diskless Workstation Chroot ausgeführt (Kommando: {{{diskless-workstation-shell}}}). Die Software, die auf einer Diskless Workstation installiert werden soll, sind als Abhängigkeiten im Paket {{{itzks-packages-diskless}}} hinterlegt. Eine Installation dieses Pakets installiert die benötigte Software automatisch mit:{{{ $ apt-get install itzks-systems-diskless }}} Sollen DVDs auf Diskless Workstations abspielbar sein, dann muss von Debian Multimedia das Paket {{{libdvdcss2}}} nachinstalliert werden:{{{ $ apt-get install libdvdcss2 }}} ===== Konfiguration im Chroot anpassen ===== /!\ Die untenstehenden Arbeitsschritte werden im Diskless Workstation Chroot ausgeführt (Kommando: {{{diskless-workstation-shell}}}). Alle Arbeitsschritte als Super-User {{{root}}} im Chroot durchführen!!! ====== SSH Server nur an das loop-Device binden ====== Wenn man SSH-Zugriff auf Diskless Workstations unterbinden möchte, dann sollte man den SSH Dienst auf Diskless Workstations nur auf der {{{localhost}}} Adresse (IPv4-only!) "lauschen" lassen:{{{ --- /etc/ssh/sshd_config.orig 2012-08-04 11:14:11.419983048 +0200 +++ /etc/ssh/sshd_config 2012-08-04 11:17:53.643836494 +0200 @@ -5,7 +5,8 @@ Port 22 # Use these options to restrict which interfaces/protocols sshd will bind to #ListenAddress :: -#ListenAddress 0.0.0.0 +AddressFamily inet +ListenAddress 127.0.0.1 Protocol 2 # HostKeys for protocol version 2 HostKey /etc/ssh/ssh_host_rsa_key }}} Die SSH Server Software kann alternativ auch deinstalliert werden, allerdings benötigt das Paket {{{x2goclient}}} den SSH-Server und installiert ihn mit. Entfernt man den SSH Server, dann wir der X2Go Client ebenfalls deinstalliert. Es wird nicht empfohlen, den SSH-Server zu deaktivieren, da er von X2Go Client benötigt wird. Sinnvoller ist die SSH-Dienst-Zugriffseinschränkung auf localhost (s.o.). ====== Tastatur anpassen ====== Ist auf dieser Seite beschrieben: [[Technik/Nutzungshinweise/TastaturEinstellungen]]. ====== Shutdown-at-Night ====== Wichtig: auf allen Debian Edu Systemen sollte eine Shutdown-at-Night Version (>= 0.12) installiert sein. Hinzu kommt, dass die Datei {{{/etc/default/halt}}} auf DLWs (und ggf. Workstation Hosts) angepasst werden muss:{{{ root@dlw-chroot:/# cat /etc/default/halt # Default behaviour of shutdown -h / halt. Set to "halt" or "poweroff". HALT=poweroff NETDOWN=no # leave network cards in WOL state... (adapt NIC name if needed) ethtool -s eth0 wol g }}} ====== Nur Admin-User und Junior-Admins dürfen sich auf DLWs per SSH einloggen ====== Schul-Admins und IT-Dienstleister:innen tragen wir in der LDAP-Gruppe {{{admins}}} ein. Junior-Admins (z.B. Schüler:innen einer Computer-AG) tragen wir in der Gruppe {{{jradmins}}} ein. Lässt man den SSH-Dienst auf Diskless Workstations aktiv und ist dieser im Intranet der Schule erreichbar, dann kann man SSH-Zugriff auf Diskless Workstations Gruppen-basiert einschränken, z.B. so: Es müssen die Dateien {{{/etc/security/access.conf}}} und {{{/etc/pam.d/sshd}}} angepasst werden:{{{ --- /etc/security/access.conf.orig +++ /etc/security/access.conf @@ -120,3 +120,6 @@ # # All other users should be denied to get access from all sources. #- : ALL : ALL + ++ : admins jradmins teachers root : ALL +- : ALL : ALL }}}{{{ --- /etc/pam.d/sshd.orig 2012-07-30 17:51:12.000000000 +0200 +++ /etc/pam.d/sshd 2012-07-30 17:51:26.000000000 +0200 @@ -15,7 +15,7 @@ # Uncomment and edit /etc/security/access.conf if you need to set complex # access limits that are hard to express in sshd_config. -# account required pam_access.so +account required pam_access.so # Standard Un*x authorization. @include common-account }}} ====== PAM Groups konfigurieren ====== Diverse Features unter Linux bedürfen der Gruppenzugehörigkeit zu System-Gruppen (z.Bsp. fuse-basierte Dateisysteme). Dient LDAP als Benutzerverwaltung, dann müssen solche Gruppenzugehörigkeiten über PAM Groups dem Benutzer hinzugefügt werden. Auf den Diskless Workstations fügen wir dafür folgende Zeile an die Daten {{{/etc/security/groups.conf}}} an:{{{ root@dlw-chroot:/# diff -ur /etc/security/group.conf.orig /etc/security/group.conf --- /etc/security/group.conf.orig 2014-03-03 13:05:17.000000000 +0100 +++ /etc/security/group.conf 2014-03-03 08:29:54.000000000 +0100 @@ -98,3 +98,5 @@ # End of group.conf file # +*;*;*;Al0000-2400;audio,bluetooth,cdrom,dip,floppy,netdev,plugdev,scanner,video + }}} === PXE-Bootumgebung für Diskless Workstations === Die PXE-Bootumgebung wird mithilfe der Tools {{{syslinux}}} und {{{atftpd}}} bereit gestellt. ==== PXE-Bootumgebung anlegen ==== Die PXE-Bootumgebung (eine Syslinux-Konfiguration) ist im Paket {{{itzks-systems-disklserver}}} enthalten. Installationshinweise befinden sich in der folgenden Datei:{{{ $ zcat /usr/share/doc/itzks-systems/disklserver/examples/README.tftp.gz }}} Eine Online-Kopie des gen. READMEs ist ebenfalls verfügbar: https://code.it-zukunft-schule.de/cgit/itzks-systems/tree/examples/disklserver/README.tftp ==== Anpassen des Standard-Images für PXE-Boot ==== Auf {{{disklserver.}}} unter {{{/srv/tftp/diskless+x2go/debian-edu/}}} folgende Anpassungen vornehmen. (In diesem Beispiel zum Umstellen des Standardboot-Images von jessie auf stretch.) {{{default-menu.cfg}}} {{{ -- ontimeout ltsp-diskless-jessie ++ ontimeout ltsp-diskless-stretch }}} {{{ltsp-diskless-jessie.cfg}}} {{{ -- MENU DEFAULT ++ # MENU DEFAULT }}} {{{ltsp-diskless-stretch.cfg}}} {{{ -- # MENU DEFAULT ++ MENU DEFAULT }}} ==== LDAP: DHCP-Gruppen für PXE-Bootumgebung ==== Mit dem Befehl {{{ldapvi}}} werden nun einige DHCP-Clientgruppen zum LDAP-Baum auf dem Debian Edu Hauptserver hinzugefügt. * das Programm {{{ldapvi}}} aufrufen:{{{ @tjener:~$ ldapvi -ZZZ -D cn=admin,ou=ldap-access,dc=skole,dc=skolelinux,dc=no }}} * für die DN {{{cn=admin,ou=ldap-access,dc=skole,dc=skolelinux,dc=no}}} das Kennwort der Hauptserver-Installation verwenden * die folgenden Zeilen (LDIF-Format) an die Textausgabe in {{{ldapvi}}} anhängen:{{{ add cn=diskless-and-localdisk-workstations,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,ou=systems,dc=skole,dc=skolelinux,dc=no dhcpStatements: filename "/srv/tftp/diskless+localdisk+x2go/pxelinux.0" dhcpStatements: next-server disklserver cn: diskless-and-localdisk-workstations objectClass: top objectClass: dhcpGroup objectClass: dhcpOptions add cn=diskless-workstations,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,ou=systems,dc=skole,dc=skolelinux,dc=no dhcpStatements: filename "/srv/tftp/diskless+x2go/pxelinux.0" dhcpStatements: next-server disklserver cn: diskless-workstations objectClass: top objectClass: dhcpGroup objectClass: dhcpOptions add cn=skolelinux-workstations,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,ou=systems,dc=skole,dc=skolelinux,dc=no dhcpStatements: filename "/srv/tftp/skolelinux+x2go/pxelinux.0" dhcpStatements: next-server disklserver cn: skolelinux-workstations objectClass: top objectClass: dhcpGroup objectClass: dhcpOptions add cn=ubuntu-workstations,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,ou=systems,dc=skole,dc=skolelinux,dc=no dhcpStatements: filename "/srv/tftp/ubuntu+x2go/pxelinux.0" dhcpStatements: next-server disklserver cn: ubuntu-workstations objectClass: top objectClass: dhcpGroup objectClass: dhcpOptions add cn=windows-workstations,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,ou=systems,dc=skole,dc=skolelinux,dc=no dhcpStatements: filename "/srv/tftp//windows+x2go/pxelinux.0" dhcpStatements: next-server disklserver cn: windows-workstations objectClass: top objectClass: dhcpGroup objectClass: dhcpOptions add cn=x2go-thinclients,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,ou=systems,dc=skole,dc=skolelinux,dc=no dhcpStatements: filename "/srv/tftp/x2go-tce/pxelinux.0" dhcpStatements: next-server disklserver cn: x2go-thinclients objectClass: top objectClass: dhcpGroup objectClass: dhcpOptions }}}