주문하다mount.cifs젠투 시스템에서 실행할 수 없다는 것을 발견했습니다체계
ae429-1105 etc # mount -t cifs //file.abc.edu.au/user /home/directory/path -o credentials=/etc/user,rw,iocharset=utf8,file_mode=0777,dir_mode=0777
mount error(2): No such file or directory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
마운트 지점의 존재 및 접근성을 확인했습니다. /홈/디렉토리/경로및 자격 증명 파일/etc/사용자. 관련 모듈 및 서비스도 활성화됩니다.
ae429-1105 etc # lsmod |egrep 'fuse|cifs'
fuse 72589 5
cifs 312131 0
그리고
ae429-1105 etc # systemctl -t service -a |grep Samba
nmbd.service loaded active running Samba NetBIOS name server
smbd.service loaded active running Samba SMB/CIFS server
winbindd.service loaded inactive dead Samba Winbind daemon
많은 사용자가 이 문제를 발견했습니다.한 가지 예.또한 참고하시기 바랍니다내 Ubuntu/debian 시스템에서 동일한 명령을 실행하면 성공적으로 마운트할 수 있습니다.
문제의 기계에 대한 추가 정보:
ae429-1105 etc # mount.cifs --version
mount.cifs version: 6.1
debian/ubuntu에 설치된 mount.cifs 버전은 6.0입니다.
답변1
최신 버전의 Windows에서 공유를 마운트하려는 경우 버전 3.0을 강제 적용하려면 mount 명령에 vers= 옵션을 제공해야 할 수도 있습니다. 우리 파일 서버 중 하나가 최근 2012R2로 업그레이드되었고 그 때 설치가 작동을 멈췄습니다. vers=3.0으로 설정하면 문제가 해결되었습니다. 대부분의 Samba/CIFS 오류와 마찬가지로 "해당 파일이나 디렉터리가 없습니다"라는 메시지는 별로 도움이 되지 않습니다.
예를 들어:
# mount -t cifs //win2012r2/someshare -o cred=/home/foo/.cifs_user,vers=3.0 /mnt/tmp
..내 도메인 이름, 사용자 이름 및 비밀번호는 .cifs_user 파일에 포함되어 있습니다.
user=MyUser
password=MyPassword
domain=MyDomain
분명히 smbmount는 문제나 특별한 옵션 없이도 잘 작동하기 때문에 기본적으로 최신 버전의 SMB 프로토콜을 사용합니다.
기본 프로토콜 버전은 1.0입니다.
mount.cifs 매뉴얼 페이지에서:
vers=arg
SMB protocol version. Allowed values are:
· 1.0 - The classic CIFS/SMBv1 protocol.
· 2.0 - The SMBv2.002 protocol. This was initially introduced in Windows Vista Service Pack 1, and Windows Server 2008. Note that the initial release
version of Windows Vista spoke a slightly different dialect (2.000) that is not supported.
· 2.1 - The SMBv2.1 protocol that was introduced in Microsoft Windows 7 and Windows Server 2008R2.
· 3.0 - The SMBv3.0 protocol that was introduced in Microsoft Windows 8 and Windows Server 2012.
· 3.02 or 3.0.2 - The SMBv3.0.2 protocol that was introduced in Microsoft Windows 8.1 and Windows Server 2012R2.
· 3.1.1 or 3.11 - The SMBv3.1.1 protocol that was introduced in Microsoft Windows 10 and Windows Server 2016.
· 3 - The SMBv3.0 protocol version and above.
· default - Tries to negotiate the highest SMB2+ version supported by both the client and server.
If no dialect is specified on mount vers=default is used. To check Dialect refer to /proc/fs/cifs/DebugData
Note too that while this option governs the protocol version used, not all features of each version are available.
The default since v4.13.5 is for the client and server to negotiate the highest possible version greater than or equal to 2.1. In kernels prior to v4.13,
the default was 1.0. For kernels between v4.13 and v4.13.5 the default is 3.0.
답변2
keyutils 패키지를 설치해 보세요:
sudo apt-get install keyutils
이것이 왜 도움이 되는지 잘 모르겠습니다. 어쩌면 다른 사람이 여기에 답변을 가지고 있을 수도 있습니다. 그러나 적어도 나에게는 작동합니다. keyutils를 사용하면 cifs 마운트가 제대로 작동합니다.
답변3
옵션이 있나요 nodfs
? 즉, -o
옵션 입력의 경우 다음 입력을 전달합니다.
-o credentials=/etc/user,rw,iocharset=utf8,file_mode=0777,dir_mode=0777,nodfs
즉, 추가,nodfs
이것은 나에게 효과적입니다.
답변4
매개변수를 변경해야 할 수도 있습니다 sec
. 이렇게 하면 내 설정에 적합합니다.
mount.cifs ... -o sec=ntlm
관련 발췌 man mount.cifs
:
sec=
안전 모드. 허용되는 값은 다음과 같습니다.
none
- 빈 사용자(이름 없음)로 접속을 시도합니다.krb5
- Kerberos 버전 5 인증 사용krb5i
- Kerberos 인증을 사용하고 패킷 서명을 강제로 활성화합니다.ntlm
- NTLM 비밀번호 해싱 사용ntlmi
- NTLM 비밀번호 해싱 및 강제 패킷 서명 사용ntlmv2
- NTLMv2 비밀번호 해싱 사용ntlmv2i
- NTLMv2 비밀번호 해싱 및 강제 패킷 서명 사용ntlmssp
- 원본 NTLMSSP 메시지에 캡슐화된 NTLMv2 비밀번호 해시를 사용합니다.
ntlmsspi
- 원본 NTLMSSP 메시지에 캡슐화된 NTLMv2 암호화 해시를 사용하고 패킷 서명을 강제합니다.v3.8 이전의 메인라인 커널 버전의 기본값은 이었습니다
sec=ntlm
. v3.8에서는 기본값이sec=ntlmssp
.프로토콜 협상 중에 서버에 서명이 필요한 경우 자동으로 활성화될 수 있습니다. .
/proc/fs/cifs/SecurityFlags