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


/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.

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.


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.


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.)


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

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

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.


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.


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


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.