CIFS — что это, монтирование SMB на Linux | Глоссарий | Глоссарий FREEHOSTING

CIFS

Common Internet File System
CIFS — Сетевой протокол доступа к файлам и принтерам, исторически развившийся из SMB 1.0. Применяется для монтирования общих папок Windows на Linux через пакет cifs-utils. В современных системах вытеснен SMB 2/3, но термин CIFS остался как обобщение.

Определение простыми словами

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.