Подробный гайд: Ошибки монтирования сетевых дисков CIFS/SMB в Linux: диагностика и решения

Гайд по устранению ошибок монтирования CIFS/SMB в Linux. Разбор кодов ошибок, выбор версии протокола, настройка fstab и безопасное хранение паролей.

2026.06.03                  


Подробный гайд: Ошибки монтирования сетевых дисков CIFS/SMB в Linux: диагностика и решенияПодробный гайд: Ошибки монтирования сетевых дисков CIFS/SMB в Linux: диагностика и решения Монтирование сетевых ресурсов по протоколу CIFS/SMB в Linux — задача частая, но часто сопровождающаяся ошибками из-за разницы в версиях протокола, настройках безопасности Windows/Samba и особенностях ядра Linux.

Ниже представлен подробный гайд по диагностике и устранению самых частых ошибок при монтировании CIFS.


Этап 0: Базовая подготовка (что проверить в первую очередь)

Прежде чем копаться в логах, убедитесь, что база настроена верно:

1. Установлен ли пакет cifs-utils?
  • Ubuntu/Debian: sudo apt install cifs-utils
  • CentOS/RHEL/AL: sudo yum install cifs-utils
  • Ошибка: unknown filesystem type 'cifs' означает, что пакета нет или не загружен модуль ядра.

2. Доступен ли сервер по сети?
  • Пинг: ping <IP_сервера>
  • Порт SMB (445): telnet <IP_сервера> 445 или nc -vz <IP_сервера> 445. Если порт закрыт, проблема в сетевом экране (Firewall) на сервере или по пути.

3. Видны ли шары?
  • Попробуйте подключиться через утилиту smbclient:
     smbclient -L //<IP_сервера> -U <имя_пользователя>
  • Если smbclient видит шары, а mount нет — проблема точно в параметрах монтирования Linux.

Этап 1: Разбор частых ошибок и их решения

При ошибке монтирования Linux обычно выдает код в скобках, например: mount error(13): Permission denied.

Ошибка 1: mount error(112): Host is down

Причина:

Несовпадение версий протокола SMB. Современные версии Linux по умолчанию используют SMB 3.x и отключают SMB 1.0 из соображений безопасности. Если вы пытаетесь подключиться к старому NAS, роутеру или Windows XP/7, сервер "молчит", и Linux считает, что он "упал".

Решение:

Явно укажите версию протокола.


Добавьте параметр vers= в команду mount или fstab:
  • vers=2.0 (для Windows Vista/7)
  • vers=2.1 (для Windows 8)
  • vers=3.0 или vers=3.1.1 (для Windows 10/11 и современных Samba)
* Пример:
sudo mount -t cifs //192.168.1.10/share /mnt/share -o username=admin,vers=2.1
Важно:

Настоятельно не рекомендуется использовать vers=1.0 (уязвимости типа EternalBlue). Если сервер поддерживает только 1.0, его нужно обновить.


Ошибка 2: mount error(13): Permission denied

Причина:

Отказано в доступе. Это может быть неверный пароль, неправильные права на стороне Windows/Samba, или конфликт методов аутентификации.

Решение:
  1. Проверьте логин и пароль (убедитесь, что в пароле нет спецсимволов, которые "съедаются" shell, или экранируйте их).
2. На стороне Windows проверьте две вкладки прав:
  • Вкладка Доступ (Sharing) — есть ли у пользователя права на папку.
  • Вкладка Безопасность (Security / NTFS) — есть ли у пользователя права на чтение/запись на уровне файловой системы.
    1. Попробуйте явно указать метод безопасности: добавьте sec=ntlmssp или sec=ntlmv2.

Ошибка 3: mount error(2): No such file or directory

Причина:

Опечатка в имени шары или пути. В отличие от Windows, Linux чувствителен к регистру (Case-sensitive).

Решение:
  • Имя шары //server/Backup и //server/backup для Linux — это две разные вещи.
  • Используйте smbclient -L //server -U user, чтобы узнать точное имя шары (с учетом регистра).

Ошибка 4: mount error(22): Invalid argument

Причина:

Синтаксическая ошибка в параметрах монтирования (часто при прописывании в /etc/fstab).

Решение:
  • Проверьте синтаксис. Не должно быть лишних пробелов.
* Если в пути к точке монтирования или в имени шары есть пробелы, их нужно заменывать на \040.
  • Неправильно: //server/My Share /mnt/my share ...
  • Правильно: //server/My\040Share /mnt/my\040share ...

Ошибка 5: mount error(11): Resource temporarily unavailable

Причина:

Сервер перегружен, слишком много одновременных подключений или проблемы с блокировками файлов (byte-range locks).

Решение:
  • Попробуйте добавить параметр nobrl (отключает отправку запросов на блокировку байтов, что помогает при работе с некоторыми NAS и старыми Samba).
  • Добавьте echo 0 > /proc/fs/cifs/LinuxExtensionsEnabled (временное решение, если проблема в расширенных возможностях CIFS).

Этап 2: Углубленная диагностика (если ничего не помогло)

Если стандартные коды ошибок не проясняют ситуацию, нужно смотреть, что именно происходит "под капотом".

1. Смотрим логи ядра (самый важный шаг):

Выполните dmesg | tail -n 20 сразу после неудачной попытки монтирования. Ядро Linux очень подробно пишет, почему оно отклонило CIFS (например, CIFS VFS: cifs_mount failed w/return code = -13).


2. Включаем подробное логирование CIFS:

Можно попросить модуль ядра выдавать больше информации.

   echo 1 > /proc/fs/cifs/cifsFYI
   # Пробуем смонтировать
   dmesg | tail -n 50
   # Выключаем логирование
   echo 0 > /proc/fs/cifs/cifsFYI

3. Сетевая трассировка:
Если есть подозрение, что пакеты уходят, но сервер их режет, используйте tcpdump или wireshark на клиенте:
   sudo tcpdump -i any port 445 -nn

Этап 3: Правильный и безопасный синтаксис /etc/fstab

Чтобы избежать ошибок при перезагрузке и не хранить пароли в открытом виде в fstab, используйте файл учетных данных (credentials).

1. Создайте файл с логином и паролем:
sudo nano /etc/smbcredentials

Внутри файла:
username=Ваш_Логин
password=Ваш_Пароль

Обязательно закройте доступ к этому файлу:
sudo chmod 600 /etc/smbcredentials

2. Прописываем строку в /etc/fstab:
//192.168.1.100/ShareName /mnt/network_share cifs credentials=/etc/smbcredentials,uid=1000,gid=1000,iocharset=utf8,file_mode=0777,dir_mode=0777,vers=3.0,_netdev 0 0

Разбор полезных параметров:

  • credentials=... — путь к файлу с логином/паролем.
  • uid=1000,gid=1000 — назначает владельцем смонтированной папки вашего пользователя (иначе она будет принадлежать root, и вы не сможете в нее писать). Узнать свои uid/gid можно командой id.
  • iocharset=utf8 — корректное отображение кириллицы в именах файлов.
  • file_mode=0777,dir_mode=0777 — права доступа. Если нужна строгая безопасность, ставьте 0770 или 0755.
  • vers=3.0 — фиксация версии протокола (избегаем ошибки 112).
  • _netdev — указывает системе, что это сетевой ресурс, и его нужно монтировать только после поднятия сети (критично при загрузке ОС).

Этап 4: Нестандартные ситуации

Проблема с Active Directory (AD) / Kerberos:

Если сервер в домене, а клиент нет, или наоборот, могут быть проблемы с временем. Убедитесь, что время на клиенте и сервере синхронизировано (разница не более 5 минут), иначе Kerberos-билеты не работают. Используйте sec=krb5.

Отваливается шару при простое:

Если сеть "засыпает" или роутер рвет сессию, Linux может повиснуть. Добавьте параметры soft,timeo=30,retrans=3 (для soft mount), чтобы система не зависала намертво при потере сети, а выдавала ошибку ввода-вывода .

Ошибки при копировании больших файлов:

Иногда помогает добавление параметра rsize=1048576,wsize=1048576 (увеличение размера буфера чтения/записи).


Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.


Комментарии

Загрузка...
Если комментарии не загружаются, можете попробовать отключить блокировщик рекламы для этого сайта