====== Samba ======
Samba ist ein Dienst der auf einem Linux-System, Freigaben für Windows-PCs bereitstellen kann.
===== Symlinks =====
Wenn man innerhalb einer Ordnerfreigabe einen Link zu einer Datei oder einem anderen Ordner erstellt, dann wird
man diesen nicht sehen. Folgende Einstellungen müssen zunächst in der "global" Sektion der Samba-Konfiguration gesetzt werden.
[global]
...
follow symlinks = yes
wide links = yes
unix extensions = no
===== Samba Benutzer =====
==== Userauthentication ====
Damit Samba lokale Benutzer authentifizieren kann, benötigt es diese Konfiguration.
[global]
...
security = user
...
# Authentication
encrypt passwords = true
guest account = nobody
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
usershare allow guests = yes
Eine mögliche Freigabe könnte dann so aussehen:
[]
comment =
path =
browseable = yes
writeable = yes
read only = no
# guest ok = yes
valid users = user1, user2, user3
force user = user2
force group = sambashare
force directory mode = 0777
force create mode = 0777
''force user'' bedeutet, dass neue Dateien und Ordner den angegebenen Benutzer als Besitzer erhalten.
Der hier verwendete Benutzer ''user2'', muss auch unter ''valid users'' angegeben werden.
==== User anlegen ====
Mit dem Programm ''smbpasswd'' lassen sich Samba Benutzer anlegen.
Beispiel:
smbpasswd -a
==== User Anzeigen / Editieren ====
Mit dem Programm ''pdbedit'' kann man Samba-Benutzer editieren oder auflisten.
Beispiel auflisten:
pdbedit -L
===== Samba und Active Directory =====
In folgendem Text wird beschrieben wie man einen Linux Rechner über ''SSSD'' in eine
Active Directory Domäne als Mitgliedserver einbindet.
Diese Anleitung wurde mit Ubuntu 20.04 erstellt.
Als Hilfe dienten div. Internetseiten wie z.B. [[https://ubuntu.com/server/docs]]
==== Vorbereitungen ====
Abhängigkeiten installieren und konfigurieren:
apt install sssd-ad sssd-tools realmd adcli krb5-user
Bei der Installation wird der default realm für Kerberos abgefragt hier den Domänennamen mit TLD in Großbuchstaben angeben.
* hostname setzen hostnamectl set-hostname .
* eigene DNS-Server einrichten um mit dem AD zu kommunizieren systemd-resolve --set-dns= --interface=
systemd-resolve --set-domain= --interface=
systemd-resolve --status
* Zeitzone und synchronisierte Zeit konfigurieren
* Zeitserver werden in der Datei ''/etc/systemd/timesyncd.conf'' angegeben (siehe [[linux:zeitsynchronisation_mit_dcf-77_empfaenger?s[]=timedatectl#timesyncd|Timesyncd]]) ...
NTP= ...
FallbackNTP=
...
* die Zeitzone wird mit folgendem Befehl konfiguriert timedatectl set-timezone
so listet man verfügbare Zeitzonen auf timedatectl list-timezones
* Kerberos einrichten ''/etc/krb5.conf'' [libdefaults]
default_realm = #IN GROßBUCHSTABEN ANGEBEN
ticket_lifetime = 24h
clock_skew = 300
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
dns_lookup_kdc = yes
dns_lookup_realm = yes
[realms]
#IN GROßBUCHSTABEN ANGEBEN = {
kdc = :88
kdc = :88
admin_server = :464
default_domain = #IN GROßBUCHSTABEN ANGEBEN
}
[domain_realm]
. = #(mit Punkt) in kleinbuchstaben angeben = IN GROßBUCHSTABEN ANGEBEN
= #in kleinbuchstaben angeben = IN GROßBUCHSTABEN ANGEBEN
==== der Domäne beitreten ====
Erreichbarkeit der Domäne prüfen
realm -v discover
Hier wird die Domände per DNS abgefragt.
Der Domäne beitreten kann man danach wie folgt
realm join [-v -U @ #DOMAIN IN GROßBUCHSTABEN ANGEBEN]
Dabei wird die Datei ''/etc/sssd/sssd.conf'' angelegt, welche die konfiguration für sssd für jede einzelne Domäne enthält.
==== DNS-Registrieren ====
Damit im AD DNS-Server der Linux-Host eingetragen wird, folge man der Anleitung unter [[netzwerk:netzwerkkonfiguration#dns_registrieren|DNS-Registrieren]].
==== Authentifizierung testen ====
Man sollte nun die Benutzer und Gruppen des AD auslesen können.
Für Benutzer:
getent passwd @
Für Gruppen:
getent group @
Möchte man, dass für einen AD Benutzer auch automatisch ein lokaler Home-Ordner erstellt wird, muss dies erst aktiviert werden.
pam-auth-update --enable mkhomedir
==== Samba Konfiguration ====
Wenn noch nicht erfolgt, installiert man nun Samba.
apt install samba smbclient cifs-utils
Danach ändert/fügt man folgendes in der Datei ''/etc/samba/smb.conf''
...
workgroup = #IN GROßBUCHSTABEN ANGEBEN
...
security = ads
realm = #IN GROßBUCHSTABEN ANGEBEN
# Default ID mapping configuration for local BUILTIN accounts
idmap config * : backend = tdb
idmap config * : range = 3000-7999
# ID mapping for AD-Domain
idmap config MARIEN-KH-MKH : backend = ad
idmap config MARIEN-KH-MKH : schema-mode = rfc2307
idmap config MARIEN-KH-MKH : range = 10000-999999
Vor dem Neustart des Samba-Daemons noch die Konfig testen und mit ''net'' der Domäne beitreten (auch wenn diese bereits mit ''sssd'' geschehen ist).
testparm -v
net ads join -U @ #IN GROßBUCHSTABEN ANGEBEN
==== PAM konfigurieren ====
PAM (Pluggable Authentication Modules) wird benötigt um Software Zugriffsrechte auf Linuxgruppen zu ermöglichen. Diese Gruppen werden benötigt um z.b. auf Soundkarten oder USB-Sticks u.a. zuzugreifen. Die Domänenbenutzer haben diese Rechte nur wenn PAM ihnen die Gruppen zuweist.
Dies wird nur benötigt, wenn man am Linuxrechner mit einem Domänenbenutzer arbeiten möchte.
So wird PAM eingerichtet.
vi /etc/security/group.conf
Inhalt unten einfügen:
* ; * ; * ; Al0000-2400 ; floppy, audio, cdrom, video, usb, plugdev, users
Nun können die Freigaben im Samba nach belieben und mit Domänenbenutzer/-gruppen eingerichtet werden.