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