Em geral, se você usar um sinal de dólar sem escape ou não citado na linha de comando, ele estará sujeito à expansão do parâmetro , ou seja, o valor do parâmetro será substituído pelo nome do parâmetro. Vamos supor que sua senha seja foo$bar
. Eu uso echo
para exibir a linha de comando executada real:
$ echo mount -t cifs ... -o username=user1,password=foo$bar,domain=WIN,ro
mount -t cifs ../../ -o username=user1,password=foo,domain=WIN,ro
$ PASSWD=foo$bar
$ echo $PASSWD
foo
Você pode ver que a parte $bar
é substituída por nada, porque neste exemplo não há um conjunto de parâmetros bar
. Para evitar isso, use aspas simples ao redor do $
ou todo o termo:
$ echo mount -t cifs ... -o 'username=user1,password=foo$bar,domain=WIN,ro'
mount -t cifs ../../ -o username=user1,password=foo$bar,domain=WIN,ro
$ PASSWD='foo$bar'
$ echo $PASSWD
foo$bar
Portanto, o motivo do erro mount error(13): Permission denied
é que o servidor rejeita sua senha, porque o shell substituiu algumas partes dele.