В много случаи мрежата в която работи вашата Линукс машина е хетерогенна, т.е. освен Линукс машини има и множество Windows базирани такива. Ако се налага споделяне на файлове или принтери, които да са видими за всички компютри в такава мрежа се налага използването на протокола Server Message Block(SMB). Този протокол се използва от Windows базирани компютри за организиране на достъп до файлове и принтери (това са т.нар. споделени файлове (shared files) и споделени принтери (shared printers)). Използвайки набора от помагала Samba на Андрю Тридгел, UNIX™ - машини могат да организират достъп до дисковете и принтерите за Windows машини.
Това което може да правите със Samba e :
Преди
да може да работите със Samba трябва вашата локална мрежа да работи с
TCP/IP протокол, тъй като тя работи само с този протокол. Освен това
Samba може да работи само в рамките на един сегмент от мрежата, тъй
като използва броудкаст за разпращането на пакетите. Това не
позволява на Samba да работи с маршрутизатори, освен ако не е
настроено тунелно IP. И накрая... за да работите със Samba, то вие
трябва да я имате инсталирана. Можете да проверите дали имате
инсталирана Samba със следната команда:
#whereis smbd
smbd: /usr/sbin/smbd /usr/man/man8/smbd.8.gz /usr/share/man/man8/smbd.8.gz
Ако изхода е подобен на показания, то вие имате инсталиран Samba пакета. В противен случай ще трябва да го инсталирате. Това може да стане както от предоставяните от дистрибуцията пакети, така и от изходен код. В момента на писане на лекцията последната версия на Samba е 3.0.2а и може да бъде изтеглена от http://www.samba.org.
Основните файлове в Samba са:
smbd – това е демона който осигурява работата със SMB
Двата основни демона може
да работят както като автономни процеси, така и като процеси
контролирани от inetd. Принципна разлика в конфигурацията няма, с
изключение на това, че Samba ще работи малко по-бързо ако е пусната
като автономен процес. Преди да пуснете Samba уверете се, че следните
редове съществуват във файла /etc/services и ако не съществуват ги
добавете:
netbios-ns 137/tcp nbns
netbios-ns 137/udp nbns
netbios-dgm 138/tcp nbdgm
netbios-dgm 138/udp nbdgm
netbios-ssn 139/tcp nbssn
Ако сте инсталирали Samba от пакета на Slackware, то сървъра може да се пусне по следния начин:
#/etc/rc.d/rc.samba start – пускане на сървъра
#/etc/rc.d/rc.samba stop – спиране на сървъра
# etc/rc.d/rc.samba restart – рестартира сървъра (при промяна на конфигурационния файла се налага рестартиране)
Ако използвате Red Hat скрипта се намира в /etc/rc.d/init.d/ и се нарича smb.
За да може да използвате пълноценно Samba, то тя трябва да се настрои. Настройката се извърша в един единствен файла smb.conf, който в Slackware се намира в директорията /etc/samba. В други дистрибуции местоположението на файла може да е различно, като най-вероятно е да се намира в директорията /etc/.
Чрез файла smb.conf вие определяте към какви системни ресурси искате да дадете достъп за външния свят и какви ограничения искате да определите при използването на тези ресурси. Този файл е разделен на раздели, като всеки раздел започва с определено име – например [global], [homes], [printers] и т.н.
Секцията [global] определя някой променливи, които Samba ще използва за определяне на достъпа до всички ресурси.
Раздела [homes] позволява на отдалечените потребители да имат достъп до своите (и само до тях) домашни директории на локалната Linux-машина. Така че, ако потребителите на Windows се пробват да се включат към този раздел от своите Windows машини, то те ще бъдат включени към своите персонални домашни директории. Ще отбележим, че за да могат да направят това те трябва да са регистрирани на Linux-машината.
Нека сега започнем с прост smb.conf файла, който ще позволява на отдалечените потребители да имат достъп към техните домашни директории на локалната машина и да пишат във временна директория.
;/etc/smb.conf
[global]
; Разкоментирайте този ред , ако вие искате да дадете достъп на потребителя "гост"
; guest account = nobody
log file = /var/log/samba-log.%m
lock directory = /var/lock/samba
workgroup = Class514
netbios name = Server514
server string = Class 514 - server resources
[homes]
comment = Home Directories
browseable = no
read only = no
create mode = 0750
[tmp]
comment = Temporary file space
path = /tmp
read only = no
public = yes