Anpassung aller Samba-Dokumente als Projekt
ADDC als Bonus
This commit is contained in:
@@ -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. |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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 }
|
||||
Binary file not shown.
@@ -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 }
|
||||
|
||||
Binary file not shown.
@@ -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 }
|
||||
Binary file not shown.
Reference in New Issue
Block a user