Anpassung aller Samba-Dokumente als Projekt

ADDC als Bonus
This commit is contained in:
Florian Hensel
2025-12-10 12:41:50 +01:00
parent b28becb7b3
commit f9473a3578
23 changed files with 1190 additions and 376 deletions

View File

@@ -0,0 +1,175 @@
# Geschäfts-Samba-Server: Eingeschränkte Freigaben für Abteilungen
*Anleitung zur Einrichtung von Samba-Freigaben mit granularen Rechten für Hans Wurst (Produktion) und Peter Lustig (Verwaltung)*
## Inhaltsverzeichnis
[TOC]
## 1. Zielbeschreibung
Dieses Projekt zeigt eine saubere, praxisnahe Einrichtung von
* eingeschränkten Freigaben mit Gruppenrechten,
* Homeverzeichnissen,
* einem Netzwerkpapierkorb.
| | Lesen
Angebote | Schreiben
Angebote | Lesen
Lieferscheine | Schreiben
Lieferscheine |
| ------------ | ------------------ | ---------------------- | ----------------------- | --------------------------- |
| Hans Wurst | X | | | X |
| Peter Lustig | | X | | X |
---
## 2. Benutzer und Gruppen anlegen
### 2.1 Benutzer erstellen
```bash
# Benutzer für Produktion und Verwaltung anlegen
sudo adduser hwurst # Hans Wurst (Produktion)
sudo adduser plustig # Peter Lustig (Verwaltung)
```
### 2.2 Gruppen für Rechteverwaltung erstellen
````bash
# Gruppen für Lese-/Schreibrechte
sudo addgroup angebote_l # Leserechte für Angebote
sudo addgroup angebote_ae # Schreibrechte für Angebote
sudo addgroup lieferscheine_l # Leserechte für Lieferscheine (hier nicht genutzt)
sudo addgroup lieferscheine_ae # Schreibrechte für Lieferscheine
````
### 2.3 Benutzer den Gruppen zuweisen
````bash
# Hans Wurst: Darf Angebote lesen und Lieferscheine schreiben
sudo usermod -aG angebote_l hwurst
sudo usermod -aG lieferscheine_ae hwurst
# Peter Lustig: Darf Angebote und Lieferscheine schreiben
sudo usermod -aG angebote_ae plustig
sudo usermod -aG lieferscheine_ae plustig
````
### 2.4 Benutzer in Samba bekannt machen
````bash
# Samba-Passwörter für beide Benutzer setzen
sudo smbpasswd -a hwurst
sudo smbpasswd -a plustig
````
> Passwort im Kurs: "passw0rd#"
## 3. Verzeichnisse erstellen und Rechte setzen
### 3.1 Ordner für Angebote und Lieferscheine anlegen
````bash
sudo mkdir -p /srv/samba/{angebote,lieferscheine}
````
### 3.2 Besitzer und Gruppe setzen
````bash
# Angebote: Besitzer = nobody, Gruppe = angebote_ae (Schreibrechte)
sudo chown -R nobody\:angebote_ae /srv/samba/angebote
# Lieferscheine: Besitzer = nobody, Gruppe = lieferscheine_ae (Schreibrechte)
sudo chown -R nobody\:lieferscheine_ae /srv/samba/lieferscheine
````
### 3.3 Berechtigungen setzen
````bash
sudo chmod -R 0077 /srv/samba/angebote
sudo chmod -R 0077 /srv/samba/lieferscheine
# - 0: Keine Spezialrechte (Sticky Bit/SUID/SGID)
# - 0: Besitzer (nobody) hat keine Rechte (wird durch Samba überschrieben)
# - 7: Gruppe hat Vollzugriff (rwx)
# - 7: Andere haben Vollzugriff (wird durch Samba eingeschränkt)
````
> Hinweis: Die tatsächlichen Rechte werden später durch Samba (````force create mode, valid users````) gesteuert.
## 4. Samba-Freigaben konfigurieren
### 4.1 ````smb.conf```` bearbeiten
````bash
sudo nano /etc/samba/smb.conf
````
### 4.2 Freigaben für Angebote und Lieferscheine
Fügen Sie folgende Abschnitte am Ende der Datei ein:
````ini
[Angebote]
comment = Angebote an Kunden
path = /srv/samba/angebote
guest ok = no
browseable = yes
read only = yes # Standardmäßig schreibgeschützt
valid users = @angebote_l, @angebote_ae # Nur diese Gruppen dürfen zugreifen
write list = @angebote_ae # Nur diese Gruppe darf schreiben
force create mode = 0775 # Neue Dateien: rwxrwxr-x
force directory mode = 0775 # Neue Ordner: rwxrwxr-x
force group = angebote_ae # Neue Dateien gehören dieser Gruppe
[Lieferscheine]
copy = Angebote # Überträgt alle Einstellungen von Angebote, die nicht nachfolgend angepasst werden:
comment = Lieferscheine von Lieferanten
path = /srv/samba/lieferscheine
valid users = @lieferscheine, @lieferscheine_ae # Nur diese Gruppe darf zugreifen
write list = @lieferscheine_ae # Nur diese Gruppe darf schreiben
force group = lieferscheine_ae
````
## 5. Userverzeichnisse (Home-Freigaben)
Jeder Benutzer kann auf sein eigenes Home-Verzeichnis zugreifen.
Aktivieren Sie die [homes]-Freigabe in ````/etc/samba/smb.conf```` (entkommentieren):
````ini
[homes]
comment = Privates Verzeichnis
browseable = no # Nur für den Benutzer selbst sichtbar
read only = no # Benutzer darf schreiben
create mask = 0700 # Neue Dateien: rwx------
directory mask = 0700 # Neue Ordner: rwx------
valid users = %S # %S = Name des aktuellen Benutzers
````
> Hinweis: %S wird automatisch durch den Benutzernamen ersetzt (z. B. hwurst).
## 6. Netzwerkpapierkorb
Gelöschte Dateien auf Netzlaufwerken können mit dem **Samba Recycle Bin Modul** gesichert werden.
### 6.1 Konfiguration in ````smb.conf````
Fügen Sie folgende Optionen global (unter [global]) oder pro Freigabe ein:
````ini
vfs objects = recycle # Virtuelles Dateisystem für Papierkorb
recycle\:repository = .recyclebin # Ordner für gelöschte Dateien
recycle\:keeptree = yes # Pfadstruktur im Papierkorb erhalten
recycle\:versions = yes # Gleichnamige Dateien nicht überschreiben
recycle\:maxsize = 0 # Keine Größenbegrenzung pro Datei
recycle\:touch = yes # Zeitstempel anpassen
````
### 6.2 Automatische Bereinigung mit Cron
Fügen Sie einen [Cron-Job](../basics/Automatisierung%20mit%20cron%20und%20systemd.md) hinzu, um alte Dateien im Papierkorb zu löschen:
````bash
sudo crontab -e
````
Fügen Sie folgende Zeile ein (löscht Dateien älter als 14 Tage):
````bash
0 12 * * * for path in $(grep "path =" /etc/samba/smb.conf | cut -d= -f2 | sed 's/ //g'); do find "${path}/.recyclebin" -mindepth 1 -mtime +14 -exec rm -rf {} \; 2>/dev/null; done
````
Erklärung:
* ````0 12 * * *````: Täglich um 12:00 Uhr.
* ````grep "path ="````: Sucht alle ````path````-Einträge in ````smb.conf````.
* ````find ... -mtime +14````: Löscht Dateien älter als 14 Tage im .recyclebin-Ordner.
## 7 Häufige Fehler und Lösungen
|Problem |Ursache |Lösung |
|------------------------------|-----------------------------------|-------------------------------------------------------------|
|Benutzer kann nicht zugreifen |Falsche Gruppe oder Passwort. |groups [benutzer] prüfen, smbpasswd -a [benutzer] neu setzen.|
|Schreibrechte fehlgeschlagen |Benutzer nicht in write list. |valid users und write list in smb.conf prüfen. |
|Papierkorb funktioniert nicht |vfs objects = recycle fehlt. |In smb.conf für die Freigabe oder global ergänzen. |
|Rechte werden nicht übernommen|force group oder create mask fehlt.|In smb.conf ergänzen und Samba neu starten. |

View File

@@ -1,110 +0,0 @@
Ein Ubuntu Desktop-System lässt sich auch in eine Domäne einbinden.
Falls Sie sich fragen, wozu man Linux an ein Windows-Netzwerk anbinden
soll, ist einfach erklärt: Egal an welchen Computer Sie gehen, sei es
Linux oder Windows, Sie melden Sich mit ihren Benutzerdaten an und
erhalten auch ggf. die Administrationsrechte um Auf dem System Schalten
und Walten zu können, wie sie möchten. Im Augenblick sind Rechtevergaben
nur für Gruppen pro System anzuwenden, somit können Administratoren
Programme Installieren. Wenn Gruppenrichtlinien genutzt werden sollen,
müssen Sie Kostenpflichtige Tools wie Centrify DirectControl oder Ubuntu
Pro nutzen.
## Voraussetzungen prüfen
* Ubuntu ist installiert und einsatzbereit
* Netzwerkverbindung zum AD-Controller funktioniert
* DNS-Auflösung auf die Domäne und den AD-Controller ist sichergestellt
* Systemuhr ist synchron (z.B. via NTP)
* Ein AD-Benutzerkonto mit Join-Rechten ist vorhanden
## System aktualisieren
```bash
sudo apt update
sudo apt upgrade
```
## Notwendige Pakete installieren
```bash
sudo apt install -y realmd sssd sssd-tools adcli samba-common-bin oddjob oddjob-mkhomedir packagekit libnss-sss libpam-sss krb5-user sssd-krb5
```
## Hostname setzen (FQDN)
Passe den Hostnamen an das AD-Schema an (z.B. rechnername.deinedomäne.de):
```bash
sudo hostnamectl set-hostname vbox.tnXX.ito
```
## Kerberos konfigurieren
Bearbeite die Datei ```/etc/krb5.conf``` und passe die Domain an:
```ini
[libdefaults]
udp_preference_limit = 0
default_realm = TNXX.ITO
rdns = false
```
>*Hinweis: Domänenname in Großbuchstaben eintragen*
## Funktionstest: Domäne entdecken
```bash
realm discover tnXX.ito
```
>Ergebnis prüfen: Die Domäne sollte mit Typ „active-directory" angezeigt werden.
## Kerberos-Ticket holen
```bash
kinit deinbenutzername
```
>Passwort eingeben (AD-Benutzer mit Join-Rechten).
## System der Domäne beitreten
```bash
sudo realm join -v -U deinbenutzername TNXX.ITO
```
>Passwort eingeben, wenn abgefragt.
## Home-Verzeichnisse für AD-Benutzer automatisch erstellen
```bash
sudo pam-auth-update
```
„Create home directory on login" aktivieren falls deaktiviert und mit OK
bestätigen.
## Funktionstest: AD-Benutzer auflisten
```bash
id benutzer@TNXX.ITO
```
> Wenn die Benutzerinformationen angezeigt werden, war der Join erfolgreich.
## (Optional) Sudo-Rechte für AD-Gruppen vergeben
Datei anlegen:
```bash
sudo nano /etc/sudoers.d/adadmins
```
Eintragen (Beispiel):
```sudoers
%administratoren@TNXX.ITO ALL=(ALL) NOPASSWD:ALL
```
**Kontrollfragen**
1. Welche Pakete sind für den AD-Join notwendig?
2. Wie prüfen Sie, ob die Domäne erreichbar ist?
3. Wie testen Sie, ob ein AD-Benutzer korrekt erkannt wird?
4. Warum ist die DNS-Konfiguration so wichtig für den AD-Join?
**Hinweis:**\
Bei Fehlern prüfen Sie die Logdateien (/var/log/sssd/, /var/log/auth.log,
/var/log/syslog) und die Netzwerkkonfiguration.
[PDF herunterladen](linux-als-ad-client.pdf){ .md-button }

View File

@@ -240,7 +240,7 @@ sudo crontab -u www-data -e
nun können wir einen neuen Job einfügen:
```
\*/15 \* \* \* \* php -f /var/www/nextcloud/cron.php
*/15 * * * * php -f /var/www/nextcloud/cron.php
```
Wählen Sie nun im Administrations-Bereich von NextCloud bei Cron entsprechend auch cron aus.
@@ -287,5 +287,3 @@ Hier definieren Sie welche Gruppen ihres Servers in NextCloud übernommen werden
In der Benutzerübersicht sollen alle Nutzer mit ihrem Benutzernamen und nicht mit der UUID angezeigt werden. Somit ist es auch für die Nutzer einfacher, sich gegenseitig zu finden.
[PDF herunterladen](nextcloud-ldap.pdf){ .md-button }

View File

@@ -1,508 +0,0 @@
# Installation Ubuntu Server 24.04 LTS
Die Installation des Ubuntu Servers Erfolgt in Virtualbox. Achten Sie
bei der Einrichtung der VM darauf, dass die unbeaufsichtigte
Installation nicht durchgeführt wird, da einzelne Schritte relevant
sind.
Beim Bootvorgang wählen Sie „Try or Install" um das Setup zu starten.
Wählen Sie im nächsten Schritt Deutsch als Installations- und
Systemsprache. Bei Der Wahl der Tastatur setzen Sie ebenfalls auf German
und German.
Die Installationsart sollte Standard sein. Minimal führt dazu, dass
viele „übliche" Programme wie `PING` nicht installiert werden.
Üblicherweise benötigen Sie den unteren teil der Third-Party-Driver
nicht, wenn Sie nicht auf echter Hardware arbeiten. Hier werden dann
RAID-Controller oder WLAN-Karten ergänzt.
Die Netzwerkkonfiguration belassen wir auf DHCP, da später die
Konfigurationsdatei manuell angepasst werden soll. Üblicherweise würde
aber hier eine feste IP für einen Server vergeben werden, wobei darauf
zu achten ist, die Subnetzmaske als CIDR anzuhängen. Proxy bleibt leer.
Nach der Bestätigung der Netzwerkkonfiguration testet der Server
automatisch den schnellsten/nächsten Updateserver.
Die Festplattenpartitionierung kann auf Default belassen werden. Die
Verwendung von LVM ist mittlerweile Standard. LVM steht für Logical
Volume Manager und ist eine Variante Software-RAID um auch nachträglich
Erweiterungen oder Redundanzen hinzuzufügen. Bestätigen Sie ihre Wahl.
Setzen Sie Ihren user-account und ihren Hostname dc1.
Im nächsten Schritt können Sie sich für Ubuntu Pro anmelden, einen
Dienst, welcher ihnen erweiterten Support und Features wie
Kernel-Live-Patches und längeren Support.
Aktivieren Sie auf jeden Fall die Installation des openSSH-Servers.
Unten könnten Sie SSH-Keys aus z.B. github importieren, um sie später
ohne Passwort per SSH auf den Server zu verbinden.
Die nachfolgenden Features sind „snaps" von Ubuntu und sollen im Rahmen
der Meisterausbildung nicht genutzt werden, da diese nicht auf
„Nicht-Ubuntu" Systemen funktionieren. Hierbei handelt es sich um
vorkonfektionierte Programmpakete.
Nun läuft die Installation durch. Am Ende steht nichts im Log, sondern
darunter entsteht ein Button zum Neustarten des Systems.
Denken Sie nach dem Neustart daran, dass Sie innerhalb des etz wieder den Cache-Server verwenden:
```bash
echo 'Acquire::http::Proxy "http://10.10.224.119:3142";' | sudo tee /etc/apt/apt.conf.d/02proxy
```
\newpage
## Ein Linux-Server als Active Directory Domain Controller
Ein Linux-Server der Active Directory beherrscht, ist eine Möglichkeit,
um auf den Einsatz eines MS-Servers zu verzichten. Es existieren ein
paar Einschränkungen aber das Projekt Samba ist im stetigen Wachstum und
entwickelt immer neue Funktionen hinzu. In dieser Arbeitsanweisung
werden Sie einen Samba4 Active Directory Server installieren und im
Anschluss Diesen mit den MS-Remote Server Administration Tools
verwalten. Die Funktionalität dieses Servers enthält: DNS, Kerberos,
Benutzer und Gruppen, Netzlaufwerke und Gruppenrichtlinien.
Vorgaben die in dieser Anleitung genutzt werden.
```conf
DNS-Server:
Name: dc1.tnXX.ito
Server Type: Authoritative.
Forward Lookup Zone: tnXX.ito
Reverse Lookup Zone: 2XX.168.192.in-addr.arpa.
DC-Server
AD DC Hostname: DC1
AD DNS Domain Name: tnXX.ito
Kerberos Realm: tnXX.ito
NT4 Domain Name: tnXX
IP Adresse 192.168.2XX.250
Server Role: Domain Controller
DNS Forwarder: 192.168.2XX.1
DHCP Server
Subnet: 192.168.2XX.0 255.255.255.0
Range: 192.168.2XX.100 192.168.2XX.200
```
\newpage
## Einrichtung der festen IP inklusive DNS-Anpassung
In der aktuellen Version von Ubuntu Server wird bei der
Netzwerkkonfiguration auf netplan gesetzt. Hierbei wird eine .yaml Datei
angelegt, welche in der MAAS-Installation (Cloud-Config) automatisch dem
Rechner zugewiesen würde.
Als erstes legen wir eine neue Datei an:
```shellscript
sudo nano /etc/netplan/01-tnXX-netz.yaml
```
```yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
ethernets:
enp0s3:
addresses: [192.168.2XX.250/24]
routes:
- to: 0.0.0.0/0
via: 192.168.2XX.1
dhcp4: no
nameservers:
addresses: \[192.168.2.XX.250,1.1.1.1\]
search: \[tnXX.ito\]
optional: true
version: 2
```
Die Anpassung des Hostnamen wurde auch kompatibel mit der Cloud-Config
gemacht daher neuer Vorgehensweise:
```shellscript
sudo hostnamectl set-hostname dc1
sudo nano /etc/cloud/cloud.cfg
```
```shellscript
preserve_hostname: true # Erhält den Hostnamen nach dem Neustart
```
Erweitern der Hosts-Datei:
```shellscript
sudo nano /etc/hosts
```
```config
127.0.0.1 localhost
127.0.1.1 dc1.tnXX.ito dc1
```
Einagben Überprüfen:
```shellscript
sudo hostname
sudo nslookup dc1
```
Beides sollte den oberen Eingaben entsprechen.
## Installation der benötigten Komponenten
```bash
sudo apt update
sudo apt install samba samba-dsdb-modules samba-vfs-modules krb5-config winbind libpam-winbind libnss-winbind acl dnsutils chrony isc-dhcp-server krb5-user smbclient
```
Während der Installation werden Sie nach dem Realm für Kerberos gefragt:
```INI
Realm = MKXX.ITO (Alles groß schreiben)
Server = DC1.MKXX.ITO
Administrator Server = DC1.MKXX.ITO
```
## Linux fit für ACL
Um mit Samba auch die vollen Windows ACL und Benutzer-Attribute zu unterstützen müssen diese ebenfalls im ext4 Dateisystem ihres Servers
aktiviert werden.
> Bevor Sie das tun wäre jetzt der Punkt einen Sicherungspunkt der VM zu machen Bei Tippfehlern werfen Sie sich selbst aus dem System.
```bash
sudo nano /etc/fstab
```
```bash
UUID=xxx / ext4 defaults 0 0
```
Wird zu:
```bash
UUID=xxx / ext4 user_xattr,acl,barrier=1,errors=remount-ro,defaults 0 0
```
Speichern und Neustart
## Zeitserver Einrichten
Als Zeitserver verwenden wir den Dienst chrony.
```shellscript
sudo nano /etc/chrony/chrony.conf
```
Am Ende Anhängen:
```config
allow 0.0.0.0/24
```
Dienst neu starten:
```bash
sudo systemctl restart chrony
```
Testen ob der Dienst aktiv ist:
```bash
ss -tulpen:
```
> udp 0 0 0.0.0.0:123 0.0.0.0:\* 0 22432 1180/chronyd
## Samba Installation und Provisionierung
### Samba Installieren
Sichern der Orginalkonfiguration
```bash
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
```
### Provisionierung des Samba4 zu einem Active Directory Domain-Controller mit UNIX-Erweiterung:
```bash
sudo samba-tool domain provision --use-rfc2307 --interactive --dns-backend=SAMBA_INTERNAL
```
Fragen beantworten:
* Realm: TNXX.ITO
* Domain: TNXX
* Server Role: dc
* DNS backend: SAMBA_INTERNAL
* DNS forwarder: 1.1.1.1
* Administrator password: 3 von 4: klein, groß, Zahl Zeichen und mindestens 7 Zeichen lang!!!!!!!!!!!!!! zB. passw0rd#
Fertig.
## Startverhalten von Samba an AD-DC anpassen
```bash
sudo systemctl enable --now samba-ad-dc
```
Samba nur auf den angegeben Netzwerkkarten starten, auf diese Weise gibt es keine Konflikte mit dem internen Nameserver edit in /etc/samba/smb.conf unter global
```bash
bind interfaces only = yes
interfaces = lo enp0s3
```
## Kerberos-Konfiguration von Samba übernehmen
Samba legt bei der Provisionierung eine vorgefertigte Konfigurationsdatei für Kerberos also dem Authentifizierungsdienst, welcher auch eine Synchrone Uhr braucht.
Original sichern:
```bash
sudo mv /etc/krb5.conf /etc/krb5.conf.bak
```
Link erstellen:
```bash
sudo cp -al /var/lib/samba/private/krb5.conf /etc/krb5.conf
```
## Anpassung der Netzwerkverbindung um DNS-Anfragen durch den Internen-DNS zu beantworten
```bash
sudo nano /etc/netplan/01-tnXX-netz.yaml
```
```yaml
...
nameservers:
addresses: [192.168.2XX.250]
search: [tnXX.ito]
...
```
```bash
sudo rm /etc/netplan/50-cloud-init.yaml
sudo netplan apply
```
Internen Resolver übernehmen
```bash
sudo rm /etc/resolv.conf
echo -e \"nameserver 127.0.0.1\\nsearch TNXX.ITO\" \| sudo tee
/etc/resolv.conf
```
## Überprüfen der DNS-Konfiguration
Testen des SRV record für ldap über TCP
```bash
host -t SRV \_ldap.\_tcp.tnXX.ito
```
> _ldap.\_tcp.tnXX.ito has SRV record 0 100 389 dc1.tnXX.ito.
Testen des SRV record für kerberos über UDP
```bash
host -t SRV \_kerberos.\_udp.tnXX.ito
```
> _kerberos.\_udp.mkXX.ito has SRV record 0 100 88 dc1.tnXX.ito.
Und die Namensauflösung des Servers
```bash
host -t A dc1.tnXX.ito
```
>dc1.tnXX.ito has address 127.0.0.1
Wenn hier Alles antwortet funktioniert der DNS
## Kerberos
Samba erzeugt eine passende Konfigurationsdatei für den Kerberos-Dienst
diese verlinken wir anstelle der Original-Datei die uns mitinstalliert
wurde.
```bash
sudo mv /etc/krb5.conf /etc/krb5.conf.orig
sudo cp -al /var/lib/samba/private/krb5.conf /etc/krb5.conf
sudo reboot
```
Login-Versuch mit Anlegung des Maschinenaccounts
```bash
kinit administrator@TNXX.ITO
```
> Es erfolgt eine Ausgabe ihres Passwort-Ablaufdatums
```bash
klist
```
> Das komplette Kerberos Ticket wird angezeigt
```bash
sudo smbclient -L localhost -U 'administrator'
```
> Sie sehen eine auflistung der Servereigenschaften, der Freigaben und der
Serverrolle
```bash
sudo smbclient //localhost/netlogon -U 'administrator'
```
Sie sehen das leere netlogon Verzeichnis des Servers und raus geht es
mit „exit"
## DHCP-Server einrichten
```bash
sudo nano /etc/dhcp/dhcpd.conf
```
suchen sie den auskommentierten Eintrag „authoritative;" und kommentieren Sie ihn ein. Weiter unten finden Sie ein Beispiel:
```conf
# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
# range 10.5.5.26 10.5.5.30;
# option domain-name-servers ns1.internal.example.org;
# option domain-name "internal.example.org";
# option subnet-mask 255.255.255.224;
# option routers 10.5.5.1;
# option broadcast-address 10.5.5.31;
# default-lease-time 600;
# max-lease-time 7200;
#}
```
welches wir anpassen:
```conf
# A slightly different configuration for an internal subnet.
Subnet 192.168.2XX.0 netmask 255.255.255.0 {
range 192.168.2XX.100 192.168.2XX.200;
option domain-name-servers 192.168.2XX.250;
option domain-name "tnXX.ito";
option subnet-mask 255.255.255.0;
option routers 192.168.2XX.1;
option broadcast-address 192.168.2XX.255;
default-lease-time 600;
max-lease-time 7200;
}
```
speichern und den dienst neu starten mit:
```bash
sudo systemctl restart isc-dhcp-server
```
## Benutzer anlegen und Verwalten
Zur Verwaltung der Nutzer der Domäne haben sie (mindestens) 2
Möglichkeiten:
### RSAT
Nutzen Sie einen Windows PC, nehmen diesen in die Domäne auf, und nutzen die Remote Server Administration Tools von Microsoft.
<https://learn.microsoft.com/de-de/troubleshoot/windows-server/system-management-components/remote-server-administration-tools>
Diese werden über Features hinzugefügt. Prüfen Sie welcher
Installationsweg bei ihrer Windows Version passt. ( winver ausführen )
Hiermit können Sie Benutzer, Gruppen und auch Gruppenrichtlinien setzen.
### CLI
Über das samba-tool kann mit sudo-rechten ebenfalls das Management
erfolgen, allerdings Textbasiert:
Nutzer mit Vor und Nachnamen erstellen und ein Passwort vergeben:
```bash
sudo samba-tool user add dieterbecker 'passw0rd#' --given-name=Dieter --surname=Becker
```
Wenn auf das Passwort und die Genauen Namen verzichtet wird, erfolgt
trotzdem ein Passwort Abfrage Dialog.
Das Ganze erweitert um den Profilpfad:
```bash
sudo samba-tool user add dieterbecker 'passw0rd#' --given-name=Dieter --surname=Becker --profile-path='\\tnXX\profiles\dieterbecker'
```
und/oder mit Home-Verzeichnis
```bash
sudo samba-tool user add dieterbecker 'passw0rd#' --given-name=Dieter --surname=Becker --home-drive=U --home-directory='\\tnXX\dieterbecker'
```
Nutzer anzeigen:
```bash
sudo samba-tool user list
```
Nutzer Löschen:
```bash
sudo samba-tool user delete dieterbecker
```
Passwort ändern:
```bash
sudo samba-tool user setpassword dieterbecker
```
Gruppe anlegen:
```bash
sudo samba-tool group add Geschaeftsleitung
```
Gruppe löschen:
```bash
sudo samba-tool group delete Geschaeftsleitung
```
Nutzer oder Gruppe zu Gruppe hinzufügen:
```bash
sudo samba-tool group addmembers \"Geschaeftsleitung\" dieterbecker
```
Nutzer aus Gruppe entfernen:
```bash
sudo samba-tool group removemembers \"Geschaeftsleitung\" dieterbecker
```
Gruppenmitglieder Anzeigen:
```bash
sudo samba-tool group listmembers \"Geschaeftsleitung\"
```
## User auf Ubuntu umsetzen
Damit die Nutzer auch unter Linux verfügbar werden, muss der winbind Dienst wissen, wie die AD-User mit ihren IDs am Server gemappt werden sollen. Daher anpassen der smb.conf:
Unter ```[Global]``` unter den vorhandenen Einträgen ergänzen:
```ini
password server = DC1.TNXX.ITO
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
winbind cache time = 10
winbind use default domain = yes
winbind nss info = rfc2307
```
Zum übernehmen den Dienst neu starten:
```bash
sudo systemctl restart samba-ad-dc
```
User testen:
```bash
getend passwd
```
Gruppen testen:
```bash
getend group
```
> Es sollten Nutzer und Gruppen mit TNXX\ auftauchen. Sollte dem nicht der fall sein, bitte in der Datei ```/etc/nsswitch.conf``` alle Einträge mit ```sss``` durch ```winbind``` ersrtzen und dann nochmals versuchen.
## Freigaben für die Gruppen erstellen
Damit die Nutzer und Gruppen nun auch Laufwerke bekommen müssen die Verzeichnisse erstellt und Freigegeben werden:
```bash
sudo mkdir -p /srv/samba/projekte
```
Admins zugang geben:
```bash
sudo chown root:"TNXX\Domain Admins" /srv/samba/projekte
sudo chmod 0770 /srv/samba/projekte
```
ACL auf Domänenadmins erweitern:
```bash
sudo setfacl -m g:"TNXX\Domain Admins":rwx /srv/samba/projekte
sudo setfacl -d -m g:"TNXX\Domain Admins":rwx /srv/samba/projekte
```
Und damit die Rechte auch setzbar werden:
```bash
sudo samba-tool privilege grant "TNXX\Domain Admins" SeDiskOperatorPrivilege
```
Eintrag in der smb.conf dafür:
```ini
[Projekte]
path = /srv/samba/projekte
read only = no
vfs objects = acl_xattr
map acl inherit = yes
inherit acls = yes
inherit permissions = yes
nt acl support = yes
```
Jetzt kann die Freigabe vom Admin mit den Jeweiligen User-Gruppenrechten
gesetzt werden. Hierfür in einer Windows-Umgebung die Eigenschaften des Netzlaufwerkes anpassen.
[PDF herunterladen](ubuntu-ad-dc.pdf){ .md-button }