Монтирование ресурса SMB не проходит: учётные данные
Для монтирования ресурсов SMB нужны учётные данные, и хранить их в самой записи монтирования нельзя: файл fstab доступен всем для чтения. Правильный способ — отдельный файл с закрытыми правами.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Учётные данные в открытом виде или недоступны
Пароль в записи монтирования читается любым пользователем. Отдельный файл с правами 0600 решает это, но путь к нему должен быть указан верно.
-
Версия протокола не поддерживается сервером
Современные клиенты по умолчанию не используют устаревшие версии протокола. Старый сервер отказывает в подключении.
-
Монтирование выполняется до готовности сети
Без параметра сетевого устройства запись обрабатывается наравне с локальными, и монтирование не проходит при загрузке.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Сообщения ядра о подключении ресурса.
journalctl -k -b --no-pager | grep -i cifs | tail -10Права на файл учётных данных: должны быть 0600.
sudo ls -l /etc/samba/credsСмонтированные ресурсы SMB.
findmnt -t cifs -o TARGET,SOURCE,OPTIONSРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Пароль в записи монтирования читается любым пользователем. Отдельный файл с правами 0600 решает это, но путь к нему должен быть указан верно.
- Как проверить
-
Посмотрите запись и файл учётных данных.
grep -i cifs /etc/fstab sudo ls -l /etc/samba/creds 2>/dev/null
- Как исправить
-
Вынесите имя и пароль в файл с правами 0600 и укажите его параметром монтирования.
# /etc/fstab # //server/share /mnt/share cifs credentials=/etc/samba/creds,_netdev,nofail 0 0
- Почему происходит
- Современные клиенты по умолчанию не используют устаревшие версии протокола. Старый сервер отказывает в подключении.
- Как проверить
-
Посмотрите сообщение ядра и попробуйте указать версию.
journalctl -k -b --no-pager | grep -i cifs | tail -10
- Как исправить
- Укажите версию протокола параметром монтирования. Возврат к устаревшим версиям ослабляет защиту: делайте это осознанно.
- Почему происходит
- Без параметра сетевого устройства запись обрабатывается наравне с локальными, и монтирование не проходит при загрузке.
- Как проверить
-
Посмотрите параметры и порядок.
grep -i cifs /etc/fstab systemctl list-units --type=mount --all --no-pager | grep -i share
- Как исправить
- Добавьте параметры сетевого устройства и необязательности: тогда загрузка не будет ждать и не сломается.
Пример вывода
Монтирование отклонено: неверные учётные данные. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
mount[4300]: mount error(13): Permission denied
kernel: CIFS: VFS: \\server\share Send error in SessSetup = -13
systemd[1]: mnt-share.mount: Mount process exited, code=exited, status=32/n/a
Связанные ошибки
- Mount process exited, code=exited, status=32: не найдено устройство Монтирование не проходит: устройство или UUID не найдены, неверная файловая система, недоступен сетевой ресурс. Код 32 от команды mount.
- Permission denied в журнале службы Отказ в доступе у службы systemd: права на файл, каталоги по пути, пользователь службы, параметры изоляции, SELinux и AppArmor.
- Samba: клиент не может записать в общий ресурс Ресурс доступен для чтения, а запись отклоняется: права на файловой системе, параметры ресурса, отображение пользователей.
- Automount: каталог монтируется не вовремя или отваливается Автомонтирование через .automount: как работает TimeoutIdleSec, почему ресурс отваливается и когда лучше обычный .mount.
- Transport endpoint is not connected Ошибка 107: точка монтирования отвалилась или сокет закрыт. Разбор для сетевых файловых систем и монтирования через fuse.
- Сетевой каталог подвисает: жёсткое монтирование NFS Обращение к каталогу NFS блокируется намертво: жёсткое монтирование без таймаутов. Как настроить устойчиво.
- Address already in use при запуске службы Порт или адрес уже занят: bind() failed (98: Address already in use). Как найти владельца порта и что делать с остатками прежнего процесса.
- Broken pipe в журнале службы Запись в закрытый канал или соединение: клиент отключился, обработчик завершился, конвейер разорван.
Где встречается чаще всего
Источники
-
systemd.mount.cifs(8)
Параметры монтирования и файл учётных данных. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено неверным паролем в файле учётных данных.