mount -t cifs 失败,权限被拒绝

mount -t cifs 失败,权限被拒绝

我有一个特定用户的 Windows 10 共享。然后我在 docker 容器中安装了 Debian:stretch。我尝试像这样安装共享文件夹:

root@b9cda19f784c:~# mount -t cifs -v -o username=dockerfile,password=docker,sec=ntlm //10.0.75.1/hlds /root/somedir
mount: permission denied

我尝试删除sec=ntlm选项、设置uidgid选项,但没有成功。另外,我没有看到任何我期望的详细消息-v

在我的 Windows 10 主机上,我可以使用以下命令挂载此文件夹:

net use p: \\10.0.75.1\hlds /user:dockeruser

如何使mount命令输出更多信息以进行调试?或者我的命令中缺少什么mount

更新

运行带有标志的容器--privileged没有帮助:

root@62d77b4c1058:/# mount -v -t cifs -o username=dockerfile,password=docker //10.0.75.1/hlds /root/mnt 
mount.cifs kernel mount options: ip=10.0.75.1,unc=\\10.0.75.1\hlds,user=dockerfile,pass=******** 
mount error(13): Permission denied 
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

使用 Docker 创建卷并安装它没有成功:

PS F:\repos\hlds-docker> docker volume create --opt type=cifs --opt device=//10.0.75.1/hlds --opt o=username=dockerfile,password=docker,file_mode=0777,dir_mode=0777,uid=0,gid=0 myvolume
myvolume
PS F:\repos\hlds-docker> docker run --rm -v myvolume:/root -it --privileged debian:stretch bash
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: error while mounting volume with options: type='cifs' device='//10.0.75.1/hlds' o='username=dockerfile,password=docker,file_mode=0777,dir_mode=0777,uid=0,gid=0': permission denied.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.

我的 Docker 版本:

PS F:\repos\hlds-docker> docker version
Client: Docker Engine - Community
 Version:           18.09.1
 API version:       1.39
 Go version:        go1.10.6
 Git commit:        4c52b90
 Built:             Wed Jan  9 19:34:26 2019
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.1
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.6
  Git commit:       4c52b90
  Built:            Wed Jan  9 19:41:49 2019
  OS/Arch:          linux/amd64
  Experimental:     false

答案1

因此,经过一番尝试和磨难后,我找到了解决方案(但我认为这很奇怪)。您需要执行 2 个步骤:

  1. 将一些虚拟文件放入您的目录中,使其不为空(无论哪种方式都会出现permission denied错误)
  2. 使用选项创建 docker 卷noserverino(偶然发现)

所以就我而言是:

docker volume create --opt type=cifs --opt device=//10.0.75.1/hlds --opt o=username=dockeruser,password=docker,noserverino,file_mode=0777,dir_mode=0777,uid=1000,gid=1000 somevol

进而:

docker run --rm -v somevol:/home/steam/opts -it krow7/hlds:1.0 bash

因此,您的目录由您需要​​的确切用户拥有,并且可以对已安装共享上的文件执行所有操作。

我希望有人会觉得它有用。

相关内容