====== Samba 4 ======
===== Domäne managen =====
* https://wiki.samba.org/index.php/Samba_AD_DC_HOWTO
* http://www.stefanwienert.de/blog/2014/07/02/samba-4-active-directory-controller-with-windows-7-roaming-profiles-plus-linux-login-the-definitive-guide/
==== Befehle ====
^ 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]"'' ([[http://www.linuxtopia.org/online_books/network_administration_guides/samba_reference_guide/18_passdb_15.html|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'' |
==== Fileserver only ====
^ Benutzer anlegen | pdbedit -a -u [Benutzername] |
^ Passwort ändern (als Benutzer) | smbpasswd |
^ Passwort ändern (als Admin) | smbpasswd [Benutzername] |
===== Installation =====
^ Kerberos-Realm | ad.company.org |
^ Kerberos-Auth-Server | cmp-authsrv.ad.company.org |
^ Kerberos-Admin-Server | cmp-authsrv.ad.company.org |
^ Domain | company |
==== Ubuntu ====
apt-get install samba krb5-config libpam-smbpass
# Kerberos-Config, falls sie nicht automatisch auftaucht
dpkg-configure krb5-config
===== Authentifizierung =====
==== Debian-spezifisch ====
(siehe: //Galileo Computing Samba 4//, S.156)
#
# 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 ===
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
==== Winbind ====
# 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.
[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:
[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 |
==== Kerberos ====
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
==== NSSwitch ====
In die /etc/nsswitch.conf **hinzufügen**:
passwd: compat winbind
group: compat winbind
shadow: compat winbind
==== SSSd ====
[[https://fedorahosted.org/sssd/|System Security Services Daemon]], besonders für mobile Rechner interessant, da er Zugangsdaten zwischenspeichert.
==== PAM ====
Homeverzeichnis automatisch erstellen (Überverzeichnis muss angelegt sein, siehe samba-Konfiguration):
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
===== smb.conf =====
[[https://www.samba.org/samba/docs/man/manpages/smb.conf.5.html|offizielle Manpage]]
==== Parameter ====
^ 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 |
===== Netzlaufwerke einbinden =====
==== Linux ====
Für ''mount.cifs'' müssen unter Debian die ''cifs-utils'' installiert werden.
=== CIFS mit einem festen Benutzer ===
//server/share /mnt/server/share cifs credentials=/etc/samba/credentials/server 0 0
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.
==== Windows ====
net use Z: \\server\share
==== Mac OS X ====
[[https://support.apple.com/de-de/HT204445|Anleitung bei Apple]]
===== Troubleshooting =====
=== 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: [[https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/AccessControls.html#id2614965|Samba Manual Chapter 16]], [[https://en.wikipedia.org/w/index.php?title=Setgid|setgid on Wikipedia]]
=== Windows XP can't connect ===
//error may be: Error 1326: Logon failure: unknown user name or bad password//
[global]
lanman auth = yes
ntlm auth = yes