HOGYAN Samba

A Gentoo Linux Wiki wikiből

Tartalomjegyzék

[szerkesztés] Mi is az a Samba?

A Samba egy programgyűjtemény, mely megvalósítja Server Message Block (mindennapi rövidítéssel: SMB) protokollt UNIX rendszereken. Erre a protokollra hivatkoznak néha Common Internet File System (CIFS) néven is. Bővebben a www.ubiqx.org/cifs címen. A Samba az nmbd részében a NetBIOS protokollt is kezeli. (Idézet a Samba man-ból)

Röviden és kevésbé szakszerűen: UNIX gépeken levő fájl- és nyomtató erőforrásokat tesz elérhetővé Windows operációs rendszert használó számítógépek részére. Lehetőséget teremt a fordított elérésre is: Windows megosztásokat használhatunk általa UNIX rendszerekből.

Két fő részből (smbd és nmbd), valamint sok kisebb segédprogramból áll, melyek a következő fő feladatok megvalósítására szolgálnak:

  • Fájl és nyomtatási szolgáltatások
  • Hitelesítések és engedélyek kezelése
  • Névfeloldás
  • Tallózás

* részlet a HUP Wikiből


[szerkesztés] USE flagek

Mielőtt hozzálátnánk a telepítéshez, érdemes megnézni, milyen flageket fogad el a samba csomag:

kerberos mysql xml acl cups ldap pam readline python oav libclamav

Ezek jeletése a következő:

USE flag Jelentése

kerberos

Kerberos támogatás a fileátvitelhez

mysql

Használatával lehetővé válik a Samba számára a jelszavas azonosítás. Előnye, hogy a jelszavak nem egy egyszerű szöveges fileban, hanem adatbázisban tárolódnak

xml

Segítségével a jelszavak xml formátumban tárolhatók

acl

Access Control Lists támogatás

cups

Common Unix Printing System támogatás. Segítségével helyi CUPS nyomtatókat oszthatunk meg a hálózaton

ldap

Lightweight Directory Access Protocol támogatás. Active Directory használatához szükséges,a kerberos USE flag mellett.

pam

Pluggable Authentication Modules támogatás. Használatával azonosíthatók a felhasználók a Samba serveren.A kerberos USE flag használata ajánlott mellette.

readline

libreadline használata. Használata erősen ajánlott

python

Python API

oav

Vírusellenőrzés támogatása, használható az FRISK F-Prot Daemon, Kaspersky AntiVirus, OpenAntiVirus.org ScannerDaemon, Sophos Sweep (SAVI), Symantec CarrierScan, és Trend Micro (VSAPI) programokkal

libclamav

A ClamAV library használata a clamd daemon helyett

Egy-két megjegyzés az előbbiekhez:


[szerkesztés] Telepítés

Mielőtt hozzákezdenél, győződj meg róla, hogy a névfeloldás rendesen működik a hálózaton. Ellenőrizd az /etc/hosts file tartalmát, ha ezt manuálisan kell megoldanod.


[szerkesztés] Samba

Ha minden rendben van, a megfelelő opciókkal indulhat a telepítés (írd be azokat, amikre még szükséged van):

# echo "net-fs/samba oav readline cups" >> /etc/portage/package.use
# emerge net-fs/samba

A fenti parancs a CUPSot is magával rántja, ha még nincs telepítve.


[szerkesztés] ClamAV

A vírusellenőrzés a Samba és egyéb serverek esetén nem elsősorban a linuxot futtató gép védelme miatt fontos. Használatával a hálózaton közlekedő adatok ellenőrzése biztosított. Mivel az oav FLAG csak lehetővé teszi a samba számára ilyen programok használatát, be kell szerezni egy vírusírtót is. A használható programokról volt szó feljebb, jelen esetben a ClamAV a kiszemelt példa:

# emerge app-antivirus/clamav


Amennyiben van nyomtatónk, és ezt használni is szeretnénk, néhány csomag még hátra van...


[szerkesztés] Foomatic

# emerge net-print/foomatic

HP nyomtató esetén a hpijs csomag is szükséges:

# emerge net-print/hpijs

[szerkesztés] Beállítások

[szerkesztés] Samba

A Samba fő konfigurációs fileja az /etc/samba/smb.conf. Az emergelés után ez a file üresen megtalálható az elérési útján, valamint egy példafile, gzipelve, smb.conf.example.gz néven. A fontosabb változtatások, amiket eszközölni kell:

File: /etc/samba/smb.conf
 [global]
 workgroup = MYWORKGROUPNAME # A munkacsoport neve, ahová a számítógép tartozik
 server string = Samba Server %v # A server neve, akármi lehet, a %v a samba verziószáma lesz
 log file = /var/log/samba/log.%m # A logfile helyének beállítása
 max log size = 50 # A logfile maximális mérete, kb-ban megadva
 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 # Néhány beállítás az átvitelre vonatkozóan
 interfaces = lo eth0 # A samba interfészekhez rendelése...
 bind interfaces only = yes # ... így csak ezeken keresztül kommunikál
 hosts allow = 127.0.0.1 192.168.1.0/24 # Engedélyezett hostok
 hosts deny = 0.0.0.0/0 # Minden más tiltása
 security = share # Alap házirend beállítása. Egyéb opciók még: USER, DOMAIN, ADS, és SERVER, az alap a USER
 guest account = nobody # Nem használunk jelszót, így a bejelentkezettek nem kapnak sok jogosultságot 
 # (a nobody felhasználó 'elméletileg' alapértelmezésben létrejön a telepítés során, ez nekünk pont megfelel)
 guest ok = yes
 
 # A vírusellenőrzés beállítása következik:
 # Mivel ezt a [global] részbe tesszük, minden megosztás ellenőrizve lesz.
 # Ez a megoldás JELENTŐSEN CSÖKKENTHETI a server teljesítményét!!
 # Ha ezt nem akarod, a megfelelő megosztásokhoz kell rakni a következő sorokat
 vfs object = vscan-clamav
 vscan-clamav: config-file = /etc/samba/vscan-clamav.conf
 
 # És a lényeg! A megosztások létrehozása
 # Az első egy egyszerű példa, amit mindenki írhat, olvashat, hozzáférhet
 [public]
 comment = Public Files
 browseable = yes
 public = yes
 create mode = 0766
 guest ok = yes
 path = /home/samba/public
 
 # Általános megosztáshoz
 [mp3]
 comment = mp3 
 path = /home/user/mp3
 read only = Yes
 
 # dvd/cd meghajtó
 [dvd]
 comment = dvd drive
 writable = No
 locking = No
 path = /mnt/cdrom2
 #root preexec = /bin/mount /mnt/cdrom
 #root postexec = /bin/umount /mnt/cdrom


Ahhoz, hogy a Window$-os gépek könnyen megtalálhatóak legyenek NetBIOS segítségével, írd át a megfelelő sort az /etc/nsswitch.conf fileban, így:

File: /etc/nsswitch.conf
..
hosts: files dns wins # a lényeg a 'wins' rész
..

[szerkesztés] ClamAV

A ClamAV konfigurálása az /etc/samba/vscan-oav.conf fileon keresztül történik

File: /etc/samba/vscan-oav.conf
 [samba-vscan]
 ; Minden opció az alap értékre van állítva !

 ; Maximális scannelendő fileméret beállítása. Ha az érték 0, minden file ellenőrizve lesz
 max file size = 0

 ; Filehozzáférések logolása
 ; Ha 'yes'-re van állítva, minden logolva lesz, 'no' esetén csak a fertőzött fileok
 verbose file logging = no

 ; Fileok ellenőrzése megnyitáskor...
 scan on open = yes
 ; ...és bezáráskor
 scan on close = yes

 ; Az ellenőrzés során fellépő hiba (pl. clamd elérhetetlen) esetén a file megnyitásának tiltása
 deny access on error = yes

 ; Ugyan az, mint az előző, csak kisebb probléma esetén (corrupt file stb.)
 deny access on minor error = yes

 ; Értesítés küldése a Window$ Messenger rendszer használatával, vírustalálat esetén
 send warning message = yes

 ; Fertőzött fileok kezelése
 ; quarantine: áthelyezés a karantén mappába, ha sikertelen, törlés
 ; delete:     fertőzött file törlése
 ; nothing:    figyelmen kívül hagyás (ettől még a logban megtalálható!)
 infected file action = delete

 ; Hová helyezze a fertőzött fileokat (azaz a karanténmappa helye)
 ; ugyan azon a fizikai meghajtón kell lennie, mint a megosztásnak
 quarantine directory  = /tmp
 ; Fertőzött fileok prefixe
 quarantine prefix = vir-

 ; Mivel a Window$ rövid időn belül sokszor próbálja megnyitni a fileokat,
 ; a samba-vscan egy listát használ a nemrég megnyitott fileokról.
 ; Ezzel az opcióval a lista maximális méretét lehet beállítani (fileok száma).
 max lru files entries = 100

 ; [[FIXME]]
 ; an entry is invalidated after lru file entry lifetime (in seconds).
 ; (Default: 5)
 lru file entry lifetime = 5

 ; socket name of clamd (default: /var/run/clamd)
 clamd socket name = /tmp/clamd

 ; A ScannerDaemon portja
 oav port = 8127

Ha ez megvan, érdemes ellenőrizni a logfileok helyét:

# vim /etc/clamd.conf (Keresd a "LogFile /var/log/clamd.log" sort)
# vim /etc/freshclam.conf (Keresd a "UpdateLogFile /var/log/freshclam.log" sort)
# vim /etc/conf.d/clamd (Állítsd be a "START_CLAMD=yes" és "START_FRESHCLAM=yes" kapcsolókat)

Ahhoz, hogy a clamd és freshclam daemonok elinduljanak, ki kell törölni mindkét configfileból az 'Example' sort !!

Mostmár el lehet indítani a vírusellenőrzést. Célszerű a clamd-t már a boot során. Ennek két processe van, a freshclam a vírus-adatbázis frissítéséért felel, a clamd maga pedig a tényleges szűrő. Hogy a boot során induljon, gépeld be a következőket:

# rc-update add clamd default
# /etc/init.d/clamd start

A második parancs rögtön el is indítja a szolgáltatást.

[szerkesztés] Tűzfal

Ahhoz, hogy a gépünkön található megosztáshoz mások is hozzáférhessenek a hálózaton keresztül, meg kell oldani, hogy átjussanak a tűzfalon (és csak azok, akiket szeretnénk). Azt, hogy kiket szeretnénk 'beengedni' a megosztásunkba, a /etc/samba/smb.conf fileban, már beállítottuk, a

hosts allow = 127.0.0.1 192.168.1.0/24 # Engedélyezett hostok
hosts deny = 0.0.0.0/0 # Minden más tiltása

résznél.

A másik cél, hogy a tűzfal is átengedje őket. Ehhez általában az iptables scriptbe kell a következő sorokat beszúrni, majd újraindítani a tűzfalat. Először mentsd le az aktuális beállításokat:

$ iptables-save >> /etc/iptables.bak

Nyisd meg a filet a kedvenc szerkesztőddel, majd a 'COMMIT' sor elé szúrd be a következőket:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 137:139 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 426 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 445 -j ACCEPT

Mentés, majd:

$ iptables-restore /etc/iptables.bak

Leellenőrizni a beállításokat az

$ iptables -L

paranccsal tudod.


Megjegyzés:
Ez csak egy nagyon egyszerű példa a tűzfal beállítására. Részletesebb információért lásd a HOGYAN Iptables cikket.

[szerkesztés] Nyomtatás Linux nyomtatóval

[szerkesztés] Samba

Ha a nyomtatónk a linuxos géphez van csatlakoztatva, a fentebb említett csomagok telepítése után még bőven van mit tenni.

Az első, és legfontosabb, közölni a sambával, hogy egyáltalán van nyomtatónk. Ehhez az /etc/samba/smb.conf fileba kell beszúrni néhány sort:

File: /etc/samba/smb.conf
 [global]
 ..
 printcap name = cups
 printing = cups
 load printers = yes
 ..
 # A nyomtató információinak beállítása
 [print$]
 comment = Printer Drivers
 path = /etc/samba/printer # itt lesz a nyomtató drivere
 guest ok = yes
 browseable = yes
 read only = yes
 # Nyomtató-adminok megadása, vesszővel elválasztva több felhasználó is megadható
 write list = root

 # Egy nyomtató megosztása - a név lehetőleg ne tartalmazzon nem egyértelmű karaktereket
 [HPDeskJet930C]
 comment = HP DeskJet 930C Network Printer
 printable = yes
 path = /var/spool/samba
 public = yes
 guest ok = yes
 # Megintcsak az adminok beállítása
 printer admin = root

 # Végül a nyomtatómegosztás beállítása
 [printers]   
 comment = All Printers
 browseable = no 
 printable = yes   
 writable = no
 public = yes   
 guest ok = yes
 path = /var/spool/samba
 # Adminok...
 printer admin = root

Ha Window$os gépről szeretnél nyomtatni, ne állítsd be a 'guest only = yes'-t a [global] részben, sokszor problémát okozhat. Inkább hozz létre egy külön felhasználót a nyomtatáshoz (pl. printeruser)!

Ezután létre kell hozni néhány könyvtárat:

# mkdir /etc/samba/printer
# mkdir /var/spool/samba
# mkdir /home/samba/public</pre>

A printer beállításához legalább egy samba felhasználót létre kell hozni:

# smbpasswd -a root 
(Ha van még rooton kívül más printeradmin: )
# smbpasswd -a username

Fontos, hogy a felhasználóknak szerepelniük kell az /etc/passwd fileban, és a jelszavaknak meg kell egyezniük az abban tároltakéval!


[szerkesztés] CUPS

A CUPS konfigfileja az /etc/cups/cupsd.conf helyen található. Elég jól kommentált példafileal találjuk szemben megunkat, a következő felsorolás csak a lényeges változtatásokat tartalmazza.

File: /etc/cups/cupsd.conf
 ServerName PrintServer          # A printerserver neve
 ServerAdmin root@PrintServer    # Admin

 AccessLog /var/log/cups/access_log # Nemvalószínű, hogy meg kell változtatnod...
 ErrorLog  /var/log/cups/error_log  # ...ahogyan ezt sem

 LogLevel  debug # installálás és teszt közben ól jön, később átállíthatod 'info'-ra

 MaxClients 100 # Maximális csatlakozások száma. Előfordulhat, hogy a CUPS valamit félreért, és DoS attacknak fogja fel pl. 
                # a webes felületen történő konfigurálást. Ha ez történik, állítsd magasabb értékre.

 BrowseAddress @IF(eth0) # A net megfelelő kapcsolatot írd be

 <Location />
 Order Deny,Allow
 Deny From All
 Allow From 192.168.1.*  # A meegengedett kapcsolatok címe.
                         # A 192.168.1.* pl. minden kapcsolatot engedélyez a 192.168.1.0 hálón.
 </Location>

 <Location /admin>
 AuthType Basic
 AuthClass System
 Allow From 192.168.1.*  # ugyanaz, mint feljebb, a 192.168.1.0-ról a kapcsolatok engedve,
                         # azonosítás után adminisztratív tevékenységet is folytathatnak

 Order Deny,Allow
 Deny From All
 </Location>

Ki kell szedni két kommentkaraktert a /etc/cups/mime.convs és /etc/cups/mime.types fileokból, hogy M$ dokumentumokat is nyomtatni tudjunk.
Ezek rendre:

File: /etc/cups/mime.convs
application/octet-stream        application/vnd.cups-raw        0</pre>

és

File: /etc/cups/mime.types
application/octet-stream

Ezután beállíthatjuk, hogy a CUPS induljon a boot során, és el is indítjuk most rögtön (vagy újraindítjuk, ha futott):

# rc-update add cupsd default
# /etc/init.d/cupsd restart


[szerkesztés] Nyomtató telepítése CUPS-hoz

Először is, látogass el a http://linuxprinting.org oldalra,és töltsd le a nyomtatódnak megfelelő PPD filet. Válaszd a bal oldalon a 'Printer Listing' pontot, keress rá a nyomtatód típusára, majd szedd le a 'recommended driver'-t. A megyjegyzéseket, hozzáfűzéseket erősen ajánlott átolvasni, ahogy a CUPS quickstart részt is.

A letöltött PPD filet helyezd át a /usr/share/cups/model könyvtárba, így minden készen áll a telepítésre. Ezt megteheted parancssoron vagy a CUPS web-felületén keresztül, amit a böngészőben a http://PrintServer:631 címen érhetsz el, ha a CUPS már fut.

# lpadmin -p HPDeskJet930C -E -v usb:/dev/ultp0 -m HP-DeskJet_930C-hpijs.ppd

Figyelj oda, hogy a megfelelő paramétereket használd: a -p kapcsoló után az smb.conf-ban beállított nyomtatónév kell kerüljön, az -m után pedig a letöltött ppd fileé.
Az usb:/dev/ultp0 rész helyettesítendő a nyomtató usb, illetve párhuzamos port használata esetén a parallel:/dev/akármi elérési utakkal.

Ezek után már készen állsz egy tesztoldal nyomtatására.


[szerkesztés] Window$ driverek telepítése

Ha a nyomtató megfelelően működik, itt az idő a Window$ driverek telepítésére, hogy a kliensek is nyomtatni tudjanak. Ez a funkció a Samba 2.2-es verziója óta elérhető. A Hálózati Kapcsolatok alatt elérhető Nyomtatók és Faxok részre kattintva jobb gombbal, a 'Driver automatikus letöltése' lehetőséggel alkalom nyílik a meghajtóprogramok automatikus telepítésére, ahelyett, hogy manuálisan kellene azt megtenni a kliens oldalon.

Kétféle drivert használhatunk, az egyik az Adobe PS névre hallgató rendszere (postscript nyomtatókhoz), a másik a CUPS PS meghajtója, ami a CUPS honlapjáról érhető el, a 'CUPS Driver for Windows' pont alatt. A funkciók gazdagságában nincs különbség a kettő közül, ám az Adobe termékét Window$ alatt kell kicsomagolni, és sokkal több vesződséggel jár,

Itt csak a CUPS driverét tárgyalom. A letöltendő file neve cups-samba-5.0rc3.tar.gz. Kicsomagolás után egy scripttel telepíthető.

# tar -xzf cups-samba-5.0rc2.tar.gz
# cd cups-samba-5.0rc2
# ./cups-samba.install

A drivereket tulajdonképpen a cups-samba.ss tar file tartalmazza (cups5.hlp, cupsdrvr5.dll and cupsui5.dll).

Ezután a cupsaddsmb scriptet használjuk, ami a CUPS-al érkezik. A man-ját érdemes elolvasni!
A lenti példában a -v HPDeskJet930C helyettesíthető az -a kapcsolóval, ami minden fellelhető nyomtatót telepít.

# cupsaddsmb -H PrintServer -U root -h PrintServer -v HPDeskJet930C

Néhány általánosabb hiba, ami előfordulhat:

  • A -h és -H kapcsolók utáni PrintServer címe néha feloldatlan marad, így nem sikerül azonosítani. Ha egy 'Warning: No PPD file for printer "CUPS_PRINTER_NAME" - skipping!' féle hiba jelentkezik, próbáld meg a PrintServer rész átírni localhostra, és próbáld mégegyszer.
  • Ha a parancs a 'NT_STATUS_UNSUCCESSFUL' hibával lép ki, annak sajnos sokféle oka lehet. Amit meg lehet próbálni, hogy a security = user beállítással próbálod az smb.coonf fileban, aztán, ha így sikerült, visszaállítod arra, amin volt.

Ha minden jól ment, mostanra az /etc/samba/printer/W32X86/2 könyvtárban megtalálható a 3 fent említett file, és a letöltött ppd file, átnevezve a nyomtató nevére. Ezzel a driverek fent is vannak.


[szerkesztés] Telepítés befejezése

A telepítés után győződj meg arról, hogy a megosztának szánt könyvtárak valóban léteznek, és a megfelelő engedélyekkel.


[szerkesztés] Teszt

A telepített beállítások tesztelésére a testparm programot használjuk, ami valami ilyesmit fog kiírni:

Kód: testparm
# /usr/bin/testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[printers]"
Global parameter guest account found in service section!
Processing section "[public]"
Global parameter guest account found in service section!
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
...
...


[szerkesztés] A Samba indítása

Ahhoz, hogy a Samba a boot során elinduljon, és most rögtön meg is tegye ezt:

# rc-update add samba default
# /etc/init.d/samba start


[szerkesztés] A Samba ellenőrzése

A logfileok nézegetésén kívül, lehetőség van a futó szolgáltatás ellenőrzésére:

# smbclient -L localhost
Password:


[szerkesztés] Nyomtatás Window$ nyomtatóval

A beállítás ebben az esetben sokkal egyszerűbb.

Győződj meg róla, hogy a CUPS fut:

# /etc/init.d/cupsd restart
  • Nyisd meg a böngésződben a 127.0.0.1:631-es portot,
  • Menj a 'Manage Printers' részhez
  • Nyomj rá az 'Add Printer' gombra
  • Írd be a felhasználót/jelszót, ha kell (root)
  • Írj be egy nevet a nyomtatónak, pl. HPDeskJet930C, a többi opcionális
  • Válaszd ki a 'Windows Printer via SAMBA' pontot
  • Devicenak írd be a nyomtató elérési útját, smb://felhasználónév:jelszó@host/nyomtató_megosztási_neve formában
  • Válaszd ki a nyomtatót a Make listából


[szerkesztés] Kliensek konfigurálása

[szerkesztés] *NIX

[szerkesztés] CUPS

Bármilyen *NIX variáns esetén, az egyetlen dolog, ami kell, a CUPS. Hogy ezt hogyan kell telepítened, nézd meg a disztribúció leírásában.
Gentoon, valahogy így kell:

# emerge cups
# nano -w /etc/cups/client.conf
ServerName PrintServer

Ennyi az egész.

[szerkesztés] Nyomtatás

(Nyomtató külön kivaálasztásával)
# lp -d HPDeskJet930C anything.txt

(Alapértelmezett nyomtatóval)
# lp foobar.whatever.ps

Egy böngészőből, a http://printserver:631 linket behozva egy webes felületen keresztül intézhetsz minden fontosat.

[szerkesztés] Window$

Itt megint csak egyszerű a dolgunk, csak meg kell keresni a nyomtatót a hálózaton, majd csatlakozni. A driverek letöltése után a nyomtatás már indulhat is.


[szerkesztés] Window$ megosztás mountolása Linux alá

Ahhoz, hogy ezt megtehessük, a kernelben be kell állítani egy-két opciót.

Kód: Kernel config
 CONFIG_SMB_FS=m
 CONFIG_SMB_UNIX=y

Fordítás, modul install, reboot, majd a mount paranccsal érhetjük el, amit akarunk:

# mount -t smbfs //PrintServer/public /mnt/public
(Ha jelszó szükséges)
# mount -t smbfs -o username=felhasználónév,password=jelszó //PrintServer/public /mnt/public
  • Ha az első lehetőséggel próbálunk meg olyan megosztást mountolni, amihez jelszó szükséges, nincs semmi gond, a program rákérdez.
  • Ha a névfeloldás nem tökéletes, az IP-cím megadásával, még így is elérhetünk gépeket a hálózaton (pl. //192.168.0.4/share)

[szerkesztés] Linkek

A lap eredeti címe: „http://hu.gentoo-wiki.com/HOGYAN_Samba
Személyes eszközök