Лекция 9

Конфигуриране на системата. Стартиране и конфигурация на SAMBA сървър. Достъп до споделени Windows ресурси под Линукс и обратно.


В много случаи мрежата в която работи вашата Линукс машина е хетерогенна, т.е. освен Линукс машини има и множество 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 са:

Двата основни демона може да работят както като автономни процеси, така и като процеси контролирани от 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

Нека разгледаме секциите една по една.

Секцията [global] съдържа шест реда, първият от които е коментиран. Вторият указва къде ще се пази журналния файла на Samba сървъра, а третия - файла, който заключва Samba от повторно стартиране. Четвъртия ред задава групата в която ще работи сървъра и петия – неговото име. Последният ред задава кратко обяснение на сървъра. Секцията [global] може да съдържа и още параметри по-важните от които са:

В секцията [homes] се описват параметрите на достъп до домашните директории на потребителите. Първият ред указва коментара, който се появява срещу директорията. Вторият ред задава дали дадения споделен ресурс ще се вижда в списъка с достъпни споделени ресурси. Третия ред задава режим на достъп до ресурса, а последния ред – позволенията с които ще се създават файловете.

В секцията [tmp] параметъра public показва, че за достъп до този ресурс не се изисква парола, а параметъра path, задава пътя до директорията, която се споделя.

След промяна на файла е добре той да се провери за валидност. Това става с командата testparm. Ако тя не върне грешка, конфигурацията е валидна. За да влезе новата конфигурация в сила трябва да рестартирате сървъра с командите:

#/etc/rc.d/rc.samba restart – за Slackware

#/etc/rc.d/init.d/smb stop

# /etc/rc.d/init.d/smb start – за Red Hat

Ето още един пример за споделяне на директория:

[Music]

comment = Music folder

path = /mnt/storage/Music

guest only = Yes

guest ok = Yes

Параметъра guesk ok е синоним на public. Параметъра guest only задава достъпа до споделения ресурс, като в случая никой освен guest потребителите нямат достъп до ресурса.

Това е най-основната конфигурация за осигуряване достъп на Windows машини до Линукс чрез SMB протокола.

Конфигурирането на smb.conf може да се улесни ако се използва помощното приложение SWAT (Samba Web Administration Tool). SWAT работи като сървър и очаква връзка към порт 901. За връзка се използва обикновен браузър. SWAT позволява цялостно конфигуриране на Samba сървъра чрез удобен и лесен WEB интерфейс. Освен SWAT може да се използва и специален плъгин за KDE наречен ksambaplugin (http://ksambakdeplugin.sourceforge.net/), който се интегрира в Контролния панел на KDE и в неговите менюта.

Когато искате да осъществите достъп до Windows споделени ресурси от Линукс трябва да използвате програмата smbclient, която се разпространява с пакета Samba. Тя ви предоставя FTP подобен конзолен интерфейс. Достъпа до ресурса \\server514\shared се осъществява така:

#/usr/sbin/smbclient \\\\server514\\shared – ако ресурса е споделен без парола

#/usr/sbin/smbclient \\\\server514\\shared mypasswd – ако ресурса е споделен с парола

След като попаднете в обвивката на командата може да използвате help, за да видите възможните команди. Друга начин за достъп до споделени ресурси е възможността на тяхното прикачане към локалната файлова система. Това става с командата smbmount:

#smbmount \\\\server514\\shared /mnt/smb

#smbumount /mnt/smb

Друг начин за монтиране на споделен SMB ресурс е чрез командата mount:

#mount -t smbfs \\\\server514\\shared /mnt/smb

#umount /mnt/smb

За да e възможно монтирането на SMB споделена директория към локалната файлова система е необходимо ядрото да е компилирано с поддръжка на SMBFS. Това може да проветите с командата:

#cat /proc/filesystems

Ако списъка, който тя връща включва smbfs, то ядрото ви е компилирано с тази поддръжка. В противен случай ще е необходимо за използвате програмата smbclient за достъп до споделените ресурси.

Освен файлове, чрез Samba може да се споделят и принтери. Ето примерна конфигурация за споделяне на принтер от Линукс:

[global]

printing = bsd

load printers = yes

printcap name = /etc/printcap

max print jobs = 100

[printers]

comment = All printers

printable = yes

path = /var/spool/samba

browseable = no

guest ok = yes

public = yes

read only = yes

writable = no

Значението на отделните параметри е следното:

[global]

[printers]

Ако вашата дистрибуция използва CUPS (Common UNIX Print System), то параметрите printing и printcap name трябва да са със стойности cups. За да може да използвате CUPS, то Samba трябва да е компилирана с такава поддръжка.

Сега ще разгледаме случая на принтиране от Линукс машина на споделен принтер работещ на Windows. За да може да правите това трябва да отговаряте на следните условия:

Нека разгледаме един примерен /etc/printcap, като файла е за принтер HP 5MP нa сървър Windows 2000. Използват се следните полета на файла /etc/printcap:


# /etc/printcap

lp:\

:cm=HP 5MP Postscript Printer on Server514:\

:lp=/dev/lp1:\

:sd=/var/spool/lpd/lp:\

:af=/var/spool/lpd/lp/acct:\

:mx#0:\

:if=/usr/bin/smbprint:

Убедете се, че буферните директории и директорията използвана за отчет за ползването, съществуват и са с права за запис. Убедете се, че реда 'if' съдържа правилния път към скрипта smbprint (даден по-долу) и убедете се, че записите сочат към правилното устройство за въвеждане (специалния файл /dev).

След това може да използвате програмата smbspool за печат на споделени принтери през SMB протокола. Формата за използване на програмата е:

smbspool {job} {user} {title} {copies} {options} [filename] , където:

2