не можна використовувати 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)

Було підтверджено, що існування та доступність точки монтажу / будинку / каталогу / шляху та файлу облікових даних / тощо / користувача . Також було включено відповідні модулі та послуги, тобто

 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? Дивно, що ви не згадуєте, що це перше очевидне питання, яке виникає.
Hauke ​​Laging

Так, я підтвердив існування та доступність точки монтажу / дома / каталогу / шляху .
Ченмінг Чжан

Ви повинні додати цю інформацію до питання, щоб іншим читачам не потрібно було читати коментарі, щоб отримати їх.
Hauke ​​Laging

Відповіді:


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
Дякую за рішення, яке стосується версії = варіант! Це працювало для мене, лише назад ... Після оновлення відкритоговискоку з 42.3 версії до 15.1 запис fstab для монтажу мережевого накопичувача, який працював, припинив роботу в 15.1. Я використовував варіант vers = 1.0 і здогадуюсь, що ... Напевно, у стрибку 15.1 використовується нова версія протоколу SMB, яка не змогла знайти віддалений каталог.
Джон

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

Це спрацювало для мене, ПРИКЛАД: Мені довелося заявити Версію ДВА, vers=2.0щоб змонтувати акції самби моєї 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 там, де він мені раніше не потрібен
Jens Timmerman

2

Можливо, вам знадобиться змінити secпараметр: цей параметр змусив мене працювати на моєму налаштуванні:

mount.cifs ... -o sec=ntlm

Відповідний витяг man mount.cifs:

sec=Режим безпеки. Дозволені значення:

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

    За замовчуванням у версії основного ядра до версії v3.8 було sec=ntlm. У версії v3.8 за замовчуванням було змінено на sec=ntlmssp.

    Якщо сервер вимагає підписання під час узгодження протоколу, він може бути включений автоматично. Підпис пакетів також може бути включений автоматично, якщо він увімкнено в /proc/fs/cifs/SecurityFlags.


1

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


1

Спробуйте встановити пакунки клавіш:

sudo apt-get install keyutils

Не точно знаю, чому це допомагає, можливо, хтось ще має відповідь тут. Але принаймні це зробило для мене хитрість: за допомогою клавішних програм кріплення CIF працювало чудово.


Будь ласка, додайте інформацію про те, як це вирішило б проблему, вказану у запитанні. Що робить цей пакет і як він враховує проблему, порушену ОП?
Хаксіель

Хороше питання. Я не впевнений, як допомагають пакунки keyutils. У моєму випадку, принаймні, саме це і зробило трюк. Після встановлення клавішних програм моє кріплення працювало чудово, тоді як до того, як я отримав повідомлення про помилку "помилка монтування (2): немає такого файлу чи каталогу", як і в ОП.
Клаус

Дублікат цієї іншої відповіді
roaima

1

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

Тож якщо ви змінили свій ідентифікатор користувача unix через, у usermod -u 1000 my_userвас можуть виникнути проблеми. Мені було виправлено видалення та повторне додавання користувача smb після цього:

smbpasswd -x my_user
smbpasswd - мій_користувач

Хоча це правда, як це пов’язано з початковим питанням?
РальфФрідл

Як я вже говорив, якщо ви зміните ідентифікатор користувача, з’явиться та сама помилка початкового питання. Тож якщо хтось зробив те саме і знайде цю тему, він чи вона може вважати мій натяк корисним.
Ряд

1

Додайте $до кінця, як це//winserver/sharename$

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

Оце Так! Будь-яка ідея, що робить "$"? Це зафіксувало це для мене, але не має підказки чому
Габріель Ярмарок

Знак $ - це адміністративна частка в контексті спільного доступу Windows, якщо його активує система, користувач з правами адміністратора може отримати доступ до всіх шляхів. Приклад \\ МОЙ-СЕРВЕР \ c $
Phil795

0

Я зіткнувся з тією самою "помилкою монтажу (2): Немає такого файлу чи каталогу", використовуючи mount.cifs в CentOS 7 VM. Я ніколи не визначав, чому саме помилка створюється при використанні безпеки 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.

Інформацію, чому більше не встановлені клавіші, можна знайти тут: 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.