SAMBA
Wat is SAMBA?
Samba is een netwerk-protocol waarbij o.a. files en printers van een server via het SMB (Server Message Block) protocol te benaderen zijn.
Samba bestaat voor Unix, OS/2, Windows en Novell. Dit betekent dat al deze OS-en in een Samba netwerk opgenomen kunnen worden.
Samba is de ‘open-source’ implementatie van SMB en valt onder de GNU bepalingen; elke ontwikkelaar is vrij de sourcecode van Samba aan te passen naar eigen wensen.
Resultaat is dat Samba dat bovenop Unix draait, krachtiger en sneller is dan de SMB-server van W95 en Windows NT, dankzij de superieure multi-user architectuur, de stabiliteit, veiligheid en snelheid van Unix.
[pagebreak]
Samba is een public-domain file sharing systeem op basis van het binnen windows95 en NT toegepaste standaard SMB protocol. Met Samba kunnen bestanden en printers worden gedeeld tussen Unix, NT, windows95, OS/2 en novell systemen. Het SMB protocol (Server Message Block) is eind jaren 80 door Intel en Microsoft ontwikkeld voor Lanmanager, nu is SMB het onderliggende protocol binnen de Windows95 en NT services “Client for microsoft windows” en “File en porinter sharing for Microsoft networks” Samba is de public-domain Unix server implementatie van SMB en alle bijbehorende services.
Iedere gebruiker heeft bijv. een eigen windows netwerk logon, en een eigen home directory die correspondeert met de Unix home directory: zo komt de kracht van de combinatie van Unix en windows 95 volledig tot z’n recht.
Eigenschappen
File sharing
NT-style /HOME home directories
>Printer sharing
Authenticatie op basis van Unix login of NT-style encrypted passwords
Delegeren van authenticatie naar andere (NT) server
Windows95 Network logon scripts
Uitgebreide Logging
Browse lists met remote announce
WINS name server
Winpopup messaging
Windows password change, inclusief Unix password synchronisatie
Installeren
Installatie
FreeBSD bezit van zichzelf al een port voor samba dus deze kan simpel geinstalleerd worden door het volgende te doen :
[shell]cd /usr/ports/net/samba
make install
[/shell]
nu nog ff een filetje renamen
[shell]mv /usr/local/etc/rc.d/samba.sh.sample /usr/local/etc/rc.d/samba.sh[/shell]
Configuratie en start files
Samba bestaat uit een 2-tal servers en een aantal client- en support programmas. De servers zijn:
smbd de Samba file en print server
nmbd is de samba WINS name server
Smbd en Nmbd kennen slechts 1 configuratie file: /usr/local/etc/smb.conf Alle instellingen worden in dat file aangebracht. Samba kent een groot aantal opties & settings, die worden uitgelegd in de smb.conf manual page. Gelukkig zijn er groepen parameters, die logisch bij elkaar horen – zodat eea overzichtelijk blijft.
Smbd en Nmbd zijn daemons die je vanuit system startup (rc) of via inetd kan laten starten. Nmbd gebruikt poort 137 (netbios-ns), smbd registreert zich op poort 138( netbios-dgm) en 139 (netbios-ssn). Maak daartoe de volgende aanpassing in /etc/services:
[shell]netbios-ns 137/tcp # NETBIOS Name Service
netbios-ns 137/udp # NETBIOS Name Service
netbios-dgm 138/tcp # NETBIOS Datagram Service
netbios-dgm 138/udp # NETBIOS Datagram Service
netbios-ssn 139/tcp # NETBIOS Session Service
netbios-ssn 139/udp # NETBIOS Session Service
[/shell]
De aanbevolen methode voor kleine netwerken is starten vanuit een rc script:
[shell]/us/local/etc/rc.d/samba.sh[/shell]
Configureren
Voor configuratie gaan we naar smb.conf.default dat door samba in /usr/local/etc/ wordt geinstalleerd. Kopieer dat naar smb.conf(cp /usr/local/etc/smb.conf.default /usr/local/etc/smb.conf), en pas het dan aan. Het smb.conf file is ingedeeld in secties:
Een [global] sectie die algemene parameters bevat voor het systeem
Andere [shares] secties, 1 per share met de naam van elke file of printer share.
Een speciale share is [homes], uitleg volgt later
De besproken configuratieopties gebruik ik zelf in mijn home netwerk met Solaris en windows95. UItgelegd worden:
Global configuratie
Browse master
WINS server
File shares
Domain controller & netwerk logon
Password change & synchronisatie vanuit windows
1. Global configuratie
Een aantal van de [global] settings zijn defaults, die in per individuele share weer kunnen worden gewijzigd.
[shell][global]
; Naam van je eigen workgroup naar keuze (die van mij is HOME)
workgroup = HOME
; Alle shares zijn als default te zien in Networkk Neighborhood
browseable = yes
; Unix “,” files zijn default hidden.
hide dot files = yes
; Samba standard defaults voor locking & checking
status = yes
strict locking = yes
; Windows95 is niet case sensitive
case sensitive = no
preserve case = yes
short preserve case = yes
; Samba maakt een logfile aan voor elke PC en user.
log file = /usr/local/samba/var/log.%m
; Laat alleen trusted hosts toe Zie manual page
; Dit in combinatie met andere security opties zoals firewall, etc.
hosts allow = 150.203. EXCEPT 150.203.6.66
;
; Helaas zijn unix passwords case-sesitive, en windows niet. Password level
; is nodig als mixed case in het Unix password wordt gebruikt. Dit geeft het
; maksimaal aantal upper-case karakters in het user password aan dat
; tegen Unix moet worden geprobeerd.
password level = 1
[/shell]
2. Browse master
Om Samba een browse master te laten worden moet je nmbd vertellen dat hij onderhandelingen hierover moet winnen met andere hosts. De global sectie bevat daartoe de volgende opties:
[shell]local master = yes
preferred master = yes
os level = 65
[/shell]
3. Wins server
Handig is het als windows name resolutie door Samba kan worden afgehandeld. WINS is complementair aan DNS. Op zich zou WINS niet nodig hoeven zijn als je al DNS hebt geconfigureerd. Als jouw machine de enige server in het net is, moet je dit aanzetten.
Let op!! Een complicatie is bij kabelgebruik het feit dat er meerdere WINS servers op het segment kunnen zitten! Dat leidt tot conflicten en broadcast storms! Het verdient dan ook met name bij deze setting aanbeveling om de poorten 137 en 138 van de kabel af te sluiten met een tcp wrapper of firewall!!
4. File shares
Maak voor elke windows user een Unix account aan met een home directory. Let op de rechten van de home directory. Voorbeeld: user “myuser”, home dir /home/myuser.
In elk geval moet de [homes] sectie aanwezig zijn in smb.conf. Default is de unix user’s home directory = Homes share. Als je een ander path wilt, kun je dat wijzigen door bijv iets als
path=/data/pchomes/%S
OF
path=/data/users/%U
In je smb.conf [homes] sectie op te nemen.
[shell][homes]
comment = Home Directories
browseable = no
read only = no
; Create mode 750 maakt deze directory non-writable voor group,
; en gesloten voor world.
;
create mode = 0750
[/shell]
Om de network logons en personal profiles te laten werken moet je een share NETLOGON maken:
[shell][NETLOGON]
path = /usr/local/samba/scripts
writeable = no
guest ok = no
; Met het volgende truukje kun je bijv een automatische winpopup message
; laten verschijnen!
; PC’s moete dan wel winpopup in hun Programs-> Startup hebben staan
preexec = csh -c ‘cat /etc/motd | /usr/local/samba/bin/smbclient -M %m’ &
[/shell]
Nu kun je ook andere shared directories aanmaken & toevoegen. Voorbeelden:
[shell]; you might also want this one
[tmp]
comment = Temporary file space
path = /tmp
read only = no
public = yes
[install]
comment = Shared software
path = /home/install
; @group is iedereen in de uninx group “staff”
valid users = @staff
; Force user maakt samba SUID in die directory. root blijft dus altijd owner
; van files in die share. Let op security, doe dit NOOIT voor fileshares
; die van buitenaf zichtbaar zijn!!!
force user = root
force group = other
read only = no
create mask = 0755
directory mask = 0755
[web]
path = /home/apache/htdocs
read only = no
writeable = yes
valid users = mist,webmaster
force user = webmaster
[/shell]
5. Domain Controller & netwerk login
Dit is echt een heel fijne eigenschap van Samba. Je PC geeft je een network logon dialoog, persoonlijke settings, menus & desktop, een eigen home directory. De settings zijn de volgende:
[shell]; Users worden geverifieerd met een Unix account. Voor elke login moet
; dus een Unix account bestaan
security = user
domain master = yes
; Voor Logon scripts moet een [homes] share en een [NETLOGON] share bestaan,
; met een logon script voor elke gebruiker. zie verderop.
domain logons = yes
logon script = %U.bat
[/shell]
Zoals eerder gezegd, om de network logons te activeren moet de [homes] en [NETLOGON] share bestaan, en er moet een network logon script bestaan. Doe het volgende:
Maak de directory /usr/local/samba/scripts aan, die je in de [NETLOGON] share hebt genoemd. Zet daarin een script “myuser.bat”, “myuser” de naam van de unix login user. Dat script moet je aanmaken met windows, vanwegen de “CRLF” conversie. Dit script bevat bijvoorbeeld de volgende regels: (afhankelijk van de shares die je hebt aangemaakt)
De naam “myhost” is de naam van de unix machine zoals je die met “uname” of “hostname” ziet, dat is de naam waarmee Samba zich als default bekend maakt in WINS / browser.
Om personal profiles te laten weken moet H: als home directory worden gebruikt. Verder moet er een directory “profile” in de users’ home directory bestaan
[shell]rem
rem synchroniseer de tijd met de unix host.
rem
net time MYHOST /set /yes
net use H: /HOME /yes
rem
rem andere shares:
rem
net use X: MYHOSTINSTALL /yes
net use P: MYHOSTTMP /yes
exit
[/shell]
5. Password synchonisatie
Om passwords tussen Unix en NT te kunnen synchroniseren moet je het volgende doen:
OMdat Unix geen windows encrypted passwords ondersteunt, moet je ook een password file “smbpasswd” aanmaken met users’ encrypted windows passwords. Elke samba user moet daarom ook worden toegevoegd met het commando “smpbasswd”
Maak daartoe eerste een leeg file “touch /usr/local/samba/private/smbpasswd” aan , en voeg de users toe met het “smbpasswd” commando.
Check vervolgens het “password chat” script van je Linux box, en pas evt dit chat script aan in onderstaande regels.
[shell]encrypt passwords = yes
;
unix password sync = True
passwd program = /bin/passwd %u
passwd chat = Newspassword* %nn *newspassword* %nn *changed*
[/shell]
Aanloggen aan Linux ligt gevoelig bij Windows ’98.
Ook al heb je Samba als service draaien dan is het niet mogelijk om je home directory te benaderen. Dit komt omdat win98 passwords encrypted heeft. Om dit te verhelpen het volgende:
START REGEDIT op je workstation
Klik op + van HKey_Local_Machine
Klik op System
Klik op CurrentControlSet
Klik op Services
Klik op VxD
BROWSE naar VNETSUB
Klik vervolgens in het menu op BEWERKEN -> NIEUW-> DWORD waarde (DWord value)
Voer in (case censitive) “EnablePlainTextPassword” en druk op ENTER
Klik vervogens op de nieuwe sleutel en verander de waarde 0 (nul) in 1 (èèn)
Start win ’98 opnieuw en log aan met een username en password die ook op je linux machine bekend is met de nodige rechten. Daarna bv. in de DOS prompt intikken: “net use h: linuxhostnameusername” Bijv: net use h:simplyredbennie
That’s all for now.
——————————————————————————–
Tot slot de basisconfig van Samba…….
——————————————————————————–
[shell]
# file /etc/smb.conf
#======================= Global Settings =====================================
[global]
# workgroup = NT-Domain-Name or Workgroup-Name
workgroup = Linux_server
# server string is the equivalent of the NT Description field
server string = Linux Samba
# This option is important for security. It allows you to restrict
# connections to machines which are on your local network. The
# following example restricts access to two C class networks and
# the “loopback” interface. For more examples of the syntax see
# the smb.conf man page
hosts allow = 192.168.1. 127.
# if you want to automatically load your printer list rather
# than setting them up individually then you’ll need this
printcap name = /etc/printcap
load printers = yes
# It should not be necessary to spell out the print system type unless
# yours is non-standard. Currently supported print systems include:
# bsd, sysv, plp, lprng, aix, hpux, qnx
printing = bsd
# Uncomment this if you want a guest account, you must add this to /etc/passwd
# otherwise the user “nobody” is used
; guest account = pcguest
# this tells Samba to use a separate log file for each machine
# that connects
log file = /var/log/samba/log.%m
# Put a capping on the size of the log files (in Kb).
max log size = 50
# Security mode. Most people will want user level security. See
# security_level.txt for details.
security = user
# Use password server option only with security = server
; password server =
# Password Level allows matching of _n_ characters of the password for
# all combinations of upper and lower case.
; password level = 8
# You may wish to use password encryption. Please read
# ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation.
# Do not enable this option unless you have read those documents
; encrypt passwords = yes
; smb passwd file = /etc/smbpasswd
# Unix users can map to different SMB User names
; username map = /etc/smbusers
# Using the following line enables you to customise your configuration
# on a per machine basis. The %m gets replaced with the netbios name
# of the machine that is connecting
; include = /etc/smb.conf.%m
# Most people will find that this option gives better performance.
# See speed.txt and the manual pages for details
socket options = TCP_NODELAY
# Configure Samba to use multiple interfaces
# If you have multiple network interfaces then you must list them
# here. See the man page for details.
; interfaces = 192.168.12.2/24 192.168.13.2/24
# Configure remote browse list synchronisation here
# request announcement to, or browse list sync from:
# a specific host or from / to a whole subnet (see below)
; remote browse sync = 192.168.3.25 192.168.5.255
# Cause this host to announce itself to local subnets here
; remote announce = 192.168.1.255 192.168.2.44
# Browser Control Options:
# set local master to no if you don’t want Samba to become a master
# browser on your network. Otherwise the normal election rules apply
; local master = no
# OS Level determines the precedence of this server in master browser
# elections. The default value should be reasonable
; os level = 33
# Domain Master specifies Samba to be the Domain Master Browser. This
# allows Samba to collate browse lists between subnets. Don’t use this
# if you already have a Windows NT domain controller doing this job
; domain master = yes
# Preferred Master causes Samba to force a local browser election on startup
# and gives it a slightly higher chance of winning the election
; preferred master = yes
# Use only if you have an NT server on your network that has been
# configured at install time to be a primary domain controller.
; domain controller =
# Enable this if you want Samba to be a domain logon server for
# Windows95 workstations.
; domain logons = yes
# if you enable domain logons then you may want a per-machine or
# per user logon script
# run a specific logon batch file per workstation (machine)
; logon script = %m.bat
# run a specific logon batch file per username
; logon script = %U.bat
# Where to store roving profiles (only for Win95 and WinNT)
# %L substitutes for this servers netbios name, %U is username
# You must uncomment the [Profiles] share below
; logon path = %LProfiles%U
# Windows Internet Name Serving Support Section:
# WINS Support – Tells the NMBD component of Samba to enable it’s WINS Server
; wins support = yes
# WINS Server – Tells the NMBD components of Samba to be a WINS Client
# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
; wins server = w.x.y.z
# WINS Proxy – Tells Samba to answer name resolution queries on
# behalf of a non WINS capable client, for this to work there must be
# at least one WINS Server on the network. The default is NO.
; wins proxy = yes
# DNS Proxy – tells Samba whether or not to try to resolve NetBIOS names
# via DNS nslookups. The built-in default for versions 1.9.17 is yes,
# this has been changed in version 1.9.18 to no.
dns proxy = no
# Case Preservation can be handy – system default is _no_
# NOTE: These can be set on a per share basis
; preserve case = no
; short preserve case = no
# Default case is normally upper case for all DOS files
; default case = lower
# Be very careful with case sensitivity – it can break things!
; case sensitive = no
#============================ Share Definitions ==============================
[homes]
comment = Home Directories
browseable = yes
writable = yes
create mode=0750
# Un-comment the following and create the netlogon directory for Domain Logons
; [netlogon]
; comment = Network Logon Service
; path = /home/netlogon
; guest ok = yes
; writable = no
; share modes = no
# Un-comment the following to provide a specific roving profile share
# the default is to use the user’s home directory
;[Profiles]
; path = /home/profiles
; browseable = no
; guest ok = yes
# NOTE: If you have a BSD-style print system there is no need to
# specifically define each individual printer
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
# Set public = yes to allow user ‘guest account’ to print
guest ok = no
writable = no
printable = yes
# This one is useful for people to share files
[tmp]
comment = Temporary file space
path = /tmp
read only = no
public = yes
# A publicly accessible directory, but read only, except for people in
# the “staff” group
;[public]
; comment = Public Stuff
; path = /home/samba
; public = yes
; writable = yes
; printable = no
; write list = @staff
# Other examples.
#
# A private printer, usable only by fred. Spool data will be placed in fred’s
# home directory. Note that fred must have write access to the spool directory,
# wherever it is.
;[fredsprn]
; comment = Fred’s Printer
; valid users = fred
; path = /homes/fred
; printer = freds_printer
; public = no
; writable = no
; printable = yes
# A private directory, usable only by fred. Note that fred requires write
# access to the directory.
;[fredsdir]
; comment = Fred’s Service
; path = /usr/somewhere/private
; valid users = fred
; public = no
; writable = yes
; printable = no
# a service which has a different directory for each machine that connects
# this allows you to tailor configurations to incoming machines. You could
# also use the %u option to tailor it by user name.
# The %m gets replaced with the machine name that is connecting.
;[pchome]
; comment = PC Directories
; path = /usr/pc/%m
; public = no
; writable = yes
# A publicly accessible directory, read/write to all users. Note that all files
# created in the directory by users will be owned by the default user, so
# any user with access can delete any other user’s files. Obviously this
# directory must be writable by the default user. Another user could of course
# be specified, in which case all files would be owned by that user instead.
;[public]
; path = /usr/somewhere/else/public
; public = yes
; only guest = yes
; writable = yes
; printable = no
# The following two entries demonstrate how to share a directory so that two
# users can place files there that will be owned by the specific users. In this
# setup, the directory should be writable by both users and should have the
# sticky bit set on it to prevent abuse. Obviously this could be extended to
# as many users as required.
;[myshare]
; comment = Mary’s and Fred’s stuff
; path = /usr/somewhere/shared
; valid users = mary fred
; public = no
; writable = yes
; printable = no
; create mask = 0765
[/shell]
Gejat en bijgewerkt (www.linux-nl.cx)