Muitas instituições ainda utilizam o Novel Netware e embora o cliente padrão seja desenvolvido para plataforma Windows, nós podemos acessar os serviços deste servidor sem muitos problemas pelo Linux usando a biblioteca libncp e o conjunto de ferramentas do pacote ncpfs.
Algum tempo atrás eu havia conseguido a proeza de conectar ao meu servidor Netware 6.5 sem problemas seguindo um tutorial que achei na Internet (infelizmente não tenho mais o arquivo). Na época criei um script para facilitar a vida (disponível abaixo) e que permite fazer o login e o logoff no NDS, bem como acessar todos os volumes disponíveis no servidor a qual o usuário tenha permissão de acesso, mas depois de algumas atualizações no meu sistema não conseguia mais realizar a façanha.
O bug
O problema em questão impedia logar no servidor e sempre retornava a mensagem de erro abaixo:
wbraga@info1054:~$ netwarelogin.sh ndslib.c:1051: Invalid start: 1835008 00010000 00010000 00100006 ncpmount: Resposta do servidor inválida (-330) no login no nds Login negado. wbraga@info1054:~$
Pesquisei bastante até cansar, mas como todo brasileiro eu não desisto nunca e por isso voltei a pesquisar sobre o assunto. Depois de alguns minutos “conversando” com o Google eu encontrei no Launchpad uma thread que culpava a última versão do pacote ncpfs no repositório do Ubuntu por isso. O bug #328020[1] está em aberto até hoje mas há um meio paleativo para resolver o problema e que consiste em remover o pacote do ncpfs atual e instalar uma versão mais antiga que funciona.
Resolvendo
De forma direta o procedimento é o seguinte:
sudo aptitude install ncpfs
sudo apt-get remove ncpfs
wget http://archive.ubuntu.com/ubuntu/pool/universe/n/ncpfs/ncpfs_2.2.6-4ubuntu3_i386.deb
sudo dpkg -i ncpfs_2.2.6-4ubuntu3_i386.deb
Veja que para remover o pacote eu usei o comando apt-get ao invés do aptitude, isso se faz necessário pois o aptitude remove as dependências que não estão mais em uso e o resultado seria a necessidade de reinstalação dos pacotes libpam-ncp e libncp que na verdade continuarão sendo exigidas pelo pacote de versão antiga instalado pelos comandos seguintes.
Logando
O procedimento de login é basicamente este:
/usr/bin/ncpmount -A IPSERVIDOR -U USUARIONETWARE -u USUARIOLINUX -g GRUPOLINUX -S NOMESERVIDOR PONTOMONTAGEM-P SENHANETWARE
- IPSERVIDOR é o endereço IP do seu servidor Netware, ou se preferir o nome registrado no DNS
- USUARIONETWARE é o nome do usuário com o seu contexto.
- USUARIOLINUX é o usuário que você está logado na sua estação – ele será o dono dos arquivos neste compartilhamento
- GRUPOLINUX é o grupo do seu usuário Linux e que esrá o grupo padrão para todos os arquivos do compartilhamento
- NOMESERVIDOR é o nome do seu servidor na árvore do NDS
- PONTOMONTAGEM é um diretório qualquer e vazio no seu home onrde o compartilhamento será montado
- SENHANETWARE é a sua senha no servidor Netware.
Ex:
/usr/bin/ncpmount -A 10.2.1.3 -U welrbraga.gestao.jbrj -u wbraga -g wbraga -S FSJBRJ /home/wbraga/netware -P minhasenha
Facilitando
Seguindo a idéia de que se é difícil é preciso facilitar, eu criei um pequeno e estúpido shellscript que chama aquela linha de comandos toda com requintes de criar um ponto de montagem, solicitar a senha em modo gráfico, chamar o gerenciador de arqiuvos após a montagem etc etc.
O script completo que usa basicamente o ncpmount para acessar o servidor e o zenity para interagir com o usuário é bem simples e pode ser livremente alterado como queira, mas não dou qualquer garantia de que ele funcione no seu sistema – já que não entendo “patavinas” de Novel.
#!/bin/bash
#
#Realiza o login / logout no servidor Netware
#
#Necessita dos pacotes ncpfs e zenity instalados no sistema.
#
#O pacote ncpfs do Ubuntu 9.04 e 8.10 (ncpfs 2.2.6-6 está bugado)
#a solucao e'descrita em https://bugs.launchpad.net/ubuntu/+source/ncpfs/+bug/328020/comments/10
#
#Simplificando
# sudo aptitude install ncpfs
# sudo apt-get remove ncpfs
# wget http://archive.ubuntu.com/ubuntu/pool/universe/n/ncpfs/ncpfs_2.2.6-4ubuntu3_i386.deb
# dpkg -i ncpfs_2.2.6-4ubuntu3_i386.deb
#
# WBRAGA - 18-03-2009
#
LOGIN_NETWARE="wbraga.login.jbrj"
SERVER_NETWARE="FSJBRJ"
SERVER_NAME="info.jbrj.gov.br"
USUARIO="${USER}"
GRUPO="${USER}"
MOUNTPOINT="${HOME}/netware"
#
mkdir -p ${MOUNTPOINT}
NCONEXOES=$(ls -1 ${MOUNTPOINT}|wc -l)
#
acao="DESMONTAR"
if [ "${NCONEXOES}" == "0" ]; then
acao="MONTAR"
fi
#
if [ "${acao}" == "MONTAR" ]; then
SENHA=$(zenity --entry --text "Informe a senha do Netware" --hide-text)
/usr/bin/ncpmount -A ${SERVER_NAME} -U ${LOGIN_NETWARE} -u ${USUARIO} -g ${GRUPO} -S ${SERVER_NETWARE} ${MOUNTPOINT} -P ${SENHA} && nautilus --no-desktop ${MOUNTPOINT}
else
zenity --question --text "Voce ja esta conectado ao servidor\nDesconectar do servidor Netware?" --title "Desconectar" --ok-label="Sim, imediatamente" --cancel-label="Ainda não" && /usr/bin/ncpumount ${MOUNTPOINT}
fi
Obs: A droga do WordPress costuma alterar as aspas comuns por um caracter mais bonitinho e que não funciona, então certifique-se de substituir pelas aspas corretas antes de usar o script. Se preferir baixe o arquivo a partir daqui.
Também não esqueça de dar permissões de execução para este script. Feito isso basta executa-lo pela linha de comandos ou então criar um atalho na sua área de trabalho.
Da forma como está, ele deve ser executado a partir do home do usuário, já que não previ o seu uso por vários usuários na mesma estação, de forma que o login e o contexto do usuário auteticado estão no próprio arquivo do script ao invés de um arquivo de configuração a parte e pessoal. Isso pode até ser feito, mas não tive interesse em fazê-lo, então a critério de sua criatividade. Estudando um pouco dos parâmetros do ncpmount e o restante do conteúdo do pacote você verá que é possível até autenticar a sua estação Linux no NDS, assim como se faz com o LDAP, mas não vou me arriscar nesse assunto, pois como já disse o Netware não deverá viver muitos anos, pelo menos não por aqui.
Referências
[1] – Bug #328020 no pacote ncpfs – https://bugs.launchpad.net/ubuntu/+source/ncpfs/+bug/328020
Um comentário em “Acessando um servidor Novel Netware a partir do Ubuntu”