Linux-Arbeitsplatzrechner manuell einrichten#

Eine manuelle Einbindung von Linux-Clients ist möglich, wird jedoch nicht von der IServ GmbH unterstützt.

Stattdessen wird die automatische Installation von Debian GNU/Linux über die Softwareverteilung empfohlen.

Die folgende Anleitung bezieht sich auf eine Minimalinstallation eines Clients mit Debian GNU/Linux Trixie. Auf anderen Linux-Distributionen sollte eine analoge Einrichtung möglich sein. Die konkreten Befehle und Paketnamen müssen entsprechend angepasst werden und bestimmte Konfigurationen (beispielsweise für PAM) können abweichen.

Der Domain-Name mein-iserv.de und die IP-Adresse 10.0.0.1 sind im Folgenden als Platzhalter zu verstehen und müssen durch den entsprechenden Domainnamen und die interne IP-Adresse des Portalservers ersetzt werden.

Voraussetzungen#

Der Client muss seine IP-Adresse und DNS-Konfiguration über DHCP beziehen. Dies sollte bei standardmäßigen Installationen der Fall sein.

Einrichtung eines SSH-Servers und Hinterlegung eines Public-Keys (Optional)#

Bei Bedarf kann auf dem Client der SSH-Public-Key des Portalservers hinterlegt werden, um einen Fernzugriff von ihm aus zu ermöglichen:

apt install wget openssh-server
wget https://mein-iserv.de/.well-known/iserv/ssh/id_default.pub -O /root/.ssh/authorized_keys

Client der Domäne hinzufügen#

Die Anmeldung am Client mit IServ-Benutzerdaten geschieht über Kerberos. Winbind stellt die Auflösung von Namen und IDs für Benutzer und Gruppen bereit.

Die Pakete lassen sich wie folgt installieren und konfigurieren:

apt install krb5-user libpam-krb5 libnss-winbind libpam-winbind

/etc/krb5.conf:

[libdefaults]
  default_realm = AD.MEIN-ISERV.DE
  permitted_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha384-192 aes128-cts-hmac-sha256-128
  kdc_timesync = 1
  ccache_type = 4
  forwardable = true
  proxiable = true
  fcc-mit-ticketflags = true

[realms]
  AD.MEIN-ISERV.DE = {
    kdc = iserv.ad.mein-iserv.de.
    admin_server = iserv.ad.mein-iserv.de.
    default_domain = AD.MEIN-ISERV.DE
  }

[domain_realm]

/etc/samba/smb.conf:

[global]
  workgroup = AD
  realm = ad.mein-iserv.de
  security = ADS
  os level = 0

  local master = No
  domain master = No

  template homedir = /var/lib/iserv/client/home/%U
  template shell = /bin/bash

  winbind cache time = 10
  winbind enum users = yes
  winbind enum groups = yes

  winbind nested groups = yes
  winbind expand groups = 4
  winbind use default domain = yes

  wins server = 10.0.0.1
  idmap config * : range = 2000000-2999999
  idmap config * : backend = tdb

  idmap config AD : range = 500-1999998
  idmap config AD : backend = ad
  idmap config AD : unix_primary_group = yes

  include = /etc/samba/smb.conf.local

Der Beitritt zur Domäne wird mittels eines Nutzer durchgeführt, der auf dem IServ der Gruppe „Domain Admins“ angehören muss:

net ads join --no-dns-updates -U "AD\erika.musterfrau"

Anschließend muss auf dem Portalserver die Zuweisung von UID und GID an Geräteaccounts ausgelöst werden. Dies kann in der IServ-Oberfläche über Verwaltung → System → Systemprüfung → Ausführen ausgelöst werden.

Nach Abschluss muss auf dem Client Winbind neugestartet werden:

systemctl restart winbind

Ein Login mit den IServ-Benutzerdaten sollte nun (ggf. nach kurzer Wartezeit) möglich sein.

Automatisch lokale Home-Verzeichnisse anlegen#

Über PAM lassen sich während der Anmeldung automatisch lokale Home-Verzeichnisse anlegen. Die Konfiguration von PAM findet unter Debian und Derivaten mit folgendem Befehl statt:

pam-auth-update

In der Auswahl Create home directory on login aktivieren und mit OK abspeichern. Das Home-Verzeichnis wird nach dem in der smb.conf angegebenen Muster (template homedir) benannt.

Automatisch Freigaben einbinden#

Zum Zugriff auf die Freigaben und deren automatische Einbindung (Mounten) muss der CIFS-Client sowie das PAM-Mount-Modul installiert und konfiguriert sein:

apt install libpam-mount cifs-utils

Die folgende Konfiguration der /etc/security/pam_mount.conf.xml bindet die benutzerspezifischen Freigaben ein.

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<pam_mount>
  <debug enable="0" />
  <volume fstype="cifs" server="10.0.0.1" sgrp="domain.users" path="home" mountpoint="/var/lib/iserv/client/home/%(USER)/Files" options="domain=AD,iocharset=utf8,dir_mode=0700" />
  <volume fstype="cifs" server="10.0.0.1" sgrp="domain.users" path="groups" mountpoint="/var/lib/iserv/client/home/%(USER)/Groups" options="domain=AD,iocharset=utf8,dir_mode=0700" />
  <volume fstype="cifs" server="10.0.0.1" sgrp="domain.users" path="linux_print" mountpoint="/var/lib/iserv/client/home/%(USER)/Print" options="domain=AD,iocharset=utf8,dir_mode=0700" />
  <mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other" />
  <mntoptions require="nosuid,nodev" />
  <logout wait="0" hup="no" term="no" kill="no" />
  <mkmountpoint enable="1" remove="true" />
</pam_mount>