O arquivo de credenciais Mount CIFS possui um caractere especial

9

Estou tendo problemas para montar um compartilhamento no meu XenServer (5.6 FP1). Na linha de comando, tento:

mount.cifs //server/share /mnt/share -o credentials=credfile

O conteúdo do credfile é:

username=Administrator
password=What@zR\!p3s

Quando executo o comando mount acima, recebo "Access Denied". No entanto, se eu executar o seguinte comando, ele funcionará:

mount.cifs //server/share /mnt/share -o username=Administrator,password=What@zR\!p3s

Por favor, note o "\" é para escapar do estrondo e eu tentei isso com e sem ele no arquivo de credenciais. Alguma sugestão?

    
por David George 08.09.2011 / 17:53

6 respostas

6

Eu tenho o mesmo problema porque minha senha contém símbolo de vírgula (ou seja, "PASS, WORD"):

$ sudo mount -t cifs -o domain=mydomain,username=myuser,password=PASS,WORD //server/share localfolder
mount error(22): Invalid argument
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

Primeiro, você deve tentar ativar o modo verboso (opção --verbose):

$ sudo mount -t cifs -o domain=mydomain,username=myuser,password=PASS,WORD //server/share localfolder --verbose
mount.cifs kernel mount options: ip=172.30.91.137,unc=\server\share,WORD,user=myuser,,domain=mydomain,pass=********

Aqui vejo meu problema. Vírgula quebra todas as coisas. Solução é usar o arquivo de credencial. O que está escrito no homem mount.cifs:

credentials=filename specifies a file that contains a username and/or password and optionally the name of the workgroup. The format of the file is:

          username=value
          password=value
          domain=value

This is preferred over having passwords in plaintext in a shared file, such as /etc/fstab. Be sure to protect any credentials file properly.

Crie este arquivo da maneira que desejar:

$ cat > cifs.credo
username=myuser
password=PASS,WORD
domain=mydomain

e use (--verbose pode ser omitido)

$ sudo mount -t cifs -o credentials=path/to/cifs.credo //server/share localfolder --verbose
mount.cifs kernel mount options: ip=172.30.91.137,unc=\server\share,user=myuser,,domain=mydomain,pass=********

Não há problema com senha.

    
por 14.10.2014 / 06:33
4

Um problema comum com versões antigas do mount.cifs era que a nova linha no final do arquivo era mantida como parte da senha.

Então você não precisa escapar, e deve tentar reescrever este arquivo sem uma nova linha.

Para fazer isso no vim, use :set noeol binary antes de salvar. Você pode verificar se não há nenhuma nova linha com xxd credfile e confirmar que ela não termina com 0a .

Se isso não funcionar, terei que verificar sua base de código exata. Qual pacote (distribuição, versão e release) ou fonte (nome do arquivo) você está usando para cifs-utils ?

    
por 04.07.2012 / 16:09
1

Outra coisa a tentar é digitar o caractere especial duas vezes ... Eu tinha uma senha com $ nele e tive que substituí-la por $$. No entanto, atualmente estou tendo problemas com a cenoura: '^'

    
por 22.05.2012 / 03:06
1

Para o mount.cifs versão 4.5, o seguinte funcionou para mim: credenciais em ordem de domínio, nome de usuário, senha, nenhuma nova linha após a senha, nenhum escape de caracteres especiais ou citações.

    
por 11.07.2012 / 10:28
0

Tente citá-lo.

Ou seja,

password="What@zR!p3s"

E espero que não seja realmente sua senha. Se for, você precisa alterá-lo agora.

    
por 08.09.2011 / 17:59
0

Você já tentou remover a barra? completamente? Eu não acredito que o arquivo de credenciais precise ser escapado. Ele precisa ser escapado no shell porque o shell está interpretando os caracteres, não o comando mount.cifs.

    
por 08.09.2011 / 19:48