Fájlmegosztás Samba szerverrel

A Samba megosztás beállítása talán a legjobb módszer a Debian 6 fájlrendszerének a Windows rendszerből eléréséhez, mivel a mögötte álló SMB protokollt már nem kell bemutatni a Windowsnak. Nincs szükség semmilyen speciális kliensszoftver használatára. A Debian 6 telepítésekor pedig a szervert is egy kattintással telepítésre jelölhetjük, vagy akár utólag is feltehető.

Ebben a fejezetben a Samba 3.5.6 fájlmegosztások alapvető beállításait mutatom be két megosztás elkészítésén keresztül.

Tartalomjegyzék

Szerver telepítése

A telepítése már az operációs rendszer telepítésével együtt is történhet, ahogy azt a Debian 6 telepítése VirtualBox 4.2-ben című fejezetben mutattam is.

Ha kimaradt volna, a következő paranccsal pótolható:

apt-get install samba

Konfiguráció

A konfigurációs fájl a "/etc/samba/smb.conf" lesz. A home könyvtárak már alapértelmezetten megosztottak a tulajdonosaik számára, de további könyvtárakat és a beléptethető felhasználókat külön kell engedélyezni.

Felhasználó engedélyezése

Két felhasználót engedélyezzünk. A "web" és a "root" felhasználókat. A következő módon a debian felhasználói közül választhatunk. Jelszót viszont külön be kell gépelni, ami eltérhet a rendszerjelszótól. Én a teszt virtuális géphez itt is a "password" jelszót adom meg, de ennél azért biztonságosabbat ajánlott éles környezetben.

smbpasswd -a root
smbpasswd -a web

Ezek után akár már a hálózati helyek között rá is kattinthatnánk a "SERVER" nevű helyre. Ahol már be lehetne lépni a home könyvtárba. Ezen kívül viszont hozzunk létre két megosztást!

vhosts megosztás

Elsőként a "web" felhasználónak elérhetővé tesszük a "/var/www/vhosts" könyvtárat, mert a saját home könyvtárán kívül itt vannak olyan jogai, ahol garázdálkodhat. Az egyes virtuális hosztokhoz egyenként is lehetne megosztást készíteni, de most ez is tökéletesen megteszi.

A "/etc/samba/smb.conf" fájl legvégére illesszük be a következőt!

[vhosts]
path = /var/www/vhosts
writeable = yes
browseable = yes
valid users = web
  • [vhosts]: A megosztás neve. A szögleges zárójelben levő néven jelenik meg majd a megosztások listájában. Ilyen mappanéven láthatjuk majd a fájlkezelőben.
  • path: A megosztandó könyvtár útvonala
  • writeable: Ha "yes", akkor a megosztott könyvtár írható lesz. Ha "no", akkor csak olvasható. A első "e" elhagyható. "writable"
  • browseable: Ha "yes", akkor a hálózati helyet lenyitva szerepelni fog a listában a megosztás. Ha "no", akkor csak a megosztás nevét ismerve lehet megnyitni a könyvtárat. Például Windows Explorerben beírva a "\\SERVER\vhosts" útvonalat. Ilyen a "homes" megosztás, ami mindenkinek a saját home könyvtárát tartalmazza. Az opció nevéből az első "e" elhagyható: browsable.
  • valid users: Alapesetben mindenki hozzáférhet egy megosztáshoz. A "valid users" opcióval megadhatjuk azokat a felhasználókat szóközökkel elválasztva, akik elérhetik a könyvtárat.

A samba szerver újraindítása után elérhető lesz a megosztás a web felhasználóval. Ez nagy könnyebbséget jelent a weboldalak programozásánál. A rendszerfájlokhoz viszont nem férünk hozzá a "web"-bel. Készítsük el a root hozzáférést a szerver gyökérkönyvtárához!

root megosztás

[root]
path = /
writeable = yes
browseable = yes
valid users = web root
force user = root

Újdonság a "force user", ami után egy felhasználónevet kell írni. Ennek a felhasználónak a nevében fog történni minden művelet. Azaz hiába a "web" felhasználóval lépünk be, a szerveren a "root" fog dolgozni. Ezt nem csak a "root"-tal lehetne megtenni, hanem bármely más felhasználóval.

Másik módja a root jog megszerzésének, hogy admin felhasználókat állítunk be.

admin users = web root

Ekkor viszont a "web" felhasználóval dolgozva a fájlok a "web" csoporttal jönnének létre, de a "root" tulajdonossal.

Van mód a csoport kikényszerítésére is. A "force user" használatával alapértelmezetten a felhasználó elsődleges csoportjával dolgozhatunk. A "force group" opcióval viszont eltérő csoport is megadható.

force group = mysql

Akkor jó, ha valahol lényeges a csoport is. Ilyenkor lehet több megosztást készíteni különböző kényszerített csoporttal és felhasználóval.

A fájlok jogosultságait is ki lehet kényszeríteni. Alapértelmezetten a mappák 0755, míg a fájlok 0744 joggal jönnek létre. Kivéve a home könyvtárakat, ahol 0700 az alap jogosultság. Szükség esetén egy megosztáshoz a "create mask"-kal a fájlok alap jogosultságait lehet megadni, a "directory mask" pedig a könyvtárak létrehozásakor adandó jogokért felelős.

create mask = 744
directory mask = 755

Megjegyzések

További opciók

Ennyi beállítás elég is lehet. A linux parancssorból a

man smb.conf

utasítással lehet tanulmányozni a többi lehetőséget. Vagy akár online dokumentációt is lehet olvasni. Akkor viszont figyelni kell a verziókra.

Rejtett fájlok

Azt még fontos tudni, hogy linuxon a ponttal kezdődő fájlok és mappák rejtettnek számítanak. Így például egy ".htaccess" samba megosztáson keresztül Windowsból sem látható, ha nincs bekapcsolva a rejtett fájlok megjelenítése ( Tools » Folder options » view » Advanced Settings » Files and Folders » Hidden files and Folders » Show hidden files, folders and drives ). Ez a viselkedés felülbírálható a "hide dot files" opció "no"-ra állításával.

Speciális szekciók

Egyes szekcióknak speciális jelentése van. Ilyen a "[global]", ami minden megosztásra érvényes beállításokat tárol. Ha a "hide dot files"-t például itt adjuk meg, akkor mindenhol kikapcsolható a ponttal kezdődő fájlok és mappák elrejtése. Ha a saját "[vhosts]" szekcióban állítjuk be, akkor csak ott lesz érvényes a szabály.

Jogosultságok állítása

A jogosultságokat Windowsból is lehet állítani a fájlon vagy könyvtáron jobb egérgombbal kattintva, majd a "properties" menüben a "Security" fülön. A mappák esetében viszont a Windows 7 nem látja a jelenlegi jogokat. Állítani viszont tudja. Linux parancssorból leellenőrizhető. A fájlokkal már könnyebben boldogul. Ott a jelenlegi jogok is rögtön látszanak.

Eltűnt hálózati helyek

Előfordulhat olyan is, hogy a virtuális gép megosztásai elfedik a saját hálózat megosztásait a hálózati helyek listájában. Kézzel megadott útvonallal továbbra is lehet rájuk hivatkozni.

A virtuális gépnél a következők is segíthetnek a megoldásban:

Host-only hálózat esetén, ha a virtuális gép samba szervere azonos munkacsoportban van, mint a gazda gép, az egyiket helyezzük más munkacsoportba! A szerveren az smb.conf elején a global szekcióban van a "workgroup" opció. Alapértelmezett értéke WORKGROUP Ezt megváltoztatva megszűnhet a probléma a samba újraindításával.

A Windows munkacsoportjának megváltoztatásához lépjünk be a "Start » Computer » System properties » Computer name, domain and workgroup settings" -hez navigálva a "Change settings" menübe! A megjelenő ablakban a "To rename this computer or change its domain or workgroup, click Change. felirat melletti "Change" gombra kattintva egy újabb ablakban a "Worgroup" mezőben lehet átírni a csoportot. Utána újra kell indítani a gépet.

Megosztás felcsatolása Windows 7-ben

Egy Samba megosztás felcsatolható egy betűjellel ellátott meghajtóként is, vagy akár egy konkrét könyvtárba is. Egy samba megosztást más programok is képesek megnyitni a hálózati helyeken keresztül. Nem úgy, mint az SSHFS-nél történt. Ettől függetlenül hasznos lehet felcsatolni a könyvtárakat, ha például nincsenek listázva automatikusan. Vagy más okból kell, hogy egy konkrét könyvtárban legyenek.

Felcsatolás meghajtóként

Válasszuk ki a megosztást és kattintsunk rá jobb egérgombbal! A "Map network drive..." menüt választva rendelhetünk betűjelet a megosztáshoz. A "Reconnect at logon" bejelölésével legközelebbi bejelentkezéskor is megmaradnak a meghajtók. A "root" megosztást én "R", a "vhosts" megosztást "V" meghajtóként csatoltam fel. Mindenki válassza a neki tetszőt! És persze ami elérhető.

Win7, Samba, Map network drive

Felcsatolás mappába

Ehhez meg kell nyitni a Windows parancssort. (Start, keresés CMD-re) Más néven "Windows Command Processor". Jobb egérgombbal kattintsunk az ikonra! Majd "Run as Administrator". Tehát "Futtatás rendszergazdaként". A parancssorban navigáljunk oda, ahova fel szeretnénk csatolni a könyvtárakat. Vagy teljes elérési útvonalt is meg lehet adni a létrehozandó szimbolikus linkeknek.

mklink /d "D:\samba\server\vhosts" "\\SERVER\vhosts"
mklink /d "D:\samba\server\root" "\\SERVER\root"
mklink /d "D:\samba\server\web" "\\SERVER\web"

Első paraméter a "/d". Ez mondja meg, hogy könyvtárra mutató linket hozunk létre. Második a link útvonala. A samba\server könyvtárnak előre léteznie kell. A vhosts, root és web linkeket az mklink hozza létre. Ne hozzuk tehát létre előre könyvtárként őket! A harmadik paraméter a felcsatolandó könyvtár. Dupla backslash után a megosztást biztosító szerver neve, majd a megosztás neve.

A linkeket normál felhasználóval is lehet törölni. Létrehozni viszont csak adminisztrátorral.

Samba kliens Debian 6-on

Az smbclient programmal parancssorból lehet nézelődni a megosztások között, illetve belépni valamelyikre.

Elérhető megosztások listázása

smbclient -L //server/ -U web

Itt a "server" a gépnév. Windows 7-ben a gépnevet a "Start » Computer » System properties" menüben lehet megnézni. Debian 6-ban pedig a /etc/hostname fájl tartalmaza. De alapértelmezetten belépés után a promptnak is része. A "-U" után pedig a felhasználó neve jön.

Választott megosztás böngészése

smbclient //server/vhosts -U web

A jelszó megadása után az új promptból a szokásos "exit" utasítással lehet kilépni.A "help" utasításra pedig a további elérhető parancsokat láthatjuk.

Megosztás felcsatolása Debian 6-ban

Rendszerindulás után

Adminként nincs gond. A következő utasítással felcsatolhatjuk a megosztást:

mount -t cifs //192.168.56.2/vhosts ~/mnt/vhosts -o user=web,pass=password,uid=1000,gid=1000

Itt IP-t adunk meg, mert a mount nem ismeri fel a hálózati hely nevét, hacsak a hosts fájlban vagy a névszerveren be nem állítjuk.

Az uid és a gid a kliensoldali felhasználó uid-je és csoport azonosítója. Így az ő nevében lesz a könyvtár felcsatolva.

A lecsatolás pedig

umount ~/mnt/vhosts

Ezeket viszont normál felhasználóként nem tehetjük meg alapértelmezetten.

Rendszerindításkor

A virtuális gépnél ennek csak úgy van értelme, ha a szerveren csatoljuk fel a gazda gép egy megosztását, mivel fordított esetben a virtuális gép még nem futna. Így a Users megosztáson mutatom be a példát.

A "/etc/fstab" fájlba rootként a következőt kell írni:

//192.168.1.4/Users /home/web/mnt/smb/ cifs uid=1000,gid=1000,credentials=/home/felhasznalo/.smbcredentials/server.web 0 0

A credentials opció után írt fájlt viszont létre kell hozni 0700 jogokkal. Illetve az mnt/smb mappát is. De ott nem kell jogot állítani.

mkdir ~/mnt/smb
mkdir /home/felhasznalo/.smbcredentials
touch /home/felhasznalo/.smbcredentials/server.web
chmod -R 0700 /home/felhasznalo/.smbcredentials/

A "/home/felhasznalo/.smbcredentials/server.web" fájl tartalma pedig a következő

username=web
password=password

Itt az első "password" a jelszó változó neve. Én viszont a "password" jelszót használom a virtuális gépen a web felhasználóhoz is.

Ezzel legközelebbi rendszerindításkor már felcsatolódik automatikusan a meghajtó.

Osszefoglalás

A Windows alapból felismeri a megosztásokat a hálózatban. Debianra pedig gyerekjáték a samba szerver telepítése. Bár rengeteg opciója van, egy nagyon alap szinten könnyű könyvtármegosztásokat készíteni.

Windows 7-ben a felajánlott megosztásokat bármelyik program tudja olvasni, de még nagyobb kényelemi és praktikussági okokból betűjellel ellátott meghajtóként, de akár egy választott mappába is felcsatolhatjuk a megosztást.

Linuxon ugyan nincsenek a Windowsban megszokott meghajtók, de bármelyik könyvtárba felcsatolható egy megosztás. Szükség van viszont root jogokra.

Akár rendszerindításkor is felcsatolható automatikusan egy megosztás. Hálózati probléma esetén viszont lassíthatja a betöltést.

Habár a fájlok jogait valamilyen szinten kliensoldalról is lehet módosítani, azért a terminállal továbbra is barátságban kell maradni. Sok munkát megkönnyít így is egy ilyen megosztás. Windows klienshez (gazda géphez) pedig ideális választás lehet.

A Samba már a 4-es verziónál tart jelenleg. A Debian 6 tárolóból viszont a 3.5-ös telepíthető. A verziók között az egyes opciók használata változhat, amiről érdemes az aktuális dokumentációban tájékozódni.

Végül pedig, hogy el ne veszítsem a jó kis megosztásaimat, elmentem a virtuális gépet "wtk-vm1-v12-samba" néven.

Források

Ajánlott linkek

Kategóriák: 
Megosztás/Mentés

Hozzászólások

Anonymous képe

Sambával csinálok fájlmegosztást, és authentikáció nélkül már sikerült, de azt szeretném megkérdezni, hogy hogyan lehet úgy beállítani a hálózati mappát, hogy a windows kliensen felhasználónevet és jelszavat kelljen megadni az eléréshez, de a windows klienseket ne kelljen tartományba léptetni.
Előre is köszönöm a segítséget!

Rimelek képe

Én ugyan csak virtuális gépen állítgattam samba-t és azt sem profi szinten, de a letölthető virtuális gépen a felhasználókat külön hozzáadtam a samba-hoz.

Ennyi a konfiguráció:

Link: smb.conf

Alul vannak a megosztások. Nincs nagyon speciális beállítás. De kér jelszót.