# AD Beitritt Open Suse 16

Hier ist eine **kompakte, kopierfertige Anleitung** für die **Domänenintegration mit Offline-Login** unter **openSUSE Leap 16 / SLE 16**.
Einfach **Schritt für Schritt abarbeiten** – von der Installation bis zum Test der Offline-Anmeldung.

---

### **📋 Anleitung: openSUSE Leap 16 in Active Directory einbinden (mit Offline-Login)**
**Voraussetzungen:**
- Domänenname: `BEISPIEL.DOMAENE.LAN` (ersetzen!)
- Domänen-Admin: `Administrator` (oder anderer Berechtigter)
- Netzwerkverbindung zum Domänencontroller (DC)

---

### **1️⃣ Pakete installieren**
```bash
sudo zypper refresh
sudo zypper install --no-confirm realmd sssd sssd-ad sssd-tools adcli krb5-client oddjob oddjob-mkhomedir pam_krb5 pam_winbind samba-client
```

---

### **2️⃣ Hostname und DNS prüfen**
```bash
# Hostname setzen (muss im AD eindeutig sein)
sudo hostnamectl set-hostname client1.beispiel.domäne.lan

# DNS prüfen (muss den DC auflösen können)
ping dc1.beispiel.domäne.lan
nslookup dc1.beispiel.domäne.lan
```
→ Falls DNS nicht funktioniert:
```bash
sudo vi /etc/resolv.conf
```
Eintrag hinzufügen:
```
nameserver 192.168.1.10  # IP des DC
search beispiel.domäne.lan
```

---

### **3️⃣ Domäne mit `realmd` beitreten**
```bash
# Domäne entdecken (Test)
sudo realm discover BEISPIEL.DOMAENE.LAN

# Domäne beitreten (Passwort des AD-Admins eingeben)
sudo realm join -U Administrator BEISPIEL.DOMAENE.LAN --verbose
```
→ **Erwartete Ausgabe:**
`Successfully enrolled machine in realm`

---

### **4️⃣ SSSD für Offline-Login konfigurieren**
```bash
sudo vi /etc/sssd/sssd.conf
```
**Folgende Zeilen anpassen/ergänzen:**
```ini
[sssd]
domains = BEISPIEL.DOMAENE.LAN
config_file_version = 2
services = nss, pam, sudo, ssh

[domain/BEISPIEL.DOMAENE.LAN]
ad_domain = BEISPIEL.DOMAENE.LAN
krb5_realm = BEISPIEL.DOMAENE.LAN
realmd_tags = manages-system joined-with-adcli
cache_credentials = true          # Offline-Login aktivieren
krb5_store_password_if_offline = true
default_shell = /bin/bash
ldap_id_mapping = true
use_fully_qualified_names = false  # Anmeldung mit "benutzername" statt "benutzername@domäne.lan"
fallback_homedir = /home/%u
access_provider = ad
entry_cache_timeout = 1209600     # Cache-Gültigkeit: 14 Tage (in Sekunden)
account_cache_expiration = 14     # Account-Cache: 14 Tage
```
**Berechtigungen setzen:**
```bash
sudo chmod 600 /etc/sssd/sssd.conf
```

---

### **5️⃣ PAM für Home-Verzeichnis und Offline-Login konfigurieren**
```bash
# Automatische Erstellung von Home-Verzeichnissen aktivieren
sudo pam-config --add --mkhomedir

# PAM-Konfiguration prüfen
sudo vi /etc/pam.d/common-session
```
**Folgende Zeile hinzufügen (falls nicht vorhanden):**
```
session required pam_mkhomedir.so skel=/etc/skel umask=0022
```

---

### **6️⃣ Dienste neu starten**
```bash
sudo systemctl restart sssd
sudo systemctl enable --now oddjobd
```

---

### **7️⃣ Test: Online-Anmeldung (Cache füllen)**
```bash
# Testbenutzer anmelden (ersetze "testuser" mit einem AD-Benutzer)
su - testuser
exit

# Kerberos-Ticket prüfen
klist
```
→ **Erwartet:** Ein gültiges Ticket für `testuser@BEISPIEL.DOMAENE.LAN`.

---

### **8️⃣ Test: Offline-Login**
```bash
# Netzwerk trennen (z. B. Kabel ziehen oder WLAN deaktivieren)
sudo systemctl stop NetworkManager

# Offline-Login testen
su - testuser  # Sollte funktionieren!
id testuser    # Sollte Benutzerdaten anzeigen
klist -l       # Sollte gecachte Tickets zeigen
```

---
### **9️⃣ Fehlersuche (falls nötig)**
| **Problem** | **Befehl zur Diagnose** |
|------------|-------------------------|
| **Anmeldung fehlgeschlagen** | `journalctl -u sssd -f` |
| **Keine Benutzer auflösbar** | `getent passwd testuser` |
| **Kerberos-Fehler** | `kinit testuser` (manueller Test) |
| **DNS-Probleme** | `dig dc1.beispiel.domäne.lan` |

---
### **🔧 Wichtige Dateien & Befehle im Überblick**
| **Zweck** | **Datei/Befehl** |
|-----------|------------------|
| **SSSD-Konfiguration** | `/etc/sssd/sssd.conf` |
| **Kerberos-Einstellungen** | `/etc/krb5.conf` |
| **PAM-Konfiguration** | `/etc/pam.d/common-session` |
| **Cache löschen** | `sudo systemctl stop sssd; sudo rm -f /var/lib/sss/db/cache_*.ldb; sudo systemctl start sssd` |
| **Ticket-Cache prüfen** | `klist -l` |
| **Benutzerdaten prüfen** | `id testuser` |

---
### **✅ Fertig!**
- Der Rechner ist jetzt in der Domäne und unterstützt **Offline-Login**.
- **Wichtig:** Jeder Benutzer muss sich **mindestens einmal online anmelden**, bevor er offline arbeiten kann.

---
### **📌 Optional: Automatische Ticket-Erneuerung konfigurieren**
Falls Kerberos-Tickets zu schnell ablaufen:
```bash
sudo vi /etc/krb5.conf
```
**Folgende Zeilen anpassen:**
```ini
[libdefaults]
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = true
```
Dann **SSSD neu starten**:
```bash
sudo systemctl restart sssd
```

---
**💡 Tipp:** Falls **Smartcards** oder **Zertifikatsauthentifizierung** benötigt werden, muss zusätzlich `pam_pkcs11` oder `sssd` mit `certificate`-Backend konfiguriert werden. Lass es mich wissen, falls du das brauchst!

**Viel Erfolg!** 🚀