sexta-feira, 13 de maio de 2011

Codificação de caracteres em Linux

Numa distribuição Linux em português, palavras acentuadas podem não ser exibidas corretamente no terminal, ainda que na instalação tenha sido selecionado o idioma correto (português do Brasil).
Ao realizar operações em linha de comando pode ser muito complicado referenciar arquivos e diretórios que originalmente foram criados usando caracteres com acentuação.

Este problema pode ocorrer por causa da codificação utilizada para o nosso idioma. É que existem duas codificações para o português brasileiro, o UTF-8 e o ISO-8859-1.
Algumas distribuições instalam a codificação UTF-8, o que pode gerar uma incompatibilidade com programas que foram escritos em padrão ISO.

Se for este o caso, pode-se corrigir o problema assim:

Edite o arquivo que faz a configuração da codificação;
# vi /etc/sysconfig/i18n
Altere as configurações para:
LANG="pt_BR.ISO-8859-1"
SYSFONT="latarcyrheb-sun16"
Agora é só salvar e sair do editor.

Feche a janela do terminal e abra novamente.

Experimente criar um diretório com caracter acentuado, cedilha, etc.

Este procedimento foi testado em distribuição Fedora.
Caso não funcione na sua, comente.

Um abraço.

quarta-feira, 9 de fevereiro de 2011

LINUX - Migrar Contas de Usuários

Vamos considerar um cenário em que você precisa mover, migrar ou criar backups de contas de usuário de um sistema Linux para outro.

Os procedimentos aqui relatados foram utilizados para migrar as contas de usuários de um sistema Fedora Core 7 para um Debian Lenny, mas provavelmente funcionará em outras distribuições.

O sistema de destino é uma instalação nova, onde nenhuma conta de usuário foi criada ainda.


1. Fazer um backup dos arquivos que gerenciam as contas de usuários:

  • /etc/passwd - contém as informações de todas as contas de usuário no sistema;

  • /etc/shadow - contém as senhas criptografadas para cada usuário;

  • /etc/group - define os grupos aos quais os usuários pertencem;

  • /etc/gshadow - contém as senhas criptografadas para cada grupo;

  • /var/spool/mail - contas de e-mail dos usuários;

  • /home - contém os subdiretórios associados a cada conta de usuário.



1.1 Crie um diretório para armazenar os dados que serão migrados, por exemplo:
oldSystem: ~ # mkdir /root/export/

1.2 Defina um filtro para limitar o UID. Deve-se observar aqui que o limite varia dependendo da distribuição1. Neste caso, 500 para o Fedora e 1000 para o Debian:
oldSystem: ~ # export UGIDLIMIT=500

1.3 Copiar o arquivo /etc/passwd para /root/export/passwd.export usando o comando awk para filtrar as contas de serviço do sistema:
oldSystem: ~ # awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) & & ($3!=65534)' /etc/passwd > /root/export/passwd.export

1.4 Copie o arquivo /etc/group:
oldSystem: ~ # awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) & & ($3!=65534)’ /etc/group > /root/export/group.export

1.5 Copie o arquivo / etc / shadow:
oldSystem: ~ # awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) & & ($3!=65534) {print $1}' /etc/passwd | tee - |egrep -f - /etc/shadow > /root/export/shadow.export

1.6 Copie o arquivo /etc/gshadow:
oldSystem: ~ # cp /etc/gshadow /root/export/gshadow.export

1.7 Faça o backup de home e mail dos usuários:
oldSystem: ~ # tar -zcvpf /root/export/home.tar.gz /home
oldSystem: ~ # tar -zcvpf /root/export/mail.tar.gz /var/spool/mail

1.8 Transfira os arquivos para o novo sistema através de um flash drive ou outro meio qualquer. Suponhamos que os arquivos gerados nos passos anteriores foram armazenados no diretório /root/import no novo sistema.

2. Importando as contas para o novo sistema.

2.1 Primeiro, faça uma cópia dos arquivos originais por medida de segurança:
newSystem:. ~ # mkdir /root/backup
newSystem:. ~ # cp /etc /passwd /etc/shadow /etc/group /etc/gshadow /root/backup/

2.2 Agora, importe os arquivos:
newSystem: ~ # cd /root/import/
newSystem: ~ # cat passwd.export >> /etc/passwd
newSystem: ~ # cat group.export >> /etc/group
newSystem: ~ # cat shadow.export >> /etc/shadow
newSystem:.~ # cp gshadow.export /etc/gshadow


Nota: é necessário usar >> (append) e não > (create) no redirecionamento do shell.
2.3 Restaurar o backup de home.tar.gz:
newSystem: ~ # cd /
newSystem: ~ # tar -zxvf /root/import/home.tar.gz

2.4 Restaurar o backup de mail.tar.gz:
newSystem:~ # tar -zxvf /root/import/mail.tar.gz

2.5 Reiniciar o sistema:
newSystem: ~ # shutdown -r now

O novo sistema deverá subir com todas as contas de usuários e grupos como no antigo sistema.



(1) Cada usuário tem um valor UID e GID únicos, que são atribuídos a partir de uma determinada faixa. Estes são os valores mínimo e máximo para algumas distribuições:
RHEL / CentOS / Fedora Core: 500 / 65534
Debian / Knoppix / Ubuntu: 1000 / 29999

segunda-feira, 10 de janeiro de 2011

Eu aceito!

Ao ouvir esta expressão “eu aceito” somos imediatamente transportados para a cena de um casamento, quando os noivos no altar aguardam ansiosamente pelo momento em que o celebrante, seja ele, juiz, padre ou pastor, faz a pergunta “você aceita fulano de tal como seu legítimo esposo (ou sua legítima esposa)?”
E aí o rapaz ou a moça, responde prontamente: SIM!
Por mais eloqüente, brilhante ou profundo o sermão, é certo que a frase que os noivos mais esperam ouvir durante toda a celebração e na qual eles prestam mais atenção é esta. Toda a emoção deles estava concentrada neste momento em que eles diriam o SIM um para o outro e enfim seriam declarados marido e mulher!

No mundo virtual acontece algo bem parecido.
Você começa a procurar algo na Internet. Um programa de computador, uma música, um filme, um serviço, um produto, seja lá o que for.
Você navega às vezes por varias horas, dias ou meses à procura de algo específico e de repente, encontra. Basta preencher alguns formulários, fornecer um e-mail, se for uma compra escolher a forma de pagamento e em poucos cliques você está prestes a realizar o seu sonho! Mas, geralmente, antes de finalizar vem uma pagina de um contrato que especifica o que você está adquirindo e sob que condições.
No rodapé desta página tem um quadrinho pra você assinalar e a frase ao lado: “EU ACEITO”!
Pra finalizar o procedimento de aquisição do bem ou serviço ou simplesmente baixar algo interessante, você tem que dizer explicitamente que ACEITA as condições do contrato ou termo relacionado com a operação em questão. E ai.... o que você faz?
Lê todo o termo ou contrato cuidadosamente, procura entender todos os termos técnicos ou jurídicos, se preciso for consulta alguém e só depois disto é que, então, decide aceitar as condições e ir em frente com o processo, certo?
NÃÃÃO! É óbvio que você nem lê o tal documento e clica o mais rápido possível no quadrinho “EU ACEITO” e pronto!
Como o noivo ou a noiva no altar, você não quer nem saber do resto, você não vê a hora de dizer SIM! E após o sim, está feito. Você tem o que você queria.

O objetivo deste artigo é só alertar para o fato de que quando você clica numa opção do tipo “eu aceito”, “eu concordo” ou responde “sim” à pergunta “você está de acordo com as condições?” você está celebrando um contrato. Este gesto faz com que uma condição sine qua non para que um contrato seja considerado valido seja satisfeita, a manifestação expressa da sua vontade de aderir àquele contrato.
Uma vez que outras condições essenciais sejam satisfeitas, como por exemplo, a capacidade das partes e sua legitimidade para o ato e a idoneidade do objeto, então, o vínculo jurídico é estabelecido.

Eu lhe convido a refletir sobre o assunto. Afinal, ler um contrato antes de assinar, por mais chato que seja, deve ser feito e pode evitar muitos dissabores.
E no caso de um contrato virtual o cuidado deveria ser maior ainda, porque a dificuldade de se contatar a outra parte em caso de algum problema tende a ser muito maior do que no mundo real.
Eu lhe convido também a responder uma pergunta para fins de estatística. Responda a enquete no quadro ao lado ou use o comentário para responder sim ou não:
Você sempre lê o termo ou contrato quando adquire algo pela Internet?