Samba howto
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 |
nu nog ff een filetje renamen
Shell:
| mv /usr/local/etc/rc.d/samba.sh.sample /usr/local/etc/rc.d/samba.sh |
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 |
De aanbevolen methode voor kleine netwerken is starten vanuit een rc script:
Shell:
| /us/local/etc/rc.d/samba.sh |
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 |
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 |
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 |
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’ & |
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] [web] |
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 |
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 |
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* |
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 ===================================== # workgroup = NT-Domain-Name or Workgroup-Name # server string is the equivalent of the NT Description field # This option is important for security. It allows you to restrict # if you want to automatically load your printer list rather # It should not be necessary to spell out the print system type unless # Uncomment this if you want a guest account, you must add this to /etc/passwd # this tells Samba to use a separate log file for each machine # Put a capping on the size of the log files (in Kb). # Security mode. Most people will want user level security. See # Use password server option only with security = server # Password Level allows matching of _n_ characters of the password for # You may wish to use password encryption. Please read # Unix users can map to different SMB User names # Using the following line enables you to customise your configuration # Most people will find that this option gives better performance. # Configure Samba to use multiple interfaces # Configure remote browse list synchronisation here # Browser Control Options: # OS Level determines the precedence of this server in master browser # Domain Master specifies Samba to be the Domain Master Browser. This # Preferred Master causes Samba to force a local browser election on startup # Use only if you have an NT server on your network that has been # Enable this if you want Samba to be a domain logon server for # if you enable domain logons then you may want a per-machine or # Where to store roving profiles (only for Win95 and WinNT) # Windows Internet Name Serving Support Section: # WINS Server – Tells the NMBD components of Samba to be a WINS Client # WINS Proxy – Tells Samba to answer name resolution queries on # DNS Proxy – tells Samba whether or not to try to resolve NetBIOS names # Case Preservation can be handy – system default is _no_ #============================ Share Definitions ============================== # Un-comment the following and create the netlogon directory for Domain Logons # Un-comment the following to provide a specific roving profile share # NOTE: If you have a BSD-style print system there is no need to # This one is useful for people to share files # A publicly accessible directory, but read only, except for people in # Other examples. # A private directory, usable only by fred. Note that fred requires write # a service which has a different directory for each machine that connects # A publicly accessible directory, read/write to all users. Note that all files # The following two entries demonstrate how to share a directory so that two |
Gejat en bijgewerkt (www.linux-nl.cx)

March 19th, 2004