Подробный гайд: Ошибки монтирования сетевых дисков 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, или конфликт методов аутентификации.
Решение:
- Проверьте логин и пароль (убедитесь, что в пароле нет спецсимволов, которые "съедаются" shell, или экранируйте их).
2. На стороне Windows проверьте две вкладки прав:
- Вкладка Доступ (Sharing) — есть ли у пользователя права на папку.
- Вкладка Безопасность (Security / NTFS) — есть ли у пользователя права на чтение/запись на уровне файловой системы.
- Попробуйте явно указать метод безопасности: добавьте
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 (увеличение размера буфера чтения/записи).
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.