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/