[[: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/