tidak dapat menggunakan mount.cifs: mount error (2): Tidak ada file atau direktori tersebut

17

Perintah mount.cifs ditemukan tidak dapat dijalankan di sistem gentoo dengan 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)

Telah dikonfirmasi bahwa keberadaan dan aksesibilitas mountpoint / home / direktori / path dan file kredensial / etc / user . Juga modul dan layanan yang relevan telah diaktifkan, yaitu,

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

dan

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

Masalah ini telah diidentifikasi oleh banyak pengguna, misalnya satu contoh . JUGA CATATAN bahwa perintah yang sama yang dijalankan di sistem Ubuntu / debian saya berhasil dipasang.

Informasi lain di mesin yang bermasalah:

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

versi mount.cif yang diinstal di debian / ubuntu adalah 6.0

Chenming Zhang
sumber
/home/directory/pathpasti ada di lingkungan Gentoo? Aneh bahwa Anda tidak menyebutkan bahwa karena ini adalah pertanyaan pertama yang jelas muncul.
Hauke ​​Laging
Ya, saya telah mengkonfirmasi keberadaan dan aksesibilitas dari mount point / home / direktori / path .
Chenming Zhang
Anda harus menambahkan informasi ini ke pertanyaan sehingga pembaca lain tidak perlu membaca komentar untuk mendapatkannya.
Hauke ​​Laging

Jawaban:

8

Anda mungkin perlu memberikan opsi vers = ke perintah mount untuk memaksa versi 3.0 jika Anda mencoba untuk me-mount share dari versi Windows yang lebih baru. Salah satu server file kami baru-baru ini ditingkatkan ke 2012R2 dan saat itulah mount saya berhenti berfungsi. Mengaturnya ke vers = 3.0 memperbaiki masalah. Seperti kebanyakan kesalahan Samba / CIFS, pesan "Tidak ada file atau direktori" tidak banyak membantu.

Sebagai contoh:

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

..di mana saya memiliki domain saya, nama pengguna dan kata sandi yang terkandung dalam file .cifs_user.

Rupanya, smbmount menggunakan versi yang lebih baru dari protokol SMB secara default karena berfungsi tanpa masalah atau opsi khusus apa pun.

Perhatikan di bawah ini bahwa versi protokol default adalah 1.0.

Dari halaman manual 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.
foobrew
sumber
Saya memiliki masalah serupa dengan flag "nounix" yang tidak harus didukung di v1.0. Mengubah ke v2.0 (yang terbaru tersedia untuk saya) memperbaiki masalah. Juga mengajukan izin yang lebih masuk akal dengan vers = 2.0 (755 bukannya 777)
cxrodgers
2
Terima kasih banyak untuk solusi yang terkait dengan opsi vers =! Ini bekerja untuk saya, hanya mundur ... Setelah meningkatkan lompatan opensuse dari versi 42.3 ke 15.1, entri fstab untuk memasang drive jaringan, yang berfungsi, berhenti bekerja di 15.1. Saya menggunakan opsi vers = 1.0 dan coba tebak ... Mungkin lompatan 15.1 menggunakan versi terbaru dari protokol SMB yang tidak dapat menemukan direktori jarak jauh.
John
Menghubungkan ke share yang dihosting di Windows Server 2003 dari Ubuntu 19.04 terus gagal untuk saya sampai saya menambahkan vers = 1.0 ke daftar opsi saya. Terima kasih!
user8675309
Ini berhasil untuk saya, KECUALI: Saya harus menyatakan Versi DUA vers=2.0untuk memasang saham samba dari sistem NAS saya yang berusia 5 tahun ... dengan 3.0 saya mendapat kesalahan di atas.
Frank Nocke
etc/fstabpengguna: Hanya menempatkan vers=3.0(atau 2.0 ...) yang benar dan tanpa spasi sebelum opsi Anda yang lain, yaituvers=2.0,guest,uid=1000,iocharset…
Frank Nocke
5

Bisakah Anda menggunakan nodfsopsi? yaitu untuk -oinput opsi Anda lulus input seperti di bawah ini.

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

yaitu ditambahkan ,nodfs

Ini berhasil untuk saya.

Salam
sumber
Terima kasih! Saya mencoba semua saran lain terlebih dahulu, tetapi saya membutuhkan ini di fedora30 di mana saya tidak membutuhkannya sebelumnya
Jens Timmerman
2

Anda mungkin perlu mengubah secparameter: pengaturan ini membuatnya berfungsi pada pengaturan saya:

mount.cifs ... -o sec=ntlm

Ekstrak yang relevan dari man mount.cifs:

sec=Mode aman. Nilai yang diizinkan adalah:

  • none - Berusaha koneksi sebagai pengguna null (tanpa nama)
  • krb5 - Gunakan otentikasi Kerberos versi 5
  • krb5i - Gunakan otentikasi Kerberos dan secara paksa mengaktifkan penandatanganan paket
  • ntlm - Gunakan hashing kata sandi NTLM
  • ntlmi - Gunakan hashing kata sandi NTLM dan memaksa penandatanganan paket
  • ntlmv2 - Gunakan hashing kata sandi NTLMv2
  • ntlmv2i - Gunakan hashing kata sandi NTLMv2 dan memaksa penandatanganan paket
  • ntlmssp - Gunakan hashing kata sandi NTLMv2 yang dienkapsulasi dalam pesan Raw NTLMSSP
  • ntlmsspi - Gunakan hashing kata sandi NTLMv2 yang dienkapsulasi dalam pesan Raw NTLMSSP, dan paksa penandatanganan paket

    Default dalam versi kernel arus utama sebelum v3.8 adalah sec=ntlm. Di v3.8, standar diubah menjadi sec=ntlmssp.

    Jika server mengharuskan penandatanganan selama negosiasi protokol, maka mungkin diaktifkan secara otomatis. Penandatanganan paket juga dapat diaktifkan secara otomatis jika diaktifkan /proc/fs/cifs/SecurityFlags.

Benoit Duffez
sumber
1

Saya mengalami ini di Ubuntu 18.04. Masalahnya adalah saya membutuhkan paket keyutils untuk melakukan otentikasi Kerberos ( sec=krb5opsi mount), yang tidak diinstal bersama dengan cifs-utils (yang menyediakan mount.cifs). Saya tidak yakin apakah nama paketnya sama di Gentoo atau tidak. (Terima kasih kepada https://forum.zentyal.org/index.php?topic=18601.0 untuk solusinya.)

Chris
sumber
1

Saya ingin menambahkan sumber lain dari masalah ini yang saya temui hari ini. Setelah Anda mengubah id pengguna pengguna unix, pengguna seseorang yang dibuat melalui smbpasswd mungkin tidak dapat mengautentikasi untuk berbagi samba lagi menghasilkan kesalahan yang sama.

Jadi, jika Anda mengubah id pengguna unix Anda melalui usermod -u 1000 my_usermaka Anda dapat mengalami masalah. Perbaikan untuk saya adalah menghapus dan menambahkan kembali pengguna seseorang setelahnya:

smbpasswd -x my_user
smbpasswd -a my_user
Ryad
sumber
Meskipun benar, bagaimana ini terkait dengan pertanyaan asli?
RalfFriedl
Seperti yang saya katakan, jika Anda mengubah id pengguna pengguna, kesalahan yang sama dari pertanyaan awal muncul. Jadi, jika ada orang yang melakukan hal yang sama dan menemukan utas ini, dia mungkin menemukan petunjuk saya berguna.
Ryad
1

Tambahkan a $sampai akhir, seperti ini//winserver/sharename$

mount.cifs -v -o username=myusername,domain=MYCODOMAIN //winserver/sharename$ /mnt/mymountpoint
Fahri çetin
sumber
Wow! Tahu apa yang dilakukan '$'? Itu memperbaikinya untuk saya tetapi tidak tahu mengapa
Gabriel Fair
Tanda $ adalah pembagian administratif dalam konteks berbagi Windows, jika diaktifkan oleh sistem, pengguna dengan hak administratif dapat mengakses semua jalur. Contoh \\ MY-SERVER \ c $
Phil795
0

Saya mengalami "kesalahan pemasangan (2) yang sama: kesalahan" Tidak ada file atau direktori "menggunakan mount.cifs pada CentOS 7 VM. Saya tidak pernah menentukan dengan tepat mengapa kesalahan dihasilkan saat menggunakan keamanan ntlm default (dan variannya), tetapi saya menemukan bahwa menggunakan otentikasi Kerberos mengatasi masalah tersebut. Jadi baris perintah kerja terakhir saya terlihat seperti ini:

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

sedangkan perintah ini yang memberikan kesalahan "tidak ada file atau direktori" adalah:

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

Untuk menggunakan Kerberos, saya menginstal paket "krb5-workstation" dan mengkonfigurasinya.

Mark Edington
sumber
0

Cobalah untuk menginstal keyutils paket:

sudo apt-get install keyutils

Tidak yakin persis mengapa ini membantu, mungkin orang lain punya jawaban di sini. Tapi setidaknya itu berhasil bagi saya: dengan keyutils mount cifs bekerja dengan baik.

Klaus
sumber
Harap tambahkan beberapa informasi tentang bagaimana ini akan menyelesaikan masalah yang dinyatakan dalam pertanyaan. Apa yang dilakukan paket ini, dan bagaimana cara mengetahui masalah yang diangkat oleh OP?
Haxiel
Pertanyaan bagus. Saya tidak yakin bagaimana keyutils paket membantu. Dalam kasus saya setidaknya inilah yang melakukan trik. Setelah menginstal keyutils, cifs mount saya berfungsi dengan baik, sedangkan sebelum saya mendapatkan pesan kesalahan "mount error (2): Tidak ada file atau direktori", sama seperti di OP.
Klaus
Gandakan jawaban lain
roaima
0

Dengan saya itu bekerja dengan meletakkan "vers = 1.0" seperti sebelumnya -> kredensial = / root / .dbx.credentials, vers = 1.0 , uid = 1001, gid = 100, rw

Carlos Roberto da Silva Junior
sumber