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=ntlmoptions, settings uid및 options 제거를 시도했지만 gid성공하지 못했습니다. 또한, 기대했던 자세한 메시지도 전혀 볼 수 없었습니다 -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'.

내 도커 버전:

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. 옵션을 사용하여 도커 볼륨 생성 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

따라서 디렉터리는 필요한 정확한 사용자가 소유하며 탑재된 공유의 파일에 대한 모든 작업을 수행할 수 있습니다.

누군가가 유용하다고 생각하기를 바랍니다.

관련 정보