1. Index
  2. Debian
  3. Desktop
  4. Heimserver
  5. Webserver

Verzeichnisse freigeben

Samba stellt Dateien und Drucker für Windows- und Linux-Clients zur Verfügung. Der smbd spricht das SMB-Protokoll, authentifiziert Benutzer und bietet Zugriff auf CIFS-Freigaben. Der nmbd unterstützt Namensauflösung und die Suche von Rechnern via WINS. SWAT bietet eine webbasierte Oberfläche für die Konfiguration.

Paket installieren

Das Paket enthält die Daemonen, Werkzeuge, Unit-Dateien und Dokumentation.

apt install samba

Wir legen Verzeichnisse für die freizugebenenden Daten an.

mkdir -p /srv/{public,fotos,music,video}

Bei der Fehlersuche helfen die zugehörigen Protkokolle.

tail -f /var/log/samba/log.[sn]mbd

Verzeichnisse freigeben

Die Konfigurationsdatei kennt vier Arten von Abschnitten:

[global]
Globale Einstellungen des Daemons
[printers]
Schablone für angeschlossene Drucker
[homes]
Schablone für Benutzerverzeichnisse
[Name]
Freigabe für spezifisches Verzeichnis oder Drucker (printable = yes)

Wenn es nur darum geht, ein paar Verzeichnisse und Drucker für das Windows-Netzwerk anzubieten.

/etc/samba/smb.conf
[global] workgroup = Workgroup security = user map to guest = Bad User [public] comment = Uploads path = /srv/public guest ok = yes writeable = yes [fotos] comment = Fotoalbum path = /srv/fotos valid users = @users write list = User [music] comment = Plattensammlung path = /srv/music guest ok = yes write list = User [video] comment = Videothek path = /srv/video guest ok = yes write list = User

Benutzer verwalten

Samba verwaltet Benutzer und Passwörter in einer eigenen Datenbank unter /var/lib/samba/private/, weil Windows andere Streufunktionen verwendet.

Benutzer anlegen (-a), sperren (-d), wieder freigeben (-e) und löschen (-x):

smbpasswd -a User

Alle Benutzer aufzulisten:

pdbedit --list --verbose
Unix username:        User
NT username:
Account Flags:        [U          ]
…

Angemeldete Benutzer und gesperrte Dateien anzeigen:

smbstatus
Samba version 4.2.10-Debian
PID     Username      Group         Machine            Protocol Version
------------------------------------------------------------------------------

Service      pid     machine       Connected at
-------------------------------------------------------

No locked files

Netzlaufwerke einbinden

Im einfachsten Fall greift man per Kommandozeile mit dem Client-Programm zu.

smbclient --user User //Host/Share Password

Freigaben lassen sich manuell montieren.

mkdir -p ~/Dir
mount -t cifs -o username=User,password=Password //Host/Share ~/Dir

Die Zugangsdaten speichern wir in einer geschützten Datei.

/etc/cifs.cred
username=User password=Password

Ein Eintrag in der Dateisystemtabelle montiert die Freigabe automatisch bei Bedarf.

/etc/fstab
# What Where Type Options Dump Pass //Host/Share /home/User/Dir cifs x-systemd.automount,rw,cred=/etc/cifs.cred 0 0

Um die Änderung sofort zu ativieren:

systemctl daemon-reload
systemctl restart remote-fs.target

Referenz

Diese Auflistung soll nur einen Überblick über die verfügbaren Kommandos und Optionen vermitteln und erhebt keinen Anspruch auf Vollständigkeit. Als authoritative Quelle gelten nur die Manpages und die offizielle Dokumentation. Alle Direktiven werden in smb.conf(5) ausführlich beschrieben.

Global Default Beschreibung
abort shutdown script = Skript, um ein laufendes shutdown script abzubrechen
add group script = Skript, um eine Gruppe anzulegen
add machine script = Skript, um einen Benutzer als Maschinenkonto anzulegen
addport command = Skript, um einen Drucker-Port hinzuzufügen
addprinter command = Skript, um einen Drucker anzulegen
add share command = Skript, um ein Verzeichnis anzulegen
add user script = Skript, um einen Benutzer anzulegen
add user to group script = Skript, um einen Benutzer einer Gruppe zuzuordnen
afs token lifetime = 604800 Lebensdauer eines AFS-Tokens, eine Woche in Sekunden
afs username map = Zuordnung von AFS-Benutzern
algorithmic rid base = 1000 Berechnungsgrundlage für RIDs und SIDs
allow dns updates = secure onlyDynamische Updates des eingebauten DNS Servers
allow insecure wide links = no Nur Symlinks innerhalb der Freigabe folgen
allow trusted domains = yes Vertrauenswürdigen Domänen zulassen
async smb echo handler = no Tuning für Plattenzugriffe
auth methods = Entickleroption, Default Abhängig vom security Modell
bind interfaces only = no Nur auf den konfigurierten interfaces lauschen
browse list = yes List der Server an Clients übermitteln
cache directory = /var/locksVerzeichnis für transiente Dateien
change share command = Skript, um Freigaben zu erzeugen
check password script = Disabled Skript, um Passwörter zu knacken
cldap port = 389 UDP-Port des eingebauten Verzeichnisdienstes
client lanman auth = no Schwache Streufunktion nicht verwenden
client ldap sasl wrapping = plain Kommunikation mit dem Verzeichnisdienst nicht verschlüsseln
client min protocol = CORE Kleinste unterstützte Version des SMB Protokolls
client max protocol = SMB3 Höchste unterstützte Version des SMB Protokolls
client NTLMv2 auth = yes Clients wie smbclient authentifizieren sich verschlüsselt
client plaintext auth = no Nicht auf unverschlüsselte Authentifizierung zurückgreifen
client schannel = auto Netlogon Kanal verwenden falls möglich
client signing = auto Anfragen signieren falls möglich
client use spnego principal = no Kerberos Server nicht auf Grund der Adresse kontaktieren
client use spnego = yes Kerberos SPNEGO verwenden
cluster addresses = Adressen für einen WINS-Verbund
clustering = no Keinen Verbund konfigurieren
config backend = file Konfiguration aus Datei beziehen
config file = Pfad der Konfigurationsdatei
create krb5 conf = yes Konfiguration für Kerberos automatisch erzeugen
ctdbd socket = Pfad des Sockels für einen Verbund
ctdb locktime warn threshold = 0 Wartezeit in Millisekunden
ctdb timeout = 0 Wartezeit in Sekunden
cups connection timeout = 30 Wartezeit in Sekunden
cups encrypt = no Kommunikation mit CUPS verschlüsseln
cups server = Name eines bevorzugten Druck-Servers
dcerpc endpoint servers = rpcecho DCE/RPC-Server
deadtime = 0 Tote Verbindungen nicht schließen, sonst Wartezeit in Minuten
debug class = no Klasse nicht anzeigen
debug pid = no Prozessnummer ausgeben
debug uid = no Benutzernummer ausgeben
debug timestamp = yes Zeitstempel ausgeben
debug hires timestamp = yes Genaue Zeitstempel verwenden
debug prefix timestamp = no Zeitstempel in derselben Zeile ausgeben
dedicated keytab file = Pfad zum eigenen Kerberos-Schlüssel
default service = Schablone für generische Freigaben
defer sharing violations = True Gleichzeitige Zugriffe verhindern
deleteprinter command = Skript, um einen Drucker zu enfernen
delete share command = Skript, um eine Freigabe zu entfernen
delete user script = Skript, um einen Benutzer zu löschen
delete user from group script = Skript, um einen Benutzer aus einer Gruppe zu entfernen
delete group script = Skript, um eine Gruppe zu löschen
dgram port = 138 UDP-Port für NetBIOS
disable netbios = no NetBIOS ist aktiv
disable spoolss = no SPOOLSS ist aktiv
dns forwarder = Adresse des Nameservers
dns proxy = yes WINS-Anfragen im DNS nachschlagen
dns update command = /sbin/samba_dnsupdate
domain logons = no Netlogon-Dienst ist inaktiv
domain master = auto Aus, solange der Netlogon-Dienst inaktiv ist
dos charset = Zeichensatz für DOS Clients
enable asu support = no ASU ist inaktiv
enable core files = yes Coredumps erlauben
enable privileges = yes Rechte an SID zuweisen
enable spoolss = yes SPOOLSS ist aktiv
encrypt passwords = yes Passwörter verschlüsseln
enhanced browsing = yes Subnetze überwinden
enumports command = Skript, um Drucker-Ports für aufzulisten
eventlog list = Namen für den EventViewer
get quota command = Skript, um Quotas zu ermitteln
getwd cache = yes Tuning für Verzeichniszugriffe
guest account = nobody Benutzername für Zugriffe als Gast
homedir map = NIS-Benutzerverzeichnisse
host msdfs = yes DFS-Server starten
hostname lookups = no Adressen nicht zu Hostnamen auflösen
idmap backend = tdb Speicher für Benutzerdaten
idmap gid = Intervall von Gruppen-Nummern
idmap uid = Intervall von Benutzer-Nummern
idmap config:OPTION= Abbildung von RIDs und SIDs
idmap cache time = 604800 1 Woche Vorhaltezeit für erfolgreiche Anfragen
idmap negative cache time = 120 2 Minuten Vorhaltezeit für fehlerhafte Anfragen
include = Konfigurationsdatei einbinden
init logon delayed hosts = Liste von Rechnern
init logon delay = 100 Verzögerung in Millisekunden
interfaces = Auf allen Netzwerk-Schnittstellen lauschen
iprint server = Server für das IPRINT Drucksystem
keepalive = 300 Alle 5 Minuten SMB1-Verbindungen aufrecht erhalten
kerberos method = secrets onlyMethode, um Kerberos-Schlüssel zu verifizieren
kpasswd port = 464 TCP-Port für Änderungen des Kerberos-Passworts
krb5 port = 88 TCP-Port des KDC-Servers
lanman auth = no Unsichere LANMAN-Streufunktion nicht erlauben
large readwrite = yes 64 Kilobyte Streaming unterstützen
ldap admin dn = DN für Änderungen, z.B. cn=admin,...
Passwort in private/secrets.tdb
ldap delete dn = no DN für Löschungen
ldap connection timeout = 2 Maximal 2 Sekunden lang warten
ldap debug level = 0 Nichts protokollieren
ldap debug threshold = 10
ldap deref = auto Methode um Aliase zu dereferenzieren
ldap follow referral = auto Querverweisen folgen
ldap suffix = Basis für Suchanfragen, z.B. dc=example,dc=org
ldap user suffix = Suffix für Benutzer, z.B. ou=People
ldap group suffix = Suffix für Gruppen, z.B. ou=Groups
ldap idmap suffix = Suffix für Mapping, z.B. ou=Idmap
ldap machine suffix = Suffix für Rechner, z.B. ou=Computers
ldap page size = 1024 Maximalgröße in Oktetten für seitenbasierte Antworten
ldap passwd sync = no Passwörter nicht im Verzeichnis ändern
ldap replication sleep = 1000 Wartezeit in Millisekunden vor dem senden
ldap ssl ads = no TLS verwenden, um auf AD zuzugreifen
ldap ssl = start tls TLS mit STARTTLS initiieren
ldap timeout = 15 Wartezeit in Sekunden für Anfragen
ldapsam:editposix = no Benutzerdaten nicht direkt ins Verzeichnis schreiben
ldapsam:trusted = no Gruppeninformationen nicht ausschließlich im Verzeichnis erwarten
lm announce = auto Lanman Rundruf nur nach Empfang der selben senden
lm interval = 60 1 Minute zwischen Rundrufen
load printers = yes Alle Drucker aus /etc/printcap laden
local master = yes Master im eigenen Subnetz werden
lock directory = /var/locksVerzeichnis für Sperr-Dateien
lock spin time = 200 Wartezeit an Sperren in Millisekunden
log file = Pfad der Protokolldatei
log level = 0 Nur Fehler in allen Klassen protokollieren
log nt token command = Skript für Entwicklungszwecke
logon drive = Laufwerksbuchstabe für Windows Benutzerverzeichnisse
logon home = \\%N\%U Pfad für Benutzerverzeichnisse
logon path = \\%N\%U\profilePfad für Benutzerprofile
logon script = Pfad einer beim Anmelden auszuführenden Batch Datei
log writeable files on exit = no Potentiell korrupte Dateien nicht protokollieren
lpq cache time = 30 ½ Minute Vorhaltezeit für Abfragen der Drucker-Queue
machine password timeout = 604800 1 Woche Vorhaltezeit für das Passwort des Maschinenkontos
mangling method = hash2 Algorithmus um Dateinamen zu verstümmeln
mangle prefix = 1 Anzahl der verstümmelten Zeichen
map to guest = Never
map untrusted to domain = no
max disk size = 0
max log size = 5000 Maximalgröße in Kilobyte
max mux = 50
max open files = 16404
max smbd processes = 0
max stat cache size = 256 Kilobyte
max ttl = 259200
max wins ttl = 518400
max xmit = 16644
message command =
min receivefile size = 0
min wins ttl = 21600
multicast dns register = yes
name cache timeout = 660 11 Minuten Vorhaltezeit
name resolve order = lmhosts wins host bcast
nbt client socket address= 0.0.0.0
nbt port = 137
ncalrpc dir = /var/ncalrpc
netbios aliases =
netbios name = HostHostname des Rechners
netbios scope =
NIS homedir = no
nmbd bind explicit broadcast = yes
nsupdate command = /sbin/nsupdate -g
ntlm auth = yes
nt pipe support = yes
ntp signd socket directory = /run/samba/ntp_signd
nt status support = yes
null passwords = no
obey pam restrictions = no
oplock break wait time = 0
os2 driver map =
os level = 20
pam password change = no
panic action =
passdb backend = tdbsam
passdb expand explicit = no
passwd chat debug = no
passwd chat = *new*password* %n\n*new*password* %n\n *changed*
passwd chat timeout = 2
passwd program =
password level = 0 Groß-/Kleinschreibung rekombinieren
password server = *
perfcount module =
pid directory = /var/locks Verzeichnis für PID-Dateien
preferred master = auto
preload =
preload modules =
printcap cache time = 750 12½ Minuten Vorhaltezeit
printcap name = /etc/printcap
private dir = /private
read raw = yes
realm = Name des Kerberos Servers
registry shares = no
remote announce =
remote browse sync =
rename user script =
reset on zero vc = no
restrict anonymous = 0
rndc command = /usr/sbin/rndc
root directory = /
rpc big endian = False
rpc_daemon:DAEMON = disabled
rpc_server:SERVER= embedded
samba kcc command = /sbin/samba_kcc
security = USER
server max protocol = SMB3 Version des SMB Protokolls
server min protocol = LANMAN1
server role = AUTO
server schannel = auto
server services = s3fs
server signing = Disabled
server string = Samba %v
set primary group script =
set quota command =
share backend = classic
share:fake_fscaps = 0
show add printer wizard = yes
shutdown script =
smb2 max credits = 8192
smb2 max read = 1048576
smb2 max trans = 1048576
smb2 max write = 1048576
smb passwd file = /private/smbpasswd
smb ports = 445 139
socket options = TCP_NODELAY
spn update command = /sbin/samba_spnupdate
stat cache = yes
state directory = /var/locksVerzeichnis für Zustands-Dateien
svcctl list =
syslog = 1 Nur Fehler (0) und Warnungen (1) im Syslog protokollieren
syslog only = no
template homedir = /home/%D/%U
template shell =
time server = no
tls cafile =
tls certfile =
tls crlfile =
tls dh params file =
tls enabled = yes
tls keyfile =
unicode = True
unix charset = UTF8
unix extensions = yes
unix password sync = no
use mmap = yes
username level = 0
username map =
username map cache time = 0 Keine Vorhaltezeit
username map script =
usershare allow guests = no
usershare max shares = 0
usershare owner only = True
usershare path = STATEDIR/usershare
usershare prefix allow list = NULL
usershare prefix deny list = NULL
usershare template share = NULL
use spnego = yes Kerberos SPNEGO verwenden
utmp directory =
utmp = no
web port = 901
winbind cache time = 300 5 Minuten Vorhaltezeit
winbindd privileged socket
directory
= /lib/winbindd_privileged
winbindd socket directory = /run/samba/winbindd
winbind enum groups = no
winbind enum users = no
winbind expand groups = 1
winbind max clients = 200
winbind max domain connections = 1
winbind nested groups = yes
winbind normalize names = no
winbind nss info = template
winbind offline logon = false
winbind reconnect delay = 30
winbind refresh tickets = false
winbind rpc only = no
winbind sealed pipes = yes
winbind separator = '\'
winbind trusted domains only= no Verwende idmap_nss
winbind use default domain = no
wins hook =
wins proxy = no
wins server = Adresse des WINS servers
wins support = no Maximal ein Server darf WINS anbieten
workgroup = WORKGROUP Name der Arbeitsgruppe
write raw = yes
wtmp directory =
Share Default Beschreibung
access based share enum = no
acl check permissions = True Zugriffsrechte beim Löschen beachten
acl group control = no Ändern von Zugriffsrechte nicht erlauben
acl map full control = True
administrative share = no
admin users =
afs share = no
aio read size = 0
aio write behind =
aio write size = 0
allocation roundup size = 1048576
available = yes
blocking locks = yes
block size = 1024
browseable = yes
case sensitive = auto Ja für Linux-Clients, Nein für Windows-Clients
change notify = yes
comment =
copy =
create mask = 0744
csc policy = manual
cups options =
default case = lower Neue Dateinamen klein schreiben
default devmode = yes
delete readonly = no
delete veto files = no
dfree cache time = 60 1 Minute Vorhaltezeit
dfree command =
directory mask = 0755
directory name cache size = 100
directory security mask =
dmapi support = no
dont descend =
dos filemode = no
dos filetime resolution = no
dos filetimes = yes
durable handles = yes
ea support = no
fake directory create times = no
fake oplocks = no
follow symlinks = yes
force create mode = 000
force directory mode = 000
force directory security mode =
force group =
force printername = no
force security mode =
force unknown acl user = no
force user =
fstype = NTFS
guest ok = no
guest only = no
hide dot files = yes Punkt-Dateien verbergen
hide files = Sonst keine verborgenen Dateien
hide special files = no Spezialdateien nicht verbergen
hide unreadable = no Nicht-lesbare Dateien nicht verbergen
hide unwriteable files = no Nicht-schreibbare Datien nicht verbergen
hosts allow = Keine explizit erlaubten Rechner
hosts deny = Keine ausgeschlossenen Rechner
inherit acls = no
inherit owner = no
inherit permissions = no
invalid users = Keine ausgeschlossenen Benutzer
kernel change notify = yes
kernel oplocks = no
kernel share modes = yes
level2 oplocks = yes
locking =
lppause command = #
lpq command =
lpresume command =
lprm command =
magic output = Name.out
magic script =
mangled names = yes
mangling char = ~
map acl inherit = no
map archive = yes
map hidden =
map readonly = yes
map system = no
max connections = 0
max print jobs = 1000
max reported print jobs = 0
min print space = 0
msdfs proxy =
msdfs root = no
nt acl support = yes
ntvfs handler = unixuid default
only user = no Verwende valid users
oplock contention limit = 2
oplocks = yes
path =
posix locking = yes
postexec =
preexec =
preexec close = no
preserve case = yes Kleinschreibung beibehalten
printable = no
print command =
printer name = lp
printing = CUPS
printjob username = %U
print notify backchannel = yes
profile acls = no
queuepause command =
queueresume command =
read list =
read only = yes
root postexec =
root preexec =
root preexec close = no
security mask =
set directory = no
short preserve case = yes Kleinschreibung auch für Dateinamen bis 8 Zeichen beibehalten
smb encrypt = auto
store dos attributes = no
strict allocate = no
strict locking = Auto
strict sync = no
sync always = no
use client driver = no
username = Verwende valid users
use sendfile = false
valid users =
-valid = yes
veto files =
veto oplock files =
vfs objects =
volume = Name der Freigabe
wide links = no
writeable = no Schreibzugriff invertiert read only
write cache size = 0
write list = Benutzer und Gruppen mit Schreibrechten
Methode Beschreibung
Never
Bad User
Bad Password
Bad Uid
Methode Beschreibung
guest Anonymen Zugriff erlauben
sam Namen lokal auflösen
winbind Authentifizierung an Winbind delegieren
ntdomain Veraltet: Delegation an NT Domäne.
trustdomain Veraltet: Delegation an Domain Controller
Protokoll Beschreibung
CORE Urversion
COREPLUS Kleine Verbesserungen
LANMAN1 Lange Dateinamen
LANMAN2 Kleine Verbesserungen
NT1 = CIFSWindows NT
SMB2 Windows Vista
SMB3 Windows 8
Rolle Beschreibung
AUTO
STANDALONE
MEMBER SERVER
CLASSIC PRIMARY DOMAIN CONTROLLER
NETBIOS BACKUP DOMAIN CONTROLLER
ACTIVE DIRECTORY DOMAIN CONTROLLER
Server Beschreibung
epmapper Endpoint Mapper
winreg Remote Registry Service
srvsvc Remote Server Services
lsarpc Local Security Authority
samr Security Account Management
netlogon Netlogon Remote Protocol
netdfs Settings for Distributed File System
dssetup Active Directory Setup
wkssvc Workstation Services
spoolss Network Printing Spooler
svcctl Service Control
ntsvcs Plug and Play Services
eventlog Event Logger
initshutdown Init Shutdown Service
Service Beschreibung
s3fs SMB3 Fileserver
rpc Remote Procedure Calls
nbt NetBIOS over TCP"/IP
wrepl WINS Read-Eval-Print-Loop
ldap Verzeichnisdienst
cldap Verzeichnisdienst via UDP
kdc Kerberos Key Distribution Center
drepl Replikationsdienst
winbind Brücke zum Active Directory
ntp_signd Zeitsynchronisation
kcc Knowledge Consistency Checker
dnsupdate Domain Name Update Service
dns Domain Name System
Backend Beschreibung
file Datei /etc/samba/smb.conf
registry Registrierungs-Datenbank
Service Beschreibung
BSD
AIX qprt
LPRNG Line Printing – Next Generation
PLP
SYSV System V
HPUX
QNX
SOFTQ
CUPS Apple Druckverwaltung
IPRINT
Datenbank Beschreibung
tdb Trivial Database
tdb2 Trivial Database 2
ldap Verzeichnis
hash Streufunktion
rid Deterministischer Algorithmus
autorid Deterministischer Algorithmus mit Vorgabewerten
ad Active Directory
nss
Option Beschreibung
backend Name des Plugins
range Nummernbereich
read-only
Prüfmethode Beschreibung
secrets only Nur über secrets.tdb
system keytab Systemweiter Schlüssel
dedicated keytab Eigener Schlüssel
secrets and keytab Beides

Literatur

  1. Robert Eckstein, David Collier-Brown, Peter Kelly: Using Samba, O'Reilly
  2. Dieter Bocklandt: Setting up a fileserver with Samba, OpenLDAP and Kerberos (2010)
  3. Debian Wiki: Building A Linux Domain
  4. Ubuntu Wiki: Samba/Kerberos