< Linux

Hálózati megosztások

Szerző: Sallai András

Copyright © Sallai András, 2016, 2019

Licenc: GNU Free Documentation License 1.3

Web: http://szit.hu

A hálózati fájlrendszerekről

SMB

Server Message Block szavakból. Egy fájlmegosztó protokoll, amely a helyi hálózaton lehetővé teszi állományok írását és olvasását egy távoli gépen. Azokat a könyvtárakat, amelyek elérhetők a távoli gépekről SMB-én keresztül megosztásoknak (angolul share) hívjuk.

CIFS

Common Internet File System szavakból. Az SMB egyik dialektusa. A Microsoft népszerű SMB protokoll megvalósítása.

Van különbség a SMB és a CIFS között? Egy CIFS kliens képes beszélni egy SMB szerverrel és fordítva is.

Manapság nem használunk CIFS-t megvalósítást csak az SMB-t. A Windows világában például a Windows Vista az SMB 2 szabványt használja. A Windows 8 és a Windows Server 2012 az SMB 3-at. A folyton frissülő SMB 2 és SMB 3 megvalósítások nem szeretik a helytelen elnevezéseket.

A Samba egy SMB megvalósítás, Unix rendszerekre, amit Andrew Tridgell kezdett írni. A Samba képes Windows kliensek számára Unix könyvtárak kiszolgálására SMB protokollon keresztül. A Samba több platformon is fut, köztük Linuxon.

NFS

A hálózati fájlrendszerek egyik képviselője az NFS. Az NFS a Networked File System szavakból van. Az NFS-t a Sun Microsystems hozta létre, lényegében ugyanazzal a céllal mint a SMB, de egy másik protokollal. Az NFS kliens nem képes beszélni egy SMB szerverrel.

CIFS megosztások Linuxon

SMB/CIFS megosztások csatolásához a cifs-utils csomag szükséges. (Régebbi rendszereken az smbfs csomag volt használatos.) A cifs-utils telepítése után a mount parancs paramétereként használható lesz a cifs típus is. A mount -t cifs helyett használhatjuk a mount.cifs parncsot is.

A következőket feltételezzük:

az SMB/CIFS szerver IP címe: 192.168.10.2

a SMB/CIFS szerveren megosztáson van egy joska nevű felhasználó

a joska nevű felhasználónak van egy munka nevű megosztása

a helyi gépen a joe felhasználó számára szeretnénk csatolni

a helyi gépen a /home/joe/mnt könyvtárba szeretnénk csatolni

Az első megoldásban egy credentials nevű állományt fogunk használni. Hozzuk létre az állományt:

username=joska password=titok domain=sajatdomain

mount -t cifs //192.168.10.2/munka /home/joe/mnt -o credentials=credentials,uid=joe,gid=joe

A parancs magyarázata:

cifs: milyen típusú fájlrendszert csatolunk

//192.168.10.2/munka: hogyan érhető el a megosztás

/home/joe/mnt: helyben hova szeretnénk csatolni

-o: plusz kapcsolók jönnek

credentials=credentials: A credentials nevű állományban van leírva a megosztáshoz tartozó felhasználónév és jelszó

uid=joe: a helyi gépen a joe felhasználó számára csatoljuk

gid=joe: a helyi gépen a joe csoport számára csatoljuk

A credentials állomány a fenti esetben az aktuális könyvtárban kell legyen. Ellenkező esetben meg kell adni az útvonalat. A credentials állomány helyet, használható rejtett állomány is:

/home/joe/.credentials

A felhasználónév és a jelszó megadható -o paraméterében a username és a password értékeként:

mount -t cifs //192.168.10.2/munka /home/joe/mnt \
-o username=joska,password=titok,uid=joe,gid=joe

Az opciók között megadható az átvitel kódolása is:

mount -t cifs //192.168.10.2/munka /home/joe/mnt \
-o username=joska,password=titok,iocharset=utf8

Használható a mount.cifs parancs is:

mount.cifs //192.168.10.2/munka /home/joe/mnt \
-o username=joska,password=titok,uid=joe,gid=joe

Ebben az esetben nem szükséges megadni a fájlrendszer típusát.

gvfs-mount

dbus-launch bash
gvfs-mount smb://user@192.168.5.2/pub

fstab

A hálózati megosztások beírhatók az fstab állományba, így rendszerindításkor a csatolásuk automatikusan megtörténik. A következőkben ezekre láthatunk néhány példát.

Vendégként elérhető megosztás

... //server/munka /mnt/data cifs defaults,uid=joe,gid=joe,guest 0 0

A guest opció hatására nem kér jelszót csatolási folyamat.

Azonosítás után elérhető megosztások

... //server/munka /mnt/data cifs defaults,uid=joe,gid=joe 0 0
... //server/munka /media/data cifs username=joska,password=titok,iocharset=utf8,sec=ntlm 0 0

Az fstab mindenki számára olvasható, ezért a jelszót és a felhasználónevet külön szokás tenni:

username=joska password=titok

Állítsuk be, hogy csak a tulajdonos tudja olvasni:

chmod 600 /etc/sambaUser

Ezek után:

... //server/munka /mnt/data cifs credentials=/etc/sambaUser,rw,uid=joska 0 0
... //server/munka /mnt/data cifs credentials=/etc/sambaUser,noexec 0 0
//server/munka /media/data cifs credentials=/etc/sambaUser,iocharset=utf8,sec=ntlm 0 0

Esetleg, adjuk meg a helyi gépen joska tulajdonába csatolódjon fel:

//server/munka /media/data cifs uid=joska,credentials=/etc/sambaUser,iocharset=utf8,sec=ntlm 0 0

Csatolás később

Beállíthatjuk, hogy a felcsatolás ne rendszerindulás (boot) folyamata alatt történjen meg. Ehhez tegyük be a noauto opciót.

//server/munka /media/data cifs noauto,credentials=sambaUser 0 0

Vegyük észre a noauto kapcsolót.

Csatolás rendszergazdaként:

mount /media/data

Csatolás felhasználóként:

//server/munka /mnt/a cifs noauto,user,rw,credentials=sambaUser 0 0

Itt fontos, hogy az opciók között ne szerepeljen a defaults, ez konfliktusban áll a user opcióval. A user opció megengedi a felhasználók számára a csatolást. Bekerült még a rw opció, hogy írni is tudják a felhasználók a csatolt fájlrendszert.

Ezek után felhasználóként is kiadható mount parancs:

mount /media/data

A user opció bekapcsolja a noexec, nosuid és a nodev opciókat. Az opció hatására bármely felhasználó képes felcsatolni a megosztást.

Mount felhasználóként

mount.cifs

A mount parancsot csak a root használhatja (kivéve ha az /etc/fstab használjuk a user opciót). A távoli SMB megosztást viszont a felhasználó is jó ha tudja csatolni. Ehhez a mount.cifs parancsot fogjuk használni. Erre akkor lehet szükség, ha a felhasználó nem azzal a felhasználónévvel lép be a linuxos rendszerbe, amellyel eléri az SMB megosztást.

A példában egy janos nevű felhasználó számára állítjuk be a lehetőséget, a 192.168.10.2 IP című szerveren.

Szükség van egy bejegyzésre az /etc/fstab fájlban:

nano /etc/fstab

A fájl végére a következő sorokat vegyük fel.

//192.168.10.2/homes /home/janos/data cifs noauto,user 0 0

A felhasználó könyvtárában a data könyvtárnak léteznie kell.

A felhasználó ezek után így tudja csatolni a megosztását:

/sbin/mount.cifs //192.168.10.2/homes ~/data

A megosztás a gép leállításáig marad csatolva.

sudo

apt install sudo

Szerkesszük a sudo jogokat:

visudo

Hozzunk létre egy ilyen sort:

janos ALL=(ALL) ,/sbin/mount.cifs,/bin/umount /home/janos/home

mkdir -p ~/home

Csatolás:

sudo mount.cifs //server/homes ~/home -o username=sambaUser

Leválasztás:

sudo umount ~/home

A sudo kombinálható az /etc/fstab szerkesztésével. Ebben a felállásban a felhasználó csak a /home/janos/home könyvtárat távolíthatja el.

smbclient

Az smbclient parancs használható a megosztások tesztelésére, de akár fájlok és könyvtárakkal való munkára is.

Információk a szerverről

smbclient -L //server -U joska

Kapcsolódás a pub megosztáshoz:

smbclient //server/pub -U joska

Jelszóval:

smbclient //server/pub -U joska%titok

Ha sikerült belépni ezt kell lássuk:

smb: \>

Kapcsolódás jelszó kérés nélkül:

smbclient -U GUEST //192.168.5.101/pub

Az smbclient néhány kapcsolója:

-N	--no-pass
-B	--browse
-A	--authentication-file=fájl
-U	--user=felhasználónév[%jelszó]

Fájlkezelés csatlakozva

Az aktuális könyvtár listázása a távoli szerveren:

l

ls

dir

Az aktuális könyvtár listázása a hely gépen:

!l

!ls

!dir

A ! karakter minden parancs esetén használható. Hatására a parancs a helyi gépen hajtódik végre.

Szerveroldali másolás:

scopy

Több könyvtár és állomány fel- vagy letöltése szerverhez csatlakozva:

smb: > recurse
smb: > mput dir1
Put directory dir1? y
Put directory dir1/dir2? y
Put file dir1/f1.txt? y
putting file dir1/f1.txt as \dir1\f1.txt 0,0 kb/s) (average 0,0 kb/s)
Put file dir1/f2.txt? y
putting file dir1/f2.txt as \dir1\f2.txt 0,0 kb/s) (average 0,0 kb/s)
recurse

A recurse parancs hatására az l, ls és a dir parancs is rekurzívan működnek. Ha szeretnénk kikapcsolni, adjuk ki újra a recurse parancsot.

Másolás egyetlen menetben:

smb: \> prompt
smb: \> recurse
smb: \> mput dir1
putting file dir1/f1.txt as \dir1\f1.txt 0,0 kb/s) (average 0,0 kb/s)
putting file dir1/f2.txt as \dir1\f2.txt 0,0 kb/s) (average 0,0 kb/s)

A prompt parancs hatására, nem kérdez rá mit töltsön fel. Egyetlen menetben feltölti a dir1 könyvtár tartalmát.

PCManFM

A PCManFM grafikus alkalmazás, képes URL alapján Windows megosztások csatolására.

A PCManFM beviteli mezőjében egy URL-t kell megadni, amelyre a következő sor mutat példát:

smb://192.168.5.101/pub

Ezek után feldob egy ablakot az azonosításhoz:

(*) Kapcsolódás névtelenül
( ) Kapcsolódás felhasználóként:
Felhasználónév:
Tartomány:
Jelszó:
(*) Jelszó azonnali elfelejtése
( ) Jelszó megjegyzése kijelentkezésig
( ) Megjegyzés örökre
[Mégse] [Kapcsolódás]

A csatolt megosztás más programok számára a következő helyen érhető el:

/var/run/user/[uid]/gvfs

A háttérben a gvfs-mount ide csatolja fel automatikusan.

Készíthetünk egy linket a felhasználó könyvtárába:

$ ln -s /var/run/user/1000/gvfs /home/janos/Asztal/net

Irodalom

http://blog.varonis.com/the-difference-between-cifs-and-smb/