cifs:无法 cd 进入目录

mal*_*lat 6 fedora cd-command cifs

出于某种原因,我无法 cd 进入我有权访问的特定远程目录,它失败了:

$ cd Data\ Services/
-bash: cd: Data Services/: Invalid argument
Run Code Online (Sandbox Code Playgroud)

这是我安装它的方式:

$ sudo mount -t cifs //big.acme.corp/network/ ~/z -o username=myuser,domain=mydomain,uid=$(id -u),gid=$(id -g),vers=1.0
Password for myuser@//big.acme.corp/network/:  *********
Run Code Online (Sandbox Code Playgroud)

我可以从我的 Windows 8 笔记本电脑(相同的用户名/密码)访问它。

以供参考:

$ ls -ald "Data Services"
drwx--x--x 2 myuser myuser 0 Dec 13 09:21 Data Services
Run Code Online (Sandbox Code Playgroud)

至少在我这边,这个快捷方式似乎被视为一个目录:

$ find Data\ Services -type d
Data Services
find: ‘Data Services’: Invalid argument
Run Code Online (Sandbox Code Playgroud)

因此,我不能用它做太多事情:

$ cat Data\ Services
cat: Data Services: Invalid argument
Run Code Online (Sandbox Code Playgroud)

甚至

$ hexdump Data\ Services
hexdump: Data Services: Invalid argument
hexdump: all input file arguments failed
Run Code Online (Sandbox Code Playgroud)

如下所示,我再次尝试使用noperm

$ sudo mount -t cifs //big.acme.corp/network/ ~/z -o username=myuser,domain=mydomain,uid=$(id -u),gid=$(id -g),noperm
Run Code Online (Sandbox Code Playgroud)

这给了我:

$ mount
...
//big.acme.corp/network/ on /home/myuser/z type cifs (rw,relatime,vers=1.0,cache=strict,username=big.acme.corp,domain=mydomain,uid=1002,forceuid,gid=1003,forcegid,addr=10.1.2.3,file_mode=0755,dir_mode=0755,nounix,mapposix,noperm,rsize=61440,wsize=65536,echo_interval=60,actimeo=1)
Run Code Online (Sandbox Code Playgroud)

这并没有改变任何东西:

$ strings Data\ Services
strings: Data Services: Invalid argument
Run Code Online (Sandbox Code Playgroud)

mal*_*lat 0

实际的根本问题是在DFS. 我的 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
[...]
Run Code Online (Sandbox Code Playgroud)

更新我resolve.conf的:

search acme.corp
Run Code Online (Sandbox Code Playgroud)

到:

search acme.corp mydoma01.acme.corp
Run Code Online (Sandbox Code Playgroud)

我终于可以mount -t cifs在没有'nodfs'选项的情况下打电话了。这些症状不再是错误,而只是提供信息:

$ cd Data Services
CIFS VFS: BAD_NETWORK_NAME: \\MYSERV13\network
[...]
Run Code Online (Sandbox Code Playgroud)

Data Services我终于可以毫无问题地访问内容了。

综上所述:

  1. 需要一些最新的 cifs-utils 软件包,
  2. 不使用nodfs选项
  3. 确保您的resolv.conf定义正确

完整线程位于:

nodfs参考: