web-dev-qa-db-ja.com

LinuxでのWindows DFS名前空間の適切なマウント/オブジェクトはリモート

職場でUbuntuシステムにリモートCIFSディレクトリをマウントするのに苦労しています。リモートフォルダーは、Windows 8.1セッションからも(仕事中でも)正常に動作しているようです。

通常のマウントが機能しませんでした:

$ Sudo mount -v -t cifs //1.2.3.4/network ~/z -o username=malat,domain=MY,uid=$(id -u),gid=$(id -g),iocharset=utf8
Password for malat@//1.2.3.4/network:  *********
mount.cifs kernel mount options: ip=1.2.3.4,unc=\\1.2.3.4\network,iocharset=utf8,uid=1002,gid=1002,user=mmalaterre,domain=MY,pass=********
mount error(2): No such file or directory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

しかし、私は最終的に偶然に遭遇します this ref

$ Sudo mount -v -t cifs //1.2.3.4/network ~/z -o username=malat,domain=MY,uid=$(id -u),gid=$(id -g),iocharset=utf8,nodfs
Password for malat@//1.2.3.4/network:  *********
mount.cifs kernel mount options: ip=1.2.3.4,unc=\\1.2.3.4\network,iocharset=utf8,nodfs,uid=1002,gid=1002,user=malat,domain=MY,pass=********

少なくとも私は何かが今働いています:

$ mount | grep network
//1.2.3.4/network on /home/malat/z type cifs (rw,relatime,vers=2.1,cache=strict,username=malat,domain=MY,uid=1002,forceuid,gid=1002,forcegid,addr=1.2.3.4,file_mode=0755,dir_mode=0755,soft,nounix,nodfs,mapposix,rsize=1048576,wsize=1048576,bsize=1048576,echo_interval=60,actimeo=1)

ただし、機能していないようです(DFSオプションに関連していると思います)。症状は次のとおりです。

$ cd ~/z
$ ls
folder1 folder2
$ ls folder1
subfolder1
$ ls folder2
ls: cannot access 'folder2': Invalid argument

Windows 8.1セッションからfolder2フォルダーに問題なくアクセスできるので、これはパーマの問題ではありません。 Linuxセッションからfolder2にアクセスするにはどうすればよいですか?

dmesgの末尾は次のとおりです。

[1927958.534353] CIFS: Attempting to mount //1.2.3.4/network
[1927958.534403] No dialect specified on mount. Default has changed to a more secure dialect, SMB2.1 or later (e.g. SMB3), from CIFS (SMB1). To use the less secure SMB1 dialect to access old servers which do not support SMB3 (or SMB2.1) specify vers=1.0 on mount.
[1927960.069018] CIFS VFS: DFS capability contradicts DFS flag
[1927960.375111] CIFS VFS: Autodisabling the use of server inode numbers on new server.
[1927960.375115] CIFS VFS: The server doesn't seem to support them properly or the files might be on different servers (DFS).
[1927960.375117] CIFS VFS: Hardlinks will not be recognized on this mount. Consider mounting with the "noserverino" option to silence this message.

更新:マウントコマンドにvers=1.0を追加すると、症状が少し異なります。

$ cd ~/z
$ cd folder2
$ ls
subfolder2
$ cd subfolder2/
bash: cd: subfolder2/: Object is remote

参考のため:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 19.04
Release:        19.04
Codename:       disco

カーネルのバージョン:

$ uname -rvo
5.0.0-38-generic #41-Ubuntu SMP Tue Dec 3 00:27:35 UTC 2019 GNU/Linux

そして

$ cat /etc/request-key.d/cifs.spnego.conf
create  cifs.spnego    * * /usr/sbin/cifs.upcall %k

更新:

1
malat

ようやく問題を自分の側でデバッグすることができました。動的デバッグを使用できるようにするには、Debianバスターシステム(Linuxカーネル5.4.x)をインストールする必要がありました。1つのエラーメッセージがユーザーレベルから隠されていたためです。

失敗したCIFSマウントをデバッグする手順は次のとおりです。

それらは私にもっと冗長なエラーログを与えました:

[...]
[  687.037593] fs/cifs/dns_resolve.c: dns_resolve_server_name_to_ip:
unable to resolve: MYSERV13
[  687.037606] fs/cifs/cifs_dfs_ref.c: cifs_compose_mount_options:
Failed to resolve server part of //MYSERV13/network to IP: -2
[...]

これが手がかりでした。私は単にresolve.confを次から更新する必要がありました:

search acme.corp

に:

search acme.corp mydoma01.acme.corp

最初から問題だった「nodfs」オプションなしでmount -t cifsをようやく呼び出すことができました。

症状はもはやエラーではなく、単なる情報です。

$ cd subfolder2
CIFS VFS: BAD_NETWORK_NAME: \\MYSERV13\network
[...]

ようやくsubfolder2のコンテンツに問題なくアクセスできるようになりました。

私のUbuntuシステム(Linuxカーネル5.0.x)では、上記を機能させるためにCIFSの明示的なバージョンを指定する必要があったことに注意してください(vers=1.0)。

参照:

1
malat

現在、私が見つけた唯一の回避策は、DFS Referral listを使用することです。私のウィンドウボックスから問題のあるsubfolder2(シンボリックリンクアイコン)に移動し、右クリックしてプロパティを取得します。

DFS Referral list

次に、私のLinuxセッションに戻り、代わりに使用してマウントします。

$ Sudo mount -t cifs //xyzclus01-cifs.mydoma.acme.corp/Disk12 ~/disk12 -v -o username=malat,domain=MY,uid=$(id -u),gid=$(id -g),iocharset=utf8,nodfs,vers=1.0
Password for malat@//xyzclus01-cifs.mydoma.acme.corp/Disk12:  *********
mount.cifs kernel mount options: ip=5.6.7.8,unc=\\xyzclus01-cifs.mydoma.acme.corp\Disk12,iocharset=utf8,nodfs,vers=1.0,uid=1002,gid=1002,user=malat,domain=MY,pass=********

(ついに!)subfolder2のコンテンツにアクセスできます。これは非常に扱いにくく、直観に反しています。したがって、これはせいぜい、実際の解決策ではなく、回避策と見なされます。

1
malat