de:admin:linux:samba

Samba 4

AD beitreten net ads join -UAdministrator
Beitritt ohne AD net rpc join WORKGROUP -UAdministrator
Beitritt überprüfen net rpc testjoin
Domäne provisionieren samba-tool domain provision
Domain-Level anheben samba-tool domain level raise –domain-level 2008_R2 –forest-level 2008_R2

Benutzer und Passwörter

Benutzer anlegen samba-tool user add [Benutzername]
Benutzer deaktivieren samba-tool user disable [Benutzername]
Benutzer anzeigen pdbedit -v -u [Benutzername]
Passwort ändern samba-tool user setpassword [Benutzername]
Kickoff time pdbedit -u [Benutzername] -K never
Logon-Script pdbedit -u [Benutzername] -S script (ohne Dateinamenerweiterung)
Konto nie ablaufen lassen pdbedit -u [Benutzername] -c "[X]" (src)
Passwortrichtlinie anzeigen samba-tool domain passwordsettings show
Passwortrichtlinie ändern samba-tool domain passwordsettings set –help
Passwortrichtlinie lockern samba-tool domain passwordsettings set –complexity=off –min-pwd-length=11 –min-pwd-age=0
Benutzer anlegen pdbedit -a -u [Benutzername]
Passwort ändern (als Benutzer) smbpasswd
Passwort ändern (als Admin) smbpasswd [Benutzername]
Kerberos-Realm ad.company.org
Kerberos-Auth-Server cmp-authsrv.ad.company.org
Kerberos-Admin-Server cmp-authsrv.ad.company.org
Domain company
apt-get install samba krb5-config libpam-smbpass
# Kerberos-Config, falls sie nicht automatisch auftaucht
dpkg-configure krb5-config

(siehe: Galileo Computing Samba 4, S.156)

/etc/apt/sources.list.d/samba.list
#
# SerNet Samba 4.1 Packages
#
# (debian-wheezy)
#
deb https://user:password@download.sernet.de/packages/samba/4.1/debian wheezy main
deb-src https://user:password@download.sernet.de/packages/samba/4.1/debian wheezy main

Zuerst muss das Paket apt-transport-https installiert werden, damit Sernet-Samba zu den Paketquellen hinzugefügt werden kann. Auch muss der Authentifizierungs-Server in der hosts eingetragen sein, damit die Authentifizierung nicht ewig dauert.

Installation der Pakete

wget http://ftp.sernet.de/pub/sernet-samba-keyring_1.4_all.deb
dpkg -i sernet-samba-keyring_1.4_all.deb
apt-get install apt-transport-https
apt-get update
apt-get install sernet-samba-winbind sernet-samba libpam-heimdal

Startmodus für Samba anpassen

/etc/default/sernet-samba
SAMBA_START_MODE="classic"
SAMBA_RESTART_ON_UPDATE="no"
NMBD_EXTRA_OPTS=""
WINBINDD_EXTRA_OPTS=""
SMBD_EXTRA_OPTS=""
SAMBA_EXTRA_OPTS=""
SAMBA_IGNORE_NSUPDATE_G="no"

Winbind starten

service sernet-samba-winbindd start
/etc/hosts
# Domain server
192.168.1.10	domain-server domain-server.domain.lan

Die krb5.conf muss dieselbe sein, die auch auf dem Domänencontroller angelegt ist.

/etc/krb5.conf
[libdefaults]
	# DON'T USE .LOCAL FOR THE DOMAIN; IT'S "RESERVED" BY mDNS/Avahi/Bonjour!
	default_realm = DOMAIN.LAN
	dns_lookup_realm = false
	dns_lookup_kdc = true

[realms]
	DOMAIN.LAN = {
		kdc = domain-server
	}

Samba für den Client konfigurieren:

/etc/samba/smb.conf
[global]
	workgroup = DOMAIN
	realm = DOMAIN.LAN
	security = ADS

        ### winbind settings
        # separate domain and username with '.', like DOMAIN.username
        winbind separator = .

	idmap config * : range = 10000 - 20000
	idmap config DOMAIN : backend = rid
	idmap config DOMAIN : range = 10000 - 20000

        # allow enumeration of winbind users and groups
        winbind enum users = yes
        winbind enum groups = yes

	winbind use default domain = yes
	winbind refresh tickets = yes

        # give winbind users a real shell (only needed if they have telnet access)
        template homedir = /home/domain.lan/%u
        template shell = /bin/bash

Zur Authentifizierung sollte noch entweder NSSwitch oder SSSd richtig konfiguriert sein.

Kommandos:

User anzeigen wbinfo -u
Gruppen anzeigen wbinfo -g
Cache leeren net cache flush

Die Zeit vom Client muss mit der des Servers übereinstimmen, deswegen sollte NTP konfiguriert sein.

apt-get install heimdal-clients

Ticket anfordern:

kinit Administrator
klist

In die /etc/nsswitch.conf hinzufügen:

/etc/nsswitch.conf
passwd:  compat winbind
group:   compat winbind
shadow:  compat winbind

System Security Services Daemon, besonders für mobile Rechner interessant, da er Zugangsdaten zwischenspeichert.

Homeverzeichnis automatisch erstellen (Überverzeichnis muss angelegt sein, siehe samba-Konfiguration):

/etc/pam.d/common-session
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
Parameter = Standardwert Beschreibung
create mask = 0744 UNIX mode is bit-wise 'AND'ed with this parameter. Any bit not set here will be removed from the modes set on a file when it is created.
Default value: g-wx, o-wx.
→ maximum permissions possible for new files
force create mode = 000 Samba will bit-wise 'OR' the UNIX mode created from *create mask* with the value of this parameter.
→ minimum permissions
min protocol = SMB1 Protokollversion, SMB2 empfohlen wg. WannaCry

Für mount.cifs müssen unter Debian die cifs-utils installiert werden.

CIFS mit einem festen Benutzer

/etc/fstab
//server/share  /mnt/server/share  cifs  credentials=/etc/samba/credentials/server  0 0
/etc/samba/credentials/server
username=[Benutzername]
password=[Passwort]

Wichtig: chmod 600 auf credentials-Dateien!

Einbinden mit pam_mount

Installation von libpam-mount, danach Konfiguration über /etc/security/pam_mount.conf.xml. Kerberos und/oder Samba müssen je nach Authentifizierungsmethode konfiguriert sein.

/etc/security/pam_mount.conf.xml
<volume
fstype="cifs"
server="domain-server"
path="share"
mountpoint="/home/domain.lan/%(DOMAIN_USER)/Share"
options="sec=ntlmv2,workgroup=DOMAIN" />
net use Z: \\server\share

users can't write to public share

$ find 'directory_name' -type d -exec chown user:group {}\;
$ find 'directory_name' -type d -exec chmod 2775 {}\;
$ find 'directory_name' -type f -exec chmod 0775 {}\;
$ find 'directory_name' -type f -exec chown user:group {}\;
$ chmod 2775 /foodbar
$ ls -al /foodbar/..

Further reading: Samba Manual Chapter 16, setgid on Wikipedia

Windows XP can't connect

error may be: Error 1326: Logon failure: unknown user name or bad password

/etc/samba/smb.conf
[global]
  lanman auth = yes
  ntlm auth = yes
  • Zuletzt geändert: 2019-12-20 14:21