нельзя использовать mount.cifs: ошибка монтирования (2): нет такого файла или каталога


17

Обнаружено, что команда mount.cifs не может работать в системе gentoo с помощью systemd

ae429-1105 etc # mount -t cifs //file.abc.edu.au/user /home/directory/path -o credentials=/etc/user,rw,iocharset=utf8,file_mode=0777,dir_mode=0777
mount error(2): No such file or directory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

Было подтверждено существование и доступность точки монтирования / home / directory / path и файла учетных данных / etc / user . Также были включены соответствующие модули и сервисы, т.е.

 ae429-1105 etc # lsmod |egrep 'fuse|cifs'
 fuse                   72589  5 
 cifs                  312131  0

и

ae429-1105 etc # systemctl -t service -a |grep Samba
nmbd.service                         loaded active   running Samba NetBIOS                     name server
smbd.service                         loaded active   running Samba SMB/CIFS     server
winbindd.service                     loaded inactive dead    Samba Winbind daemon

Эта проблема была выявлена ​​многими пользователями, например, одним примером . ТАКЖЕ ОБРАТИТЕ ВНИМАНИЕ, что та же команда, выполненная в моей системе Ubuntu / debian, может успешно монтироваться

Другая информация в проблемной машине:

ae429-1105 etc # mount.cifs --version
mount.cifs version: 6.1

версия файла mount.cifs, установленного в debian / ubuntu, - 6.0


/home/directory/pathобязательно существует в среде Gentoo? Странно, что вы не упоминаете об этом, поскольку это очевидный первый вопрос, который возникает.
Хауке Лагинг

Да, я подтвердил существование и доступность точки монтирования / home / directory / path .
Chenming Zhang

Вы должны добавить эту информацию к вопросу, чтобы другим читателям не нужно было читать комментарии, чтобы получить ее.
Хауке Лагинг

Ответы:


8

Возможно, вам потребуется предоставить опцию vers = для команды mount, чтобы принудительно установить версию 3.0, если вы пытаетесь смонтировать общий ресурс из более новой версии Windows. Один из наших файловых серверов был недавно обновлен до 2012R2, и именно тогда мое монтирование перестало работать. Установка его в версии = 3.0 исправила проблему. Как и большинство ошибок Samba / CIFS, сообщение «Нет такого файла или каталога» не очень помогает.

В качестве примера:

# mount -t cifs //win2012r2/someshare -o cred=/home/foo/.cifs_user, vers=3.0 /mnt/tmp

... где у меня есть мой домен, имя пользователя и пароль, содержащиеся в файле .cifs_user.

По-видимому, smbmount использует более новую версию протокола SMB по умолчанию, так как он работал без проблем или каких-либо специальных опций.

Обратите внимание, что версия протокола по умолчанию - 1.0.

Со страницы руководства mount.cifs:

vers=
           SMB protocol version. Allowed values are:

           ·   1.0 - The classic CIFS/SMBv1 protocol. This is the default.

           ·   2.0 - The SMBv2.002 protocol. This was initially introduced in Windows Vista Service Pack 1, and
               Windows Server 2008. Note that the initial release version of Windows Vista spoke a slightly
               different dialect (2.000) that is not supported.

           ·   2.1 - The SMBv2.1 protocol that was introduced in Microsoft Windows 7 and Windows Server 2008R2.

           ·   3.0 - The SMBv3.0 protocol that was introduced in Microsoft Windows 8 and Windows Server 2012.

У меня была похожая проблема с флагом «nounix», который не должен поддерживаться в v1.0. Переход на v2.0 (самый последний доступный для меня) исправил проблему. Кроме того, права доступа к файлам более разумны с версией = 2,0 (755 вместо 777)
cxrodgers

2
Большое спасибо за решение, связанное с опцией vers =! У меня это работало, только в обратном направлении ... После обновления прыжка opensuse с 42.3 версии на 15.1 запись fstab для подключения сетевого диска, которая работала, перестала работать в 15.1. Я использовал опцию vers = 1.0 и угадаю, что ... Вероятно, в прыжке 15.1 используется более новая версия протокола SMB, которая не смогла найти удаленный каталог.
Джон

Подключение к общему ресурсу, размещенному на Windows Server 2003 из Ubuntu 19.04, постоянно не удавалось мне, пока я не добавил vers = 1.0 в свой список опций. Благодарность!
user8675309

Это сработало для меня, ЗА ИСКЛЮЧЕНИЕМ: я должен был заявить версию ВТОРАЯ, vers=2.0чтобы смонтировать общие ресурсы samba моей 5-летней системы NAS ... с 3.0 я получил ошибку выше.
Фрэнк

etc/fstabпользователи: просто поместите это vers=3.0(или 2.0 ...) правильно и без пробелов перед другими вашими опциями, напримерvers=2.0,guest,uid=1000,iocharset…
Фрэнк

5

Можете ли вы использовать nodfsвариант? т. е. для -oввода параметров передайте ввод, как показано ниже.

-o credentials=/etc/user,rw,iocharset=utf8,file_mode=0777,dir_mode=0777,nodfs

то есть добавлено ,nodfs

Это сработало для меня.


Спасибо! Сначала я попробовал все остальные предложения, но мне это нужно было на fedora30, где оно мне раньше не требовалось
Дженс Тиммерман,

2

Возможно, вам придется изменить secпараметр: этот параметр заставил его работать на моей установке:

mount.cifs ... -o sec=ntlm

Соответствующий экстракт man mount.cifs:

sec=Безопасный режим. Допустимые значения:

  • none - попытка подключения как нулевого пользователя (без имени)
  • krb5 - Использовать аутентификацию Kerberos версии 5
  • krb5i - Используйте аутентификацию Kerberos и принудительно включите подписывание пакетов
  • ntlm - Используйте хеширование паролей NTLM
  • ntlmi - Использовать хеширование пароля NTLM и принудительно подписывать пакеты
  • ntlmv2 - Использовать хэширование пароля NTLMv2
  • ntlmv2i - Использовать хеширование пароля NTLMv2 и принудительно подписывать пакеты
  • ntlmssp - Использовать хеширование пароля NTLMv2, инкапсулированное в сообщение Raw NTLMSSP
  • ntlmsspi - Использовать хэширование пароля NTLMv2, инкапсулированное в сообщение Raw NTLMSSP, и принудительно подписывать пакеты

    По умолчанию в основных версиях ядра до v3.8 было sec=ntlm. В v3.8 значение по умолчанию было изменено на sec=ntlmssp.

    Если сервер требует подписи во время согласования протокола, он может быть включен автоматически. Подписывание пакетов также может быть включено автоматически, если оно включено в /proc/fs/cifs/SecurityFlags.


1

Я столкнулся с этим на Ubuntu 18.04. Проблема заключалась в том, что мне понадобился пакет keyutils для проверки подлинности Kerberos ( sec=krb5опция mount), которая не была установлена ​​вместе с cifs-utils (которая предоставляла mount.cifs). Я не уверен, совпадает ли имя пакета в Gentoo или нет. (Спасибо за решение https://forum.zentyal.org/index.php?topic=18601.0 .)


1

Попробуйте установить пакет keyutils:

sudo apt-get install keyutils

Не уверен точно, почему это помогает, возможно, у кого-то еще есть ответ здесь. Но по крайней мере это помогло мне: с keyutils монтирование cifs работало просто отлично.


Пожалуйста, добавьте некоторую информацию о том, как это решит проблему, указанную в вопросе. Что делает этот пакет, и как он отражается в проблеме, поднятой ОП?
Хаксиэль

Хороший вопрос. Я не уверен, как пакет keyutils помогает. В моем случае, по крайней мере, именно это и помогло. После установки keyutils мое монтирование cifs работало нормально, тогда как раньше я получал сообщение об ошибке «ошибка монтирования (2): нет такого файла или каталога», как в OP.
Клаус

Дубликат этого другого ответа
roaima

1

Я хотел добавить еще один источник этой проблемы, с которой я столкнулся сегодня. После изменения идентификатора пользователя unix пользователь smb, созданный с помощью smbpasswd, может больше не проходить аутентификацию для общего ресурса samba, что приводит к той же ошибке.

Так что, если вы изменили свой идентификатор пользователя Unix через, usermod -u 1000 my_userто у вас могут возникнуть проблемы. Решением для меня было удаление и повторное добавление пользователя smb после этого:

smbpasswd -x my_user
smbpasswd -a my_user

Хотя это правда, как это связано с первоначальным вопросом?
RalfFriedl

Как я уже сказал, если вы измените идентификатор пользователя, появится та же самая ошибка исходного вопроса. Так что, если кто-то сделал то же самое и сочтет эту тему, он или она могут найти мою подсказку полезной.
Ryad

1

Добавить $в конец, вот так//winserver/sharename$

mount.cifs -v -o username=myusername,domain=MYCODOMAIN //winserver/sharename$ /mnt/mymountpoint

Вот это да! Есть идеи, что делает «$»? Это исправило это для меня, но понятия не имел, почему
Gabriel Fair

Знак $ является административным ресурсом в контексте общего ресурса Windows, если он активирован системой, пользователь с правами администратора может получить доступ ко всем путям. Пример \\ MY-SERVER \ c $
Phil795

0

Я столкнулся с той же ошибкой «ошибка монтирования (2): нет такого файла или каталога» с использованием mount.cifs на виртуальной машине CentOS 7. Я никогда не определял, почему именно ошибка генерировалась при использовании безопасности ntlm по умолчанию (и вариантов), но я обнаружил, что использование аутентификации Kerberos обошло проблему. Итак, моя последняя рабочая командная строка выглядела так:

mount.cifs -v -o domain=MYCODOMAIN,sec=krb5 //winserver/sharename /mnt/mymountpoint

тогда как эта команда, которая выдавала ошибку «нет такого файла или каталога», была:

mount.cifs -v -o username=myusername,domain=MYCODOMAIN //winserver/sharename /mnt/mymountpoint

Чтобы использовать Kerberos, я установил пакет "krb5-workstation" и настроил его.


0

Одним из решений может быть установка вручную, keyutilsпоскольку это больше не является (жесткой) зависимостью cifs-utils.

Информацию о том, почему keyutils больше не устанавливаются, можно найти здесь: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=822841.

А отчет об ошибке панели запуска можно найти здесь: https://bugs.launchpad.net/ubuntu/+source/cifs-utils/+bug/1772148


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.