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 "smbpasswd -x root" 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)