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:
[<FREIGABENAME>] comment = <BESCHREIBUNG> path = <OFAD_ZU_VERZEICHNIS> 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_NAME>
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 <HOSTNAME>.<DOMAINNAME.TLD>
- eigene DNS-Server einrichten um mit dem AD zu kommunizieren
systemd-resolve --set-dns=<DNS_SERVER> <DNS_SERVER> --interface=<INTERFACE> systemd-resolve --set-domain=<SEARCH_DOMAIN_NAME> --interface=<INTERFACE> systemd-resolve --status
- Zeitzone und synchronisierte Zeit konfigurieren
- Zeitserver werden in der Datei
/etc/systemd/timesyncd.conf
angegeben (siehe Timesyncd)... NTP=<ERVER1> <SERVER2> ... FallbackNTP=<SERVER1> ...
- die Zeitzone wird mit folgendem Befehl konfiguriert
timedatectl set-timezone <ZEITZONE>
so listet man verfügbare Zeitzonen auf
timedatectl list-timezones
- Kerberos einrichten
/etc/krb5.conf
[libdefaults] default_realm = <DOMAINNAME.TLD> #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] <DOMAINNAME.TLD> #IN GROßBUCHSTABEN ANGEBEN = { kdc = <FQDN_DES_DOMAINCONTROLLERS>:88 kdc = <FQDN_DES_DOMAINCONTROLLERS2>:88 admin_server = <FQDN_DES_DOMAINCONTROLLERS>:464 default_domain = <DOMAINNAME.TLD> #IN GROßBUCHSTABEN ANGEBEN } [domain_realm] .<DOMAINNAME.TLD> = <DOMAINNAME.TLD> #(mit Punkt) in kleinbuchstaben angeben = IN GROßBUCHSTABEN ANGEBEN <DOMAINNAME.TLD> = <DOMAINNAME.TLD> #in kleinbuchstaben angeben = IN GROßBUCHSTABEN ANGEBEN
der Domäne beitreten
Erreichbarkeit der Domäne prüfen
realm -v discover <DOMAINNAME.TLD>
Hier wird die Domände per DNS abgefragt.
Der Domäne beitreten kann man danach wie folgt
realm join [-v -U <USERNAME>@<DOMAINNAME.TLD> #DOMAIN IN GROßBUCHSTABEN ANGEBEN] <DOMAINNAME.TLD>
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 DNS-Registrieren.
Authentifizierung testen
Man sollte nun die Benutzer und Gruppen des AD auslesen können.
Für Benutzer:
getent passwd <USERNAME>@<DOMAIN.TLD>
Für Gruppen:
getent group <GROUPNAME>@<DOMAIN.TLD>
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 = <DOMAINNAME> #IN GROßBUCHSTABEN ANGEBEN ... security = ads realm = <DOMAINNAME.TLD> #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 <USERNAME>@<DOMAINNAME.TLD> #IN GROßBUCHSTABEN ANGEBEN <DOMAINNAME.TLD>
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.