Infotech Notes

22/agosto/2008

LPI

Filed under: Linux, LPI 101, LPI 102 — Gustavo @ 2:24 pm

Estes são os assuntos das provas LPI 101 e 102

LPI 101:

- Hardware & Architecture

- Linux installation & Package management

- GNI & Linux commands

- Devices, linux filesystems, Filesystem Hierarchy Standard (FHS)

- X

LPI 102:

- Kernel

- Boot, Initialization, Shutdown and Runlevels

- Printing

- Documentation

- Shells, ScriptingProgramming and Compiling

- Administrative Tasks

- Networking Fundamentals

- Networking Services

- Security

Eu sugiro fazer uma prova de cada vez (101 e 102) para facilitar o estudo, pois eu acho mais fácil.

Eu vou ver se coloco aqui algumas provas que eu usei para estudar para estas duas provas.

29/julho/2008

LDAP com TLS/SSL

Filed under: ldap, Linux — Gustavo @ 6:28 pm

Seguem aqui os passos para adicionar um pouco de segurança ao sistema LDAP. No meu caso, eu utilizo um certificado auto-assinado. Não é a maneira mais segura, mas ajuda muito quando voce tem que autenticar os usuários e quer evitar que a senha seja lida caso algum sniffer esteja ativo.

Lembre-se de manter a parte privativa do certificado o mais seguro possível, pois é isto que garantirá a segurança e a privacidade das informações. O sistema usado como exemplo é um Red Hat AS 4 Update 6 e os comandos devem ser executados pelo usuário root.

Criação da autoridade certificadora e geração do scertificado:

cd /usr/share/ssl
rm -fr demoCA
/usr/share/ssl/misc/CA -newca
openssl req -newkey rsa:1024 -nodes -keyout newreq.pem -out newreq.pem /usr/share/ssl/misc/CA -sign

Com isto, voce já tem os certificados privados e público. Vamos agora colocar os arquivos certos nos lugares certos.

cp demoCA/cacert.pem /etc/openldap/cacerts/cacert.pem
cp newcert.pem /etc/openldap/cacerts/servercrt.pem
cp newreq.pem /etc/openldap/cacerts/serverkey.pem

Corrigindo as permissões e proprietários

chmod 0400 /etc/openldap/cacerts/serverkey.pem
chown -R ldap:ldap /etc/openldap/cacerts /etc/init.d/ldap restart

Copiando os certificados na máquina cliente ldap

scp /etc/openldap/cacerts/cacert.pem root@<ip_client>:/etc/openldap/cacerts/.

Com estes passos feitos, basta acertar as configurações dos arquivos abaixo nas máquinas LDAP Client:

# arquivo: /etc/ldap.conf
host <fqdn_ldap_server>
base ou=Users,dc=com
uri ldaps://<fqdn_ldap_server>/
ldap_version 3
port 636
timelimit 120
bind_timelimit 120
idle_timelimit 3600
pam_password md5
pam_password exop
ssl on
tls_checkpeer yes
tls_cacertfile /etc/openldap/cacerts/cacert.pem
tls_cacertdir /etc/openldap/cacerts
tls_reqcert never
tls_ciphers TLSv1
pam_password md5

# arquivo: /etc/openldap/ldap.conf
URI ldaps://<fqdn_ldap_server>:636
HOST <fqdn_ldap_server>
BASE ou=Users,dc=com
TLS_CACERTDIR /etc/openldap/cacerts
TLS_REQCERT never

20/julho/2008

Montando um servidor LDAP, parte 3

Filed under: ldap, Linux — Gustavo @ 1:34 am

Bom, continuando os posts 1 e 2, seguem agora os arquivos de configuração /usr/local/etc/openldap/slapd.conf e /etc/init.d/ldap

Como eu não consigo formatar este post para representar corretamente os espaços nestes arquivos, eu vou anexá-los em um PDF. Estes arquivos referem-se à configuração do servidor Master LDAP (IP 10.0.0.31) e do servidor Slave (IP 10.0.0.32), contendo também o arquivo /etc/init.d/ldap, para início do serviço nos dois servidores.

Arquivo PDF com a configuração LDAP master e slave

Alguns simples problemas costumam acontecer:
- o diretório /var/lib/ldap não existe
- o script de inicializacao /etc/init.d/ldap não tem permissão de execução
- o diretório dos schemas é diferente do especificado no arquivo slapd.conf

Corrija-os e então inicie o ldap.

Após iniciar, voce pode usar o utilitário LDAP Admin (http://ldapadmin.sourceforge.net/) que roda em MS-Windows, facilitando a gerencia da árvore LDAP.

Não esqueça de adicionar a base (ou o topo) da árvore, que no nosso exemplo é o domínio dc=com. Para isto, basta criar um arquivo texto com as linhas a seguir e emitir o seguinte comando no seu servidor LDAP (nos dois servidores).

dn: dc=com
objectClass: domain
dc: com

Salve com o nome base.ldif (arquivo de texto puro, usando vi/vim ou outro editor) e rode o seguinte comando ldapadd -x -D “cn=Manager,dc=com” -W -f base.ldif

Ele pedirá uma senha. Informe a senha usada no comando slappasswd

Rode o LDAP Admin e veja a base de sua árvore LDAP no ar. A partir deste ponto, voce pode começar a criar a estrutura de sua árvore LDAP.

12/setembro/2007

Segurança

Filed under: Linux — Gustavo @ 1:03 am

O acesso remoto é um ponto extremamente problemático em termos de segurança. De que adianta ter um sistema bem fechado, se todo o acesso é realizado através de telnet e ftp ? Nestes protocolos, a senha trafega em texto puro, e qualquer sniffer é capaz de ler o usuário e senha utilizado.

Levando isto em consideração, muitos administradores hoje sequer ativam os serviços de telnet em seus servidores, e se o ftp é usado, é feito completamente sem senha, para evitar problemas.

O substituto destes dois protocolos chama-se ssh (de Secure SHell).

A instalação do ssh é extremamente simples. Em um sistema debian, basta executar um apt-get install ssh.

A parte legal disto é que através de um software chamado WinSCP, voce consegue copiar de e para o servidor Linux/Unix qualquer arquivo, como se fosse uma janela do windows explorer. Arrastar e soltar. Já para realizar o acesso remoto, use o PuTTy.

Entre estações linux/unix, o comando para acesso remoto é ssh usuario@ip-remoto. Para copiar arquivos, use o scp – scp arq-local usuario@ip-remoto:arq-remoto ou scp usuario@ip-remoto:arq-remoto arq-local

Mas em ssh existe uma facilidade na autenticação, que é a utilização de chaves. As chaves permitem segurança na autenticação, uma vez que ela é composta de 2 partes – pública e privada. Depois que a chave é criada, a parte pública pode e deve ser divulgada entre os servidores que receberão a conexão. E a parte privada da chave deve ficar bem guardada e bem protegida. Quando a conexão ssh se realiza, a verificação entre estas duas chaves, se OK, garante o acesso sem a necessidade de utilização de senha.

O processo de geração das chaves é muito simples. Basta usar o comando ssh-keygen (definindo qual é o tipo de chave escolhida) e seguir as orientações. Feito isto, proteja a chave privada e divulgue a chave pública.

TCP Wrappers

A utilização desta facilidade demanda várias conversas acaloradas. Existem os que abominam o uso e os que não vivem sem. Eu ainda vou assistir duas pessoas destes grupos defendendo as suas posições. Vai ser divertido…

Basicamente a coisa funciona assim. Existem 2 arquivos. /etc/hosts.sllow e /etc/hosts.deny. O primeiro permite as conexões e o segundo nega as conexões.

Para exemplificar, vou criar um bloqueio para que ninguém acesse meu seridor através de ssh, exceto minha máquina. A sintaxe fica assim (/etc/hosts.deny)

sshd : ALL EXCEPT 192.168.0.15

Ou assim (/etc/hosts.allow)

sshd : 192.168.0.15

Há os que dizem que a segunda maneira é melhor que a primeira. Particularmente eu não gosto de usar, porque há maneiras mais elegantes de impedir este tipo de acesso. Mas há quem goste, então ele ainda existe e creio que deve ficar no ar mais um bom tempo…

11/setembro/2007

Quotas

Filed under: Linux — Gustavo @ 12:16 am

O sistema de quotas sempre foi e sempre será importante em um sistema de servidor de arquivos. Afinal, de que adianta ter um monte de discos se algum usuário resolve consumir tudo com MP3 ou filminhos em MPEG ?

Basicamente, o sistema de quotas garante o uso racional do disco, e permite uma grande flexibilidade e rapidez para sua configuração e manutenção.

Alumas coisas devem ser observadas:
1. O kernel deve ter compilado o suporte a cotas (já incluso no kernel versão 2.4 e 2.6).
2. É possível habilitar as cotas para cada uma das partições, seja por grupo ou por usuário.
(boot em single mode)
3. Para adicionar as cotas nas partições, voce deve desmontar as partições de sua máquina. Isto exigirá um remount. Se for aplicado a cota na partição root “/”, deve ser executado em single mode (init 1).
4. Voce pode escolher qual será a versão de cota usada, mas saiba que a versão 2 é bem mais ágil em partições maiores. Se sua partição for pequena, prefira a versão 1.

Após a instalação do pacote quota, edite o arquivo /etc/fstab. No exemplo oabaixo, eu estou aplicando a cota na partição /dev/hda4, no diretório /home. Mas é possível também fazer a aplicação de quota para uma partição LVM

# cat /etc/fstab
/etc/fstab: static file system information
proc              /proc                    proc          defaults                                            0 0
/dev/hda2   /                             reiserfs    notail                                                 0 1
/dev/hda4   /home                   ext3         defaults,usrquota,grpquota                0 2
/dev/hda3   /mnt/win98           vfat           defaults,utf8,umask=007,gid=46     0 1
/dev/hda1   none                      swap        sw                                                       0 0

Veja como fica aplicada a quota em uma partição LVM
# cat /etc/fstab
/dev/VolGroup00/LogVol01 /home ext3 defaults,usrquota,grpquota 1 2

Após esta configuração, basta executar a remontagem da partição para que as configurações sejam adotadas. Use o comando

# mount -o remount /home

Verifique se as configurações foram carregadas corretamente. Com o comando mount, a partição com cota deve aparecer assim

# mount
/dev/hda2 on / type reiserfs (rw,errors=remount-ro)
/dev/hda3 on /mnt/win98 type vfat (rw)
/dev/hda4 on /home type ext3  (rw,usrquota,grpquota)

Criar os arquivos na cota na raiz da partição que receberá o sistema de cotas

# quotacheck -cug /home

Verifique então se o sistema está ativo com as cotas configuradas

# repquota -v -a

Agora que o sistema já está com o suporte a cotas ativo, vem a etapa de configuração de cotas para os usuários e grupos. Para isto, existem alguns utilitários muito bons e simples.

# repquota -a

*** Report for user quotas on device /dev/hda4
Block grace time: 7days; Inode grace time: 7days
Block limits                File limits
User             used    soft    hard  grace    used  soft  hard  grace
————————————————————————-
root      –     498612      0       0                5760     0     0
user1     –   177472      0       0                3486     0     0
user2     –              8      0       0                     2     0     0

Para editar a cota para que o usuario user1 use 100 MB de dados, com um limite máxixmo de 110 MB, ou 200 arquivos, com um limite máximo de 250 arquivos, altere as configurações confirme o modelo.

# edquota -u user1

Disk quotas for user user1 (uid 1188):
Filesystem                   blocks       soft       hard       inodes     soft     hard
/dev/hda4                      0         100000   110000        0         200     250

Para editar a cota para que o grupo group1 use 200 MB de dados, com um limite máxixmo de 220 MB, ou 400 arquivos, com um limite máximo de 500 arquivos, altere as configurações confirme o modelo.

# edquota -g user1

Disk quotas for group group1 (uid 5022):
Filesystem                   blocks       soft       hard       inodes     soft     hard
/dev/hda4                      0         200000   220000        0         400     500

Caso voce queira desativar a cota da partição, execute o comando quotaoff -v /home. Para ativá-la novamente, execute o comando quotaon -v /home

10/setembro/2007

Procesos

Filed under: Linux — Gustavo @ 2:12 am

No Linux, quando voce executa algum comando ou quando o sistema executa alguma tarefa que foi programada anteriormente, um identificador de processo é atribuído à tarefa, e é através destes identificadores que o kernel gerencia as atividades e delega uma fatia de tempo ao processo em questão para que a tarefa seja cumprida.

Nenhum sistema operacional é efetivamente multitarefa, mas se esta distribuição de tempo for bem feita, melhor será o resultado e a perfirmance do sistema.

Para voce ter uma idéia dos processos que estão em execução em sua máquina, execute o comando
ps aux ou o comando top.

Eu não vou listar aqui a saida deste comando porque eu ainda estou brigando com o alinhamento. De qualquer maneira, observe a coluna STAT (ps aux) ou a coluna S (top). Ela mostra algumas letras. O significado destas letras são:

- D -> processo dormente
- R -> processo sendo executado
- S -> processo dormente, aguardando algo
- T -> processo parado por algum sinal de controle
- Z -> processo zumbi ou defunto
- processo de alta prioridade
- N -> processo de baixa prioridade
- L -> processo com páginas travadas em memória
- s -> processo iniciador da sessão
- + -> processo em foreground

Para facilitar o gerenciamento dos processos, o kernel trabalha com envio de sinais aos mesmos. Existem 64 sinais possíveis para serem enviados, mas nem todos são conhecidos, ou mesmo utilizados. Os mais conhecidos e utilizados são:

- 1 – SIGHUP -> reinicia o processo
- 9 – SIGKILL -> mata o processo
- 15 – SIGTERM -> pede para o processo se encerrar
- 18 – SIGCONT -> continua, se estiver parado
- 19 – SIGSTOP -> para o processo (igual ao ctrl-z)

No diretório /proc existem diversas informações sobre os processos que estão rodando na máquina. Vá ao diretório /proc e execute um ls -l. Aparecerão vários diretórios com nomes iguais aos números dos processos listados pelo comando ps aux. Nestes diretórios estão todas as informações de todos os processos que atualmente estão em execução, além de outras informações estatísticas sobre os mesmos

Uma das coisas mais interessantes que podem ser feitas com os processos é a re-definição de sua prioridade dentro do sistema. Imagine por exemplo que um processo está consumindo muito do poder de processamento de sua máquina, e que não há qualquer problema em diminuir a sua prioridade. Basta redefinir a prioridade do processo através com comando renice. Ou então voce pode matar o processo, e iniciá-lo com uma prioridade mais baixa utilizando o comando nice. Vale lembrar que a escala de prioridade em linux e unix vai de -20 (maior prioridade) a 19 (menor prioridade). Por padrão, a prioridade dos processos é zero.

Quando um processo é interrompido com um SIGSTOP (ou melhor, um Ctrl-Z), é possível verificar seu estado através do ps aux ou ps -ef. Além disso, se voce quiser colocar este processo em background, basta digitar bg.

Para traze-lo de volta para o primeiro plano, digite fgPara verificar quantos e quais processos foram colocados em background, execute o comando jobs.

# jobs
[1] Stopped vi teste1
[2]- Stopped vi teste2
[3]+ Stopped vi teste3

Caso haja mais de um processo em background e voce deseje colocar em foreground um processo específico, execute o comando fg (é o valor que está entre colchetes [ ])

8/setembro/2007

Agendamentos de tarefas

Filed under: Linux — Gustavo @ 8:46 pm

Bom, agora que o horário da máquina está corretamente configurado, nós podemos realizar os agendamentos de tarefas com mais segurança, e sabendo que às 2 da manhã será realizada a tarefa das 2 da manhã e não a de outro horário.

Para isto, existem 2 ferramentas. Cron e AT. O cron é mais usado para tarefas repetitivas, como backups, execução de scripts de limpeza de disco, etc. Já o at é mais usado quando a tarefa será executada uma única vez, e dentro de poucos minutos.

Cron
O cron é extremamente útil e simples. O que mais confunde é a sua sintaxe. Para facilitar a edição dos agendamentos, use os comandos:
# export EDITOR=vi
# crontab -e

Isto vai abrir um arquivo de texto, ende voce pode adicionar e/ou editar a tarefa
A sintaxe para isto é:

30 18 * 1-10 1-6 root /root/backup geral
| | | | | | |
| | | | | | +-> comando a ser executado (path completo)
| | | | | +——> usuário que executará o comando
| | | | +———-> dia da semana
| | | +—————> mês do ano
| | +——————> dia do mês
| +——————–> hora
+————————> minuto

Para ver as tarefas agendadas
# crontab -l

Para remover os agendamentos, use o comando
# crontab -r

At
Antes de usar o AT, verifique se o horário de sua máquina está correto, porque senão o job será executado em outro momento. Para usar o at, deve-se seguir os passos
# at HH:mm MM/DD/YYYY
at> ls –color /etc
at> echo date
at> ^D

at: agenda e executa os jobs
atq: mostra a lista de jobs pendentes
atrm: remove os jobs agendados e ainda não executados

Horários

Filed under: Linux — Gustavo @ 7:03 pm

Com a grande utilização da Internet, e a consequente globalização da ecomonia, os horários tornam-se fundamentais. Como comprovar por exemplo que algum evento de segurança ocorreu se os horários dos logs não coincidem ?
Como ter certeza de que seu backup vai ser executado às 2 da manhã, se o horário da sua máquina está escorregando 1 minuto a cada dia ?

Foi para isso que o NTP (network time protocol) foi criado. Para que voce tenha alguém que te dê o horário preciso, e com uma ferramenta voce atualize o horário da sua máquina localmente.

Aqui no Brasil, que fornece o horário oficial brasileiro é o Observatório Nacional. O ON possui relógios atomicos de Césio, que tem altíssima precisão, e a partir destes relógios, é fornecido o horário oficial do Brasil.

Além disso, o ON também oferece gratuitamente um serviço (NTP Server) que permite que voce sincronize o relógio do seu computador.

Para iso, é necessário que voce tenha instalado em sua máquina um NTP Client. Este software vai até o servidor especificado (no caso do ON o IP é 200.20.186.75) e obtém informações obre o horário, corrigindo o horário de sua máquina, se necessário. Ele utiliza a porta UDP 123.

É óbvio que existem outros servidores de horário na internet e no Brasil. Basta procurar.

Como no Brasil é utilizado o Horário de Verão, vale lembrar que é precido informar ao computador quando o horário deve ser alterado, e se será adiantado ou atrasado. Nas distribuições Red Hat e Debian, isto pode ser feito através do utilitário tzselect. Para outros linux, use o tzconfig.

Segue abaixo um arquivo simples de configuração do NTP Client. Ele funciona com qualquer distribuição linux e unix.

# cat /etc/ntp.conf
server 200.144.121.33 # servidor de horário da RNP
server 127.127.1.0
fudge 127.127.1.0 stratum 10
driftfile /etc/ntp/drift
broadcastdelay 0.008
authenticate no

Para verificar se sua máquina está conectada e com o horário ajustado, basta executar o comando
# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*titan.cais.rnp. 255.210.122.2 2 u 150 1024 377 10.680 -0.607 0.310
LOCAL(0) LOCAL(0) 10 l 53 64 377 0.000 0.000 0.001

Usuários e seus ambientes

Filed under: Linux — Gustavo @ 5:30 pm

Continuando o post que tratava da criação e administração das contas dos usuários, este post descreve como manipular o ambiente para o trabalho do usuário. Ele vai tratar das variáveis globais e locais, aliases, arquivos de configuração do amiente, layout de teclado e mouse.

Variáveis
Em um shell, a manipulação de variáveis é muito simples. Para definir uma variável, basta atribuir um valor à mesma e pronto. Por exemplo, para definir a variável TESTE, basta dar o seguinte comando
# TESTE=10
ou
# TESTE=”palavra”

No primeiro caso, a variável tem um valor numérico atribuído a ela. No segundo caso, o conteúdo da variável TESTE é “palavra” (sem as aspas duplas)

Para verificar se a variável existe e qual é o seu conteúdo, basta executar o comando
# echo$TESTE

As variáveis podem ser locais ou globais. As variáveis locais existem somente enquanto o usuário estiver conectado à máquina. Assim que ele sair, a variável deixa de existir. Já as variáveis globais existem enquanto a máquina estiver ligada.
Para ver quais são as variáveis globais definidas, basta executar o comando
# env

Para ver as variáveis locais, execute o comando
# set
Este comando mostra as variáveis locais e globais.

Para tornar uma variável Global, basta colocar o comando export antes da definiçção da variável, como a seguir
# export TESTE=10
ou
# export TESTE=”palavra”

Esta definição de variáveis é muito útil para ajudar a configurar o ambiente do usuário

Alias
Um alias nada mais é do que uma definição de comandos, agrupados em uma variável, que quando executada, atua como o comando lá configurado. Por exemplo, imagine que voce usa um comando semelhante a este
# tail -20 /var/log/auth.log
O resultado deste comando, em meu sistema, foi
Sep 8 09:22:31 linux sshd[32198]: Illegal user user from 88.14.88.231
Sep 8 09:22:39 linux sshd[32202]: Illegal user admin from 88.14.88.231
Sep 8 09:22:47 linux sshd[32204]: Illegal user test from 88.14.88.231
Sep 8 09:23:07 linux sshd[32214]: Illegal user danny from 88.14.88.231
Sep 8 09:23:11 linux sshd[32216]: Illegal user sharon from 88.14.88.231
Sep 8 09:33:12 linux sshd[32218]: fatal: Timeout before authentication for 88.14.88.231
Sep 8 10:17:01 linux CRON[32219]: (pam_unix) session opened for user root by (uid=0)
Sep 8 10:17:01 linux CRON[32219]: (pam_unix) session closed for user root
Sep 8 11:17:01 linux CRON[32221]: (pam_unix) session opened for user root by (uid=0)
Sep 8 11:17:01 linux CRON[32221]: (pam_unix) session closed for user root
Sep 8 12:17:01 linux CRON[32223]: (pam_unix) session opened for user root by (uid=0)
Sep 8 12:17:01 linux CRON[32223]: (pam_unix) session closed for user root
Sep 8 13:17:01 linux CRON[32225]: (pam_unix) session opened for user root by (uid=0)
Sep 8 13:17:01 linux CRON[32225]: (pam_unix) session closed for user root
Sep 8 14:17:01 linux CRON[32227]: (pam_unix) session opened for user root by (uid=0)
Sep 8 14:17:01 linux CRON[32227]: (pam_unix) session closed for user root
Sep 8 14:53:14 linux sshd[32229]: Accepted keyboard-interactive/pam for usuario from xxx.xxx.xxx.xxx port 58001 ssh2
Sep 8 14:53:14 linux sshd[32233]: (pam_unix) session opened for user usuario by (uid=0)
Sep 8 14:53:20 linux su[32239]: + pts/0 usuario:root
Sep 8 14:53:20 linux su[32239]: (pam_unix) session opened for user root by usuario(uid=1000)

Mas para poluir menos a saída, eu incrementei um pouco
# tail -20 /var/log/auth.log | grep Illegal | cut -d” ” -f 1,2,3,6-11
A saida foi
Sep 8 sshd[32198]: Illegal user user from 88.14.88.231
Sep 8 sshd[32202]: Illegal user admin from 88.14.88.231
Sep 8 sshd[32204]: Illegal user test from 88.14.88.231
Sep 8 sshd[32214]: Illegal user danny from 88.14.88.231
Sep 8 sshd[32216]: Illegal user sharon from 88.14.88.231

Ao invés de digitar tudo isto, voce pode criar um “comando” que execute esta instrução para voce. Para fazer isto, basta executar o comando
# alias tentativa=’cat auth.log | grep Illegal | cut -d” ” -f 1,2,3,6-11 | more’
e entao chamar pelo novo comando que acabou de ser definido
# tentativa
O resultado será o mesmo que foi apresentado pelo comando anterior

Para desfazer esta configuração, execute o comando
# unalias tentativa

Arquivos de login
Logo após o login de um usuário no sistema, seja ele root ou não, alguns arquivos são lidos para estabelecer algumas configurações padrão para os ambientes e usuários no sistema. Estes arquios são: /etc/profile; ~/.bash_profile; ~/.bash_login; ~/.bash_profile; ~/.profile ou ainda o ~/.bashrc

Nestes arquivos é que são colocadas as diversas configurações para o ambiente do usuário, como a definição da variável PATH e o umask. Caso voce faça algugma alteração no arquivo /etc/profile, voce pode testar as alterações com o comando
# source (ex. # source /etc/profile)

E no caso de um logout, se existir o arquivo ~/.bash_logout, o mesmo será executado.

Teclado e mouse
As configurações de teclado e mouse raramente são refeitas, uma vez que após a instalação, nunca mais o teclado e o mouse serão trocados. Mas caso isso aconteça, os comandos abaixo podem lhe salvar, sem precisar ficar adivinhando onde estã o pipe (|) ou mesmo o /.
# loadkeys -d us
ou
# loadkeys -d br-abnt2

Para verificar onde o seu mouse está conectado e se ele está funcionando, execute um destes comandos e movimente seu mouse
# cat /dev/psaux
# cat /dev/usb/mouse
# cat /dev/ttyS0

Dois outros arquivos bastante interessante és são o /etc/issue e o /etc/motd. Eles mostram mensagens antes e depois do login do usuário. Muito útil para dar algumas instruções importantes e que sempre devem ser lembradas. Aliás, existem alguns aplicativos que vivem trocando as mensagens do dia. Procure por fortunes linux no Google, e veja o que voce consegue.

7/setembro/2007

Compactadores e empacotadores

Filed under: Linux — Gustavo @ 1:31 am

Quem nunca usou um compactador na vida que atire a primeira pedra !!! Puxando pela minha memória, eu me lembro que na época do MS-DOS 3.3, havia um compactador que criava um disco virtual, e com isso, voce praticamente duplicava seu HD. Então como eu tinha um HD de 120 MB, com esta ferramenta (eu não me lembro do nome dela) voce ficava com um disco de 240 MB.

Convenhamos, era MUUUUUUUIIIIIIIIITTTTTOOOOOOOOOO espaço, pois o DOS consumia 5 disquetes de 360 K (se fosse completamente instalado), o compilador Clipper 5 tinha 2 de 1,44 MB, o dBase III tinha uns 250 KB (sem as tranqueiras de help e outras baboseiras da Ashton-Tate) e o MS-Word 5 tinha 3 disquetes de 1,2 MB (desde estes tempos a MS já era exagerada com os aplicativos).

Foi nesta mesma época que coneçaram a surgir os compactadores. ARJ, LHA, PKzip/PKUnzip eram os conhecidos, e creio que os únicos disponíveis. Me lembro inclusive de um amigo meu ter conseguido o código foonte do LHA, e para meu desespero, não consegui compilá-lo no meu computador, pois minha máquina, apesar de ter muito disco, tinha pouca memória (2 MB) e eu não conseguia rodar o Compilador C da MS, que era pesado.

Atualmente, algumas pessoas acham que nada é mais importante que o WinZip. Com ele podemos colocar todo um diretório, seus subdiretórios e arquivos empacotados e compactados em um único grande arquivo conteiner. Porém, o grande problema do WinZip é que ele não mantém os metadados a salvo. No mundo Linux/Unix, estes metadados são fundamentais. E para garantir que eles retornem ao descompactar/desempacotar um arquivo, existe o tar (Tape ARchiver).

Basicamente o que o tar faz é colocar toda a mesma estrutura de diretórios, subdiretórios, arquivos, e toda a informação referente a estes objetos, em um único arquivo chamado arquivo conteiner. Este arquivo pode depois ser comprimido (através de gzip e/ou bzip2, por ex.), tornando este arquivo menor, facilitando a sua guarda (para backup) ou o transporte (através da internet).

Já os compactadores fazem basicamente a compressão dos arquivos, tornando-os menores e menos custosos para o seu transporte.

Os mais usados são GZIP/GUNZIP e BZIP2/BUNZIP2. Conforme a tabela abaixo, notam-se as diferenças em seus algoritmos de compressão

Arquivo de texto puro:
Tamanho original: 78.046.443 bytes (aprox. 75 MB)
————————-GZIP ——BZIP2
Compressão (seg.): ——1,01———132 (2 m 12 seg)
Descompressão (seg.): —0,82———1,7
Tamanho comprimido: –149.733——-6.107 bytes

Arquivo binário:
Tamanho original: 31.886.628 bytes (aprox. 30 MB)
————————-GZIP ———-BZIP2
Compressão (seg.): ——–4————–12
Descompressão (seg.): —0,6————-4,5
Tamanho comprimido: –14.857.548——10.602.750 bytes

Com estas tabelas pode-se verificar que cada um deles trata melhor um tipo de arquivo do que o outro, e que os tempos de compressão e descompressão podem variar muito.

As opções mais comuns para o TAR são:

# tar cvzf conteiner.tar.gz dir/arquivo
onde:
- c -> cria um novo arquivo
- v -> verbose mode
- z -> usa o gzip para comprimir
- f -> arquivo conteiner

# tar xvzf conteiner.tar.gz
onde:
- x -> extrai os arquivos do arquivo conteiner
- v -> verbose mode
- z -> usa o gzip para descomprimir
- f -> arquivo conteiner

# tar cvjf conteiner.tar.gz dir/arquivo
onde:
- c -> cria um novo arquivo
- v -> verbose mode
- j -> usa o bzip2 para comprimir
- f -> arquivo conteiner

# tar xvjf conteiner.tar.gz
onde:
- x -> extrai os arquivos do arquivo conteiner
- v -> verbose mode
- j -> usa o bunzip2 para descomprimir
- f -> arquivo conteiner

Posts mais antigos »

Tema: Silver is the New Black. Blog no WordPress.com.

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.