n1ro°
RU

Текст и данные · Инструкция

Как смонтировать SMB-папку в WSL через fstab

Как смонтировать SMB-папку в WSL — надёжнее делать это как обычный Linux CIFS/SMB mount, а для постоянного подключения.

Редакция N1RO · Проверено

Короткий ответ

SMB в WSL через CIFS и /etc/fstab: credentials-файл, uid/gid, mount -a, автоподключение и диагностика Permission denied.

Когда нужен прямой SMB mount внутри WSL

Если сетевой ресурс уже виден Windows, его иногда можно открыть из Windows-пути, но для Linux-инструментов удобнее получить нормальную точку монтирования вроде `/mnt/nas`. Это особенно полезно для скриптов, rsync-подобных сценариев, сборочных систем и программ, которые ожидают POSIX-путь. Для SMB используется Linux-клиент CIFS, обычно пакет `cifs-utils`. Перед настройкой убедитесь, что сервер или NAS доступен по сети и вы знаете UNC-имя ресурса в форме `//server/share`. Не начинайте с fstab: сначала выполните ручное монтирование. Так легче понять, где проблема — сеть, имя сервера, учётные данные, пакет cifs-utils или автоматический старт.

Совет: Сначала добейтесь успешного ручного mount, и только потом переносите рабочие параметры в fstab. Это сокращает диагностику в несколько раз.

Ручное подключение сетевой папки

  1. 1. Установите `cifs-utils` через пакетный менеджер вашего дистрибутива. Для Ubuntu/Debian это обычно `sudo apt update && sudo apt install cifs-utils`. 2. Создайте точку монтирования: `sudo mkdir -p /mnt/nas`. 3. Создайте файл учётных данных, например `~/.smbcredentials`, со строками `username=..`, `password=..` и при необходимости `domain=..`. 4. Ограничьте права: `chmod 600 ~/.smbcredentials`. 5. Смонтируйте ресурс: `sudo mount -t cifs //server/share /mnt/nas -o credentials=/home/<user>/.smbcredentials,uid=$(id -u),gid=$(id -g)`. 6. Проверьте `mount | grep /mnt/nas`, чтение файла и создание тестового файла, если права на сервере позволяют запись. 7. Размонтируйте `sudo umount /mnt/nas` перед изменением параметров.

Важно: Не записывайте пароль открытым текстом в `/etc/fstab`. Отдельный credentials-файл тоже содержит секрет, поэтому права `600` и корректный владелец обязательны.

Как добавить SMB в /etc/fstab

Когда ручная команда работает, перенесите параметры в `/etc/fstab`. Пример логики строки: `//server/share /mnt/nas cifs credentials=/home/user/.smbcredentials,uid=1000,gid=1000,_netdev,nofail 0 0`. UID и GID лучше определить командами `id -u` и `id -g`, а не копировать 1000 вслепую. `_netdev` подчёркивает зависимость от сети, `nofail` помогает не превращать временно недоступный NAS в критическую ошибку старта. В WSL параметр `mountFsTab` у автомонтирования по умолчанию включён: при запуске дистрибутива WSL обрабатывает fstab. Если вы раньше отключали эту функцию в `/etc/wsl.conf`, верните её сознательно и после изменения перезапустите WSL.

Частые ошибки монтирования

  • `mount error(13): Permission denied` | Неверные учётные данные, домен или права на share | Проверить логин на сервере и credentials-файл
  • `No such file or directory` | Нет точки `/mnt/nas` или ошибочно имя ресурса | Создать каталог, сверить `//server/share`
  • `mount: bad option` / нет helper | Не установлен `cifs-utils` | Установить пакет клиента CIFS
  • Ресурс монтируется только вручную | Ошибка в fstab или WSL не обрабатывает fstab | Проверить `sudo mount -a` и `mountFsTab`
  • Файлы принадлежат root | Не заданы подходящие uid/gid или сервер отдаёт свои атрибуты | Настроить владельца с учётом модели прав сервера

Предупреждение: Не включайте SMB1 (`vers=1.0`) ради быстрого «исправления» старого NAS без оценки риска. Современные клиенты рекомендуют SMB2.1 и новее; старый протокол существенно слабее по безопасности.

Версия SMB и права доступа

Обычно не нужно насильно задавать `vers=`: современный клиент договаривается с сервером о подходящем варианте. Явную версию указывают, когда конкретный NAS или корпоративный сервер требует совместимости, и тогда лучше начинать с документации сервера. Параметры `uid=` и `gid=` влияют на то, как владелец отображается локально, но не заменяют серверные ACL и права учётной записи. Если Windows может открыть папку, а WSL получает отказ, это не доказывает проблему WSL: Windows-сессия могла использовать другие сохранённые credentials. Для диагностики всегда проверяйте тот же логин, что записан в credentials-файле, и не путайте локальные Linux-права точки монтирования с разрешениями SMB-сервера.

Перед включением автомонтирования

  • сервер доступен по имени или IP
  • ручной `mount -t cifs` уже работает
  • credentials-файл не читается посторонними пользователями
  • точка монтирования существует
  • `sudo mount -a` проходит без ошибок
  • после `wsl --shutdown` ресурс появляется снова или корректно пропускается при недоступной сети

Имена сервера, DNS и запуск до готовности сети

Если SMB-ресурс монтируется вручную, но не поднимается автоматически, проверьте не только строку `fstab`, но и момент доступности сети. Имя сервера должно разрешаться внутри WSL: `getent hosts server-name` быстро показывает, видит ли Linux нужный DNS-ответ; для диагностики можно временно проверить подключение по известному IP и отделить проблему имени от CIFS. VPN и корпоративные DNS-клиенты иногда становятся доступны уже после первого запуска дистрибутива, поэтому `nofail` предотвращает жёсткий сбой запуска, но не выполняет позднее повторное монтирование само по себе. Храните файл credentials с минимальными правами и не дублируйте пароль в истории shell. При спорной ошибке выполните ручной `mount -v` и посмотрите точное сообщение ядра или `dmesg`: «access denied», «host is down» и ошибка согласования версии SMB требуют разных действий. Это быстрее, чем менять набор опций вслепую.

Как проверить fstab без перезапуска и не зависеть от пароля

Перед тем как считать настройку постоянной, проверьте строку `/etc/fstab` вручную командой `sudo mount -a`. Если команда возвращает ошибку, исправьте её сразу: при следующем запуске WSL будет воспроизводиться та же проблема. Учётные данные лучше держать в отдельном файле, например `~/.smbcredentials`, с ограниченными правами `chmod 600`, а не вставлять пароль открытым текстом в `fstab`. В самой записи используйте `credentials=/home/<user>/.smbcredentials` и реальные `uid`/`gid`, полученные через `id -u` и `id -g`, если файлы должны принадлежать вашему Linux-пользователю. После успешного `mount -a` проверьте чтение и запись обычным пользователем, а затем выполните `umount` и повторное монтирование — это быстро выявляет случай, когда доступ работал только благодаря уже существующей сессии. Если ресурс доступен только после поднятия VPN или корпоративной сети, `nofail` помогает не превращать временно недоступный сервер в критический сбой запуска, но сам по себе не решает DNS, маршрутизацию или аутентификацию.

Что учитывать

Условия меняются. Страница отражает состояние на 2026-09-20; при расхождении с официальной документацией приоритет у первоисточника.

Источники и проверка

Фактическая часть сверена по первичным источникам (в т.ч. Advanced settings configuration in WSL — fstab and automount). Пример и формулировки — редакция N1RO на 2026-09-20.