LAKI PINGVINI<>
092017<><>

U ritmu sambe

Igre mreže i resursa

Prva asocijacija na pomen sambe definitivno je karneval u Rio de Žaneiru. Milioni ljudi su na ulicama tokom pet ludih dana popunjenih pesmom, plesom, igrom i radovanjem, uz zanosne devojke i ekstravagantne kostime. Ali kakve to ima veze sa računarima?! Australijski student Endrju Tridžel je krajem 1991. godine odlučio da kreira softver za povezivanje UNIX računara sa mrežama koje su za osnovu koristile MS-DOS infrastrukturu, i pri tom projekt nije imao nikakvo posebno ime, već ga je autor nazvao „A Unix file server for DOS Pathworks”. U jednom trenutku Tridžel shvata da je on u stvari implementirao podršku za NetBIOS protokol, pa u skladu sa tim, verzija projekta 1.5 iz decembra 1993. godine nosi naziv nbserver. Nedugo posle toga, autor menja naziv u smbserver (zbog podrške klijentima koji koriste SMB/CIFS protokol), ali uskoro stiže obaveštenje da naziv SMBserver pripada kompaniji Syntax. Priča dalje govori da je Tridžel seo za računar i u potrazi za novim nazivom koristio pretraživanje rečnika uz pomoć komande grep sa uslovom da se slova S, M i B nalaze u datom poretku. Pojavila se reč Samba i sve ostalo je istorija.

Samba se ne smatra protokolom (mada u sebi sadrži elemente protokola), već paketom programa čija je funkcija da omoguće komunikaciju računara sa mrežnim resursima.

Instalacija i podešavanje

Distribucije Linuksa najčešće dolaze sa već instaliranom Sambom, dok kod drugih to nije slučaj. Najlakši način da proverimo da li je instalirana, vrši se sledećom naredbom:

samba --version

Ukoliko je instalirana, dobićemo postojeću verziju paketa i varijantu distribucije, a ukoliko nije, dobićemo obaveštenje da zadata komanda nije poznata našem operativnom sistemu, pa Sambu na sistemima baziranim na Debianu instaliramo sledećom naredbom:

sudo apt-get install samba

Vrlo se često uz osnovni Samba paket instaliraju i određeni dodaci, a mi smo na distribuciji Ubuntu 16.04 (Xenial) instalirali sledeće pakete:

sudo apt-get install samba samba-common system-config-samba python-glade2 gksu

 
Nakon završene instalacije, u direktorijumu /etc/samba se pojavljuje konfiguracioni fajl pod nazivom smb.conf u koji se zapisuju svi parametri važni za funkcionisanje sistema deljenja mrežnih resursa.

Treba istaći da ovaj fajl može da bude izuzetno jednostavan i kratak, ali isto tako može da bude i dosta dugačak i komplikovan za analiziranje. Originalni fajl konfiguracije je početnicima prilično zbunjujući, pa ćemo, sa namerom da materiju izložimo na što jednostavniji način, početi od potpuno praznog dokumenta. Međutim, taj početni konfiguracioni fajl je koristan da bismo uočili neke stvari. Oni koji se sećaju Windowsa 3.x brzo će uočiti sličnost smb.conf sa .ini fajlovima koji su se nekada koristili za čuvanje svakojakih podešavanja, kako u okviru operativnog sistema, tako i kada su u pitanju aplikacije. Reč je o običnim tekstualnim fajlovima uređenim po jednostavnim pravilima. Sve vrednosti su zapisane po sintaksi ključ=vrednost. Ukoliko neku funkciju želimo da onemogućimo, pred nju postavljamo znak „#” ili „;”, koji imaju funkciju komentara. Fajl je logički podeljen na nekoliko segmenata čiji se naziv nalazi u okviru srednjih zagrada. Svaki pojedinačni segment predstavlja definiciju deljenja mrežnog resursa ili je u pitanju takozvani metaservis potreban za definisanje funkcija Samba servera. Ti segmenti imaju i svoj posebni naziv i ponegde ćete pročitati da se radi o „stanzama” (stanza = strofa).

 
Generalno, u većini konfiguracionih fajlova postoje tri osnovna dela. Prva sekcija obeležena kao [global], u skladu sa svojim nazivom sadrži podešavanja koja važe za ceo fajl. Dakle, sve što je navedeno ovde važi i za sve ostale segmente. Segment pod nazivom [homes] je metaservis čija je funkcija da omogući deljenje ličnog direktorijuma Home za svakog pojedinačnog korisnika sistema. Metaserver pod nazivom [printers] omogućava svakom od priključenih štampača da budu dostupni ostatku korisnika u mreži.

Cilj nam je da na najjednostavniji način predstavimo korišćenje Samba servera, pa ćemo za tu svrhu koristiti stari dobri Samba Server Configuration Tool (system-config-samba), koji smo ranije instalirali. Reč je o veoma jednostavnom editoru sa minimumom raspoloživih opcija. Klikom na ikonicu sa znakom „+”, pojavljuje se dijalog Create Samba Share, koji od nas zahteva da preciziramo putanju do željenog direktorijuma, njegov mrežni naziv, opis namene, kao i da odredimo da li će taj folder imati mogućnost zapisivanja i da li će biti vidljiv na mreži. Kada to završimo, prebacujemo se na stubac pod nazivom Access, gde određujemo koji će korisnici imati pravo da pristupaju resursima ovog mrežnog resursa. Za sada određujemo da svi korisnici imaju pristup, kako bi stvar bila što jednostavnija. Nakon završenog posla gledamo naš smb.conf fajl koji smo prethodno ostavili prazan:

[global]

workgroup = workgroup

server string =Samba server 4.3.11-ubuntu

username map = /etc/samba/smbusers

security = user

[SMBShare]

path = /srv/SMBShare

comment = deljeni folder

writeable = yes

browseable = yes

guest ok = yes

Parametar workgroup treba da sadrži naziv radne grupe koji je identičan za sve računare u Windows mreži, dok je server string namenjen čuvanju neobaveznog stringa koji opisuje naš server. Inače, ovaj parametar se podešava u okviru opcije menija Preferences: Server settings: Basic: Description. Treći parametar, username map, govori serveru gde se nalazi fajl sa spiskom korisnika sistema. Korisnicima koji već postoje u okviru sistema, dodeljujemo lozinke za pristup Samba resursima preko komande:

smbpasswd -a korisnicko_ime

Poslednja stavka u bloku [Global] je security i govori o načinu autentifikacije korisnika. Postoje sledeći režimi:

User – Pristup dozvoljen specificiranim korisnicima

Server – Provera pristupa na drugom serveru

Share – Deljeni resurs ima šifru

Domain – Koristi se za pristup mreži sa domenima

Parametri u okviru bloka [SMBShare] definišu ponašanje deljenog direktorijuma koji će imati mrežni naziv jednak nazivu bloka u srednjim zagradama. Putanja do direktorijuma se navodi u okviru parametra path. Polje comment sadrži tekst objašnjenja funkcije resursa. Parametar writeable govori da drugi korisnici mogu upisivati podatke u folder, dok browseable govori da li će resurs biti vidljiv na mreži. I na kraju, guest ok postavljen na „yes” govori da će biti dozvoljen pristup korisnicima u svojstvu gosta. Ukoliko želite da naziv servera bude različit od imena računara (hostname), potrebno je koristiti parametar:

netbios name = neki_drugi_naziv

Prilikom čitanja parametara, sistem ne pravi razliku između velikih i malih slova. Pojedini parametri se mogu pisati na više načina, kao što je slučaj sa writable i writeable, kao i njihov antonim u obliku parametra read only, koji je u obliku read only = yes ekvivalentan značenju writable/writeable = no.

Povezivanje Windowsovog mrežnog resursa na Linuks (pod pretpostavkom da je instaliran cifs-utils), sistem se izvodi naredbom:

mount -t cifs -o username=korisnik,password=sifra //adresa_servera/resurs /mnt/resurs

Možete se zapitati zašto uopšte ručno podešavati fajl smb.conf, ukoliko to možemo uraditi uz pomoć prethodnog grafičkog front-enda. Kao prvo, videli smo da program koji smo koristili ima veoma ograničen skup funkcija i može pomoći u najjednostavnijim scenarijima. Kao drugo, jako je dobro poznavati funkcionisanje parametara „ispod haube”, u slučaju da nešto krene mimo plana. I kao treće, na pojedinim sistemima u koje spada i Raspberry Pi, pomenuti program je prilično komplikovano instalirati.

Ispravljanje krivih Drina

Nakon što podesimo sve potrebne parametre, potrebno je da izvršimo restart Samba servisa, kako bi se inicijalizovao u skladu sa novim pravilima. Ukoliko budemo imali dovoljno sreće, sve će proraditi kako treba i mi ćemo dobiti pristup mrežnim resursima, kao što će i drugi korisnici u okviru mreže dobiti pristup eventualnim deljenim direktorijumima i printerima na našem računaru. Međutim, u praksi se često dešava da u okviru mreže ne vidimo računare na kojima je pokrenuta Samba ili da ti računari ne vide Windows mrežu. Razloga za to može biti na desetine i na stotine, a mi ćemo u okviru teksta pokušati da damo neke od osnovnih smernica za rešavanje problema.

Prva stvar od koje se obično kreće jeste provera da li je servis Samba uopšte aktivan. A to se postiže uz pomoć komande:

root@PC2:/etc/samba# ps -ea | grep smbd

2366 ? 00:00:00 smbd

2367 ? 00:00:00 smbd

2453 ? 00:00:00 smbd

Samba servisi se sastoje iz dva demona (ekvivalenti Windows servisa). Prvi ima naziv smbd i zadužen je za deljenje mrežnih resursa, dok se drugi naziva nmbd i obavlja funkcije vezane za NetBIOS. Ukoliko dobijete rezultat sličan našem primeru, to je znak da je Samba pokrenuta. Ukoliko nije, u zavisnosti od korišćene distribucije, postoji nekoliko načina da se pokrene ovaj servis, a jedan od onih koji bi trebalo da funkcionišu na većini platformi je:

/sbin/service smb start

Sledi provera ispravnosti podataka zapisanih u smb.conf fajlu. To postižemo uz pomoć terminala i komande testparm koju, u slučaju da je konfiguracioni fajl na standardnom mestu, zadajemo bez ikakvih pratećih parametara. Reč je o malom programu iz paketa Samba koji će proveriti sintaksu i po potrebi dodati određene linije u fajl. Ukoliko je sve u redu, biće ispisan tekst da je fajl „OK”.

Sledeći korak bi mogao da se sastoji u standardnom „pingovanju” sa ciljem da proverimo da li postoji fizička veza sa željenim računarom. Dosta često blokada portova 135, 137, 138, 139 i 445 onemogućava rad Samba servera. Na računarima sa aktivnim fajervolom, potrebno je proveriti da li su navedeni portovi slobodni. Sličnu namenu ima i komanda telnet koja u obliku

telnet racunar 139

ispituje da li je moguće koristiti port 139. Mogućnost pristupanja Samba serveru, proverava se komandom sa Linuks računara:

nmblookup -B <IP_adresa> __SAMBA__

Ukoliko kao rezultat dobijemo adresu servera, to znači da je on aktivan.

Pomoć prilikom rešavanja problema mogu da pruže log fajlovi podsistema Samba koji se nalaze na lokaciji /var/log/samba. Isto tako, ukoliko želimo da kreiramo log fajlove za svakog pojedinačnog korisnika, u okviru [global] bloka dodajemo sledeće parametre:

[global]

log level = 0

log file = /usr/local/samba/lib/log.%u

include = /usr/local/samba/lib/smb.conf.%u

Kada se radi o logovima u vezi sa drugim računarima, onda je potrebno dodati:

[global]

log level = 0

log file = /usr/local/samba/lib/log.%m

include = /usr/local/samba/lib/smb.conf.%m

U slučaju da planiramo pristupanje računaru putem interneta, treba se uveriti da u konfiguracionom fajlu ne postoje sledeće linije koje ograničavaju prava pristupa na lokalnu mrežu:

interfaces = 127.0.0.1/8, 192.168.0.0/24

bind interfaces only = Yes

Veoma često ćemo imati situaciju da iz nekog razloga računari sa Samba serverom neće biti vidljivi u Windows mreži. U takvim situacijama, prvo što treba da učinimo jeste da dodamo sledeće parametre u konfiguracioni fajl:

[global]

wins support = yes

local master = yes

preferred master = yes

Ukoliko ovo ne donese rezultate, problem može da se reši dodavanjem NetBIOS naziva zajedno sa IP adresom u fajl C:\Windows\System32\drivers\etc\lmhosts.

Kada smo već kod Sambe, da kažemo i ovo. Nedavno smo pisali o malveru WannaCry za Windows, nedugo zatim pojavio se i sličan problem na Linuks računarima poznat kao SambaCry. On koristi određene propuste u sistemu Samba, pa se preporučuje ažuriranje do verzije 4.6.4 ili dodavanje parametara u [global] sekciju smb.conf fajla:

server min protocol = SMB2_10

?client min protocol = SMB2_10

client max protocol = SMB3

Sledeća stepenica

Za početnike je od važnosti da konfiguracioni fajl čuvaju u preglednom stanju sa minimumom potrebnih parametara i sa pristupom mrežnim resursima bez potrebe za unošenjem lozinke. Međutim, pre ili kasnije nastupa potreba za naprednim opcijama. Postoji veći broj programa koji nude grafički interfejs za rad sa Samba konfiguracionim fajlom, a najpopularniji je onaj sa imenom Gadmin-Samba.

 
Tab Server settings sadrži veliki broj podešavanja koja se kreću od onih osnovnih (naziv, komentar, radna grupa...), preko onih koji služe definisanju uloge Wins i DNS proksija, pa sve do nekih koja se koriste veoma retko. Pored tabova Users i Shares, kojima je funkcija intuitivno jasna, tu se nalazi i tab sa nazivom Machines, namenjen klasifikaciji računara u mreži. U slučaju korišćenja mreže sa domenima, tu se nalazi istoimeni tab. Osim poslednjeg stupca u nizu pod nazivom Configuration, koji sadrži editor smb.conf fajla, ostatak opcija je informativnog karaktera. Ono što treba pohvaliti kod Gadmina je to što poseduje mogućnost inicijalizacije servera bez korišćenja komandne linije. Kao i u slučaju prethodnog programa, i ovde stoji napomena da je direktni rad sa opcijama smb.conf fajla dobra stvar, pošto nova verzija programa nije izašla već nekoliko godina, tako da mu je budućnost neizvesna.

• • •

Koliko god osnove sistema Samba izgledale jednostavno, reč je ipak o kompleksnom sistemu za čije ozbiljno savladavanje treba mnogo vremena i praktičnog rada. Ovde smo se dotakli tek osnovnih detalja vezanih za Sambu, kako bismo novajlijama na polju Linuksa pokazali na koji način mogu da se umreže sa Windowsom ili sa drugim Linuks računarima i štampačima.

Igor S. RUŽIĆ

 
Samba alati
Šta mislite o ovom tekstu?
Latte Dock 0.6.2
Stacer 1.0.7
Arduino: Termistori
Windows IoT Core
Home / Novi brojArhiva • Opšte temeInternetTest driveTest runPD kutakCeDetekaWWW vodič • Svet igara
Svet kompjutera Copyright © 1984-2015. Politika a.d. • RedakcijaKontaktSaradnjaOglasiPretplata • Help • English
SKWeb 2.54
Opšte teme
Internet
Test Drive
Test Run
PD kutak
CeDeteka
WWW vodič
Svet igara



Naslovna stranaPrethodni brojeviOpšte informacijeKontaktOglašavanjePomoćInfo in English

Svet kompjutera