Tente usar aspas:
--password="bar\!"
ou --password='bar\!'
Qual é o erro no lado do servidor?
Atualização:
Eu fiz um teste na minha máquina Ubuntu 10.4 rodando o Apache 2.2.14. wget --user=foo --password=bar! url
funciona para mim.
Se eu usar a senha errada, recebo um erro como user foo: authentication failure for "/directorytest/": Password Mismatch
.
Atualize novamente: (dando um passo para trás)
Você diz que esse erro é "cliente negado pela configuração do servidor". Eu naveguei pela fonte do Apache, e esta mensagem de erro vem de mod_authz_host . Isso indica que seu problema não está com a senha (que é autenticação), mas o host do cliente não está autorizado a acessar esse recurso do Apache. mod_authz_host lida com nomes de host e IPs.
Acima, você diz "Na linha de comando do Windows, o comando funciona." Todos os seus testes são provenientes do mesmo sistema cliente? Você está executando 'wget' neste mesmo sistema Windows? O que acontece se você tentar acessar este mesmo URL usando o IE ou o Firefox?