não pode usar mount.cifs: erro de montagem (2): nenhum arquivo ou diretório

17

O comando mount.cifs é encontrado não sendo capaz de rodar em um sistema gentoo com systemd

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)

Foi confirmado que a existência e acessibilidade do ponto de montagem / home / diretório / caminho e arquivo de credenciais / etc / user . Os módulos e serviços relevantes também foram ativados, ou seja,

 ae429-1105 etc # lsmod |egrep 'fuse|cifs'
 fuse                   72589  5 
 cifs                  312131  0

e

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

Este problema foi identificado por muitos usuários, por exemplo , um exemplo . NOTE TAMBÉM que o mesmo comando executado no meu sistema Ubuntu / debian é capaz de montar com sucesso.

Outras informações na máquina problemática:

ae429-1105 etc # mount.cifs --version
mount.cifs version: 6.1

a versão do mount.cifs instalada no debian / ubuntu é 6.0

Chenming Zhang
fonte
/home/directory/pathé certo que existe no ambiente Gentoo? Estranho que você não mencione isso, pois esta é a primeira pergunta óbvia que surge.
Hauke ​​Laging 21/03/14
Sim, confirmei a existência e acessibilidade do ponto de montagem / home / diretório / caminho .
Chenming Zhang
Você deve adicionar essas informações à pergunta para que outros leitores não precisem ler os comentários para obtê-los.
Hauke ​​Laging 21/03/14

Respostas:

8

Pode ser necessário fornecer a opção vers = ao comando mount para forçar a versão 3.0 se você estiver tentando montar um compartilhamento a partir de uma versão mais recente do Windows. Um dos nossos servidores de arquivos foi atualizado recentemente para 2012R2 e foi quando minha montagem parou de funcionar. Configurá-lo para vers = 3.0 corrigiu o problema. Como a maioria dos erros do Samba / CIFS, a mensagem "Esse arquivo ou diretório não existe" não ajuda muito.

Como um exemplo:

# mount -t cifs //win2012r2/someshare -o cred=/home/foo/.cifs_user, vers=3.0 /mnt/tmp

..onde eu tenho meu domínio, nome de usuário e senha contidos no arquivo .cifs_user.

Aparentemente, o smbmount usa uma versão mais recente do protocolo SMB por padrão, uma vez que funcionou sem problemas ou com opções especiais.

Observe abaixo que a versão do protocolo padrão é 1.0.

Na página do manual mount.cifs:

vers=
           SMB protocol version. Allowed values are:

           ·   1.0 - The classic CIFS/SMBv1 protocol. This is the default.

           ·   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.
foobrew
fonte
Eu tive um problema semelhante com o sinalizador "nounix", que não deve ser suportado na v1.0. A alteração para a versão 2.0 (a mais recente disponível para mim) corrigiu o problema. Também permissões de arquivo são mais sensíveis com vers = 2,0 (755 em vez de 777)
cxrodgers
2
Muito obrigado pela solução relacionada à vers = option! Funcionou para mim, apenas ao contrário ... Após a atualização do opensuse jump da versão 42.3 para a 15.1, uma entrada fstab para montar uma unidade de rede, que funcionou, parou de funcionar na 15.1. Usei a opção vers = 1.0 e adivinhem ... Provavelmente o salto 15.1 usa uma versão mais recente do protocolo SMB que não conseguiu encontrar o diretório remoto.
John John
A conexão com um compartilhamento hospedado no Windows Server 2003 a partir do Ubuntu 19.04 falhou continuamente até eu adicionar vers = 1.0 à minha lista de opções. Obrigado!
user8675309
Funcionou para mim, EXCETO: Eu tive que declarar a Versão DOIS vers=2.0para montar os compartilhamentos de samba do meu sistema NAS de 5 anos de idade ... com 3,0, fiquei acima do erro.
9139 Frank Nocke
etc/fstabusuários: Basta colocar que vers=3.0(ou 2,0 ...) direito e do espaço antes de suas outras opções, ou sejavers=2.0,guest,uid=1000,iocharset…
Frank Nocke
5

Você pode usar a nodfsopção? ou seja, para as suas -oopções, insira a entrada como abaixo.

-o credentials=/etc/user,rw,iocharset=utf8,file_mode=0777,dir_mode=0777,nodfs

ou seja, anexado ,nodfs

Funcionou para mim.

Sanath
fonte
obrigado! Tentei todas as outras sugestões em primeiro lugar, mas eu precisava disso em fedora30 onde eu não precisar dele antes
Jens Timmerman
2

Pode ser necessário alterar o secparâmetro: essa configuração funcionou na minha configuração:

mount.cifs ... -o sec=ntlm

Extrato relevante de man mount.cifs:

sec=Modo de segurança. Os valores permitidos são:

  • none - tentativa de conexão como um usuário nulo (sem nome)
  • krb5 - Use a autenticação Kerberos versão 5
  • krb5i - Use autenticação Kerberos e habilite forçosamente a assinatura de pacotes
  • ntlm - Use hash de senha NTLM
  • ntlmi - Use hash de senha NTLM e force a assinatura de pacotes
  • ntlmv2 - Use hash de senha NTLMv2
  • ntlmv2i - Use hash de senha NTLMv2 e force a assinatura de pacotes
  • ntlmssp - Use o hash de senha NTLMv2 encapsulado na mensagem Raw NTLMSSP
  • ntlmsspi - Use o hash de senha NTLMv2 encapsulado na mensagem NTLMSSP bruta e force a assinatura de pacotes

    O padrão nas versões principais do kernel anteriores à v3.8 era sec=ntlm. Na v3.8, o padrão foi alterado para sec=ntlmssp.

    Se o servidor exigir assinatura durante a negociação do protocolo, ele poderá ser ativado automaticamente. A assinatura de pacotes também pode ser ativada automaticamente se estiver ativada /proc/fs/cifs/SecurityFlags.

Benoit Duffez
fonte
1

Eu me deparei com isso no Ubuntu 18.04. O problema era que eu precisava do pacote keyutils para fazer a autenticação Kerberos ( sec=krb5opção de montagem), que não foi instalada junto com o cifs-utils (que forneceu o mount.cifs). Não tenho certeza se o nome do pacote é o mesmo no Gentoo ou não. (Agradecemos a https://forum.zentyal.org/index.php?topic=18601.0 pela solução.)

Chris
fonte
1

Eu queria adicionar outra fonte desse problema que encontrei hoje. Depois de alterar o ID do usuário unix, o usuário smb criado via smbpasswd pode não conseguir mais se autenticar para o compartilhamento samba, resultando no mesmo erro.

Portanto, se você alterou sua identificação de usuário unix via usermod -u 1000 my_user, poderá ter problemas. A correção para mim foi excluir e adicionar novamente o usuário smb posteriormente:

smbpasswd -x meu_usuário
smbpasswd -a my_user
Ryad
fonte
Embora verdadeiro, como isso está relacionado à pergunta original?
RalfFriedl
Como eu disse, se você alterar o ID do usuário, o mesmo erro da pergunta original será exibido. Portanto, se alguém fizer o mesmo e encontrar esse tópico, ele poderá achar minha dica útil.
Ryad
1

Adicione um $no final, assim//winserver/sharename$

mount.cifs -v -o username=myusername,domain=MYCODOMAIN //winserver/sharename$ /mnt/mymountpoint
Fahri çetin
fonte
Uau! Alguma idéia do que o '$' faz? Foi corrigido para mim, mas nenhuma pista para o porquê
Gabriel Fair
O sinal $ é um compartilhamento administrativo no contexto de compartilhamento do Windows, se ativado pelo sistema, um usuário com direitos administrativos poderá acessar todos os caminhos. Exemplo \\ MY-SERVER \ c $
Phil795 25/10
0

Eu estava enfrentando o mesmo erro "erro de montagem (2): não existe esse arquivo ou diretório" usando mount.cifs em uma VM do CentOS 7. Nunca determinei exatamente por que o erro estava sendo gerado ao usar a segurança ntlm padrão (e as variantes), mas descobri que o uso da autenticação Kerberos contornava o problema. Portanto, minha linha de comando de trabalho final ficou assim:

mount.cifs -v -o domain=MYCODOMAIN,sec=krb5 //winserver/sharename /mnt/mymountpoint

considerando que este comando que deu o erro "não existe esse arquivo ou diretório" foi:

mount.cifs -v -o username=myusername,domain=MYCODOMAIN //winserver/sharename /mnt/mymountpoint

Para usar o Kerberos, instalei o pacote "krb5-workstation" e o configurei.

Mark Edington
fonte
0

Tente instalar o pacote keyutils:

sudo apt-get install keyutils

Não sei exatamente por que isso ajuda, talvez alguém tenha uma resposta aqui. Mas pelo menos fez o truque para mim: com keyutils, a montagem CIFs funcionou muito bem.

Klaus
fonte
Adicione algumas informações sobre como isso resolveria o problema indicado na pergunta. O que esse pacote faz e como ele aparece no problema levantado pelo OP?
Haxiel
Boa pergunta. Não tenho certeza de como o keyutils do pacote ajuda. No meu caso, pelo menos, foi o que fez o truque. Após a instalação do keyutils, minha montagem cifs funcionou muito bem, enquanto antes recebia a mensagem de erro "erro de montagem (2): não existe esse arquivo ou diretório", como no OP.
Klaus
Duplicata desta outra resposta
roaima 13/07/19
0

Comigo, funcionou colocando "vers = 1.0" como antes -> credenciais = / root / .dbx.credentials, vers = 1.0 , uid = 1001, gid = 100, rw

Carlos Roberto da Silva Junior
fonte