Debian Samba

Aus Wiki
Version vom 15. Juni 2011, 20:57 Uhr von Erich (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Allgemein

Für Fileserverdienste wird Samba eingesetzt. Samba stellt Netzwerkfreigaben in einer Windows Arbeitsgruppe bzw. -Domäne zur Verfügung. Im folgenden soll die Sambaeinrichtung für eine kleine Arbeitsgruppe erläutert werden. Für den Einsatz als Domänencontroller sei an dieser Stelle auf andere Anleitungen und Howtos im Internet verwiesen.


Installation

apt-get install samba

Nach dem Donwload startet automatisch ein Script, das folgende Angaben abfrägt:

  • Name der Domäne bzw. Arbeitsgruppe. Hier die gewünschte Windows-Arbeitsgruppe eingeben.
  • WINS via DHCP: No
apt-get install swat


Konfiguration

Samba ist nach der Installation bereits recht ordentlich für den Betrieb als Standalone Server konfiguriert. Deshalb sind hier kaum Änderungen nötig.

vi /etc/samba/smb.conf

Nachdem der Server im Gegensatz zu Desktop-Recvhner vermutlich permanent läuft, macht es Sinn, dass der Server der Master Browser im Netzwerk wird. Dieer hält damit die Liste der aktiven Windows-Netzwerk Rechner vor, sodass nicht jeder einzelne Rechner diese erst zeitaufwändig nach dem Start ermitteln muß. Damit der Server diese Rolle übernimmt, muß der sog. OS-Level möglichst hoch gewählt werden. Im Bereich [global] den folgenden Eintrag einfügen:

os level = 65

Falls kein Printserver auf dem Server installiert ist, empfiehlt es sich, die Suche nach diesem zu unterbinden. Ansonsten erscheint beim Start von Samba ein Fehlereintrag in den Log-Files.

load printers = no

Desweiteren können die beiden Netzwerkfreigaben [printers] und [print$] deaktiviert werden, falls kein Printserver auf dem Sambaserver zum Einsatz kommt. Dies geschieht durch ein #-Zeichen vor jeder Zeile der Freigabedefinition:

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

Etwas mehr Performance kann mit folgendem Eintrag heraus geholt werden:

socket options = TCP_NODELAY


Samba User einrichten

Samba hat eine eigene User- und Passwortverwaltung, die unabhängig von der Linux/Debian Userverwaltung arbeitet. Andererseits besteht aber doch ein Zusammenhang zwischen den Samba- und Unixusern in Form der Dateirechte. Im Folgenden werden die Sambauser angelegt, falls diese noch nicht besten, der Unixgruppe sambashare hinzugefügt und anschließend ein Sambapasswort vergeben.

Linux User anlegen

Dieser Schritt ist nur erforderlich, wenn ein neuer User sambauser angelegt werden, soll, der noch nicht unter Linux existiert. Loginberechtigter User:

adduser --home /home/sambauser --shell /bin/bash --ingroup sambashare sambauser

Der adduser Befehl stellt einige Fragen zum neuen User (z.B. Name, Raumnummer, ...) inclusive Passwort.

Nicht loginberechtigter User

adduser --home /home/sambauser --shell /bin/false --ingroup sambashare --disabled-login sambauser

Der adduser Befehl stellt ebenfalls einige Fragen, es wird aber kein Passwort eingerichtet, das hier auch nicht erforderlich ist.

Bereits existierender User

Um einen bereits existierenden User useralt der Gruppe sambashare hinzuzufügen folgenden Befehl eingeben:

adduser useralt sambashare


Sambauser und Passwort anlegen

Jeder User, der Zugriff auf Sambafreigaben erhalten soll, muß in der Samba Userverwaltung angelegt werden:

smbpasswd -a sambauser

Dieser Befehl fügt den User der Sambadatenbank hinzu und erstellt ein Passwort, das identisch mit dem Linuxpasswort sein sollte, aber nicht sein muss. Für User die ausschliesslich via Samba auf den Server zugreifen sollen, ist nicht einmal ein Linuxpasswort erforderlich.


Netzwerkfreigabe einrichten

Alle Freigabeverzeichnisse (freigabe_dir) werden als Unterverzeichnisse im Verzeichnis /home/shares/ angelegt. Freigabeverzeichnis freigabe_dir anlegen:

mkdir -p /home/shares/freigabe_dir
chgrp sambashare /home/shares/freigabe_dir
chmod 770 /home/shares/freigabe_dir

Verzeichnis im Netzwerk freigeben:

vi /etc/samba/smb.conf

Am Ende Folgenden Abschnitt einfügen, unter dem die Netzwerkfreigabe Freigabe_Name erscheinen soll (Freigabe_Name muss nicht zwingend identisch mit dem Verzeichnis freigabe_dir sein):

[Freigabe_Name]
   writeable = yes
   browseable = yes
   valid users = @sambashare
   force group =:wq sambashare
   create mask = 0660
   force create mode = 0660
   force directory mode = 0770
   path = /home/shares/freigabe_dir

Die Einträge haben folgende Bedeutung:

wirteable = yes
Schreib und Leserechte
browseable = yes
Die Freigabe erscheint in der Netzwerkumgebung unter Windows. Wenn browseable=no gesetzt wird, erschein die Freigabe nicht in der Netzwerkumgebung, ist aber durch Eingabe von \\Server\Freigabename trotzdem unter Windows erreichbar.
valid users
User die Zugriffsrechte erhalten

Durch den Eintrag

valid users = @sambashare

wird erreicht, dass alle User, die der Gruppe sambashare angehören, Zugriff auf die Freigabe erhalten. Das @-Zeichen besagt, dass es sich um eine Gruppe handelt. Mit dem Eintrag

valid users = @sambashare, user1, user2

erhalten alle User der Gruppe sambashare und zusätzlich die User user1 und user2 Zugriff auf die Netzwerkfreigabe.

Es können auch Freigaben erstellt werden, die nur lesbar, aber nicht schreibbar, bzw. nur von ganz bestimmten Usern beschreibbar sind. Dies kann erreicht werden durch:

writeable = no
valid users = @sambashare
write list = user1, user2

Dadurch dürfen sämtliche User der Gruppe sambashare die Freigabe anzeigen, aber nur die User user1 und user2 haben Schreibrechte.


Einschränkung der erlaubten/nicht erlaubten Rechner:

Bisher wurden lediglich Zugriffsrechte anhand von Usernamen beschrieben. Die Zugriffsrechte können aber mittels hosts allow und hosts deny weiter eingschränkt werden. So kann es z.B. erwünscht sein, dass nur User, die sich von einem Rechner im lokalen Netzwerk einloggen wollen, Zugriff zu erteilen. Normalerweise besteht vom Internet durch die Verwendung eines NAT-Routers keinerlei Möglichkeit eines Zugriffs auf eine Netzwerkfreigabe vom Internet. Aufgrund einer versehentlichen Freigabe im Router bzw. Fehlkonfiguration könnten aber dennoch User aus dem Internet Zugriff erhalten. Mittels

hosts allow = 192.168.19.0/255.255.255.0

bzw. gleichwertig (wichtig: der Punkt hinter der dritten Stelle der IP-Adresse):

hosts allow = 192.168.19.

erhalten nur PC's Zugriff auf die jeweilige Netzwerkfreigabe, die sich im IP-Subnetz 192.168.19.1 ... 192.168.19.254 befinden.


Um nur bestimme IP Adressen zuzulassen (hier IP 18 & 20):

host allow=192.168.19.18 ca20


Zusätzlich kann es erwünscht sein, dass sich kein User von einem ganz bestimmten PC (z.B. 192.168.19.56 und 192.168.19.89)im Netzwerk anmelden darf:

hosts deny = 192.168.19.56,192.168.19.89


Bulbgraph.png Hinweis:

Neben den Rechten zum Zugriff auf die Netzerkfreigabe mit Hilfe von valid users bzw. write list, muß auch sichergestellt werden, dass die entsprechenden User auch Zugriffsrechte im Linux Dateisystem auf die Dateien bzw. Ordner besitzen. Damit es zu keinerlei Problemen mit den Linux Dateirechten kommen kann, kann nach dem Anlegen eines Verzeichnisses mit chmod 777 sicher gestellt werden, dass jeder Zugriff hat. Die eigentlichen Zugriffsrechte sollten dann mittels valid users bzw. write list erteilt werden.


Nach dem ändern der Konfigurationsdatei muß Samba neu gestartet werden:

/etc/init.d/samba restart


Samba Weboberfläche

Zusammen mit Samba wurde die Administrations Weboberfläche Swat installiert. Diese ist im Webbrowser unter der Adresse http://IP_Des_Server:901 erreichbar. Eine User/Passwort Abfrage sollte erscheinen. Hier mit User root und root_pwd einloggen. Hier können sämtliche Optionen in einer graphischen Oberfläche vorgenommen werden und Netzwerkfreigaben definiert werden. Zu jedem Parameter steht ein Hilfe zur Verfügung, die den jeweiligen Parameter kurz erklärt.


Mounten einer entfernten Sambafreigabe

Neben der Freigabe von Verzeichnissen via Samba, kann Debian auch Shares von entfrenten Samba Servern oder Windows Dateifreigaben mounten.

apt-get install cifs-utils

Gruppe sambashare anlegen, falls diese noch nicht existiert:

addgroup sambashare

User (z.B. sambamount) Einrichten wie oben (Samba User einrichten) beschrieben

Mount Verzeichnis (mount_dir) anlegen:

mkdir /media/mount_dir

Fstab editieren, damit die Freigabe bei jedem Systemstart automatisch gemounted wird:

vi /etc/fstab

Folgende Zeile einfügen und die Einträge IP_des_Server, Sharename, mount_dir und sambamount mit den jeweils geünschten Einträgen ersetzen:

//IP_des_Server/Sharename /media/mount_dir cifs uid=sambamount,gid=sambashare,iocharset=utf8,credentials=/root/.smbmount,dir_mode=0777,file_mode=0777,rw 0 0

Sambauserdaten:

vi /root/.smbmount

Gültige Samba-Userdaten eintragen:

username=sambamount
password=pwd_sambamount

Userdaten schützen, damit ausschließlich root das File lesen kann:

chmod 600 /root/.smbmount

Mounten der Sambafreigabe:

mount -a