[[:oktatas:linux|< Linux]]
====== Hálózati megosztások ======
* **Szerző:** Sallai András
* Copyright (c) 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/