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.
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.
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.
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 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:
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.
dbus-launch bash gvfs-mount smb://user@192.168.5.2/pub
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.
... //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.
... //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
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 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.
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.
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ó] |
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.
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