[[..:start|zurück]]
====== Debian Docker-Server Einrichtung – Teil 3 (korrekt): Samba mit echter LDAP-Anbindung ======
=== 🧱 Ziel ===
Ein Samba-Dateiserver in einem Docker-Container, der Benutzer und Gruppen aus dem vorhandenen OpenLDAP-Server nutzt.
=== ♻️ Aufräumen vorheriger Versuche ===
# Alten einfachen Samba-Container stoppen und entfernen
cd ~/docker-server/samba
docker compose down
rm -r ~/docker-server/samba
# Vorhandene samba-ldap-Reste aufräumen
cd ~/docker-server/samba-ldap
docker compose down
cd ~/docker-server
rm -rf samba-ldap
=== 📁 Neues Verzeichnis anlegen ===
mkdir -p ~/docker-server/samba-ldap
cd ~/docker-server/samba-ldap
=== 🛠️ Dockerfile erstellen ===
Datei: Dockerfile
FROM debian:bookworm
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install -y \
samba winbind libnss-ldap libpam-ldap nscd smbclient ldap-utils vim \
&& rm -rf /var/lib/apt/lists/*
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
=== 🔧 Einstiegsskript erstellen ===
Datei: entrypoint.sh
#!/bin/bash
echo 'hosts: files ldap dns' > /etc/nsswitch.conf
echo 'passwd: files ldap' >> /etc/nsswitch.conf
echo 'group: files ldap' >> /etc/nsswitch.conf
echo 'shadow: files ldap' >> /etc/nsswitch.conf
cat < /etc/samba/smb.conf
[global]
workgroup = WORKGROUP
security = user
passdb backend = ldapsam:ldap://ldap-server
ldap admin dn = cn=admin,dc=netz,dc=local
ldap suffix = dc=netz,dc=local
ldap user suffix = ou=people
ldap group suffix = ou=groups
ldap machine suffix = ou=machines
ldap ssl = no
log file = /var/log/samba/log.%m
max log size = 1000
load printers = no
dns proxy = no
[Daten]
path = /srv/share
browsable = yes
writable = yes
guest ok = no
EOF
/etc/init.d/nscd start
/etc/init.d/smbd start
/etc/init.d/nmbd start
tail -f /dev/null
chmod +x entrypoint.sh
=== 🧾 docker-compose.yml erstellen ===
Datei: docker-compose.yml
version: '3.8'
services:
samba-ldap:
build: .
container_name: samba-ldap
networks:
- ldap-net
volumes:
- ./data:/srv/share
ports:
- "139:139"
- "445:445"
networks:
ldap-net:
external: true
=== 📁 Freigabe-Ordner anlegen ===
mkdir data
echo "Testfreigabe über Samba+LDAP" > data/info.txt
=== 🚀 Container bauen und starten ===
docker compose build
docker compose up -d
docker logs samba-ldap
=== 🧪 Test im Container ===
docker exec -it samba-ldap bash
getent passwd
getent group
smbclient //localhost/Daten -U admin
=== ✅ Ergebnis ===
Samba nutzt OpenLDAP als Authentifizierungsquelle. Benutzer und Gruppen werden über LAM verwaltet. Die Freigabe "Daten" ist aktiv und prüft Benutzer gegen LDAP.
=== ▶️ Nächste Schritte ===
* LAM für Samba-Benutzer vorbereiten
* Samba-Schema importieren (falls noch nicht im LDAP)