Определение простыми словами
CIFS — это диалект протокола SMB (Server Message Block), активно продвигавшийся Microsoft в конце 1990-х и зафиксированный как RFC-черновик в 1997 году. Технически CIFS соответствует SMB 1.0 с расширениями: открытие файлов, блокировки, передача данных, доступ к принтерам. На практике аббревиатура CIFS часто используется как зонтичное название для всего семейства сетевых файловых систем Windows, хотя сам Microsoft с Windows Vista перешёл на SMB 2.0, а с Windows 8 — на SMB 3.0.
На Linux работа с этими протоколами идёт через модуль ядра cifs.ko и пакет cifs-utils. Несмотря на «CIFS» в названии, модуль умеет SMB 2.0, 2.1, 3.0, 3.0.2 и 3.1.1 — нужный диалект задаётся опцией vers=. Альтернатива на уровне сервера — Samba, реализующий SMB на Linux.
Сравнение (таблица)
| Параметр | CIFS / SMB 1.0 | SMB 2.x | SMB 3.x | NFS |
|---|---|---|---|---|
| Год | 1996 | 2006 (Vista) | 2012 (Windows 8) | 1989 |
| Безопасность | Слабая, есть уязвимости | Подписи пакетов | AES-128/256 шифрование | Через Kerberos (NFSv4) |
| Производительность | Низкая, много round-trips | Compound-запросы | Multichannel, RDMA | Высокая |
| Поведение Win/Unix | Атрибуты Windows | Атрибуты Windows | POSIX-расширения | POSIX нативно |
| Где используется | Только legacy-системы | Win Vista–10, Linux | Win 8+, Server 2012+, macOS, Linux | Linux, BSD, Solaris |
Кейсы использования
- Подключение сетевой папки Windows-сервера на Linux-рабочую станцию через
mount -t cifs. - Монтирование NAS Synology или QNAP к серверу для бэкапов или общих хранилищ медиа.
- Резервное копирование Windows-серверов на Linux-target через
cifs-utilsи rsync. - Подключение общего ресурса к контейнерам Docker через volume-плагины или
--mount type=cifs. - Негативный сценарий: использовать SMB 1.0 (vers=1.0) на современных системах — протокол уязвим к WannaCry, EternalBlue и десяткам других атак, и Microsoft отключила его по умолчанию начиная с Windows 10 1709. Если шара требует SMB 1.0 — обновляйте сервер, не делайте downgrade клиента.
Технические детали
# Установка утилит
sudo apt install cifs-utils
# Файл с учётными данными (chmod 600)
cat > /root/.smbcred <<EOF
username=fileuser
password=secret
domain=CORP
EOF
chmod 600 /root/.smbcred
# Однократное монтирование
sudo mount -t cifs //fileserver/share /mnt/share
-o credentials=/root/.smbcred,vers=3.0,uid=1000,gid=1000,iocharset=utf8
# Постоянное монтирование через /etc/fstab
//fileserver/share /mnt/share cifs credentials=/root/.smbcred,vers=3.0,_netdev 0 0
# Проверка диалектов SMB на сервере
sudo smbclient -L //fileserver -U fileuser
# Безопасность: отключить SMB 1.0 в ядре Linux
echo 'options cifs disable_smb1=1' | sudo tee /etc/modprobe.d/cifs.conf
Для нестабильной сети используйте опции soft,timeo=30,retrans=3 — клиент не будет вечно висеть при потере связи. Параметр cache=strict повышает производительность, но требует отсутствия параллельной записи с других хостов.
🔥 Где это применяется
Частые вопросы
CIFS и SMB — это одно и то же?
Не совсем. CIFS — конкретный диалект SMB версии 1.0. SMB — это семейство протоколов, последняя версия SMB 3.1.1 включает шифрование AES-GCM и RDMA. Linux-клиент cifs.ko поддерживает все версии.
Какую версию SMB указывать в опции vers?
Для Windows 10/11 и Windows Server 2016+ — vers=3.1.1 или vers=3.0. Для устаревших систем 2008 R2 — vers=2.1. Не используйте vers=1.0, кроме случаев совместимости со старым оборудованием.
Чем CIFS отличается от NFS?
CIFS/SMB разработан для Windows, нативно поддерживает ACL, домены и Kerberos. NFS — для UNIX, проще и быстрее в локальной сети. Для смешанных сред с Windows и Linux чаще выбирают SMB 3.x.