Zurück  

File-Server

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.

bild

bild

bild

bild

bild

bild

bild

bild

bild

Netzwerk

Der File-Server ist primär im virtuellen Netz, zusätzlich aber auch im internen. Also müssen wir noch die zweite Karte installieren.

eth1 (neu)

bild

Auto-Start

Der File-Server muss automatisch gestartet werden. Also die entsprechende Option aktivieren.

bild

Grund-Konfiguration

etc/host.OK

Die im CT, nicht die vom Host, also die "/Pool1/subvol-222-disk-1/etc/hosts"

DL
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

Container Starten

Und gleich mit SSH Auf den Container:

DL
ssh root@192.168.99.222 -p55

Samba

DL
apt-get install
 samba

Samba wird nach der Installation automatisch gestartet. Da wir die Config anpassen müssen, nochmals stoppen.

DL
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.

1) Active Directory Domain Controller

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.

DL
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.

DL
service samba stop
samba-tool domain level raise --domain-level 2008_R2 --forest-level 2008_R2

/etc/samba/smb.conf

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.

DL
[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

2) Stand Alone

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.

/etc/samba/smb.conf

Hier fügen wir am Schluss eine neue Freigabe ein:

DL
[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.

DL
[Daten]
  comment = Daten
  path = /var/lib/samba/MOUNT/Data
  read only = no
  browseable = yes
  public = yes
  guest account = nobody

Weiter auf dem Host

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.

DL
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

/etc/pve/lxc/222.conf

Folgende Zeile am Schluss einfügen:

DL
lxc.mount.entry: /Pool1/DATA/222-Samba var/lib/samba/MOUNT none bind 0 0

CT wieder starten

Im Moment brauchen wir keine SSH-Konsole.

Erster Test

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".
Bild

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

Drucker

Mit SSH auf dem CT.

Damit Samba auch als Druck-Server nutzbar ist, muss CUPS installiert werden.

DL
apt-get install
 cups

/etc/samba/smb.conf

Zuerst ersetzen wir den Block, der das Drucken definiert:

DL
...

  printing = cups

[homes]
...

Dann fügen wir am Schluss noch die folgenden Freigaben ein:

DL
[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

/etc/cups/cups.conf

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.

DL
...
# 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:

DL
service cups restart
service samba restart

Jetzt müsste CUPS erreichbar sein unter 192.168.0.222:631.

Und Jetzt?

Die Dokumentation zur Samba-Administration ist im Samba-Wiki zu finden.
Und hier der Link zur Dokumentaton von CUPS.
(beide in Englisch)

Zurück