====== 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.