Fájlszerver¶
Kisebb vállaltok számára a Linux operációs rendszeren futó Samba nevű szoftver tökéletes megoldás lehet egy fájlszerver létrehozására. A fájlszerver kialakításának alapjait a Microsoft Windows 3.11-es (Windows for Workgroups) változata tartalmazta először, ami 1992-ben jelent meg. Bár ez számos változtatáson esett át (az akkori Windows-ok még a mai értelemben vett felhasználó kezeléssel sem rendelkeztek) lehetővé tette könyvtárak és nyomtatók megosztását a hálózat további gépei számára. A Microsoft erre egy ún. smb (Server Message Block) nevű protokollt használt, amit később Linuxra is implementáltak. A Samba elnevezés ennek emlékét őrzi, a névválasztás (állítólag) egy szótár s*m*b* alakú szavainak kiválasztásával történt.
Samba telepítése¶
A fájlszerver telepítését a Samba telepítésével kezdjük, melyet a szokásos módon végzünk el. Mivel később szükség lesz rá, egy Midnight Commandert is installálunk. A telepítéshez szükséges parancsok az alábbiak:
root@srv1# apt-get update
root@srv1# apt-get install samba mc
A fájlszerver konfigurálása szövegfájlok módosításából, felhasználók és csoportok felvételéből és módosításából állnak, mely során a módosítások érvényre juttatásához újra kell indítani a samba szolgáltatást. Mivel ezt négy paranccsal lehet megtenni, a gyakorlati munka felgyorsítására érdemes létrehozni egy scriptet erre, amit az /etc/samba/
könyvtárba teszünk. A script neve legyen restart
, az elkészítéséhez használd az mcedit programot úgy, ahogyan azt a shell scriptek készítésekor már megtanultuk.
#!/bin/bash
systemctl stop smbd.service
systemctl start smbd.service
systemctl stop nmbd.service
systemctl start nmbd.service
A scriptet futtathatóvá kell tenni a chmod paranccsal, enélkül nem tudnánk azt elindítani.
root@srv1# chmod 700 /etc/samba/restart
A Unix rendszerekben a programok beállításainak általános módja a szöveges konfigurációs fájlokban szereplő paraméterek értékeinek módosítása. Ezek általában a /etc
könyvtárban vannak, így van ez a Samba esetében is.
A fájlszerver működését a /etc/samba/smb.conf
fájl tartalmának módosításával kell paraméterezni. Ez általában legalább három szekcióból áll, a [global]
, a [homes]
és néhány más, az egyes megosztásokat leíró továbbiból. Az egyes szekciókban számos paraméter adható meg, példáinkban az egyszerűség kedvéért csak a legszükségesebbeket használjuk. Ha „éles” fájlszervert készítesz, érdemes a további paramétereknek is utánanézned, esetleg tanulmányozni a „gyári” smb.conf
-ban szereplő beállításokat és magyarázatokat.
A [global]
a szerver teljes egészére vonatkozó beállításokat tartalmazza. Az egyes értékek jelentése a következő:
- workgroup:
a Microsoft kezdeti koncepciójában az egyes munkaállomásokat ún. munkacsoportokba lehet szervezni, melyekre névvel lehet hivatkozni. Az így csoportosított gépek közt könnyebb a keresés, mivel a Windows felületén a szükséges csoport kiválasztható. A munkacsoport nevét a kliensben is megadják, így ő ismeri azt, hogy melyik munkacsoportba tartozik. A munkacsoport semmilyen korlátozást nem jelent, az csupán leíró jellegű információ. Ennek értéke példánkban
EKKE
.- server string:
a munkaállomáson, a hálózatban levő számítógépek részletes lista nézetben történő tallózásakor megjelenő név állítható itt be. A
%h
helyére a számítógép hostneve kerül, a mi szerverünk esetében ez azsrv1
.- interfaces:
amennyiben a szervernek a szolgáltatást nem az összes, hanem csak meghatározott interfészen vagy hálózaton kell nyújtania, a szolgáltatást végző IP cím és maszk megadásával lehet azt korlátozni.
- log file:
a Samba az itt meghatározott logfile-ba naplózza a működése során bekövetkezett eseményeket. A
max log size
a keletkező logok maximális méretét adja meg, ennél nagyobb méretű log fájlok nem keletkezhetnek. Alogging = file
a fájlokba logolást írja elő (ez lehetne az operációs rendszer saját syslog rendszere is).
[global]
workgroup = EKKE
server string = %h server (Samba, Ubuntu)
interfaces = 192.168.100.10/24
bind interfaces only = yes
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
server role = standalone server
Az egyes megosztások leírását önálló szekciókban adjuk meg. Ezek létrehozása során érdemes mintákat használni, azaz a megosztást egy sémát a megfelelő adatokkal kitöltve létrehozni. A gyakorlatban jellemző igény egy olyan megosztás létrehozása, amely minden felhasználó számára elérhető, és nem tartalmaz olvasási vagy írási korlátozást. Az alábbi példa egy ilyen szekció leírását tartalmazza:
[kozos]
comment = Kozos
path = /var/fileServer/kozos
browseable = yes
create mask = 0770
directory mask = 0770
public = yes
writable = yes
valid users = @smbusers
write list = @smbusers
Az egyes sorok jelentése a következő:
- [kozos]:
a szekció és egyúttal a megosztás neve. A szerver megosztásainak tallózásakor ez a név fog megjelenni, ezért a szerveren belül értelemszerűen egyedinek kell lennie.
- comment:
A lista nézetben az itt megadott magyarázó szöveg lesz olvasható a kliensen.
- path:
az itt meghatározott könyvtár tartalmazza a megosztás fájljait, ez lesz az adatkönyvtár. Ajánlatos az egyes megosztásokat egy adott könyvtárból létrehozni, ezzel megkönnyítve a fájlszerver későbbi teljes mentését. A változó tartalmú fájlok, adatok helye a Unix rendszerekben a
/var
könyvtárban van, a samba megosztások létrehozását példáinkban a/var/fileServer
könyvtárból végezzük.- browseable:
yes
értéke mellett a megosztás tallózható lesz, azaz megjelenik a munkaállomások listáiban. Ha az értékeno
, akkor ugyan nem lesz látható, de ha valaki számára ismert a neve, akkor tudja használni – a hozzáférést tehát ez nem korlátozza.- create mask:
az újonnan létrehozott fájlok jogosultsági beállítása a paraméterben megadott érték lesz.
- directory mask:
az újonnan létrehozott könyvtárak jogosultsági beállítása a paraméterben megadott érték lesz.
- public:
amennyiben az értéke
yes
, a megosztás tartalma minden felhasználó számára szabadon olvasható.- writeable:
amennyiben az értéke
yes
, a megosztás tartalmát minden felhasználó írhatja.- valid users:
a
public = no
értéke mellett használjuk azért, hogy megadjuk a megosztáshoz olvasási hozzáféréssel rendelkező felhasználók listáját. Vesszőkkel elvélasztva sorolhatók fel felhasználók és csoportok is, utóbbiakat @ jellel kell kezdeni. Ajánlott csak csoportokkal dolgozni, a gyakorlatban a felhasználók egyesével történő kezelése meglehetősen kusza konfigurációs fájlhoz vezet.- write list:
azon felhasználók és csoportok megadására szolgál, akik a megosztásban szereplő fájlokra írási jogosultsággal rendelkeznek. Ők hozhatnak létre könyvtárakat és fájlokat, módosíthatják és törölhetik azokat.
Állítsuk be a fájlszerverünket! Dolgozzunk az /etc/samba
könyvtárban! Először nevezzük át az eredeti smb.conf
fájlt smb.conf.old
-ra!
root@srv1:/etc/samba# mv smb.conf smb.conf.old
Ezt követően az mcedit smb.conf paranccsal hozzuk létre az samba konfigurációs fájlját az alábbi tartalommal (érdemes átmásolni):
[global]
workgroup = EKKE
server string = %h server (Samba, Ubuntu)
interfaces = 192.168.100.10/24
bind interfaces only = yes
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
server role = standalone server
[kozos]
comment = Kozos
path = /var/fileServer/kozos
browseable = yes
create mask = 0770
public = yes
writable = yes
valid users = @smbusers
write list = @smbusers
Ezzel elkészítettük a konfigurációs fájlt, de még nem vagyunk készen, mert nem csak a felhasználóink hiányoznak a rendszerből, hanem az adatkönyvtáraink sincsenek még készen.
Felhasználó felvétele¶
Az első felhasználónk Szabó Lajos lesz, akinek a szabo.lajos
bejelentkezési nevet adjuk. Fontos tudni, hogy ahhoz, hogy valamelyest kettős adminisztrációt kell végeznünk: nem léteznek kizárólag fájlszerver felhasználók, a rendszer felhasználóit kell jogosítanunk a samba megosztásainak használatára. Ezért minden felhasználót fel kell venni normál felhasználóként, majd egy újabb paranccsal a fájlszervbe is. A Unixok felhasználó kezeléséről, a szükséges parancsokról itt olvashatsz bővebben.
Először tehát felvesszük Szabó Lajost normál felhasználóként. A gyakorlatban az itt megadott jelszót nem szoktuk számukra elérhetővé tenni, mivel az esetek túlnyomó többségében nem akarjuk lehetővé tenni számukra, hogy ssh-n bejelentkezzenek. Amennyiben a felhasználó nevében pont van, az adduser parancs számára „erőltetni” kell annak használatát, ezt a --force-badname
paraméterrel lehet megtenni.
root@srv1# adduser szabo.lajos --force-badname
...
Hozzuk létre Szabó Lajos samba hozzáférését, vegyük fel a fájlszerver user adatbázisába! Itt ne használd az előzőleg megadott jelszót, válassz másikat!
root@srv1# smbpasswd -a szabo.lajos
Ha Szabó Lajos számára hozzáférést akarunk biztosítani a kozos
megosztáshoz, akkor a megosztás szekciójában leírt @smbusers csoport miatt fel kell vennünk őt ebbe a csoportba. Sajnos ebben a pillanatban még a csoport sem létezik, ezért először elkészítjük azt az 500-as csoport azonostóval, majd hozzáadjuk Lajos ehhez a csoporthoz. (Ha ezek a parancsok problémát jelentenek, nézd át a már említett korábbi tananyagot itt).
root@srv1# groupadd -g 500 smbusers
root@srv1# usermod -G 500 szabo.lajos
Adatkönyvtárak létrehozása¶
A fájlszerverünknek már van egy felhasználója, aki jogosult a kozos
mappa használatára, de a megosztás path
direktívájában megadott /var/fileServer/kozos
könyvtár még nem létezik. Hozzuk ezt létre, és állítsuk be a jogosultságait úgy, hogy annak tartalmát az smbusers
csoport tagjai írhassák!
root@srv1# mkdir -p /var/fileServer/kozos
root@srv1# chgrp smbusers /var/fileServer/kozos
root@srv1# chmod 770 /var/fileServer/kozos
Itt az idő, hogy teszteljük a fájlszervert! Mivel számos beállításon változtattunk, indítsuk újra a már előkészített restart scripttel a /etc/samba
könyvtárban, majd teszteljük a kapcsolódás működőképességét!
root@srv1:/etc/samba# ./restart
Kapcsolódás a fileserverhez¶
A Windows gépeken több módja is van a fájlszerver kapcsolat felépítésének. A grafikus megoldás talán egyszerűbb, de a parancssoros megoldást is gyakran alkalmazzák, főleg nagyobb számú megosztás felvételének automatizálására. A folyamat végeredményeként egy hálózati meghajtó egy betűjellel ellátott meghajtóként lesz elérhető úgy, ahogyan a gépben levő merevlemezt vagy SSD-t is. Bármelyik módszert is használjuk a kapcsolódáshoz, annak során a szerver neve/IP címe mellett meg kell adni a megosztás nevét is. Erre a Microsoft az ún. UNC (Universal Name Convention) megadási formát alkalmazza, amely egy \\szerver\megosztás
formájú szöveg. Bár a szerver megadható névvel is, személyes tapasztalatom alapján ez a később tárgyalásra kerülő VPN kapcsolatok során problémát okozhat, ezért itt kivételesen az IP cím alkalmazását javaslom. Példánkban a kozos
nevű megosztásra tehát \\192.168.100.10\kozos
néven hivatkozunk majd.
Az alábbi példában a Sajátgép ablakának címsorába a \\
karaktereket követően gépeljük be a szerver IP címét!

A szerver kapcsolat felépítése UNC megadásával¶
A kapcsolat létrejötte után meg kell adni a fájlszerver felhasználójának nevét és jelszavát. A hozzáférés adatai az ablakban szereplő checkbox-szal megjegyeztethető, így az egy újraindítást követően is elérhető marad.

Bejelentkezés a fájlszerverbe¶

Hálózati meghajtó csatlakoztatása¶

Hálózati meghajtó csatlakoztatása¶

A K: meghajtó összerendelése¶
Egy megosztás kapcsolása parancssorban is elvégezhető a Windows net parancsával. Ehhez meg kell adni a használandó meghajtó nevét, ami most K: lesz (K, mint közös), valamint a megosztást UNC formában. A parancsnak adható egy /yes
paraméter is, ekkor az összerendelési adatokat a Windows megjegyzi és újraindítás után is megtartja.
C:\> net use K: \\192.168.100.10\kozos /yes
A kapcsolat bontása szintén elvégezhető a net paranccsal, ekkor elég a helyi meghajtót meghatározni:
C:\> net use K: /delete
A kapcsolat felvétele után próbáld ki a könyvtárak létrehozását, fájlok másolását a hálózati meghajtóra, majd ellenőrizd a Linux szerveren, hogy azok valóban láthatók-e a /var/fileServer/kozos
könyvtárban!
Home könyvtár a fájlszerveren¶
A Samba speciális megosztásként kínálja a felhasználók saját (tehát felhasználónként eltérő) home könyvtárainak elérését. Bár személy szerint ezért nem vagyok oda nem csak azért, mert a home könyvtárak tartalmát a felhasználó törlésekor könnyű elveszteni, és mentésükről, vagy a cégtől való távozásukkor szükséges archiváláskor ezekkel külön kell foglalkozni. A gyakorlatban pedig ritkák azok a céges feladatok, amelyek a felhasználó számára a többiektől teljesen elszeparált, csak általuk használandó könyvtárat igényelnek. Mindenesetre érdemes megismerni ennek a speciális megosztásnak a használatát. A home könyvtár megosztását definiáló szekció az alábbi formájú:
[homes]
comment = Home konyvtarak
browseable = no
read only = no
create mask = 0700
directory mask = 0700
valid users = %S
Az home könyvtár megosztásakor első és legfontosabb a [homes]
név kötelező használata, ez a Samba számára a home könyvtárakat definiálja. Ezért nincs szükség a felhasználónként eltérő path
meghatározására, az ebben a definícióban nem is szerepel. A browseable = no
alapértelmezett beállítás, ez megakadályozza, hogy az amúgy névvel megjelenő home könyvtár újabb példányban, homes
néven is browse-olható legyen. A create mask
és directory mask
0700
értéke a felhasználó és csak a felhasználó teljes hozzáférését állítja be. A valid users = %S
pedig csak a felhasználó számára biztosít hozzáférést.
Amennyiben ez a szekció jelen van az smb.conf
-ban, a felhasználók számára a home könyvtáraik is láthatóvá válnak és csatolhatók is.
Feladatok¶
A főnököd a fájlszerveren a munkaügyön dolgozók számára egy elkülönített terület létrehozását kéri. Hozd létre ezt a megosztást
munkaugy
néven, a fáljokat tárold a/var/fileServer/munkaugy
könyvtárban! A hozzéférések beállításához hozz létre egymunkaugy
nevű csoportot! Demonstráld a hozzáférést egy új felhasználó, Kovács Pélné felvételével! Biztosítsd a hozzáférést a már korábban felvett Szabó Lászlónak is! (Megoldás)Készíts egy vezetők nevű megosztást, amihez csak azok férnek hozzá, akik tagjai a
vezetok
csoportnak! Ügyelj arra, hogy egymás fájljaihoz mindannyian hozzáférjenek, akár törölni is tudják azokat!Kapcsolódj a munkaállomásról a router mögött levő fájlszerverhez VPN kapcsolaton!