domingo, 6 de junho de 2010

Finalmente livre do tedioso OSX...

Bom, ganhei de natal, da minha esposa, um MacBook6,1 (Snow Leopard). Um excelente notebook, ótimo hardware e até então bom Sistema Operacional. Este último item não se torna tão bom ou nem mesmo bom quando se é acostumado a ter tudo na máquina sem a necessidade de ficar garimpando software na Internet. E, grande parte desses software em uma versão de avaliação. Talvez para usuários de MS Windows seja uma boa, mas...

Após várias tentativas de dar boot na máquina com o Debian GNU/Linux Testing (Squeeze) consegui finalmente. Aí vai um resumo dos passos encotrados nos sites http://wiki.debian.org/MacBook, http://lowmemorymode.wordpress.com/2009/12/28/macbook/, dentre outros:

1º Baixar o primeiro CD do testing gerado semanalmente;

2º Iniciar a máquina com a tecla 'C' pressionada. Detalhe: você irá precisar de um teclado USB, pois, no momento da instalação o teclado do MacBook não funciona;

3º Proceder com a instalação normalmente até o particionamento do disco;

4º No meu caso apaguei todo o disco e criei uma partição do tipo EE (GPT) de 200Mb no começo do disco. O resto do particionamento é normal ext4/swap;

5º Antes da instalação do grub, pressione CTRL+F2, digite os comandos chroot /target, aptitude install gptsync, por último gptsync /dev/sda e salve como sugerido;

6º Agora é só dar boot na máquina e customizá-la. Depois disso tudo funcionando bem melhor. :-)

quarta-feira, 29 de julho de 2009

Autenticação NTLM e Basic no Apache, com o mesmo módulo, em GNU/Linux

Continuamente há a necessidade de se integrar um novo ambiente, em um dado CCD, ao sistema de autenticação corrente. Fato é fato: o serviço de autenticação foi implementado antes deste e não vai mudar por causa dele. Ou se integre ou...

No meu caso; um serviço de controle de versão SVN provido por Apache2+SSL. Não falarei aqui sobre o serviço de controle de versão, mas sim de como este é autorizado através da autenticação NTLM. Esta é outra história. Pense apenas em um serviço X. O sistema de autenticação? MS Active Directory do Windows Server 2008 com 33 domínios de confiança e uma floresta de logins e recursos enorme.

Depois de testar várias alternativas, cheguei ao mod_auth_ntlm_winbind. Ótima opção!

Primeiramente o seu servidor GNU/Linux deve fazer parte do domínio AD, como qualquer máquina MS Windows. Para tanto, você precisará instalar e configurar o samba e o winbind. Outra coisa, levo em consideração a distribuição Debian GNU/Linux 5.0.2 (Lenny). Mas é possível para qualquer Unix-like.

svn@poe:~$ sudo apt-get install samba smbclient winbind krb5-clients ntpdate apache2-mpm-worker apache2-threaded-dev
...


Rede

Deve-se saber algumas informações sobre a rede. Para tanto execute os passos a seguir:

svn@poe:~$ nslookup sufixo_dns

Server: 10.8.X.Y
Address: 10.8.X.Y#53

Name: sufixo_dns
Address: 10.8.N.M
Name: sufixo_dns
Address: 10.8.I.J
...

svn@poe:~$ nslookup 10.8.N.M
Server: 10.8.I.J
Address: 10.8.I.J#53

N.M.8.10.in-addr.arpa name = svr0001.sufixo_dns.
...


No meu caso, os servidores de DNS também são os servidores KDC. Como fiquei sabendo disso?

svn@poe:~$ telnet svr0001 88
Trying 10.8.N.M...
Connected to svr0001.sufixo_dns (10.8.N.M).
Escape character is '^]'.
Connection closed by foreign host.
...



Kerberos

svn@poe:~$ sudo mv /etc/krb5.conf /etc/krb5.conf_ORIG

svn@poe:~$ sudo vi /etc/krb5.conf

[logging]
default = FILE:/var/log/krb5.log

[libdefaults]
clockskew = 300
default_realm = SUFIXO_DNS_EM_LETRAS_MAIÚSCULAS
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true

[realms]
SUFIXO_DNS_EM_LETRAS_MAIÚSCULAS = {
kdc = svr0001:88
kdc = svr0002:88
kdc = svr0003:88
kdc = svr0004:88

default_domain = SUFIXO_DNS_EM_LETRAS_MAIÚSCULAS
}

[domain_realm]
.sufixo_dns_em_letras_minúsculas = SUFIXO_DNS_EM_LETRAS_MAIÚSCULAS
sufixo_dns_em_letras_minúsculas = SUFIXO_DNS_EM_LETRAS_MAIÚSCULAS



Execute os comandos como no quadro abaixo e se a saída for parecida com a ali apresentada, tudo está correto.

svn@poe:~$ kinit cperpetuo@SUFIXO_DNS_EM_LETRAS_MAIÚSCULAS
Password for cperpetuo@SUFIXO_DNS_EM_LETRAS_MAIÚSCULAS:
svn@sac0344:~$ klist
Ticket cache: FILE:/tmp/krb5cc_1001
Default principal: cperpetuo@SUFIXO_DNS_EM_LETRAS_MAIÚSCULAS

Valid starting Expires Service principal
07/29/09 13:47:52 07/30/09 01:48:00 krbtgt/SUFIXO_DNS_EM_LETRAS_MAIÚSCULAS@SUFIXO_DNS_EM_LETRAS_MAIÚSCULAS
renew until 07/30/09 13:47:52


Kerberos 4 ticket cache: /tmp/tkt1001
klist: You have no tickets cached
...


Samba

svn@poe:~$ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf_ORIG

svn@poe:~$ sudo vi /etc/samba/smb.conf

[global]
workgroup = DOMÍNIO
server string = SVN Server
realm = SUFIXO_DNS_EM_LETRAS_MAIÚSCULAS
security = ADS
password server = *
restrict anonymous = 2
client NTLMv2 auth = Yes
printcap name = /dev/null
idmap uid = 10000-200000
idmap gid = 10000-200000
template homedir = /tmp
template shell = /bin/false
winbind separator = \\
idmap backend = ad
winbind enum users = Yes
winbind enum groups = Yes
printing = bsd
printcap name = /dev/null
~


NTP

Também no meu caso, os servidores de DNS também são servidores NTP.

svn@poe:~$ mv /etc/default/ntpdate /etc/default/ntpdate_ORIG

svn@poe:~$ vi /etc/default/ntpdate

# The settings in this file are used by the program ntpdate-debian, but not
# by the upstream program ntpdate.

# Set to "yes" to take the server list from /etc/ntp.conf, from package ntp,
# so you only have to keep it in one place.
NTPDATE_USE_NTP_CONF=no

# List of NTP servers to use (Separate multiple servers with spaces.)
# Not used if NTPDATE_USE_NTP_CONF is yes.
NTPSERVERS="svr0001 svr0002 svr0003 svr0004"

# Additional options to pass to ntpdate
NTPOPTIONS="-s"
~

svn@poe:~$ sudo ln -s /usr/sbin/ntpdate-debian /etc/cron.daily/


Inserção da máquina no domínio

svn@poe:~$ sudo invoke-rc.d samba start
svn@poe:~$ sudo invoke-rc.d winbind start
svn@poe:~$ sudo net -W DOMÍNIO -S svr0001 -U administrador_de_domínio


Se tudo está correto:
klaux@poe:~$ sudo net ads testjoin
Join is OK

klaux@poe:~$ sudo net rpc testjoin
Join to 'DOMÍNIO' is OK

klaux@poe:~$ wbinfo -i DOMÍNIO\\cperpetuo
DOMÍNIO\cperpetuo:*:10000:10000:Clauzio 'KlauX' Perpétuo:/tmp:/bin/false


mod_auth_ntlm_winbind

A segunda parte é justamente baixar o mod_auth_ntlm_winbind, compilá-lo, instalá-lo e configurá-lo.
klaux@poe:~$ svn co svn://svnanon.samba.org/lorikeet/trunk/mod_auth_ntlm_winbind \
> mod_auth_ntlm_winbind
...

Sugiro a aplicação do diff abaixo, pois os valores padrões para algumas flags do módulo estão sem o path absoluto e no meu caso isso foi um problema. Isso também evita a necessidade de se passar valores para as flags PlaintextAuthHelper e NTLMAuthHelper.
klaux@poe:~/mod_auth_ntlm_winbind_svn$ svn diff mod_auth_ntlm_winbind.c
Index: mod_auth_ntlm_winbind.c
===================================================================
--- mod_auth_ntlm_winbind.c (revisão 801)
+++ mod_auth_ntlm_winbind.c (cópia de trabalho)
@@ -884,9 +884,9 @@
crec->negotiate_on = 0;
crec->ntlm_basic_on = 0;
crec->ntlm_basic_realm = "REALM";
- crec->ntlm_auth_helper = "ntlm_auth --helper-protocol=squid-2.5-ntlmssp";
- crec->negotiate_ntlm_auth_helper = "ntlm_auth --helper-protocol=gss-spnego";
- crec->ntlm_plaintext_helper = "ntlm_auth --helper-protocol=squid-2.5-basic";
+ crec->ntlm_auth_helper = "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp";
+ crec->negotiate_ntlm_auth_helper = "/usr/bin/ntlm_auth --helper-protocol=gss-spnego";
+ crec->ntlm_plaintext_helper = "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic";

return crec;
}


klaux@poe:~$ sudo apxs2 -DAPACHE2 -c -i mod_auth_ntlm_winbind.c
...

klaux@poe:~$ sudo echo "LoadModule \
> auth_ntlm_winbind_module \
> /usr/lib/apache2/modules/mod_auth_ntlm_winbind.so" >\
> /etc/apache2/mods-available/auth_ntlm_winbind.load
...

klaux@poe:~$ sudo a2enmod auth_ntlm_winbind
...

klaux@poe:~$ sudo vi /etc/apache2/conf.d/pasta
<Location /pasta>
AuthName "SVN - ECT"

NTLMAuth on
NTLMBasicAuth on
NTLMBasicAuthoritative on
AuthType NTLM

SSLRequireSSL

Require valid-user
</Location>
~

klaux@poe:~$ sudo invoke-rc.d apache2 restart

Pronto! Agora é só acessar http(s)://localhost/pasta por um cliente, MS IE, TortoiseSVN etc., em máquinas MS Windows, que suporte o tipo de autenticação NTLM. Neste serão utilizadas as mesmas ACLs do login no SO, ou seja, não será solicitada senha alguma.

No caso dos clientes que não suportem o tipo de autenticação NTLM, o próprio módulo, através da flag 'NTLMBasicAuth on', providenciará a autenticação pelo método Basic. Muita atenção aqui: o método de autenticação Basic passa suas informações em texto plano, ou seja, instale o módulo SSL no Apache.

Fonte:www.debian-administration.org, adldap.sourceforge.net

segunda-feira, 6 de julho de 2009

VMWare e os caracteres "/" e "?" no teclado ABNT2

Quem utiliza tanto o VMWare Workstation quanto o VMWare Player, instalado em um GNU/Linux com teclado ABNT2, deve ter percebido que a tecla responsável pelos caracteres "/" e "?" não funciona.

Pois bem, seguem os passos necessários para corrigir esse problema.

Abra o arquivo /usr/lib/vmware/config para edição:
sudo vi /usr/lib/vmware/config

Acrescente a seguinte linha no final do arquivo:
xkeymap.keycode.211 = 0x073

Reinicie o vmware:
/etc/init.d/vmware restart

Pronto, agora é só entrar na(s) máquina(s) guest que a tecla estará funcionando!

Fonte: hamacker.wordpress.com

quarta-feira, 13 de maio de 2009

2D barcodes: QR Code e Data matrix


Existem hoje dois "padrões" para códigos de barra 2D bem difundidos no mundo: O japonês QR Code e o Data matrix. Este último recomendado pela (EIA) para identificar pequenos componentes eletrônicos como periféricos para PCs e Notebooks.




Essa tecnologia está cada vez mais presente na Internet e fora dela. É uma excelente forma de difundir pequenas quantidades de informação como dados pessoais (nome, telefone, e-mail), números de série de placas de computador etc. Mas, a principal vantagem, acredito, é a possibilidade de se utilizar um simples celular com câmera digital para ter acesso a tais informações. Imagine colocar no seu portal um QR code com seu cartão de visitas. As pessoas interessadas poderiam simplesmente escaneá-lo para terem acesso aos seus dados. Só preste muita atenção na capacidade de leitura entre os dispositivos disponíveis e a quantidade de informação codificada. Isso é diretamente proporcional: Veja mais: Versões, correção de erros e máximo de caracteres.

Um boa forma de se inteirar um pouco mais sobre o assunto é assistindo o vídeo QR code: o que é isso? da Profª Martha Gabriel. Lá ela apresenta o i-nigma. Tanto o leitor que pode ser instalado em celulares com JVM quanto o portal onde se pode gerar códigos de barra bidimencionais nos formatos já apresentados.

Alguns links relacionados:

-= Geradores =-
http://www.mobile-barcodes.com/qr-code-generator/
http://code.google.com/intl/pt-BR/apis/chart/#qrcodes
http://zxing.appspot.com/generator/
http://www.quickmark.com.tw/En/diy/?qrVcard
http://www.i-nigma.com/Create.asp
http://mobilecodes.nokia.com/create.jsp?terms=accepted
http://qrcode.kaywa.com/
http://datamatrix.kaywa.com/

-= Leitores =-
http://code.google.com/p/zxing/
http://mobilecodes.nokia.com/scan.htm
http://reader.kaywa.com
http://www.i-nigma.com/GetReader.asp
http://www.upc.fi/en/upcode/download/
http://www.neoreader.com/download.html --> Lê mais formatos Aztec Code, Data matrix, UPC, Code 128.

Fonte: tvig.ig.com.br, blog.mazolini.com.br e code.google.com

quarta-feira, 6 de maio de 2009

Tecla Caps Lock invertida

A uns dias aconteceu algo estranho em uma máquina Debian GNU/Linux 5.0r0 (lenny) que acompanho. Esta instalada como Desktop padrão, Gnome é claro. :-) A tecla Caps Lock ficou invertida, ou seja, com o led acesso letras minúsculas e com o led apagado maiúsculas.

Depois de muito procurar descobri que o culpado era o OpenOffice. Existe uma opção de autocorreção chamada "Correct accidental use of cAPS LOCK key" que causa essa confusão. O que fiz foi desabilitá-la.

Para acessar tal opção:
menu Ferramentas > AutoCorreção... > Opções > Correct accidental use of cAPS LOCK key > OK.

Não testei em outro sistema operacional e nem em outra versão do OpenOffice, além da 2.4.1.

T+

terça-feira, 5 de maio de 2009

Usando o VMware Virtual Disk Manager

Os exemplos abaixo ilustram como se deve usar o virtual disk manager. Você deve executar o virtual disk manager a partir do prompt de comando.

Criando um Disco Virtual

Para criar um novo disco virtual, execute o comando como demonstrado abaixo:

vmware-vdiskmanager -c -t 0 -s 40GB -a ide myDisk.vmdk
Isso cria um disco IDE de 40GB com o nome de myDisk.vmdk. Todo o disco virtual corresponde a um único arquivo .vmdk e o espaço em disco não está pré-alocado.

Convertendo um Disco Virtual

Para converter um disco virtual do tipo pré-alocado para alocação dinâmica, execute o comando como demonstrado abaixo:

vmware-vdiskmanager -r sourceDisk.vmdk -t 0 targetDisk.vmdk
Isso converte um disco virtual originalmente do tipo pré-alocado para o tipo alocação dinâmica em um único arquivo. O espaço do disco virtual não mais é pré-alocado, e o virtual disk manager requisitará o espaço necessário, até sua capacidade, na medida que o conteúdo do disco virtual aumenta.

Expandindo o tamanho de um Disco Virtual

Para expandir o tamanho de um disco virtual, execute o comando como demonstrado abaixo:

vmware-vdiskmanager -x 40GB myDisk.vmdk
Isso aumenta a capacidade máxima do disco para 40GB.

Desfragmentando um Disco Virtual

Para desfragmentar um disco virtual, execute o comando como demonstrado abaixo:

vmware-vdiskmanager -d myDisk.vmdk

Atenção:
não se pode desfragmentar um disco virtual caso este seja do tipo pré-alocado. Também não se pode desfragmentar um disco físico.

Preparando um Disco Virtual para Encolhimento (Shrinking)

Isso apenas é necessário em máquinas MS Windows. Para mais detalhes acesse o documento original da VMware

Encolhendo um Disco Virtual

Para encolher um disco virtual, execute o comando como demonstrado abaixo:

vmware-vdiskmanager -k myDisk.vmdk

Atenção:
Não se pode encolher um disco virtual caso este seja do tipo pré-alocado (preallocated) e também não se pode encolher um disco físico.

Para que a operação seja bem sucedida, será necessário o dobro do tamanho do disco virtual no disco físico.

Caso o disco virtual tenha um snapshot, será necessário removê-lo primeiro.

Alguns Tipos de Discos Virtuais Suportados

0 : Disco virtual dinâmico simples
1 : Disco virtual dinâmico repartido em arquivos de 2G
2 : Disco virtual pré-alocado
3 : Disco virtual pré-alocado repartido em arquivos de 2G

Fonte: www.vmware.com e www.nanolime.eti.br

segunda-feira, 4 de maio de 2009

Acertando o formato de data do Trac

Uma das várias funcionalidades interessantes que o Trac oferece, além do próprio controle de mudança (que é fundamental para a Gerência de Configuração de Software), é o relatório dos eventos por data, o timeline. Entretanto, muitas vezes a data é apresentada no formato americano (MM/DD/YYYY) e não no formato que usamos aqui no Brasil (DD/MM/YYYY).

A boa notícia é que é muito simples acertar isso. O que define o formato de apresentação de data usado pelo Trac é o Locale configurado no servidor. Sendo assim, basta mudar o Locale para que o formato fique no formato desejado.

Uma das maneiras de fazer isso é configurar uma variável de ambiente do Apache. No Debian GNU/Linux, basta acrescentar a seguinte linha no arquivo /etc/apache2/envvars:

export LC_ALL=pt_BR.UTF-8

Não esqueça de fazer o restart do Apache depois.

Fonte: pronus.eng.br