Служба W:[CIFS] (common internet file system), заимствованная из семейства операционных систем Windows, предназначена (аналогично «родной» NFS) для совместного использования файлов. Основным протоколом службы CIFS является протокол SMB (server message blocks), который аналогично NFS ретранслирует системные вызовы к файлам.
Содержимое
Имена NetBIOS
Отличительной особенностью протокола SMB, доставшейся ему в наследство от транспорта ,W:[NetBIOS], является возможность использования еще одного вида имен узлов (в дополнение к DNS- и mDNS-именам) — так называемых «имен NetBIOS», и собственной службы NBNS1 (netbios name service), отображающей имена NetBIOS на IP-адреса. Служба NBNS похожа на DNS и mDNS одновременно, но несовместима с ними.
Имена узлов NetBIOS и их IP-адреса
lumpy@ubuntu:~$ mblookup WINXP
querying WINXP on 192.168.100.255
192.168.100.3 WINXP<00>
В листинге выше иллюстрируется использование утилиты nmblookup, предназначенной для диагностики службы NBNS, при помощи которой «плоское» имя NetBIOS winxp отображается на Соответствующий ему IP-адрес.
Именно при помощи службы NBNS и широковещательного поиска специальных «групповых» имен NetBIOS реализуется основной способ обнаружения CIFS-серверов локальной сети, что выполняет утилита smbtree, иллюстрируемая в листинге ниже.
В редких отдельных случаях серверы CIFS обнаруживаются зарегистрированными в службе mDNS/DNS-SD, что характерно (как и в случае серверов NFS) для сетевых устройств хранения данных W: [NAS] или сетевых видеорегистраторов W:[NVR].
Обнаружение CIFS-серверов
lumpy@ubuntu:~$ smbtree -N
WORKGROUP
\\WINXP
\\WINXP\C$ Стандартный общий ресурс
\\WINXP\ADMIN$ Удаленный Admin
\\WINXP\media Фото, видео и т. д.
\\WINXP\D$ Стандартный общий ресурс
\\WINXP\IPC$ Удаленный IPC
\\NVR
\\NVR\Qrecordings
\\NVR\Qmultimedia
\\NVR\Qdownload
\\NVR\IPC$
lumpy@ubuntu:~$ avahi-browse -rcl _smb._tcp
+ eth0 IPv4 NVR(SMB) Microsoft Windows Network local
+ eth0 IPv4 NVR(SMB) Microsoft Windows Network local
hostname = [NVR.local]
address = [192.168.17.90]
port = [445]
txt = []
CIFS-клиенты
Различают две разных реализации клиента CIFS— внеядерную smbclient (аналогичную «интерактивным» FTP-клиентам) и ядерную (аналогичную NFS-клиенту), реализующуюся модулем ядра cifs.
Использование ядерного модуля позволяет монтировать общие файловые ресурсы (share) серверов CIFS непосредственно в дерево каталогов клиента, что дает возможность любым его программам использовать серверные файлы.
В примерах из листинга ниже показано использование CIFS-клиента smbciient для получения списка (-L, list) разделяемых ресурсов (share) узла WINXP, равно как и для подключения к его публичному (-N, no password) разделяемому ресурсу media с последующим скачиванием файлов целиком.
Клиент SMB/CIFS
lumpy@ubuntu:~$ smbcllent -NL //WINXP
Domain=[WINXP] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
Sharename Type Content
C$ Disk Стандартный общий ресурс
D$ Disk Стандартный общий ресурс
ADMIN$ Disk Удаленный Admin
IPC$ IRC IPC Service
media Disk Фото, видео и т. д.
lunpy@ubuntu:~$ smbclient -N //WINXP/media
Domain=[WINXP] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \> cd DCIM\↵
smb: \DCIM\> dir↵
. D 0 Thu Jan 7 20:57:36 2018
. . D 0 Thu Jan 7 20:57:36 2018
Dd595.jpg A 4494092 Sun Feb 13 16:24:04 2017
Dd596.jpg А 3842680 Sun Feb 13 16:14:56 2017
Dd680.jpg A 4087313 Sun Feb 13 03:10:45 2017
Dd681.jpg A 4108278 Sun Feb 13 15:58:38 2017
61192 blocks of size 1048576. 10915 blocks available
smb: \DCIM\> get Dd680.jpg ↵
getting file \DCIM\Dd680.jpg of size 4087313 as Dd680.jpg (72572,9 KiloBytes/sec)
(average 72573,0 KiloBytes/sec)
snb: \DCIM\> quit ↵
Листинг ниже иллюстрирует использование ядерного модуля cifs для монтирования публичного (-о guest) ресурса media с узла WINXP в каталог /nnt/network/winxp/media.
Клиент smbclient имеет встроенный механизм NBNS, поэтому без проблем подключается к узлу winxp, а при монтировании cifs механизм NBNS недоступен, что требует подсказки в виде IP-адреса сервера.
Монтирование ресурса SMB/CIFS
lumpy@ubuntu:~$ sudo mkdir -p /mnt/network/winxp/media
lumpy@ubuntu:~$ sudo mount -t cifs -o guest //WINXP/media /mnt/network/winxp/media
mount error: could not resolve address for WINXP: Unknown error
lumpy@ubuntu:~$ rmblookup WINXP
querying WINXP on 192.168.100.255
192.168.100.3 WINXP<00>
lumpy@ubuntu: ~$ sudo mount -t cifs -o guest,ip=192.168.100.3 //WINWP/media /mnt/network/winxp/media
lumpy@ubuntu:~$ findmnt -t cifs
TARGET SOURCE FSTYPE OPTIONS
/mnt/network/winxp/media //WINXP/media cifs rw,relatime,vers=1.0,cache=strict,…
lumpy@ubuntu:~$ ls -l /mnt/network/winxp/media/DCIM/
итого 346228
-rwxr-xr-x 1 root root 4494092 февр. 13 2018 Dd595.jpg
-rwxr-xr-x 1 root root 4108278 февр. 13 2018 Dd681.jpg