Restringir a pesquisa do Samba/Winbind em domínios locais

11 de maio de 2009

Quando se utiliza o Samba/Winbind para autenticar usuários no AD em ambientes com uma floresta muito grande, a pesquisa pode demorar muito tempo, causando lentidão no serviço e reclamação por parte dos usuários.

Encontrei este cenário na empresa onde trabalho: Quando um usuário quer acessar uma pasta compartilhada em um servidor samba, este servidor procura as credenciais deste usuário em todos os AD’s que possuem relação de confiança na rede inteira, ao invés de procurar somente no servidor AD do domínio que o usuário está cadastrado. Algumas vezes leva mais de um minuto para o usuário acessar o serviço de rede, causando frustração.

Obs.: O comando wbinfo -m lista todos os domínios que possuem relação de confiança na rede.

Quando utilizado o comando wbinfo -u para listar os usuários, aparece uma lista de todos os usuários de todos os domínios da rede. O mesmo acontece para listar os grupos (wbinfo -u).

O desejado é que o winbind busque as credenciais do usuário somente no AD do domínio no qual ele está cadastrado.

Procurei duas possíveis formas de corrigir o problema:

  1. Colocar o AD do domínio do usuário como primeiro na lista de pesquisa
  2. Restringir o domínio de busca.

A primeira opção não trouxe nenhum resultado satisfatório na web, nem nos arquivos de configuração do samba.

Contudo, uma opção no smb.conf chamava a atenção: a opção allow trusted domains. Segundo o man do smb.conf, esta opção serve para restringir a busca pelo usuário somente no domínio onde o serviço está rodando. Por padrão, esta opção é marcada como yes. Contudo, quando configurado para no, nada acontecia, e o comando wbinfo -m continuava listando todos os domínios.

Fazendo mais buscas, encontrei em alguns fórums que a opção allow trusted domains não fazia efeito em algumas versões do Samba.

O servidor da empresa possui instalado a distribuição Centos 5, com a versão 3.0.23 do Samba. Não gosto de utilizar pacotes fora do repositório oficial da distribuição, para não “quebrar” a distribuição e provocar algum “conflito” de pacotes.

Tive duas opções: baixar o fonte do samba e compilar ou então procurar algum repositório com binários do samba atualizados para o Centos 5.

Por uma felicidade, encontrei o repositório SerNet Samba, com binários atualizados do Samba, na versão 3.2.28.

Inseri o repositório na configuração do yum, removi a versão atual do Samba (importante), e instalei a versão do SerNet com suas dependências.

Após iniciar o serviço Samba e Winbind, o comando wbinfo -m passou a listar somente o domínio no qual o servidor estava instalado e configurado, e os comandos wbinfo -u e wbinfo -g retornavam somente os usuários e grupos do domínio local. Os problemas de lentidão acabaram!

Conclusão

Se alguma opção em algum arquivo de configuração não funciona, procure a versão mais atual do programa. Para facilitar a vida do técnico, procure repositórios com pacotes já compilados para sua distribuição, e deixe os gerenciadores tipo Yum e Apt-get fazer o trabalho de resolver e baixar as dependências.

Linux , ,

Análise do preço cobrado pelo SMS

17 de abril de 2009

Um dia desses eu estive pensando a respeito do valor cobrado pela mensagem SMS nos celulares, e resolvi fazer uma comparação com o valor cobrado por um plano de pacote de dados.

Após fazer os cálculos, chegamos à conclusão que o valor de R$0,30 cobrado por uma mensagem de SMS é um absurdo! Eu posso estar viajando na maionese, e se alguém quiser opinar a respeito e provar o contrário, por favor, sinta-se à vontade.

Vamos aos cálculos: Cada mensagem de SMS suporta 160 caracteres, o que equivale a 160 bytes. Tendo: 160bytes = R$0,30, quando custa 1megabyte de SMS? Fazendo uma regra de 3 simples,

 

0,30 - 160 bytes -> 1 mensagem de SMS equivale a 160 Bytes
  x  -  1.048.576 bytes -> equivalente a 1 megabyte 

160x = 1.048.576 x 0,30
160x = 314.572,80
   x = 314.572,80 / 160
   x = 1.966,08

 

Ou seja, 1 megabyte de SMS custa o equivalente a R$1.966,5 Qual é o plano de pacote de dados que cobra um valor destes? Será que o valor de manutenção dos equipamentos envolvidos em um processo de SMS é tão alto? Comparando ainda com um pacote de dados, um pacote 3G de 1Gb custa em torno de R$90,00. 1GB de SMS custa o absurdo valor de R$2.013.265,92 (isto mesmo, dois milhões de reais). Repito, se alguém souber que estou equivocado, por favor deixe seu comentário.

Um abraço!

Geral , , ,

Carregador usb de celular nokia feito em casa

1 de abril de 2009

Possuo um celular Nokia 5310 ExpressMusic, e uma das coisas que eu gostava nos celulares na Motorola que não tem nos Nokia é a possibilidade de carregar a bateria do celular plugando-o na USB do computador.

Procurando por uma alternativa na Internet, encontrei alguns sites mostrando como fazer um carregador de bateria de celular Nokia através da USB do computador, pois ambos carregador e USB liberam a mesma voltagem e amperagem. Um recarregador USB específico e original da Nokia custa em torno de R$60,00. Achei muito caro e resolvi fazer um recarregador.

Cabo usb eu já tinha uns sobrando em casa. Me faltava um carregador Nokia para pegar o plugue que conecta no celular. Por sorte, um dia uma colega do trabalho trouxe um carregador que o sobrinho tinha arrebentado o cabo sem querer(!).

Como ela conseguiu comprar um carregador sobressalente de um colega, fiquei com o carregador arrebentado.

Não vou explicar como se faz o cabo, mas indico o site onde eu me guiei, com instruções e imagens: http://www.mmcforums.net/forum/Home-Nokia-Usb-Charger-t14971.html

Uma particularidade: o celular não avisa quando está totalmente carregado, fica mostrando que está carregando indefinidamente. Eu utilizo somente em caso de emergência.

Obs.: Não me responsabilizo por qualquer dano que possa causar no celular.

Geral , ,

Programando para PalmOS no Linux utilizando o Eclipse

31 de março de 2009

Quando comecei a escrever este post, me perguntei: -Alguém ainda programa para PalmOs??

Não sei, mas descrevo aqui como construir um ambiente de programação para PalmOS no Linux amd64, utilizando o Eclipse. Encarei isto como um desafio, visto que a Access não dispobilizou um PODS para Linux, preferindo “emular” o compilador no windows utilizando o Cygwin (que barbaridade!).

Uma particularidade desta configuração é o fato da versão do Linux ser para processadores amd64. Como não existe prc-tools para amd64, devemos configurar um ambiente “chroot” para abrigar a versão 32bits do prc-tools e compilar os projetos. O ambiente de desenvolvimento permanece 64 bits, com o Eclipse e o Guikachu (criação dos forms).

Primeiro passo: Instalar o Eclipse.

Eu estou usando o Ganymede, versão 3.4, último disponível na data que baixei. Instale como preferir, baixando do site ou via ferramenta de instalação de pacotes da sua distribuição. Baixando pelo site é possível escolher a versão já configurada para programação C/C++ (CDT). Se instalar pelo instalador de pacotes da distribuição, é necessário instalar o ambiente CDT através da opção Software Update no menu Help do Eclipse.

Segundo Passo: Instalar o Guikachu

O Guikachu (http://gergo.erdi.hu/projects/guikachu/) é um programa para criação de formulários (interface visual) das aplicações para PalmOS. Como não encontrei uma versão compilada da minha distribuição (Debian Lenny), baixei os fontes da versão 1.5.11, descompactei e compilei (./configure –prefix=/usr, make, make install). Nesta parte encontrei uma dificuldade que descrevi no post Erros de compilação ao utilizar o gcc-4.3.

Terceiro Passo: Configurar o ambiente chroot 32 bits

Como descrevi no início do post, não encontrei uma versão do prc-tools para 64bits, então tive que configurar um ambiente chroot 32bits para poder compilar os projetos. A solução para este problema eu encontrei no artigo Solution to prc-tools on AMD64 and other 64-bit machines. Não vou descrever todo o processo, mas coloco os comandos para criar o ambiente. Para quem já tem um ambiente chroot, pule direto para a instalação do prc-tools.

#apt-get install chroot schroot
#chroot /var/chroot/debian_32/

dentro do ambiente chroot:

#vi /etc/apt/sources.list

alterar a linha:

deb http://ftp.debian.org/debian/ sarge main

para

deb http://ftp.debian.org/debian/ sarge main contrib non-free

atualizar a fonte de pacotes

#apt-get update

instalar o prc-tools:

#apt-get install apt-file prc-tools pilrc

Poderão aparecer algumas mensagens relacionadas ao Locale. Para corrigir isto, edite o .bashrc do root, inserindo a linha:

export LC_ALL=C

Feito isto, podemos executar um comando 32bits a partir do ambiente 64bits, utilizando o comando schroot:

#schroot -c debian_32 -p /usr/bin/file /bin/bash

É assim que o projeto será compilado dentro do chroot a partir do Eclipse. Veremos como mais adiante, com a criação de um arquivo Makefile.

Eu precisei configurar o schroot para permitir que o meu usuário acessasse o ambiente chroot. Edite o arquivo /etc/schroot/schroot.conf e inclua as linhas:

[debian_32]
description=Debian sarge 32bits (stable)
location=/var/chroot/debian_32bit
priority=2
#groups=sbuild
users=gerson #coloque seu usuario aqui
root-users=gerson #coloque seu usuario aqui
aliases=stable

Quarto Passo: Instalar o PalmOS SDK do site da Access Developer Network

Baixe o SDK deste link (é necessário registrar-se). Baixe os seguintes arquivos:

- Garnet OS SDK (68K) R3 PRC tools Generic UNIX

- Garnet OS 68K API SDK (Fall 2004 Update). Este segundo deve ser copiado por cima do arquivo anterior (após descompactá-los, claro). Importante: este arquivo possui como final de linha <CR><LF>, causando problemas ao compilar. É necessário converter os arquivos para <LF>, com o seguinte comando:

#find . -type f -exec dos2unix {} \;

(O programa dos2unix faz parte do pacote sysutils;)

Coloque o SDK em uma pasta dentro do ambiente chroot. Ex.: /var/chroot/debian_32/var/PalmOS_SDK. Dê as permissões necessárias para que todos os usuários possam ler os arquivos:

#chmod o+r -R /var/chroot/debian_32/var/PalmOS_SDK

Entre no ambiente chroot:

chroot /dev/chroot/debian_32

prepare o ambiente de compilação:

#palmdev-prep /var/PalmOS_sdk/

saia do ambiente chroot:

#exit

Quinto Passo: Configurando o Eclipse

O workspace do eclipse deve ficar em uma pasta visível pelo chroot debian_32. No meu caso, o workspace está em /var/chroot/debian_32/home/gerson/workspace.

Como projeto exemplo, HelloDiesel, criei uma organização de pastas da seguinte maneira:

hellodiesel

A pasta includes aparece após configurar o projeto: Botão direito do mouse no nome do projeto -> Properties -> C/C++ General -> Paths and Symbols -> aba Includes -> botão Add -> inserir o caminho /var/chroot/debian_32bit/var/PalmOS_sdk/sdk-5r4/include, marcar todas as caixas de opção -> Ok -> Ok. Observe que tenho uma pasta sdk-5r4 abaixo da pasta palmOS_SDK. Ajuste na sua configuração.

Sexto passo: O arquivo Makefile

Esse é o cara que irá chamar o compilador dentro do chroot 32bits a partir do ambiente 64 bits. De barbada coloco aqui o Makefile inteiro:

SCHROOT = schroot -c debian_32 -d /home/gerson/workspace/HelloDiesel --
SCHROOT_BUILD = schroot -c debian_32 -d /home/gerson/workspace/HelloDiesel/build --
PROGNAME = AppMain
APPNAME = 'Hello Diesel'
RESOURCES = src/AppResources
APPID = GHDx
OBJS = build/$(PROGNAME).o
#FLAGS = -O2 -Wunused -Wall -palmos3.1
FLAGS = -O2 -Wunused -Wall

all: clean resources grc
$(SCHROOT) build-prc dist/$(PROGNAME).prc $(APPNAME) $(APPID) build/*.grc \
                                                    build/resources/*.bin

grc:
$(SCHROOT) m68k-palmos-gcc $(FLAGS) -c src/$(PROGNAME).c -o $(OBJS)
$(SCHROOT) m68k-palmos-gcc $(FLAGS) $(OBJS) -o build/$(PROGNAME)
$(SCHROOT_BUILD) m68k-palmos-obj-res $(PROGNAME)

resources: forms
pilrc -H src/AppResources.h rsc/$(PROGNAME).rcp build/resources/

forms:
guikachu2rcp rsc/$(PROGNAME).guikachu

clean:
rm -f build/*.[oa]
rm -f build/*.bin
rm -f build/*.grc
rm -f src/*~
rm -f build/$(PROGNAME)
rm -f dist/*
rm -f rsc/*.rcp
rm -f build/resources/*

Após compilar, o arquivo .prc deve aparecer na pasta DIST. Aí é só sincronizar e testar no Palm.

Opção:  Testar em emulador/simulador

Caso queira testar a aplicação em um emulador ou simulador, pode-se utilizar o POSE (Palm OS Emulator), ou então utilizar o PalmOS Simulator através do wine e utilizar a rom do TX disponível pela web.

Conclusão

Acho que com o fim anunciado do PalmOS, a Access não irá liberar uma versão do PODS para Linux. Além do mais, muitos programadores já estão correndo atrás de um SDK para o WebOS, novo sistema da Palm/Access.

Contudo, para aqueles que ainda desejam programar para o PalmOS (que acredito que levará um tempo para se “dissolver”) no Linux, fica aí este guia para construir um ambiente de programação.

Abraços e até a próxima.

Geral, Linux, Palm , , , ,

PODS (Palm OS Developer Suite) no Linux

28 de março de 2009

Quando eu quis começar a programar para PalmOS, me deparei com um problema: Todos os kits de desenvolvimento RAD (Rapid Aplication Development) para PalmOs eram para Windows. Não encontrei nenhum para Linux.

Quando eu baixei o PODS (Palm Os Developer Suite) do site da Access (atual desenvolvedora da Palm), vi que o mesmo era baseado no Eclipse para windows, e que utilizava as ferramentas de compilação dentro do Cygwin. A Access comunicava em seu site que um dia iria disponibilizar o PODS para Linux. Fiquei esperando e nada. E com o fim anunciado do PalmOs, acho que nem vão lançar mais.

Então eu pensei: Caramba! Se o Eclipse para Windows e Linux são o mesmo (com uma compilação própria para cada sistema, claro), e o PODS utiliza o Cygwin para rodar o compilador de .prc, então não deve ser muito difícil fazer um PODS para Linux.

O PODS não é nada mais que o prc-tools do Linux rodando no Cygwin, utilizando o Eclipse 3.0.1 com CDT com alguns wizards para criação de aplicações e o SDK para PalmOs também disponível no site da Access.

Para criar um “PODS” para Linux não é muito difícil. Deve-se ter o Eclipse instalado com CDT, baixar o PalmOS SDK do site da Access (deve-se estar registrado no Access Developer Netword) e instalar o prc-tools. Para criação das “telas”, recomendo utilizar o Guikachu, e instalar o pilrc da distribuição (como uso Debian – apt-get install pilrc) para compilar os “resources”.

Não lembro exatamente todos os passos para configurar esta ambiente, pois faz alguns meses que o preparei (quem mandou não anotar), mas como estou refazendo o ambiente novamente, em outro post faço um passo-a-passo para configurar um “PODS” no linux.

Um abraço e até o próximo

Geral , , , , ,