In dieser Dokumentation gehe ich NICHT darauf ein, wie Samba administriert wird. Insbesondere auch nicht, wie Benutzer angelegt werden können. Es geht hier ausschliesslich darum, einen Samba-Server zu Installieren.
Seit Version 4 ist es genauso einfach einen Active Directory Controller
auzusetzen, wie eine Standard-Installation.
Deshalb setzte ich Samba eigentlich nur noch als ADC auf.
Ein grosser Vorteil des ADC ist die Entkoppelung der Samba- von
den Linux-Benuter-Konten.
Bei Samba 3 - oder der Standard-Installation von Samba 4 - muss für
jedes Samba-Konto zwingend auch ein Linux-Konto angelegt werden.
Dies ist mit Samba 4 als ADC nicht nötig.
Oben Rechts im Proxmox-Frontend auf 'Create CT' klicken um den Container zu erstellen.
Der File-Server ist primär im virtuellen Netz, zusätzlich aber auch im internen. Also müssen wir noch die zweite Karte installieren.
Der File-Server muss automatisch gestartet werden. Also die entsprechende Option aktivieren.
Die im CT, nicht die vom Host, also die "/Pool1/subvol-222-disk-1/etc/hosts"
127.0.0.1 localhost 62.2.169.222 file.local.comasys.ch 192.168.99.222 file.intern.comasys.ch file ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Und gleich mit SSH Auf den Container:
ssh root@192.168.99.222 -p55
apt-get install samba
Samba wird nach der Installation automatisch gestartet. Da wir die Config anpassen müssen, nochmals stoppen.
service samba stop
Ich dokumentiere hier verschiedene Varianten, wobei für alle gilt:
Der Druck-Server ist deaktiviert, der wird später noch installiert.
Die erweiterten Attribute sind eingeschaltet
und es wird eine Freigabe für die Daten definiert.
Bei mir Standard. Erlaubt die Trennung der Samba-Benutzer von den Linux-Benutzern, d.h. ein Samba-Konto braucht kein Linux-Konto.
Die automatisch erstellte "/etc/samba/smb.conf" müssen wir löschen. Beim erstellen der Domain wird automatisch eine neue erstellt.
rm -f /etc/samba/smb.conf samba-tool domain provision --use-rfc2307 --use-xattrs=yes --interactive
Etwas Geduld, die Domäne wird erstellt und diverse Benutzer und Gruppen angelegt.
Samba stoppen und auf Windows 2008R2 aufrüsten.
service samba stop samba-tool domain level raise --domain-level 2008_R2 --forest-level 2008_R2
Wer will darf anschliessend auch CUPS installieren,
hier bleibt ist der Druck-Server erst mal inaktiv,
denn ich habe keine Drucker am Server angeschlossen.
Ich nutzt die erweiterten Attribute, also aktivieren.
Die System-Freigaben sollen nicht sichtbar sein.
Und wir brauchen eine Freigabe für die Daten.
[global] workgroup = SMBDOMAIN realm = SMBDOMAIN.LOCAL.COMASYS.CH netbios name = FILE server role = active directory domain controller dns forwarder = 192.168.0.220 idmap_ldb:use rfc2307 = yes vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes printing = bsd load printers = no printcap name = /dev/null disable spoolss = yes [homes] comment = Home Directories browseable = yes read only = no create mask = 0700 directory mask = 0700 valid users = %S [Daten] comment = Daten path = /var/lib/samba/MOUNT/Data read only = no browseable = yes [netlogon] path = /var/lib/samba/sysvol/smbdomain./scripts read only = No browseable = No [sysvol] path = /var/lib/samba/sysvol read only = No browseable = No
Weiter auf dem Host
Ein Samba-Konto braucht zwingend ein gleichnamiges Linux-Konto. War früher mein Standard, aber mit Samba 4 ist ein AD-DC so einfach aufzusetzen, dass ich keinen Grund sehen, dise Konfiguration zu nutzen.
Hier fügen wir am Schluss eine neue Freigabe ein:
[global] workgroup = SMBDOMAIN server role = standalone server dns proxy = no 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 log file = /var/log/samba/log.%m max log size = 1000 syslog = 0 vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes printing = bsd load printers = no printcap name = /dev/null disable spoolss = yes [homes] comment = Home Directories browseable = yes read only = no create mask = 0700 directory mask = 0700 valid users = %S [Daten] comment = Daten path = /var/lib/samba/MOUNT/Data read only = no browseable = yes
Für root ein Samba-Konto mit Passwort anlegen mit "smbpasswd -a root" - das Konto können wir nach dem Test mit wieder löschen. Selbstverständlich darf auch bereits ein 'richtiger' Benutzer angelegt werden.
Alternativ kann die Freigabe auch so konfiguriert werden, dassjeder vollzugriff hat. Wichtig: Berechtigung im Datenverzeichnis mit "chmod 0777 Data" setzen.
[Daten] comment = Daten path = /var/lib/samba/MOUNT/Data read only = no browseable = yes public = yes guest account = nobody
Weiter auf dem Host
Jetzt den CT runterfahren, weiter geht es auf dem Host.
Die Daten lege ich wieder auf den Host und nutze Bind-Mount für den Container.
Falls ein weiterer Samba-Server als AD Member (Variante 3) mit einer andern ID eingerichtet wurde, unbedingt diese ID "222" in den nächsten Schritten anpassen!
Zuerst ein Verzeichnis im ZFS-Pool erstellen,
die vorhandenen Verzeichnisse verschieben,
im CT ein neues Verzeichnis erstellen
und die Symlinks erstellen.
mkdir -p /Pool1/DATA/222-Samba/Data mv /Pool1/subvol-222-disk-1/var/lib/samba/printers /Pool1/DATA/222-Samba/Printers mv /Pool1/subvol-222-disk-1/var/lib/samba/usershares /Pool1/DATA/222-Samba/UserShares mkdir /Pool1/subvol-222-disk-1/var/lib/samba/MOUNT ln -sf MOUNT/Printers /Pool1/subvol-222-disk-1/var/lib/samba/printers ln -sf MOUNT/UserShares /Pool1/subvol-222-disk-1/var/lib/samba/usershares
Folgende Zeile am Schluss einfügen:
lxc.mount.entry: /Pool1/DATA/222-Samba var/lib/samba/MOUNT none bind 0 0
Im Moment brauchen wir keine SSH-Konsole.
Nach meiner Anleitung habe wir bei der Variante AD-DC nur den Benutzer 'Administrator' oder bei Variante Standard 'root'.
Damit können wir uns für einen ersten Test von einem Windows-Rechner anmelden.
Entweder über den Namen "\\file" oder über die
Adresse "\\192.168.99.222".

Jetzt müsste die Daten-Freigebe und - falls vorhanden - das private Home sichtbar sein

Mit SSH auf dem CT.
Damit Samba auch als Druck-Server nutzbar ist, muss CUPS installiert werden.
apt-get install cups
Zuerst ersetzen wir den Block, der das Drucken definiert:
... printing = cups [homes] ...
Dann fügen wir am Schluss noch die folgenden Freigaben ein:
[printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes guest ok = no read only = yes create mask = 0700 [print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = yes read only = yes guest ok = no
Nicht nur auf "localhost:631", sondern auf allen Interfaces, also "*:631" zuhören. Bei allen Verzeichnissen "Allow 192.168.0.0/16" hinzufügen. Ich poste hier nicht die komplette Datei, bitte anpassen.
... # Only listen for connections from the local machine. #Listen localhost:631 Listen *:631 Listen /var/run/cups/cups.sock ... # Restrict access to the server... <Location /> Order allow,deny Allow 192.168.0.0/16 </Location> # Restrict access to the admin pages... <Location /admin> Order allow,deny Allow 192.168.0.0/16 </Location> # Restrict access to configuration files... <Location /admin/conf> AuthType Default Require user @SYSTEM Order allow,deny Allow 192.168.0.0/16 </Location> ...
Sowohl CUPS als auch SAMBA müssen neu gestartet werden:
service cups restart service samba restart
Jetzt müsste CUPS erreichbar sein unter 192.168.0.222:631.
Die Dokumentation zur Samba-Administration ist
im Samba-Wiki zu finden.
Und hier der Link zur Dokumentaton von CUPS.
(beide in Englisch)