업데이트 및 솔루션

업데이트 및 솔루션

동일한 네트워크에 두 대의 컴퓨터가 있고 최근까지 두 컴퓨터 모두 네트워크 드라이브를 탑재할 수 있었습니다. 뭔가가 변경되어 이제 하나의 컴퓨터만 연결할 수 있습니다.

mount p-drive두 컴퓨터 모두에서 예상대로 작동합니다. 이제 내 Debian 노트북은 다음과 같이 응답합니다.

mount --verbose p-drive

Password for USER@//ADDRESS/Users_S$/USER/:  ****
mount.cifs kernel mount options:   ip=XXX.XXX.XXX.XXX,unc=\\ADDRESS,noauto,uid=1000,gid=1000,user=USER,prefixpath=USER/,pass=****
mount error(95): Operation not supported
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

비교를 위해 드라이브를 성공적으로 마운트한 Ubuntu 14 시스템의 보고서는 다음과 같습니다.

--verbose p 드라이브 설치

Password for USER@//ADDRESS/Users_S$/USER/: **** 
mount.cifs kernel mount options: ip=XXX.XXX.XXX.XXX,unc=\\ADDRESS,noauto,uid=223159,gid=10513,user=USER,prefixpath=USER/,pass=****

이 특정 오류에 대해 여기저기서 많은 질문이 있으며 그 중 대부분은 mount.cifs아래와 같이 작업용 기계와 비작업용 기계에 대해 설정되어 있다고 생각합니다.

추가적으로 일반 사용자와 루트로 설치를 시도했는데 결과는 두 경우 모두 동일했습니다. 또한 다른 스레드에서 제안한 대로 "vers=3.0" 및 "sec=ntlm" 옵션을 추가해 보았으나 변경되지 않았습니다.

두 시스템에서 동일한 구성을 사용하고 있으며 최근(몇 주)까지 두 시스템에서 모두 작동했다는 점을 고려하면 이 문제는 mount.cifs 버전 6.0과 6.7 또는 커널 4.4와 4.13 사이에 있는 것으로 가정합니다. 일부 변경으로 인해 발생했습니다.

이와 관련된 다른 질문도 많이 읽었지만 제공된 세부정보나 내 상황에 어떻게 적용되는지 이해가 되지 않습니다. 어떤 제안이라도 환영합니다!

업데이트 및 솔루션

의 출력은 dmesg나에게 필요한 단서를 제공했습니다. vers=1.0최신 시스템에서 해당 옵션을 추가하면 최신 버전의 mount.cifs가 이전 프로토콜을 사용하도록 지시할 것 같습니다. 아마도 오래된 Ubuntu 시스템은 오래된 프로토콜만 사용하므로 이 옵션을 설정할 필요가 없습니다.

작업 기계 사양:

시스템 테이블

//ADDRESS/Users_S$/USER/     /HOME/p-drive      cifs    noauto,users,user=USER,uid=USER,rw     0       0

(여기서 로컬 컴퓨터와 원격 컴퓨터의 사용자 이름은 동일합니다. USER)

uname -a

Linux XXXX 4.4.0-97-generic #120~14.04.1-Ubuntu SMP Wed Sep 20 15:53:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

.cifs 마운트 -V:

6.0

ls -lh /sbin/mount.cifs

-rwsr-xr-x 1 root root 35K Jun 27  2013 /sbin/mount.cifs

dmesg 출력

[1718195.879486] CIFS VFS: \ADDRESS$에서 서버 inode 번호 사용을 자동으로 비활성화합니다. 서버에서 제대로 지원하지 않는 것 같습니다. 이 설치에서는 하드 링크가 인식되지 않습니다. 이 메시지를 무음으로 설정하려면 "noserverino" 옵션을 사용하여 설치하는 것을 고려해 보십시오.

비작동 기계 사양:

파일 시스템 테이블:

//ADDRESS/Users_S$/USER/           /HOME/p-drive       cifs    noauto,users,user=USER,uid=LOCAL_USER,rw      0       0

(이 컴퓨터의 내 로컬 사용자 이름(LOCAL_USER)이 원격 컴퓨터의 내 사용자 이름(USER)과 다릅니다.)

uname -a

Linux 4.13.0-1-amd64 #1 SMP Debian 4.13.4-2 (2017-10-15) x86_64 GNU/Linux

.cifs 마운트 -V:

6.7

ls -lh /sbin/mount.cifs

-rwsr-xr-x 1 root root 35K Mar  8  2017 /sbin/mount.cifs

dmesg 출력

[15873.139891] CIFS VFS: 서버가 방언을 지원하지 않습니다.이전 서버에 액세스하기 위해 마운트할 때 vers=1.0 또는 vers=2.1 지정을 고려하세요.
[15873.139902] CIFS VFS: 반환 코드 = -95로 인해 cifs_mount가 실패했습니다.

답변1

오류 메시지에 따르면 다음과 같습니다 man mount.cifs.

OPTIONS
    username=arg
       specifies the username to connect as. If this is not given, then
       the environment variable USER is used.

       Earlier versions of mount.cifs also allowed one to specify the
       username in a "user%password" or "workgroup/user" or
       "workgroup/user%password" to allow the password and workgroup to be
       specified as part of the username. Support for those alternate
       username formats is now deprecated and should no longer be used.
       Users should use the discrete "password=" and "domain=" to specify
       those values. While some versions of the cifs kernel module accept
       "user=" as an abbreviation for this option, its use can confuse the
       standard mount program into thinking that this is a non-superuser
       mount. It is therefore recommended to use the full "username="
       option name.

따라서 username=대신 대신 user=password=대신을 사용해야 합니다 pass=.

답변2

dmesg몇 가지 추가 정보를 제공한다는 것을 알 수 있습니다 . (이 dmesg명령은 커널의 최신 메시지 시리즈에 액세스합니다. 일반적으로 이러한 메시지는 /var/log/kern.log또는 와 같은 로그 파일에서 액세스하기가 더 쉽습니다 /var/log/syslog.)

귀하의 경우 관련 메시지가 표시됩니다.

[15873.139891] CIFS VFS: Dialect not supported by server. Consider specifying vers=1.0 or vers=2.1 on mount for accessing older servers
[15873.139902] CIFS VFS: cifs_mount failed w/return code = -95

여기서 해결 방법은 설치 옵션에 추가 vers=1.0또는 추가 메시지에서 제안한 것과 정확히 같습니다 . vers=2.1(이것은 SMB/CIFS 프로토콜 버전을 제어합니다.)Debian/Stretch 매뉴얼 페이지.

관련 정보