Windowsファイルサーバーからアカウントを取得しました。 (私にとって)とても変な状況は
- に接続したり
smbclient
(深い)サブディレクトリに変更したり、その内容を表示したりできます。 - 共有をマウントできますが(エラーメッセージはありません、マウントポイントはにあります
/proc/mounts
)、同じパスに変更したり、その内容を一覧表示したりすることはできません。わかりましたNo such file or directory
。
下位レベルのサブディレクトリに対する「コンテンツの表示」権限または「次への変更」権限はありません。これは問題ではなく、適切でもありませんsmbclient
。
Windows管理者は、マウントポイントの内容を表示できるようにユーザーに追加の権限を付与しました。これで、マウントを介してより深いサブディレクトリにアクセスできます。
現在の構成で実行するために必要なWindows権限の最小セットが何であるかを確認できませんでした。とにかく問題は確かにLinux側にあります。
smbclient
Windows共有へのアクセス方法とアクセス方法の違いは何ですか?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
。ただし、これはコマンド間の構成の違いです。残念ながら、mount
Windowsサーバーの権限を元の設定に戻すことはできないため、間違ったドメインを使用すると機能していることを確認できません。月曜日に 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
安全ではないと見なされ、使用されていないと仮定します。 /を
使用しているsmb2
かsmb3
接続していますか?smbclient
mount.cifs
プロトコルを使用している場合、smb3
NTLM セキュリティに影響を与え、ディレクトリを一覧表示できないことがあります。
メモ:何が起こっているのかを確認するには、クライアントではなくサーバーのログ(イベントビューア)を確認する必要があります。
編集する:更新とコメントありがとうございます。
私の考えでは、あなたは次のことを経験するかもしれません。指す smbv2
エラー(インストール使用時)。
簡単に言うと:
ドライブのルートであるWindows共有(C $など)をマウントすると、サーバーはディレクトリ
.
エントリ..
を返しません。これにより、smb2コードパスが最初の2つのエントリを誤ってスキップします。
調べる方法?/etc/fstab
たとえば、(smbv3)を追加して、エントリに使用する必要があるsmbのバージョンを指定できますvers=3.0
。可能であれば(サポートされている場合)、vers=1.0
すべてが表示されることを確認するためにバージョンをダウングレードして問題を解決します。
したがって、マウントコードは次のようになります(sec
適用も追加しましたntlm
。mount.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つのディレクトリがあります。これは簡単な修正です。適切な修理を受けるにはパッチを適用する必要があります。