Archive for the Ubuntu Category

Já é a segunda vez que meu Ubuntu 9.04 resolve colocar o MAC “AA:00:04:00:0A:04″ em minha interface de rede. Aconteceu com minha Realtek RTL8101E/RTL8102E (onboard) e agora com a minha Realtek RTL-8139/8139C/8139C+ Offboard, no meu super PC da SpaceBR que já veio com Linux instalado.

Aparentemente não é algo difícil de acontecer no Ubuntu, por isso colocarei aqui o que fiz para parar de vez com esse problema irritante:

Editei o /etc/rc.local e acrescentei essas linhas:

/sbin/ifconfig eth0 hw ether 00:21:97:9E:13:13
/sbin/ifconfig eth1 hw ether 00:E0:4C:56:0E:D8

Logo em seguida, arrumei o /etc/udev/rules.d/70-persistent-net.rules

# PCI device 0x10ec:0x8136 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:21:97:9e:13:13", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
 
# PCI device 0x10ec:0x8139 (8139too)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:e0:4c:56:0e:d8", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

No próximo reboot, o NetworkManager resolveu me obedecer e colocar o IP que eu havia selecionado (na verdade DHCP), sem ficar criando o maldito “Auto eth0″ com dhcp e aquele MAC maluco.

No meu caso, eu configuro meu roteador Netgear WGR614 v7 para colocar um IP de acordo com o MAC da minha placa. Desta forma, meu Wii (rodando o mplayer_ce 0.75) consegue montar meu compartilhamento exportado via SaMBa (veja como no artigo: Assistindo Filmes no Wii usando o Mplayer) e eu posso assistir animês/ filmes e seriados pela TV da sala, deitado no sofá. Bem melhor do que ficar sentado na frente de um monitor :-)

O problema era que o Ubuntu colocava esse MAC maluco, o Wireless mandava um IP diferente do qual eu havia programado (192.168.1.5 ao invés do 192.168.1.2) e aí o Wii se perdia porque não encontrava o compartilhamento :-/

Agora tudo parece estar funcionando como deveria!

Um tempo atrás escrevi um artigo sobre VPNs que abordava as vantagens e desvantagens do PPTP, e também um passo-a-passo para subir um OpenVPN autenticando com certificados e etc.

O artigo ainda está disponível na Web, e chama-se Implementando soluções de VPN. O que eu não sabia era que, embora o artigo seja meio antigo (Março de 2006) ele ainda continua funcional! Eu fui seguindo-o passo-a-passo, copiando e colando os comandos e em 15 minutos eu estava conectado à uma VPN usando roteamento com o device “tun”!

O modo de como esta VPN funciona é bem bacana, pois separa a sua rede “servidora” (ex: 192.168.0.x) da rede do cliente conectado via OpenVPN, criando uma rede como inválida qualquer como 10.8.0.x. O acesso de uma rede para a outra é feita via roteamento, descantando toda aquela nhaca de broadcast, netbios e etc.

Porém, desta vez a necessidade era diferente. Eu precisava realmente estar dentro da rede servidora, pois de dentro da rede era possível o acesso à uma outra rede, no caso uma LP com o México. A lambança era mais ou menos assim:

Rede_Mexico = 10.95.0.0/16
Rede_Servidor = 10.10.10.0/24
Rede_VPN = 10.8.0.0/24

Utilizando o device “tun” a rede VPN até chegava na rede do Servidor, porém, não chegava até a rede do México. Não duvido que seja possível de ser feito usando alguns roteamentos malucos, porém consegui resolver o problema apelando para bridges no Linux, usando o device “tap”.

O Carlos Morimoto havia postado um artigo chamado Criando bridges no OpenVPN do qual me foi muito útil, pois assim o OpenVPN conectava diretamente na rede 10.10.10.0/24 me enviando um IP que eu mesmo posso escolher via DHCP:

server-bridge 10.10.10.200 255.255.255.0 10.10.10.210 10.10.10.220

No exemplo acima, 10.10.10.200/24 será o IP do servidor, e 10.10.10.210 até 10.10.10.220 será o range oferecido aos clientes remotos que conectarem usando o OpenVPN.

Porém, para que tudo funcione a contento é necessário criar uma Bridge entre as interfaces eth0 e tap0, para que todo mundo se converse e se enxergue:

# brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.00188be16805	no		eth0
							tap0

Neste caso, o IP não ficará nem na eth0 e nem na tap0, mas sim na br0:

# ifconfig 
br0       Link encap:Ethernet  HWaddr 00:28:0b:ef:58:75  
          inet addr:10.10.10.2  Bcast:10.10.10.255  Mask:255.255.255.0
          inet6 addr: fe80::218:8bff:fee1:6805/64 Scope:Link

Bom, chega de teoria. Os links acima possuem todo o background necessário para que você entenda a coisa passo-a-passo. Vamos logo para o que interessa: Os arquivos de configuração:

Arquivo openvpn.conf no servidor?

# /etc/openvpn/openvpn.conf
# Objetivo: Clientes remotos conectarem no mesmo range da LAN local sem roteamento
proto udp
port 1194
 
# bridge utiliza a interface "tap" em vez da "tun"
# (o tap transmite pacotes de broadcast e o tun não)
dev tap0
 
# Faixa de IPs para os clientes
server-bridge 10.10.10.200 255.255.255.0 10.10.10.210 10.10.10.220
 
# No cliente eh necessário um
# route add -net 10.95.0.0 netmask 255.255.0.0 gw 10.10.10.1 tap0
# para acessar a LP no Mexico 10.95.x.x
push "route 10.95.0.0 255.255.0.0 10.10.10.1"
 
# Compressão e persistência
comp-lzo
keepalive 10 120
ifconfig-pool-persist /etc/openvpn/ipp.txt
 
# Certificados
tls-server
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
 
# Logs e etc
status      /var/log/openvpn-status.log
log         /var/log/openvpn.log
log-append  /var/log/openvpn.log
verb 3
 
# Bridges para simular um mesmo switch entre a tap0 e a eth0
up /etc/openvpn/bridge-start
down /etc/openvpn/bridge-stop

Arquivo bridge-start:

#!/bin/bash
# /etc/openvpn/bridge-start
 
br="br0"
tap="tap0"
eth="eth0"
eth_ip="10.10.10.2"
eth_gw="10.10.10.1"
eth_netmask="255.255.255.0"
eth_broadcast="10.10.10.255"
 
for t in $tap; do
openvpn --mktun --dev $t
done
 
brctl addbr $br
brctl addif $br $eth
 
for t in $tap; do
brctl addif $br $t
done
 
for t in $tap; do
ifconfig $t 0.0.0.0 promisc up
done
 
ifconfig $eth 0.0.0.0 promisc up
ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast
#route add default gw $eth_gw dev $br
route add -net 10.95.0.0 netmask 255.255.0.0 gw 10.10.10.1 br0
 
iptables -A INPUT -i tap0 -j ACCEPT
iptables -A INPUT -i br0 -j ACCEPT
iptables -A FORWARD -i br0 -j ACCEPT

Arquivo bridge-stop:

#!/bin/bash
# /etc/openvpn/bridge-stop
 
br="br0"
tap="tap0"
ifconfig $br down
brctl delbr $br
 
for t in $tap; do
openvpn --rmtun --dev $t
done 
 
route del -net 10.95.0.0 netmask 255.255.0.0 gw 10.10.10.1 br0
ifdown eth0
ifup eth0
route add -net 10.95.0.0 netmask 255.255.0.0 gw 10.10.10.1 eth0

Arquivo no cliente:

# Cliente pode ser Linux ou Windows
remote 200.200.200.100
proto udp
port 1194
client
pull
dev tap
comp-lzo
keepalive 10 120
tls-client
ca ca.crt
cert tiagocruz.crt
key tiagocruz.key
ns-cert-type server 
verb 3

O resultado pode ser visto nos screnshoots abaixo:

openvpn

Como você deve ter percebido, apenas alguns ajustes foram necessários nos scripts que iniciam e derrubam as bridges. A parte mais chata foi automatizar a criação de rotas estáticas nos clientes, para que não fosse necessário usar o “route add” em toda a conexão. A linha do “push” resolveu este problema, inclusive apontando a rota para um host que diferente do servidor de VPN, que é o padrão.

Segue uma screnshoot mostrando o antes, o durante e o depois do super device tap :)

openvpn-rotas

Nos testes foram utilizadas as versões OpenVPN 2.1_rc7 x86_64-pc-linux-gnu no servidor rodando Ubuntu 8.04.3 LTS e o cliente OpenVPN 2.1_rc11 i486-pc-linux-gnu em um Ubuntu 9.04.

Também foi possível conectar usando a GUI do OpenVPN para Windows.

Abraços e até o próximo post! 8)

Dica rápida, sem muitas novidades. Apenas uma forma rápida de colocar um Squid 2.6.18 rodando em um Ubuntu 8.04 LTS para autenticar em um Windows 2003 Server, sem usar samba+winbind, dar join no domínio, usar ntp e etc.

A idéia é documentar uma árvore LDAP padrão do Windows, para servir como base para futuras implementações, visto que muitos admins de AD desconhecem esta informação :-)

No squid.conf, ficaria mais ou menos assim (o “\” é uma quebra de linha, porém o comando deve ficar em uma linha única):

...
acl diretoria src 10.10.10.9/32
http_access allow diretoria
 
# Autenticacao AD Windows
auth_param basic program /usr/lib/squid/ldap_auth -R -b "dc=dominio" -D "cn=tiago \
cruz,cn=users,dc=dominio" -w "senha" -f sAMAccountName=%s -h 10.10.10.10
auth_param basic children 5
auth_param basic realm Autenticacao
auth_param basic credentialsttl 5 minutes
acl ldapauth proxy_auth REQUIRED
http_access allow ldapauth
 
# White List
acl liberados dstdom_regex -i "/etc/squid/unblock.txt"
http_access allow liberados
...
# Rede Local LAN
acl rede_local src 10.10.10.0/24
http_access allow rede_local

Caso não funcione “de prima”, recomendo estes comandos para debugar o problema:

1-) Usando o LDAPSearch para ver se retorna OK:

$ ldapsearch -LLL -h 10.10.10.10 -P 3 -x -D "CN=Tiago Cruz,CN=Users,DC=Dominio" \
-W -b "DC=Dominio" "(&(&(objectClass=User)(objectCategory=Person))(sAMAccountName=tcruz))"
Enter LDAP Password: 
dn: CN=Tiago Cruz,CN=Users,DC=dominio
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: Tiago Cruz
sn: Cruz
givenName: Tiago
initials: ti
distinguishedName: CN=Tiago Cruz,CN=Users,DC=dominio
instanceType: 4
whenCreated: 20090427110042.0Z
whenChanged: 20090427190603.0Z
displayName: Tiago Cruz
uSNCreated: 555987
....

2-) Simulando o LDAP_AUTH do Squid na mão, passando na mesma linha usuário e senha desejado para ver se funciona bem:

$ /usr/lib/squid/ldap_auth -R -b "dc=dominio" -D "cn=tiago \
cruz,cn=users,dc=dominio" -w "senha" -f sAMAccountName=tcruz -h 10.10.10.10
tcruz senhacorreta
OK
tcruz senhaerrada
ERR Success

Lembrando que se você estiver usando Proxy Transparente, você deverá configurar o endereço do Proxy diretamente no navegador do usuário pois a autenticação não funcionará.

Se você não sabe se usa Proxy Transparente, seria algo mais ou menos assim:

# No squid:
http_port 3128 transparent
 
# No firewall:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A PREROUTING -s 10.10.10.0/255.255.255.0 -p tcp --dport 80 -j REDIRECT --to-port 3128

A idéia é pegar todo o tráfego que vem da sua rede local com destino à porta 80/tcp e encaminhar para o squid na porta 3128/tcp, de forma transparente. Funciona muito bem, mas caso você queira autenticação será necessário mexer no browser no cliente.

Para fazer uma configuração automática, sugiro a utilização de um Script de Logon mais ou menos como este arquivo “todos.bat”:

@echo off
net use f: \\server\shared
net use h: /home
regedit /s \\server\netlogon\proxy.reg

Sendo que o proxy.reg seria algo mais ou menos assim:

REGEDIT4
 
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"ProxyServer"="10.10.10.1:3128"
"ProxyEnable"=dword:00000001
"EnableAutodial"=dword:00000000
"NoNetAutodial"=dword:00000000
"MigrateProxy"=dword:00000001

Mais informações:
- Configuring Squid on Linux to authenticate with Active Directory
- Configuring a Squid Server to authenticate off Active Directory
- Squid autenticado no Active Directory com Winbind
- Autenticando o SQUID no Active Directory via NTLM
- SaMBa 3.x -> Tudo o que você precisa saber (e não tinha para quem perguntar :)

Abraços e até a próxima! 8)

Acessem a revista Full Circle. Ela trás matérias sobre os sistemas operacionais Linux, em especial Ubuntu.

Para baixar todas as edições acesse a área de download Full Circle

Revista Full Circle


Recentemente tive a oportunidade de colocar as mãos em um PC da SpaceBR, descrito com as seguintes configurações:

spacebr

“Computador Space BR E7400 c/ Core 2 Duo E7400 2.80Ghz, 4GB, 750GB, Gravador de DVD e Linux + Monitor LCD Samsung 22″ Widescreen 2232BW”

O que me chamou a atenção era que o mesmo já vinha com o Kurumin-NG instalado, devidamente configurado com o KDE 3.x e uma série de programas já previamente configurados, como é possível ver na screenshoot acima o Wine e o Flash rodando uma aplicação de parceria entre a Space BR e o iG, já previamente instalado e com ícone na área de trabalho.

Eu segui as instruções do “Adept” e fiz as atualizações sugeridas (rodava um Ubuntu 8.04 por baixo do capô). Logo em seguida, o mesmo adept_updater me sugeriu que eu atualizasse para uma versão mais nova do Sistema Operacional (no caso, um Ubuntu 8.10) e eu apenas confirmei, e rebootei a máquina conforme solicitado.

Não sei se foi bem uma surpresa, mas a interface gráfica não subiu, só depois de várias dedadas debian-like (apt-get update; apt-get upgrade; apt-get -f install; apt-get dist-upgrade e etc…), o que seria terrível para um usuário comum.

Após esse “pequeno” incoveniente, eu acabei não gostando da cara do KDE 4.x e acabei instalando do zero um Ubuntu 8.10 e aproveitando para reparticionar o disco de acordo com as minhas preferências (ReiserFS no lugar do EXT3, partição de dados compartilhada em vez de um “/” com todo o disco).

A parte boa é que o Ubuntu reconheceu tudo e eu não tive que fazer nada. Compartilhar diretórios na rede, copiar meu backup da rede local, placa de vídeo, som, internet e etc. Simples assim.

A parte terrível foi ao tentar instalar o Windows XP no mesmo micro, em outra partição. Não possuo licença de uso do Vista, por isso a opção de continuar com o XP, além de que é sempre bom ter backups para no caso de uma indisponibilidade temporária de algum SO da minha máquina (leia-se algum experimento com algum kernel unstable :-p).

Foi um sufoco, o Windão não reconheceu a placa de rede, nem a de som e nem a de vídeo. O grande mestre Ubuntu me salvou para acessar a internet e baixar os devidos drivers. O CD de instalação que veio junto dizia que a minha placa mãe não era compatível.

Resumindo, os micros da SpaceBR são uma alternativa de baixo custo para quem não tem budget para pegar um micro de “grife” (Dell/IBM/HP…) porém, pode-se esperar alguns problemas se o usuário for um pouco mais curioso =)

Ontem descobri uma coisa muito interessante: Que o instalador do Mandriva 2009 não consegue fazer o redimencionamento de uma partição NTFS com Bad Blocks. O Mandriva ainda avisa que a partição está com problemas, pede para passar um “scandisk” no Windows, rebootar duas vezes e continuar a instalação. Porém no meu caso foi somente tempo perdido, o instalador continuava acusando erros na partição.

Tentei com o Ubuntu 8.10 e foi pior ainda: O instalador não redimensionava e não fala o motivo. Portanto, fui para a shell resolver este problema:

Primeiro os dados do disco rígido em questão:

root@ubuntu:~# fdisk -l
 
Disk /dev/sda: 40.0 GB, 40007761920 bytes
255 heads, 63 sectors/track, 4864 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xd5bc9254
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           6       48163+  de  Dell Utility
/dev/sda2   *           7        4864    39021885    7  HPFS/NTFS

Agora, tentei buscar informações acerca do filesystem em questão:

root@ubuntu:~# ntfsresize -v -i /dev/sda2
ntfsresize v2.0.0 (libntfs 10:0:0)
ERROR: Volume is scheduled for check.
Run chkdsk /f and please try again, or see option -f.

Uma forçadinha aqui, outra ali…:

root@ubuntu:~# ntfsresize -f -v -i /dev/sda2
ntfsresize v2.0.0 (libntfs 10:0:0)
Device name        : /dev/sda2
NTFS volume version: 3.1
Cluster size       : 4096 bytes
Current volume size: 39958410240 bytes (39959 MB)
Current device size: 39958410240 bytes (39959 MB)
Checking for bad sectors ...
Checking filesystem consistency ...
100.00 percent completed
Accounting clusters ...
Space in use       : 11926 MB (39.8%)
Collecting resizing constraints ...
Estimating smallest shrunken size supported ...
File feature         Last used at      By inode
$MFT               :      3268 MB             0
Multi-Record       :     28482 MB         44661
$MFTMirr           :     19980 MB             1
Compressed         :     28942 MB         44664
Ordinary           :     30000 MB         42006
You might resize at 11925831680 bytes or 11926 MB (freeing 18074 MB).
Please make a test run using both the -n and -s options before real resizing!

Depois disso ficou fácil. Primeiro um teste para ver se vai tudo OK, e depois o comando propriamente dito que irá diminuir a partição de ~40 GB para ~30 GB:

root@ubuntu # ntfsresize -v -f -b -n -s 30G /dev/sda2
root@ubuntu # ntfsresize -v -f -b -s 30G /dev/sda2

Após isso, diminua o tamanho da partição usando o fdisk ou o gparted, dê um boot no Windows para ele passar um scandisk e ver se ficou tudo sob controle :-)

Depois disso, você pode continuar a instalar o seu sabor preferido do Linux (Mandriva ou Ubuntu), pois ambos irão instalar sem problemas =)

Segue um screenshoot do Mandriva 2009 Free Edition rodando o KDE 4.x, de mais um usuário catequizado com sucesso!

mandriva2009

O nautilus insiste em dizer:

“The file ‘/ISOs/PRINCE OF PERSIA RIVAL SWORDS.iso’ is not a valid disc image.”

Quando você clica com o direito na .iso e manda um “Write do disc”.

A solução é usar o wodim (acrônimo para write optical disk media – um fork do antigo cdrecord) que não reclama do formato estranho de uma ISO do Wii:

wodim -v dev=/dev/scd0 speed=4 /ISOs/PRINCE OF PERSIA RIVAL SWORDS.iso

Lembre-se: Você só deve copiar seus próprios DVDs, somente para fazer backups :-)

Ubuntu 8.04

A patrocinadora oficial do Ubuntu (Canonical), definiu o dia 24 de abril (quinta-feira), lançamento da versão 8.04, para desktops e servidores, sendo a estratégia de lançamento voltada ao mercado corporativo.

Com mais recursos corporativos do que as versões anteriores, o sistema, até então uma versão do Linux focada para o usuário final, torna-se um concorrente mais forte das distribuições da Red Hat e da Novell.

A versão para servidores terá suporte de 5 anos, 2º com a garantia Long Term Support (LTS), depois da versão anterior, a 6.06. Os nomes das versões do Ubuntu seguem a lógica do ano e mês em que foram lançadas. Assim, a 6.06 apareceu em junho de 2006, e a 8.04 tem esse nome por ser apresentada em abril de 2008.

Nesta nova versão do Ubuntu, está pré-certificada para rodar em servidores x86 da Sun Microsystems, a primeira fabricante a certificar o sistema operacional para seus hardwares. Os modelos que receberam o selo são Sun Fire X2100 M2, X2200 M2, e Sun Fire X4150.

“A versão 8.04 é focada às empresas”, assim, a companhia decidiu adicionar o Ubuntu ao mesmo processo de certificação que usa para as distribuições corporativas Red Hat e Suse. E também está em negociação com a Dell, HP e IBM para que certifiquem o Ubuntu para seus servidores x86.

Acompanha nesta nova versão, o kit de desenvolvimento Java (ou o Open JDK), o que significa que pela primeira vez o sistema operacional vem com uma máquina virtual Java e pode rodar aplicações Java carregadas nele.

O kernel do Ubuntu Server foi fortalecido contra invasões e a nova versão incluirá o software AppArmour, de política de configuração e segurança de código aberto, da Novell. Inclui a aplicação de gerenciamento de conteúdo Alfresco, o sistema de backup Bacula, virtualização Parallels, virtualização de desktop Qumranet baseada em KVM, segurança Tresys, PHP da Zend Technology e aplicações de e-mail online Zimbra.

Falando um pouco de virtualização, o Ubuntu usa o kernel com KVM, suportando o hipervisor Xen como um kernel separado. A empresa também fez parceria com a VMware para rodar seu hipervisor ESX com o Ubuntu 8.04.

O Ubuntu para desktops terá 3 anos de suporte e manutenção, e continua a ter novas versões a cada 6 meses. Este é seu 8º lançamento. Para usuários domésticos, o foco está em recursos de fotos, vídeo, compartilhamento e download de músicas.

Mais informações e download:
www.ubuntu.com

Se você vive compilando módulos Perl em máquinas sem saída para a Internet, ou se você sofre com problemas de lentidão ou disponibilidade de links externos, seus problemas acabaram :-)

Utilizando o CPAN-Mini (sua única dependência é o File-HomDir) você pode construir um repositório interno com menos de 1 GB e mante-lo atualizado diariamente com a seguinte entrada no crontab:

# Repositorio CPAN
30 04 * * * /usr/bin/minicpan -l /var/www/cpan/ -r http://cpan.kinghost.net/

Para utiliza-lo, você pode alterar o arquivo /etc/perl/CPAN/Config.pm da seguinte forma (no Debian/ Ubuntu):

'urllist' => [q[http://cpan.empresa.com.br/]],

Para os Red Hat’s da vida, você pode utilizar esta configuração:

[root@xen4-vm3 ~]# cat /usr/lib/perl5/5.8.5/CPAN/Config.pm

# This is CPAN.pm's systemwide configuration file. This file provides
# defaults for users, and the values can be changed in a per-user
# configuration file. The user-config file is being looked for as
# ~/.cpan/CPAN/MyConfig.pm.

$CPAN::Config = {
'build_cache' => q[10],
'build_dir' => q[/root/.cpan/build],
'cache_metadata' => q[1],
'cpan_home' => q[/root/.cpan],
'ftp' => q[/usr/kerberos/bin/ftp],
'ftp_proxy' => q[],
'getcwd' => q[cwd],
'gpg' => q[/usr/bin/gpg],
'gzip' => q[/bin/gzip],
'histfile' => q[/root/.cpan/histfile],
'histsize' => q[100],
'http_proxy' => q[],
'inactivity_timeout' => q[0],
'index_expire' => q[1],
'inhibit_startup_message' => q[0],
'keep_source_where' => q[/root/.cpan/sources],
'links' => q[/usr/bin/links],
'make' => q[/usr/bin/make],
'make_arg' => q[],
'make_install_arg' => q[],
'makepl_arg' => q[],
'ncftp' => q[],
'ncftpget' => q[],
'no_proxy' => q[],
'pager' => q[/usr/bin/less],
'prerequisites_policy' => q[ask],
'scan_cache' => q[atstart],
'shell' => q[/bin/bash],
'tar' => q[/bin/tar],
'term_is_latin' => q[1],
'unzip' => q[/usr/bin/unzip],
'urllist' => [q[http://cpan.empresa.com.br/]],
'wget' => q[/usr/bin/wget],
};
1;
__END__

Depois basta deixa-lo disponível a partir de algum webserver como por exemplo o apache, algo mais ou menos assim:

< VirtualHost cpan.empresa.com.br:80 >
ServerName cpan.empresa.com.br:80
ServerAdmin implantacao@dc.com.br
DocumentRoot /var/www/cpan
ErrorLog /var/www/cpan/logs/cpan-error_log
CustomLog /var/www/cpan/logs/cpan-access_log combined env=!gif-image

< Directory "/var/www/cpan" >
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from 192.168.44.0/22 192.168.50.0/22
< / Directory >
< / VirtualHost >

Se as entradas estiverem todas corretas, para testar você pode fazer o seguinte:

# perl -MCPAN -e shell
cpan> install Crypt::SmbHash

FAUS significa “Ferramenta de Administração de Usuários do Samba” e é um CGI escrito em Perl para permitir a administração de usuários via uma interface web.

FAUS versão 1.4.5 lançada

A versão 1.4.5, além dos bugs corrigidos, trouxe também algumas novidades como por exemplo o suporte completo ao SaMBa 3.x, inclusive alterando de base de dados smbpasswd para tdbsam. Foi possível fazer isso deixando de editar o smbpasswd diretamente e voltando a usar os programas do SaMba. Com isso, foi retirado o suporte ao SaMBa 2.x.

Também é possível agora alterar o nome de usuário, sem precisar deletar e cria-lo novamente :) O FAUS se encarrega de alterar no sistema e no SaMBa.

O instalador, anteriormente só funcionava em Debian agora funciona em suas variações (Kurumin, xUbuntu) e também em distribuiçoes baseadas em RPM (testada no Mandriva 2007, fácilmente portado à outros). E todos aqueles módulos perl chatos de instalar estão agora incluídos no próprio tarball do FAUS para evitar problemas com falta de conexão ou versões incompatíveis dos módulos com o FAUS.

Em caso de problemas, críticas ou sugestões procure-nos na lista faus-users.