Versão 4.0 - maio de 2002
Copyleft - 1999 Hugo Cisneiros, hugo@netdados.com.br
Mantido por Alceu Rodrigues de Freitas Junior, arfreitas@ig.com.br
Índice geral
1. Introdução ao Linux 6
1.1 O que é Linux? 6
1.2 Linux = Unix ? 6
1.3 Meu micro suporta Linux? 7
1.4 Quanto espaço em disco preciso para o Linux? 7
1.5 A história do Linux 8
1.6 Estrutura de diretórios do Linux 8
1.7 Links para Linux 10
2. Instalando e Usando o Linux 12
2.1 Instalando o Linux 12
2.2 Particionando o hard disk. 12
2.3 Usando o Linux 16
2.3.1 Conceitos Introdutórios 18
2.3.2 Será que Linux é bom para você? 18
2.3.3 Comandos Básicos 21
2.3.4 Manual Pages 36
2.3.5 Utilizando um disco flexível no Linux 39
2.3.6 Aplicativos Linux 40
2.3.7 Instalando e Gerenciando Programas no Linux 40
2.3.4 Configurando o Linux para seu uso pessoal 54
2.3.4 Administrando usuários em seu Linux 58
2.3.5 Gerenciando Device Drivers 60
2.3.6 Permissões 61
2.3.7 O editor de textos padrão: VI 65
3. X-Windows 68
3.1. O que é X-Windows? 68
3.2. Configurando o X-Windows para funcionar em seu Linux 69
3.3 O que são Window Managers? 78
3.4 Como criar ícones no X-Windows 79
3.5 Inicializando seu Linux diretamente no X-Windows 79
3.6 Onde posso obter informações sobre o XFree86? 80
4. Manutenção do Sistema 80
4.1 Enxergando Partições Windows no Linux e vice-versa 80
4.2 Usando pacotes RPM (RedHat Packet Manager) em outras distribuições 82
4.3 /usr em outra partição 82
4.4 Rodando Windows 95 no Linux 84
4.5 Imprimindo do Linux em uma rede Windows 85
4.6 Montando partições win95 no Linux sem aparecer os arquivos truncados 87
4.7 Realizar upgrade de discos sem perder os dados 87
4.8 Tudo sobre o LILO 89
4.9 Compilando o kernel do Linux 94
4.10 Perguntas Frequentes 100
5. O Linux em rede 106
5.1 O básico 106
5.2 O Servidor de Serviços: Inetd 111
5.3 Montando servidor Internet/Intranet no Linux (rede) 114
5.4 Monitorando as mensagens do sistema 121
5.5Desabilitando o telnet a um usuário 122
5.4 Restringindo a um usuário o acesso ftp somente ao seu diretório home 123
5.5 Conectando-se por: CHAP 125
5.6 Conectando-se por: Programa Minicom 127
5.7 Conectando-se por: pppd 128
5.8 Pegando e-mail via pop server no Linux 131
5.9 Dicas de FTP 131
5.10 Domínio Virtual 134
5.11 E-Mail de auto-resposta 135
5.12 E-mails virtuais 136
6. Dúvidas de usuários (Linux-BR) 138
6.1. Restringindo acesso a IPs com o Apache sem usar um .HTACCESS 138
6.2. Usando o Linux como Bridge 139
6.3. Telnet não funciona 139
6.4. FTP e/ou Daemon FTP não funcionam 140
6.5. Arquivos compactados com .tar e .gz que pego em FTP não descompactam 140
6.6. Mensagem de erro: can't locate module net-pf-4 (e 5) 140
6.7. Quero fazer com que , por exemplo, o tty11 seja associado ao var/log/messages 141
6.8. Restringindo o acesso de um finger em você 141
6.9. Como agrupo mensagens no PINE? 141
7. Segurança no Linux 143
7.1. Introdução / Sumário 143
7.2. Serviços TCP Port 143
7.3. Monitorando o servidor de Telnet 144
7.4. Monitorando o servidor FTP 145
7.5. Protegendo suas senhas (pppd) 145
7.6. /etc/host.allow e /etc/host.deny 146
7.7 Segurança com o LILO 147
7.8. Dicas de Segurança 148
7.9 Programas para segurança 150
8. Dicas e Shell Scripts 153
8.1. Fazendo o backspace funcionar no X-Windows 153
8.2. Fazendo o less ler vários tipos de arquivos 153
8.3. Permitir um só login por usuário 154
8.4. Mudando o relógio de seu Linux 155
8.5. Criando só uma conta de E-MAIL, sem shell 156
8.6. Mandar vários e-mails de uma vez sem mostrar cc 156
8.7. Shell Scripts - Utilidades e mais utilidades 157
9 Sobre este Manual 160
9.1 Sobre os autores 160
9.2 Este manual tem Copyright? 163
9.3 Como ajudar o manual 165
9.4 Agradecimentos 165
Linux é um Unix Livre, que segue o mesmo padrão que os sistemas Unix. O Linux foi feito por Linus Torvalds, que depois de muito trabalho e motivação, conseguiu lançar o kernel 1.0. O nome Linux vem de origem da união do nome dele com a palavra Unix (Linus + Unix = Linux). Pronuncia-se “Lí-nux”, de acordo com seu criador.
Diante de sua criação, Linus Torvalds concluiu que sem ajuda seria impossível progredir muito com aquele unix. Então ele pediu ajuda aos programadores através da Internet, e do FSF (Free Software Fundation) teve um papel importante também nesse desenvolvimento, pois são nos moldes dessa fundação que o Linux é desenvolvido, e grande maior parte dos aplicativos são criados.
Milhares de hackers e programadores ajudaram-no a fazer o sistema, que hoje se tornou o mais importante sistema operacional para redes como Internet, Intranet. Universidades, servidores, provedores, a maioria destes estão usando com sucesso o Linux.
O kernel é o núcleo do sistema, o que gerencia a memória, o que diz que sistema de arquivos o sistema operacional usa, como deve usar, e como deve se comportar. Para um sistema funcional, só se precisa do kernel, as outras coisas são complementos, pacotes e aplicativos que tornam o Linux o melhor.
O Linux vem surpreendendo cada vez mais, a Red Hat Software recebeu recentemente parceria com a Intel e a Netscape, que vão ajudar o Linux a ficar cada vez melhor. Fabricantes de programas estão cada vez mais interessados em colocar seus softwares para a plataforma Linux.
Mas será que o Linux é somente um sistema operacional para redes? Não é o que parece. Cada vez mais usuários caseiros estão migrando para o Linux com um intuito de sair da monotomia de outros sistemas como o Windows, e se ingressar num "mundo" totalmente novo. A maioria gosta, e com cada vez mais Windows Managers (que deixam o Linux com um ambiente gráfico amigável) a situação vai melhorando.
Limpo, claro e definitivo:
O Linux não é Unix. |
O Linux é *um* Unix. |
O que você deve estar pensando? Que loucura... mas calma, não é bem por aí.
O UNIX é uma marca registrada do Unix Lab. Todos os sistemas baseados naqueles códigos são chamados de uma forma geral de UNIX.
O Linux foi escrito desde o inicio pelo Linus Torvalds e não contem nenhuma linha de código do UNIX. Mas o Linux foi escrito para ser conforme o padrão POSIX, que deve ser o padrão da API (Application Programming Inteface) Unix, que em última análise pode ser resumido (forcando um pouco a barra) como sendo as chamadas do sistema. Por isto se diz que o Linux é *um* Unix (não UNIX ). Tem uma diferença sutil aí.
Por causa da API POSIX, do conjunto de utilitários (Free Software Fundation/GNU em sua maioria) e do uso do X-Windows ( XFree ) o Linux é tao parecido com o UNIX que existem empresas que usam o Linux para desenvolver para UNIX que não seja o dela mesma (por exemplo a IBM e a Microsoft). Veja que a Microsoft está tentando transformar o NiceTry em um Unix (ela espera que algum dia no futuro seja um Unix melhor que o Unix - algo assim como o Linux), e para isto está aproximando-o do padrão POSIX.
Se seu micro for da família 386/486/586, ele funciona que é uma beleza. Quem tem a preferência são os processadores Intel. Eu mesmo testei o Linux em outras marcas como AMD-K6 e Cyrix, funcionou sem problemas em ambos. Atualmente o Linux ganhou outras plataformas, como Linux para Macintosh (PPC).
O espaço que o Linux usa é de no mínimo 10 a 30 MB, onde quem vai usar esse espaço é o Kernel. Nesse espaço, é possível testar o Linux e o sistema de arquivos que ele opera. Mas pelo amor de deus, se você quer ter um Linux decente é recomendado colocar mais (bota mais nisso) espaço. Recomendo pelo menos 1 GB para você entupir ele de coisas.
A memória RAM pode ser até 2MB! É recomendado que se use 4MB para cima. Mas lembre-se: Quanto mais programas você queira rodar/servir em seu Linux, ele requer mais memória. Pelo amor de deus, com 4 MB de RAM o Linux não vai ficar rápido, mas ele aguenta. Se você quiser ter uma rapidez considerável, é bom colocar uns 32 Mb. O Linux suporta também memória virtual (swap).
O Linux é compatível com Laptops também. Você pode encontrar informações sobre este uso neste site: http://www.cs.utexas.edu/users/kharker/linux-laptop/
O mínimo espaço útilizável para Linux é 10Mb, para você testá-lo.
Agora para uma boa útilização, recomenda-se colocar uns 400Mb a 600Mb... Eu uso 1Gb .
O Kernel do Linux foi, originalmente, escrito por Linus Torvalds do Departamento de Ciência da Computação da Universidades de Helsinki, Finlândia, com a ajuda de vários programadores voluntários através da Internet. Linus Torvalds iniciou cortando (hacking) o kernel como um projeto particular, inspirado em seu interesse no Minix, um pequeno sistema UNIX desenvolvido por Andy Tannenbaum. Ele se limitou a criar, em suas próprias palavras, "um Minix melhor que o Minix" ("a better Minix than Minix"). E depois de algum tempo de trabalho em seu projeto, sozinho, ele enviou a seguinte mensagem para comp.os.minix:
“Você suspira por melhores dias do Minix-1.1, quando homens serão homens e escreverão seus próprios "device drivers" ? Você está sem um bom projeto e esta morrendo por colocar as mãos em um S.O. no qual você possa modificar de acordo com suas necessidades ? Você está achando frustrante quando tudo trabalha em Minix ? Chega de atravessar noites para obter programas que trabalhem correto ? Então esta mensagem pode ser exatamente para você.
Como eu mencionei a um mês atrás, estou trabalhando em uma versão independente de um S.O. similar ao Minix para computadores AT-386. Ele está, finalmente, próximo do estágio em que poderá ser utilizado (embora possa não ser o que você esteja esperando), e eu estou disposto a colocar os fontes para ampla distribuição. Ele está na versão 0.02... contudo eu tive sucesso rodando bash, gcc, gnu-make, gnu-sed, compressão, etc. nele.”
No dia 5 de outubro de 1991 Linus Torvalds anunciou a primeira versão "oficial" do Linux, versão 0.02. Desde então muitos programadores têm respondido ao seu chamado, e têm ajudado a fazer do Linux o sistema operacional que é hoje.
/bin |
Arquivos executáveis(binários) de comandos essenciais pertencentes ao sistema e que são usados com freqüência |
/boot |
Arquivos estáticos de boot de inicialização(boot-loader) |
/dev |
Arquivos de dispositivos de entrada/saída |
/etc |
Configuração do sistema da máquina local com arquivos diversos para a administração de sistema |
/home |
Diretórios local (home) dos usuários |
/lib |
Arquivos da bibliotecas compartilhadas usados com freqüência |
/root |
Diretório local do superusuário (root) |
/sbin |
Arquivos de sistema essenciais |
/tmp |
Arquivos temporários gerados por alguns utilitários |
/mnt |
Ponto de montagem de partição temporários |
/usr |
Todos os arquivos de usuários devem estar aqui (segunda maior hierárquia) |
/proc |
Informações sobre o hardware do seu sistema (veja abaixo) |
/var |
Informações variável |
Sistema de Arquivos /proc
O sistema de arquivos /proc é um sistema num diretório onde fica todas as informações sobre o sistema que você está monitorando. O /proc é uma facilidade habilitada pelo kernel, e normalmente está incluído no kernel da maioria das distribuições, devido as facilidades que ele oferece.
Um fato interessante de ser citado, é que as informações que os arquivos são dinâmicas, e você não tem como editar esses arquivos diretamente; eles não existem no seu HD, ficam residentes na memória RAM, e são gerados dinamicamente pelo sistema.
Abaixo, você verá alguns exemplos desses arquivos, e que informações eles oferecem. Você pode visualizar esses arquivos através do comando more. Alguns desses arquivo não fornecem uma saída muita clara, mas não se assuste. Alguns aplicativos que oferecem informações sobre os sistema, obtêm as informações desses arquivos, e, obviamente, fornecem uma saída formatada. Dê uma olhada abaixo:
/proc/devices
Aqui estão os dispositivos encontrados no seu sistema, incluindo modem, placa de som, placa de rede, teclado, impressora,etc.
/proc/interrupts
Neste arquivo estão as informações das IRQ dos dispositivos.
/proc/ioports
Informações sobre os endereços das portas I/O (Input/Output) são encontradas aqui.
/proc/pci
Dispositivos PCI do sistema são referenciados aqui..
/proc/cpuinfo
Aqui você pode ver as características do seu processador, e tudo referente a ele.
/proc/filesystems
Sistemas de arquivos suportados pelo kernel ou usados.
Links Nacionais
Ano 2001 Linux Page - http://www.ano2001.ml.org
Linux-BR - http://www.conectiva.com.br/listas/linux-br/
Linux-SE - http://come.to/linux-se/
Conectiva Linux - http://www.conectiva.com.br
Linux Documentation Project Brasil - http://www.dca.fee.unicamp.br/~malheiro/linux/LDP-br.html
Linux-SE - http://members.xoom.com/eitch/
LinuxBerg Brasil - http://zaz.linuxberg.com
RNP News Generation - http://www.rnp.br/newsgen/
Linux Brasil - http://www.trix.net/linux/
Linux All- http://www.linuxall.org
Configuração do teclado- http://jefferson.computers.webjump.com
Os Imortais ( repositório do TLM! ) – http://www.imortais.cjb.net
Links Internacionais
The Linux Home Page - http://www.linux.org
The Linux Documentation Project - http://www.metalab.unc.edu/LDP/
FreshMeat - http://www.freshmeat.net
Slashdot - http://www.slashdot.org/search.pl?topic=linux
RedHat Software - http://www.redhat.com
Debian Linux - http://www.debian.org
Slackware.com - http://www.slackware.com
Linux Journal - http://www.linuxjournal.com
Linux NOW! - http://www.linuxnow.com
Linux Resources - http://www.linuxresources.com
Kernel.ORG - http://www.kernel.org
Linux Mall - http://www.linuxmall.com/
Cheap Bytes - http://www.cheapbytes.com
XFree86 Project - http://www.xfree86.org
LinuxBerg - http://www.linuxberg.com
Linux Games - http://www.linuxgames.com
Linux Quake – http://www.linuxquake.com
Linux Links - http://www.linuxlinks.com
Linux Weekly News - http://lwn.net
Linux Apps - http://www.linuxapps.com
Linux Applications And Utilities Page - http://www.xnet.com/~blatura/linapps.html
WindowMaker - http://www.windowmaker.org
K Desktop Environment - http://www.kde.org
Linux Tips and Tricks - Adrian Mikeliunas do World Bank Group está mantendo uma mesa de discussão no SolutionCentral. Faça suas perguntas sobre Linux: instalação, configuração, integração, administração de sistema e segurança – e outras? Vá para http://www.solutioncentral.com/linuxitte
Linux ISO (imagens de boa parte das distribuições Linux para download) – http://www.linuxiso.org
Para instalar o Linux, você precisará primeiro escolher uma das inúmeras distribuições que existem por aí. As mais famosas são: Red Hat, Slackware, Debian, Caldera, SuSe, Mandrake, Turbo Linux, e mais uma infinidade (estas são as mais famosas).
O ideal seria que você lê-se o procedimento de instalação de cada distribuição, pois existem diferenças de um sistema para outro (como organização dos diretórios), mas nada muito diferente (todos ainda são Linuxs!).
A idéia aqui é tentar ser genérico. Mesmo que eu quisesse, eu não conseguiria manter aqui a documentação atualizada sobre instalação nem das distribuições acima apresentadas (só elas já somam sete e eu sou um só).
A princípio, tudo se resume em particionar o disco e carregar o programa de instalação das distribuição, o que é feito normalmente por disquetes de boot, ou pelo próprio CDROM da distribuição, se o seu computador permitir boot pela unidade do mesmo. Siga os passos abaixo:
Uma das mais difíceis tarefas, que impedem e confudem vários
iniciantes do Linux. Sem dúvida, esta é a etapa mais
difícil de qualquer instalação, todo mundo diz
que o Linux é dificil de instalar justamente por causa disto.
Mas pense bem, imagine que um computador venha pronto para instalar o
Linux, será difícil? Não, será que nem o
Windows, e do jeito que os tipos de instalação estão
ficando cada vez mais fáceis ... distribuições
recentemente tem apresentado instalações gráficas,
com suporte a mouse e bem intuitivas. Elas fazem algumas perguntas, e
muitas tem opção de particionamento automático.
Então é só clicar e esperar.
Isso
é absolutamente válido, se você não tiver
muito interesse em realmente aprender Linux, mas espero que esse não
seja o seu caso!
Então vou mostrar aqui como usar o fdisk do Linux, que é
onde criaremos nossas partições. Antes de mais nada,
fique sabendo que você tem que ter o HD com espaco livre (não
espaço livre numa partição, e sim espaço
livre para criar uma partição). Tem gente que opta em
formatar o HD, mas como não é todo mundo que gosta
disso, ou simplesmente não podem porque o HD possui dados que
não podem ser perdidos. Para isso, procure usar o FIPS
(gratuito sobre GPL) ou arranjar o Partition Magic (bem mais
intuitivo, mas comercial), que deixarão espaço livre
para você criar outras partições, sem ter de
formatar o HD.
Então vamos, mãos à
obra. Você deve estar no simples prompt do Linux. Entenda
seguinte:
/dev/hda
- IDE Primária Master
/dev/hdb - IDE Primária
Slave
/dev/hdc - IDE Secundária Master
/dev/hdd - IDE
Secundária Slave
Confuso? O Linux dá nomes de arquivos, chamados devices, que representam dispositivos físicos. Os hard disks IDE são chamados de hd + uma letra que representa se como estão conectados na placa mãe. Já os hard disks SCSI são chamados de sd, e seguem os mesmos padrões de letras.
No caso do hda, por exemplo, podemos ter várias partições neste disco. Se o disco ti ver quatro partições primárias (máximo possível para um disco IDE), por exemplo, elas serão numeradas assim:
/dev/hda1 – primeira partição primária
/dev/hda2 – segunda partição primária
/dev/hda3 – terceira partição primária
/dev/hda4 – quarta partição primária
Para ter mais partições, é
preciso criar uma partição lógica, que começará
(por motivos até óbvios) por hda5, hda6 e assim por
diante.
Imaginemos a seguinte situação: tenho dois HD´s, em um eu tenho o Windows (hd primário master) e o outro (primário slave) eu vou instalar o Linux. Então qual eu vou particionar com o fdisk? O /dev/hdb! Então executo o fdisk assim:
fdisk
/dev/hdb
Command (m for help):
Digito m e ele vai me mostrar o help:
Comando |
Ação |
a |
Muda a partição ativa (bootável) |
b |
Edita o disklabel do bsd |
c |
Muda o sinal de compatibilidade do DOS |
d |
Deleta uma partição |
l |
Lista tipos de partições conhecidas |
m |
Mostra a ajuda |
n |
Adiciona uma nova partição |
p |
Mostra a tabela de partições atuais |
q |
Sai sem salvar as mudanças |
t |
Muda o tipo de partição |
u |
Muda as unidades de entrada/saida |
v |
Verifica a tabela de partições |
w |
Aplica as alterações e sai do programa |
x |
Outras opções |
Suponhamos que o /dev/hdb esteja vazio, mas como sei
disso? Com o comando p:
Command (m for help): p
Disk /dev/hda: 64 heads, 63 sectors, 526 cylinders
Units = cylinders of 4032 * 512 bytes
Device Boot Begin Start End Blocks Id System
Não apareceu nenhuma partição,
então quer dizer que está vazio. Se estivesse com
uma partição FAT32, estaria assim:
Command (m for help): p
Disk /dev/hda: 64 heads, 63 sectors, 526 cylinders
Units = cylinders of 4032 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 1 1 526 1060384+ b Win95 FAT32
Repare que é
a partição 1, porque vem o número 1 depois de
/dev/hda, ficando /dev/hda1. Como eu quero o HD vazio, o que eu vou
fazer? Apagar a partição 1:
Command (m for help): d
Partition number (1-4): 1
Pronto, a partição foi apagada. Como eu vou querer instalar o Linux sozinho, crio as partições Linux Native e Linux Swap. Eu tenho um HD de 1gb, e vou colocar 950MB para
o Linux Native e 50MB para Swap:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
Partition number (1-4): 1
First cylinder (1-526): 1
Last cylinder or +size or +sizeM or +sizeK ([1]-526): +950M
Command (m for help): p
Disk /dev/hda: 64 heads, 63 sectors, 526 cylinders
Units = cylinders of 4032 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 1 1 483 973696+ 83 Linux native
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (484-526): 484
Last cylinder or +size or +sizeM or +sizeK ([484]-526): 526
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap)
Command (m for help): p
Disk /dev/hda: 64 heads, 63 sectors, 526 cylinders
Units = cylinders of 4032 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 1 1 483 973696+ 83 Linux native
/dev/hda2 484 484 526 86688 82 Linux swap
Command (m for help):
Como você pode ver, particionei perfeitamente para Linux. Você pode fazer como quiser, não precisa necessáriamente dessa forma. Diversas distribuições usam aplicativos diferentes para particionamento, como o cfdisk do Debian (muito parecido com o fdisk por sinal) e o Disk Druid, muito utilizado na instalação de sistemas Conectiva ou RedHat: use o
fdisk como um ponto de referência.
Você quer mudar do DOS para o Linux? Boa idéia, o Linux é tecnicamente superior ao DOS, Windows 95 e mesmo ao Windows NT. Mas tome cuidado: ele pode não ser útil para você, se você não for o tipo adequado de usuário. De fato, DOS e Windows são mais usados para jogos e produtividade de escritório, ao passo que o Linux dá o seu melhor em networking, desenvolvimento e computação científica. O Linux é incrivelmente poderoso, mas aprender como aproveitar esse poder leva tempo. Assim, se você precisa principalmente de software comercial, ou se você não está disposto a aprender novos comandos e conceitos, é melhor procurar outra coisa.
Tornar o Linux mais fácil de usar é um trabalho em andamento, mas não espere tornar-se proficiente sem ler muita documentação e usá-lo por pelo menos um mês. O Linux não lhe dará resultados instantâneos. Apesar destes avisos, eu tenho 100% de confiança de que, se você se encaixa no perfil adequado de usuário, encontrará no Linux o nirvana para seu computador, e nunca mais vai querer usar DOS ou Windows novamente. A propósito, Linux + DOS/Win podem coexistir na mesma máquina sem problemas.
Pré-requisitos
Eu assumirei que:
você conhece os comandos e conceitos básicos do DOS;
Linux, possívelmente com o X-Windows System, está corretamente instalado no seu PC;
seu shell (equivalente ao COMMAND.COM) é o bash.
A menos que especificado ao contrário, todas as informações desta obra visam o mau e velho DOS. Há informações sobre o Windows aqui e ali, mas tenha em mente que o Windows e o Linux são totalmente diferentes, ao passo que o DOS é uma espécie de parente pobre do UNIX.
Você instalou o Linux e os programas de que precisava no seu PC. Você criou uma conta para você mesmo (se não, digite adduser agora!) e o Linux está rodando. Você digitou seu nome e sua senha, e agora está olhando para a tela pensando: "E agora?"
Não se desespere. Você está quase pronto para fazer as mesmas coisas que costumava fazer com DOS/Win, e muito mais. Se você estivesse rodando DOS/Win ao invés do Linux, estaria fazendo alguma das seguintes tarefas:
executando programas em seus diretórios, copiando, visualizando, apagando, imprimindo e renomeando arquivos;
mudando, criando e apagando seus diretórios, e listando seu conteúdo (com CD, MD, RD, DIR);
formatando disquetes e copiando arquivos de/para eles;
personalizando o sistema;
escrevendo arquivos .BAT e programas na sua linguagem favorita;
Você ficará feliz em saber que estas tarefas podem ser realizadas no Linux de uma maneira similar ao DOS. No DOS, o usuário médio útilizam muito poucos dos mais de 100 comandos disponíveis: o mesmo, até certo ponto, vale também para o Linux.
A melhor maneira de aprender algo novo é praticando. Você é fortemente estimulado a experimentar e brincar com o Linux: você não danificará seu sistema assim. Alguns pontos:
primeiro, como sair do Linux com segurança. Se você estiver numa tela de modo texto, pressione < CTRL+ALT+DEL >, espere o sistema reinicializar e desligue seu PC. Se você estiver trabalhando sob o X Window System, pressione < CTRL+ALT+BACKSPACE > primeiro, e depois < CTRL+ALT+DEL >. Nunca desligue nem reinicialize o PC diretamente: isto pode danificar o sistema de arquivos;
diferente do DOS, o Linux tem mecanismos embutidos de segurança. Arquivos e diretórios têm permissões associadas a si; consequentemente, alguns deles não podem ser acessados pelo usuário normal (veja permissões e propriedades). O DOS, ao contrário, permite que você apague todo o conteúdo de seu disco rígido;
há um usuário especial chamado "root": o administrador do sistema, com poder total de vida e morte sobre a máquina. Se você trabalha no seu próprio PC, você será root também. Trabalhar como root é perigoso: qualquer erro pode danificar seriamente ou mesmo destruir o sistema, como no DOS/Windows. Não trabalhe como root a menos que absolutamente necessário; grande parte da complexividade do Linux deve-se a sua extrema configurabilidade: virtualmente todo recurso e todo aplicativo pode ser personalizado através de um ou mais arquivos de configuração. Complexividade é o preço a pagar pelo poder; redirecionamento e canalização são recursos adicionais no DOS, mas muito mais importantes e poderosos no Linux. Comandos simples podem ser “ligados” para realizar tarefas complexas. Eu sugiro realmente recomendo que você aprenda a usá-los.
O Linux é um bom sistema, você está migrando pra ele do DOS? Bom, mas será que você gostará dele como seu sistema? Alguns provedores adoram o Linux por ser um sistema operacional Ótimo para a Internet/Intranet. Mas e se você usa o Linux num computador caseiro?
Realmente, o Linux (Para quem está migrando do DOS/Windows) é um sistema operacional "difícil". Mas para quem quer se aventurar REALMENTE nesse mundo, o Linux é uma boa para você. Se você for um cara que só quer prontas e o mais simples possível, recomendo não usar o linux, pois você não usará o sistema realmente. Atualmente há métodos que deixam o Linux tão fácil quanto o Windows, mas isso requer primeiro que você saiba preparar estes métodos.
- Instalei o Linux
Você acaba de instalar o Linux, com os pacotes que quis, programas legais, coisas interessantes, criou um usuário pra você (se não, crie agora!), efetuou seu logon com esse usuário, deu o password e agora esta no prompt olhando para a tela neste exato momento, se perguntando: "O que faço agora?"
Calma, vamos agora fazer um "teste", vamos fazer tarefas que você faria no DOS, vamos comparar os dois sistemas, vamos começar vendo o básico de tudo.
Lembre-se que está seção é um apanhamento geral do resto do manual. Você pode encontrar coisas aqui que não encontrara em outras seções. Aqui você vai encontrar o básico de tudo, se quiser mais detalhes, veja também as outras seções deste manual. Com certeza você sairá com muito conhecimento.
Vamos agora aprender coisas simples:
Como sair do Linux. Se você estiver no modo texto (terminal), é só digitar CTRL+ALT+DEL, se você estiver no X-Window, você terá primeiro que digitar CTRL+ALT+BACKSPACE, depois você digita CTRL+ALT+DEL. Nunca reinicie o sistema apenas desligando e ligando-o novamente pelo interruptor da máquina, pois isso pode danificar seu sistema de arquivos, e algumas coisas você fez não vão ser salvas. Isso porque o Linux mantêm os arquivos abertos e/o modificados na memória, e de tempos em tempos ele copia da memória para o disco. Se você desligar ele bruscamente (ou seja, sem nenhum comando) ele não irá ter como fazer isso.
O Linux tem uma coisa que o DOS não tem, permissões, acessos. Você está logado como um usuário normal, e de repente quer executar algum programa ou editar algum arquivo mas quando tenta, dá "Permisson Denied". Quer dizer o que você está tentando não é possível fazer por você como esse usuário. O usuário que pode fazer tudo, eu disse TUDO no sistema, é o root, ou seja, o administrador do sistema.
Você agora está no prompt. Se o prompt terminar em $ você estará como usuário normal, e quando estiver terminando em #, você está como root. Quer obter alguma ajuda sobre algum comando? Tente 'man < comando >'
Quando você vê a sintaxe do comando, você terá que saber que:
Na sintaxe do comando:
tar -tf < file.tar > [> redir_file]<
o < ... > significa uma coisa essencial ao comando
o ( ... ) significa uma coisa opcional
No exemplo acima, "file.tar" tem que ser identificado, e "> redir_file" é opcional.
- Características dos Arquivos
>
No DOS, os arquivos são de forma 8.3, ou seja, não podem passar de 8digitos.3digitos. Um exemplo: NOTENOUG.TXT. No Linux, se você instalou o Linux usando uma partição ext2 ou umsdos, você pode fazer melhor, pode colocar nomes de arquivos longos (no máximo 255 caracteres). Um exemplo de arquivo que o Linux pode fazer e o DOS não pode: Este_é.um.arquivo.MUITO_grande
No DOS, os caracteres MAIÚSCULOS e minúsculos são tratados da mesma forma. No Linux, eles são completamente diferentes, exemplo: ARQUIVO.tar.gz e arquivo.tar.gz são dois arquivos diferentes, ls é um comando e LS é um erro.
No Linux não existe extensões .EXE, .COM especial para programas como o DOS,
os programas executáveis no Linux são marcados com um asterisco no final do arquivo.
Por exemplo:
$ ls
cartinha cindy.jpg pine* Sou_um_dir/ shell_script* old~
Os arquivos cjpg* e my_1st_script* são executáveis. No DOS, arquivos de backup terminam com extensão .BAK, no linux, eles terminam com um ~ (tio). No Linux, os arquivos que começam com um ponto são considerados ocultos. Por exemplo: o arquivo .eu.sou.um.arquivo.oculto não é mostrado com um comando ls normal;
- Características de Comandos
Quando usado o comando more, pressione SPACE para ler o arquivo, q ou CTRL-C para sair, less é melhor e deixa que você use as setas do teclado.
Não há UNDELETE, então pense duas vezes antes de apagar alguma coisa;
Adicionando aos < > >> do DOS, o Linux tem 2> para redirecionar mensagens de erro (stderr); 2>&1 redireciona srderr para stdout, enquanto 1>&2 redireciona stdout para stderr;
O Linux tem mais um wildcardL o []. Use [abc]* mostra arquivos começando com a, b, c; *[I-N,1,2,3] mostra arquivos terminando com I,J,K,L,M,N,1,2,3;
Não existe um DOS RENAME; para isso se útiliza mv *.xxx *.yyy;
Use cp -i e mv -i para ser avisado quando um arquivo está para ser sobrescrito.
- Características de Multitarefa/P>
O Linux é um sistema multitarefa, por isso, ele pode ser acessado por vários consoles ao mesmo tempo, onde cada console você se loga com algum usuário, ele é multi-tarefa assim como pode ser rodado vários programas ao mesmo tempo. Para mudar o console do 1 a 6, útilize:
ALT+N (Onde N é o número do console)
Exemplo:
ALT+F1, ALT+F2, ALT+F3, ALT+F4, ALT+F5, ALT+F6
Agora você pode ir para o próximo console e o antecedente com:
ALT+DIREITA (Vai pra 1 console A FRENTE)
ALT+ESQUERDA (Vai pra 1 console ATRÁS)
- Características de Diretó;rios
Não existe uma letra correspondente ao driver. O Linux contém somente uma raiz, representado por "/". Outras "abreviações": "~" (Diretório Home do Usuário); ".." (Diretório Anterior); "." (Diretório Atual).
Segue abaixo uma lista com os comandos de prompt básicos do Linux, seguidos de uma breve explicação. Para maiores informações sobre um comando, execute:
# man (nome do comando)
Arquivos Compactados
Para a descompactação de Arquivos RPM, você tem as seguintes opções:
rpm -q < arquivo.rpm > - Verifica o componente instalado
rpm -ivh < arquivo.rpm > - Instala novo componente
rpm -Uvh < arquivo.rpm > - Atualiza o componente (U maiúsculo)
Para arquivos compactados em .TGZ, .TAR.GZ, .TAR, .GZ, .TAR.BZ2, .BZ2:
TGZ - tar zpvfx < arquivo.tgz >
TAR.GZ - tar zpvfx < arquivo.tar.gz >
TAR - tar pvfx < arquivo.tar >
GZ - gzip -d < arquivo.gz >
TAR.BZ2 - tar ypvfx < arquivo.tar.bz2 >
BZ2 - bunzip2 < arquivo.bz2 >
- Executando um Programa ou Processo em SSegundo Plano (Background):
Comando&
Se
você quer executar comandos em background (escondido, no
fundo), você digita o
comando e termina com o caractere &, exemplo:
find
/ -name linux -print &
at - Programação de Execução de Programas e Tarefas
at hora [mês dia] [diasemana] [semana] [arquivo ou comando]
Por exemplo, se eu quiser executar o comando logout às
20 horas, eu faço:
at
20 logout
Isso é útil também para programar a
desconexão com a Internet. Você deixa fazendo download,
e antes de ir dormir um sono tranqüilo, programa para
desconectar as 6 horas da manhã:
at
6 ppp-off
cat - Exibe o conteúdo de um Arquivo ou Direciona-o para outro.
cat [arquivo]
É o mesmo que type no DOS. Por exemplo, se eu quiser mostrar o conteúdo de
/home/hugo/contato, eu digito:
cat
/home/hugo/contato
Aparecerá
o conteúdo do arquivo contato:
HugoCisneiros
hugo@netdados.com.br
http://www.netdados.com.br/tlm/
-
Este
comando pode também servir de direcionador para outro
arquivo. Indicadores são usados para isso:
Indicador
">" - faz uma cópia, exemplo:
cat
contato1 > contato2
Indicador
">>" - Acrescenta um arquivo ao outro, exemplo:
cat
contato1 >> contato2
O cat pode fazer coisas que você nem imagina, como
tocar sons! Isso mesmo! Mas como ele faz isso? Simples, ele direciona
o arquivo som para um dispositivo de audio, exemplo:
cat
dingombel.wav > /dev/dsp1
Se o dispositivo /dev/dsp1 estiver funcionando corretamente, ele vai tocar o dingombel.wav.
cd - Indo em Diretórios
cd
< nome do diretório >
Este comando acima mudará o diretório atual de onde o usuário está. É igual ao DOS. O Linux tem como abreviações de diretórios para a facilitação, estes:
"."
- Diretório atual
".."t; - Diretório
anterior
"~" - Diretório home
Por exemplo, se eu quero ir para meu home, faço o
seguinte:
$
pwd
/usr/games/lizards
$ cd ~
$ pwd
/home/hugo
Ou seja, eu estava no diretório /usr/games/lizards, e com um simples cd para o diretório ~, fui para no meu home (/home/hugo). Quando você deseja ir para um diretório
que está na raiz diretamente, você usa o /
antes, exemplo:
$
pwd
/usr/local/kde
$ cd /etc/rc.d
$ pwd
/etc/rc.d
Eu
estava no diretório /usr/local/kde e quis ir para o diretório
/etc/rc.d que estava na raiz.
ls - Listar Arquivos
Nem precisamos falar né?
Este comando lista arquivos.
Também temos os atributos, que
são:
-l |
Lista os arquivos em formato detalhado, com bytes, links, diretorio, dono, grupo, permissões |
-a |
Lista os arquivos que estão ocultos também, que é os que tem um ponto (.) antes do nome |
-c |
Lista a hora e data da última modificação |
-p |
Identifica diretórios com a / |
-r |
Exibe a listagem inversa |
-s |
Exibe o tamanho em blocos de 1024 bytes |
-R |
Exibe subdiretórios encontrados |
Podemos também usar no ls os wildcards, ou seja, caracteres que substituem
outros... exemplo: eu quero listar todos os diretórios
que têm a extensão .txt, faço o seguinte:
ls
*.txt
O WildCard é o *, que representa qualquer coisa
.txt.
Existem outros tipos de wildcard, outro é o ponto de
interrogação (?), que substitui apenas 1 caractere,
exemplo:
ls manual?.txt
Irá aparecer todos os arquivos que tiverem começando
com manual, seguido de um caractere, e finalizando com .txt,
exemplo:
manual1.txt
manual2.txt
manual3.txt
...
Existe outro wildcard, que envolve os colchetes. Por exemplo:
ls
manual[3-7].txt
Lista
todos os arquivos que tiverem como manual?.txt, onde o ? pode ser
substituído por 3, 4, 5, 6 e 7.
ln – Usando link para ligar arquivos
ln arquivo1 arquivo2
[arquivo3 ... ]
Esse
comando permite você criar um link físico com outro
arquivo, por exemplo, eu tenho o arquivo "brasil.doc", e
quero “linkar” ele fisicamente para "brasil.bckp.doc",
eu faço:
ln
brasil.doc brasil.bckp.doc
Agora
este comando é mais usado para gerar links simbólicos,
ou seja, que se comportam como arquivo, mas são apenas
redicionadores que mandam seu comando para outro arquivo, por
exemplo:
ln
-s /manual /home/linux-man
Este
comando criará o /home/linux-man, que aparecerá em azul
claro (nos ls coloridos), se você der um "ls -l" você
verá que o arquivo /home/linux-man está apontando para
/manual, se você ir para o /home/linux-man, você na
verdade está no /manual, mas como é um link, não
há diferença, só o nome do diretório.
cp - Copiando Arquivos
cp [-?] arquivo1
arquivo2
O comando cp copia arquivos e diretórios,
igual ao comando copy do DOS.
Também tem parâmetros
para ele, esses são:
-i |
Modo interativo, ou seja, se o arquivo2 já existir, ele pergunta se você quer sobrescrever o arquivo ou não. |
-R |
Cópia Recursiva. Copia os arquivos mais os seus subdiretórios. |
Exemplos:
Quero copiar brasil.txt para
livro.txt, com a opção de modo interativo.
cp
-i brasil.txt livro.txt
'livro.txt' allready exists.
Overwrite?
Como o arquivo livro.txt
já existia ele pergunta se quer sobrescrever, responda y(sim)
ou n(não).
Mas agora eu quero copiar o diretório
/usr com tudo dentro (até seus subdiretórios) para
/home/hugo/backup/usr, faço o seguinte:
cp
-R /usr /home/hugo/backup
crontab - Programando Tarefas e Execuções Periódicos
crontab [-?] [nome_usuário] [arquivo]
Esse comando permite que se programem tarefas e execuções fixas a serem executadas em qualquer período de data, sistematicamente, uma ou várias tarefas/programas.
Parâmetros:
-l |
Exibe o crontab do usuário atual |
-r |
Remove o crontab do usuário atual |
Exemplo:
crontab arquivo |
Cria novo crontab |
Crontab -r |
Remove o crontab |
Crontab –l |
Lista o crontab |
Formato do Arquivo (/usr/spool/cron/crontabs):
Uma ou várias linhas de seis campos, separados por tab.
1o.
Minuto
2o. Hora
3o. Dia do mês
4o. Mês
5o.
Dia da semana (a semana começa no 0=domingo)
6o.
Tarefa/script a ser executado
Assim:
0 4 * * * who
1,21,41 * * * * echo "hi YOU!"
30 4 1 * 1 /sbin/lilo
file - Indicando qual tipo de Arquivo
file < nome_do_arquivo_ou_diretório >
Este comando identifica o tipo de arquivo ou diretório
indicado pelo usuário conforme os padrões do sistema
operacional. Há vários tipos de retorno, mas os
principais tipos de tipos de arquivos retornados são esses:
archive commands text
ASCII text C Program Source
directory data
Um exemplo disso:
$
file linux.txt
ASCII Text
find - Localizando Arquivos e Diretórios
find [-?] [dados] [-?] Este comando localiza arquivos e diretórios. Existem parâmetros para ele funcionar, eles são:
-name |
Parâmetro seguido do arquivo que você deseja procurar |
|
Imprime na tela o resultado |
-exec cmd |
Executa um comando, onde cmd é este comando. |
-ok |
Igual ao -exec cmd, mas o find pergunta se quer executar o comando. |
Exemplo:
find
-name man*.txt -print
O
comando vai procurar pelo sistema todas os arquivos e diretórios
que começarem com man e terminarem com .txt. Observe que usei
um wildcard.
finger - Informação sobre um Usuário
Informa detalhadamente os usuários logados no
sistema. E também informa detalhadamente informações
sobre algum usuário específico logado no
sistema.
Exemplo:
finger
Vai mostrar os usuários logados, o nome, o
console(tty) em que estão. Agora se por exemplo, o usuário
'linuxer' estiver logado, se você der:
finger
linuxer
O comando dará a você informações detalhadas sobre o usuário linuxer, como nome real, tipo de shell, último login, diretório home.
grep - Pesquisando Textos em Arquivos
grep [-?] < texto_a_procurar > [arquivos]
Esse comando procura o "" dentro de cada
arquivo e mostra o arquivo. Existem parâmetros para este
comando:
-n |
Antes da linha, vem o número da linha no arquivo |
-c |
Imprime na tela somente o total de linhas comparadas |
-v |
Todas menos a linha comparada é mostrada na tela |
-i |
Ignore a diferença entre maiúsculas e minúsculas |
-l |
Exibe o nome do arquivo que tem o texto que se quer procurar |
kill - Cancelando um Processo
kill [-?] < PID >
O comando kill mata um processo em execução que está representado por um número de identificação chamado PID, que por sua vez pode ser obtido através do comando 'ps'. Estes são os parâmetros para esse comando:
-1 |
Para trabalhar em mono-usuário |
-3 |
Não permitir futuros logins |
-9 |
Cancela o processo sem fechar os arquivos abertos |
-15 |
Cancela o processo fechando os arquivos |
Exemplo,
depois de dar um ps, eu achei o pid 267 que está executando o
netscape. O
netscape travou ou está lento demais, então
eu forço o fechamento do netscape assim:
kill
-9 267
Isso
fechará o Netscape.
man - Manuais On-Line de Ajuda dos Comandos
man < comando >
Abre um manual on-line com tudo sobre cada comando.
Ótimo para quem quer saber alguma coisa sobre tal comando, ou
quer tirar alguma dúvida de como fazer algo. Para sair do
manual On-Line, digita-se SHIFT+Q.
mkdir - Criação de Diretório
mkdir <nome do diretório>
Cria um diretório, igual ao md do DOS.
Exemplo:
mkdir
/internet
Este comando criará o diretório
internet na raiz.
mv - Movendo ou Renomeando Arquivos e Diretórios
mv arquivo1 arquivo2
Este comando pode mover um arquivo, ou até mesmo
renomeá-lo. O parâmetro -i é o interativo, igual
ao do comando cp, caso já exista o arquivo destino, ele
pergunta se quer sobrescrever. Por exemplo, se eu quero renomear o
industria.txt para fabrica.txt eu faço:
mv
industria.txt fabrica.txt
Se eu quiser mover o
industria.txt para /home/hugo com o mesmo nome, faço:
mv
industria.txt /home/hugo
passwd - Colocando ou Alterando Senha de Usuário
passwd
[login]
Este comando muda a senha de [login], caso não
é especificado o [login], usa-se o usuário atual.
Exemplo:
passwd
Changing
password for hugo
New password:
$
Neste caso, eu ainda não tinha senha, e só
queria adicionar uma, caso já tenha, para mudar:
$
passwd
Changing password for hugo
Old password:
New
password:
Re-enter new password:
Atenção: É recomendável útilizar senhas com letras maiúsculas e minúsculas e número, por motivos de segurança. Caso você não coloque, o comando avisará que a senha está ruim, mas se você insistir, ele aceita.
ps - Listando processos
ps
[-?]
Quando um programa é executado no sistema, ele recebe um número de identificação, o chamado PID. Este comando lista esses processos executados, e apresenta o PID. Além do PID, há o UID, PPID, C, STIME, TIME, S, PRI, ADDR, TTY, CMD.
A seguir uma tabela com definições:
Termo |
Definição |
PID |
Número de identificação do processo executado |
UID |
Identificação do UID de quem rodou o processo |
PPID |
Identificação do processo pai |
C |
Quanto tempo foi usado o CPU recentemente |
STIME |
Hora do início do processo |
TIME |
Tenpo total do CPU gasto pelo processo |
S |
Status do processo (ver nota abaixo) |
PRI |
A prioridade do processo executado |
ADDR |
Endereço de memória ou da área de swap para um processo |
TTY |
Identificação do terminal do processo |
CMD |
O nome do comando |
Nota: O Status do processo é identificado por
letras, aqui segue uma tabela com as definições de cada
letra:
Letra |
Definição |
0 |
Não existente |
S |
Descansando, fora de funcionamento (Sleeping) |
R |
Rodando (Running) |
I |
Intermediando (Intermediate) |
Z |
Terminando(Terminate) |
T |
Parado (Stopped) |
P |
Esperando (Waiting) |
Existe também parâmetros para o comando
os, esses são:
Parâmetro |
Definição |
-e |
Informa sobre todos os processos do sistema |
-d |
Informa os processos, com exceção de processos mestres |
-a |
Informa os processos, com exceção de mestres e referentes ao terminal |
-t?? |
Informa os processos do terminal dado |
-p?? |
Informa os processos fornecidos |
-u?? |
Informa os processos de um usuário fornecido |
-l |
Informa detalhadamente os processos |
-f |
Lista completa e informativa dos processos |
Alguns exemplos são:
ps
-e
Exibbe os processos junto com sua
identificação
ps
-u < login >
Exibe
informações do processo do usuário < login
>
ps
-aux
Exxibe todas informações
sobre todos os processos executados.
pwd - Exibindo Diretório Atual
Mostra o caminho completo onde o usuário está
atualmente. Exemplo:
$
pwd
/home/brasil
$
rm - Apagando Arquivos e Diretórios
rm
[-r] < arquivo_ou_diretório >
Este
arquivo apaga definitivamente o arquivo ou diretório.
Exemplo:
rm
manual.pwd
Para apagar um diretório com conteúdo
dentro, usa-se o parâmetro -r, assim:
rm
-r /temporario_lixo
Obs.: VVocê pode colocar
múltiplos arquivos para apagar, por exemplo:
rm
manual1.pwd manual2.pwd manual3.pwd
Vai apagar ambos os
três arquivos.
rmdir - Apagando Diretório vazio
Nem precisa-se comentar, apaga-se um diretório
que não esteja vazio. Exemplo:
rmdir
/lixo-vazio
shutdown - Desativando o Sistema
shutdown
[-?] minutos
Esse comando serve
para você finalizar o sistema operacional. Parâmetros:
-k |
Executa uma simulação do shutdown, não desliga realmente. |
-r |
Executa o reboot na máquina |
-n |
Não sincroniza o sistema, desativa forçadamente. |
-f |
Faz um reboot rápido |
-c |
Cancela um shutdown em andamento. |
Outros comandos e suas definições
Comando |
Descrição |
More |
Exibe o conteúdo de um arquivo pagina a pagina. |
Clear |
Limpa a tela, mesmo que 'cls' no DOS |
who |
Mostra quem está na maquina no momento |
whoami |
Mostra quem você é |
df |
mostra o espaço usado, livre e a capacidade das partições do HD |
free |
exibe a memoria livre, a usada, e o buffers da memoria RAM |
exit e logout |
sai da sessao atual |
tar zpvfx arquivo |
Descompacta arquivos "tagged"(.tar.gz, .tgz, etc) |
gunzip -d arquivo |
Descompacta arquivos "gziped"(.gz): |
awk |
Procura por um modelo a partir de um arquivo. |
bdiff |
Compara dois arquivos grandes. |
bfs |
Procura um arquivo grande. |
cal |
Exibe um calendario. |
cc |
Compilador C. |
chgrp |
Muda o titulo de um grupo de arquivos. |
cmp |
Compara dois arquivos; mostra a localizacao (linha e byte) da primeira diferenca entre eles. |
comm |
Compara dois arquivos para determinar quais linhas sao comuns entre eles. |
cu |
Chamar outro sistema UNIX. |
date |
Retorna a data e a hora. |
diff |
Exibe as diferencas entre dois arquivos ou diretorios. |
diff3 |
Exibe as diferencas entre tres arquivos ou diretorios. |
du |
Relatorio no uso do sistema de arquivos. |
echo |
Exibe seus argumentos. |
ed |
Editor de texto. |
ex |
Editor de texto. |
expr |
Avalia seus argumentos quando geralmente e uma formula matematica. |
f77 |
Compilador FORTRAN |
fdformat |
Inicializa um floppy disk |
help |
Ajuda da shell atual |
lpr |
Copia um arquivo para a linha de impressora |
|
Usado para receber ou enviar e-mail. |
nroff |
Usado para formatar textos |
sleep |
Causa um processo para tornar-se inativo por uma duracao de tempo especifica |
sort |
Escolher e unir um ou mais arquivos |
spell |
Procurar erros de ortografia num arquivo |
split |
Dividir um arquivo |
stty |
Exibir ou escolher parametros do terminal |
tail |
Exibir o fim de um arquivo |
tset |
Escolher o tipo de terminal |
umask |
Permite que o usuário especifique uma nova criacao de camuflagem |
uniq |
Compara dois arquivos. Procura e exibe em linhas o que e incomparavel em um arquivo. |
uucp |
Execução UNIX-para-UNIX |
wc |
Exibe detalhes no tamanho do arquivo |
write |
Usado para mandar mensagens para outro usuário |
Bibliografia: Anunciação, Heverton. Linux para Redes Brasileiras
Antes de pedir alguma ajuda a alguém, porque você não olha num manual? Mas como? Onde? Se você está com qualquer dúvida sobre algum comando, digite simplesmente:
# man (nome do comando)
Se o manual existir, ele será mostrado, e seus problemas acabarão. Para sair dos manuais, aperte a tecla Q. Geralmente, os manuais online tiram a maioria de suas dúvidas. Não deixe de consultá-los.
Outra forma de conseguir ajuda sobre realizar alguma atividade (como formatar um disquete) mas você não conhece o nome do comando, digite:
# apropos (termo procurado)
No caso seria algo como: “disk” ou “format” (em inglês!). A saída do comando exibirá uma lista de palavras associada ao termo.
Ainda assim se você não conseguir nada, peça ao sistema que atualize a sua base de dados com o comando:
# makewhatis
E tente executar o apropos novamente. Não se assuste se o sistema demorar muito para lhe devolver o prompt. As vezes a atualização demora (depende do processador, memória, etc).
2.3.4 O que são dispositivos?
Um dispositivo é todo o componente de hardware, e até do sistema operacional. Um dispositivo é "algo especial" que é compartilhado com o Kernel, ou seja, um exemplo de dispositivo são as impressoras, CD-ROMs, modems, portas, mouse, HDs, etc.
No Linux, os dispositivos físicos são tratados como arquivos. Estes arquivos são um tipo especial no sistema de arquivos e se encontram no diretório /dev. Se você der um ls neste diretório, verá que existe um pouquínho de arquivos (Bota pouquínho nisso =). Cada arquivo neste diretório corresponderá a um dispositivo de acordo com o seu tipo.
Lembra quando você acessava o drive C: e tal? No Linux não existe isso! Vai ser algum dispositivo no lugar...
Você vai usar isso o tempo todo, porque você
vai mexer com mouse, com impressora, IDEs, SCSI's, etc. Então
aqui vai alguns arquivos do /dev e seus respectivos dispositivos:
/dev/hdxx
Aqui é correspondente das interfaces IDEs, ou seja, tudo que tiver conectado nos cabos IDEs :) Exemplos, podemos citar HD's e CD-ROM's. O xx significa qual IDE, onde o primeiro x corresponde a qual IDE, e o segundo x (opcional) corresponde a partição.
Não entendeu? Tente entender agora com isto:
Dispositivo |
Descrição |
/dev/hda |
IDE Primária Master |
/dev/hda1 |
Partição 1 da IDE Primária Master |
/dev/hda2 |
Partição 2 da IDE Primária Master |
/dev/hdb |
IDE Primária Slave |
/dev/hdb1 |
Partição 1 da IDE Primária Slave |
/dev/hdb2 |
Partição 2 da IDE Primária Slave |
/dev/hdc |
IDE Secundária Master |
/dev/hdc1 |
Partição 1 da IDE Secundária Master |
/dev/hdc2 |
Partição 2 da IDE Secundária Master |
/dev/hdd |
IDE Secudária Slave |
/dev/hdd1 |
Partição 1 da IDE Secundária Slave |
/dev/hdd2 |
Partição 2 da IDE Secundária Slave |
Perceba que a cada hdx vai até os números
2, mas não é! Pode ir muito longe!
Dependendo de qual outras partições podem estar neste dispositivo! Pode ser 3 ou 4 por exemplo! Nunca se esqueça disso!
/dev/fdx
Aqui é o dispositivo equivalente ao drive de disquete! Onde o x corresponde a qual driver. Caso você tenha 1 drive, esse drive vai ser /dev/fd0, se tiver 2 drives, o primeiro será /dev/fd0 e o segundo /dev/fd1, e por aí vai.
/dev/ttyN
Quando você efetua o logon no seu Linux (sim, quando entra com o login e password), você acaba de se logar nesse terminal! Ou seja, um terminal serve para você se logar e usar uma shell (interpretador de comandos)... o /dev/ttyN corresponde a cada terminal! Onde N você substitui pelo número do terminal (são dezenas se quiser). Pode ser /dev/tty1 (Terminal 1), /dev/tty3 (Terminal 3), /dev/tty8 (Terminal 8) e por aí vai... até você enjoar.
/dev/ttySx
Portas seriais! No novo kernel 2.2.x, estas portas seriais
correspondem ao modem, ao mouse, etc. Assim:
Dispositivo |
Descrição |
/dev/ttyS0 |
COM1 no DOS/Windows |
/dev/ttyS1 |
COM2 no DOS/Windows |
/dev/ttyS2 |
COM3 no DOS/Windows |
/dev/ttyS3 |
COM4 no DOS/Windows |
Agora se você usa um kernel velho de versão
anterior a 2.2.x, você vai ter as
seguintes variações:
Dispositivo |
Descrição |
/dev/cua0 |
COM1 para o Modem |
/dev/cua1 |
COM2 para o Modem |
/dev/cua2 |
COM3 para o Modem |
/dev/cua3 |
COM4 para o Modem |
/dev/lpN
Corresponde a porta da impressora ou porta de um serviço paralelo. N é o número correspondente a porta... 0 = LPT1 por exemplo, e por aí vai.
/dev/plipN
Esse dispositivo corresponde a uma conexão de cabo paralelo. O N será o número correspondente a porta, como no exemplo anterior.
/dev/console
Este é um dispositivo especial, simbolizando os consoles (terminais não-gráficos).
/dev/null
Este é um dispositivo nulo! Ou seja, tudo que você mandar ou se referir a ele, será
nulo! Será Anulado!
Bem, os dispositivos são muitos! Explore, use, e
abuse deles!
Após essa aula de dispositivos, você já poderá entender isso melhor. Para usar um floppy disk, isto é, um disco flexível, você terá que útilizar o comando 'mount'. Você terá que ter o drive e o device respectivamente (fd0, fd1, fd2, etc). Então você deverá digitar:
mount /dev/fd0 /diretório_ao_disco_ser_acessado
Um exemplo:
mount /dev/fd0 /mnt/disk
Isto fará com que você acesse o disquete que está no drive atualmente.
Quando você quiser retirar o disco geralmente deve-se 'desmontá-lo' primeiro. Digite:
umount /dev/fd0
Dica: Você pode também criar um atalho (alias), por exemplo “diskon” (para ativar) e “diskoff” (para desativar). Então para melhor utilização, coloque este arquivo em um diretório PATH, ou então coloque o PATH no diretório onde você quiser colocar os alias. |
São muitos! Enquanto eu escrevo este texto alguém do outro lado do mundo já está compilando um novo programa. Vão desde browsers, editores de texto, planilhas eletrônicas, editores gráficos, bancos de dados, servidores, etc. Praticamente quase tudo o que você precisar já existe. Consulte o cdrom da sua distribuição e veja o que você encontra. Procurar pela Internet vai lhe oferecer opções ainda maiores! Experimente http://www.freshmeat.net
- Programas em fontes
Seguindo a filosofia do próprio sistema Linux, a maioria de seus aplicativos vêm com código aberto. Grande parte dos programas que você pega na net com sufixo .tar.gz são somente os arquivos fonte, que vêm prontos pra ser compilados. Uma compilação tranforma as fontes em formatos binários, ou seja, que possam ser executados como um programa pelos usuários. Mas aí você pergunta, qual a vantagem da compilação de programas? Bem, ou o seu sistema pode precisar desse método (como no Slackware, na maioria das vezes) ou você pode incluir suportes adicionais (ou os dois). Isso contribui pra deixar o programa mais leve, ou sem funções que você não vai usar.
Depois de descompactar o arquivo .tar.gz, basta entrar no diretório dele e ler o arquivo README ou INSTALL (ou ambos) e obter mais instrunções detalhadas de como instalar o programa. Veja teoricamente como funciona a compilação típica de um programa em Linux :
1. O configure
O programa vem com um script geralmente chamado de "configure" . A função dele é saber quais componentes necessários que você tem para compilar o programa. Se você não tiver algum que seja essencial, o script vai ser interrompido e se você quiser realmente o
programa, vai ter que conseguir esse componente necessário. Outros são opcionais, e não
vão interromper. Se tudo der certo, esse script criará um arquivo (ou vários) chamado Makefile, que contêm os comandos de compilação. Você também pode incluir, se o programa permitir, parâmetros especiais com o configure, quando você quer suporte específico para alguma coisa.
2. O GNU make
O make somente funcionará se você tiver um arquivo Makefile (que o configure criou) no diretório atual, que têm as instrunções e os comandos para a compilação do programa.
Então, para continuar basta digitar "make" na linha de comando para iniciar a compilação.
Note que você deve ter o programa make instalado ... ele vem em todas as distribuições Linux.
3. O make install
Depois do programa ter compilado, os binários executáveis ficarão armazenados no diretório que voce descompactou as fontes. Para instalar o programa em locais mais adequados do computador, usa-se novamente o GNU Make acrescentado da opção "install" - "make install". E pronto ! O programa já estará instalado e pronto pra ser usado.
Essa é a teoria geral para a maioria dos programas, mas SEMPRE leia o arquivo README, porque o programa pode precisar de opcões especiais ou outros procedimentos alternativos.
Veja um resumo de como se procede geralmente :
root@valhalla.foobar# tar zvfx arquivo.tar.gz
root@valhalla.foobar# cd diretorio.que.o.arquivo.criou
root@valhalla.foobar# ./configure
root@valhalla.foobar# make
root@valhalla.foobar# make install
Sempre tenha certeza de que erros não ocorreram.
DICA : Se você desejar desinstalar um programa instalado a partir de um comando "make install", não se desespere que tem solução. Basta ir no diretório das fontes e digitar "make uninstall". Para dar certo, os arquivos Makefile tem que existir, o que implica que o configure deve ser executado.
OBS : Os programas também podem vir em .tar.gz, mas pré-compilados. Um bom exemplo desse tipo de empacotamento sao os pacotes do Linux Slackware, em formato .tgz (na verdade .tgz e exatamente a mesma coisa de .tar.gz). Para instalar um pacote no Slackware, basta colocar o pacote na raiz / do sistema, e digitar o comando de descompactamento.
Cada componente vai para o seu devido lugar. Ou uma alternativa seria usar o pkgtool do Slackware (digite pkgtool na linha de comando)
- Como instalar, usar e gerenciar programmas RPM
Esta é hoje uma das mais avançadas tecnologias de empacotamento de arquivos em
sistemas Linux. Se você usa Red Hat, sempre prefira os arquivos RPM (RedHat Package
Manager) do que os .tar.gz de um mesmo programa, pois eles vão poupar muito trabalho.
Os arquivos RPM já vêm pré-compilados. Eles já vem com todos os suportes possíveis, mas isso não é uma grande desvantagem. O Red Hat é totalmente baseado nessa tecnologia, até a instalação dele é feita com os RPMs. Para gerenciar esses arquivos, existem as ferramentas como o Glint (modo gráfico) e rpm (modo texto). Para instalar novos pacotes, acho mais prático o rpm texto mas já no caso de fazer uma limpeza no sistema, o Glint certamente é melhor.
Hoje muitas distribuições adotaram o gerenciador de pacotes RPM: Conectiva, SuSe, Mandrake, TechLinux são alguns exemplos.
Veja como instalar programas em rpm usando o modo texto :
root@valhalla.foobar# rpm -ivh arquivo.rpm
(instala um programa empacotado)
root@valhalla.foobar# rpm -Uvh arquivo.rpm
(instala um programa atualizando se existir uma versão anterior)
Veja como saber se tal programa que foi instalado com o RPM está em seu sistema Red Hat:
root@valhalla.foobar# rpm -qa | grep -i palavra.chave
Exemplo : Quero saber se existe algum programa imlib no sistema. Mesmo sem saber a
versão do programa, é possível saber se ele está instalado com uma palavra chave. Vou
tentar "imlib".
root@valhalla.foobar# rpm -qa | grep -i imlib
imlib-cfgeditor-1.9.4-1
imlib-1.9.4-1
imlib-devel-1.9.4-1
Esse foi o resultado que eu obti. O imlib e alguns de seus componentes realmente estão instalados no computador. Não se esqueça de usar a opção -i para o comando grep: alguns pacotes estão com o nome em maiúsculo.
Algumas vezes (muitas!) você vai querer instalar um pacote, mas encontra problemas de dependências. Muitos programas usam bibliotecas compartilhadas, por exemplo, mas não vêm com essas bibliotecas: eles tem como dependência que um outro pacote seja instalado. A mensagem de erro, infelizmente, só acusa que falta um arquivo para resolver a dependência, e não o nome do pacote. Quando o nome do arquivo é associado ao nome de um pacote, tudo bem. Mas que e quando não o é? Hora de usar o poder de pesquisa do rpm.
A opção -q no comando rpm permite pesquisas sobre os pacotes. Você usa a opção -q mais alguma outra opção, como -a (que você já conheceu). Veja outras interessantes:
-i : dá as informaçõ;es do pacote, como nome do pacote, versão, criação, e principalmente, o que o pacote oferece de facilidades;
-l: lista os arquivos do pacote.
-p: essa chave deve ser usada para um paccote que ainda não foi instalado no seu sistema.
root@valhalla.foobar# rpm -qpli *.rpm > | grep tux > /tmp/dependencias
Esse comando fará que seja criada uma lista com todos os arquivos existentes dentro dos pacotes instalados, e essas lista é filtrada pelo grep procurando pela palavra tux (poderia ser qualquer uma). Depois é criado um arquivo texto chamado dependências, onde você poderá consultar mais tarde.
Para desinstalar um pacote instalado :
root@valhalla.foobar# rpm -e pacote
(não é necessária nem a versão nem o sufixo rpm)
OBS : Note que não é necessário incluir a versão do programa, a não ser que duas versões estejam instaladas. Aí sim você vai dizer a versão para não confundir.
Existem também as opções --force ou --nodeps (geralmente as duas mais utilizaadas). A chave --nodeps serve para forçar a instalação do programa, mesmo se ele precisar de outros para funcionar. --force força uma reinstalação, por exemplo. Para usá-las basta incluir o flag junto com o comando que você quer.
Exemplo : Você quer desinstalar o pacote, mas quando digita o comando rpm -e pacote, o sistema informa que este programa é necessário para o funcionamento de mais alguns. Mas você quer remove-lo de qualquer forma :
root@valhalla.foobar# rpm -e --nodeps pacote
Ou deseja reinstalar um pacote porque apagou um arquivo acidentalmente :
root@valhalla.foobar# rpm -ivh --force pacote.rpm
- Como instalar e gerenciar pacotes usanddo as ferramentas do Debian
O objetivo central do Linux Manual é ser genérico: uma vez que não foi escolhida nenhuma distribuição para ser explorada a fundo, tento mostrar aqui algo que possa ser aplicado à qualquer distribuição. Isso não é muito difícil no sentido que você queira apenas executar uma função ou outra. Mas se tiver que administrar uma distribuição diferente da qual você esteja acostumado, você precisará gastar algum tempo para aprender os detalhes.
Há algum tempo atrás eu resolvi incluir ao menos os detalhes do gerenciamento do pacote do Debian/GNU. Não é uma distribuição muito abordada em documentações e artigos, e pessoalmente eu considero isso uma injustiça.
Se você precisa de documentação em português exclusivamente sobre Debian, considere visitar o site http://debian-br.cipsga.org.br. Este site foi criado por um grupo de brasileiros que tomaram como trabalho traduzir documentações e programados do Debian, além de criar documentações próprias. Vale a pena conferir.
Os pacotes nesta distribuição possuem o seguinte formato:
[nome do pacote]_[versão do pacote] - [release do pacote].deb
Um exemplo (fictício) poderia ser então:
apache_1.32-5.deb
Assim como os pacotes rpm, os pacotes deb possuem informações sobre o programa e os arquivos dos quais dependem., assim como um checksum, que ajuda proteger os pacotes quanto a vírus e outras alterações maliciosas que possam sofrer.
Claro, esses detalhes também fazem parte dos outros tipos de gerenciamento, mas o Debian/GNU faz mais que isso! O gerenciamento permite a resolução de dependências de forma automática, o que as distribuições baseadas em RPM, por exemplo, não fazem. Atualmente, a distribuição Conectiva copiou essa funcionalidade (mais precisamente, a do comando apt-get), e logo você poderá ver o porquê.
No Debian temos três ferramentas que ajudam no gerencimento de pacotes:
dpkg
Essa é a ferramenta original do Debian, e é utilizada na linha de comando.
dselect
A ferramenta "gráfica" do Debian. Ela funciona por linha de comando, mas é orientada pelas setas do teclado e algumas letras como função. É bem simples de manipular, sendo basicamente uma interface simplificada para o dpkg.
apt-get
A menina dos olhos do Debian. Funcionando pela linha de comando, o apt-get verifica as dependências de um pacote, pode fazer cópias direto de um cdrom ou então do site ftp do Debian/GNU Linux. Com essas funcionalidades, você poderia por exemplo, programar seu servidor para ser atualizado diariamente, caso um novo pacote esteja disponível, sem que haja qualquer intervenção da sua parte.
O dpkg
O dpkg não deve ser descartado somente pelo fato de existirem o dselect ou o apt-get; ele é lá muito amigável, mas possui funções de pesquisa, como maior exemplo, que não estão disponíveis nas outras ferramentas.
- instalando um pacote
dpkg --install nome_do_pacote.deb
Isso irá funcionar caso as dependências deste pacote estejam resolvidos e o pacote em questão não crie nenhum conflito com algum pacote já instalado. Caso qualquer um destes problemas ocorra, o dpkg irá exibir uma mensagem de erro e irá terminar. No caso, você teria que resolver esses problemas para poder instalar esse pacote.
- removendo o pacote
dpkg --remove nome_do_pacote
>
Isso irá remover o pacote, mas os arquivos de configuração irão permanecer intocados. Se você se sentir particularmente revoltado, você poderá remover tudo com um
dpkg --purge nome_do_pacote
- pesquisando pacotes
Você pode imprir a descrição do pacote executando
dpkg --print-avail nome_do_pacote
Se você quiser pesquisar pacotes conhecidos pela base do sistema, baseados num padrão qualquer, você pode executar
dpkg -l 'padrão'
O padrão pode variar, conforme você quiser. Para ter informações sobre todos os pacotes do Gnome, você pode tentar
dpkg -l 'gnome*'
o asterisco garante que qualquer coisa depois da palavra gnome seja aceita.
As informações obtidas estão descritas abaixo.
Status de seleção: indicam as seleções anteriormente feitas pelo comando dselect. Você poderá receber então as seguintes informações:
Unknow
Indica que o status do pacote é desconhecido.
Install
Indica que o pacote foi marcado para instalação.
Remove
Indica que o pacote foi marcado para remoção.
Purge
Indica que o pacote foi marcado para ter excluído, assim como seus arquivos de configuração.
Status: a situação em que o pacote se encontra.
Not installed
Não instalado
Installed
Instalado
Config-files
Indica que do pacote, só os arquivos de configuração estão presentes (se você não os apagou manualmente).
Unpacked
O pacote foi "desempacotado", ou seja, está em processo de instalação.
Failed-config
O pacote neste caso foi instalado, mas o script de configuração falhou.
Half-installed
Houve uma tentativa de instalação, mas a mesma falhou.
Erro - indica o status de erro do pacote. Segue uma lista abaixo:
None
Não há nenhum erro associado ao pacote.
Hold
A instalação do pacote está "congelada": ele pode não estar nem instalado nem removido.
Reinstallation required
O pacote deve ser reinstalado.
Nome - dá o nome do pacote
Versão - dá a versão do pacote
Descrição - descreve o pacote brevemente; estas descrições estão disponíveis geralmente apenas para pacotes instalados.
O resultado da pesquisa de pacotes pode ser filtrado normalmente usando o comando grep e o more, por exemplo:
dpkg -l padrão | grep '^i' | more
Isso vai filtrar a saída apenas de pacotes marcados como instalados e o comando “more” vai permitir que você tenha pausas para olhar o resultado com calma.
- Obtendo o status de um pacote
Agora para obter o status de um pacote:
dpkg --status nome do pacote
>
- Listando os arquivos de um pacote
Para listar os arquivos que constituem um pacote:
dpkg --listfiles nome do pacote<
O dselect
O dselect nada mais é do que um front-end baseado em caracteres (para ser usado no shell) para acessar as funções do dpkg. Ele simplifica o acesso a essas funções.
Você pode utilizar o dselect apenas digitando seu nome seguido de <ENTER>.
A figura abaixo mostra a tela do dselect e os seis ítens do menu:
O dselect é bastante simples de usar, principalmente se você tem um conhecimento mínimo de inglês1: as opções vem com descrições e o programa oferece sugestões para resolução de problemas. O programa é orientado a caracteres, mas é "visual": você usa as teclas esquerda, direita, para cima e para baixo do teclado para se mover pelo programa. Você não terá que decorar comandos para fazer isso.
Abaixo, as principais funções do dselect; você entra e sai delas pressionando a tecla <ENTER> do teclado:
Access
A partir daonde os pacotes devem ser procurados para instalação
Update
Essa função permite que você atualize a lista de pacotes disponíveis. Necessário toda vez que você mudar de mídia ou o site ftp sofrer modificações (por exemplo).
Select
Nesta opção você terá a opção de selecionar os pacotes para instalação ou remoção.
Install
Este menu permite que o dselect instale os pacotes que você marcou para serem instalados no menu Select.
Config
Alguns pacotes requerem configurações quando são instalados. Essa opção permite resolver essas configurações pendentes.
Remove
Permite que você remova pacotes selecionados.
Quit
Huh! Permite que você sai do dselect.
Instalando os pacotes
Parece fácil não? E é mesmo: você usar cdrom, sites ftp, disquetes, NFS e discos rígidos como fonte para instalação. Depois de selecionar a origem dos pacotes, você pode invocar a opção Update e depois Select para escolher pacotes para instalação.
Na instalação, você verá um menu mostrando os pacotes divididos por seções (como pacotes básicos, de rede, etc). Para cada linha você encontra informações sobre o pacote, e uma descrição sobre o mesmo. Para marcá-lo para instalação, basta mover o cursos até a linha do mesmo e pressionar o botão de "+" (mais) do teclado. Para desmarcar um pacote, use o sinal de "-" (menos).
Muitas vezes um pacote terá dependência de outros para funcionar. Quando você seleciona um pacote com um sinal de +, o dselect verifica dependências e se elas foram resolvidas. Se não forem, ele irá abrir um novo menu lhe explicando como resolver a dependência, e de quebra lhe oferece pacotes "adcionais" e relacionados com o qual você está instalando (por exemplo, você marca o pacote do Postfix para instalação e ele sugere a instalação de um pacote para ajudar a monitoração de logs). Você resolve as dependências marcando os pacotes com o famigerado "+" da mesma forma que fez anteriormente marcando outros pacotes.
Existe ainda uma opção de pesquisa: suponde que você não queira percorrer toda a lista de pacotes para achar o pacote do Apache, você só tem de digitar:
/apache
E para repetir a pesquisa várias vezes, basta pressionar a tecla "\" quantas vezes achar necessário.
Removendo pacotes
Remover pacotes é mais simples que instalar pacotes2, desde que você não esteja quebrando dependências. Aliás, você não terá que pensar muito nesse caso: se você quebrar dependencias, vai existir algo no seu sistema que provavelmente não irá funcionar mais: você terá que manter as coisas como estão.
Selecione e desmarque pacotes para remoção da mesma forma que para instalação usando o sinal de "-". Quando acabar, pressione <ENTER> e marque o menu de Remove, pressionando a tecla <ENTER> novamente.
O apt-get
É aqui que a distribuição Debian se destaca das demais. De forma pioneira, o time de desenvolvedores criaram essa ferramenta que permite um upgrade de versão do Debian (uma instalação inteira!) digitando os míseros comandos:
apt-get upgrade
Depois você pode ir tomar um café.
Configurando o arquivo sources.list
O apt-get em seus arquivos de configuração localizados no diretório /etc/apt. O arquivo source.list possui uma lista de onde os pacotes podem ser obtidos para instalação. Cada linha tem o seuinte formato:
deb uri distribuição componentes
Uri significa universal resource identifier (identificador universal de recurso) que especifica o computador onde o pacte reside, a localição dos pacotes eo protocolo usado para acessar esses pacotes. Ele tem a seguinte forma:
protocolo://host/path
Existem quatro protocolos disponíveis:
cdrom - um drive de cdrom local
file - um arquivo local
http - um servidor web
ftp - um servidor ftp
A parte do host do URI e o par de barras (//) são usados apenas para os protocolos http e ftp pois indicam o nome do host onde estão localizados os pacotes.
A parte do path sempre aparece, com a barra precedendo o mesmo.
Aqui tem alguns exemplos de URI:
cdrom:/cdrom
cdrom:/mnt/cdrom
file:/mnt
file:/debian
http://www.us.debian.org/debian
http://non-usd.debian.org/debian-non-us
ftp://nonus.debian.org/debian-non-us
A parte de distribuição do arquivo source.list especifica o release da distribuição que contem os pacotes. Esses são valores típicos:
stable
O último release estável, ou seja, aquele que se assume ter a menor quantidade de bugs sérios para uso diário.
unstable
O último release instável. Esse release às vezes contem bugs sérios e não deve ser instalado para usuários que precisem de um sistema estável e confiável.
A parte dos componentes do arquivo source.list especifica partes da distribuição que serão acessados. Os valores típicos são:
main
O conjunto principal de pacotes.
contrib
Pacotes que não são uma parte integral da distribuição, mas que são úteis.
non-free
Pacotes que são distribuídos sobre termos muito restritivos (leia software não livres) para serem incluídos na distribuição.
Usando o apt-get
Utilizar o apt-get depois de configurado é tão fácil que é até sem graça. É como aquela propaganda do aparelho de barbear: a primeira faz tchan, a segunda faz tchun e tchan-tchan-tchan!
Primeiro você atualiza a lista de pacotes disponíveis, com suas versões mais recentes:
apt-get update
Depois você pode instalar um pacote específico:
apt-get install perl
Se você se sente absolutamente preguiçoso, pode ainda fazer só isso:
apt-get upgrade
Todos os software da lista que forem versões mais recentes das que estão instaladas na máquina serão instalados.
- Resolvendo problemas de lib
Às vezes, a gente instala algumas bibliotecas (libs) e depois ao instalar os programas ocorre um erro de que a lib não foi encontrada. Isso se deve porque dependendo da versão do linux o arquivo /etc/ld.so.conf não contém o caminho para o diretório /usr/local/lib (onde a maioria das libs são instaladas). Para resolver este problema edite o arquivo: /etc/ld.so.conf e insira o caminho onde a lib foi instalada, por exemplo: /usr/local/lib.
Feito isso digite:
root@valhalla.foobar# ldconfig
Bem vindo ao Bash! Neste capítulo vou mostrar como configurar o Linux da forma que mais lhe agradar. Por méritos de ser um Unix e ser de código aberto, o Linux é absolutamente configurável para todos os gostos.
Mas o que é Bash? Bem, isso provavelmente já foi discutido, mas vale lembrar que o Bash é o interpretador de comandos padrão do Linux. Entre as maravilhas que ele pode executar para você, a mais útil (e complexa) é programas um script de shell.
No entanto, o que vou mostrar aqui são meras manipulações variáveis do Bash do Linux. Apesar de neófito sentirem-se amedrontados por lidar com linha de comando, existem muitas coisas que você pode executar diretamente no prompt de maneira muito mais simples e funcional do que por uma interface gráfica. Alguns gurus do Linux sequer usam uma interface gráfica, ou o fazem raramente.
Depois de ser melhor apresentado ao bash e aos seus detalhes, mais a frente estarei apresentando como criar scripts de shell simples, o que será uma agradável para administradores que achavam que os arquivos de lote do DOS são uma porcaria (e com razão).
Configurando seu PATH
Path ou pathname é uma relação de diretórios onde possa estar comandos que você usa geralmente. Por exemplo, quando você digita gzip, o sistema tem que estar informado onde está localizado o programa para então executá-lo. Há duas formas de fazer isso: digitando a localização exata no sistema, por exemplo /usr/bin/gzip, já estar no diretório correto ou então configurar o seu pathname com o caminho correto.
Quando você digita um comando, o Linux procura no diretório atual onde você está o programa, e depois no seu pathname. Se não encontrar em nenhum dos dois, você provavelmente receberá uma mensagem de erro que o comando não foi encontrado.
Para ver os atuais diretórios que estão como PATH, digite o seguinte:
echo $PATH
Se o diretório desejado não estiver na lista, coloque-o assim:
PATH=$PATH:/diretório/a/ser/colocado/no/path
Isso colocará o /diretório/a/ser/colocado/no/path no PATH.
Obs.: Essas instruções são válidas somente para uma seção! Ou seja, são temporários. Se você quiser colocar um PATH permanente, coloque num profile pessoal. Se quiser ser um PATH GLOBAL, coloque o diretório no arquivo /etc/profile aonde indicado.
Executando tarefas pré-definidas ao dar logout
Você pode definir que alguns comandos que sejão executados quando um usuário efetuar o logout.
Procedimentos:
1. Crie um arquivo chamado .logout e salve-o no diretório home do usuário (/home/usuário - se for root, coloque-o em /root).
2. Dentro do .logout insira alguns comandos que possam ser executados pelo terminal.
Exemplo de um arquivo .logout:
rm -rf /tmp/kf*
rm -rf /tmp/kio*
Ao efetuar o logout, será apagado automaticamente todos os arquivos temporários criados pelo KDE, o que lhe ajudará a manter espaço livre de disco. Qualuquer programa, mesmo um shell script pode ser usado com esse recurso.
Como criar atalho - Alias
O que é alias? Alias significa atalho, e pode ajudar em muito sua vida no Linux.
No arquivo /etc/bashrc, se não existir esse arquivo, crie o arquivo com seu editor de texto favorito (lembre-se que ele não deve conter formatação – só texto!) e salve-o no diretório /etc com esse nome:
bashrc
E obtenha algo assim:
/etc/bashrc
Se você tiver criatividade, os alias irão fazer muita diferença em seu Linux. Vamos ver alguns exemplos:
Não quero ficar digitando o espaço toda vez que vou abaixar um diretório com o comando cd .. . Edite o arquivo /etc/bashrc:
Na última linha, de preferência, digite:
alias cd..=’cd ..’
Dessa forma, toda vez que você for abaixar em um diretório é só fazer como antigamente no DOS, digitar cd..
É muito comprido o comando para reiniciar ou desligar meu PC com Linux. Edite o arquivo /etc/bashrc . Então, use a criativade: Crie outro alias da seguinte forma:
alias desligar=’shutdown -h now’
Agora, toda vez que você for desligar seu pc no linux, basta voltar ao tempo e digitar desligar. A maoria das distribuições possuem um atalho para esse comando, o halt.
Esses são só alguns exemplos de alias, use sua critividade e crie os seus. Vou colocar os alias que mais uso a seguir:
alias reboot=’shutdown -r now’
alias ls=’ls –-color’
alias cd-on=’mount /dev/cdrom /cd’
alias cd-off=‘umount /dev/cdrom’
alias x=’startx’
Você também pode definir alias apenas para usários específicos. Dentro de cada diretório home de cada usuário, você poderá verificar a existência de arquivos ponto. Por exemplo:
# ls –a /home/blaster
#
.bashrc .bash_profile .bash_logout
Se você inserir algo no .bashrc, como um alias, esse alias funcionará exclusivament
para o seu usuário (no exemplo, o usuário blaster).
Como alterar a cor do fundo e da letra no console?
Faça uso do comando:
setterm -background cyan -foreground black
As cores possíveis são: black,blue,green,cyan,red,magenta,yellow,white,default .
Detalhes: o ls com cores limpa sempre o terminal, então as opções de cores do ls devem ser desabilitadas para que funcione, e caso se tenha um prompt colorido, a mesma coisa, volte-o para o padrão. Para tornar essa mudança definitiva, inclua essa linha no seu arquivo /.bashrc .
Alteração do Prompt
Você pode alterar as informações que seu prompt lhe mostra. Edite o arquivo ~/.profile ou ~/.bash_profile para configurações a nível de usuário ou /etc/profile para configurações globais. Neste arquivo você encontrará uma linha com PS1='...'. É só os parâmetros do PS1 que você tem que trocar. Segue uma lista das “tags” abaixo:
\d A data no formato "Dia-da-Semana Mes Dia-do-Mes"
\n Nova linha
\W Última parte do diretorio atual (Ex: /usr/bin == bin)
\w Diretorio atual
\# Número do comando, contador de comandos
\t A hora no formato HH:MM:SS
\s Nome do shell (bash)
\$ Se for root # e se não for $
\u User que você tah agora
\h Nome do host
\! Número do comando no history, incluindo os do ~/.bash_history
\\ Uma barra '\'
\[ Comeca uma string de controle, ANSI, e caracters não imprimiveis
\] Termina a string comecada com \[
Exemplo:
PS1='\h:\s(\u/tty`tty |cut -b9-`)[\W]\$'
sairia algo como:
caverna:bash(root/ttyp0)[~]#
Você também pode usar cores ANSI. Aqui estão elas:
_[0m = Desliga a cor anterior
_[1m = Negrito
_[2m = Escuro
_[4m = Sublinhado (monitores mono)
_[5m = Piscante
_[7m = Reverso
_[30m = Preto
_[31m = Vermelho
_[32m = Verde
_[33m = Amarelo
_[34m = Azul
_[35m = Rosa
_[36m = Azul piscina
_[37m = Branco
_[40m = Fundo Preto
_[41m = Fundo Vermelho
_[42m = Fundo Verde
_[43m = Fundo Amarelo
_[44m = Fundo Azul
_[45m = Fundo Rosa
_[46m = Fundo Azul pscina
_[47m = Fundo Branco
A maioria das distribuições incluem ferramentas gráficas para a administração do sistema, o que inclui a administração dos usuários. Exemplos dessas ferramentas são o Control Panel (da Red Hat), o Linuxconf e ferramentas do KDE.
Aqui no manual vamos nos ater apenas aos comandos no prompt. É preferível mostrar o procedimento pelo promtp, uma vez que idêntico para todas as distribuições, e esses comandos podem ainda ser usados para shell script.
- Adicionar um usuário
Digite o comando 'adduser';
O sistema vai pedir o Login, escolha-o;
Depois vai pedir uma série de coisas, aperte (enter) até aparecer 'password';
Escolha o password e pronto. O usuário foi cadastrado no arquivo /etc/passwd .
Se este usuário quiser acessar permissões de outros usuários, o seguinte comando deve ser usado: su (usuário)
Depois de ter digitado isso, o sistema vai pedir o password do (usuário), coloque-o e assim, você poderá acessar tudo o que o outro acessa. Para sair desse 'acesso' ao seu login normal, digite 'exit'
Obs.: O usuário root é o administrador do sistema, ou seja, ele controla TUDO. Aliás, ele que dá as permissões para outros usuários. Então lembre-se, se você for cadastrar um usuário você deve estar com o poder do root.
- Remover um usuário
Para apagar um usuário, deve-se proceder assim:
Edite o arquivo /etc/passwd e procure a linha equivalente a:
(usuário):(senha criptografada):(ID do grupo):(Grupo):(Home):(Shell);
Retire esta linha, e o login não mais existirá;
Apague o diretório HOME do usuário(se existir);
Apague o arquivo /var/spool/(usuário) e pronto. Descadastrado.
Dica: É aconselhável você adicionar um login diferente de root, para que você não faça nenhuma 'besteira sem querer' ao usar o login do root, mas quando você quiser usar o root como usuário, útilize o comando 'su', que você pode ver logo acima.
- Criando outro usuário com o poder de root:
Proceda assim:
- Faça os procedimentos de criar um usuário normal;
- Edite o /etc/passwd com um editor de texto comum;
- Vá na linha do usuário e edite para:
(usuário):(senha criptografada):0:0:(Home):(Shell) e pronto
^ ^
Então o usuário terá todo o poder do root por padrão.
CUIDADO! Criar um usuário com permissões de root é absolutamente desaconselhável por motivos de segurança do sistema! Limite essas operações ao usuário root somente! |
Para consultas rápidas... pode ser útil!
---
Modem:
COM1 = /dev/cua0
COM2 = /dev/cua1
COM3 = /dev/cua2
COM4 = /dev/cua3
Links simbólico para a já configurada = /dev/modem
Obs: Os devices cua tornaram-se obsoletos, e programas de discagem como o wvdial reclamam se você usa elas para conectar o seu modem. Use as mesmas portas que as do mouse (digo as ttyS, não a mesma do mouse, senão teremos conflito e nenhum dos dois irão funcionar!).
Mouse:
COM1 = ttyS0
COM2 = ttyS1
COM3 = ttyS2
COM4 = ttyS3
Links simbólico para a já configurada = /dev/mouse
---
Para criar os devices, use o script /dev/MAKEDEV
Digite man MAKEDEV para mais informações.
Para saber se um programa é executável ou não, execute um 'ls -l' e veja no lado esquerdo se o arquivo tem X nos seus argumentos, como no exemplo abaixo:
drwxr-xr-x 2 root root 1024 Dec 23 15:22 bin
drwxr-xr-x 2 root root 1024 Dec 31 05:48 boot
drwxr-xr-x 2 root root 1024 Dec 6 15:51 cdrom
drwxr-xr-x 3 root root 8192 Mar 11 10:17 dev
drwxrwxr-x 2 root root 1024 Feb 27 13:52 dosa
dr-xr-xr-x 11 root root 2048 Mar 11 10:19 etc
drwxr-xr-x 11 root root 2048 Feb 23 19:08 home
drwxr-xr-x 3 root root 1024 Feb 23 19:13 lib
drwxr-xr-x 2 root root 12288 Nov 2 11:25 lost+found
-rwxr--r-- 1 root root 57 Mar 10 03:44 make-backup
-rw-rw-r-- 1 killer users 2342 Mar 10 03:12 teste.txt
-rw-rw-rw- 1 fernando visits 23412 Mar 09 22:22 teste2.doc
No exemplo acima todos os arquivos tem como dono root e como grupo também root, com exceção do 'teste.txt' que o dono é 'killer' e o grupo é 'users', e também 'teste2.doc', no qual 'fernando' é o dono e o grupo 'visits' também é dono.
Como você pode ver do lado esquerdo de cada arquivo/diretório existe um série de letras r, w, x ou d! Vamos ver o que representa cada uma delas:
drwxrwxrwx
0111222333
No caso acima, a primeira coluna significa (número 0) se o nome listado é um diretório ou não, caso não seja um diretório ele será exibido da seguinte maneira:
-rwxr--r-- 1 root root 57 Mar 10 03:44 make-backup
|
\----------> Não contém a letra 'd', não é diretório, e sim arquivo!!!
O exemplo abaixo mostra o que seria um diretório:
drwxr--r-- 1 root root 1 Mar 10 01:12 bin
|
\-----------> Contém a letra 'd' na primeira coluna, é um diretório!!!
Continuando, na segunda coluna (números 1 de acordo com o exemplo mais acima) temos as definições para o dono do arquivo, como mostra o exemplo:
-rwxr--r-- 1 killer users 1231 Mar 09 12:12 teste.txt
|||
||\--------> O dono do arquivo (killer) pode executar o arquivo, x=executable!
|\---------> O dono do arquivo (killer) pode gravar no arquivo, w=writable!
\----------> O dono do arquivo (killer) pode ler o arquivo, r=readable!
Seguindo, na terceira coluna (números 2 de acordo com o exemplo acima) temos as definições para o grupo que é dono do arquivo, como mostra o exemplo:
-r--rwxr-- 1 fernando visits 212 Mar 01 12:42 exemplo.doc
|||
||\-----> O grupo dono do arquivo (visits) pode executar o arquivo!
|\------> O grupo dono do arquivo (visits) pode gravar no arquivo!
\-------> O grupo dono do arquivo (visits) pode ler o arquivo!
Finalmente, temos a quarta coluna (composto pelos números 3), essa coluna se refere as permissões para todos os outros usuários do sistema, sem ser os donos e grupos-donos dos mesmos, exemplo:
-r--r--rwx 1 fernando visits 1231 Mar 03 12:42 exemplo2.doc
|||
||\--> Todos os usuários (exceto fernando e usuários do grupo visits)
|| tem permissão para acessar o arquivo!
|\---> Todos os usuários (exceto fernando e usuários do grupo visits)
| tem permissão para gravar no arquivo!
\----> Todos os usuários (exceto fernando e usuários do grupo visits)
tem permissão para ler o arquivo!
Quando nos referimos a diretório invés de arquivos, o FLAG x
(executável) diz se o diretório é ou não acessível, já que não podemos
"EXECUTAR" diretórios... Exemplo:
drwxr--r-- 1 root root 2134 Mar 01 12:54 exemplo3
||||| |
||||| \----> Todos os usuários podem ler o interior do diretório, mas não
||||| podem usar o comando 'cd' para entrar nele, pois não existe
||||| o FLAG 'x' para a quarta coluna!
||||\-------> Usuários do grupo 'root' podem ler o interior do diretório,
|||| mas também não podem usar 'cd' para entrar no diretório!
|||\--------> O usuário 'root' pode usar 'cd' para entrar no diretório!
||\---------> O usuário 'root' pode gravar arquivos nesse diretório!
|\----------> O usuário 'root' pode ler o interior desse diretório!
\-----------> Indica que o nome listado é um diretório!
O comando chmod pode ser usado para mudar os FLAGS 'rwx' dos arquivos e/ou diretórios, a sintaxe básica é:
chmod [ugoa]{-+}[rwx] nome_do_arquivo_ou_diretório
Exemplo:
chmod u+rw arquivo1.txt
No exemplo você mudará a permissão para o dono do arquivo (u = user) pode ler e gravar (rw) no 'arquivo1.txt'...
Caso você queira desfazer o comando, você faria:
chmod u-rw arquivo1.txt
Como se vê, o + ou - define se os FLAGS serão ativados ou desativados!
Outros exemplos:
chmod a+r arquivo2.txt (Todos usuários (a=all) podem ler o 'arquivo2.txt')
chmod o+w arquivo3.txt (Outros usuários (o=others) sem ser o dono e o grupo
dono do arquivo, podem gravar o 'arquivo3.txt')
chmod g+x netscape (O grupo-dono do arquivo (g=group) pode executar o
arquivo “netscape”)
O comando chmod pode também ser usado com números, em vez dos flags,
como mostra o exemplo:
chmod 664 arquivo.txt
O que quer dizer cada um desses números? Veja abaixo:
0 = nenhuma permissão
1 = permissão para executar
2 = permissão para gravar
3 = permissão para gravar e executar
4 = permissão para ler
5 = permissão para ler e executar
6 = permissão para ler e gravar
7 = permissão para ler, gravar e executar
No exemplo o comando informou que o 'arquivo.txt' pode ser lido e gravado pelo seu dono (número 6 na primeira coluna), informou que pode também ser lido e gravado pelos usuários que compõem o grupo-dono (número 6 na segunda coluna), e informou que pode ser lido por todos os outros usuários do sistema (número 4 na última coluna).
O comando chown é simples e pode ser usado da seguinte maneira:
chown usuário.grupo nome_do_arquivo_ou_diretório
Como exemplo, vamos definir que um arquivo 'teste4.txt' terá como dono 'killer' e como grupo 'users':
chown killer.users teste4.txt
Outros exemplos:
chown mrdvs.visits teste5.txt
chown jackie.jackie teste6.txt
O editor VI é muito famoso nos diversos ambientes UNIX, o que inclui o Linux. Ele se encontra, me arrisco a dizer, disponível em todas as distribuições.
O VI é um editor em modo texto, e pode ser pouco digesto para as pessoas acostumadas a usar editores gráficos. Mas ele é extremamente rápido, pode ser executado em modo texto e gráfico, e possui uma série de facilidades que muitos dos editores mais modernos não possuem.
Existem outros editores de texto, dentro os mais famosos posso citar o Emacs e o VIM. O Emacs é o editor de texto criado por Richard Stallman, o pai do movimento Free Software, lá pela década de 70. Muitas pessoas dizem que o Emacs é muito melhor que o VI, mas o mesmo possui muitos “devotos” e isso acaba parecendo uma briga religiosa.
O VIM significa VI Improved, ou seja, o VI original com algumas funções a mais e mais simples de usar.
Vamos aos comandos do VI.
MODO TEXTO
Subcomandos de inserção de texto:
i insere texto antes do cursor
r insere texto no início da linha onde se encontra o cursor
a insere texto depois do cursor
A insere texto no fim da linha onde se encontra o cursor
o adiciona linha abaixo da linha corrente
O adiciona linha acima da linha corrente
Ctrl + h apaga último caracter
Ctrl + w apaga última palavra minúscula
Esc passa para o modo comando
MODO COMANDO:
Subcomandos para Movimentação pelo Texto:
Ctrl+f passa para a tela seguinte.
Ctrl+b passa para a tela anterior.
H move o cursor para a primeira linha da tela.
M move o cursor para o meio da tela.
L move o cursor para a última linha da tela.
h move cursor para caracter a esquerda.
j move cursor para linha abaixo.
k move o cursor para linha acima.
l move cursor para caracter a direita.
w move cursor para início da próxima palavra (ignora pontuação).
W move cursor para início da próxima palavra (não ignora pontuação).
b move cursor para início da palavra anterior (ignora pontuação).
B move cursor para início da palavra anterior (não ignora pontuação).
0 (zero) move cursor para início da linha corrente.
^ move cursor para o primeiro caracter não branco da linha.
$ move cursor para o fim da linha corrente.
nG move para a linha n.
G move para a última linha do arquivo.
Subcomandos para Localização de Texto:
/palavra procura pela palavra ou caracter acima ou abaixo do texto.
?palavra move para a ocorrência anterior da palavra (para repetir a busca usar n).
n repete o último / ou ? comando.
N repete o último / ou ? comando na direção reversa.
Ctrl+g mostra o nome do arquivo, o número da linha corrente e o total de linhas.
Subcomandos para Alteração de Texto:
x apaga um caracter que esta sobre o cursor.
dw apaga a palavra, do inicio da posição do cursor ate o fim.
dd apaga a linha inteira onde o cursor estiver.
D apaga a linha a partir da posição do cursor em diante.
rx substitui o caracter sob o cursor pelo especificado x (é opcional indicar o caracter).
Rtexto substitui o texto corrente pelo texto indicado (opcional indicar o texto adicionado).
cw substitui a palavra corrente. Pode-se inserir o novo conteúdo da palavra automaticamente.
cc substitui a linha corrente. Pode-se inserir o novo conteúdo da linha automaticamente.
C substitui restante da linha corrente. Pode-se inserir o texto logo após o comando.
u desfaz a última modificação.
U desfaz todas as modificações feitas na linha (se o cursor não mudou de linha).
J une a linha corrente a próxima.
s:/velho/novo substitui a primeira ocorrência de "velho" por "novo".
Subcomandos para Salvar o Texto:
:wq salvar as mudanças feitas no arquivo e sai do editor.
:w < nome-arq > salva o arquivo corrente com o nome especificado. Continua edição normalmente.
:w! < nome-arq > salva (de modo forçado) o arquivo corrente no arquivo especificado
:q sai do editor. Se mudanças não foram salvas é apresentada mensagem de advertência
:q! sai do editor sem salvar as mudanças realizadas.
- Por que eu usuaria o Vim? Ele parece muito complicado!
Na realidade, o Vim é realmente mais complicado de se lidar que editor de texto gráfico, como o Gedit ou Nedit. Mas também é verdade que o Vim possui muitos recursos como editor de texto, é muito rápido, possui a característica de marcação de sintaxe de diversas linguagen de programação, entre elas C, C++, html, perl, python, php, etc, o que facilita muito a vida do programador, caso esqueça de fechar alguma tag (em html, por exemplo), a cor do texto fica modificada até ele fechar essa tag.
- E o Emacs?
Eu não conheço o Emacs, sendo assim fica difícil escrever um tutorial.
Aos devotos do Emacs, aceito qualquer tutorial para incluir aqui! Vamos lá, apresentem-se !
Apesar de ser originalmente um sistema operacional baseado em caracter, ou seja, em modo texto, é possível se ter uma interface gráfica com suporte a mouse, como nos sistemas operionais MS Windows ou no MacOS da Machintosh. Esse sistema é conhecido como X-Windows.
O sistema X-Windows é um poderoso ambiente gráfico para UNIX. Desenvolvido originalmente pelo MIT (Massachutes Institute of Technology), na época de desenvolvimento do UNIX, e vendedores comerciais o adotaram como padrão para as diversas plataformas existentes. Praticamente todos os variantes do UNIX usam o X-Windows.
Existem alguns conceitos agregados ao X-Windows que devem ser explicados para maior compreensão do sistema. No mundo UNIX, a tarefa de disponibilizar uma interface gráfica do usuário normalmente é dividida em 3 componentes:
Servidor de Janelas;
Gerente de Janelas;
A aplicação em si, normalmente usando um conjunto de ferramentas de interfaces de usuário.
O servidor de janelas (X-Windows) tem como função prover um acesso em alto
nível e portátil a dispositivos como teclado, mouse e ao vídeo, permitindo que aplicações apresentem formações na tela, em estruturas retangulares chamadas de janelas. Muitos objetos para interface do usuário, como botões, menus e barras, são componentes de uma janela.
A função primária de um gerente de janelas (Window Manager, em inglês) é controlar a apresentação das janelas de mais alto nível na tela. Ele disponibiliza uma barra de títulos e uma redefinição de tamanho para mudança de layout da janela e toda e qualquer outra estrutura de controle da aparência e do modo que o sistema responde a requisições.
O Linux usa uma versão free do X-Windows System Version 1.1 Release 6 do MIT para plataforma Intel, chamado Xfree86. Exite muita informação sobre o X, em http://www.free86.org/
Existem dois métodos de se configurar o X-Window, o que eu gosto (somente texto), e o gráfico. Aqui eu usarei o somente texto, que é simples e prático e quase sempre resolve todos os meus problemas em relação a isso :) .Se você quiser configurar em modo gráfico, você executa o XF86Setup.
Antes, uma dica: a RedHat possui um configurador gráfico chamado Xconfigurator que você pode executar digitando ‘Xconfigurator’. Ele é utilizado através do teclado, e é mais simples de usar do que o xf86config (como você irá ver adiante) pois permite que você volte atrás de uma opção que escolheu e mude-a. Algumas vezes ela apresenta problemas quando ela detecta sua placa (desculpe RedHat) pois, eu mesmo já vi pelo menos uns 10 casos desse. Por isso, se acontecer com você, use este método mencionado aqui ...
Primeiro de tudo, tenha em mãos as informações de sua placa de vídeo e monitor. Se você não tiver, não tem muito problema, mas sua configuração será afetada.
O utilitário que usaremos aqui é o 'xf86config', que vem em TODAS distribuições, sem excessões. Mas antes de rodar o xf86config, rode o ‘SuperProbe’, que irá detectar algumas informações de sua placa que iremos usar mais adiante, por exemplo aqui no meu humilde Linux:
Obs: quando escolher a freqüência do seu monitor (horizontal e vertical) certifique-se de escolher os valores certos ou conservativos. Se você forçar uma configuração que excede a capacidade do monitor, o mesmo pode ser danificado de maneira irreversível.
------------------------------------------------------------------
Powerslave:/# SuperProbe -v
SuperProbe Version 2.18 (22 December 1998)
First video: Super-VGA
Chipset: Trident GUI 9440AGi (PCI Probed)
Memory: 1024 Kbytes
RAMDAC: Trident Built-In 15/16/24-bit DAC
(with 6-bit wide lookup tables (or in 6-bit mode))
------------------------------------------------------------------
Aqui detectou as seguintes configurações: Placa de Video Trident modelo 9440, memória de 1MB (1024kb). Isto eu irei usar como informação no xf86config. Use você também :)
Agora vamos a parte interessante, rode o xf86config, irá aparecer um texto de informação, aperte enter para continuar, e agora começa a configuração. O xf86config é orientado por menus, como você poderá ver abaixo:
-------------------------------------------------------------------
First specify a mouse protocol type. Choose one from the following list:
1. Microsoft compatible (2-button protocol)
2. Mouse Systems (3-button protocol)
3. Bus Mouse
4. PS/2 Mouse
5. Logitech Mouse (serial, old type, Logitech protocol)
6. Logitech MouseMan (Microsoft compatible)
7. MM Series
8. MM HitTablet
9. Microsoft IntelliMouse
10. Acecad tablet
If you have a two-button mouse, it is most likely of type 1, and if you have a three-button mouse, it can probably support both protocol 1 and 2. There are two main varieties of the latter type: mice with a switch to select the protocol, and mice that default to 1 and require a button to be held at boot-time to select protocol 2. Some mice can be convinced to do 2 by sending a special sequence to the serial port (see the ClearDTR/ClearRTS options).
Enter a protocol number:
-------------------------------------------------------------------
Aqui você escolhe qual o seu tipo de mouse. Se for um mouse de 2 botôes, selecione a opção 1, se for de 3, selecione a opção 2, se for PS/2, selecione a opção 4, e por aí vai :) Cada opção tem sub-opções, e isso fica por sua conta ;) Se você não sabe o que escolher, escolha a opção 1.
-------------------------------------------------------------------
Now give the full device name that the mouse is connected to, for example /dev/tty00. Just pressing enter will use the default, /dev/mouse.
Mouse device:
-------------------------------------------------------------------
Aqui você coloca o dispositivo do mouse, ou seja, aonde ele está. Se você deixar em branco e apertar enter, ele considerará o /dev/mouse. Se você não sabe como preencher isso, vá na seção de Dispositivos (2.2.4) deste manual.
-------------------------------------------------------------------
Beginning with XFree86 3.1.2D, you can use the new X11R6.1 XKEYBOARD extension to manage the keyboard layout. If you answer 'n' to the following question, the server will use the old method, and you have to adjust your keyboard layout with xmodmap.
Please answer the following question with either 'y' or 'n'. Do you want to use XKB?
------------------------------------------------------------------
Aqui pergunta se você quer usar o XKB, um utilitário de configuração do teclado. Se não souber o que escolher, escolha sim. Depois ele irá perguntar qual teclado você tem, escolha o seu, se não tiver lá ou você não souber, escolha 1.
------------------------------------------------------------------
You must indicate the horizontal sync range of your monitor. You can either select one of the predefined ranges below that correspond to industry-standard monitor types, or give a specific range.
It is VERY IMPORTANT that you do not specify a monitor type with a horizontal sync range that is beyond the capabilities of your monitor. If in doubt, choose a conservative setting.
hsync in kHz; monitor type with characteristic modes
1 31.5; Standard VGA, 640x480 @ 60 Hz
2 31.5 - 35.1; Super VGA, 800x600 @ 56 Hz
3 31.5, 35.5; 8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)
4 31.5, 35.15, 35.5; Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz
5 31.5 - 37.9; Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72 Hz
6 31.5 - 48.5; Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz
7 31.5 - 57.0; High Frequency SVGA, 1024x768 @ 70 Hz
8 31.5 - 64.3; Monitor that can do 1280x1024 @ 60 Hz
9 31.5 - 79.0; Monitor that can do 1280x1024 @ 74 Hz
10 31.5 - 82.0; Monitor that can do 1280x1024 @ 76 Hz
11 Enter your own horizontal sync range
Enter your choice (1-11):
------------------------------------------------------------------
Aqui você vai ter de escolher a freqüência vertical do seu monitor. Você terá que dar uma olhadinha no manual do fabricante, pois isto pode ser muito importante. Se você não sabe o que colocar, ou é preguiçoso para olhar no manual, escolha a opção 4 que na maioria das vezes funciona.
-------------------------------------------------------------------
You must indicate the vertical sync range of your monitor. You can either select one of the predefined ranges below that correspond to industry-standard monitor types, or give a specific range. For interlaced modes,the number that counts is the high one (e.g. 87 Hz rather than 43 Hz).
1 50-70
2 50-90
3 50-100
4 40-150
5 Enter your own vertical sync range
Enter your choice:
------------------------------------------------------------------
Aqui você coloca a freqüência vertical, que segue a mesma regrinha da horizontal, ou seja, olhar no manual. Caso não saiba, escolha a opção 3 que é a mais comum.
------------------------------------------------------------------
You must now enter a few identification/description strings, namely an
identifier, a vendor name, and a model name. Just pressing enter will fill
in default names.
The strings are free-form, spaces are allowed.
Enter an identifier for your monitor definition:
Enter the vendor name of your monitor:
Enter the model name of your monitor:
-------------------------------------------------------------------
Pode apertar Enter nestas três opções, são apenas comentários sobre o monitor... Eu disse comentários!
------------------------------------------------------------------
Now we must configure video card specific settings. At this point you can choose to make a selection out of a database of video card definitions.
Because there can be variation in Ramdacs and clock generators even
between cards of the same model, it is not sensible to blindly copy
the settings (e.g. a Device section). For this reason, after you make a selection, you will still be asked about the components of the card, with the settings from the chosen database entry presented as a strong hint.
The database entries include information about the chipset, what server to run, the Ramdac and ClockChip, and comments that will be included in the Device section. However, a lot of definitions only hint about what server to run (based on the chipset the card uses) and are untested.
If you can't find your card in the database, therés nothing to worry about.
You should only choose a database entry that is exactly the same model as your card; choosing one that looks similar is just a bad idea (e.g. a GemStone Snail 64 may be as different from a GemStone Snail 64+ in terms of hardware as can be).
Do you want to look at the card database?
------------------------------------------------------------------
Aqui é o seguinte. Se você escolher sim (y), ele irá mostrar uma lista de placas disponíveis de suporte. Eu aconselho você escolher sim e tentar escolher sua placa de vídeo, pois vai auxiliar no resto da instalação. Não é sempre requerido, mas é recomendado.
------------------------------------------------------------------
Now you must determine which server to run. Refer to the manpages and other documentation. The following servers are available (they may not all be installed on your system):
1 The XF86_Mono server. This a monochrome server that should work on any VGA-compatible card, in 640x480 (more on some SVGA chipsets).
2 The XF86_VGA16 server. This is a 16-color VGA server that should work on any VGA-compatible card.
3 The XF86_SVGA server. This is a 256 color SVGA server that supports a number of SVGA chipsets. On some chipsets it is accelerated or supports higher color depths.
4 The accelerated servers. These include XF86_S3, XF86_Mach32, XF86_Mach8, XF86_8514, XF86_P9000, XF86_AGX, XF86_W32, XF86_Mach64, XF86_I128 and XF86_S3V.
These four server types correspond to the four different "Screen" sections in XF86Config (vga2, vga16, svga, accel).
Which one of these screen types do you intend to run by default (1-4)?
------------------------------------------------------------------
Aqui é muito importante, nesta seção você vai escolher que tipo de servidor do XFree86 você vai querer usar. A opção 1 corresponde a um servidor monocromático, a opção 2 se limita a VGA de até 16 cores, a opção 3 é SVGA com 256 cores ou mais, e por último a opção 4 que serve para servidores especiais para outras placas de vídeo não-genéricas. Pode aparecer também uma quinta opção, mas só se você tiver escolhido uma placa no banco de dados à alguns passos atrás. Este servidor 5, será o mais compatível com a placa escolhida. Se você não sabe o que colocar aqui, geralmente se usa o servidor 3, ou seja, o SVGA.
As próximas duas perguntas são confirmando a escolha para usar o servidor escolhido acima como servidor padrão do X-Window. Escolha sim (y).
-------------------------------------------------------------------
You must indicate how much video memory you have. It is probably a good idea to use the same approximate amount as that detected by the server you intend to use. If you encounter problems that are due to the used server not supporting the amount memory you have (e.g. ATI Mach64 is limited to 1024K with the SVGA server), specify the maximum amount supported by the server.
How much video memory do you have on your video card:
1 256K
2 512K
3 1024K
4 2048K
5 4096K
6 Other
Enter your choice:
-------------------------------------------------------------------
Aqui é óbvio, é para você indicar a quantidade de memória da sua placa de vídeo.
-------------------------------------------------------------------
You must now enter a few identification/description strings, namely an identifier, a vendor name, and a model name. Just pressing enter will fill in default names (possibly from a card definition).
The strings are free-form, spaces are allowed.
Enter an identifier for your video card definition:
You can simply press enter here if you have a generic card, or want to describe your card with one string.
Enter the vendor name of your video card:
Enter the model (board) name of your video card:
-----------------------------------------------------------------
Mesma coisa que antes! Aqui só são descrições de sua placa de vídeo, pode deixar em branco, são apenas comentários.
-----------------------------------------------------------------
A Clockchip line in the Device section forces the detection of a
programmable clock device. With a clockchip enabled, any required
clock can be programmed without requiring probing of clocks or a
Clocks line. Most cards don't have a programmable clock chip.
Choose from the following list:
1 Chrontel 8391 ch8391
2 ICD2061A and compatibles (ICS9161A, DCS2824) icd2061a
3 ICS2595 ics2595
4 ICS5342 (similar to SDAC, but not completely compatible)ics5342
5 ICS5341 ics5341
6 S3 GenDAC (86C708) and ICS5300 (autodetected) s3gendac
7 S3 SDAC (86C716) s3_sdac
8 STG 1703 (autodetected) stg1703
9 Sierra SC11412 sc11412
10 TI 3025 (autodetected) ti3025
11 TI 3026 (autodetected) ti3026
12 IBM RGB 51x/52x (autodetected) ibm_rgb5xx
Just press enter if you don't want a Clockchip setting. What Clockchip setting do you want (1-12)?
-----------------------------------------------------------------
Caso sua placa de vídeo tenha Clockchip (veja no manual), você pode escolher uma opção aqui. Se você não sabe qual escolher, apenas aperte enter para não usar um Clockchip. Aliás, essa opção é a recomendada se você não sabe o que está fazendo.
-----------------------------------------------------------------
At this point I can run X -probeonly, and try to extract the clock information rom the output. It is recommended that you do this yourself and if a set of locks is shown then you add a clocks line (note that the list of clocks may be split over multiple Clocks lines) to your Device section afterwards. Be aware that a clocks line is not appropriate for most modern hardware that has programmable clocks.
You must be root to be able to run X -probeonly now.
Do you want me to run 'X -probeonly' now?
-----------------------------------------------------------------
Aqui ele vai rodar o X -probeonly se você escolher sim. Eu aconselho que não, pois ele serve para detectar algum clock da sua placa de vídeo e configurar resoluções automaticamente. Não é uma boa idéia.
-----------------------------------------------------------------
For each depth, a list of modes (resolutions) is defined. The default resolution that the server will start-up with will be the first listed mode that can be supported by the monitor and card.
Currently it is set to:
"640x480" "800x600" "1024x768" for 8bpp
"640x480" "800x600" for 16bpp
"640x480" for 24bpp
"640x400" for 32bpp
Note that 16, 24 and 32bpp are only supported on a few configurations. Modes that cannot be supported due to monitor or clock constraints will be automatically skipped by the server.
1 Change the modes for 8pp (256 colors)
2 Change the modes for 16bpp (32K/64K colors)
3 Change the modes for 24bpp (24-bit color, packed pixel)
4 Change the modes for 32bpp (24-bit color)
5 The modes are OK, continue.
Enter your choice:
-------------------------------------------------------------------
Aqui é uma importante parte da configuração do X-window. Nela você escolhe qual resolução e cores você vai usar para rodar o seu ambiente gráfico. Obs:
8bpp = 256 cores
16bpp = 64kb/16 milhões de cores
24bpp = 24Bits de cores/High color
32bpp = 32Bits de cores/True color
A opção 1 corresponde a 8bpp, a 2 corresponde a 16bpp, a 3 corresponde a 24bpp, a 4 corresponde a 32bpp e a 5 completa a configuração de resoluções. Vá mudando as resoluções que você quer para cada tipo de cor. Pode aparecer perguntas sobre o ´virtual screen´, isso quer dizer que o X-Window irá usar uma resolução virtual, ou seja, uma área de trabalho maior do que a tela, fazendo uma resolução maior. Depois de tudo configurado, selecione a opção 5, que prossegue na configuração.
-------------------------------------------------------------------
I am going to write the XF86Config file now. Make sure you don't accidently overwrite a previously configured one.
Shall I write it to /etc/XF86Config?
-------------------------------------------------------------------
A última pergunta e uma das mais importantes! Aqui ele pergunta se você quer salvar as alterações que você fez nesta configuração. Se escolher sim ele grava no arquivo /etc/XF86Config (ou /etc/X11/XF86Config), se escolher não, você perde toda a sua configuração e terá de fazer tudinho de novo, legal não?
Agora vamos a parte interessante, rodar o X-Window. Para isso se usa o script 'startx'. Se você quer usar com 16 milhoes de cores (16bpp), a linha é: 'startx -- -bpp 16'. E veja como o Linux pode ser gráfico também.
Quando se trata de flexibilidade, viabilidade e complexividade na configuração, muitas pessoas acham o Linux um sistema extremamente viável, e com isso vem a popularidade, e conseqüêntemente esses novos usuários que vão surgindo querem mais facilidade no uso. Um ambiente desktop, gráfico, é extremamente requerido pelos usuários de computadores atuais, e quando se trata de desktops práticos e bonitos, a Microsoft ganha pelo seu famoso sistema de desktop: O Windows.
"Linux? É que nem o DOS? Fica naquela tela preta...?" - essa é a pergunta de várias pessoas, que acham o Linux uma coisa extremamente complexa, e sem nenhuma praticidade. Atualmente, esta mente das pessoas está mudando, e ao contrário de antes, o Linux está "criando" ambientes práticos e amigáveis, enquanto a mídia e a Internet estão popularizando esses ambientes.
Existem vários ambientes desktops para o Linux, mas os mais ressaltáveis são: O KDE (K Desktop Environment), o Gnome, o WindowMaker e o fvwm95. Cada um com características específicas. Isto são Window Managers, são estes ambientes desktops, que usam o servidor X para dar aquele look ao sistema, cada um com suas características específicas:
FVWM95 - Não é muito apreciado, é dificílimo de configurar, mas é o mais simples e rápido dentre os que eu estou citando aqui. A princípio feito para se parecer com o Windows95, tem até o Menu Iniciar (Start). Antigamente era o que vinha com todas as distribuições do Linux, mas isto está mudando.
WindowMaker - Projeto criado e desenvolvido pelo brasileiro Alfredo Kojima, com colaboração de outros, ele tem uma interface super amigável, é bonito e ganha extremamente na rapidez. Serve principalmente para máquinas que não tem muita memória e que os usuários requiram um ambiente bom e bonito :)
KDE - Em matéria de facilidade, praticidade, é o campeão. Mas como nada é perfeito, ele requer uma boa máquina, pelo contrário ele fica lento. O KDE não é um WindowManager, e sim um pacote completo de programas gráficos.
Gnome - Lindo, o mais novo dos desktops, ele combina uma facilidade no uso com mais velocidade do que o KDE, vários programas são feitos para ele também, é inovador.
Dentre os ambientes gráficos citados acima, o KDE é o mais completo, pois milhares de desenvolvedores espalhados pelo mundo desenvolvem uma infinidade de aplicativos e utilitários. Pena que é lento e meio instável.
Para você escolher qual o seu gerenciador de janelas preferido, não aceite opiniões de outros, teste você mesmo e veja qual é o que se sai mais ao seu gosto, com certeza você não irá se arrepender. Agora você tem mais um motivo para usar Linux!
Tudo depende de qual Window Manager você vai usar. Normalmente cada um possui seu manual de configuração, ou pelo menos um arquivo README ou INSTALL. Procure esses arquivos texto no diretório onde foi instalado o programa.
O WindowMaker e o KDE (kdm na verdade) já possuem manuais traduzidos para a língua pátria. Dê uma procurada.
Para fazer isso, edite o arquivo /etc/inittab, alterar a linha...
...Num Linux RedHat/Mandrake/Conectiva/TechLinux
---------------
id:3:initdefault:
para
id:5:initdefault:
---------------
...Num Linux Slackware:
---------------
id:3:initdefault:
para
id:4:initdefault:
---------------
Para desfazer essa configuração...
...Num Linux RedHat
---------------
id:5:initdefault:
para
id:3:initdefault:
---------------
...Num Linux Slackware:
---------------
id:4:initdefault:
para
id:3:initdefault:
---------------
Se você achou esse procedimento complicado, fique contente: a grande maioria das instalações atuais fazem instalação gráfica (com exceção do Debian) e já configuram o boot em modo gráfico automaticamente.
Isso pode ser um problema se a instalação automática da placa de vídeo ou do monitor não foi feita corretamente. Se isso acontecer, e o boot gráfico não funcionar, você ainda pode botar em modo single user (no Lilo, por exemplo, digite linux single) e arrumar manualmente o inittab, reiniciar o sistema e tentar configurar o vídeo de maneira correta.
Você pode obter informações sobre o XFree86 no próprio site oficial, que é:
Segue abaixo alguns procedimentos mais simples, que seriam chamados provavelmente de Mini COMO-FAZER. São procedimentos simples, mas possuem boas dicas.
Quem tem os dois sistemas(MsWindows® + Linux) sempre quer ter os dois no seu controle, para isso, temos que enxergar ambas partições.
Entenda primeiramente, que isso só vai funcionar em sistemas com sistema de arquivos estabelecido como fat32. Se você achou isso confuso, entenda que você poderá fazer esse mini como-fazer com sistemas Windows 95 e Windows 98. Provavelmente não irá funcionar com Windows NT, por exemplo.
Isso acontece porque o Linux tem suporte para leitura em diversos sistemas de arquivos diferentes (esse suporte pode ser habilitado na compilação do kernel). No caso da Microsoft, ele pode ler sistemas de arquivos:
DOS;
UMS-DOS
FAT16
FAT32
NTFS
Para esclarecer melhor, o sistema de arquivos NTFS é o utilizado pelo Windows NT*. O Linux só tem suporte de leitura a NTFS, então você não poderá ter um controle total da partição do Windows NT. Quanto ao restante dos tipos de sistemas de arquivos, o Linux lhe dará acesso total.
Bem, chega de teoria, vamos partir para a prática. Se tiver dúvidas, confira o capítulo 2.1 sobre particionamento de disco.
Temos aqui 2 métodos para enxergar a partição Windows pelo Linux...
- Verifique em qual partição (/dev/hd??) está o Windows (aqui: /dev/hda1)
- Escolha um diretório para a partição ser montada (aqui: /mnt/win95)
- Digite: mount /dev/hda1 /mnt/windows
Com isso, a partição Windows está visualizada no diretório /mnt/windows. Porém, isso só dá acesso durante a sessão atual. Para manter essa configuração de modo a funcionar toda a vez que o Linux iniciar, insira essas linhas no arquivo /etc/fstab:
/dev/hda1 /mnt/windows fat32 user, auto 0 0
Dúvidas? Consulte o manpage do fstab para entender os comandos listados acima. Você também pode usar uma ferramenta com o Linuxconf para realizar essa tarefa.
*na realidade o Windows NT também funciona em partições fat32, mas isso é desaconselhável, uma vez que esse sistema não possui proteção de arquivos mediante autentificação de usuários.
Para executar esta "façanha", você terá que adquirir um programa chamado "rpm2tgz.tgz", que está disponível em nossa página:
http://www.netdados.com.br/tlm/arquivos/rpm2tgz.tgz
O RPM to TGZ (rpm2tgz) consiste em transformar os pacotes RPM para TGZ e executá-los no Slackware.
Existe outro utilitário muito bom, que achei um dia desses navegando. É o Alien, ele transforma os pacotes de Debian, de Slackware, de RedHat, para qualquer um deles mesmo. Ele é um transformador de pacotes muito bom.
Ainda existe outro programa chamado Martian. Ele converte pacotes do Debian (.deb) para o padrão de pacotes RPM.
Na realidade, o Alien é o melhor dos programas existentes enquanto este manual está sendo escrito.
Abaixo segue a experiência que tive montando o /usr em outra partição.
Transforme a partição para Linux Native (supondo que a nova partição é hdx)
#mke2fs /dev/hdx
Coloque a nova partição no diretório /mnt
#mount /dev/hdx /mnt
#(cd /usr && tar cvf - .) | (umask 0 && cd /mnt && tar xvfp -)
Desmonta o /mnt (que já tem os arquivos do /usr)
#umount /mnt
Backup!
#mv /usr /old-usr
Cria o novo /usr
#mkdir /usr
Coloca sua nova partição no diretório /usr
#mount /dev/hdx /usr
Está feito, um teste simples?
startx
Edite o arquivo /etc/fstab adicionando a linha:
/dev/hdx /usr ext2 default 1 1
Reinicie, veja se não ha erros na inicialização, quando tiver certeza que está tudo certo:
#rm -rf /old-usr
Com isso liberei cerca de 90% do espaço da partição inicial, o /usr ocupa bastante coisa! Depois foi só instalar o ApplixWare que eu tanto queria (grande mas muito bom por sinal).
Vale lembrar que o /usr contêm muitos dos seus programas, é um diretório que sofre muita leitura, o /var é um diretório que sofre muita escrita, se estiver usando o Linux como servidor vale a pena uma partição para o /var, limitando assim o tamanho dos logs e tendo um controle maior sobre eles...
Nunca coloque todos os ovos na mesma cesta, quando quebra, perde tudo!
Com isso tudo aproveitei para tirar o swap de 40Mb que eu tinha no mesmo HD, transformei ele no /var, no segundo HD criei um novo swap, desta maneira o desempenho melhora, pois o Linux consegue ler os dois HDs ao mesmo tempo (uma barulheira danada!).
Ficou então:
/dev/hda1: MS-DOS
/dev/hda5: / (350Mb)
/dev/hda6: /usr (400Mb)
/dev/hda7: /var (40Mb)
/dev/hdb5: swap (40Mb)
Se você for maluco o suficiente tente isso ... não consigo imaginar a utilidade disso. Na realidade isto aqui foi mantido como peça de museu.
Para rodar o Ruindows 95 no Linux faça o seguinte:
1. Baixe o bochs-971017c do site http://world.std.com/~bochs
2. Crie um arquivo chamado conf, com as seguintes linhas:
---------------------[começo de conf]----------------------------
#!/bin/bash
export CFLAGS="-Wall -O3 -m486 -fomit-frame-pointer -pipe"
./configure --enable-80386 --enable-debugger --enablee-memory=32 \
--enable-v8086-mode --enable-paging --enable-vga \
--enable-bochs-bios-hooks --enable-dma-floppy-io \
--enable-processor-ips=400000 --enable-tlb
---------------------[fim de conf]-----------------------------
3. chmod 700 conf
4. conf
5. make
6. Leia o arquivo Windows95.html no docs-html
7. Crie uma imagem de 112M como explicado no doc
8. Instale o Windows 95
9. Crie um arquivo .bochsrc no raiz do usuário, com as seguintes linhas:
--------------------[começo de.bochsrc]--------------------------
diskc: file=/usr/local/bochs/112M, cyl=900, heads=15, spt=17
floppya: file=/dev/fd0
floppya: file=/dev/fd1
boot: c
romimage: /usr/local/bochs/bios/BIOS-bochs-971017a
megs: 32
vgaromimage: /usr/local/bochs/bios/VGABIOS-elpin-2.00A
log: /var/log/bochs
hga_update_interval: 150000
keyboard_serial_delay: 200
---------------------[fim de.bochsrc]----------------------------
14. rode o bochs dando boot na imagem
15. Eu ainda não fui maluco o suficiente ainda :)
1. Instalar o Samba:
Pegue, compile e instale o Samba e digite os seguintes parâmetros no arquivo $SAMBADIR/lib/smb.conf.
workgroup = GRUPO_DE_TRABALHO_DO_WINDOWS
[global]
log file=/usr/local/samba/var/log.%m
log level=1
password level=8
dead time=180
browseable=yes
security=user
preserve case=yes
short preserve case=yes
load printers=yes
printing=bsd
printcap name=/etc/printcap
server string=%h
[homes]
guest ok=no
read only=no
[printers]
path = /diretório/de/spool
printable = yes
writable = no
public = yes
Use o utilitário $SAMBADIR/bin/testparm para ter certeza que você digitou as configurações corretamente:
2. Arquivo /etc/printcap
Acrescente ao /etc/printcap as seguintes linhas, observando a formatação e adaptando os diretórios ao seu sistema.
Certifique-se de que o existe o arquivo $SAMBADIR/bin/smbprint, geralmente ele fica no diretório examples/printing da distribuição do Samba.
lp|smb:\
:sd=/var/spool/lpd/hplaserii:\
:af=/var/spool/lpd/hplaserii/acct.file:\
:if=/usr/local/samba/bin/smbprint:\
:lf=/var/spool/lpd/smb.log:\
:mx#0:\
:lp=/dev/null:sh:
Atualize o daemon de impressão (ldp) com o comando lpc start all.
3. Configurando o smbprint
Crie um arquivo .config no diretório de spool especificado na cláusula sd do /etc/printcap, com o seguinte formato:
server=PCSERVER
service=IMPRESSORA
password=SUA_SENHA_DO_SERVIDOR_WINDOWS
Caso a impressora não precise de senha, deixe o campo password em branco.
4. Imprimindo
Use o programa $SAMBADIR/bin/testparm para testar se as configurações no Samba e no printcap estão corretas.
Para imprimir, digite lpr .
Para maiores informações sobre o Samba, consulte o Samba – Como Fazer.
Para montar uma partição tradicional, usamos o comando: mount /dev/hd? /destino (e.g. mount /dev/hd1 /dos) Mas se a partição for win95, e os arquivos tiverem extensão maior que 8digitos.3digitos, esses arquivos aparecerão "truncados", tipo, em vez de “eu adoro sorvete.html” fica euador~1.htm...
Para não acontecer isso, temos que montar a partição com parâmetros vfat, para isso, compile seu kernel para suportar vfat e ao for montar a partição, útilize o comando: mount -t vfat /dev/hd? /destino (ex. mount -t vfat /dev/hda /win95).
Outro jeito, para alguém que monta as partições na inicialização, tem de se editar o arquivo /etc/fstab, e em vez da palavra msdos, você coloca vfat. Fica muito bom.
Você pode passar tudo dos discos velhos para os novos de forma fácil e sem perder nada. Só vai ter de rodar o lilo de novo, uma vez que os discos novos estiverem nos lugares definitivos. Para isto, vai ser necessário bootar por um disquete uma vez, logo tenha um disquete de boot do seu sistema disponível. Aqui está a receita:
1) Monte os seus discos novos numa máquina (a nova ou a velha) junto com os velhos. Vamos assumir que é tudo IDE, mas dá na mesma se for SCSI. Digamos que os velhos sejam hda e hdb e os novos hdc e hdd. Boote a máquina em modo single user (use "linux single" no prompt do lilo) ou dê um shutdown para single user (user "shutdown now").
2) Particione os novos discos com o cfdisk (ou outra ferramenta para criar partições no disco) fazendo:
cfdisk /dev/hdc e cfdisk /dev/hdd
e formate cada partição com o mke2fs, como em:
mke2fs /dev/hdc1
Para partições muito grandes (vários GB ou mais), recomenda-se usar a opção sparse, "-s 1", do mke2fs. Formate a área de swap também, com o mkswap, ela pode ser de até 2 GB (tudo isto para o kernel 2.2).
3) Cada partição existente em seu sistema hoje deve ter uma correspondente (igual ou, em geral, maior) nos discos novos. Só para exemplificar digamos que o esquema de particionamento é o seguinte:
hda: 1 / hdb: 1 /home
2 swap
3 /tmp
5 /var
6 /usr
Estes são os velhos, vamos assumir que é o mesmo esquema para os novos:
hdc: 1 / hdd: 1 /home
2 swap
3 /tmp
5 /var
6 /usr
4) Monte o novo root em /mnt:
mount /dev/hdc1 /mnt
e execute o seguinte comando (estando em qualquer diretório):
( cd / ; tar -cplf - . ) | ( cd /mnt ; tar -xpf - ) &
A opção "l" no primeiro tar garante que ele não saia do filesystem, as opções "p" preservam tudo que é possível (ownership, datas, proteções). Se você quiser olhar o que está acontecendo faça isto no foreground e coloque uma opção "v" (verbose) no segundo tar (demora um pouco mais):
( cd / ; tar -cplf - . ) | ( cd /mnt ; tar -xpvf - )
Isto vai copiar recursivamente todo o conteúdo do primeiro filesystem no segundo. Feito isto, você tem de consertar o diretório lost+found, faça:
cd /mnt
rmdir lost+found
mklost+found
5) Monte o novo tmp em /mnt/tmp:
mount /dev/hdc3 /mnt/tmp
e execute o seguinte comando (estando em qualquer diretório):
( cd /tmp ; tar -cplf - . ) | ( cd /mnt/tmp ; tar -xpvf - )
Em seguida conserte o lost+found como acima. Pode parecer bobagem fazer
isto no /tmp mas faça a rotina, a transferência vai acertar as permissões, senão você vai ter de fazer isto na mão depois.
6) Repita a dose pra /var e /usr, transferindo para /mnt/var e /mnt/usr. Depois faça o mesmo para /home, tendo montado o /dev/hdd1 em /mnt/home.
7) Seus discos novos estão prontos. Dê um shutdown no seu sistema, retire os discos velhos, coloque os discos novos no lugar deles e boote o seu sistema com o floppy de boot, em single-user (use "linux single"). Uma vez o sistema rodando, entre como root e rode o comando "lilo".
8) Fim de receita, o seu sistema está com discos novos, pode ir para multi-user ou rebootar e começar a usar.
Só mais algumas observações:
Se você mudar o esquema de particionamento vai ser necessário fazer os ajustes correspondentes no arquivo /etc/fstab do novo sistem; o método é o mesmo acima, com algumas poucas modificações para juntar ou separar os filesystems que você mudar.
Os novos discos poderiam ser transferidos para um novo sistema em vez de ficar no mesmo, desde que ele seja do mesmo tipo do primeiro, com o mesmo tipo geral de hardware. Ou seja, não dá para fazer este tipo de coisa de um Pentiumn para uma Alpha, mas dá para fazer de um Pentium para um Pentium II ou III.
O LILO (Linux Loader) é um utilitário do Linux que gerencia as partições. Ele é usado pela maioria como um "boot manager" que divide cada boot para cada tipo de sistema. Nos computadores domésticos, geralmente se encontra outros sistemas, e por isso eles utilizam o LILO para que escolham o sistema que queira usar neste momento.
O LILO tem seu arquivo de configuração em /etc/lilo.conf. Lá ele armazena as informações necessárias para que ele faça a "divisão" de partições.
Um arquivo de configuração comum para dois sistemas (Linux+Win95) é esse:
---
# LILO – arquivo de configuração
# Início da configuração global do LILO
boot = /dev/hda
#compact # rápido, mas não irá funcionar em todos os sistemas
delay = 50
vga = normal # força um estado são
ramdisk = 0 # configuração de gente paranóica
# Fim da seção global
other = /dev/hda3
label = win95
table = /dev/hda
image = /vmlinuz
root = /dev/hda1
label = Linux
read-only #Sistemas não-UMSDOS devem ser checados como somente #leitura
---
Vamos agora ver as partes do arquivo passo a passo. As partes de texto que seguem após o # são apenas comentários, não serão processadas.
1. A linha: boot = /dev/hda
Ela indica onde será o funcionamento do LILO, nesta linha, o LILO está configurado para rodar no MBR. Mas podemos mudar o /dev/hda para outro tipo de funcionamento. Um exemplo é colocar para funcionar em um disquete: substituímos o boot = /dev/hda pelo boot = /dev/fd0 (ou fd1, fd2... dependendo aonde está seu driver de disco)
2. delay = 50
Esta linha indica em quanto tempo a partição padrão (você verá mais a frente) vai entrar automaticamente, ou seja, sem você mexer em nada. Essa linha está configurada para rodar em 5 segundos.
Agora vamos ver como configurar quais partições estão disponíveis. A linha que coloca a partição disponível é...
Para uma partição Linux:
---
image = /vmlinuz
root = /dev/hda1
label = Linux
read-only # Non-UMSDOS filesystems should be mounted read-only for checking
---
As únicas partes em que você deve mudar são as linhas:
root = /dev/hda1 #em vez de /dev/hda1 coloque a partição Linux
e
label = Linux #onde tem Linux você muda se quiser por uma palavra-chave qualquer
Para uma partição de outro tipo:
---
other = /dev/hda3
label = win95
table = /dev/hda
---
As únicas partes em que você deve mudar são as linhas:
other = /dev/hda3 <--- em vez de /dev/hda3 coloque a partição que você queira
label = win95 <--- Onde tem win95 você muda se quiser por uma palavra-chave qualquer.
e
table = /dev/hda <--- Você coloca em que "table" está a partição (/dev/hda3)
Pronto. E assim você vai montando um lilo.conf variado com o que você quiser. Outra coisa é usar o liloconfig, um programa que cria o lilo.conf com menus gráficos.
Dica: Inserindo uma Mensagem Personalizada no LILO
Esse tutorial tem como finalidade ensinar como inserir uma mensagem personalizada no LILO (Linux Loader).
Procedimentos:
1. Edite o arquivo /etc/lilo.conf:
2. Insira a seguinte linha de comando no lilo.conf, como no exemplo abaixo:
message=/boot/bootmsg
boot=/dev/hda
map=/boot/map
install=
/boot/boot.bprompt
timeout=50
other=/dev/hda1
label=win
table=/dev/hda
image=/boot/vmlinuz-2.0.36-2cl
label=linux
root=/dev/hda3
read-only
3. O parâmetro "message=" informa ao LILO o caminho absoluto de onde se encontra a mensagem de boot, que será exibida quando o LILO for carregado.
4. O arquivo /boot/bootmsg é o arquivo de texto onde contém a sua mensagem, esse nome pode ser substituído por qualquer outro (ex.: /etc/boot_message.txt). Mas lembre-se de alterar o nome e caminho do arquivo no parâmetro "message=".
5. Após a edição do lilo.conf, salve e execute estes comandos no terminal (ou XTerm) para
atualizar o LILO na MBR:
# lilo
6. Abaixo segue um exemplo de mensagem personalizada, já corretamente diagramada:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* LILO - Linux Loader *
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Escolha a sua opcao:
[ LINUX ] = Linux Red Hat 5.2 (Apollo)
[ WIN ] = Microsoft Windows 98
Pressione enter ou aguarde 5 segundos.
7. Abaixo desta mensagem, será exibido o prompt do LILO para que o usuário faça a sua escolha:
boot: _
Disposições Finais: cada vez que você alterar ou inserir algum parâmetro no arquivo /etc/lilo.conf, você deve executar os comandos do passo 5.
- Mensagens de erro do LILO
Quando o LILO é carregado, ele escreve a palavra “LILO” na tela. Cada letra é impressa na tela antes ou depois de executar uma tarefa específica. Se o LILO falha em algum ponto ele para de escrever “LILO” e as letras restantes que foram exibidas podem ser usadas para se identificar o problema.
Isto é descrito em maiores detalhes mais abaixo.
* Note que alguns dígitos em hexadecimal podem ser inseridos após o primeiro “L” se um problema passageiro (ocasional) ocorre no disco. A menos que o LILO para nesse ponto, gerando uma infinidade de códigos de erro, esses dígitos não apresentam nenhum problema sério.
[mensagem] – descrição do problema
({nada}) – Nenhuma parte do LILO foi carregada. Ou o LILO não foi instalado ou a partição cuja a qual que foi declarada como setor de inicialização (boot sector) não está ativa.
L {erro} – A primeira parte do LILO foi carregada e iniciada, mas não pôde iniciar o segundo estágio do LILO. Os dois códigos de erros indicam o tipo de problema. Esta condição normalmente indica um problema de físico no disco ou um erro na configuração da geometria do disco.
LI ... - O primeiro estágio do carregador de boot pode carregar o segundo estágio, mas não pode executá-lo. Isto pode ser causado pelos parâmetros do HD não terem sido colocados corretamente ou por mover /boot/boot.b sem executar o instalador de map.
LIL ... - O segundo estágio do carregador de boot foi inicializado, mas não pode carregar a tabela de descrição do arquivo map. Isto geralmente é causado por um erro de mídia(HD) ou pelos parâmetros do HD não terem sido colocados corretamente.
LIL? ... - O segundo estágio do carregador de boot foi inicializado em um endereco incorreto. Isto pode ser causado pelos parâmetros do HD não terem sido colocados corretamente ou por mover /boot/boot.b sem executar o instalador de map.
LIL- ... - A tabela de descrição está corrompida. Isto pode ser causado pelos parâmetros do HD não terem sido colocados corretamente ou por mover /boot/boot.b sem executar o instalador de map.
LILO ... - Todas as partes do LILO foram carregadas com sucesso.
Esses é uma das grandes vantagens para quem trabalha ou usa o Linux, mesmo que não seja um programador especialista em C: você pode recompilar o kernel do Linux de modo que ele pode ficar costumizado conforme suas necessidades.
Mas você pode estar se perguntado “por que eu faria isso? ”. Vou lhe dar três bons motivos:
Atualização do sistema: isso na verdade acumula duas vantagens. De tempos em tempos um novo release do kernel é liberado. Por exemplo, se você tem o kernel 2.2.17, você poderia atualizar para a versão 2.2.19. Ou seja, uma atualização de release. Essas atualizações implicam resoluções de bugs e falhas de segurança, assim como trazem novas facilidades.
Costumizar o kernel para seu sistema: por exemplo, você pode ter uma máquina que não possui uma controladora SCSI, ou então não possui USB. Então por que manter essas facilidades no kernel? Fazendo isso, você diminui o tamanho final do kernel, de modo que ele fique mais rápido. Isso representará uma melhora de desempenho, principalmente se você costumizar o kernel para o processador específico da sua máquina.
Aplicação de patches: patches são pequenas correções ou inserção de novas facilidades que você inseri no código fonte do kernel. Na realidade, são pedaços de código inseridos; você inserir um patch, e depois recompila o kernel. Mais adiante neste capítulo, irei mostrar como inserir um patch no kernel.
Para recompilar seu kernel para uma versão nova que você pegou, você deve prosseguir como descrito abaixo.
Requisitos mínimos do sistema:
Um kernel 2.2.7 ou superior.
Programas: gcc, make.
Biliotecas: ncurses, libncurses
Downloads:
http://www.kernel.org
e demais espelhos
Vocabulário:
FAT: File Alocation Table é o tipo de partição do DOS Filesystem: tipo de partição quanto a sua formatação
ISDN, IrDa e Amateur Radio:
Nesse tutorial não há suporte para esses tipos de dispositivos devido que os mesmo são estritamente restritos ao público em geral. Sinto muito.
Passo 1 - começando
Digite em um terminal:
cd /usr/src (em geral é nesse diretório)
Agora renomei o diretório antigo do kernel:
mv linux old (logicamente se você tiver este diretório)
Agora descompacte-o kernel novo que você baixou da Internet:
mv linux-2.2.5.tar.gz (por exemplo. Pode ser também .tgz) /usr/src
tar -zxvf arquivo.tar.gz
Ele descompactou os arquivos em /usr/src/linux. Vá até esse diretório.
Para finalizar, digite:
make menuconfig (a melhor opção se você está usando o modo de promtp: um menu navegável pelas setas do teclado)
ou
make xconfig (menu de configuração dentro do X-Windows, com suporte a mouse)
ou
make config (um script feio, que se limita a dar opções para você responder; péssimo de usar, uma vez que você não pode voltar e mudar uma escolha).
Agora, siga as configurações abaixo:
Passo 2 - A configuração
Prompt for Development and/or incomplete code/drivers
Ative suporte a isso, se você deseja suporte a dispositivos experimentais ou incompletos. Se você não possui dispositivos com drivers de teste, deixe como Não.
Processor family
Escolha o tipo do seu processador.
Math emulation
Se você possui um 386 coloque, senão não ponha.
MTRR (Memory Type Range Register) support
Se você possui um pentium 2 com uma placa AGP, ponha. Caso contrário não ponha.
Loadable module support:
Enable loadable modules support
Ative isso sem falta, se você for usar módulos.
Set version information on all symbols for modules
Recomendamos por isso, se você for usar módulos.
Kernel module loader
Ative suporte a isso se você colocou suporte em enable loadable modules support.
General setup:
Networking support
Ative esse suporte, se você vai se conectar à Internet ou vai usar uma rede.
PCI support
Ative suporte a esse dispositivo, se você deseja usar as suas placas PCI. Caso você não tenha alguma placa PCI (raridade nos computadores mais novos) não ative suporte a esse dispositivo.
PCI bridge optimization (experimental)
Se você possuí uma BIOS PCI, coloque isso. Caso contrário, não é recomendável.
System V IPC
Recomendamos suporte a esse dispositivo
Sysctl support
Recomendamos suporte a esse dispositivo
Plug and Play support:
Plug and play support
Se você possui placas Plug and Play, ative suporte a esse dispositivo, caso contrário não.
Auto-probe for parallel devices
Ative isso se você possuir dispositivos PnP externos. Não é garantido que eles serão identificados.
<!-- *******************************Block Devices******************************** -->
Block Devices:
Normal PC floppy disk support
Coloque sim (Y)!
Enhanced IDE/MFM/RLL disk/cdrom/tapy/floppy support
Se você possui um driver de CD, de diskete, HD, ou fita IDE, coloque sim. Recomendável por Y para a maioria dos usuários.
Use old disk-only driver on primary interface
Se você não achou o seu device IDE ainda, coloque Y aqui.
Include IDE/ATA-2 DISK support
Recomendável por Y.
Include IDE/ATAPI CDROM
Se você possui um cd-rom , há grandes probabilidades dele ser IDE/ATAPI.
Include IDE/ATAPI TAPE support
Se você possui uma unidade DAT IDE ou ATAPI, coloque, caso contrário não.
Include IDE/ATAPI FLOPPY support
Se você possui um disk drive ou outro dispositivo IDE/ATAPI FLOPPY (há drives de disketes que são assim, mas não todos) ative esse suporte, caso contrário não.
SCSI emulation support
Só coloque se você precisa emular SCSI. Se colocar, coloque como suporte nativo (Y)
CMD640 chipset bugfix/support
Coloque Y.
RZ1000 chipset bugfix/support
Coloque Y.
Generic PCI IDE chipset support
Se você usa HD`s IDEs e possui uma BIOS PCI coloque Y aqui. Recomendável por Y para a maioria dos usuários
Generic PCI bus-master DMA support
Coloque Y aqui se você colocou suporte em Generic PCI IDE chipset support
Boot off-board chipsets first support
Coloque N.
Use DMA by default when available
Coloque Y.
OPTi
82C621 chipset enhanced support (EXPERIMENTAL)
Tekram TRM290
chipset support (EXPERIMENTAL)
NS87415 chipset support
(EXPERIMENTAL)
VIA82C586 chipset support (EXPERIMENTAL)
CMD646
chipset support (EXPERIMENTAL)
Escolha o seu chip acima.
Other IDE chipset support
Suporte a perifericos IDE não padrão no mercado. Os ponha sim, se você não achou o seu dispositivo de hardware IDE acima
Additional block devices
Se você deseja suporte à hardwares nessa categoria não listados acima, coloque Y ou M aqui.
Tempo previsto:
Pentium 133Mhz com 32 de RAM: 45 minutos
Pentium
2 400Mhz com 64 de RAM: 4 minutos e 30 segundos
No diretório do seu source (por exemplo o /usr/src/linux), digite:
make dep
Isso irá gerar dependênciasias. Após esse processso digite:
make clean
Isso irá apagar configurações antigas. Para finalizar, digite:
make bzlilo
Agora espere! Isso demora um pouco (olhe o tempo aproximado acima)
Passo 4 - Após a compilação
Se ele compilou, sem nenhum erro, digite no terminal:
reboot
Agora escolha a opção que lhe convém no boot
<!-- Problemas mais frequentes -->
Problemas mais freqüentes:
Quando eu digito make xconfig, o make retorna erro. O que eu faço?
Entre no X e repita o comando.
Quando eu digito make menuconfig, ele fala dá erro. O que eu faço?
Para usar o make menuconfig, você precisa da ncurses instalada. Verifique se a mesma esta instalada.
No meu Linux não existe o diretório /usr/src/linux. O que eu faço?
Simples! Verifique se ele existe em outro lugar no seu pc: find / -name linux. Caso não exista pegue um kernel novo na internet e descompacte-o no diretório /usr/src (vide Passo 1).
Depois que eu compilei o kernel novo eu não consigo montar as partições do Windows e do DOS. O que eu faço?
Verifique na sua configuração do kernel em Filesystems se você habilitou suporte à VFAT e a MS-Dos como suporte nativo(*).
Para informações mais detalhadas, consulte o Kernel-HOWTO e sempre leia o README que acompanha cada kernel, pois eles sempre tem algumas novidades.
Como insiro um patch no kernel?
root@valhalla.foobar# gunzip fat32_joilet_nls_patch-0_2_7.gz
root@valhalla.foobar# patch -p0 < fat32_joilet_nls_patch-0_2_7
Linux não reconhece Impressora+Zip Drive
Zip Drive e Impressora não podem útilizar a mesma porta ao mesmo tempo.
Compile ambos os suportes aos 2 dispositivos como 'Modulo' e quando ter que utilizar um ou outro, carregue o modulo correspondente...
O Linux dá boot com o volume do Som no máximo
Ou você usa o 'xmixer' para controlar o volume, ou arranje por aí um programa chamado 'aumix' (tem no ftp.redhat.com e no sunsite.unc.edu) e coloque-o no seu .bash_profile :
aumix -L > /dev/null
Assim você terá o volume ajustado para a última alteração que você efetuou...
O Boot do Linux dá um monte de mensagens "Unresolved symbols in module"
Isso ocorre porque o sub-diretório /lib/modules/2.0.30 está com módulos aos montes (os que vieram com a distribuição); eu tive esse problema e resolvi dando:
mv -i /lib/modules/2.0.30 /lib/modules/2.0.330.old
cd /usr/src/linux
make modules
make modules_install
(ele vai criar um novo /lib/modules/2.0.30 mas apenas com os que você vai usar)
Como vejo quanto o Linux está reconhecendo de memória?
cat /proc/meminfo
free - Dá só a informação de memória livre, utilizada e informação sobre o swap.
Como eu mantenho os menus e as cores do ncurses no ambiente X, usando o xterm?
Lendo os fontes do ncurses descobri que ele usa chamadas de terminal, mas lá não falava o tipo de terminal... Usando o VNR (Vai no Rumo) usei export TERM=Linux (terminal default do console) e adivinhem, funciona...
O mais legal é que ele fica igual ao console, inclusive se você mudar a fonte ele fica no terminal, legal...
Como posso saber quantos hard links tem um arquivo e quantos ele pode ter
O número de hardlinks de um arquivo aparece no comando ls -l:
drwxr-sr-x 4 user group 1024 Feb 26 1997 xtar
-rwxr-xr-x 1 user group 942 Jun 30 1995 xterm.login
Aquele "4" logo depois das permissõs é o número de links para o arquivo.
> ln: cannot link `/bin/ls' to `/home/user/bin/ls': Too many links
Este erro, em geral, é um erro no próprio comando que ao tentar resolver um "link" acha um "link" que aponta para ele mesmo, que aponta ...
É possível reparticionar um HD que só tenha Linux sem perder dados?
Se você tem varias partições no HD é fácil fazer isso, basta escolher uma delas, de preferência uma que comece e termine antes do cilindro 1024 (se não me engano) confira as partições e cilindros/setores com fdisk (ou cfdisk se for Debian). Tb escolha uma partição que não seja a root, pois dará muito trabalho (se for uma partição só para o /home, por exemplo, você pode transferir para outro local, mesmo que não seja uma partição exclusiva, ao passo que a partição root / deve ter uma partição exclusiva para ela, não sei se me fiz entender).
Digamos esse disco:
# mount
/dev/hda1 on / type ext2 (rw)
/dev/hda2 on /home type ext2 (rw)
/dev/hda3 on /usr type ext2 (rw)
none on /proc type proc (rw)
sendo a /dev/hda4 a partição de swap.
Digamos que a partição /home seja a escolhida, o ideal seria joga-la na partição raiz em /dev/hda1, verifique com "df" se existe espaço para isso, senão veja em /dev/hda3. Dai é so'...
1 - copiar com "tar" para um diretório /home.novo (ou /usr/home)
( cd /home ; tar xf - . ) | ( cd /home.novo; tar xvf - )
2 - alterar os locais de montagem em /etc/fstab
3 - desmontar a partição atual do /home
umount /home
4 - apagar o diretório /home atual e ajustar o novo diretório /home
rmdir /home
mv /home.novo /home (ou "ln -s usr/home /home" )
5 - se tudo correu bem, chamar o (c)fdisk e apagar a antiga partição do /home (/dev/hda2) e fazê-la ativa (o DOS e Win95, só se instalam em partições ativas).
6 - reiniciar pelo DOS, etc. etc.
É aconselhável que tudo isso seja feito sem ninguém logado, exceto você como root e sem programas rodando, como o XFree.
Como eu faço para dar update no database do Locate?
O comando é :
prompt# updatedb
Na distribuição Slackware tem uma entrada no crontab do root que é :
# This updates the database for 'locaté every day:
40 02 * * * updatedb 1> /dev/null 2> /dev/null
Eu tenho a impressão de se no original esta linha não é para 2:40h mas sim para 7:40h. Como a minha máquina fica ligada direto, às 7:40h eu já estou trabalhando e ( quando eu tinha um 486 ) este processo pesava um pouco eu alterei o horário. Se a sua máquina não fica ligada direto, mude o horário para algo mais conveniente ( por exemplo hora do almoço ) em que sua máquina possa estar ligada.
É possível utilizar 2 ou mais Windows Managers? Como proceder?
Você pode tentar este:
StartSelector.tar.gz - WindowManager chooser for X
Não consigo fazer as teclas “backspace” e “delete” exercerem suas funções corretamente
Eu praticamente não uso o Linux em modo texto, por isto a minha "solução" é para o X11. Crie um arquivo '.Xmodmap' no seu $HOME com o seguinte conteúdo :
keycode 22 = BackSpace
Com isto a tecla "Backspace" passa a gerar o "^H" como esperado. A tecla ‘Delete’ eu deixei gerando o 'Rubout' mesmo, em certas situações a gente precisa um e em outras a outra.
Como posso verificar em qual runlevel está o sistema?
ps aux | grep init
root 1 0.0 0.2 844 72 ? S Sep 6 0:16 init [3]
user 9121 0.0 0.9 884 296 p3 D 13:25 0:00 grep init
O runlevel atual desta máquina é '[3]'
Como posso inicializar um processo que consta do /etc/inittab manualmente?
telinit 3
ou
init q
Perdi minha senha root, como a recupero?
No prompt do lilo, digite LILO:
linux single
Você vai entrar no modo texto do Linux com o mínimo de aplicações necessárias para fazer manutenção, é a idéia de se inicializar o Linux em modo single user.
Nesse modo, não é solicitada senha nenhuma para você. Daí em diante você só terá que fazer uso do comando
passwd
E alterar a senha do root.
Como você deve (espero) estar imaginando, isso gera um problema grave de segurança, uma vez que qualquer pessoa pode mudar a senha root se tiver acesso físico a máquina. Vá a seção sobre Segurança e se informe sobre como evitar isso.
Aumentando Partição Linux
Tem uma alternativa bem prática:
1. Se você tem espaço sobrando na partição Window95, crie um diretório, por exemplo /Linux;
2. Monte a partição Windows95 no Linux em um diretório, por exemplo /w95, não esqueça de usar o modulo vfat ;
# mount -t vfat /dev/hda1 /w95
3. Crie arquivos do tamanho que você precisar:
# dd if=/dev/zero of=/w95/linux/loop_file_name bs=1024k count=NNNN
4. Monte os arquivos com LOOP devices:
# mount -o loop -t ext2 /w95/linux/loop_file_name /fs_loop_name
5. Formate o fs como ext2
# mke2fs -v /fs_loop_name
Depois basta criar um rc.loops em /etc/rc.d com os mounts, passo 2 e passo 4....
Nesta seção estaremos discutindo como conectar o Linux na Internet e como habilitar os seus diversos serviços de rede. O Linux suporta conexão com PPP, PLIP, UUCP, TCP-IP, IPX e Apple Talk. Dentre essa lista de protocolos suportados, eu estarei falando sobre redes TCP-IP exclusivamente.
Se você carece de conhecimentos básicos sobre TCP-IP minha recomendação é que você procure um tutorial na Internet ou um bom livro para aprender ao menos o básico sobre redes locais e o protocolo. Considere ler o “Guia do Administrador de Redes”, traduzido pela Conectiva e disponível gratuitamente em seu site http://www.conectiva.com.br .
Vamos começar por aprender como configurar os dispositivos que irão ligar a máquina Linux a uma rede qualquer. O Linux aceita uma grande variedade de dispositivos diferentes, de Ethernet à rádio, redes sem-fio e FDDI.
O uso de placas padrão Ethernet é disparado o dispositivo mais utilizado em redes de computadores. Pelo menos por enquanto estaremos lidando apenas com esses dispositivos.
Se você possui alguma experiência com outro sistema operacional já deve estar se perguntando que primeiro deve ser necessário configurar o driver da placa de rede, e se você pensou assim, está correto!
Quando você instala sua distribuição favorita, ela muito provavelmente já terá incluso drivers para as placas mais famosas, e essa é uma preocupação que você deve ter: evite adquirir aquelas placas de funcionalidade duvidosa que são do tamanho do seu dedão da mão... minha sugestão é usar placas com chip RTL-8139 (a famosa Realtek), placas da 3Com e da Cyclades.
Vamos usar como exemplo uma placa com um chip RTL 8139, a NE 2000 PCI. Uma rápida olhada no diretório /usr/lib/modules/net vai lhe mostrar alguns módulos, que na verdade são os drivers que estamos procurando. Normalmente os arquivos tem nomes sugestivos, como ne2k-pci.o, então não precisa entrar em pânico quando tiver que procurar o driver da placa de rede que está tentando configurar.
Se você for uma pessoa atenta, vai se lembrar que eu disse algo sobre módulos. Você trabalhará com módulos carregáveis para configurar a placa de rede.
Execute o comando como root:
root@valhalla# modprobe ne2k-pci
eth0: RealTek RTL-8029 found at 0xe800, IRQ10, 00:00:B4:9B:60:66
O comando modprobe tentará carregar o módulo no kernel se encarregando de passar valores corretos de IRQ e e E/S referentes ao dispositivo /dev/eth0. O dispositivo /dev/eth0 faz referência a primeira placa de rede ligada ao computar, no caso uma placa ethernet (daí o eth).
Você também pode usar o comando insmode para realizar a mesma tarefa, mas você terá que passar os valores de IRQ e E/S manualmente. Placas antigas, com barramento não-PCI provavelmente precisarão de sua ajuda manual.
Ainda aproveitando o papo sobre módulos, o comando
lsmod
irá mostrar todos os módulos carregados, inclusive da placa de rede (assim espero).
Para os fãs do Debian, o comando modconf irá prover uma interface em curses (para utilizar com o teclado) bem prática para encontrar e carregar o módulo.
E agora? Será que você deve reiniciar a máquina agora? Pelo amor de Deus, NÃO!!! Reincie apenas o serviço! Essa história de reiniciar o computador após algumas alterações não é uma característica do Linux e outros sistemas operacionais decentes. Continue acompanhando.
Pois bem, o dispositivo já está funcional, mas é hora de trabalharmos agora a parte de configuração de rede. O comando ifconfig permitirá que você configure a placa de rede com parâmetros de endereço e máscara de rede, por exemplo:
root@valhalla# ifconfig eth0 192.168.0.1 netmask 255.255.255.0
O comando possui diversos parâmetros. Se você digitar apenas o comando, poderá ver todas as interfaces de rede configuradas em sua máquina:
root@valhalla# ifconfig
Se você quiser derrubar alguma interface, execute:
root@valhalla# ifconfig eth0 down
No exemplo, a interface em /dev/eth0 foi desativada.
Essa configuração realizada só está carregada na memória do computador: assim que ele for desativado, as informações terão sido perdidas. Isso é extremamente desagradável para um administrador de rede. Isso pode ser facilmente resolvido salvando-se as configurações em arquivos. Mas você não pode pode sair colocando essas configurações em qualquer arquivo3 ! Os gurus do Linux criaram padrões para guardar esses arquivos, e eles mudam ligeiramente de distribuição para outra. Continue acompanhando.
Primeiro vamos guardar a configuração do módulo, assim toda vez que o sistema reiniciar, o módulo será carregado sem sua intervenção. O arquivo /etc/conf.modules (ou /etc/modules.conf) fará o serviço:
/etc/conf.modules
alias eth0 ne2k-pci
alias parport_lowlevel parport_pc
alias sound-slot-0 sb
options sound dmabuf=1
alias synth0 opl13
options opl3 io=0x388
options sb io=0x220 irq=5 dma=1 dma16=5
mpu_io=0x330
alias usb-controller usb-uhci
Um pouco de atenção irá lhe mostrar que existem mais coisas configuradas no arquivo além do módulo da NE2000: são outros módulos configurados para serem carregados durante o boot do computador. Não mexa nas entradas do arquivo sem saber de que módulos esses tratam.
Vamos trabalhar agora para configurar os parâmentros como endereço IP, endereço do gateway e outros detalhes importantes da configuração de rede. Há duas formas de realizar essa configuração: manualmente ou requisitando ao servidor DHCP local.
A configuração manual
Os arquivos aqui podem variar, mas distribuições oriundas do Red Hat, você pode procurar pelo seguintes arquivos:
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BROADCAST=192.168.0.255
IPADDR=192.168.0.20
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
Vamos as explicações. No diretório /etc/sysconfig/network-scripts você poderá ter vários arquivos ifcfg-ethX (onde X será o número da interface ethernet). Cada arquivo criado fará referências para a placa de rede instalada4.
Cada linha explica um parâmetro que será passado para a placa de rede quando esse arquivo for lido. DEVICE mostra o dispositivo, IPADDR o endereço IP, NETMASK a máscara de rede (no caso a padrão), NETWORK a rede onde a máquina está localizada e ONBOOT diz se a placa será configurada no tempo de boot.
/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=linux.valhalla
GATEWAY=192.168.0.1
GATEWAYDEV=eth0
FORWARD_IPV4=yes
A maioria dos parâmetros são auto-explicativos. O parâmetro GATEWAYDEV é utilizado quando existe mais de uma placa de rede na máquina e você deve definir qual será usada como gateway padrão. Já o FORWARD_IPV4 será utilizado apenas se você decidir utilizar essa máquina como um roteador.
Estamos quase lá. Falta a configuração quanto a resolução de nomes.
/etc/hosts
127.0.0.1 localdomain.localhost localhost
192.168.0.20 linux.valhalla linux
este aqui:
/etc/host.conf
multi on
order host, bind
e mais este aqui:
/etc/resolv.conf
nameserver 192.168.0.1
Esses três arquivos cuidam da resolução de nomes para endereços IP. O primeiro identifica as placas de rede. O segundo arquivo indica qual a ordem que o computador deve tentar para resolver nomes, no caso, procura primeiro pelo arquivo HOSTS e depois pesquisa o servidor DNS configurado no arquivo RESOLV.CONF.
Ufa! Isso pode dar um trabalhão danado. Mas você não precisa fazer isso em todas as máquinas. Use o DHCP de sua rede local e guarde essa configuração toda para servidores dedicados que devem funcionar independente do DHCP.
A configuração automática
É muito complicado configurar uma máquina Linux para utilizar DHCP. Edite o arquivo /etc/sysconfig/network-scripts/ifcfg-eth0 e coloque apenas a linha:
BOOTPROTO=dynamic
E aí, ficou cansado? Basta agora reiniciar o serviço de rede. Mas como fazer isso?
Você pode fazer isso de diversas formas. Uma é reiniciar todo o serviço de rede:
root@valhalla# service network restart
Isso irá reiniciar todas as placas de rede. Você também pode reiniciar apenas uma interface de cada vez:
root@valhalla# ifconfig eth0 down
root@valhalla# ifconfig eth0 up
Mais de um endereço por placa de rede
Também conhecido como IP Aliases (apelidos de IP) você pode configurar mais de um endereço IP para uma placa ethernet. Ela responderá para cada um dos endereços que possuir.
root@valhalla# ifconfig eth0:0 192.168.0.21
Para manter a configuração permanente você pode criar dentro do arquivo:
DEVICE= “eth0:0”
IPADDR= “192.168.0.21”
O Inetd consiste em servir outros serviços, como o tópico diz, ele é um servidor de serviços. Mas como ele funciona? Bem, ele é quem vê quem está acessando a máquina, em que porta, e como, e redireciona essa conexão ao seu respectivo serviço. Um exemplo, se a porta 234 estiver associada ao telnet, quem acessar conectar no IP da máquina, na porta 234 vai acessar o telnet desta máquina.
A idéia de usar o Inetd é não ter serviços como telnet ou ftp rodando o tempo todo, o que acarretaria em desperdício de recursos do sistema. Tendo somente o Inetd monitorando certas portas e repassando as requisições para os daemons correspondentes, o uso desses recursos fica mais organizado. Concentrar todos esses serviços em apenas um só local facilita também a sua administração.
O arquivo de configuração do inetd.conf é o /etc/inetd.conf e o /etc/services. Eles trabalham em conjunto. Estes arquivos são os que definem as portas e os serviços que essas portas tem.
inetd.conf = Configuração do Servico
services = Configuração das portas
Vou falar individualmente de cada arquivo, e depois vamos juntar os dois e tirar algumas conclusões.
[ services ]
Este arquivo como ja falei configura as portas a que os serviços pertencem. Por exemplo, eu quero associar a porta 666 com o serviço hell. Então eu configuro neste arquivo. E depois, para configurar o serviço hell, voce terá que ver o inetd.conf. Por isso que eu digo que os arquivos trabalham em conjunto.
Vamos pegar uma linha do arquivo como exemplo de estudo:
telnet 23/tcp
Aviso: o espaço entre o telnet e o 23/tcp é um tab, sempre use tab nestes espaços ao invés de apertar na barra de espaço.
Bem, mas o que essa linha está dizendo? Esta linha diz que a porta 23 do protocolo tcp está associada ao serviço telnet (que consta no inetd.conf). Toda conexão para a porta 23 do sistema vai ser repassada para o serviço telnet no inetd.conf. Existe também o protocolo udp, então a linha de exemplo acima ficaria:
telnet 23/udp
Acho que já basta. O arquivo só se baseia nisso. você pode ir criando portas como quiser, contanto que o serviço seja válido, e para que seja válido você precisa entender o inetd.conf, e é isso que vamos fazer agora... entender o inetd.conf. Mas antes vamos dar outros exemplos para você não esquecer como funciona o services:
ftp 21/tcp # File Transfer [Control]
(Porta 21 do tcp repassa pro servico ftp)
www 80/tcp http # WorldWideWeb HTTP
(Porta 80 do tcp repassa pro servico www)
finger 79/tcp
(Porta 79 do tcp repassa pro servico finger)
Bom, vamos logo para o inetd.conf.
[ inetd.conf ]
Este arquivo consiste (como eu falei anteriormente) em definir qual o daemon que o serviço vai executar, e como vai executar.
Aviso: os espaços são TABS! Vamos logo com um exemplo pra você entender melhor:
Cada campo significa:
1.O nome do daemon, nome pelo qual o inetd vai catar no /etc/services para ver qual porta usará para se conectar. Se criar um novo, tenha cuidado para repetir o nome.
2.Aqui você escolhe o tipo de socket dependendo do que você quer, pode ser: stream, dgram, raw, rdm ou seqpacket.
3.Protocolo.
4.Tempo de espera.
5.Username do usuário que requisita o serviço.
6.O programa que vai fazer a conexão.
7.O nome do daemon requisitado ou do comando a ser executado.
Pronto. Lembra daquela porta 23 que abrimos anteriormente? Ela não requisita o telnet? Então essa linha aí é a referente ao servico telnet.
Veja que essa linha executa o /usr/sbin/tcpd /usr/sbin/in.telnetsnoopd que vai chamar o daemon do telnetsnoopd (que veremos um pouco mais adiante :) Observe também o protocolo (tcp). Basicamente é isso...
[ os dois juntos ]
Tirando nossas conclusões, vai ficar assim:
1.Alguém conecta em sua máquina na porta 23;
2.O inetd verifica se a porta 23 existe no /etc/services, se existir ele repassa para o serviço correspondente (telnet);
3.O inetd procura no arquivo /etc/inetd.conf se existe o servico acessado no /etc/services (telnet), se achar, a conexão prossegue seu rumo.
Algumas observações: na inicialização do Linux, o inetd é rodado, ou seja, se você quiser modificar alguma coisa nos arquivos, você modifica mas tem que reinicializar o inetd, faz assim:
killall -HUP inetd
Assim as configurações novas vão validar. Agora vamos montar uma porta secreta que acesse telnet, só para distrair um pouco, não vou explicar cada passo, só vou colocar aqui o que eu faço para fazer isso.
Hugo:~# pico /etc/services
--
hell 666/tcp
hell 666/udp
--
Hugo:~# cp /usr/sbin/in.telnetd /usr/sbin/in.logd
Hugo:~# pico /etc/inetd.conf
--
hell stream tcp nowait root /usr/sbin/tcpd in.logd
--
Hugo:~# killall -HUP inetd
Como conectar 2 ou mais máquinas em Linux via rede com suporte de Internet.
=> Primeiro passo
Kernel Configuration
Observações: se você tiver qualquer dúvida quanto a compilar um novo kernel, vá para a seção
1) Você deve configurar o seu kernel com as opções devidas para aceitar o IP Masquerade e a rede TCP/IP ... além dos drivers da placa de rede.
2) De um "make menuconfig" e habilite essas funções :
Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
Loadable module support --->
[*] Enable loadable module support
[*] Set version information on all symbols for modules
[*] Kernel daemon support (e.g. autoload of modules)
Networking options --->
[*] Network firewalls
[*] Network aliasing
[*] TCP/IP networking
[*] IP: forwarding/gatewaying
[*] IP: firewalling
[*] IP: masquerading
[*] IP: ipautofw masq support
[*] IP: ICMP masquerading
Network device support --->
[*] Network device support
PPP (point-to-point) support
SLIP (serial line) support
[*] Ethernet (10 or 100Mbit)
[*] Other ISA cards
NE2000/NE1000 support ---> somente esta ! Se sua placa for compatível, a maioria das placas são, a minha que é uma genius funcionou direitinho com o suport NE2000 ... mas se sua placa constar na lista coloque um "M" do lado dela ...
[*] EISA, VLB, PCI and on board controllers
3) Salve as configurações e recompile seu kernel.
4) Antes de dar um boot edite o arquivo "/etc/rc.d/rc.modules" ... e procure na parte de placas de rede. Tire o comentário da linha em que tiver NE2000 e coloque o endereço e IRQ da placa( Tendo dúvidas sobre isso, de um "cat /proc/pci" ou então olhe no ruwin95 o endereço e a irq no Painel de Controle/Sistema ... lá você encontrará o endereço da sua placa ... é só clicar nela duas vezes que aparecem as propriedades da placa :) )
5) Agora dê um boot.
=> Segundo passo
Network Configuration - X-WINDOWS
1) Se estiver usando o Red Hat, depois de dar o boot, você entra no X-Windows e vah no Painel de Controle dele ... clique duas vezes na ícone referente a NetWorking ... a configuração será bem mais fácil :
2) Antes disso, você tem que ter uma noção da rede que vai fazer :)
Vou fazer isso bem rápido para adiantar o trabalho :
Estou dando um exemplo de como monta um Rede de Classe C, do tipo 192.168.x.x ... esse endereço é designado especialmente para intranets. Defina quem vai ser a máquina servidora, ou seja, a máquina que estará conectada a Internet e fornecendo as outras máquinas da rede( máquinas cliente ) o acesso a Internet também :) . Essa máquina terá o IP :
192.168.1.1 e as outras terão IP : 192.168.1.2 ... 192.168.1.3 ... e ai vai ... todas as máquinas clientes terão que ter um gateway apontado para 192.168.1.1 usando o device "eth0". Chega de teoria e vamos à prática :)
3) == Configuração Pelo Red Hat - Usando o Painel de Controle ==
Esta Configuração é valida para a máquina servidora :
>Na seção NAMES :
Hostname : nome.da.máquina.com.br
Domain : dominio.do.seu.provedor
Nameservers: DNS do seu provedor
PS: Se for nas máquinas clientes só coloque o Hostname e deixe o resto em branco ! :) Se quiser pode colocar para ele procurar o domain do servidor e nameserver o IP do servidor : 192.168.1.1 . Isso pode dar problemas em algumas máquinas, se for o caso apague, e só deixe o Hostname! LEMBRE : SÓ NAS MÁQUINAS CLIENTES ! NA MÁQUINA SERVIDORA VOCÊ TEM QUE COLOCAR O DOMAIN E NAMESERVERS DO PROVEDOR DE ACESSO A INTERNET !!!
>Na seção HOSTS :
IP Name Nicknames
127.0.0.1 localhost
192.168.1.1 nomedoservidor.com.br nomedoservidor
192.168.1.2 nomedocliente1.com.br nomedocliente1
192.168.1.3 nomedocliente2.com.br nomedocliente2
...
PS: O NickName é um alias para facilitar seu trabalho, ou seja, você pode digitar "telnet nomedoservidor.com.br" ou "telnet nomedoservidor" que vai dar no mesmo ! :)
>Na seção INTERFACES :
Você deve dar uma espiada ... provavelmente só terá o "lo" como device nessa parte. Se tiver o eth0 ainda bem ! Você está com sorte ! héée, se não tiver adicione ! Aperte em ADD e escolha EtherNet.
Configurações do EtherNet :
IP: Ipdamáquina ... se for servidor coloque 192.168.1.1
Se for o primeiro cliente coloque 192.168.1.2 se for o segundo 192.168.1.3 e por aí vai !
NetMask: 255.255.255.0 => Pois trata-se de uma rede de classe C !
NetWork: Estah usando 192.168.1.x como IP ?! Então coloque 192.168.1.0
BroadCast: 192.168.1.255 se tiver usando 192.168.1.x
Ative o "Activate Interface at boot time".
Em Interface configuration protocol coloque "none".
>Na seção ROUTING :
Se a máquina for servidora deixe tudo vazio ... se a máquina for cliente
coloque o seguinte :
Default Gateway : 192.168.1.1
Default Gateway Device : eth0
Aperte ADD e coloque :
Device: eth0
Network: 192.168.1.0 ==> Você já viu antes né ?!
NetMask: 255.255.255.0
Gateway: 192.168.1.1
E pronto.
É ... finalmente você configurou tudo no X-WINDOWS ! Agora vamos para o prompt !
==> Terceiro passo
Network Configuration - PROMPT
1) Edite os seguintes arquivos em sua máquina :
= /etc/hosts :
127.0.0.1 localhost
192.168.1.1 meucomp1.server.net meucomp1 -> SERVIDOR
192.168.1.2 meucomp2.server.net meucomp2 -> CLIENTE
| |
nome da máquina <---| |----> seu dominio
Você pode adicionar mais máquinas se quiser : 192.168.1.3 ... etc etc ... mas se lembre que isso pesara mais o seu link com a internet ! :)
PS: meucomp1 e meucomp2 é um alias para facilitar sua vida como antes dito na Configuração do networking no X-WINDOWS.
= /etc/resolv.conf:
search SEU.PROVEDOR.COM.BR
nameserver DNS.DO.PROVEDOR
PS: Só coloque essas linhas se a máquina for a servidora ... na cliente você pode colocar o seguinte : ( se der problemas deixe em branco mesmo )
search meucomp1.server.net ( nome do servidor )
nameserver 192.168.1.1 ( IP do servidor )
= /etc/HOSTNAME
meucomp*.server.net
No * = Coloque de acordo com a máquina que você esta configurando
meucomp1 ou meucomp2
= /etc/sysconfig/network:
NETWORKING=yes
HOSTNAME=meucomp*.server.net
GATEWAYDEV=
GATEWAY=
No * = Coloque de acordo com a máquina que você esta configurando
meucomp1 ou meucomp2.
Se a máquina for uma cliente coloque o seguinte em GATEWAYDEV e GATEWAY :
GATEWAYDEV=eth0
GATEWAY=192.168.1.1
= /etc/sysconfig/network-scripts/ifcfg-eth0
Isso aqui no cliente :
DEVICE=eth0
USERCTL=yes
ONBOOT=yes -> Essas configurações são feitas
BOOTPROTO=none -> pela sua própria máquina( No
BROADCAST=192.168.1.255 -> caso de você ter configurado
NETWORK=192.168.1.0 -> pelo X-WIN. Não altere nenhum
NETMASK=255.255.255.0 -> desses valores, a não ser que
IPADDR=192.168.1.2 -> haja necessidade. :)
Quando for o servidor o valor de IPADDR muda para : 192.168.1.1
Depois de alterado o arquivo ifcfg-eth0 dê o seguinte comando :
chmod +x ifcfg-eth0
= /etc/host.conf:
order hosts,bind
multi on
PS: Este arquivo é igual em todas as máquinas ! :)
=> Quarto e ÚLTIMO passo(Finalmente)
Intranet -> Internet
É, finalmente a última parte!
Conecte o servidor na Internet e digite o seguinte comando tanto no servidor como no cliente :
/sbin/ipfwadm -F -p masquerade
Se quiser faca um script para facilitar sua vida :
bash# touch rede
bash# echo "/sbin/ipfwadm -F -p masquerade" >> rede
bash# chmod +x rede
Copie esse arquivo rede executável para todas as máquinas, e quando conectado na Internet o servidor execute esse script em todas as máquinas.
Agora faca um teste na máquina cliente ... tente dar um telnet para um servidor qualquer que esteja na Internet.
Bem, todo sistema seguro que se preze tem de ter um terminal especial para o monitoramento das mensagens do sistema. Estas mensagens são as mensagens do syslogd.
O syslogd manda as suas mensagens para o arquivo de log /var/adm/messages. Neste arquivo, você pode encontrar tudo, desde mensagens do kernel até conexões aos serviços como ftp, telnet, finger, etc.
O que importa realmente para um sistema seguro é quando se loga estas conexões aos servicos do sistema... Pra vizualizar estas mensagens, é só editar o arquivo citado acima, o /var/adm/messages. Mas não é prático voce ter que ficar editando toda hora para ver se alguma coisa aconteceu, então usamos o comando tail:
tail -f /var/adm/messages
O tail é um programinha que vizualiza as últimas 10 linhas de um arquivo. A opção -f deixa esta vizualização contínua, ou seja, quando uma linha é criada no arquivo, o tail vai mostrar em tempo real (coisa que uma edição no arquivo com um editor de texto comum não faria).
Agora só falta agilizar mais um pouco, vamos agora colocar este comando para que se inicie logo na entrada do sistema. Para quem não sabe, um arquivo de incialização especial para voce colocar comandos "personalizados" é o /etc/rc.d/rc.local (pelo
menos em sistemas com o Slackware). Então vamos colocar o 'tail -f /var/adm/messages' dentro deste arquivo.
Algumas observações antes de fazer isso: Vamos usar aqui outro terminal, para ficar vizualizando o /var/adm/messages com prioridade e sempre, por exemplo, vamos usar o terminal local 12 (tty12). O que fazemos? Editamos o /etc/rc.d/rc.local e adicionamos o seguinte comando:
tail -f /var/adm/messages > /dev/tty12 &
O '> /dev/tty12' redireciona o 'tail -f /var/adm/messages' para o /dev/tty12 (terminal local 12), ao invés de funcionar no terminal atual. Detalhe muito importante: Esse & (E comercial) manda o comando para o background do sistema, NUNCA se esqueca de colocar isso, pois se voce nao colocar, o processo fica rodando sem que voce possa fechar, e seu sistema fica parado esperando aquele processo terminar... Com o processo em background, o sistema continua. Se voce quiser conferir o erro, pode conferir, mas depois vai ter que bootar com o bootdisk e consertar a linha do /etc/rc.d/rc.local (facil não?).
Bem, assim sempre que você ir ao terminal local 12 (ALT+12) irá aparecer as mensagens do sistema atualizadas em tempo real
Observações:
1. Não ative o tty12 com o agetty no /etc/inittab senão dá conflito.
2. Lembre-se de colocar o "&" como dito acima
3. Sempre que possivel vá dar uma olhadinha no terminal.
Muitos administradores de sistema tem medo de abrir a telnet porque usuários podem acessar simplesmente com uma senha comum e mexer em arquivos que não queira. Uma solução simples e prática que funciona.
Quando um usuário manda uma conexão telnet, o daemon do telnet abre um terminal especial para essa conexão (ttypX, onde X é o número do terminal). A partir de que você se conectar a esse terminal, é como que você estivesse acessando a própria máquina estando na frente dela... A única diferenca é que iria usar um terminal local (ttyX).
A solução que achei aqui é rápida e certeira. Mas como funciona? Bem, quando um usuário se loga, sendo localmente ou por telnet, o sistema verifica no arquivo /etc/passwd qual a SHELL (Interpretador de comandos) que o usuário acessa. As shells válidas para este tipo de conexão e outras, como ftp, etc, estão todas listadas no arquivo /etc/shells.
O que faremos aqui é simples, mudaremos a shell do usuário para um dispositivo nulo, que é o '/dev/null'. Mas antes disso, temos que adicioná-lo ao /etc/shells, senão dá certos problemas com outros seviços. Para isso você só vai precisar colocar um simples "/dev/null" (sem aspas), numa linha do /etc/shells.
Agora agente vai mudar o arquivo de senhas. Vamos tomar por exemplo uma linha deste arquivo:
hugo:x:1037:100:Hugo Cisneiros:/home/hugo:/bin/bash
^^^^^^^^^
É só substituir o /bin/bash por /dev/null:
hugo:x:1037:100:Hugo Cisneiros:/home/hugo:/dev/null
^^^^^^^^^
Prontinho! Agora quando o usuário for se logar, ele tentará usar uma shell nula, ou seja, uma shell inválida, que não existe e nunca vai funcionar!
Antes de mais nada, eu uso o Wu-ftpd, que é o que vem padrão na maioria das distribuições Linux. Aqui vamos usar um arquivo de configuração deste programa, não sei se os outros servidores de ftp utilizam esse arquivo, então essa informação fica por sua conta.
Para fazer essa façanha, você terá que criar um grupo especial para usuários que utilizem o ftp somente em seus respectivos homes. Uma observação: Quando é criado um usuário, o grupo padrão dele é o users. Vamos usar aqui exemplos, adapte conforme suas necessidades!
Então vamos criar o grupo especial, vou chamá-lo de grupo hell. Vou no arquivo /etc/group e adiciono a seguinte entrada:
hell::666:
E salvo. Depois iremos mecher com esse arquivo de novo. Agora que foi criado o grupo hell, temos que criar um usuário para esse grupo... Dou o comando adduser, crio o usuário hugo, e logo depois edito o arquivo /etc/passwd, e observo esta linha:
hugo:x:1037:100:Hugo Cisneiros:/home/hugo:/bin/bash
Observações:
Antes de mais nada, cada campo é dividido pelo “:” (dois pontos), então...
1.hugo - Username do usuário
2.x - Indica que o password está no /etc/shadow
3.1037 - UID (User Identification)
4.100 = GID (Group Identification), aqui eu mudo para o 666, que eh o GID do grupo hell.
5.Hugo Cisneiros - Nome, telefone, anotações...
6./home/hugo - HOME do usuario, diretório principal do usuário.
7./bin/bash - O tipo de shell que o usuário usa.
Então, a única coisa que alterei aqui foi o GID, para 666, e ficou assim:
hugo:x:1037:666:Hugo Cisneiros:/home/hugo:/bin/bash
Salvo o arquivo, e vou de novo no /etc/group, e adiciono o usuário hugo a linha do grupo hell:
hell::666:hugo
Caso você queira colocar outro usuário, é só colocar uma , assim:
hell::666:hugo,fulano,sicrano
E salvo. Agora o truque, vamos editar o arquivo de configuração do ftp, o /etc/ftpaccess, e ir lá no fim, onde tem:
guestgroup ftponly
Aqui no caso o ftponly é o que só tem acesso ao home, então mudamos para:
guestgroup hell
Pronto! Agora todos os usuários que se logarem e estiverem no grupo hell, terão seu acesso restrito a somente seu home! Mas surge um problema ... se ele só tem acesso a seu home, como ele vai acessar o /bin/ls que não está em seu home? Simples, crie um diretório bin dentro do home do usuário, e copie o /home/ftp/bin/ls para ele. Caso você não tenha esse arquivo, copie o /bin/ls, mas o ls estático do /home/ftp/bin/ls é melhor.
Se você quiser que o usuário execute certos comandos como o gzip, tar, chmod, chown e essas coisas, é só mandar esses arquivos para o recente diretório bin criado no home do usuário. Esse bin criado, vai ser considerado como o /bin, e o home do usuario como /.
Agora é só ir pra galera!
Observações: dê alguma segurança extra ao ftp, vá no home do usuário e de os comandos:
touch .rhosts .forward chown
root.root .rhosts .forward chmod 400 .rhosts .forward
Bem, começando, realize um login como root. Depois, edite o arquivo host.deny para:
ALL: ALL
Isso fará com que seu sistema fique seguro e não seja usado programas locais remotamente. Depois você terá que permitir você mesmo a usar os programas locais, então, para isso, edite o arquivo /etc/hosts.allow :
ALL: 127.0.0.1
Agora vamos determinar o Host de sua máquina, vá no arquivo /etc/HOSTNAME e coloque um nome qualquer, por exemplo:
wakko
Vamos agora configurar o /etc/resolv.conf , edite ele e coloque assim:
search servidor.com.br
nameserver 200.255.27.0
Onde, search é o domain da máquina a ser acessada e nameserver é o DNS Primário (Veja Win95). Próximo passo será editar o arquivo /etc/hosts e colocar o seguinte:
127.0.0.1 localhost
0.0.0.0 wakko
Note que se você tiver um endereço IP fixo, mude a linha “0.0.0.0 wakko”. Outro arquivo: /etc/networks, edite-o assim:
loopback 127.0.0.0
localnet 0.0.0.0
Agora vamos configurar o username e password. Crie o arquivo /etc/ppp/pap-secrets assim:
dirk * PrettySecret
Note que dirk será o username e PrettySecret o password. Substitua-os com os respectivos username e password. Para Provedores que usam chap em vez de pap, o arquivo acima deverá se chamar "/etc/ppp/chap-secrets". Finalmente, vamos criar o script que fará a conexão. O nome do arquivo será "/etc/ppp/chatscript":
TIMEOUT 5
\Z'\h'(u;\w'x'-\w'´'/2)'´'OK ATDT12345678
ABORT 'NO CARRIER'
ABORT BUSY
ABORT 'NO DIALTONÉ
ABORT WAITING
TIMEOUT 45
CONNECT ""
TIMEOUT 5
"name:" ppp
Note que na segunda linha você tem que substituir "12345678" pelo número a ser discado. Agora vamos criar o script que executará tudo o que configuramos... A conexão!
O arquivo (nome e diretório da sua escolha...) Edite assim:
exec pppd connect \
'chat -v -f /etc/ppp/chatscript' \
-detach crtscts modem defaultroute \
user dirk \
/dev/modem 38400
Não se esqueça de substituir a quarta linha, palavra dirk por seu username. Prontinho, rode o script e voi-lá!
Obs: Estas instruções foram TOTALMENTE tiradas do ISP-Hookup-HOWTO, dúvidas não serão tiradas por mim, mas por sim o dono do HOWTO: Egil Kvaleberg, egilk@sn.no
Primeiro, edite o arquivo "/etc/hosts" assim:
127.0.0.1 localhost
0.0.0.0 wakko
Onde tem wakko você coloca o host de sua máquina. Agora vamos editar o arquivo "/etc/resolv.conf":
domain servidor.com.br
nameserver 200.255.67.1
Onde tem domain, você substitui pelo domain do provedor que você irá acessar. Onde tem nameserver, coloque o DNS Primário do seu provedor.
Digite minicom. (Você terá que ter o programa Minicom, claro). Naquela telinha, digite:
ATDP2345678: para modens de pulso
ATDT2345678: para modens de tom.
Substitua o "2345678" pelo número do telefone a ser discado.
Depois da conexão, o provedor vai fazer o processo de login(como sempre), coloque seu username e seu password e vói-lá! Conectado. Agora vamos sair do minicom sem desconectar (ALT A+Q) ou vamos suspender o minicom(ALT A+J). Agora no prompt, digite:
pppd /dev/modem defaultroute
Isso estabelecerá a conexão.
Pronto, agora você pode usar os maravilhosos recursos que a Internet lhe oferece!
Quando você acessar IRC, não deixe de visitar o canal #linux no servidor irc.brasnet.org !!!
1. Você precisa ter instalado/configurado no seu kernel o suporte para TCP/IP, ppp, etc...
- Isto está além do escopo desta *receita*. Além disso, você precisa se certificar que possui
o programa chat instalado. Isto é deixado com exercício para o sofredor, digo, leitor :) ;
2. Crie, caso ainda não exista, um diretório /etc/ppp ;
3. Com seu editor de texto preferido, crie no diretório /etc/ppp um arquivo chamado options, com o seguinte conteúdo:
/dev/modem
38400
modem
crtscts
lock
connect /etc/ppp/net-connect
asyncmap 0
defaultroute
noipdefault
mtu 576
Obs.:
a) Vá no diretório /dev e crie um link simbólico para a porta serial onde seu modem está
instalado. No meu caso, meu modem está na COM2, portando: ln -s cua1 modem
b) Mude o valor 38400 de acordo com a velocidade do seu modem ;
c) Se o seu modem está, por exemplo. em COM3-IRQ5, você deve executar o comando
setserial /dev/cua2 irq 5. Para que, neste caso, o seu modem seja reconhecido toda
vez que você iniciar o seu Linux, coloque esta linha no /etc/rc.d/rc.local, ou o equivalente
no seu sistema.
4. Crie no diretório /etc/ppp um arquivo chamado net-connect, com o seguinte conteúdo:
#!/bin/sh
/usr/sbin/chat -v -t 60 -f /etc/ppp/net-chat
5. Execute o comando chmod 500 /etc/ppp/net-connect.
6. No diretório /etc/ppp, crie um arquivo chamado net-chat, com o seguinte conteúdo:
ABORT "BUSY"
ABORT "NO CARRIER"
"" AT&F1&D1
OK ATDT987654321
login: "aqui você coloca seu username"
password: "aqui você coloca sua senha"
Obs.:
a) Os comandos para o modem variam de acordo com o fabricante! O meu modem é um USRobotics SportSter 28.8 interno. Se você possui um modem diferente, a string de inicialização provavelmente não é "&f1&d1", tente colocar ATZ no lugar (é o padrão).
b) Troque ATDT por ATDP caso sua linha seja PULSE.
c) 987654321 é o número do telefone do seu provedor
d) As duas últimas linhas são os "prompts" que o seu provedor lhe dá. A maioria (eu acho) dos provedores dá essas duas strings. Tem provedor que é um pouco diferente, vamos citar um exemplo (Algarnet). Para pedir o meu username, a string é "Username" ; para pedir a minha senha, a string é "Password" ; em seguida eu recebo um terceiro prompt:
"Algarnet>". Aí eu digito "ppp" e então o processo de conexão começa a estabelecer o protocolo. Por isso, o meu arquivo net-chat termina assim:
...
name: "meu username"
word: "minha senha"
rnet> ppp
...
7. Execute o comando
chmod 600 /etc/ppp/net-chat
8. No diretório /etc/ppp crie um arquivo chamado ppp-off, com o seguinte conteúdo:
#!/bin/sh
kill -HUP pppd
9. Execute o comando
chmod 755 /etc/ppp/ppp-off
10. No diretório /etc, edite o arquivo resolv.conf e acrescente/altere a seguinte
linha:
nameserver aaaa.bbbb.cccc.dddd
Obs.:aaaa.bbbb.cccc.dddd é o DNS do seu provedor.
11. Parece que não... mas acabou. Para se conectar, digite pppd
Se você quiser acompanhar o processo de conexão, simplesmente digite
tail -f /var/log/messages
Quando você ver a mensagem "remote IP address...", tecle CTRL-C.
Para verificar sua conexão, digite "ifconfig" e "route". Tente executar o comando ‘ping’ alguns endereços conhecidos.
12. Para desconectar, digite
/etc/ppp/ppp-off
PS.: Qualquer coisa é só dar um ps e depois um kill no nº do processo do pppd
Repito: Esta é uma receita *mínima*, supondo-se que você está em casa, sem qualquer outro micro por perto, sem placa de rede, sem nenhuma outa aspiração a não ser sentir o parazer orgásmico de se conectar a Internet através do Linux, e fazer um ftp na unha!
Boa sorte !
Para pegar e-mail, e lê-los com um leitor de e-mail (ex. pine), tenho aqui comigo um script.
Para quem não sabe, proceda assim:
Crie o arquivo get-mail usando
touch get-mail
Digite
chmod 755 get-mail
Edite o arquivo com um editor de texto qualquer (ex. vi, pico)
Dentro do arquivo, coloque as linhas:
#!/bin/sh
# Script para pegar mails usando o popclient
echo Easy-mail Script! acidmud@axur05.org
echo The Linux Manual - http://www.netdados.com.br/tlm/
echo -----------------------------------------------------
echo -e "Digite seu login:"'\c'; reaad login;
stty -echo; echo -e "Digite sua senha:&quuot;'\c'; read senha;
stty echo; echo -e '\n'"Digite o seu pop server [ ex. mail.axur05.org ]:"'\c'
read pop;
echo -e "Direcionar mail para o arquivo:&"'\c'; read arquivo;
popclient -3 -u $login -p $senha -o $arquivo $pop/FONT>
5. Salve o arquivo, e quando estiver conectado, rode ele e siga as instruções.
Nesse exemplo, usaremos o diretório Web, /home/web. A conta Web é mantida remotamente via FTP. O usuário remoto é Mortimer. O nome da conta de Mortimer é "mort" (sem aspas) e o grupo é "client" (sem aspas).
1. "Hackeie" o /etc. Crie a entrada mort no /etc/passwd e adicione a entrada também em /etc/group. (Ou adduser se preferir) Adicione as entradas para /etc/ftpaccess:
/etc/passwd:
mort:*:403:400:Mortimer Snerd:/home/web/mort/./:/etc/ftponly
^^^
A seqüência /./ determina onde o chroot vai atuar. Se você quer que o chroot
atue no diretório web e o chdir atue para mort, vai ficar mais ou menos assim:
mort:*:403:400:Mortimer Snerd:/home/web/./mort/:/etc/ftponly
^^^
Tenha certeza que /etc/ftponly esteja no /etc/shells.
/etc/group:
client::400:mort
Adicione o password de mort se você quiser.
Se você está usando uma versão Beta do ftpd (altamente recomendado),
você tem que fazer uma dessas coisas no uso do /etc/ftpaccess:
1. Compile o código e use o /etc/ftpaccess como padrão. Hackeie o código
e configure o use_accessfile = 1;
ou
2. Rode o Daemon com a opção -a.
/etc/ftpaccess:
class local real,guest,anonymous ......
... ^^^^^
... +----------- define a propriedade da classe 'guest';
... este lugar é dependente.
...
...
delete no anonymous,guest # delete permission?
overwrite no anonymous,guest # overwrite permission?
rename no anonymous,guest # rename permission?
chmod no anonymous,guest # chmod permission?
umask no anonymous,guest # umask permission?
... ^^^^^
... +------ define as permissões dos usuários
... correspondentes; este lugar é dependente.
...
...
path-filter guest /etc/pathmsg ^[-A-Za-z0-9_\.]*$ ^\. ^-
...
guestgroup client
...
2. Crie o diretório home de mort e configure o dono e proteções (permissões):
mkdir /home/web/mort
chown mort.client /home/web/mort
chmod 755 /home/web/mort
3. Crie uma estrutura do diretório na conta de mort:
cd /home/web/mort
mkdir etc bin dev lib #(dev e lib são opcionais)
chown root.daemon etc bin
chmod 111 etc bin
4. Crie o conteúdo do diretório ~/bin
(Use Cópias de Links estáticos para as utilidades se possível)
cp /.../bin/ls bin
chown root.bin bin/ls
chmod 111 bin/ls
Opcional para comandos de compactação e tar:
cp /.../bin/gzip bin
cp /.../bin/tar bin
chown root.bin bin/gzip
chown root.bin bin/tar
chmod 111 bin/gzip
chmod 111 bin/tar
Se as utilidades não são estáticas, crie os devices necessários no ~/dev e copie as libs necessárias dentro do ~/lib. Veja a man page do ftpd que vem com seu sistema, talvez ajude.
5. Crie o conteúdo do diretório ~/etc:
Crie um passwd, edite-o para conter o seguinte:
root:*:0:0::/:/etc/ftponly
mort:*:403:400::/home/web/mort/./:/etc/ftponly
Crie um group, edite-o para conter o seguinte:
root::0:root
client::400:mort
Depois:
chown root.daemon passwd group
chmod 444 passwd group
6. Adicione segurança extra:
cd /home/web/mort
touch .rhosts .forward
chown root.root .rhosts .forward
chmod 400 .rhosts .forward
Logue-se como mort via FTP e provavelmente dará certo. Se não, faça tudo novamente e cuidadosamente. Se você não conseguir fazer funcionar e tentou de qualquer jeito, peça ajuda pelo e-mail do wu-ftp: wu-ftpd@wugate.wustl.edu
Existe uma função no kernel do Linux (ethernet aliasing) que permite criar um apelido para ela e atribuir outro endereço IP. Vamos mostrar como usar essa função aqui para criar domínios virtuais.
Faca uma entrada no seu DNS para o seu "novo host".
Configure o Apache (pelo arquivo http.conf) para aceitar o Virtual Host, se não me engano da para fazer (se for só a página) só no apache e no DNS sem criar outro IP, mas não sei como é e como preciso de email e o sendmail exige o IP faco assim.
Pronto se alguem acessar linux.seu.dominio vai para uma página e tucows.seu.dominio vai para outra; se quiser ftp separado por endereco precisa de um patch no WU-FTP. Tem mais informações no Virtual-HOWTO e no Virtual-WU-HOWTO (acho que é esse o nome).
Como criar um email de auto-resposta? Por exemplo, ele recebe um email, e o próprio servidor devolve uma resposta automática?
Eu tive interesse de ter como testar um servidor de e-mail remotamente, para isto o que fizemos foi :
1. Criamos um usuário... Digamos que seja o usuário "oi".
2. Instalamos o pacote "vacation" :
ftp://ftp.yggdrasil.com/test/GroundZero/packages/current/source/tars/vacation-1.1.1.tar.gz
3. colocamos no $HOME dele um arquivo '.forward' com o seguinte
conteúdo :
"cat >> /home/oi/mail/log","|/usr/local/bin/vacation -t0 -r oi"
4. criamos um arquivo '.vacation.msg' com o seguinte conteúdo :
Subject: E-mail Reception Test
Your e-mail, with subject $SUBJECT, was received at this site.
5. para testar :
prompt$ mail oi@dominio.a.testar
Subject: teste
teste
.
Daí é só aguardar o retorno.
Aqui vai uma receita para quem quer botar para funcionar logo os e-mails virtuais.
Passo 1:
Crie um diretório /etc/mail/ e dentro dele crie um arquivo maildomains mais ou menos assim:
# Mails virtuais Mail real do usuário
hightech@virtual.com.br hightech@real.com.br
info@virtual.com.br hightech@real.com.br
vendas@virtual.com.br hightech@real.com.br
Ou se você preferir:
# Neste caso, todos os e-mails mandados para o dominio virtual.com.br serão
# repassados para o login local "hightech"
# Desvantagem: você não pode definir um número máximo de e-mails virtuais.
virtual.com.br hightech@real.com.br
Passo 2:
Vá para o /etc/mail e crie o arquivo com o banco de dados com o comando:
user:/etc/mail/$ makemap -v btree maildomains < maildomains
Passo 3:
No /etc/sendmail.cf, em S98 coloque estas regras (retiradas de http://www.westnet.com/providers/):
S98
R$+ < @ $+ . > $: $1 < @ $2 > .
R$+ < @ $+ > $* $: $(maildomains $1@$2 $: $1 < @ $2 > $3 $)
R$+ < @ $+ > $* $: $(maildomains $2 $: $1 < @ $2 > $3 $)
R$+ < @ $+ > $* $: $1 < @ $(maildomains @$2 $: $2 $) > $3
R$+ < @ $+ @ $+ > $* $: $2 < @ $3 > $4
R$+ < @ $+ > . $: $1 < @ $2 . >
Passo 4:
Ainda no /etc/sendmail.cf, coloque esta linha:
# Virtual domains
Kmaildomains btree /etc/mail/maildomains
Passo 5:
Reinicie o sendmail com:
user:~$ killall -HUP sendmail
Passo 6:
Ir para casa mais cedo, pois você já fez muito!
Configura no srm.conf para que ele possa carregar um cgi em vez do htm:
srm.conf:DirectoryIndex index.html homepage.html index.shtml
homepage.shtml index.cgi homepage.cgi
srm.conf:AddHandler cgi-script .cgi
Dai no usu.cgi, você filtra os IPS que esta querendo, como no exemplo:
if [ $REMOTE_HOST != "dominioque.pode.com.br" -a
$REMOTE_ADDR != "200.250.999.999" ]; then
ok
else
echo "Proibido acesso!!"
exit 1
fi
Só para complementar a informação passada, se você estiver usando proxy o endereço que aparece é o da máquina que está com o proxy e não da máquina solicitante original.
Segue então mais umas variáveis de ambiente que você devera' analisar em caso e proxy:
a) para saber se alguém está usando proxy verifique estas variáveis:
HTTP_VIA ou HTTP_PROXY_CONNECTION
Não tenho certeza mas acho que a diferença no nome se deve a diferenças de versões ... not sure :\
b) se for via proxy, verifique estas variáveis:
HTTP_X_FORWARDED_FOR ou HTTP_FORWARDED
(respectivamente com as variáveis acima)
Para usar o Linux como Bridge:
1 – Abaixe o brcfg da seguinte URL ftp://shadow.cabi.net/pub/Linux/BRCFG.tgz
Compile o Kernel com a opção de Bridiging (habilitar o prompt para aspartes experimentais);
Habilite as placas de rede. (não é necessário por IPs);
Reinicie o Linux (reboot)
Compile o brcfg tendo o cuidado de apagar o brcfg.o que vem com o pacote. D os seguintes comandos:
# ifconfig eth0 up promisc
# ifconfig eth1 up promisc
# brcfg -ena
Após alguns segundos (uns 30) o Bridge devera começar a funcionar.
Maiores detalhes podem ser encontrados em:
http://sunsite.unc.edu/mdw/HOWTO/mini/Bridge
Para resolver este problema, verifique se acesso a Telnet está habilitado no arquivo /etc/inetd.conf e /etc/services
Se estiver, pode ser o arquivo /etc/hosts.deny , que define os hosts que não podem acessar serviços... *Comente as linhas dos hosts no arquivo. Essas linhas podem ser:
ALL: ALL LOCAL
ALL: ALL
* Comente - Colocar um # antes do texto para que a linha seja comentada(não considerada)
Se quando você for tentar acessar o FTP ou rodar o Daemon do FTP de sua máquina, e não der, você de proceder assim...
Verifique se existe o arquivo /etc/shutmsg. Deverá com certeza existir, então apague-o!
Pronto, rode o daemon do FTP novamente e PIMBA!
Para não acontecer isso, antes de baixar o arquivo, no FTP, digite binary. Isso informe para o programa em ftp realizar os downloads em modo binário, e erros não irão ocorrer desta forma. Normalmente, os clientes mais velhos fazem download em modo ASCII, que é mais rápido, mas só server para arquivos texto.
Quando o kerneld (daemon user space que carrega módulos sob demanda, baseado em requisições do kernel) inicia ele recebe requisições do kernel para levantar suporte a todas as famílias de protocolos de rede (daí o net-pf - net protocol family), então ele tenta levantar o net-pf-3, net-pf-4 e net-pf-5, que são, se bem me lembro, appletalk, ipx e outro, então ele procura no /etc/conf.modules por aliases que indiquem que modulos levantar, como geralmente não tem nenhum, ele emite um warning, inofensivo, dizendo que não conseguiu satisfazer estas requisições.
Para parar de receber tais mensagens basta incluir as seguintes linhas no seu /etc/conf.modules (ou /etc/modules.conf, conforme você utilizar ou sua distribuição):
alias net-pf-3 off
alias net-pf-4 off
alias net-pf-5 off
# /etc/syslog.conf
# For info about the format of this file, see "man syslog.conf" (the BSD man
# page), and /usr/doc/sysklogd/README.linux.
*.=info;*.=notice /dev/tty11
Detalhe: use TAB, não use espaços.
Edite o inetd.conf em /etc/inetd.conf e deixe comentada a linha de finger.. Ah depois disso não se esqueça de reiniciar o processo. Dê um killall -1 inetd.
Vai no menu de Configuração e habilita o "enable-aggregate-command-set", depois, quando estiver na lista demensagens, tecla ";" (ponto e virgula), T e S, coloca uma string com os assuntos que queira selecionar, depois Z, para dar um Zoom e depois A (Apply), dai você poderá aplicar comandos sobre as mensagens selecionadas: delete, forward, save, etc. Muito poderoso!
Antes, o .fetchmailrc :
poll provedor_discado_ppp proto pop3:
user user with pass senha to
rodrigo.pereira=rodrigo
antonio.martos=antonio
claudio.martos=claudio
marcelo.martos=marcelo
robert.lima=robert
luiz.pereira=luiz
roberto.hernandez=claudio
ar=marcelo
medical=antonio
fernanda.vallin=claudio
fabricap=claudio
micromar=claudio here
Para configurar:
.fetchmailrc
poll pascoa.interop.com.br with protocol pop3:
user consultoria there is consultoria here, with password "..."
user develop there is develop here, with password "..."
user suporte there is suporte here, with password "..."
O Linux quando instalado, vem por padrão, vários recursos interessantes habilitados para a Internet, porém, se você não tomar as devidas precauções, terá um problema grande para com os crackers espalhados pela Internet. Se você quer se proteger, leia os tópicos desta seção e você verá como se precaver desses "monstrinhos cibernéticos".
Recomendo que você faça TODAS as configurações aqui contidas nesta seção, ok?
São 3 serviços:
Netstat (tcp/15)
Informa a você todas as informações sobre sua conexão atual (enderecos, dns,
portas, etc)
Systat (tcp/11)
Mostra qualquer/todos os processos que estão sendo rodados em sua máquina, quando acessado telnet na porta 11 de sua máquina, qualquer pessoa pode ver esses processos, e com isso, saber o que você está fazendo no exato momento em que você faz!
Finger (tcp/79)
Apresenta informações completas de usuários logados/não-logados em seu sistema (shells, diretórios, logins, etc). Existe alguns Bugs (falhas na segurança) que podem ser "furados" remotamente.
Para se livrar disso, e deixar seu sistema mais seguro, edite o arquivo /etc/inetd.conf e comente(#) as seguintes linhas:
#finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd -w
#systat stream tcp nowait nobody /usr/sbin/tcpd /bin/ps -auwwx
#netstat stream tcp nowait root /usr/sbin/tcpd /bin/netstat -a
Com isso, os 3 serviços estarão desabilitados, e ninguem poderá acessar além do root, claro. Para rodar os comandos, tente o que está no final da linha, como:
/bin/ps -auwwx
/bin/netstat -a
O daemon do telnet é o in.telnetd. Por isso ele é usado como o servidor de telnet na maioria dos sistemas Linux.
Ao invés desse daemon, usaremos o in.telnetsnoopd, que permite a monitoração de um terminal de telnet em outro terminal (local).
Primeiro de tudo, vamos habilitar o serviço do telnetsnoop ao invés do telnet normal. Para isso você terá que editar o arquivo /etc/inetd.conf (como falei acima) e colocar a seguinte linha:
telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetsnoopd
E retire a linha:
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
Agora vamos configurar como o telnetsnoopd vai funcionar e aonde. Edite o arquivo /etc/snooptab (arquivo de configuração do telnetsnoopd) e coloque a seguinte linhas (os espaços são TABS!):
ttyp0 /dev/tty11 login /bin/login
ttyp1 /dev/null login /bin/login
Neste exemplo, o terminal ttyp0 (primeiro terminal de telnet) vai ser monitorado no tty11 (terminal local 11, ALT+F11). A segunda linha diz que o telnet vai ser liberado pro ttyp1 (segundo terminal de telnet), mas não vai monitorar em nenhum lugar, caso você não colocasse esta linha, ele só daria acesso a somente um telnet. Caso o arquivo não tenha essa linha abaixo, adicione(espaço são TABS!):
* socket login /bin/login
Para que as configurações se completem, reinicie o inetd.
O FTP Server é um recurso muito usado na Internet por todo mundo. Algumas máquinas e provedores desabilitam o ftp por segurança.
Mas em questão de segurança, você pode ver tudo o que todos estão fazendo naquele momento, através do comando:
tail -f /var/adm/messages
Isso mostrará informações de quem conectou, pegou, se logou, user, pass, list, etc.
Tudo o que você precisa saber, e até mais!
O PPPD armazena informações de uma conexão com um provedor totalmente, inclusive qual seu username e password. Isso armazenado no arquivo
/var/adm/debug
Esse arquivo vem com a permissão READ TO ALL (veja 2.11. Permissões, e isso não é bom para a saúde da máquina... Tire essa permissão:
chmod go-rwx /var/adm/debug
Há também outros arquivos que é bom fazer também. Como:
chmod go-rwx /var/adm/messages
chmod go-rwx /var/adm/syslog
Estes arquivos são muito importantes para a segurança de seu sistema com relação à Internet. A função destes arquivos é permitir ou não permitir acesso de um ip ou mais aos servicos de seu sistema.
Como funcionam eles? Simples, quando o modem recebe a chamada de tal IP da Internet, o Linux primeiro verifica nestes arquivos se este IP tem acesso ou não à sua maquina. Se tiver, ele deixa o IP prosseguir com seu destino e acessar algum serviço, se não, ele fecha o serviço que o IP queria acessar para o próprio IP.
Mas não pense que funciona como um firewall, que recusa todos os pacotes enviados por algum certo IP. Ele vai receber o pacote com certeza, o que ele faz é só controlar se este IP acessa tal serviço ou não. Os dois arquivos se encontram no diretório /etc. Por padrão não vem nada nele, só uma serie de comentários explicando basicamente para que aquele arquivo está ali.
O que vamos ver agora é como usar estes arquivos... bem interessante :) Então antes de mais nada, vamos ao básico:
hosts.allow = Permite o acesso
hosts.deny = Nega o acesso
Lembre-se de uma coisa: O hosts.allow sempre tem a preferência. Ou seja, se um certo IP esta bloqueado no hosts.deny, e este mesmo IP estará desbloqueado no hosts.allow, automaticamente aquele IP vai poder acessar, ou seja, quem tem a prefêrencia é o hosts.allow.
Se algum IP não conter no hosts.deny, ele automaticamente pode acessar os serviços, quem predomina é sempre o allow.
A sintaxe das linhas dos dois arquivos são as mesmas, a única coisa que muda é a função de cada arquivo como falei anteriormente. Então vamos dar um exemplo de duas linhas em cada arquivo:
[hosts.deny]
in.telnetd: 200.241.52.137
[hosts.allow]
wu.ftpd: 200.241.52.183
Pronto, o que estas linhas fazem? No hosts.deny, tá dizendo que o IP 200.241.52.137 não pode acessar o telnet. E no hosts.allow tá dizendo que o IP 200.241.52.183 pode acessar o ftp.
Agora como saber qual o nome do servico do ftp, do telnet... Bem... aí você terá de ver com alguns destes comandos:
tail -f /var/adm/messages
pico /etc/inetd.conf
ps -aux
Ahh, mas também tem uma coisa, tanto o hosts.allow como o hosts.deny podem usar wildcards, ou seja, caracteres que substituem outros... :) Os wildcards validos são ALL, LOCAL e REMOTE.
ALL = Todos os IPs
LOCAL = Todos os IPs locais
REMOTE = Todos os IPs remotos
Para usar estes wildcards, basta somente substituir o IP por estas palavras, exemplo:
in.telnetd: ALL
wu.ftpd: LOCAL
Acho que é só. Um básico para você se divertir.
Você então você, obviamente, se lembra da importância do usuário root dentro de um sistema Linux (a importância é a mesma para outros Unices), portanto deve ter escolhido uma senha bem complicada, com 20 dígitos alfanuméricos que às vezes até você esquece.
Bem, se você chegou a olhar a seção de 6 (Dúvidas de usuários da LinuxBr), você viu um procedimento para recuperar a senha do root. Claro, talvez você nunca precise fazer isso, mas algum espertinho pode, e pronto, a senha do root foi alterada e você pode ficar a ver navios.
O segredo está em duas diretrizes dentro do lilo.conf:
restricted
password = XXXXX
Você deve colocar essas linhas na seção da partição Linux. Quando alguém digitar
linux single
no prompt do LILO, será pedido a senha que você colocou no lilo.conf. Assim as coisas ficam mais difícieis...
Duas coisas óbvias que você não pode-se esquecer:
A senha do LILO dentro do lilo.conf não está criptografada. Se qualquer um ler o arquivo, verá a senha e esse procedimento todo serviu para nada. Lembre-se de deixar acesso de leitura e escrita APENAS para o root, que obviamente deverá ser o proprietário do arquivo.
Digite lilo no promtp como root para atualizar as novas configurações que você fez.
Eu botei aqui algumas informações básicas para ajudar você a manter seu sistema seguro. Como você vai ver, as informações a seguir são escritas num meio não-técnico.
Limite o número de programas que necessitem SUID root no seu sistema.
Programas SUID root são programas que quando rodam, rodam no nível de root. Algumas vezes é preciso, mas muitas vezes não. Os programas SUID root podem fazer qualquer coisa que o root pode tendo um alto nível de responsabilidade a nível de segurança. Às vezes eles fazem, as vezes não e quando não fazem, usuários podem as vezes pegar o root para fazer coisas que nem pode imaginar. Aqui é onde entram os exploits. Um exploit é um programa ou script que vai pegar o SUID root para fazer muita coisa ruim. (Dar shells de root, pegar arquivos de senhas, ler mails de outras pessoas, apagar arquivos).
Rodando programas com privilégio mínimo no acesso.
Como foi dito antes, alguns programas não precisam de root para rodá-los , mas precisam de um alto acesso para o usuário normal. Aqui é onde começa a idéia do privilégio mínimo de acesso. Por exemplo, a LP (linha de impressora) possui comandos que precisam de alto acesso para o usuário normal (para acessar a impressora), mas não precisa roda-los como root. Então, uma pequena coisa a fazer é criar um usuário (/bin/true como shell) e um grupo chamado lp e fazer com que qualquer usuário possa rodar qualquer dos comandos de LP e fazer tudo com os comandos LP que tiverem como owner e grupo o lp.
Isto fará com que o lp possa fazer seu trabalho (administre as impressoras). Então se o usuário lp estiver compromissado, o invasor realmente não vai dar um passo de root no seu sistema. Agora para alguns programas que são SUID root, crie um usuário e um grupo para o programa. Entretanto, algumas pessoas se enrolam quando botam a maioria desses programas SUID no mesmo usuário e grupo. Isto é ruim! Realmente ruim!. O que você precisa fazer é botar todo o programa que inicie como root para usuário de privilégio mínimo.
Desabilitando serviços que você não precisa ou não usa.
Se você não usa rpc.mountd, rpc.nfsd ou outros daemons parecidos, não rode-os. Simplesmente kill -9 nele e va nos scripts em /etc/rc.d e comente-os. Isto aumentara a memoria, CPU e é um meio de se prevenir de invasores que tentam obter informações sobre seu sistema e, claro, pegar root nele. Tenha sempre os mais recentes /lib's.
Os arquivos em /lib's são códigos share, quando um programa precisa de uma certa peca do codigo, ele simplesmente vai e pega este codigo (assumindo que este não esta compilado no codigo). A vantagem não seria outra; Programas são compilados menores, se uma peca do codigo lib esta desaparecida, você pode simplesmente fazer um upgrade.
Desvantagens; o codigo desaparecido em /lib vai afetar alguns programas e se um invasor por suas mãos no lib's, você realmente estara com dificuldades.
A melhor coisa a fazer corretamente os upgrades para as lib's e checar o tamanho e data frequentemente nas alteracoes.
Encriptando nas conexões.
Existem ótimos sniffers por aí, e ele são ótimos para pegar passwords. O sniffer se acomoda em uma máquina, em uma subrede não encriptada e o rendimento será centenas de passwords. Não somente dos computadores locais, mas também de outras redes de computadores. Agora você pode dizer para você mesmo, "Mas eu tenho Firewall na minha
rede, então estou seguro". Besteira. Um estudo recente mostrou que uma parte dos sniffers atacam por trás dos firewalls (o “lado bom”). Os sistemas de conexão criptografada mais utilizados são o ssh e o ssl. Ambos podem ser usados com o Linux, e normalmente estão nos cd´s de cada distribuição.
Instale wrappers para /bin/login e outros programas.
Wrappers são programas pequenos mas muito eficientes que filtram o que esta sendo enviado para o programa. O login wrapper "remove todas as instâncias de várias variáveis do ambiente" e o wrapper do sendmail faz mais ou menos o mesmo.
Mantenha seu Kernel na última versão estável.
Esta dica realmente é aplicada a pessoas que possuem usuários no seu sistema. Kernels antigos possuem seus bugs conhecidos por qualquer pessoa e as vezes são muito instáveis. Veja o ldt-exploit.c. Kernels mais novos tendem a serem mais rápidos que os antigos e, é claro, mais estáveis.
Quando estiver configurando seu kernel somente compile no código o que você precisar.
Quatro razões vem em mente: o kernel vai ficar mais rápido (menos códigos para rodar), você vai ter mais memória, ficará mais estável e partes não necessárias poderão ser usadas por um invasor para obter acesso em outras máquinas.
Deixe o pessoal do lado de fora saber o mínimo possível sobre seu sistema.
Um simples finger para o sistema da vítima pode revelar muitas coisas sobre seu sistema; quantos usuários, quando o admin esta dentro, ver o que ele está fazendo, quem ele é, quem usa o sistema e informações pessoais que podem ajudar um invasor a conseguir senhas de usuários. Você pode usar um potente finger daemon e limitar quem pode conectar ao seu sistema e exibir o mínimo possível sobre seu sistema.
Escolha boas senhas.
Simplesmente ponha, senhas ruins é a chave para penetrar em seu sistema. Se você instalar o Shadow em uma máquina, você pode escolher para filtrar senhas ruins, tipo login: kewl, password: kewl, esta senha já não seria aceita, e isto é uma boa idéia.
Sempre que você tiver uma pequena quantidade de pessoas no seu sistema, e eles são amigos, algum usuário não convidado pode obter root e fazer um `rm -rf /'.
Uma boa idéia para pegar passwords ruins no seus sistema é usar o programa John de Ripper e fazer uma auditoria no arquivo /etc/shadow. Senhas iguais ao login e coisas igualmente ridículas são pegas facilmente, e você então poderá dar um puxão de orelha nos usuários mais relaxados.
Se você puder, limite quem pode conectar ao seu Linux.
Se possível, bloqueie o acesso telnet (ou o troque pelo ssh pelo menos!) de fora da subrede. Certamente que seja mais seguro e você vai ter a sorte de não ter seu sistema danifica do por estranhos.
Use senhas Shadow
Atualmente todas as distribuições usam senhas shadow, um arquivo em /etc que possui todas as senhas criptografasdas.
Bastill
Bastille é um script que ajuda o administrador do sistema a configurar seu sistema da forma mais segura possível. Através de passos, onde diversas perguntas referentes a serviços e segurança do sistema são feitas, o administrador tem apenas de escolher as alternativas oferecidas que o script realiza as configurações escolhidas. O script foi desenvolvido para funcionar na distribuição da Red Hat, mas funciona muito bem em clones desta distribuição, como o Conectiva e Mandrake.
The NetKit's
É um pacote que possui varios programas destinados a segurança do sistema. Mas não rode os servicos que você não vai útilizar!
Tcp Wrappers
Alguns dos daemons que vem junto com algumas distribuicoes do Linux não sao muito boas em fazer log, e alguns daemons não fazem nenhum log. Entao, este é o Tcp Wrappers. Antes que qualquer aplicativo TCP possa conectar, este pode ser processado pelo Tcp Wrappers para checar se a pessoa que esta chamando esta banida de conexão. (via
/etc/hosts.allow e /etc/hosts.deny). Ele é muito bom se você deseja limitar quem pode conectar nos seus sites. Ele roda na maioria dos sistemas Linux.
John The Ripper
Apenas porque possui seus passwords shadowed, não quer dizer que alguns usuários não podem pegá-los. Se você forcar os usuários a escolherem boas senhas, as chances de alguem pegar seu arquivo de senhas shadow e conseguir algumas senhas para acesso no sistema diminuem bastante. O John the Ripper resolve este problema quebrando senhas ruins suas senhas com dicionários e exibe informações sobre senhas encontradas no arquivo passwd.
Tripwire
Bom, se alguém invade seu sistema e você não tem idéia de quais arquivos foram modificados ou instalados cavalos de Tróia! Bom, se você tiver o Tripwire instalado, configurado corretamente, e tem um arquivo de configuração atualizado, você podera saber. Tripwire scaneia o sistema e checa os tamanhos, datas e outras coisas sobre os arquivos exibindo todos os arquivos que tiveram algumas de suas características alteradas.
COPS 1.04
Este pacote vem do famoso Dan Farmem e tem algumas utilidades. Ele contem alguns programas de segurança e também alguns script para ajudar você a proteger seu sistema. Não deixe de ver.
Secure Shell
Grande utilitário para encriptação de conexões. Útil para evitar que hackers observem suas conexões. Provem de autenticação, faz segurança em conexões de X-Windows. A idéia é substituir tanto o cliente quanto o daemon do Telnet, que não realiza a criptografia dos dados em trânsito. O cliente também possui um cliente chamado scp, que permite a cópia de arquivos de forma segura.
Sendmail
O famoso Sendmail é o servidor de correio mais usado no mundo (também é o mais atacado!). Em resumo, O SENDMAIL PODE SER UMA GRANDE DOR DE CABEÇA, a menos que você um especialista exímio na configuração desse servidor, e acredite, poucas pessoas realmente o são. Especialistas em segurança recomendam que voê troque o Sendmail por outros servidores de correio, com funcionalidades muito parecidas e muito mais fáceis de configurar, como por exemplo o Qmail, o Postfix e o Exim.
Fefés finger daemon
Um simples e prático finger deamon que é tudo o que você precisa. As opções mais legais são: Não necessita de root para rodar, não revela muito sobre o usuário (último acesso, mail, shell), não permite finger no sistema, faz log total e previne certos tipos de ataques de usuários locais.
Xinetd
Um programa para substituir pelo famoso inetd. Inetd observa portas e inicializa programas quando alguem conecta em alguma das portas. Xinetd oferece mais mais controle e configuração sobre suas portas do que o inetd e é mais seguro também.
lsof Lista
Todos os arquivos abertos no seu Linux. Bom para prevenir algum tipo de ataque. Este programa vai dizer a você se alguma coisa esta rodando um sniffer e ele vai logar tudo sobre o invasor em seus arquivos de log.
pidentd 2.5.1
Outro inetd daemon que é mais configurável e seguro que o simples inetd do Linux.
rhosts.dodgy
Este script vai checar o seu .rhosts por '+ +' e outras coisas que nunca poderiam estar nele. É escrito em perl e é facilmente configurado. Ponha ele em seu contrab e ele fara a checagem a cada 15 minutos.
ICMPinfo 1.11
Idem ao Tcpdump, exceto que as palavras trabalham com pacotes ICMP. Este programa detecta qualquer tipo de pacote ICMP enviado a você.
Tcpdump
Um sniffer disponível em todas as distribuições Linux. Não muito intuitivo, ele mostra a você uma grande quantidade de informações sobre todas as suas conexões via TCP. Isto serve para administradores de sistema. Rode-o durante um ataque e o atacante sera exibido e logado.
É só editar o arquivo .Xmodmap no diretório home do usuário.
.Xmodmap:
keycode 22 = BackSpace
Eu uso uma feature do less que me permite ler qualquer tipo de arquivo.
.rpm .deb .tar .tgz .tar.gz .gz .zip .cpio .1(man) .2(man) etc...
1) Variáveis de ambiente:
LESSCHARSET=latin1 # permite visualizar acentos
LESSOPEN=|lesspipe.sh %s # truque para abrir arquivos não txt
PAGER=/usr/bin/less -iX # use less em mail e outros programas
2) Alias
alias less '/usr/bin/less -iX'
# -i quando procurar ignore case.
# -X não limpe a tela depois de usar o less
3) O arquivo lesspipe.sh
O seguinte shell deve ser salvo em um arquivo chamado lesspipe.sh
com chmod adequado para execução e no PATH:
--- lesspipe.sh begin ---
#!/bin/sh
# Preprocessor for 'less'. It is used when environment
# variable is set: LESSOPEN="|lesspipe.sh %s"
lesspipe() {
case "$1" in
*.tar) tar tvf $1 ;;
*.tgz) tar tvzf $1 ;;
*.tar.gz) tar tvzf $1 ;;
*.tar.Z) tar tvzf $1 ;;
*.tar.z) tar tvzf $1 ;;
*.cpio) cpio -iv --list < $1 ;;
*.cpio.gz) gzip -dc $1 | cpio -tv ;;
*.cpio.z) gzip -dc $1 | cpio -tv ;;
*.cpio.Z) gzip -dc $1 | cpio -tv ;;
*.cgz) gzip -dc $1 | cpio -tv ;;
*.Z) gzip -dc $1 ;;
*.z) gzip -dc $1 ;;
*.gz) gzip -dc $1 ;;
*.zip) unzip -l $1 ;;
*.1|*.2|*.3|*.4|*.5|*.6|*.7|*.8|*.9|*.n|*.man) FILE=`file -L $1` ; #
groff src
FILE=`echo $FILE | cut -d ' ' -f 2`
if [ "$FILE" = "troff" ]; then
groff -s -p -t -e -Tascii -mandoc $1
fi ;;
*.rpm) rpm -qilv -p $1 ;;
*.deb) dpkg --info $1 ;;
esac
}
lesspipe $1
--- lesspipe.sh End ---
Pode parecer loucura, mas eu já vi uma situação desta com um sistema chamado CMS, da Avaya, rodando em um Solaris.
# Login Único - Tkz to Rafael Rubik, a friend of mine ;)
# Eitch
# ------------------------------------
# pico /usr/bin/login_unico
VAR=`who | cut -c1-8 | tr -d "\040" | grep -n "^\'echo $LOGNAME\`$" |wc -l`
if [ $VAR -gt 1 ] && [ $LOGNAME = "root" ]
then
echo MENSAGEM DE LOGIN INVALIDO
sleep 10
exit
fi
# chmod 755 login_unico
# Depois de feito isso, colocar esse arquivo no /etc/profile
Para mudar o horário do relógio de seu linux digite:
date mmddhhmm[yy]
Onde...
mm = mes
dd = dia
hh = hora
mm = minuto
yy = ano
Então... Salve com o comando:
clock -w
Isso tudo tem que ser como root, claro.
Crie a uma conta comum de usuário, se preferir, com o comando adduser, Edite o /etc/passwd, vá na linha correpondente ao usuário que você criou, haverá a linha:
usuário:PaSsWoRd:UID:GID:Nome:home:SHELL
ex.
email:BsXaHwtl.aE:103:100:Conta de E-Mail:/home/email:/bin/bash
Então mude o shell e home para /dev/null, assim:
email:BsXaHwtl.aE:103:100:Conta de E-Mail:/dev/null:/dev/null
O indivíduo vai conseguir ler mail mas não tem como efetuar o logon no sistema.
1. Crie um arquivo em seu diretório, tipo:
mkdir /home/login/lista/manual
2. Coloque nele um email por linha:
user@dom1
usr2@dom2
...
3. Acrescente em seu /etc/aliases
manual-l: :include:/home/login/manual
4. Execute "newaliases"
5. Mande email para "manual-l@máquina.com.br" que vai para todos
os usuários, cortesia do sendmail...
Se quiser automatizar a lista, use o majordomo:
ftp://ftp.greatecircle.com/pub/majordomo
Backup para um FTP
Este shell script faz com que se compacte arquivos importantes do Linux e passe compactado para um ftp.
----------------[CORTE AQUI]-----------------------------
#!/bin/bash
# Faz um TAR com diretórios importantes do Linux
tar cvf /tmp/backup.tar /home /var/spool/mail /var/spool/cron /etc /usr/local
# Compacta o TAR
gzip /tmp/backup.tar
# Faz o ftp para ftp-host.domain.etc
ftp -in <<EOF
open ftp-host.domain.etc
user usuário senha
bin
hash
prompt
cd /home/backup
lcd /tmp
put backup.tar.gz
bye
----------------[CORTE AQUI]-----------------------------
Comandos do DOS no Linux
Este Script que fará com que seu ambiente Linux se pareça um pouco com o ambiente do DOS, perfeito para quem confundi comandos do dos no linux. Você deve colocar as linhas no /etc/bashrc ou /etc/profile (global) ou então no .profile do home do usuário.
----------------[CORTE AQUI]-----------------------------
# /etc/bashrc
# -------------------------------------------------------------------
# Colocar este script no /etc/bashrc
# Este Script que fara' com que seu ambiente Linux se pareca um
# pouco com o ambiente do DOS, perfeito para quem confundi comandos
# do Dos no linux.
# -------------------------------------------------------------------
# Obrigado a Eliphas Levy Theodoro (VaN_DemmO) por este script
# Modificacoes e adicoes feitas por mim, Hugo (Eitch)
# Qualquer ideia ou erro, reportar para hugo@netdados.com.br
# Begin!
# System wide functions and aliases
# Environment stuff goes in /etc/profile
export PS1='\u\$ $PWD> ' # Prompt (ex.fica 'user$ /etc>')
alias which="type -path" # Onde esta' arquivo
alias ls="ls -F --color=tty" # ls colorido
alias dir="ls -Fla --color=tty" # dir colorido
alias rd="rmdir" # Remove diretório
alias md="mkdir" # Cria diretório
alias cd..="cd .." # cd junto com .. :)
alias copy="cp" # Copiar arquivos
alias move="mv" # Mover arquivos
alias ren="mv" # Renomear arquivos (mover)
alias rename="mv" # Renomear arquivos (mover)
alias win="startx" # Iniciar o XWindows
alias edit="pico" # Um dos melhores editores (o joe é bom tb)
alias path="env | grep ^PATH" # Mostra o path
alias home="cd ~" # Vai para o homedir do usuário
alias cdrom.on="mount /mnt/cdrom" # Monta o CD-ROM (declara no fstab)
alias cdrom.off="umount /mnt/cdrom" # Desmonta o CD-ROM
alias cdrom="cd /mnt/cdrom" # Entre no CD-ROM
alias cls="clear" # Apagar a tela (para que? :/)
alias del="rm" # Remove arquivos
alias remove="rm" # Remove arquivos
alias deltree="rm -r" # Remove diretório cheio
alias xcopy="cp -R" # Copia diretório + subdiretórios
alias config="setup" # Setup :PP
alias diskon="mount /dev/fd0 /mnt/disk" # Monta disquete
alias diskoff="umount /dev/fd0" # Desmonta disquete
# End
----------------[CORTE AQUI]-----------------------------
Ordena linhas de arquivos alfabeticamente
----------------[CORTE AQUI]-----------------------------
#!/bin/sh
# Eitch
#----------------
# Ordenar - Tkz to Levy, a friend of mine ;)
# Ordena linhas de um arquivo em ordem alfabetica
#
# Sintaxe: $0 <arquivo origem> <arquivo destino>
#----------------
# Begin
echo Ordenando $1 no arquivo $2
cat $1 | sort > $1
# End
Este manual não tem como intenção ser um o guia definitivo sobre Linux. Na realidade, esperamos que ele sirva como referência para que você e que possa apontar as direções de o que e onde procurar informações para se aprofundar mais, e aprender mais nos diversos assuntos que discutimos aqui.
Hugo Costa de Alemão Cisneiros
Esta seção eu criei para falar um pouquinho de mim :) É claro que pouca gente lê isso, mas fazer o que? :P Vai assim mesmo !!
Meu nome inteiro é Hugo Costa de Alemão Cisneiros (Chame-me de Hugo Cisneiros que é melhor ;) Meu nick é Eitch (H em inglês ;)
Tenho 14 aninhos, faço 15 ano que vem, no dia 3 de fevereiro...Ahhhh como sou novo... mas não faz mal! Isso é até melhor!
Acesso Internet a mais ou menos 2 anos... Desde que lançou ela aqui na minha cidade, que é Aracaju, Sergipe. No começo não foi aquele impacto todo, mas depois eu viciei mesmo :o)
Como comecei a usar Linux? Como muita gente eu acho que começa... Bem, é uma história zuada... :P
Eu e meu amigo Davi Medeiros (F0X) víamos aqueles hackers todos que só usavam Linux... Então agente estava resolvendo ingressar no Linux para (pelo menos para mim) se tornar hackers :) Pegamos um CD com o Linux... Então depois de um probleminha com o computador de F0X, agente veio fazer a cobaia no meu...
Ele já até trouxe o bootdisk e rootdisk bonitinho já pronto :o) Começamos a instalar de manhã (umas 10:00)... Qual foi o 1o. problema? HaHaHa..! Simplesmente meu CD-ROM não era reconhecido pelo Linux... É mole? O que fizemos? Ficamos pedindo ajuda no IRC.
Como não deu em nada, agente começou a fazer nossas ninjaria. Resolvemos o problema copiando os arquivos do cd-rom para o HD, e instalando a partir desse HD montado...
Esse foi o único problema de muitos que eu lembro... Foi uma instalação bem difícil. A "operação" durou mais ou menos 8 horas. Quando finalmente instalamos, ficamos parados no prompt do bash... E agora??? :))) Ficamos fuxicando com ls e cd, executando arquivos e etc.
Já era umas 6 horas da tarde, F0X foi para casa e eu fui para o shopping que ia ter um IRContro lá.... demais :)
Assim foi... Entrei na Antiga Linux-BR (A da openline):
http://www.openline.com.br/linux-br/
E aprendi muito lá... Inclusive, este manual é resultado da lista. Eu uso o Eudora... Então eu anotava tudo que os caras falavam na lista num txt, e ia para o Linux praticar.
Até que um dia eu vi que aquele txt seria útil... Fiz um manual em txt, com 11 seções. O básico... Recompilando o kernel, comandos básicos, Configuração do X-Windows, como se conectar à Internet, etc. Disponibilizava ele por e-mail somente. Até que Francisco Brasileiro (kico) me ofereceu hospedar manual na netdados (meu provedor), então fiz uma versão HTML, complementei com muita coisa (O manual já estava em sua versão 2.1) e coloquei na página.
O resto só foi publicidade, publicidade e publicidade. Agora deu no que deu... Recebo mais de 100 visitas por dia, tenho mais de 1000 emails que já se cadastraram no Clube The Linux Manual, e etc...
Bem, resumindo é isso :o) Agora vamos voltar a falar um pouco de mim...
Vocês devem estar curiosos... Quem é esse cara? Bem, vocês verão logo >-)
Quem quiser falar comigo pelo ICQ, meu UIN é 6991401.
Sou viciado em mp3 e meu estilo de música é principalmente Rock (Isso mesmo, Iron Maiden, Metallica, Helloween, Green Day, Guns, etc)
E finalmente, aqui está uma foto minha junto com o pessoal do IRC:
http://www.netdados.com.br/tlm/imagens/foto.jpg
E finalmente aqui termina essa baboseira toda.. Aêêêêêêêêêêê!!!!! :P
Alceu Rodrigues de Freitas Junior
Bem, como é de praxe, vou escrever um pouco sobre mim e sobre meu convívio com o Linux. Aí eu terei o que mostrar para as visitas, quando elas forem em casa !
Eu me formei técnico em telecomunicações em 1998, e foi nesse ano que tive meu primeiro contato com Linux. Eu já conhecia o Solaris da SUN, mas nunca foi uma situação de laboratório, onde eu poderia mexer à vontade no equipamento (que aliás estava em produção). Fui realmente satisfazer minha curiosidade em conhecer Unix quando comprei uma revista de informática que vinha com um cd do Conectiva Marumbi, e ainda era um clone praticamente da distribuição Red Hat. Eu ainda me lembro das dores de cabeça que tive para configurar a placa de vídeo onboard do meu micro na época...
Desde em então eu tenho experimentado diferentes distribuições, entre elas RedHat, Caldera, SuSe, Debian e Mandrake. E meu aprendizado nessa área foi sendo adquirido através de tutoriais, livros, pedaços de papel e muitas horas em frente à um computador testando facilidades e conversando com outros linuxers !
Atualmente estou cursando análise de sistemas, mas o corpo de coordenação do curso insiste em usar no curso software proprietário vocês-sabem-de-quem ...
Licença de conteúdo aberto (OPL)
Versão 1.0, Julho 14, 1998.
Este documento esquematiza os princípios fundamentados no movimento Conteúdo Aberto (OpenContent - OC) e pode ser redistribuído desde que permaneça inalterado. Para propósitos legais, este texto abaixo é a licença sobre a qual o OC está disponível para o uso.
A versão original deste OC pode ser encontrada em:
http://www.opencontent.org/opl.shtml
LICENÇA
Termos e condições para copiar, distribuir e modificar
Ítens outros que copiar, distribuir e modificar este conteúdo, cujo a qual foi distribuído com esta licença (como uso, etc) estão fora da alçada da mesma.
Você pode copiar e distribuir réplicas exatas do Conteúdo Aberto (OpenContent - OC) como você os recebeu, em qualquer intermédio, desde que você conspicuamente e apropriadamente publicou cada cópia uma nota de direitos autorais e negação de qualquer garantia; mantenha intactas todas as notas que se refiram a essa Licença e sobre a ausência de qualquer garantia; e dê a qualquer um dos receptores deste OC uma cópia desta Licença junto com o mesmo. Você pode por opção sua cobrar uma taxa pela mídia e/ou retoque involvidas em criar uma única cópia do OC para uso offline, você pode por opção sua oferecer suporte instrucional para o OC em troca de uma taxa, ou você pode por opção sua oferecer garantia por troca de uma taxa. Você não pode cobrar uma taxa pelo OC em si. Você não pode cobrar uma taxa pelo único objetivo de prover acesso para e/ou uso do OC via rede (e.g. a Internet), seja via a world wide web, FTP, ou qualquer outro método.
Você pode modificar sua(s) cópia(s) do OC ou qualquer porção do mesmo, dessa forma criando trabalhados baseados no Conteúdo, e distribuir tais modificações ou trabalho sobre os termos da Seção 1 acima, assim como adicionando todas essas condições:
a) Você deve dar a razão ao Conteúdo modificado e incluir notas proeminentes indicando que você o alterou, a natureza exata do que foi alterado e a data de qualquer altereação.
b) Você deve dar o motivo de qualquer trabalho que você distribui ou publica, se todo ou parte deste trabalho for derivada do OC ou qualquer parte do mesmo, tornar a Licença como um todo e sem nenhuma cobrança para terceiros sobre os termos desta Licença, a não ser que de outra forma permitida sobre qualquer Lei de Uso Justo aplicável.
Esses requerimentos se aplicam ao trabalho modificado como um todo. Se sessões identificáveis não são derivadas do OC, e pode ser razoavelmente considerada idependente e separada dos trabalhos em si, então esta Licença, e seus termos, não se aplicam a estas seções quando forem distribuídas como trabalhos separados. Mas quando você distribui as mesmas seções como parte de todo trabalho que é baseado no OC, a distribuição do todo precisa estar nos termos desta Licença, cujas permissões para outras Licença se estendem para o todo, e mais para cada e todo parte sem levar em consideração quem a escreveu. Excessões são feiras para esta requisição para lançar trabalhos modificados livres de cobrança de taxa sob esta Licença somente se obdecer a Lei de Uso Justo onde esta for aplicável.
Você não é obrigado a aceitar esta Licença, uma vez que você não a assinou. Entretanto nada garante a você permissão para copiar, distribuir ou modificar o OC. Estas ações são proibidas por lei se você não aceitar esta Licença. Então, distribuindo ou traduzindo o OC, ou criando documentos derivados do mesmo, indica que você aceita esta Licença e concorda com ela, e todas os termos e condições para copiar, distribuir ou traduzir o OC.
SEM GARANTIAS
UMA VEZ QUE ESTE CONTEÚDO ABERTO (OPENCONTENT - OC) ESTÁ LICENCIADO SEM COBRANÇAS DE TAXAS, NÃO HÁ GARANTIAS PARA O MESMO POR EXTENSÃO PERMITIDA POR LEI APLICÁVEL EXCETO QUANDO QUE OUTRA FORMA DECLARADO, ESCREVENDO O DIREITO AUTORAL E/OU OUTROS GRUPOS OFERECEREM O OC "COMO ESTÁ".SEM QUALQUER GARANTIA DE QUALQUER TIPO, SEJA EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO ESTANDO LIMITADA A, AS GARANTIAS QUE SEJAM IMPLICADAS PARA FINS COMERCIAS E DE ADAPTAÇÃO PARA PROPÓSITOS PARTICULARES. O COMPLETO RISCO DE USO DESTE OC É SEU. SE UMA VEZ O OC PROVER SER FALHO, MOSTRAR-SE INEXATO OU QUALQUER CARACTERÍSTICA INACEITÁVEL, VOCÊ ASSUME TODO O CUSTO DE TODO O REPARO OU CORREÇÃO NECESSÁRIOS.
EM NENHUM MOMENTO A MENOS QUE EXIGIDO POR LEI APLICÁVEL OU UM ACORDO, QUALQUER DETENTOR DOS DIREITOS AUTORAIS DO DOCUMENTO OU QUALQUER OUTRO QUE VENHA A DISTRIBUIR E/OU REDISTRIBUIR O OC COMO PERMITIDO ACIMA, DEVA SER RESPONSABILIZADO POR VOCÊ POR DANOS, SEJAM ELES GERAIS, ESPECIAIS, ACIDENTAIS OU CONSEQÜÊNCIA ACERCA DO USO OU INCAPACIDADE DE USO DO OC, MESMO QUE O DETENTOR DOS DIREITOS AUTORAIS OU TERCEIROS TENHAM SIDO AVISADOS DAS POSSIBILIDADES DE TAIS DANOS.
Algumas dicas citadas aqui foram retiradas do site
http://www.linuxall.org
- Linuxall na Brasnet/U>
Seus respectivos autores estão sendo mencionados.
Por motivos pessoais, Hugo Cisneiros abandonou o projeto deste manual. Para maiores informações do porquê disto, acesse a página do manual em: http://www.netdados.com.br/tlm/. Após isso, eu resolvi cuidar da atualização deste manual neste formato conforme eu puder.
Se você tem alguma crítica, correção, comentário, uma dica ou tutorial que gostaria de incluir aqui, por favor entre em contato pelo e-mail: arfreitas@ig.com.br. O manual continua precisando de voluntários.
Você pode obter versões atualizadas deste manual em: http://www.imortais.cjb.net
Primeiramente gostaria de agradecer a toda comunidade Linux, pois muito desse manual foi criado com o esforço de outros que vieram primeiro, estudaram o assunto e deixaram seu legado.
Se por um acaso eu esqueci de incluir o nome de alguém aqui, por favor reclamem!
Rafael Rubik (Natas), pela tradução do texto “Programas para Segurança”, do original em inglês. Infelizmente não temos o nome do autor para prestar-lhe os créditos aqui.
Joaquim Ferreira, meu ex-chefe, por não me deixar fuçar de jeito nenhum numa SUN Sparc Station, só porque ela controlava todo sistema de telefonia na época (Alceu, não mexa na Sun! Ela é sensível!). Se não fosse por ele, talvez nunca teria comprado uma revista com o cdrom do Linux...
Gustavo Almeida José, pelo apoio e pelas dicas.
Cyberwalker, do site LinuxAll, pelas dicas e tutoriais.
Subzero01 (subzero01@flashmail.com) pelo tutorial do LILO.
Levy (levy@fractal.com.br) pelo tutorial de emails virtuais
Paulino Kenji Sato (paulino@dfi.uem.br) pelo tutorial Linux como Bridge
Jonildo Andrade dos Santos (john@tch.com.br) pela dica de FTP daemon
Arnaldo Carvalho de Melo (acme@conectiva.com.br) – pelo erro de módulos de rede.
De Guido Gonzato(guido@ibogfs.cineca.it) - DOS/Windows ao Linux HOWTO
E traduzido para o português por Rafael Rodrigues Obelheiro (obelix@biquinho.furg.br) Rafael Caetano dos Santos (rcaetano@linux.ime.usp.br)
João Paulo (camara@svn.com.br) e Ricardo Alexandro (ricardoalexandro@hotmail.com) pelo tutorial de servidor Intranet/Internet
X-man (ayresp@mandic.com.br) pelo tutorial de compilação do kernel
Máximo (maximo@roadnet.com.br) e Jungle Man (jungle@medusa.sti.com.br) pela dica de verificação de memória
Ricardo A Guimarães (psi@sodre.net)
Blaster (blaster@rock-br.com.br)
Maurício Bonani (LazarusMan) pelos links cedidos
Alguns links foram cedidos gentilmente pelo meu amigo Maurício Bonani (LazarusMan).
1Aliás, quando será que vão traduzir o dselect para o português?
2Essa é até uma questão filosófica interessante: porque destruir sempre é mais fácil que o contrário?
3Na realidade até pode, mas você não vai querer fazer isso.
4 Tudo bem, seja sincero, essa foi muito fácil. O “if” vem de interface, o cfg de configuração e o “eth0” da primeira placa ethernet.