smbclientはWindows共有コンテンツにアクセスできますが、mount.cifsにはアクセスできません。

smbclientはWindows共有コンテンツにアクセスできますが、mount.cifsにはアクセスできません。

Windowsファイルサーバーからアカウントを取得しました。 (私にとって)とても変な状況は

  • に接続したりsmbclient(深い)サブディレクトリに変更したり、その内容を表示したりできます。
  • 共有をマウントできますが(エラーメッセージはありません、マウントポイントはにあります/proc/mounts)、同じパスに変更したり、その内容を一覧表示したりすることはできません。わかりましたNo such file or directory

下位レベルのサブディレクトリに対する「コンテンツの表示」権限または「次への変更」権限はありません。これは問題ではなく、適切でもありませんsmbclient

Windows管理者は、マウントポイントの内容を表示できるようにユーザーに追加の権限を付与しました。これで、マウントを介してより深いサブディレクトリにアクセスできます。

現在の構成で実行するために必要なWindows権限の最小セットが何であるかを確認できませんでした。とにかく問題は確かにLinux側にあります。

  • smbclientWindows共有へのアクセス方法とアクセス方法の違いは何ですか?mount.cifs
  • どうすれmount.cifsばそうすることができますかsmbclient

結論として

回答の提案をテストできるように、Windows管理者に共有の権限をリセットするように依頼しました。残念ながら問題は消えた。以前と同様に、共有コンテンツは表示されませんが、マウントが深いサブディレクトリにアクセスできるようになりました。非常に奇妙な。

コメント@intika:あなたの回答に追加の報酬を提供しようとしましたが、そうしたときに何らかの理由であなたの回答を削除しました...

コメントと回答への回答

Windowsサーバー

サーバー2016、SMB 3.1.1

サンババージョン

4.5.16 ドメインのメンバーではありません。

使用されるコマンド

  • /etc/fstab://fs-p01.dnsdomain/Data /data cifs credentials=/root/fs-p01.credentials 0 0
  • smbclient //fs-p01.dnsdomain/Data -U username -W windowsdomain

windowsdomainただ命令が不完全であることに気づきましたsmbclient。おそらくこれはうまくいくので関係ありません。それは単にそれをname置き換えますname.local。ただし、これはコマンド間の構成の違いです。残念ながら、mountWindowsサーバーの権限を元の設定に戻すことはできないため、間違ったドメインを使用すると機能していることを確認できません。月曜日に Windows 管理者がこれを行うまで待つ必要があります。

作業したいディレクトリの場合、共有内のパスの長さは85文字です。さらに、次のより少ない親ディレクトリにアクセスできる必要があります。

xxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/2020/2020_06

構成ファイル

/root/fs-p01.credentials

username=username
password=...
domain=name.local

/etc/smb/smb.conf(おそらくクライアント機能とは関係がないかもしれません)

[global]
   workgroup = MERCHANTINVOICE
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   # panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   passdb backend = tdbsam
   encrypt passwords = yes
   unix password sync = no
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = no
   map to guest = bad user
   usershare allow guests = no

ベストアンサー1

intikaがコメントで指摘したように、あなたは私たちに十分な詳細を提供していません。

ルート制限

悪名高い260に会うこともできます最大パス長制限。 APIにアクセスするUnicode方式があります。32,767限定。 Windowsの世界では、\\server\share(260制限の適用)または\\?\UNC\server\share(32767制限の適用)でアクセスするかどうかによって異なります。

今問題は、リストしたいパスの長さです。 2番目の質問はどちらをsmbclient使用するかとmount.cifs

から引用smbclientマニュアルページ:

smbclient は、サーバが LANMAN2 プロトコル以上をサポートする場合、長いファイル名をサポートします。

しかし、mount.cifsが長いパスをサポートしているという内容は見つかりませんmount.cifs

SMBプロトコルバージョン

smb1安全ではないと見なされ、使用されていないと仮定します。 /を
使用しているsmb2smb3接続していますか?smbclientmount.cifs

プロトコルを使用している場合、smb3NTLM セキュリティに影響を与え、ディレクトリを一覧表示できないことがあります。

メモ:何が起こっているのかを確認するには、クライアントではなくサーバーのログ(イベントビューア)を確認する必要があります。

編集する:更新とコメントありがとうございます。

私の考えでは、あなたは次のことを経験するかもしれません。指す smbv2エラー(インストール使用時)。
簡単に言うと:

ドライブのルートであるWindows共有(C $など)をマウントすると、サーバーはディレクトリ.エントリ..を返しません。これにより、smb2コードパスが最初の2つのエントリを誤ってスキップします。

調べる方法?/etc/fstabたとえば、(smbv3)を追加して、エントリに使用する必要があるsmbのバージョンを指定できますvers=3.0。可能であれば(サポートされている場合)、vers=1.0すべてが表示されることを確認するためにバージョンをダウングレードして問題を解決します。

したがって、マウントコードは次のようになります(sec適用も追加しましたntlmmount.cif のマニュアルページ:

//fs-p01.dnsdomain/Data  /data  cifs  credentials=/root/fs-p01.credentials,vers=1.0,sec=ntlm  0 0

smbv1無効になっていてテスト目的で有効にできない場合は、次を使用してSMBデバッグを有効にできます。

echo 1 > /proc/fs/cifs/traceSMB

ls -laその後、ログにディレクトリを表示できるかどうかを簡単に確認できます。その場合は、このエラーの影響を受けます。

3番目に念頭に置く必要があるオプションは、マウントルートに複数のエントリを持つことです。これは、表示する項目の前に開始する必要があります。

報告されたエラー

このバグが報告されました。以下で見つけることができます:サンババーグジラ

解決策

試してみることができますこのパッチはAurelienによって作成されました。しかし、正しくテストされているかどうかはわかりません。

2番目のオプションは、上記の3番目のオプションと同様の「解決方法」を実行することです。デフォルトでは、並べ替えると、一番上にある2つのディレクトリがあります。これは簡単な修正です。適切な修理を受けるにはパッチを適用する必要があります。

おすすめ記事