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.