không thể sử dụng mount.cifs: mount error (2): Không có tệp hoặc thư mục như vậy


17

Lệnh mount.cifs được tìm thấy không thể chạy trong một hệ thống gentoo với 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)

Nó đã được xác nhận rằng sự tồn tại và khả năng truy cập của mountpoint / home / thư mục / đường dẫn và tệp thông tin xác thực / etc / user . Ngoài ra, các mô-đun và dịch vụ có liên quan đã được bật, tức là

 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

Vấn đề này đã được xác định bởi nhiều người dùng, ví dụ một ví dụ . C NOTENG LƯU Ý rằng cùng một lệnh được thực thi trong hệ thống Ubuntu / debian của tôi có thể gắn kết thành công.

Thông tin khác trong máy có vấn đề:

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

phiên bản mount.cifs được cài đặt trong debian / ubfox là 6.0


/home/directory/pathchắc chắn tồn tại trong môi trường Gentoo? Kỳ lạ là bạn không đề cập đến vì đây là câu hỏi đầu tiên rõ ràng xuất hiện.
Hauke ​​Laging

Có, tôi đã xác nhận sự tồn tại và khả năng truy cập của điểm gắn kết / nhà / thư mục / đường dẫn .
Chenming Zhang

Bạn nên thêm thông tin này vào câu hỏi để những người đọc khác không cần đọc các bình luận để có được nó.
Hauke ​​Laging

Câu trả lời:


8

Bạn có thể cần cung cấp tùy chọn Vers = cho lệnh mount để buộc phiên bản 3.0 nếu bạn đang cố gắn kết chia sẻ từ phiên bản Windows mới hơn. Một trong những trình duyệt của chúng tôi gần đây đã được nâng cấp lên 2012R2 và đó là khi mount của tôi ngừng hoạt động. Đặt nó thành Vers = 3.0 đã khắc phục sự cố. Giống như hầu hết các lỗi Samba / CIFS, thông báo "Không có tệp hoặc thư mục như vậy" không giúp ích nhiều.

Ví dụ:

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

.. bất cứ nơi nào tôi có tên miền, tên người dùng và mật khẩu của mình trong tệp .cifs_user.

Rõ ràng, smbmount sử dụng một phiên bản mới hơn của giao thức SMB theo mặc định vì nó hoạt động mà không có vấn đề hoặc bất kỳ tùy chọn đặc biệt nào.

Lưu ý bên dưới rằng phiên bản giao thức mặc định là 1.0.

Từ trang man 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.

Tôi gặp vấn đề tương tự với cờ "nounix" không được hỗ trợ trong v1.0. Thay đổi thành v2.0 (gần đây nhất có sẵn cho tôi) đã khắc phục sự cố. Ngoài ra quyền truy cập tệp hợp lý hơn với Vers = 2.0 (755 thay vì 777)
cxrodgers

2
Cảm ơn rất nhiều cho giải pháp liên quan đến Vers = tùy chọn! Nó hoạt động với tôi, chỉ ngược lại ... Sau khi nâng cấp bước nhảy mở từ phiên bản 42.3 lên 15.1, một mục nhập fstab để gắn ổ đĩa mạng, hoạt động, đã ngừng hoạt động trong 15.1. Tôi đã sử dụng tùy chọn Vers = 1.0 và đoán xem ... Có lẽ bước nhảy 15.1 sử dụng phiên bản mới hơn của giao thức SMB không thể tìm thấy thư mục từ xa.
John

Việc kết nối với chia sẻ được lưu trữ trên Windows Server 2003 từ Ubuntu 19.04 liên tục thất bại đối với tôi cho đến khi tôi thêm Vers = 1.0 vào danh sách tùy chọn của mình. Cảm ơn!
dùng8675309

Nó hoạt động với tôi, NGOẠI TRỪ: Tôi đã phải nêu Phiên bản TWO vers=2.0để gắn cổ phiếu samba của hệ thống NAS 5 năm tuổi của tôi ... với 3.0 tôi đã gặp lỗi trên.
Frank Nocke

etc/fstabngười dùng: Chỉ cần đặt vers=3.0(hoặc 2.0 ...) đúng và không có chỗ trống trước các tùy chọn khác của bạn, tức làvers=2.0,guest,uid=1000,iocharset…
Frank Nocke

5

Bạn có thể sử dụng nodfstùy chọn? tức là cho các -otùy chọn đầu vào của bạn vượt qua đầu vào như dưới đây.

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

tức là nối thêm ,nodfs

Nó làm việc cho tôi.


cảm ơn bạn! Tôi đã thử tất cả các đề xuất khác trước, nhưng tôi cần điều này trên fedora30, nơi tôi không cần nó trước đây
Jens Timmerman

2

Bạn có thể cần thay đổi sectham số: cài đặt này làm cho nó hoạt động trên thiết lập của tôi:

mount.cifs ... -o sec=ntlm

Chiết xuất có liên quan của man mount.cifs:

sec=Chế độ bảo mật. Các giá trị được phép là:

  • none - cố gắng kết nối với tư cách là người dùng null (không có tên)
  • krb5 - Sử dụng xác thực Kerberos phiên bản 5
  • krb5i - Sử dụng xác thực Kerberos và cho phép ký gói
  • ntlm - Sử dụng băm mật khẩu NTLM
  • ntlmi - Sử dụng băm mật khẩu NTLM và buộc ký gói
  • ntlmv2 - Sử dụng băm mật khẩu NTLMv2
  • ntlmv2i - Sử dụng băm mật khẩu NTLMv2 và buộc ký gói
  • ntlmssp - Sử dụng băm mật khẩu NTLMv2 được gói gọn trong thông báo NTLMSSP thô
  • ntlmsspi - Sử dụng băm mật khẩu NTLMv2 được gói gọn trong thông báo NTLMSSP thô và buộc ký gói

    Mặc định trong các phiên bản kernel chính trước v3.8 là sec=ntlm. Trong v3.8, mặc định đã được thay đổi thành sec=ntlmssp.

    Nếu máy chủ yêu cầu ký trong quá trình đàm phán giao thức, thì nó có thể được kích hoạt tự động. Ký gói cũng có thể được kích hoạt tự động nếu nó được kích hoạt /proc/fs/cifs/SecurityFlags.


1

Tôi đã gặp vấn đề này trên Ubuntu 18.04. Vấn đề là tôi cần gói keyutils để thực hiện xác thực Kerberos ( sec=krb5tùy chọn gắn kết), không được cài đặt cùng với cifs-utils (cung cấp mount.cifs). Tôi không chắc tên gói có giống với Gentoo hay không. (Cảm ơn https://forum.zentyal.org/index.php?topic=18601.0 cho giải pháp.)


1

Tôi muốn thêm một nguồn khác của vấn đề này mà tôi gặp phải ngày hôm nay. Khi bạn thay đổi id người dùng của người dùng unix, người dùng smb được tạo qua smbpasswd có thể không thể xác thực cho chia sẻ samba nữa dẫn đến lỗi tương tự.

Vì vậy, nếu bạn thay đổi id người dùng unix thông qua usermod -u 1000 my_userthì bạn có thể gặp sự cố. Cách khắc phục đối với tôi là xóa và thêm lại người dùng smb sau đó:

smbpasswd -x my_user
smbpasswd -a my_user

Trong khi sự thật, làm thế nào điều này có liên quan đến câu hỏi ban đầu?
RalfFriedl

Như tôi đã nói, nếu bạn thay đổi id người dùng của người dùng, lỗi tương tự của câu hỏi ban đầu sẽ xuất hiện. Vì vậy, nếu bất cứ ai làm điều tương tự và tìm thấy chủ đề này, họ có thể thấy gợi ý của tôi hữu ích.
Ryad

1

Thêm một $vào cuối, như thế này//winserver/sharename$

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

Ồ Có ai biết '$' không? Nó đã sửa nó cho tôi nhưng không biết tại sao
Gabriel Fair

Dấu $ là một chia sẻ quản trị trong ngữ cảnh chia sẻ Windows, nếu được kích hoạt bởi hệ thống, người dùng có quyền quản trị có thể truy cập tất cả các đường dẫn. Ví dụ \\ MY-SERVER \ c $
Phil795

0

Tôi đã chạy vào cùng một lỗi "mount mount (2): Không có lỗi tập tin hoặc thư mục như vậy" khi sử dụng mount.cifs trên máy ảo CentOS 7. Tôi chưa bao giờ xác định chính xác lý do tại sao lỗi được tạo khi sử dụng bảo mật ntlm mặc định (và các biến thể), nhưng tôi đã phát hiện ra rằng sử dụng xác thực Kerberos đã khắc phục được sự cố. Vì vậy, dòng lệnh làm việc cuối cùng của tôi trông như thế này:

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

trong khi lệnh này đưa ra lỗi "không có tệp hoặc thư mục như vậy" là:

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

Để sử dụng Kerberos, tôi đã cài đặt gói "krb5-workstation" và định cấu hình nó.


0

Hãy thử cài đặt keyutils gói:

sudo apt-get install keyutils

Không chắc chắn chính xác lý do tại sao điều này giúp, có thể người khác có câu trả lời ở đây. Nhưng ít nhất nó đã giúp tôi rất nhiều: với keyutils, cifs mount hoạt động tốt.


Vui lòng thêm một số thông tin về cách điều này sẽ giải quyết vấn đề được nêu trong câu hỏi. Gói này làm gì và làm thế nào để giải quyết vấn đề do OP nêu ra?
Haxiel

Câu hỏi hay. Tôi không chắc làm thế nào các keyutils gói giúp. Trong trường hợp của tôi ít nhất đây là những gì đã lừa. Sau khi cài đặt keyutils, mount cifs của tôi hoạt động tốt, trong khi trước khi tôi nhận được thông báo lỗi "mount mount (2): Không có tệp hoặc thư mục như vậy", giống như trong OP.
Klaus

Bản sao của câu trả lời khác
roaima


0

Với tôi, nó hoạt động bằng cách đặt "Vers = 1.0" như trước -> thông tin đăng nhập = / root / .dbx.credentials, Vers = 1.0 , uid = 1001, gid = 100, rw

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.