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
[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:
- ACL ext2/3 esetén: Az EA és ACL kernel opciók szükségesek hozzá (attól függően, melyik filerendszer van használatban - mindkettő engedélyezve lehet)
- Néhány hasznos link az Active Directory, ACL, PDC használatához:
[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.
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)
