Anleitung Installation Samba Server als Dateiserver unter Debian Linux

Dies ist mein Weg zu einem Debian Samba Server unter Etch oder Lenny.

Eine Anleitung für einen Linux Dateiserver oder Neudeutsch Fileserver war schon lange fällig, aber Swat und ich sind uns nicht grün und eine Samba-Anleitung ohne Swat schien mir zu komplex für ein Linux Howto. Egal, dann halt ohne Swat!

Samba Dateiserver – Mein Auftrag

In den letzten zwei Wochen hatte ich das Vergnügen zwei Linux Fileserver, einen unter Debian Etch und den anderen unter Debian Lenny, einzurichten. Ich dokumentiere hier (teilweise) mein Vorgehen. Das Netzwerk-Umfeld sah so aus:

  • Samba Dateiserver
    • Zugang über Nutzerkonten
    • Zugriff auf Home-Verzeichnis und Gruppenverzeichnis
    • Dateiserver soll sicher die Profile der Nutzer trennen und einzelne Samba-Nutzer sollen Zugriff auf einen, zwei oder drei Gruppenordner haben.
    • Ldap-Authentifizierung (active directoy) ist nicht notwendig
    • Domain-Controller ist nicht notwendig, weil das Samba Join nur zu Problemen führen würde (Nutzer)
    • Möglichkeit der Konfiguration per Webinterface SWAT ist nicht notwendig, aber einfache Benutzerverwaltung, d.h. hinzufügen, löschen und ändern von Samba-Nutzern, ist zwingend.
    • Ein Samba Printserver auf dem Debian Lenny ist für die Zukunft geplant.
    • Der Zugriff auf den Dateiserver darf nur über bestimmte IPs und über sich selbst möglich sein.
  • Samba Clienten (heterogene Netzwerkumgebung, d.h. kein nfs) sind
    • Windows 2000, Windows XP und Windows Vista plus
    • ein Windows 2003 Server sowie ein Debian Linux Root-Server
    • Samba-Login auf Clienten manuell möglich oder
    • Samba-Client Rechner sollen Netzlaufwerk automatisiert mounten / mappen

Anleitung Samba Dateiserver per Copy & Paste

Dieses Samba Howto ist als quick & dirty zu verstehen, d.h. jede Zeile vom Tutorial in die Shell kopieren (ggf. noch anpassen) und ausführen.

Meine Anleitungen dienen mir selbst teilweise als Wiki, d.h. dieses Samba Wiki ändert sich auch von Zeit zu Zeit. Darüber hinaus ist das Howto eher für den privaten Bereich gedacht bis hin zu einem Small Business Network. Es soll nachvollziehbar sein auch nach ein paar Jahren.

Ich verwende hier Samba 3.0 . Bitte die Erläuterungen im Anschluss lesen.

Installation Samba

dateiserver ~:# apt-get install samba

Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
  openbsd-inetd inet-superserver smbldap-tools ldb-tools
The following NEW packages will be installed
  samba
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
...
...
Importing account for root...ok
...
Importing account for nagios...ok
Adding group `sambashare' (GID 110) ...
Done.
Starting Samba daemons: nmbd smbd.

Samba-Gruppen anlegen

fileserver :~# addgroup smball

fileserver :~# addgroup smbusers

fileserver :~# addgroup smbadmins

Ordner für die Gruppen anlegen

fileserver :~# mkdir /home/groupsmball

fileserver :~# mkdir /home/groupsmbusers

fileserver :~# mkdir /home/groupsmbadmins

fileserver :~# chown root:smball /home/groupsmball/

fileserver :~# chown root:smbusers /home/groupsmbusers/

fileserver :~# chown root:smbadmins /home/groupsmbadmins/

fileserver :~# chmod 770 /home/groupsmbusers/

fileserver :~# chmod 770 /home/groupsmbadmins/

fileserver :~# chmod 2770 /home/groupsmball/

Konfiguration des Samba Servers

Sicherung Original-Konfiguration smb.conf

dateiserver ~:# cp /etc/samba/smb.conf /etc/samba/smb.conf_original

Alte smb.conf löschen

dateiserver ~:# rm /etc/samba/smb.conf

Neue smb.conf einfügen und nach Bedarf ändern

dateiserver ~:# mcedit /etc/samba/smb.conf

Inhalt der neuen smb.cof

[global]
# Arbeitsgruppe
workgroup = <NAME DER WORKGROUP>

# Zugriff per "share" oder "user"
# security = share
security = user
# nur notig bei security  = user
encrypt passwords = yes 

# Network Neighbourhood
netbios name = <NAME DES SERVERS>

#Genutze Adapter; bei einem eigentlich nicht notwendig
; interfaces = 192.168.1.2/24
; bind interfaces only = yes

# NT Beschreibung
server string = Server Samba %v 

# Speeddoping
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 

#IP-Zugriffsbeschraenkungen; das ";" entfernen um die IP-Listen zu aktivieren
;   hosts allow = 127. 192.168.1.1 192.168.1.2 192.168.1.3
;   hosts deny = 0.0.0.0/0
########## Homeverzeichnisse #########
[homes]
comment = homes
read only = no
create mask = 0700
browseable = no 

#####Share-Verzeichnisse

# Namen in eckigen Klammern sind frei waehlbar
[sbmusers]
comment = Freigabe smbusers
path = /home/groupsmbusers
read only = no

#
; valid users:
; admin users: chef

[smbadmins]
comment = Freigabe smbadmins
path = /home/groupsmbadmins
read only = no 

[smball]
comment = smball
path = /home/groupsmball
read only = no
create mask = 770
directory mask = 770

Nach dem Speichern die smb.conf testen über

dateiserver ~:# testparm

Samba Server kann nun neu gestartet werden:

dateiserver ~:# /etc/init.d/samba restart

Stopping Samba daemons: nmbd smbd.
Starting Samba daemons: nmbd smbd

Benutzer für Samba einrichten und Gruppen zuweisen

Einfachen Benutzer anlegen:

samba server :~# useradd -g smbusers -G smball -m <NAME>

samba server :~# chmod 700 /home/<NAME>

samba server :~# smbpasswd -a <NAME>

New SMB password:
Retype new SMB password:
Added user test.

Erweiterten Benutzer anlegen:

samba server :~# useradd -g smbadmins -G smball,smbusers -m <NAME>

samba server :~# chmod 700 /home/<NAME>

samba server :~# smbpasswd -a <NAME>

New SMB password:
Retype new SMB password:
Added user test.

Fertig ist der Samba-Server!!

Erläuterungen zum Howto

Samba3 Konfigurationserweiterungen

Eine Gastfreigabe könnte man wahrscheinlich (von mir ungetestet) so anlegen

[gaeste]
path = /home/gaeste
# Auch Gäste dürfen auf die Freigabe zugreifen
guest ok = yes
# Angemeldete Benutzer dürfen auch schreiben
writeable = yes
browseable = yes

# Rechte bei neuen Dateien/Verzeichnissen
# Neue Dateien werden mit diesen Rechten versehen
create mode = 0664
# Neue Verzeichnisse werden mit diesen Rechten versehen
directory mode = 0775

# Benutzer und Gruppenzugehörigkeit
# Erzwungene Kennung am Server anmeldet
force user = tester
# Daten werden mit diesen Dateizugehörigkeiten abgelegt
force group = users

Will man einfach Freigaben ohne Benutzer- und Passwortabfrage

username map = /etc/samba/smbusers
map to guest = bad user
guest account = nobody

...Freigaben...

Benutzerverwaltung

Neuen einfachen System-Benutzer einrichten über

samba server :~# useradd -g smbusers -G smball –m <NAME>

Der Systembenutzer ist Mitglied der Gruppen:

  • smball = Samba alle, d.h. Zugriff für alle eingetragenen Nutzer
  • smbusers = Nutzer mit eingeschränkten Rechten

Neuen System-Benutzer mit erweiterten Rechten einrichten über

samba server :~# useradd -g smbadmins -G smball,smbusers –m <NAME>

Der Systembenutzer ist Mitglied der Gruppen:

  • smball = d.h. Zugriff für alle eingetragenen Samba-Nutzer
  • smbusers = Nutzer mit eingeschränkten Rechten
  • smbadmins = der Nutzer kann somit in drei verschiedenen Gruppenordnern arbeiten

Vorhandenen Nutzer verändern (Bsp. User zu Admin machen)

samba server :~# usermod -G smbadmins,smball <NAME>

Erläuterungen zu usermod und useradd:

-g Hauptgruppe

-G weitere Gruppenzugehörigkeiten

Samba-Benutzerverwaltung

Eigentliche Anmeldung eines Benutzers für Samba

samba server :~# smbpasswd -a <NAME>

Benutzer löschen

samba server :~# smbpasswd -x <NAME>

Zusätzlich Benutzer im System inklusive Home-Verzeichnis löschen

samba server :~# userdel -r <NAME>

GRUPPENVERZEICHNISSE und GRUPPENVERWALTUNG

Gruppen:

samba fileserver:~# smbusers - eingeschränkte Rechte
samba fileserver:~# smbadmins - erweiterte Rechte
samba fileserver:~# smball - smbuser und smbadmins haben Zugriff

Gruppen anlegen:

samba fileserver:~# addgroup smbusers
samba fileserver:~# addgroup smbadmins
samba fileserver:~# addgroup smball

Gruppenverzeichnisse erstellen

samba dateiserver :~# mkdir -p /home/groupsmbusers
samba dateiserver :~# mkdir /home/groupsmbadmins
samba dateiserver :~# mkdir /home/groupsmball

Eigentumsrechte für gemeinsame Order ändern

samba dateiserver :~# chown root.smbusers /home/groupsmbusers
samba dateiserver :~# chown root.smbadmins /home/groupsmbadmins
samba dateiserver :~# chown root.smball /home/groupsmball

Schreibrechte für gemeine Ordner änder

dateiserver :~# chmod 770 /home/groupsmbusers
dateiserver :~# chmod 770 /home/groupsmbadmins

dateiserver :~# chmod 2770 /home/groupsmball

Die 2 von 2770 bedeutet Set Group ID Bit. Man kann gemeinsame Ordner auf diese Art einrichten. Ist dieser Bit gesetzt, dann vererbt sich die Benutzergruppe beim Erstellen eines neuen Unterordners / Datei mit. Man kann somit einen gemeinsamen Ordner einrichten, in dem mehrere Benutzer Dateien/Ordner erstellen können. Allerdings werden die Zugriffsrechte nicht vererbt, sondern richten sich weiterhin nach der aktuell eingestellten umask. Siehe dazu später in der Samba-Konfiguration.

Samba Fehlersuche

Konfiguration von Samba mit

dateiserver ~# testparm 

Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[sbmusers]"
Processing section "[smbadmins]"
Processing section "[smball]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions 

[global]
        workgroup = <NAME DER WORKGROUP>
        netbios name = <NAME DES SERVERS>
        server string = Server Samba %v
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 

[homes]
        comment = homes
        read only = No
        create mask = 0700
        browseable = No 

[sbmusers]
        comment = Freigabe smbusers
        path = /home/groupsmbusers
        read only = No 

[smbadmins]
        comment = Freigabe smbadmins
        path = /home/groupsmbadmins
        read only = No 

[smball]
        comment = smball
        path = /home/groupsmball
        read only = No
        create mask = 0770
        directory mask = 0770

Gruppen überprüfen mit

samba dateiserver  ~# tail -n3 /etc/group

smball:x:1003:
smbusers:x:1004:
smbadmins:x:1005:

Gruppenzugehörigkeit überprüfen mit

samba dateiserver  ~# cat /etc/group

smbusers:x:1001:tester
smbadmins:x:1002:admin
smball:x:1003:tester,admin

Benutzer Gruppen zuordnen

samba dateiserver ~# gpasswd -a USER GRUPPE

Benutzer aus Gruppen entfernen

samba dateiserver ~# gpasswd -d USER GRUPPE

Berechtigungen der Ordner überprüfen

samba dateiserver ~# ls -l /home/

drwxrwx--- 2 root     smbadmins 4096 2009-04-01 11:36 groupsmbadmins
drwxrws--- 2 root     smball    4096 2009-04-01 11:35 groupsmball
drwxrwx--- 2 root     smbusers  4096 2009-04-01 11:35 groupsmbusers

Wichtig: groupsmball muss 2770 sein!!

Test des lokalen Zugriffs auf ein Share / eine Samba Freigabe

samba dateiserver  ~# smbclient -U timbob //server2/smball
Password:
Domain=[SERVER2] OS=[Unix] Server=[Samba 3.0.24]
smb: \>

Samba Log

Die Samba Logfiles liegen unter /var/log/samba/