Client auf Basis von Debian 13?

Ups, die Reihenfolge ist eigentlich nicht sinnvoll. Warum es trotzdem funktioniert, weiß ich nicht?!?
Gruß
Mathias

Ok, hat nicht funktioniert auch nicht mit der „richtigen“ Reihenfolge…

#!/bin/bash
/usr/bin/sleep 10
/usr/bin/net ads keytab flush

Schade :frowning:
Gruß
Mathias

Moin!

Dank an @rettich fürs Testen. Es geht aber weiter. Ich habe jetzt mal nach dieser Anleitung die AD-Anbindung quasi from scratch nochmal hochgezogen. Das hat hier mit 2 Clients stabil funktioniert:

  1. Voraussetzung: Debian 13 Client mit installiertem linuxmuster-linuxclient7 und ausgeführtem setup.
  2. Paket libpam-krb5 installieren.
  3. Diese 4 Konfigurationsdateien wie folgt anpassen:
# /etc/krb5.conf
[libdefaults]
    default_realm = LINUXMUSTER.LAN
    dns_lookup_realm = false
    dns_lookup_kdc = false
    default_ccache_name = FILE:/tmp/krb5cc_%{uid}
    ticket_lifetime = 24h
    renew_lifetime = 7d
    udp_preference_limit = 0
    rdns = false

[realms]
    LINUXMUSTER.LAN = {
        admin_server = SERVER.LINUXMUSTER.LAN
        kdc = SERVER.LINUXMUSTER.LAN
    }

[domain_realm]
     .linuxmuster.lan = LINUXMUSTER.LAN

[logging]
    default = SYSLOG
# /etc/nsswitch.conf

passwd:         compat sss
group:          compat sss
shadow:         files sss
gshadow:        files

hosts:          files mdns4_minimal [NOTFOUND=return] dns
networks:       files

protocols:      db files
services:       db files sss
ethers:         db files
rpc:            db files

netgroup:       nis sss
sudoers:        files sss
automount:      sss
# /etc/samba/smb.conf

[global]
realm = LINUXMUSTER.LAN
workgroup = LINUXMUSTER
client signing = auto
client use spnego = yes
security = ads
kerberos method = secrets and keytab
tls verify peer = ca_and_name
tls cafile = /var/lib/samba/private/tls/linuxmuster.lan.pem
# /etc/sssd/sssd.conf

[sssd]
domains = LINUXMUSTER.LAN
config_file_version = 2
services = nss, pam

[domain/LINUXMUSTER.LAN]
ad_domain = linuxmuster.lan
ad_gpo_access_control = permissive
ad_gpo_ignore_unreadable = True
ad_maximum_machine_account_password_age = 0
access_provider = ad
ldap_id_mapping = True
id_provider = ad
cache_credentials = True
default_shell = /bin/bash
krb5_store_password_if_offline = True
krb5_realm = LINUXMUSTER.LAN
krb5_validate = False
realmd_tags = manages-system joined-with-adcli
fallback_homedir = /home/%u@%d
override_homedir = /home/%u
use_fully_qualified_names = False
case_sensitive = False
  1. Der Domäne beitreten:
net ads join --no-dns-updates -U global-admin%'Muster!'
  1. Dienste neu starten:
for i in nmbd smbd sssd; do systemctl restart $i; done
  1. Login testen.
  2. Reboot und Image erstellen.

Viel Erfolg!

VG, Thomas

1 „Gefällt mir“

Moin!

Die Hilfe von net ads join ist interessant:

~# net ads join --help
net ads join [--no-dns-updates] [options]
Valid options:
   dnshostname=FQDN      Set the dnsHostName attribute during the join.
                         The default is in the form netbiosname.dnsdomain
   createupn[=UPN]       Set the userPrincipalName attribute during the join.
                         The default UPN is in the form host/netbiosname@REALM.
   createcomputer=OU     Precreate the computer account in a specific OU.
                         The OU string read from top to bottom without RDNs
                         and delimited by a '/'.
                         E.g. "createcomputer=Computers/Servers/Unix"
                         NB: A backslash '\' is used as escape at multiple
                             levels and may need to be doubled or even
                             quadrupled. It is not used as a separator.
   machinepass=PASS      Set the machine password to a specific value during
                         the join. The default password is random.
   osName=string         Set the operatingSystem attribute during the join.
   osVer=string          Set the operatingSystemVersion attribute during join.
                         NB: osName and osVer must be specified together for
                             either to take effect. The operatingSystemService
                             attribute is then also set along with the two
                             other attributes.
   osServicePack=string  Set the operatingSystemServicePack attribute
                         during the join.
                         NB: If not specified then by default the samba
                             version string is used instead.

Mit der Option machinepass kann man ein bestimmtes Maschinenpasswort setzen. Wenn dem Admin dieses PW bekannt ist, kann er zB bei Anmeldeproblemen mit sophomorix-passwd für den $-Account des Computers das Passwort zurücksetzen. Könnte evtl. hilfreich sein.

VG, Thomas

Hallo Thomas,
bei meinem Client hat das leider nicht funktioniert. Ich installiere Debian 13 grade ganz neu und versuchs dann nochmal…
Und diesmal hebe ich alle Snapshots auf :wink:
Gruß
Mathias

Hallo Thomas,
mit einem frischen Client hat’s leider auch nicht geklappt.
Ich habe linuxmuster-linuxclinet7 und libpam-krb5 installiert und habe dann linuxmuster-linuxclient7 setup ausgeführt.
Dann bin ich die Schritte 3 - 5 durchgegangen und habe ein Image erstellt. Das Login konnte ich vorher nicht testen, da nur der Knopf für den Linuxadmin auf dem Anmeldebildschirm war.
Nach dem Imageerstellen hat die Anmeldung leider nicht funktioniert…

Ich gehe nochmal zurück, führe linuxmuster-linuxclient7 setup aus und installier erst dann libpam-krb5
Gruß
Mathias

Hallo Matthias,

das ist die richtige Vorgehensweise. Die Installation von libpam-krb5 passt automatisch die pam-Konfiguration so an, dass das Modul aktiviert wird. Wird es zuerst installiert und dann das Clientsetup ausgeführt, überschreibt das wieder die pam-Konfiguration. Siehe:

VG, Thomas

Hallo Thomas,
so jetzt hat’s funktioniert :slight_smile:
Jetzt haben wir einen minimalen Debian13-Client, auf dem man aufbauen kann.
Vielen Dank für deine Hilfe!!!
Gruß
Mathias

Zu früh gefreut. Die Anmeldung klappt, aber leider werden die Shares nicht geountet. Witziger weise hat das beim letzten Client geklappt?!?
Ich schau mir das Image von heute mittag nochmal an…

Hallo Thomas,
ich bin wieder ein ganzes Stück weiter.


Ich hab den letzten Client, der ja nicht mehr dazu zu bewegen war, sich in der Domäne anzumelden, genommen, libpam-krb5 mit apt purge libpam-krb5 runter geschmissen und deine Punkte von oben abgearbeitet. Das Ergebnis siehst du auf dem Bild.
Die Anmeldung klappt und die Verzeichnisse werden wie gewünscht eingebunden.

Warum das beim ganz frischen Client nicht geklappt hat, ist mir leider nicht klar. Tut mir leid…
Gruß
Mathias

Hallo Matthias,

das sieht ja jetzt gut aus. :slight_smile:
Jetzt muss ich mal schauen, dass ich das so paketiert kriege, dass es auf verschiedenen Systemen funktioniert.

VG, Thomas

Hallo @thomas ,
ich hab schon wieder ein Problem.
Eben habe ich gemerkt, dass ich mich zwar anmelden kann, aber die Shares werden nicht mehr gemountet. Vor 5 Tagen hat das noch geklappt?!?
Wann das passiert ist, weiß ich leider auch nicht. Das Demian13-Image ist in der Zwischenzeit ganz gut gediehen. Ich würde nur ungern auf einen frühen Stand zurückkehren. Daher meine Frage:

Wie kann ein User auf der Konsole sein Home-Verzeichnis oder einen anderen Share einbinden?
Vielleicht gibt’s dann eine Fehlermeldung, die mir einen Hinweis gibt.
Eine log-Datei habe ich auch nicht gefunden. Vielleicht kannst du mir da auch einen Tipp geben.

Ich möchte mich bereits jetzt schon für deine Bemühungen bedanken.
Viele Grüße
Mathias

Hallo Thomas,
ich habe eine kleine Beobachtung gemacht:


Das Bild zeigt das Verzeichnis zweier frisch gesyncer Clients. Links der Debian12-Client und Rechts der Debian13-Client.
Wenn sich noch niemand angemeldet hat, gibt es nur das Unterverzeichnis des Maschinenaccounts.
Melde ich mich dann als rettich an, ist das Verzeichnins rettich mit den Unterverzeichnissen und den Scripten beim Debian12 vorhanden. Beim Debian13 fehlen Sie…
Gruß
Mathias

Hast Du mal versucht:

  • Anmeldung-> keine Shares sind da
  • Abmeldung
  • Direkt neue Anmeldung mit gleichem Usernamen?

Wir haben das hier mit Windows Clients beobachtet, dass manchmal die Shares erst im zweiten Anlauf da sind. Unter Linux hatten wir das bisher zwar nicht — aber wer weiß?!?

Hallo Michael.

Ja, hab ich versucht. Hat aber leider nichts gebracht…
Trotzdem, danke fürs Mitdenken.
Gruß
Mathias

Moin!

Was passiert, wenn du als angemeldeter User in einem Terminal das Skript
/usr/share/linuxmuster-linuxclient7/scripts/onLogin
startest?

VG, Thomas

Moin!

Habe den Übeltäter gefunden: /usr/sbin ist unter Debian nicht im Pfad für unprivilegierte User, d.h. beim Einloggen wird das Skript linuxmuster-linuxclient7 nicht gefunden. Also muss in

  • /etc/profile.d/99-linuxmuster-linuxclient7.sh und
  • /usr/share/linuxmuster-linuxclient7/scripts/executeHookWithEnvFix.sh

der Aufruf von
linuxmuster-linuxclient7
noch mit dem Pfad versehen werden:
/usr/sbin/linuxmuster-linuxclient7

VG, Thomas

Halo Thomas,
entschuldige erstmal, dass ich mich so lange nicht mehr gemeldet habe. Ich war bei unserer Projekt-Woche voll im Einsatzt…

Da habe ich mit ln -s /usr/sbin/linuxmuster-linuxclient7 /usr/bin/linuxmuster-linuxclient7 einen Link draufgelegt.

Das probier ich jetzt auch noch aus und berichte…
Gruß
Mathias

Hallo Thomas,

Dann bekomme ich diese Ausgabe:

[DEBUG] Calculating mountpoint of //server.linuxmuster.lan/sysvol
[DEBUG] Trying to mount '//server.linuxmuster.lan/sysvol' to '/srv/samba/rettich/sysvol'
[DEBUG] * Creating directory...
[DEBUG] * The mountpoint is already mounted.
onLogin.d Hook called with env:
Server home: 
Sysvol: /srv/samba/linuxmuster\rettich/sysvol
Domain: linuxmuster.lan
Server hostname: server.linuxmuster.lan
School: 
Username: 
Room: lzimmer
Hardware group: debian13
sending incremental file list

sent 1.719 bytes  received 41 bytes  3.520,00 bytes/sec
total size is 739.324  speedup is 420,07
[INFO] ====== onLogin started ======
[INFO] Cleaning linuxadmin gtk bookmarks
[WARNING] Gtk bookmarks file not found, skipping!
[ERROR] Error executing LDAP search!
[ERROR] === An exception occurred ===
[ERROR] {'result': -7, 'desc': 'Bad search filter', 'ctrls': []}
[ERROR] === end exception ===
[ERROR] Error executing LDAP search!
[ERROR] === An exception occurred ===
[ERROR] {'result': -7, 'desc': 'Bad search filter', 'ctrls': []}
[ERROR] === end exception ===
[DEBUG] Calculating mountpoint of //server.linuxmuster.lan/sysvol
[DEBUG] Calculating mountpoint of //server.linuxmuster.lan/sysvol
[DEBUG] Saving export 'SYSVOL=/srv/samba/linuxmuster\rettich/sysvol' to tmp file
[ERROR] lmn-export and lmn-unset may only be used inside of linuxmuster-linuxclient7 hooks!
[ERROR] Error executing LDAP search!
[ERROR] === An exception occurred ===
[ERROR] {'result': -7, 'desc': 'Bad search filter', 'ctrls': []}
[ERROR] === end exception ===
[FATAL] * Error when loading applicable GPOs! Shares and printers will not work.
[INFO] === Running local hook onLogin ===
[ERROR] Error executing LDAP search!
[ERROR] === An exception occurred ===
[ERROR] {'result': -7, 'desc': 'Bad search filter', 'ctrls': []}
[ERROR] === end exception ===
[INFO] == Executing script /etc/linuxmuster-linuxclient7/onLogin.d/00_example.sh ==
[INFO] ==> Script /etc/linuxmuster-linuxclient7/onLogin.d/00_example.sh finished with exit code 0 ==
[INFO] == Executing script /etc/linuxmuster-linuxclient7/onLogin.d/15_Einstellungen.sh ==
[INFO] ==> Script /etc/linuxmuster-linuxclient7/onLogin.d/15_Einstellungen.sh finished with exit code 0 ==
[INFO] == Executing script /etc/linuxmuster-linuxclient7/onLogin.d/20_Verzeichnisse.sh ==
[INFO] ==> Script /etc/linuxmuster-linuxclient7/onLogin.d/20_Verzeichnisse.sh finished with exit code 0 ==
[INFO] == Executing script /etc/linuxmuster-linuxclient7/onLogin.d/30_Monitors.sh ==
[INFO] ==> Script /etc/linuxmuster-linuxclient7/onLogin.d/30_Monitors.sh finished with exit code 0 ==
[INFO] == Executing script /etc/linuxmuster-linuxclient7/onLogin.d/40_Cassy.sh ==
[INFO] ==> Script /etc/linuxmuster-linuxclient7/onLogin.d/40_Cassy.sh finished with exit code 0 ==
[INFO] == Executing script /etc/linuxmuster-linuxclient7/onLogin.d/50_Session.sh ==
[INFO] ==> Script /etc/linuxmuster-linuxclient7/onLogin.d/50_Session.sh finished with exit code 0 ==
[INFO] ===> Finished running local hook onLogin ===
[INFO] === Running remote hook onLogin ===
[ERROR] Error executing LDAP search!
[ERROR] === An exception occurred ===
[ERROR] {'result': -7, 'desc': 'Bad search filter', 'ctrls': []}
[ERROR] === end exception ===
[ERROR] Could not execute server hooks because the user config could not be read
[INFO] ===> Finished running remote hook onLogin ===
[INFO] ======> onLogin end ======

Gruß
Mathias

Hallo zusammen,
ich bin grade dabei, den Debian13-Client neu aufzusetzen. Dabei bin ich so vorgegangen, wie es hier von Thomas vorgeschlagen wurde.
Bisher klappt die Anmeldung, die Shares sind erreichbar und die Drucker werden eingebunden.
Jetzt werde ich Schritt für Schritt die Software installieren und schauen, an welcher Stelle ich beim letzten mal falsch abgeboden bin…
Gruß
Mathias