Infotech Notes

30/Agosto/2007

Dispositivos

Arquivado em: Linux — Gustavo @ 1:36 am


Há muito tempo atrás eu tive a feliz oportunidade de trabalhar juntamente com uma pessoa que conhecia muito sobre UNIX, e foi com ela que eu realmente comecei a entender este sistema operacional, e consequentemente toda a base de como o Linux funciona.

Penso que o conselho mais valioso que ela me deu foi que o UNIX trata tudo como se fosse um arquivo. Não importa se o conteúdo deste arquivo é um texto simples, uma controladora SCSI com vários discos pendurados nela ou uma impressora. Para o Unix e o Linux, é apenas um arquivo. Um bom exemplo disso é o seu mouse. Digite cat /dev/psaux e mexa seu mouse. Devem aparecer diversos caracteres na sua tela conforme voce mexe seu mouse.

Com isto em mente, deve-se observar que existem diferenças entre cada um dos dispositivos conectados diretamente ao seu computador. O mouse e o teclado são um dispositivo de caracter. Já o HD IDE, o HD SATA, a porta USB e o CDRom são dispositivos de bloco.

Então os arquivos que o designam dentro de um sistema Linux e Unix devem saber que estes dispositivos diferentes e com características distintas. Execute um ls -l no diretório /dev e veja quais dispositivos o linux já tem definido por padrão, e observe a primeira letra da coluna das permissões.

brw-rw—- 1 root disk 3, 1 Feb 26 2005 hda1
crw-rw—- 1 root lp 6, 0 Feb 26 2005 lp0

Neste caso, a letra b nos diz que o dispositivo hda1 é um dispositivo de bloco. Já a letra c mostra que a impressora é um dispositivo de caracter. E o /dev/null, que dispositivo é este ???

Bom, deixando a especulação para depois, vamos ver o que é necessário para montar um dispositivo e torná-lo acessível para o sistema.
Seguem alguns exemplos e passos para montar alguns dispositivos:

PenDrive:
- Tenha os módulos usb-storage, usb-ohci e usbcore carregados. Se não estiverem, basta usar um comando chamado modprobe.
- Crie um diretório para o pendrive em /media (lembre-se do FHS v2.3)
- Monte o pendrive com o comando mount -t vfat /dev/sda1 /media/pendrive
Feito isso, não se esqueça de sair do diretório e de desmontar o pendrive antes de retirá-lo
Use o comando umount /media/pendrive

Seu segundo HD:
- Crie um diretório para o seu segundo HD em /media (lembre-se do FHS v2.3)
- Monte o disco com o comando mount -t vfat /dev/hdb1 /media/disco2
Eu presumi que o seu HD já está formatado com uma partição FAT32. Caso seja NTFS, é sempre bom lembrar que algumas distribuições ainda não conseguem escrever corretamente nesta partição.

Floppy:
Para os saudosistas, aqui vai uma montagem de um floppy de 1.44 MB
- Crie um diretório para o floppy em /media (lembre-se do FHS v2.3)
- Monte o disquete com o comando mount -t vfat /dev/fd0 /media/floppy

Algumas pessoas (e eu estou neste time) preferem montar o floppy especificando o tamanho da unidade. Para isto, use o comando mount -t vfat /dev/fd0h1440 /media/floppy


Partições

O que seria de nós se não fosse possível particionar nosso HD e prevenir a perda de nossos dados quando temos que reinstalar o Window$$$$ ?

Se eu não me engano, o particionamento apareceu porque nas controladoras IDE/RLL muito antigas, havia uma limitação no endereçamento contínuo que poderia ser designado. E em alguns casos os discos eram maiores do que este endereçamento contínuo, então o particionamento fez a sua parte.

Ao invés de ter 1 único disco de 10 MB, haviam 2 discos. 1 de 3 MB e outro de 7 MB. E os discos eram do tamanho de um floppy de 5 1/4” (alguém se lembra ?). E pensar que hoje em dia existem pendrives do tamanho de uma chave, e que comportam facilmante 64 GB.

De qualquer maneira, o particionamento veio para ficar. E é sempre bom ter o disco bem particionado para instalar o Linux.
Pensando em uma instalação caseira onde somente o Linux vai existir, minha sugestão é:
- /boot -> 400 MB
- swap -> 2x a sua memória
- / -> 4 GB
- /var -> 5 GB
- /home -> o resto do seu HD

É claro que cada administrador de rede tem a sua preferência. Mas o ponto importante aqui é que temos 5 partições, e 1 delas deve ser lógica.
Existem 2 utilitários que tratam de criar as partições no HD – cfdisk e fdisk. Eu prefiro o segundo.

Imagine a situação onde voce já tem o linux instalado, de acordo com a sugestão acima, e deciciu comprar outro HD. O que fazer?

Primeiro use o fdisk para criar uma partição qualquer no HD, por exemplo hdb1, com 50 GB. Use o comando fdisk /dev/hdb, depois opção n (add new partition), escolha o numero da partição, opção t (change a partition’s system id), escolha o tipo (82=Linux swap, 83=Linux, c=WIN95 FAT32 com LBA), w e pronto.
Para ter certeza se está tudo OK, use fdisk /dev/hdb -l

Feito isso, basta agora voce formatar a particao e escolher qual sistema de arquivos voce quer usar. Recentemente eu achei um artigo bem detalhado sobre um benchmark entre os diversos sistemas de arquivos mais usados em Linux. Veja o teste e seus resultados neste link. Vale a pena ler.

Crie o seu sistema de arquivos predileto. Para o xfs, use mkfs.xfs /dev/hdb -f
Depois adicione ao seu /etc/fstab a linha
/dev/hdb1 /mnt/backup xfs defaults 0 2
que vai garantir que sua partição seja montada cada vez que boce reiniciar sua máquina, e monte sua partição para começar a brincadeira mount -t xfs /dev/hdb1 /mnt/backup

Apenas como informação, os campos da linha baixo significam:
1 ——- 2———- 3– 4——- 5 6
/dev/hdb1 /mnt/backup xfs defaults 0 2
1: partição que será montada
2: ponto de montagem que será usado
3: tipo do sistema de arquivos da partição
4: lista de opções para a montagem
5: sem dump do sistema
6: ordem de verificação do sistema no momento do boot

Entrada e saída de dados

Arquivado em: Linux — Gustavo @ 12:29 am

Além dos diversos serviços que podemos obter de um servidor Linux, uma parte muito importante também é a manipulação da informação através da linha de comando, especificamente através da entrada e saída de dados e saída de erros

Por padrão, a entrada de dados em um listema linux é representada por stdin. A saída é representada por stdout e a saída de erros é representada por stderr.
Como eu disse, estas são as representações padrão.

Nada impede que elas possam ser modificadas. Para isso existem os modificadores. O modificador > redireciona uma saída, que iria para a tela por exemplo, para um arquivo.
Neste caso, se o arquivo de destino já possuir algum conteúdo, ele será apagado pela nova informação. Já se o modificador for >>, então o conteúdo do arquivo, se existir, permanecerá, e as novas informações serão adicionadas a este arquivo.

Exemplo:
# ls > arquivo
# cat arquivo
arquivo
randompass
randompass.bkp
randompass.c
# ls /var > arquivo
# cat arquivo
backups
cache
lib
local
lock
log
mail
opt
run
spool
tmp
www

Já com >> o resultado seria diferente
# ls > arquivo
# cat arquivo
arquivo
randompass
randompass.bkp
randompass.c
# ls /var >> arquivo
# cat arquivo
arquivo
randompass
randompass.bkp
randompass.c
backups
cache
lib
local
lock
log
mail
opt
run
spool
tmp
www

Já o | (pipe) direciona a saída de um commando como entrada de dados de outro comando. Por exemplo, se no arquivo acima eu quisesse saber se algum nome possuísse 2 letras s (ss) eu usaria o seguinte comando

# cat arquivo | grep ss

randompass
randompass.bkp
randompass.c

Em linux existem diversas maneiras de se fazer a mesma coisa e obter os mesmos resultados. Tudo depende de seu conhecimento e de sua vontade de querer aprender. Cada comando no Linux (e Unix também) executa muito bem a função para o qual ele foi feito. E a junção destes vários comandos permite que se criem e executem tarefas até certo ponto inimagináveis. Isto é a base da programação em Shell Script. Isto será tratado mais adiante.

Abaixo seguem alguns comandos que sempre te ajudarão:

more: Mostra o conteúdo de um arquivo, parando quando a sua tela estiver cheia. Se voce pressionar um Enter, uma nova linha será mostrada. Se voce pressionar a barra de espaços, uma nova tela (página) será apresentada

less: Faz a mesma coisa que o more, mas permite usar as teclas de setas para subir ou descer na visualização do arquivo


tail: Mostra o final de um arquivo (as 10 últimas linhas). Com a opção -f, ele mostra as atualizações que este arquivo tiver. Muito útil para acompanhar logs de eventos em tempo real


head: Mostra o começo de um arquivo (normalmente as 10 primeiras linhas)


wc: Mostra quantas linhas, palavras ou caracteres um arquivo contém


cat: Semelhante ao more, mas sem a parada de página


sort: Organiza um arquivo baseado em colunas, números, letras, em ordem reversa, etc


grep: Faz uma filtragem no arquivo, procurando por uma string


cut: Mostra somente uma coluna (ou mais) baseado em um delimitador entre os campos

Todos estes comandos podem ser encontrados no diretório /bin. Penso que pode ser bastante interessante verificar quais comandos existem lá dentro, e procurar saber para que ele existe. Voce sempre vai ter uma boa surpresa. E caso sua necessidade não seja atendida por soimente 1 comando, lembre-se que os comandos podem ser encadeados (com o uso de |, >, >>), o que amplia muito as possibilidades.

28/Agosto/2007

Shell

Arquivado em: Linux — Gustavo @ 1:03 am

Em poucas palavras, sem um bom shell voce pode fazer maravilhas em um sistema Linux ou Unix. Imagine então como é ter um sistema desses com um shell poderoso !!!

Existem diversos shell’s disponíveis. Execute um cat no arquivo /etc/shells que voce encontrará diversos shells possíveis. É claro que muitos nem estarão instalados, mas a lista mostra que existem muitas opções e uma delas lhe atenderá perfeitamente.

Atualmente, o shell mais usado (pelo menos em Linux) é o Bourne Again SHell – bash. Este shell é bem superior ao Bourne Shell, e tem muitas facilidades, como um histórico dos comandos digitados e a busca nesta lista, apenas para citar alguns. Para efetuar a troca de shell de seu próximo login, use o comando chsh -s /path/to/new/shell.

Como a intenção não é ficar chovendo no molhado, lembre-se que voce pode customizar seu shell, independente da escolha.

Para criar uma variável, basta atribuir um valor a ela. Para que a variável seja global, lembre-se de usar o comando export. Se voce quiser apagar a variável, digite unset variavel.

Crie novos comandos menores baseados em comandos com as opções frequentes que voce usa com o alias. Caso voce deseje remover uma definição feita com o comando alias, basta digitar unalias comando_criado.

Se voce estiver usando o BASH, as configurações iniciais dos usuários podem ser feitas nos arquivos /etc/profile, ~/.bash_profile, ~/.bash_login ou ~/.profile. Nestes arquivos voce pode acrescentar definições para cada usuário, tornando o sistema mais personalizado. Para fazer com que os arquivos seja lidos novamente, e refaçam as definições, digite source /path/to/arquivo

Use também o /etc/issue e o /etc/motd. O issue mostra uma mensagem antes do usuário efetuar o login e o motd mostra uma mensagem logo após o login do usuário.

A alteração do layout do teclado é feita através do comando loadkeys -d . Se seu teclado tem o layout ingles, e voce acabou de conectar um com layout ABNT2, use o comando loadkeys -d br-abnt2 para alterar o layout. Para definir um layout como seu novo padrão, use o comando kbdconfig.

Caso voce deseje usar o seu mouse no modo texto, use o GPM. Para saber em qual interface o seu mouse está conectado, digite um destes comandos e mexa seu mouse.

# cat /dev/psaux
# cat /dev/usb/mouse
# cat /dev/ttyS0

Quando começar a aparecer caracteres em seu monitor, signofoca que voce encontrou a interface de seu mouse.

26/Agosto/2007

Usuários

Arquivado em: Linux — Gustavo @ 8:43 pm

Bem, segue mais um capítulo da saga de estudos para a certificação LPI 1. E este capítulo trata de como administrar aquele item extremamente importante do Sistema: o Usuário. Quando digo usuário, estou querendo dizer a conta de usuário no sistema, suas permissões, ações e regras aplicadas à sua utilização. Não quero aqui mencionar as pessoas que utilizam o sistema, mas tão somente a administração das contas que estas pessoas utilizam para entram no sistema e realizar alguma tarefa.

A parte mais importante da administração de um usuário diz respeito às permissões, ou seja, o que ele pode e o que ele não pode fazer dentro de um sistema.

Como eu penso que as restrições e permissões devem ser definidas de acordo com o perfil de cada usuário, além de como cada sistema deve ser configurado para atender às expectativas e necessidades, eu vou apenas mencionar as ferramentas/comandos mais usados para efetuar esta administração.

Arquivo /etc/passwd

root:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/false
usuario:x:1000:1000:Info do usuario:/home/usuario:/bin/bash

Os campos deste arquivo são separados por : e cada um deles significa

– campo 1: login do usuario

– campo 2: referencia da senha do usuario. Se for x, a senha está no arquivo /etc/shadow

– campo 3: número de identificação do usuário dentro do sistema
—- UID 0: usuario root ou com nível de root
—- UID de 1 a 999: reservado para usuários do sistema
—- UDI de 1000 a 60000: para usuários comuns

– campo 4: número de identificação do grupo primario do suário dentro do sistema
—- UID 0: usuario root ou com nível de root
—- UID de 1 a 999: reservado para usuários do sistema
—- UDI de 1000 a 60000: para usuários comuns

– campo 5: Comentarios e informações adicionais sobre o usuario

– campo 6: Definição do diretorio pessoal (homedir)

– campo 7: Shell usado pelo usuário

Arquivo /etc/shadow
Com as preocupações com segurança de hoje, o arquivo /etc/shadow tornou-se bem conhecido. Ele existe e server para armazenar as senhas de todos os usuarios daquele sistema.
Vale lembrar que este arquivo tem permissao restrita de acesso. Embora seja possivel para qualquer usuario executar um cat no arquivo /etc/passwd. o arquivo /etc/shadow só pode ser acessado pelo root (ou algum usuario com id=0) e pelo grupo shadow. Isto garante a seguranca e evita que pessoas não autorizadas tenham acesso às informações do arquivo.

linux:~# ls -la /etc/passwd
-rw-r–r– 1 root root 1311 Aug 26 15:20 /etc/passwd
linux:~# ls -la /etc/shadow
-rw-r—– 1 root shadow 1173 Aug 26 15:20 /etc/shadow

Este arquivo tem ainda alguns campos que vale a pena saber. Eles dizem respeito à administração da senha do usuário.

user1:$1$D1XFLtzi$a5QcttXI1UM1KoZJNXTsO0:13439:0:99999:7:::
user2:$1$g6hPE2Cg$iD8q7SLdTFOCPGD8f3L4Y/:13440:0:99999:7:::
user3:$1$Af6aSlAc$qPQD/EyuQlgqv0yMQWTRF0:13448:0:99999:7:::
user4:$1$keCjXx6f$YsoaQPQsnxYQsU1fBjW2Q1:13447:0:99999:7:::

Observando este arquivo, podemos observar uma linha com 9 campos, separados por :. Estes campos significam:
1. nome do usuario
2. hash da senha
3. número de dias desde a ultima alteração de senha
4. número de dias a esperar para que a senha possa ser alterada
5. número de dias para que a senha deva ser alterada, antes de expirar
6. número de dias para que a senha expire, e o usuario seja avisado.
7. número de dias para desativar a conta após a expiração da senha
8. número de dias para desativar a conta.
9. campo reservado

Os campos interessantes aqui são o 4, 5 e 6. Eles são acessados através do utilitário chage. Por padrão, os sistemas de hoje já utilizam o arquivo /etc/shadow. Então, para trazer as senhas de volta ao arquivo /etc/passwd, utilize pwunconv. Para movê-las de volta ao /etc/shadow, use pwconv.

Arquivo /etc/group
Este arquivo descreve as informações dos grupos existentes no sistema. Abaixo está um trech deste arquivo.

user1:x:1003:user2,user3
user2:x:1004:user3
user3:x:1005:
user4:x:1006:

Os campos são:
1. nome do usuário
2. password do grupo. O x indica que há um arquivo shadow para as senhas
3. GID – group identification
4. lista de usuários que pertencem a este grupo

Comando passwd
O comando passwd é um comando que redefine a senha para algum usuário do sistema. O usuário root pode alterar a senha de qualquer outro usuário da máquina, enquanto que usuários sem privilégios podem alterar apenas a própria senha.
É possível tambem travar e destravar usuários com este comando.
Para impedir que o usuario acesse o sistema digite

linux:~# passwd -l usuario

Isto vai adicionar 1 caracter no campo da senha do arquivo /etc/shadow. Com a alteração do hash da senha, nem mesmo o usuário root cconsegue logar no sistema utilizando este usuário e senha. Para desbloquear o usuário, basta usar

linux:~# passwd -u usuario

Caso voce esteja usando Solaris, é possível emitir o comando passwd -l, mas para destravar o usuário, é preciso redefinir a sua senha novamente.

Comando gpasswd
O comando gpasswd server para administrar e garantir segurança no acesso a um determinado grupo. Caso algum usuário necessite verificar alquivos ou executar programas que estão dentro de algum grupo “protegido”, este usuario deve digitar a senha definida para acesso a este grupo.

Comando chmod
Este comando server para alterar as permissões de um determinado arquivo ou diretório, para usuário, grupo e outros. Exemplo:

linux:~# ls -la /tmp/arquivo
-rw-r–r– 1 user user 1311 Aug 26 15:20 /tmp/arquivo
linux:~# chmod 750 /tmp/arquivo
-rwxr-x— 1 user user 1311 Aug 26 15:20 /tmp/arquivo

Comando chown
Este comando é usado para alterar o proprietário de um arquivo.

linux:~# ls -la /tmp/arquivo
-rwxr-x— 1 user user 1311 Aug 26 15:20 /tmp/arquivo
linux:~# chown root /tmp/arquivo
linux:~# ls -la /tmp/arquivo
-rwxr-x— 1 root user 1311 Aug 26 15:20 /tmp/arquivo

Comando chgrp
Este comando é usado para alterar o grupo associado a um arquivo.

linux:~# ls -la root /tmp/arquivo
-rwxr-x— 1 root user 1311 Aug 26 15:20 /tmp/arquivo
linux:~# chgrp root /tmp/arquivo
linux:~# ls -la /tmp/arquivo
-rwxr-x— 1 root root 1311 Aug 26 15:20 /tmp/arquivo

Comando useradd
Este comando serve para adicionar contas de usuarios ao sistema. A sintaxe mais comum para isto é:
linux:~# useradd -d /home/dir -g grupo-padrao -G grupo-adicional -s /bin/bash usuario
O comando adduser é um script em perl usado para confirmar diversas informações interessantes no momento da criação de um usuário.
Vale lembrar que tanto useradd como adduser criam o homedir do usuário de acordo com a estrutura de diretório existente em /etc/skel

Comando usermod
Este comando serve para alterar diversos parâmetros da conta de um usuário, como por exemplo data de expiração da conta, homedir, shell, grupo inicial e adicional. Porém ele é basicamente utilizado para alterar as informações sobre qual (ou quais) grupo este usuário pode acessar ou pertencer

Comando userdel [usuario]
Este comando apaga todas as entradas relacionadas ao usuário especificado nos seguintes arquivos : /etc/passwd, /etc/shadow e /etc/group. Com a opção -r, o homedir do usuário e todo o seu conteúdo também é removido do sistema.

Comando users
Este comando serve para mostrar quais usuários estão logados no sistema naquele instante

Comando who
O comando who é similar ao comando users, porém ele fornece mais informações sobre quem está logado ao sistema, como por exemplo, o terminal em uso, a hora do login e o IP de onde foi feito o acesso (caso seja feito pela rede)

Comando w
Este comando é ainda mais completo que o comando who, pois ele mostra qual é o comando emitido pelos usuários naquele instante, independentemente se a conexão é local ou remota

Comando id [usuario]
Mostra qual é o número de identificação do usuário que emitiu o comando ou do usuário consultado

Comando finger
Este comando mostra informações dos usuários do sistema, como Home dir, Shell, últiima conexão, etc. Ele já não é muito usado porque pode apresentar diversas informações que podem comprometer a segurança do servidor em questão.

Permissões
No Unix e Linux, todo o arquivo e diretório pertence a alguém. Se não pertencer a alguém, pertence ao usuário root, por padrão “de facto”.
As permissões são divididas em tres ações: Leitura, Escrita e Execução (r, w, x ou 4, 2, 1) e são dispostas em 3 grupos: Usuário, Grupo e Outros.
Para dar permissão de leitura, escrita e execução a um usuário, basta executar o comando chmod u+rwx arquivo. Se quiser fazer o mesmo com o grupo, execute o comando chmod ug+rwx Se quiser fazer isso para todo o mundo, execute o comando chmod ugo+rwx , ou chmod a+rwx , ou chmod 777 .

Particularmente eu prefiro usar os números. O read vale 4, o write vale 2 e a execução vale 1. Para dar uma permissão, basta verificar o valor (ou valores) da permissão desejada, e executar o comando.

Permissões especiais
Mas há um ponto muito importante aqui, que são as permissões especiais. Estas permissões permitem que um usuário normal execute um comando que a princípio somente o dono do arquivo poderia executar.
Existem 3 bits especiais que podem facilitar (ou atrapalhar) a vida de alguem em um sistema Unix/Linux. São eles o SUID bit, o SGID bit e o Sticky bit.
O SUID costuma ser atribuído a um executável para que um usuário regular execute o comando como se fosse o dono do comando.
O SGID costuma ser usado em diretórios. Quando se cria um arquivo, em um diretório com o SGID ativo, o arquivo e/ou diretório herdará o mgrupo do diretório, e não o grupo do usuário que o criou. Este bit é bastante útil em diretórios para várias pessoas acessarem o seu conteúdo.
Já o Sticky bit garante que todo o arquivo e/ou diretório possa ser excluído somente pelo seu criador, independente das permissões. Bastante utilizado no diretório /tmp.
A tabela para estes valores são:
SUID – 4
SGID – 2
Sticky – 1
Para alterar as permissões com estes bits, com rw para usuário, grupo e outros, use o comando chmod 4666 , ou chmod 2666 , ou chmod 1666 .

Após aplicar estes comandos, ao executar um ls -l, voce verá a seguinte saída:

# ls -la teste
-rw-rw-rw- 1 root root 0 Aug 9 00:17 teste
# chmod 4666 teste <— SUID aplicado
# ls -la teste
-rwSrw-rw- 1 root root 0 Aug 9 00:17 teste
# chmod 2666 teste <— SGID aplicado
# ls -la teste
-rw-rwSrw- 1 root root 0 Aug 9 00:17 teste
# chmod 1666 teste
<— Sticky aplicado
# ls -la teste
-rw-rw-rwT 1 root root 0 Aug 9 00:17 teste

23/Agosto/2007

Redes

Arquivado em: Linux — Gustavo @ 11:50 pm

Bom, de que adianta ter um sistema se ele estiver incomunicável ? Eu estava lendo um artigo hoje, que mencionou que os primeiros testes na base da internet aconteceram em setembro de 1969, há 38 anos atrás !!!

Tenho certeza que muita gente que hoje não sabe o que fazer se ficar sem acessar a internet por algumas horas nem fazia idéia disso. Mas porque não aproveitam esta necessidade de permanecer tão conectado, e conheçam um pouco mais da história ? Façamos como os alunos e estudemos a história, com a grande vantagem de sabermos que esta história aconteceu a apenas alguns anos atrás.

Podemos relembrar por exemplo que graças à Novell, à Lantastic, e à própria Microsoft, este conceito de conectividade em rede foi bastante difundido. Quem nunca ouviu falar do IPX, ou do Windows for Workgroups ? Aliás, eu ainda vou comprar uma placa de rede que funcione em um barramento PCI e que tenha drivers NDIS para poder instalar no meu VMWare um DOS 5 com Win3.11.

Mas no Linux, parece que todo o Sistema Operacional foi desenvolvido tendo a rede local como um fortíssimo aliado para a sua utilização. Então nada mais justo do que saber como configuramos uma rede local (wired or wireless) para colocá-lo em contato com o mundo.

Vale lembrar que antes de colocar a mão na massa, um planejamento se faz necessário. Gasta-se muito menos tempo planejando uma rede no papel, e depois implementando-a como se faz através de uma lista de tarefas, do que gastar tempo implantando esta rede diretamente nos equipamentos, e depois caso alguma coisa não funcione (e certamente alguma coisa não vai funcionar) gastar horas em troubleshooting…

Ifconfig – Status e configuração via linha de comando:
- ifconfig: mostra as interfaces existentes e que estão up
- ifconfig -a: mostra todas as interfaces de rede presentes na máquina (reais ou virtuais)

Para configurar uma interface com um endereço específico, podemos executar o seguinte comando:

linux:~# ifconfig eth0 192.168.0.21 netmask 255.255.255.0

Cuidado ao emitir este comando, pois se voce estiver conectado à sua máquina via um telnet ou SSH e o IP da máquina for por exemplo 192.168.0.20 255.255.255.0, voce vai perder a sua conexão.
Para adicionar um segundo endereço de rede, execute o comando

linux:~# ifconfig eth0 add 192.168.0.21 netmask 255.255.255.0

Isto vai criar uma interface virtual eth0:0 com o IP 192.168.0.21

Eu já coloquei uma classe C inteira um uma única interface física, com 255 interfaces lógicas e todas elas respondendo a ping, mas pelo que eu já andei testando, é possível colocar um /8 (máscara 255.0.0.0 ou mais de 16,7 milhões de endereços IP) em uma única interface física

Route – Rotas
- route -n: mostra as rotas configuradas somente com endereços IP (sem resolver nomes de IP para hosts no DNS, mais conhecido por DNS reverso)
O comando route tem informações importantes que vale a pena observar
– U (route is up)
– H (target is a host)
– G (use gateway)
– R (reinstate route for dynamic routing)
– D (dynamically installed by daemon or redirect)
– M (modified from routing daemon or redirect)
– A (installed by addrconf)
– C (cache entry)
– ! (reject route)
As mais comuns são U e G.
Para adicionar uma rota default, basta executar o comando

linux:~# route add default gw 192.168.0.1

ARP – Para ver quais são as máquinas e IPs que estão na mesma rede local que sua máquina, basta executar

linux:~# arp -anv

Mas nem só de números vive o administrador de redes. Pensando nisso, o arquivo hosts foi criado, e lá é possível determinar qual IP tem qual nome de host, e qual nome de host tem qual IP.
A sintaxe é bem simples.

linux:~# cat /etc/hosts
127.0.0.1 localhost
192.168.0.20 linux
192.168.0.2 Pentium

Caso voce altere ou adicione algum endereço IP para a máquina, lembre-se de editar este arquivo e fazer correções necessárias.

A lista do arquivo hosts até que ia bem e resolvia o problema rapidamente, mas administrar este arquivo com milhares de entradas começou a ficar impraticável, então alguém resolveu criar um sistema para cuidar deste banco com nomes e endereços. Neste link há um How-To bem simples, que dá uma boa idéia de como fazer algumas coisas:
http://br.tldp.org/projetos/howto/arquivos/html/DNS-HOWTO/DNS-HOWTO.pt_BR-97.html

Para fazer com que o linux utilize algum DNS localizado na internet, o arquivo resolv.conf está aí para ajudá-lo. Neste arquivo é possível determinar onde será feita a pesquisa para resolver nomes para IPs, e se tudo estiver bem configurado no DNS, de IPs para nomes
A sintaxe deste arquivo é bem simples

linux:~# cat /etc/resolv.conf

search dominio
nameserver 192.168.0.1 # dns interno
nameserver 200.221.11.98 # dns UOL
nameserver 200.205.125.57 # dns Telefonica
(*) Eu não garanto que estes servidores responderão às suas requisições de nomes, por conta de listas de acesso aplicadas nos mesmos. Isto é somente um exemplo.

Porém quando voce tem um resolv.conf com endereços de DNS para resolver nomes, é interessante colocar uma ordem, pois imagine se voce está procurando pelo endereço IP do seu servidor de impressão de seu escritório. Voce não pode jogar o nome para o servidor da UOL ou da Telefonica, porque eles nem sabem da existência de seu servidor de impressão.
Para isto existe o arquivo nsswitch.con. Ele diz qual será a ordem de pesquisa para a resolução de nomes para sua máquina. Caso a resposta não seja ppositiva, ele vai para o próximo da lista, e assim por diante, até que a lista acabe ou a pergunta seja respondida satisfatoriamente.

linux:~# cat /etc/nsswitch.conf
passwd: compat
group: compat
shadow: compat

hosts: files dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: nis

Neste exemplo, a ordem de pesquisa na linha em destaque (hosts) é arquivo local e depois dns.

E por fim, um último arquivo, mas não menos importante, é o arquivo hostname. É nele que voce diz qual é o nome de sua máquina

linux:~# cat /etc/hostname
linux

Para saber o nome completo de sua máquina – FQDN ou Fully Qualified Domain Name – que inclui o nome do domínio, basta executar um

linux:~# hostname -f

21/Agosto/2007

VI/VIM

Arquivado em: Linux — Gustavo @ 1:17 am

Acho que não é preciso falar muito do VI. Penso que como diz o ditado, uma imagem vale por 1000 palavras. Então segue um mapa de teclado para uso com o VI, e com o VIM (para os menos puristas…)

Ajuda…

Arquivado em: Linux — Gustavo @ 12:03 am

O que seria de nós sem a ajuda de nossos amigos e algumas (muitas) páginas de documentação ??? Particularmente eu penso que de nada adianta saber das coisas se voce não as compartilha. Não tudo, mas uma boa parte das informações.

Ainda bem que este foi o pensamento básico dos desenvolvedores do Linux e dos aplicativos que o compoem.

Mas como obter estas informações ? Seguem algumas sugestões:

- help [comando]: Mostra uma ajuda para os comandos internos ao shell que está em uso
- [comando] –help: Mostra as opções do comando em questão, comandos externos fora do shell
- man [comando]: Mostra detalhadamente as opções do comando
- man [seção] [comando]: Mostra detalhadamente as opções do comando para aquela seção questionada. As seções estão descritas a seguir:
– man 1: Programas executáveis e comandos do shell
– man 2: Chamadas do sistema (funções do kernel)
– man 3: Chamadas de bibliotecas
– man 4: Arquivos de dispositivo
– man 5: Arquivos de configuração e convenções
– man 6: Jogos

– man 7: Variados (pacotes de macros e convenções)
– man 8: Comandos de administração do sistema
– man 9: Rotinas do kernel

- info: Semelhante ao man, mas é possível “navegar” entre as páginas. Para isso, basta dar um enter nos nomes marcados com um asterisco *
- apropos [palavra-chave]: Indica qual ou quais man pages discorrem sobre o assunto/comando questionado. Este comando usa um mini banco de dados construído pelo comando catman
- whatis [comando]: É semelhante ao comando apropos, porém as buscas realizadas pelo whatis são mais específicas.

Por exemplo, o comando apropos passwd trará as páginas dos manuais e a descrição genérica de comandos que incluam a string passwd. Já o comand whatis passwd trará somente o(s) manual(is) do comando. Veja a saída destes dois comandos:

linux:~# apropos passwd
chgpasswd (8) – update group passwords in batch mode

chpasswd (8) – update passwords in batch mode

gpasswd (1) – administer the /etc/group file
passwd (1) – change user password
passwd (5) – the password file
update-passwd (8) – safely update /etc/passwd, /etc/shadow and /etc/group

linux:~# whatis passwd

passwd (5) – the password file
passwd (1) – change user password

- which [comando]: Este comando mostra em que diretório se encontra o comando procurado. Vale lembrar que ele busca somente no caminho definido na variável $PATH
- whereis [comandoarquivo]: Este comando é semelhante ao which, porém ele mostra também os arquivos de configuração do comando e suas páginas de man (se existirem)

É claro que não dá para deixar de lado os HOW-TO’s que tanto nos ajudam quando estamos tentando instalar algum serviço diferente em nosso servidor e também uma visita à página do The Linux Documentation Project – http://www.tldp.org/

19/Agosto/2007

Estudos para LPI

Arquivado em: Linux — Gustavo @ 6:19 pm

Até que enfim resolvi estudar para tirar esta certificação. A intenção desta parte do blog é colocar informações importantes, sem gastar papel, e em um lugar onde tudo fique mais organizado.

Teclas de atalho interessantes:

- Ctrl-A: Inicio da linha
- Ctrl-E: Final da linha
- Ctrl-U: Apaga o que estiver à esquerda do cursor
- Ctrl-K: Apaga o que estiver à direita do cursor
- Ctrl-Y: Cola o que foi apagado por ctrl-u e ctrl-k
- Ctrl-L: Limpa a tela e mantém o comando no prompt
- Para trocar de terminal na console, pressione Alt-{F1F2F3F4F5F6}. Se estiver usando o modo gráfico, use Ctrl-Alt-{F1F2F3F4F5F6}.

Sistema de arquivos e diretórios

De acordo com o FHS v2.3, a estrutura de diretórios de um Sistema Linux (e Unix também, uma vez que a IBM e HP também estão neste time) deve possuir os seguintes diretórios:
- /
Diretório principal do sistema

- /bin
Comandos essenciais ao funcionamento do sistema

- /boot
Arquivos estáticos necessário à inicialização do sistema

- /dev
Arquivos de dispositivos

- /etc
Arquivos de configuração do sistema

- /lib
Bibliotecas compartilhadas e módulos do kernel

- /media
Ponto de montagem de dispositivos removíveis, tais como pen drive, cd, dvd, floppy, etc.

- /mnt
Montagem temporária de sistemas de arquivos, tais como compartilhamento entre Linux e Windows

- /opt
Utilizado como base para programas que não fazem parte da distribuição instalada

- /sbin
Comandos usados para administrar o sistema, utilizado apenas pelo usuário root

- /srv
Diretório para os dados de serviços fornecidos pelo sistema, tais como /srv/www, /srv/ftp

- /tmp
Armazenamento temporário

- /usr
Contém programas que não são essenciais ao sistema e seguem o padrão GNU/Linux

- /var
Arquivos de dados variáveis, como logs

- /proc
Diretório virtual criado pelo kernel, com diversas informações do sistema

- /home
Diretórios pessoais dos usuários do sistema, exceto o root

- /root
Diretório do superusuário root

Blog no WordPress.com.