Você está na página 1de 253

CURSO

ADMINISTRAÇÃO GNU/LINUX

“Do consciente e do intelecto coletivo, da participação de muitos e ajuda de


todos, o software livre se expande, quebra fronteiras e chega até você.
Assimile, entenda, discuta, utilize, melhore e repasse para outros. Esta é a
filosofia do mundo livre e daqueles que entendem que a informação e
conhecimento são direitos de todos os seres humanos.
Software livre é: tecnologicamente viável,
economicamente sustentável e socialmente justo.”

Florianópolis, Maio de 2006.


Treinamento em Software Livre

ADMINISTRAÇÃO GNU/LINUX - 2/253


Treinamento em Software Livre

Aos Participantes:

Este treinamento é voltado para os profissionais de informática que prestam suporte

tecnológico em sistemas operacionais, redes de computadores, segurança da informação

e aplicativos de um modo geral.

Os conteúdos serão apresentados da maneira mais simples possível, procurando sempre

buscar um paralelo com outras tecnologias de sistemas operacionais e outros aplicativos

similares.

Neste contexto, a experiência e a vivência de cada um será um fator importante para

assimilação das informações aqui apresentadas.

Sempre que não entender, tiver dúvidas ou necessitar de mais esclarecimentos, chame o

instrutor e peça que esclareça suas dúvidas. Não deixe pontos em aberto sobre

conceitos importantes, pois o conhecimento aqui repassado é encadeado e forma uma

seqüência lógica de agregação de informações e conhecimento.

Tenha um bom curso!

ADMINISTRAÇÃO GNU/LINUX - 3/253


Treinamento em Software Livre

ADMINISTRAÇÃO GNU/LINUX - 4/253


Treinamento em Software Livre

Dicas para um melhor aprendizado!

Cada pessoa possui sua própria maneira de aprender, seu próprio estilo de estudar e
geralmente se ajustam à cada tipo de curso. Entretanto, algumas dicas, dispostas
abaixo, podem ajudar a nos organizar e aprimorar nossa maneira de aprender:

Planejamento – Trace objetivos e estratégias para chegar onde deseja. Siga passo-a-
passo e não queime etapas. Faça o que for preciso primeiro, depois o que gostaria de
fazer e não esqueça: “Para se chegar mais longe, ande mais devagar.” Confúcio

Atenção – Escute os conceitos, leia atentamente os conteúdos, faça os exercícios e siga


os exemplos até compreendê-los completamente, não deixe que lhe tirem a atenção
quando estiver aprendendo.

Prática – A experiência decorre da prática, portanto pratique muito e exercite sua


mente com os exemplos oferecidos. Somente praticando vai assimilar melhor e aprender
mais.

Erros – Não se incomode com erros nos momentos de aprendizagem. Somente quem faz
é que tem o direito de errar. Os erros nos permitem aprender muito mais, pois errando
aprendemos como não fazer. Não se esqueça porém, de aprender com seus erros, isto é
o mais importante!

Busque – Você é o principal agente de seu conhecimento e aprendizagem. Livros,


apostilas e instrutores, são somente alguns meios para lhe trazer conhecimento. É
importante que você busque os conceitos que lhe faltam. O aprendizado depende muito
mais de você do que de qualquer outra coisa.

Motivação – Renove sua motivação a cada aula, pense sempre nos seus objetivos e onde
deseja chegar. A motivação muitas vezes rompe barreiras e derruba obstáculos, como a
preguiça e o mal humor.

Descanso – Ser dedicado exige bastante de você. Procure o momento correto de


descansar e procure se desvincular dos assuntos que está aprendendo. Se desligue dos
temas atuais, pois assim conseguirá renovar suas energias. Procure se dedicar ao
descanso da mesma forma que ao trabalho.

ADMINISTRAÇÃO GNU/LINUX - 5/253


Treinamento em Software Livre

ADMINISTRAÇÃO GNU/LINUX - 6/253


Treinamento em Software Livre

Notas do Autor

O presente material é resultado de uma busca constante por informações sobre os sistemas
UNIX e GNU/Linux, os quais sempre estiveram presentes na vida daqueles que trabalham com
atividades relacionadas com a Tecnologia da Informação.

Há de se considerar que as documentações e materiais disponíveis no mundo dos sistemas


proprietários, apresentam qualidade de elaboração superior, diagramação elaborada e muita
qualidade técnica. Precisamos chegar nestes níveis com a documentação do mundo dos sistemas
livres.

Diversos textos foram consultados na Internet, além dos livros e materiais citados no presente
documento e sites de busca, enfim, muita informação foi procurada mas muito pouco foi
aproveitada, pois muitas informações estão escritas sobre casos específicos, versando sobre
temas muito fechados, não abrindo exposições para uma melhor compreensão do contexto que
foram escritas.

Vários dos textos iniciais deste material foram extraídos da Apostila de Treinamento
GNU/LINUX Módulo 1 do CCUEC da UNICAMP, a qual foi elaborada por Fábio da Silva Santos,
onde aqui preservamos os direitos autorais dos respectivos textos, juntamente com a respectiva
licença, contida também neste documento.

Agradeço à todos que auxiliaram direta ou indiretamente a confecção deste material e, em


particular à Vanessa Cristiani de Souza Ruas, pela correção ortográfica e ajustes no layout.

Como citado anteriormente, este texto é livre para quem quiser se utilizar, copiar, recortar tudo
ou em parte. Não se teve aqui objetivos de direitos autorais, tampouco financeiros ou de qualquer
relação com temas que enfatizem uma propriedade de alguma coisa.

Procuramos citar todas as fontes e licenças agregadas nas informações aqui contidas, para
preservar os direitos de quem as escreveu. Entretanto, fica aqui registrada minhas desculpas
pela falta da citação que porventura poderia ter ocorrida neste material.

Não se objetiva nada mais do que passar informação, conhecimento e experiência profissional e,
se alguém achar o contrário estará veêmentemente enganado, pois “[...] a informação e o
conhecimento é um direito de todos os seres humanos.”, não somente dos privilegiados que
tiveram as oportunidades na vida de obtê-las.

Florianópolis, Maio de 2006

Luiz Antonio Silva de Paula


luiz.a.paula@gmail.com

ADMINISTRAÇÃO GNU/LINUX - 7/253


Treinamento em Software Livre

ADMINISTRAÇÃO GNU/LINUX - 8/253


Treinamento em Software Livre

Sumário
2 HISTÓRICO.................................................................................................................................... 13
2.1 Fatos Históricos do Unix..................................................................................................... 13
2.2 Fatos Históricos do Linux................................................................................................... 15
2.3 Informações Básicas Sobre o Linux.................................................................................. 16
2.4 O Padrão LSB – Linux Standard Base............................................................................... 20
3 VISÃO GERAL DO GNU/LINUX................................................................................................ 21
3.1 Características Gerais do GNU/Linux.............................................................................. 22
3.2 O Sistema de Arquivos do Linux........................................................................................ 23
3.3 Organização dos Arquivos em Disco................................................................................. 24
3.4 Endereçamento de Arquivos nos Discos........................................................................... 27
3.5 Estrutura de Diretórios no Linux...................................................................................... 28
3.6 Particionamento de Discos no Linux.................................................................................. 34
3.7 Ponto de Montagem............................................................................................................... 36
4 INSTALAÇÃO DO GNU/LINUX............................................................................................... 37
4.1 Procedimentos Pré-Instalação............................................................................................ 37
4.2 Instalação de um GNU/LINUX Básico............................................................................. 38
4.3 Iniciando o processo de Instalação................................................................................... 39
4.4 Configurações Iniciais do Sistema.................................................................................... 55
5 COMANDOS BÁSICOS.............................................................................................................. 63
5.1 - ls : lista conteúdos de diretórios.................................................................................... 63
5.2 - mkdir : cria diretórios....................................................................................................... 63
5.3 - rmdir : remove diretórios vazios.................................................................................... 64
5.4 - rm : remover diretórios e arquivos................................................................................ 64
5.5 - cd : muda o diretório de trabalho atual........................................................................ 64
5.6 - pwd : mostra o nome e caminho do diretório atual..................................................... 65
5.7 - clear : limpa tela do terminal e posiciona o cursos no início da tela.......................65
5.8 Comandos de Ajuda............................................................................................................... 65
5.9 O interpretador de comandos – O Shell.......................................................................... 68
5.10 Editor de textos “vi”........................................................................................................... 85
5.11 Ambiente do Usuário........................................................................................................... 87
6 EMPACOTADORES E COMPACTADORES............................................................................... 91
6.1 O Empacotador de arquivos tar...........................................................................................91
6.2 Os Compressores de arquivos compress, uncompress, gzip, gunzip, bzip2 e
bunzip2............................................................................................................................................ 92
7 PROGRAMAÇÃO BÁSICA EM SHELL SCRIPT...................................................................... 95
7.1 Shell Scripts........................................................................................................................... 95
7.2 Proteção de Caracteres Especiais (Quoting).................................................................. 95
7.3 Formas de Execução de Comandos.................................................................................... 96
7.4 Operadores............................................................................................................................. 98
7.5 Variáveis Especiais................................................................................................................ 98

ADMINISTRAÇÃO GNU/LINUX - 9/253


Treinamento em Software Livre

7.6 Estruturas de Programação Shell...................................................................................... 99


8 GERENCIAMENTO DE PACOTES (.deb e .rpm)......................................................................111
8.1 Gerenciando Pacotes .deb.................................................................................................... 111
8.2 Ferramentas Para Gerenciamento de Pacotes............................................................... 112
8.3 Pacotes em Formato .rpm...................................................................................................125
9 ADMINISTRAÇÃO DE USUÁRIOS, GRUPOS E PERMISSÕES..................................... 127
9.1 Mecanismos de Autenticação............................................................................................ 127
9.2 Arquivos de Usuários e Grupos........................................................................................ 128
9.3 Administração de Usuários, Senhas e Grupos.............................................................. 130
9.4 Permissões de Arquivos e Diretórios.............................................................................. 138
9.5 chmod...................................................................................................................................... 140
9.6 chown...................................................................................................................................... 142
9.7 chgrp....................................................................................................................................... 143
9.8 umask...................................................................................................................................... 143
9.9 Atributos de Arquivos........................................................................................................ 144
10 QUOTAS DE DISCO................................................................................................................. 147
10.1 Procedimentos para Implementar Quotas de Disco...................................................147
10.2 Comandos para a Gerência de Quotas em Disco......................................................... 149
11 DISCOS, PARTIÇÕES E RAID NO GNU/LINUX.............................................................. 153
11.1 Particionamento de Discos................................................................................................ 153
11.2 CFDISK – Um particionador de Discos.......................................................................... 154
11.3 Comandos Para Gerência de Discos, Partições e ........................................................ 158
11.4 RAID no GNU/Linux........................................................................................................... 161
12 NÍVEIS DE EXECUÇÃO DO SISTEMA............................................................................... 163
12.1 O Processo INIT e os Níveis de Execução do Sistema............................................ 163
13 GERENCIAMENTO DE PROCESSOS.................................................................................... 169
13.1 Tipos de Processos e Atributos...................................................................................... 169
13.2 Comandos para a Gerência de Processos.......................................................................171
14 GERENCIADORES DE BOOT – GRUB E LILO.................................................................... 175
14.1 LILO – Linux Loader.......................................................................................................... 175
14.2 GRUB – Grand Unified Bootloader................................................................................. 178
15 PAM – PLUGGABLE AUTHENTICATION MODULES....................................................... 183
15.1 Arquivos de Configuração do PAM................................................................................. 183
16 AGENDADORES DO SISTEMA – CRON E AT................................................................... 187
16.1 O Comando at....................................................................................................................... 187
16.2 O Comando Crontab........................................................................................................... 188
16.3 Agendamentos do Sistema............................................................................................... 189
17 FUNDAMENTOS E CONFIGURAÇÕES DE REDE.............................................................. 191
17.1 TCP/IP Definições Básicas............................................................................................... 192
17.2 Definições Especiais para Endereços............................................................................ 193
17.3 Configurações das Interfaces de Rede.......................................................................196
18 SERVIÇO SSH............................................................................................................................ 199
18.1 Instalação e Configuração do Servidor SSH............................................................... 199
18.2 Comandos do SSH............................................................................................................. 200

ADMINISTRAÇÃO GNU/LINUX - 10/253


Treinamento em Software Livre

19 TCP WRAPPER............................................................................................................................. 201


20 SERVIDOR GRÁFICO X-WINDOW.....................................................................................203
20.1 Instalando o Servidor X Window.................................................................................. 203
20.2 Instalando um Gerenciador de Janelas........................................................................ 214
20.3 Instalando Gerenciadores de Display........................................................................... 214
20.4 Instalação do KDM............................................................................................................ 215
21 SERVIDOR DE IMPRESSÃO CUPS E LPRng....................................................................... 217
21.1 LPRng..................................................................................................................................... 217
21.2 Servidor CUPS (Common Unix Printing System)........................................................ 218
22 SERVIÇO SAMBA..................................................................................................................... 223
22.1 Configurando um Servidor Member Server................................................................224
22.2 Variáveis do Samba.......................................................................................................... 229
23 SERVIÇO DHCP.......................................................................................................................... 231
23.1 Instalação e Configuração do DHCP Server................................................................ 231
Anexo I – Licença GNU/GPL – Uma tradução Não Oficial.................................................... 235
Anexo II – Licença Apostilas CCUEC......................................................................................... 243
Anexo III – Aplicativos para o GNU/Linux.............................................................................. 245
Anexo IV – Bibliografia e Outros Links..................................................................................... 253

ADMINISTRAÇÃO GNU/LINUX - 11/253


Treinamento em Software Livre

ADMINISTRAÇÃO GNU/LINUX - 12/253


Treinamento em Software Livre

2 HISTÓRICO

2.1 Fatos Históricos do Unix

Não é possível falar em Linux sem antes apresentar a história de sua descendência e os fatos
históricos que o precederam. É importante que se tenha em mente que uma série de
acontecimentos propiciaram a evolução dos computadores e conseqüentemente dos sistemas
operacionais, como o Linux por exemplo.

No final da década de 60 e início dos anos 70, os computadores eram grandes artefatos de
eletrônica e o acesso à eles era restrito ao mundo de cientistas e pesquisadores, sem esquecer do
uso militar que tais equipamentos sempre tiveram.

A pressão da necessidade de utilização dos computadores por mais pesquisadores e cientistas,


levou ao desenvolvimento de sistemas operacionais que fossem multitarefa e multiusuário. Os
sistemas atuais à época não atendiam a estes requisitos. Era inevitável que não surgisse um
sistema que tornasse o uso dos computadores mais democrático.

Em 1969 Ken Thompson cria o Unix em um computador PDP-7 da DEC. Ele foi escrito inicialmente
em linguagem Assembly, a qual é altamente atrelada ao código interno do microprocessador,
impedindo sua disseminação para outros tipos de computadores.

Em 1971 é lançada a versão 1 do Unix a qual ainda era totalmente escrita em linguagem Assembly.

Em 1970 Dennis Ritchie cria a linguagem C, que era uma evolução da linguagem B e juntamente com
Thompson, portam o Unix para outras arquiteturas de hardware, fato que aconteceu somente em
1973, quando Thompson e Ritchie escreveram o primeiro compilador C para Unix.

Em 1973 foi criada a versão 4 do Unix agora escrita em linguagem C e foi o marco principal para a
evolução deste sistema operacional.

No inicio o Unix foi mantido pelos laboratórios da AT&T (American Telegraph And Telephone) e,
em 1974 foi distribuído gratuitamente para as universidades americanas. Mais tarde a AT&T
fechou o código do Unix devido ao grande interesse comercial pelo sistema.

Vários pesquisadores e centros de pesquisa desenvolveram o Unix. Destaca-se aqui o grupo da


Universidade da Califórnia, em Berkeley, que em 1975 licenciou a versão 6 da AT&T com várias
melhorias, relançando-a agora como Unix BSD. No Brasil destaca-se o trabalho da antiga estatal
COBRA – Computadores Brasileiros, que desenvolveu o SOX, um sistema Unix Like baseado no
Unix System V da AT&T.

Na década de 80 quando as estações de trabalho RISC (Reduced Instructions Set Computer)


foram lançadas, várias versões de Unix apareceram, como: Sun OS da Sun, AIX da IBM, OSF/1
da Digital, Irix da Silicon Graphics e HP-UX da Hewlett Packard.

Para que houvesse um padrão mínimo de Unix no mercado, em 1990 o IEEE (Instituto de
Engenheiros Elétricos e Eletrônicos) desenvolve o padrão POSIX (Portable Operanting System

ADMINISTRAÇÃO GNU/LINUX - 13/253


Treinamento em Software Livre

Interface Unix) para uniformizar as características dos sistemas Unix.

Até no início da década de 80, o Unix ainda não possuía um sistema gráfico nativo. Entretanto, o
MIT (Instituto de Tecnologia de Massachusets) desenvolve um sistema gráfico baseado na
arquitetura cliente e servidor. Este sistema foi denominado X Window System, ou Sistema de
Janelas X.

Em 1988 o controle do X Window System foi passado para o X Consortium (Consórcio X), que era
uma instituição sem fins lucrativos criada para manter e garantir a evolução do sistema de janelas
X.

Fatos Históricos Marcantes do Unix


Data Evento
1969 Ken Thompson cria o Unix, executado em um PDP-7 da DEC.
1970 Thompson e Ritchie instalam o Unix em um PDP-11/20 da DEC. Ritchie cria a linguagem
C para permitir a portabilidade para várias plataformas de hardware.
1971 Lançada a versão 1 do Unix, escrita em linguagem Assembly.
1973 Ritchie e Thompson escrevem o primeiro compilador C para Unix e a versão 4 do Unix
foi escrita nesta linguagem.
1974 A AT&T autoriza a distribuição do código-fonte do Unix para as universidades.
1975 Lançada a versão 6 do Unix. Sua distribuição é ampla nas universidades e a
Universidade da Califórnia, em Berkeley, começa a desenvolver o Unix BSD.
1978 Lançada a versão 7 do Unix, agora com pagamento de licença.
1979 A AT&T lança o Unix System III.
1983 A AT&T lança o Unix System V. A universidade da Califórnia, em Berkeley, lança o
BSD Unix 4.2 e a Sun o utiliza como base para a criação do SunOS.
1984 O Servidor de janelas X Window começa a ser desenvolvido no MIT.
1986 Primeira implementação comercial do X Window, executando em uma máquina
VAXStation-II/GPX, a versão era a X10R3.
1987 A AT&T lança a versão Unix System V release 3. É lançado o BSD 4.3. A Sun e AT&T
concordam em fundir o BSD Unix e o Unix System V.
1988 Criação do X Consortium, organização sem fins lucrativos criada para garantir a
evolução do sistema X Window System. Neste ano é lançada a versão X11R3.
1990 A AT&T lança o Unix System V release 4, que promove uma unificação relativa do BSD
Unix e do System V. O Minix, criado por Andrew Tanenbaumn é disponibilizado na
Internet.
1992 A Sun lança o Solaris, baseado no Unix System V release 4. É lançado também a
versão 0.99pl5 do Linux.
1992/93 Lançada a primeira distribuição Linux em CDROM, a Yggdrasil.
1994 Lançada a versão livre do X Window, o Xfree86, pelo grupo XFree Project. A
Microsoft lança o Windows NT 3.5. A Novell dominava o mercado de servidores de
rede com o Netware 4.1.
1996 A Microsoft lança o Windows NT 4.0.
Tabela adaptada do livro Unix Guia do Administrador do Sistema, de Rubem E. Ferreira, da
editora Novatec, edição 2003, páginas 22-23.

ADMINISTRAÇÃO GNU/LINUX - 14/253


Treinamento em Software Livre

2.2 Fatos Históricos do Linux

Richard Stallman, pesquisador do MIT, funda em 1983 a Free Software Foundation (Fundação do
Software Livre) e lança o projeto GNU (GNU is not Unix) o qual tinha o objetivo de criar um clone
do Unix que fosse melhorado, que não utilizasse seu código fonte e que fosse livre.

O desafio era enorme pois tudo precisava ser feito, inclusive o Kernel do sistema. Os utilitários
do sistema, ferramentas de administração, de rede, de programação, os comandos padrões, enfim,
muita coisa precisa ser desenvolvida. No final da década de 80, apenas os utilitários de
programação e os comandos-padrão estavam prontos e o projeto de Stallman fracassara.

Uma grande oportunidade então apareceu no horizonte quando o Dr. Andrew Tanenbaum
desenvolveu, para efeitos didáticos, o Minix como instrumento de ensino. Este sistema foi
desenvolvido originalmente para a plataforma Intel 8086, pois esta já estava amplamente
disponível e com preço baixo.

O microprocessador 8086 não dispunha de memória virtual ou memória protegida e somente


endereçava 1 MB de cada vez. Estas características limitavam o Minix para ser um sistema
operacional multitarefa e multiusuário, ficando restrito às funções de ensino.

No final da década de 80, um aluno da universidade de Helsinque, na Finlândia, percebeu que o


microprocessador Intel 80386 seria uma plataforma adequada para o desenvolvimento de um
sistema nos moldes do Unix. Este aluno foi Linus Benedict Torvalds.

Linus B. Torvalds desejava construir um Kernel clone do Unix que tivesse memória virtual,
multitarefa preemptiva e multiusuário. Porém este trabalho seria enorme para uma pessoa
somente, mesmo que conhecesse muito bem as teorias que envolvem os sistemas operacionais.

Na primavera de 1991, Linus B. T. da início à um projeto particular inspirado no Minix. Ele queria
um Minix melhor que o Minix. Após algum tempo, seu projeto solitário de um Kernel, conseguia
executar os utilitários de programação e os comandos-padrão do Unix clonados pelo projeto GNU.
Vendo então que não conseguiria continuar sozinho nesta tarefa, Linus enviou para a lista de
discussão comp.os.minix, com o seguinte desafio:
“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 está 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 há um mê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 as
fontes para ampla distribuição. ele está na versão 0.02.., contudo, eu tive êxito rodando bash,
gcc, gnu-make, gnu-sed, compressão, etc, nele”.

Então, em 5 de Outubro de 1991, Linus B. Torvalds lançou a primeira versão oficial do Linux: o

ADMINISTRAÇÃO GNU/LINUX - 15/253


Treinamento em Software Livre

Linux 0.02. Desde então, vários programadores pelo mundo afora têm colaborado no
desenvolvimento do Linux e tornando o sistema o que ele é atualmente.

Fatos históricos marcantes do Linux


Data Evento
1969 Criação do Unix pela AT&T
1974 O Unix é distribuído para as universidades. É montado o cenário para o surgimento
em todo o mundo de programadores de sistemas altamente capacitados.
1983 Richard Stallman cria a Free Software Foundation.
1984 O X Window é criado no MIT.
1988 O Dr. Andrew Tanenbaum desenvolve o Minix para efeitos didáticos.
1990 Linus B. Torvalds assiste à sua primeira aula de linguagem C.
1991 Linux B. Torvalds inicia o desenvolvimento do Linux.
1992 A versão 0.01 é discutida na Internet. É lançada a versão 0.95 do Linux. A Yggdrasil
lança a primeira distribuição Linux em dezembro.
1993 A Yggdrasil libera a produção da distribuição do Linux
1994 Lançada a versão 0.99pl15 do Linux. É lançado o Xfree86. A Yggdrasil lança o
primeiro CD-ROM contendo uma distribuição Linux. A Red Hat, a Slackware e outras
distribuições surgem em CD-ROM
1995 Surge a primeira versão modularizada do Linux.
1996 A Caldera lança a versão 1.0 com Netscape incluso e também com WordPerfect for
X.
1998 A Conectiva lança a primeira distribuição brasileira do Linux, baseada no Red Hat.
Tabela adaptada do livro Unix Guia do Administrador do Sistema, de Rubem E. Ferreira, da
editora Novatec, edição 2003, páginas 24.

2.3 Informações Básicas Sobre o Linux

O Linux não é software de domínio público, pois está licenciado sob a licença GPL ( GNU Public
License), onde, por exemplo, o código-fonte do Linux poderá permanecer livremente disponível. É
possível cobrar pela cópia do Linux, desde que, não limitem a sua distribuição.

Diversas pessoas têm auxiliado no desenvolvimento do Linux pelo mudo afora. Este
desenvolvimento é dirigido por Linus B. Torvalds e cada colaborador mantém os direitos de
copyright sobre os códigos que escreveram.

A versão 1.0 do Linux foi liberada no dia 14 de março de 1994 e até hoje, inúmeras versões novas
foram feitas desde então.

O Linux segue um modelo de desenvolvimento aberto e a cada nova versão liberada, o produto
agrega mais qualidade. Como forma de padronizar as versões do Kernel do Linux, a equipe de
desenvolvimento adotou o seguinte esquema sobre as numerações de versões:

– Versões x.y.z, onde y é um número par, se o Kernel for considerado estável;


O incremento de z significa apenas correções de bugs. Deste modo, entre a versão

ADMINISTRAÇÃO GNU/LINUX - 16/253


Treinamento em Software Livre

2.6.8 e 2.6.12, houveram somente correções de erros e nenhuma característica nova;


– Versões x.y.z, onde y é um número ímpar, se o Kernel for considerado instável;
Estas são versões beta e de desenvolvimento. Geralmente somente as equipes que
trabalham com o Kernel é que se utilizam destas versões. Nada impede porém, que você
teste uma versão instável do Kernel. Entretanto, tenha em mente que não é uma versão
confiável para se colocar em um ambiente de produção.

As distribuições Linux atualmente permeiam de sabores o mundo Linux. Existem várias


distribuições ao redor do mundo. Apresentamos abaixo algumas das mais conhecidas:

➢ SuSe: Distribuição alemã, adquirida pela americana Novell, que vem se destacando pelo
seu grande crescimento no mercado corporativo, sendo a distribuição que mais cresce
atualmente nesse setor. O SuSE Linux sempre se destacou por ter o melhor suporte a
hardware dentre as distribuições existentes, isso graças à inclusão de drivers não-
livres (gratuitos ou pagos) com seu sistema operacional. O SuSE possui uma ferramenta
muito versátil, o YAST, através da qual é possível configurar todo o sistema, além de
gerenciar os programas instalados, tudo ao alcance do mouse. A união dessa facilidade
como ótimo suporte comercial vem fazendo do SuSE uma das melhores alternativas
para grandes empresas, que não podem abrir mão de suporte técnico especializado e
sempre à mão.

➢ Red Hat :Lançada oficialmente em novembro de 1994, a Red Hat foi a empresa pioneira
no ramo de GNU/Linux, tornando-se rapidamente a maior empresa do mundo a
trabalhar exclusivamente com o sistema operacional livre. Ainda hoje, a Red Hat é a
distribuição mais utilizada no mundo, e muitas outras distribuições famosas como SuSe
e Mandriva são derivadas dela. Pioneira no uso de ferramentas para configuração e
manutenção do sistema, o Red Hat foi e, ainda é usado principalmente em servidores, a
contragosto de muitos que dizem que seu desempenho não é lá dos melhores, apesar da
extrema facilidade do gerenciamento do sistema, fornecida pelas ferramentas
incluídas na distribuição. No atual modelo de negócios, a Red Hat está desenvolvendo
somente soluções para empresas através de distribuições fechadas, não disponíveis
para download.

➢ Fedora : Quando a Red Hat decidiu mudar seu modelo de negócios e trabalhar apenas
com soluções para o mercado corporativo, deixou de disponibilizar a sua distribuição
para download sob uma licença de Software Livre. Isso causou uma certa revolta na
comunidade, que alegava que a Red Hat a estava traindo. Temendo retaliação e boicote,
a Red Hat decidiu criar uma versão livre de seu sistema operacional, voltado para o
desktop, e disponibilizá-la abertamente para download. Chamado de Fedora, o projeto
alcançou um grande sucesso, e atualmente é utilizado por um número expressivo de
usuários ao redor do mundo. Por possuir as mesmas ferramentas do Red Hat, a
migração dos usuários aconteceu de forma tranqüila e nem um pouco traumática. O
Fedora é mantido pela comunidade, e gerenciado pela Red Hat. Atualmente ele está na
versão Core 4.

➢ Conectiva (Mandriva) : A primeira distribuição GNU/Linux nacional criada em 1995.


Baseada no Red Hat, o Conectiva Linux destacou-se graças ao ótimo suporte ao
hardware comumente usado no Brasil e aos seus programadores que desenvolveram
diversas ferramentas utilizadas posteriormente por muitas distribuições, como o

ADMINISTRAÇÃO GNU/LINUX - 17/253


Treinamento em Software Livre

gerenciador de pacotes Synaptic e o APT for RPM, uma adaptação do APT do Debian
para sistemas baseados no Red Hat. A Conectiva tornou-se rapidamente a maior
empresa de Linux da América Latina, tendo sido recentemente adquirida pela francesa
MandrakeLinux, tornando-se a distribuição Mandriva. A Conectiva sempre
disponibilizou os seus produtos sob a licença GPL, exceto as versões para empresas do
seu sistema operacional.

➢ Mandrake (Mandriva) : Distribuição francesa baseada no Red Hat, que com o tempo
tomou características próprias e assumiu um sucesso que tornou a Mandrakelinux a
maior empresa do ramo de Linux na Europa. O principal trunfo do Mandrake é a
facilidade de uso. Tudo é simples de fazer, desde a instalação do sistema até a sua
configuração, instalação de novos itens de hardware e gerenciamento dos programas
instalados. Suporta vários idiomas, incluindo o português brasileiro, e possui muitos
serviços para usuários, como o Mandrake Club, onde o membro recebe as últimas
atualizações sobre segurança, softwares, e outros, de forma rápida e automatizada.
Recentemente, a Mandrakelinux comprou a brasileira Conectiva, tornando-se também a
maior empresa do ramo de Linux da América Latina, e lançando a nova distribuição, o
Mandriva.

➢ Slackware : Mais antiga das distribuições, criada em abril de 1993 pelo irlandês,
Patrick Volkerding, o Slackware é uma distribuição tradicionalista, voltada para
usuários que conhecem o sistema e sabem o que estão fazendo. O objetivo de Patrick é
fornecer um ambiente o mais parecido possível com um sistema UNIX padrão,
mantendo a simplicidade e oferecendo total controle para o administrador. Além disso,
o Slackware é a única distribuição que não aplica patches (pacotes de correção e
modificações) nos seus pacotes, ficando essa tarefa a cargo do usuário, se assim achar
necessário. O melhor uso do Slackware é em servidores dedicados, geralmente
estáticos no sentido de não requererem atualizações constantes de software, e onde o
sistema seja administrado por uma pessoa apenas, que sabe muito bem o que está
fazendo. O Slackware tem a fama de ser uma distribuição difícil e sem muitos
recursos. É comum os iniciantes enfrentaram problemas com a configuração do
servidor gráfico.

➢ Debian : O Debian foi criado por Ian Murdock em 1993, inicialmente patrocinado pelo
projeto GNU da Free Software Fundation. Hoje, os projetistas do Debian entendem-no
como um descendente direto do Projeto GNU. O Debian atualmente inclui mais de
12000 pacotes de software, facilmente instaláveis através de uma ferramenta
chamada APT. Esses pacotes são em sua maioria softwares livres disponibilizados sob a
licença GPL. Alguns deles não são livres, mas ainda assim gratuitos. Você pode
encontrar uma lista e descrições dos pacotes atualmente disponíveis no Debian em
qualquer um dos seus sites mirrors (espelhos). Um diferencial do Debian sobre as
demais distribuições é que ele é o único sistema que não é mantido, supervisionado ou
patrocinado por alguém ou alguma organização. Todo o sistema, incluindo suas
ferramentas e os pacotes que utiliza são mantidos por diversos desenvolvedores ao
redor do mundo. Mas nem por isso o processo de desenvolvimento do Debian é
desorganizado, muito pelo contrário, é um dos processos mais organizados que se
conhece. As pessoas que se candidatam a serem mantenedores do sistema passam por
testes dificílimos, ficam um longo período em experiência e, se aprovados, têm de
assinar um termo de responsabilidade onde se comprometem a garantir a continuidade

ADMINISTRAÇÃO GNU/LINUX - 18/253


Treinamento em Software Livre

do sistema operacional, zelando pela qualidade e segurança de tudo o que passar por
suas mãos. Prega-se que o Debian é a distribuição mais testada do mundo, e isso é de
fato verdade. O processo de inclusão de um recurso no sistema ou um pacote no
repositório é muito rígido, o que garante uma confiabilidade total na integridade e
segurança do sistema.

➢ Gentoo : Criado por Daniel Robins, o Gentoo é uma distribuição que pode ser definida
como um “ Linux From Scratch automatizado”. A instalação é feita segundo os mesmo
princípios de uma instalação de GNU/Linux a partir do zero, com todos os pacotes
sendo compilados um a um, incluindo o kernel. A diferença é que o Gentoo permite
automatizar essas tarefas, através de um sistema de gerenciamento de pacotes, o
Portage, que busca e baixa o pacote da Internet, compila-o e instala-o
automaticamente, de acordo com as configurações feitas pelo usuário. O Gentoo possui
arquivos de configuração próprios que definem as opções que devem ser utilizadas pelo
compilador, de forma a otimizar os pacotes para uso na máquina local. Quando bem
configurado, o Portage acaba produzindo um sistema onde o desempenho é o ponto mais
marcante. Outro ponto de destaque o Gentoo é a rica documentação disponível em seu
site oficial. Mesmo usuário de outras distribuições podem se beneficiar de documentos
que tratam de assuntos fundamentais como particionamento, formatação e sistema de
arquivos, muitos desses documentos já traduzidos pela comunidade brasileira do
Gentoo.

➢ Knoppix : Distribuição criada por Laus Knooper que oferece a possibilidade de rodar o
sistema a partir do CD-ROM. O Knoppix é muito popular, sendo muito utilizado para
demonstrações do GNU/Linux, uma vez que pode-se rodar um sistema completo,
repleto de aplicativos, a partir de um CD, sem necessidade de instalação.

➢ Kurumin : Distribuição nacional criada por Carlos Eduardo Morimoto. O Kurumin é


baseado no Knoppix, tendo sobre esse a vantagem de ser adaptado à realidade do
usuário brasileiro, com ferramentas de instalação de hardwares muito comuns no
Brasil, como modems e outros dispositivos. Por ser baseado no Knoppix, o Kurumin
também roda a partir do CD, e pode ser rapidamente instalado no computador.

➢ Debian-BR-CDD : Este projeto é uma iniciativa da comunidade brasileira Debian-BR


para adaptar a distribuição Debian à realidade do usuário brasileiro. Seu grande apelo
está na facilidade de instalação e no belo aspecto visual. O Debian-BR-CDD 1.0 pre5
utiliza o GNOME como gerenciador de janelas padrão, inclui uma excelente
documentação para o usuário iniciante e um link para abrir o canal de IRC #debian-br-
cdd, onde é possível tirar dúvidas e relatar bugs diretamente para os desenvolvedores
do sistema.

➢ Muriqui Linux : Esse projeto é mantido e desenvolvido pelo Instituto Doctum de


Educação e Tecnologia. Trata-se de uma distribuição baseada no Debian (um tipo de
CDD, Custom Debian Distribution), com o diferencial de estar completamente
traduzido para o português brasileiro, e pelo fato de ele vir com o instalador Anaconda,
o mesmo usado em distribuições como o Red Hat e o Fedora. Isso o torna um sistema
Debian muito fácil de instalar. O nome da distribuição foi baseada no nome de um
macaco, considerado o maior da América Latina, que só existe em alguns poucos lugares
do Brasil. É uma distribuição nova, mas que pode se tornar sucesso em um futuro

ADMINISTRAÇÃO GNU/LINUX - 19/253


Treinamento em Software Livre

próximo.

➢ Ubuntu : Desenvolvido na África do Sul, o Ubuntu tem feito muito sucesso desde o seu
lançamento, graças às suas ferramentas que tornam muito prático o uso do sistema, e
também pelo seu visual caprichado, utilizando X.org como servidor gráfico padrão.

2.4 O Padrão LSB – Linux Standard Base

O LSB é um conjunto de padrões que objetiva compatibilizar e padronizar as diversas


distribuições Linux, permitindo, por exemplo, que qualquer software escrito para Linux seja
executado em qualquer distribuição, desde que esta também siga o padrão.

O padrão LSB ajudará a coordenar esforços dos desenvolvedores de software a converter e


escrever produtos para o Linux. Veja mais informações sobre os padrões nos site
http://www.linuxbase.org.

ADMINISTRAÇÃO GNU/LINUX - 20/253


Treinamento em Software Livre

3 VISÃO GERAL DO GNU/LINUX

O Linux na realidade é somente o Kernel do sistema operacional. Todos os demais aplicativos que
geralmente vêm nas distribuições, são desenvolvidos e mantidos por diversas organizações e
empresas pelo mundo.

Deste modo, a maneira correta de falar de um sistema operacional baseado no Kernel Linux é
denominá-lo de GNU/Linux.

O GNU/Linux engloba então, agora corretamente, o Kernel do sistema operacional e todos os


outros aplicativos que são executados sobre ele. Podemos citar por exemplo: O sistema de
Janelas X Window, os gerenciadores de janelas XDM, GKM e KDM, os ambientes de Janelas
Gnome, KDE, bem como todos os outros aplicativos como o OpenOffice, GIMP, browser Mozilla,
dentre outros.

É importante salientar, que todos os outros softwares necessariamente precisam estar


licenciados sob a licença GNU/GPL, fato este que geralmente não ocorre em sua plenitude, pois
sempre nas distribuições há algum pacote que não possua licença GPL, mas também são produtos
que não possuem restrição de utilização.

As principais fontes de software para o Linux estão atualmente em várias partes do mundo.
Abaixo apresentamos algumas delas:

– Free Software Foundation – www.fsf.org


Desenvolve utilitários de programação e comandos-padrão, como: GCC (compilador C),
gmake, bison, flex, grep e outros programas.
– Universidade da Califórnia, em Berkeley – BSD Linux
Fornece a maioria das ferramentas de administração do sistema e de rede, as quais
são liberadas sob a licença BSD que é menos restritiva que a licença GNU.
– Consórcio X – X Consortium
Criadores do sistema gráfico de janelas, o X Window. Embora atualmente a maioria das
distribuições estejam utilizando o Xfree86 da organização de mesmo nome
(www.xfree86.org), a qual portou o sistema de janelas para as plataformas Intel
80x86.
– Projeto SourceForge – www.sourceforge.org
O projeto é na verdade um repositório central de códigos-fonte de inúmeros
programas para o ambiente Linux. Sempre que precisar dos códigos-fonte de versões
novas de programas, no site acima é possível encontrar.
– Projeto OpenOffice (www.openoffice.org)
Este projeto mantém o desenvolvimento e a manutenção da principal switch de
escritório para o Linux. Os programas do OpenOffice objetivam uma alternativa às
demais switchs de escritório que são pagas. Atualmente na versão 2.0, os programas do
projeto estão bem avançados e apresentam melhora de performance e mais funções.
No Brasil, decorrente de problemas de registro do nome OpenOffice, esta switch de
escritório está sendo distribuída com o nome BROffice, mas mantém todas as
funcionalidades da vls da versão original do projeto.

ADMINISTRAÇÃO GNU/LINUX - 21/253


Treinamento em Software Livre

3.1 Características Gerais do GNU/Linux

O Linux possui as seguintes características:


– Sistema multitarefa e multiusuário de 32 ou 64 bits, dependendo da plataforma em
que está sendo executado;
– Ambiente gráfico baseado no sistema X Windows;
– Suporte para as linguagens de programação C, C++, Pascal, Lisp, PHP, Perl, Python,
Java, dentre outras;
– Suporte completo aos protocolos de rede TCP/IP versão 4 e versão 6, IPX, AppleTalk
e Netbios;
– Implementa memória virtual;
– Código-fonte do Kernel é de acesso público;
– Milhares de programas baseados na licença GPL, incluindo compiladores, editores,
ambiente multimídia, editores gráficos, etc;
– Sistema em aperfeiçoamento contínuo e participação mundial no desenvolvimento;
– Ampla variedade de sistemas de arquivos suportados, incluindo MSDOS e NTFS;
– Permissões em nível de arquivos e diretórios e permissões estendidas;
– Estabilidade do sistema;
– Suporte à diversos tipos de hardware e interfaces como USB, SCSI, IDE, PCMCIA,
InfraRed, etc;
– Eterno aprendizado do sistema.

Em termos de padronização e conformidade, o Linux obedece aos seguintes padrões do IEEE-


POSIX:
– POSIX.1 – Fornece uma API de linguagem C para o sistema operacional;
– POSIX.1a – Extensões de interface do sistema;
– POSIX.1b – Tempo real do sistema;
– POSIX.1c – Segmentos;
– POSIX.1d – Extensões em tempo real;
– POSIX.1e – Segurança;
– POSIX.1f – Acesso transparente ao arquivo;
– POSIX.1g – Serviços independentes de protocolo;
– POSIX.1h – Tolerância a falhas.

A interface de acesso ao Linux é através de um ambiente de


execução de Shell. O Shell é a camada de software que Hardware
implementa a ligação dos comandos dos usuários e o seu
encaminhamento para execução pelo Kernel.
Kernel
Nenhum comando de Shell acessa diretamente o hardware,
pois este papel é executado pelo Kernel do sistema. Veja na Shell
figura ao lado uma representação deste modelo de camadas
de software.

O Shell é um interpretador de comandos e também executor de scripts, no mesmo modelo de


programação. O Shell se constitui assim numa poderosa linguagem de programação de scripts. Os
principais tipos de Shell são o bash, csh, tsh, ksh e zsh. Em sua grande maioria, as distribuições
implementam no ambiente de execução dos usuários o Shell Bash.

ADMINISTRAÇÃO GNU/LINUX - 22/253


Treinamento em Software Livre

3.2 O Sistema de Arquivos do Linux

Tudo no sistema operacional Linux é tratado como arquivo. Desde um terminal de usuário, uma
impressora, um mouse e até mesmo o monitor de vídeo é tratado como arquivo. É desta maneira
que o sistema interage com os periféricos e as diversas interfaces do sistema.

Deste modo, o sistema de arquivos no Linux é de grande importância para se conhecer de fato sua
estrutura de funcionamento. Abaixo apresentamos algumas características importantes do
sistema de arquivos no Linux:

– Tamanho máximo do nome de arquivo é de 255 caracteres;


– Pode conter mais de um ponto no nome do arquivo;
– Diferencia maiúsculas de minúsculas (case sensitive);
– Permite espaços no meio do nome dos arquivos;
– Não existe extensões de arquivos como .exe, .com, .bat, etc;
– Os seguintes caracteres não podem ser utilizados em nomes de arquivos:
! @ # $ % ^ & * ( ) { } [ ] ' “ ? | ; < > ` + - = \ / ..
– Permite arquivos especiais do tipo Link simbólico, softlink e hardlink;
– O Linux marca alguns tipos de arquivos, conforme abaixo:
arquivos executáveis possuem um * no final do nome;
arquivos de backup possuem um ~ no final do nome;
diretórios são marcados com um / no final do nome;
arquivos do tipo link simbólico possuem um @ no final do nome;
arquivos do tipo socket possuem um = no final do nome;
arquivos do tipo pipe possuem um | no final do nome;
diretórios ocultos possuem um . antes do nome.

Para visualizar estes caracteres nos nomes dos arquivos, basta digitar o comando ls -F e para
visualizar os diretórios ocultos, digite ls -a.

Muitos tipos de arquivos simplesmente não existem em outros sistemas, como o MsDOS, por
exemplo. Abaixo então temos uma lista dos tipos de arquivos do Linux:

– Arquivos Comuns:
Suportam qualquer tipo de dado, seja ASCII, Unicode, arquivos comprimidos e até os
programas executáveis, ou também chamados de arquivos binários.
– Diretórios:
São arquivos especiais que contém os nomes dos arquivos que estão armazenados ou
organizados como um grupo. O agrupamento é arbitrário e você pode escolher a
combinação desejada, ou seja, você pode definir os arquivos de seus diretórios.
– Links simbólicos:
Um Link é um arquivo que faz uma referência a outro arquivo ou diretório dentro do
sistema de arquivos. Esta característica permite que um arquivo esteja em dois ou mais
lugares ao mesmo tempo, na sua localização original e no lugar referenciado pelo
arquivo de link.
Há dois tipos de arquivos de Links: O Hard Link cria novos nomes para um arquivo,
associando assim dois ou mais nomes de arquivos para um mesmo i-node e não podem
ser visualizados. O Soft Link, ou link simbólico são arquivos que fazem referência ao

ADMINISTRAÇÃO GNU/LINUX - 23/253


Treinamento em Software Livre

arquivo original, contendo o caminho completo até o mesmo. Este tipo de arquivo pode
ser visualizado com o comando ls -F ou ls -l.
– Device (arquivos de dispositivos)
São arquivos especiais que representam dispositivos no sistema, como um disco rígido
IDE, por exemplo, seria o arquivo hda, se este disco for o Master da primeira
interface. Uma impressora paralela é um arquivo do tipo lp0. Os dispositivos de bloco,
como os discos rígidos (hda), são acessados em blocos de 1024 bytes por acesso. Já os
dispositivos a caracter como um terminal do tipo tty1 ou uma porta serial do tipo st0,
são acessados byte a byte, ou seja, seqüencialmente.
– Sockets
São arquivos utilizados para comunicação entre processos, estando estes processos
executando na mesma máquina ou então em outro computador dentro de uma rede.
– Pipes (dutos)
São arquivos utilizados para intercomunicação entre processos, normalmente
processos locais.

Em regra geral, todos os arquivos do tipo device estão residentes abaixo do diretório /dev, que é
um dos diretórios padrão do sistema Linux.

Alguns diretórios possuem notações especiais, algo que poderíamos chamar de "atalho" para o
acesso. Veja abaixo a lista dessas notações:

➢ ~ : Ao referir-se ao diretório ~ (til), o sistema entende como o diretório pessoal do


usuário, ou seja, /home/[usuário], onde [usuário] é o nome de login do usuário atual.
Dessa forma, se você estiver logado como curso, o diretório ~/img será interpretado
como /home/curso/img.

➢ - : O kernel Linux armazena um histórico dos diretórios que acessamos. O


- (hífen) refer222e-se ao último diretório acessado.

➢ . : O símbolo . (ponto) refere-se ao diretório atual, ou seja, aquele em que estamos


trabalhando;

➢ .. : O .. (ponto ponto) refere-se ao diretório acima do qual estamos. Por exemplo,


considerando o diretório /home/fabio, o diretório acima de fabio é
/home, e o diretório acima de /home é /.

3.3 Organização dos Arquivos em Disco

Um sistema de arquivos é o método e a estrutura que um sistema operacional utiliza para


administrar a forma que os arquivos estão organizados em um disco ou partição. É criado durante
a formatação da partição de disco. Após a formatação, toda a estrutura para leitura e gravação
de arquivos e diretórios pelo sistema operacional estará pronta para ser usada.

Normalmente este passo é feito durante a instalação de sua distribuição GNU/Linux. Cada
sistema de arquivos tem uma característica em particular mas seu propósito é o mesmo: oferecer
ao sistema operacional a estrutura necessária para ler/gravar os arquivos e diretórios. Entre os
sistemas de arquivos existentes pode-se citar:

ADMINISTRAÇÃO GNU/LINUX - 24/253


Treinamento em Software Livre

3.3.1 EXT2

A partição EXT2 é o tipo usado para criar o sistema de arquivos Linux Native usado para
armazenar o sistema de arquivos EXT2 (após a formatação) e permitir o armazenamento de
dados. Este tipo de partição é normalmente identificado pelo código 83 nos programas de
particionamento de disco.

Logo que foi inventado, o GNU/Linux utilizava o sistema de arquivos Minix (e conseqüentemente
uma partição Minix) para o armazenamento de arquivos. Com a evolução do desenvolvimento, foi
criado o padrão EXT (Extended Filesystem) e logo evoluiu para o EXT2 (Second Extended
FileSystem) que é o usado hoje em dia. Ele é rápido, não se fragmenta tão facilmente pois permite
a localização do melhor lugar onde o arquivo se encaixa no disco, etc. Isto é útil para grandes
ambientes multiusuário onde várias pessoas gravam/apagam arquivos o tempo todo.

3.3.2 Journaling

O sistema de Journaling grava qualquer operação que será feita no disco em uma área especial
chamada journal, assim se acontecer algum problema durante a operação de disco, ele pode voltar
ao estado anterior do arquivo, ou finalizar a operação. Desta forma, o journal acrescenta ao
sistema de arquivos o suporte a alta disponibilidade e maior tolerância a falhas. Após uma falha de
energia, por exemplo, o journal é analisado durante a montagem do sistema de arquivos e todas as
operações que estavam sendo feitas no disco são verificadas.

Dependendo do estado da operação, elas podem ser desfeitas ou finalizadas. O retorno do


servidor é praticamente imediato (sem precisar a enorme espera da execução do fsck em
partições maiores que 10Gb), garantindo o rápido retorno dos serviços da máquina. Outra situação
que pode ser evitada é com inconsistências no sistema de arquivos do servidor após a situação
acima, fazendo com que o servidor fique em estado single user e esperando pela intervenção do
administrador. Alguns tipos de sistema de arquivos utilizam este recurso atualmente, como por
exemplo, o EXT3 e o ReiserFS.

3.3.3 EXT3

O sistema de arquivos EXT3 faz parte da nova geração Extended file System do GNU/Linux,
sendo que seu maior benefício é o suporte a Journaling O uso deste sistema de arquivos
comparado ao EXT2, na maioria dos casos, melhora o desempenho do sistema de arquivos através
da gravação seqüencial dos dados na área de metadados e acesso mhash a sua árvore de
diretórios.

A estrutura da partição EXT3 é semelhante a EXT2, o Journaling é feito em um arquivo chamado


.journal que fica oculto pelo código EXT3 na partição (desta forma ele não poderá ser apagado,
comprometendo o funcionamento do sistema). A estrutura idêntica da partição EXT3 com a EXT2
torna mais fácil a manutenção do sistema, já que todas as ferramentas para recuperação EXT 2
funcionarão sem problemas.

ADMINISTRAÇÃO GNU/LINUX - 25/253


Treinamento em Software Livre

3.3.4 ReiserFS

O ReiserFS é um sistema desenvolvido especialmente para o Linux, muito confiável e


surpreendentemente rápido, em muitos casos mais rápido até mesmo que sistemas sem suporte a
Journaling O ReiserFS, por não utilizar blocos de tamanho fixo, mas por ajustar seu tamanho de
acordo com o arquivo, evita os problemas de desperdício de espaço comuns em outros sistemas de
arquivos. Possui suporte a arquivos maiores que 2 GB e o acesso a árvore de diretórios é muito
mais rápido.

Utiliza uma eficiente estrutura de dados chamada balanced tree (árvore equilibrada), que trata
toda a partição como se fosse uma única tabela de banco de dados contendo diretórios, arquivos e
arquivos de meta-data, o que aumenta muito o desempenho de aplicativos que trabalham com
arquivos pequenos, porque estes são lidos de uma só vez, em apenas um ciclo de I/O do HD. Sua
versão 3 não trabalha perfeitamente com o sistema de arquivos de rede NFS (Network File
System). Existem alguns patches para resolver o problema, mas eles não o resolvem
completamente. O criador do ReiserFS é Hans Reiser. Atualmente o projeto é patrocinado pela
SuSE e mantido pela empresa NameSys. Aguarda-se o lançamento oficial da versão 4 do
ReiserFS, o Reiser4, que foi totalmente reescrito e possui um desempenho superior à da versão 3.

3.3.5 JFS

Criado pela IBM para uso em servidores corporativos, teve seu código liberado. O sistema de
arquivos JFS também usa a estrutura I-node para armazenar a localização dos blocos de cada
arquivo nas estruturas físicas do disco. A versão JFS2 armazena esses I-nodes em uma árvore
binária para acelerar o acesso a essas informações. Esses blocos podem variar de 512 a 4096
bytes, e a alocação dos I-nodes é feita conforme vai sendo necessário.

3.3.6 XFS

Desenvolvido originalmente pela Silicon Graphics e posteriormente disponibilizado o código fonte,


o XFS possui vários patches e alguns bugs, mas é um sistema de arquivos muito rápidos na
gravação e possui um desfragmentador para arquivos.

3.3.7 SWAP (Memória Virtual)

Este tipo de partição é usada para oferecer o suporte a memória virtual ao GNU/Linux em adição
a memória RAM instalada no sistema. Somente os dados na memória RAM são processados pelo
processador, por ser mais rápida.

Desta forma, quando você está executando um programa e a memória RAM começa a encher, o
GNU/Linux move automaticamente os dados que não estão sendo usados para a partição SWAP e
libera a memória RAM para continuar carregando os dados necessários pelo programa que está
sendo carregado. Quando os dados movidos para a partição SWAP são solicitados, o GNU/Linux
move os dados da partição SWAP para a memória. Por este motivo a partição SWAP também é
chamada de área de troca ou memória virtual. A velocidade em que os dados são movidos da

ADMINISTRAÇÃO GNU/LINUX - 26/253


Treinamento em Software Livre

memória RAM para a partição é muito alta.

3.3.8 Qual Sistema de Arquivos devo Utilizar?

Em se tratando de sistemas de arquivos, a recomendação é que você escolha, entre os que


possuem os recursos que você precisa, aquele que apresentar o melhor desempenho.

Nesse caso, a menos que você vá utilizar NFS, o sistema de arquivos mais indicado é o ReiserFS,
que possui comprovadamente um desempenho muito superior ao de outros sistemas de arquivos.
Se for utilizar NFS, uma vez que existe o problema de compatibilidade do ReiserFS, pode-se
utilizar o XFS, ou o EXT3. Entretanto, se você realmente não precisa das vantagens do
Journaling, o EXT2 pode ser a melhor alternativa para você.

3.4 Endereçamento de Arquivos nos Discos

O processo de formatação de discos no Linux cria uma estrutura de dados baseada no conceito de
i-node (nó índice). A estrutura organizacional dos discos fica então conforme mostra a figura
seguinte:

Bloco de Boot Superbloco Tabela de i-nodes Blocos de Dados


O Bloco 0 é o que contém o setor de boot do sistema operacional. O Bloco 1 é denominado de
Superbloco e contém informações sobre o sistema de arquivos, como o número de i-nodes, número
de i-nodes livres, número de blocos do disco e número de blocos livres.

Se porventura o Superbloco for danificado, todo o sistema de arquivos ficará indisponível, pois é
através deste mapeamento que se consegue chegar nos arquivos.

Logo após o Superbloco está a tabela de i-nodes. Nos sistemas Unix e Linux, o i-node é a menor
unidade de informação em disco. É uma contrapartida ao conhecido Cluster nos sistemas MsDos e
MsWindows.

Os i-nodes são numerados de 1 até o número máximo possível, definido no momento da formatação
da partição. Cada um possui 64 bytes e contém as seguintes informações sobre um arquivo:

– UID, identificador do usuário dono do arquivo;


– GID, identificador do grupo do usuário, dono do arquivo;
– Tipo do arquivo, (comun, diretório, link, device, etc), ou então contém 0 se o i-node não
estiver sendo utilizado.
– As permissões do arquivo;
– Data e hora da criação, acesso e última modificação do arquivo;
– Data e hora da modificação do i-node;
– Número de links para o arquivo;
– Tamanho do arquivo;
– Localização física em disco onde está armazenado o arquivo.

Nesta estrutura de dados, o nome do arquivo não fica no i-node do arquivo, mas dentro do arquivo

ADMINISTRAÇÃO GNU/LINUX - 27/253


Treinamento em Software Livre

diretório. Lembre-se sempre que, no Unix e também no Linux, diretórios são arquivos.

Os diretórios são arquivos que contém várias entradas. Cada uma delas representa o nome de um
arquivo deste diretório. Para ler então um arquivo, o sistema operacional lê o arquivo de diretório
correspondente e compara o nome fornecido com os nomes ali contidos. Se o arquivo estiver no
diretório, o sistema faz o seguinte:
– Obtém o número do seu i-node;
– Procura este i-node na tabela de i-nodes e carrega para a memória;
– Tal i-node é armazenado em uma tabela de i-nodes do Kernel, a qual guarda todos os i-
nodes para arquivos abertos e para diretórios;
– A leitura então deste i-node fornece o endereço físico da localização dos blocos de
dados do arquivo correspondente, e assim ele é lido do disco.

Se um arquivo ou diretório for composto por mais de um bloco de dados, os demais blocos não
precisam estar em posições contíguas no disco, ou seja, os blocos de dados podem ficar
espalhados pelo disco. (isso gera a famosa fragmentação do disco).

3.5 Estrutura de Diretórios no Linux

Os sistemas GNU/Linux possuem um padrão rígido e específico a respeito da organização


hierárquica dos diretórios, definido pela Filesystem Hierarquy Standard, ou simplesmente FHS,
constante da LSB, que diferem totalmente da estrutura de diretórios do Microsoft Windows®.

Basicamente, no Microsoft Windows® temos os arquivos do sistema concentrados nas pastas


C:\Windows e C:\Arquivos de programas e você pode criar e organizar suas pastas da forma que
quiser. No GNU/Linux é basicamente o contrário. O diretório raiz está tomado pelas pastas do
sistema e espera-se que você armazene seus arquivos pessoais dentro da sua pasta no diretório
/home.

Nada impede que você crie mais pastas no diretório raiz para armazenar seus arquivos. Apesar de
ser recomendável em termos de organização e segurança, você não é obrigado a concentrar seus
arquivos dentro do seu diretório de usuário. Nada impede que você autentique-se como root, crie
uma pasta /arquivos, abra o menu de permissões para que seu usuário geral tenha permissão para
acessá-la e a utilize para guardar seus arquivos, por exemplo.

Mas, as diferenças não param por aí. Para onde vão os programas que são instalados se não existe
uma pasta central como a C:\Arquivos de programas? E para onde vão os arquivos de configuração
se o GNU/Linux não possui nada semelhante ao registro do Microsoft Windows®?

A primeira coisa com que você precisa se habituar é que no GNU/Linux os discos e partições não
aparecem necessariamente como unidades diferentes, como o C:\, D:\, E:\ do Microsoft
Windows®. Tudo faz parte de um único diretório, chamado diretório raiz, ou '/'. Dentro deste
diretório temos não apenas todas as partições de disco, mas também o CD-ROM, drive de
disquete e outros dispositivos. Dentro da estrutura do sistema de arquivos, cada um dos
diretórios possui uma função específica, como vemos na lista abaixo.

ADMINISTRAÇÃO GNU/LINUX - 28/253


Treinamento em Software Livre

/--
|-- bin
|-- boot
|-- dev
|-- etc
|-- home
|-- initrd
|-- lib
|-- media
|-- mnt
|-- opt
|-- proc
|-- root
|-- sbin
|-- srv
|-- sys
|-- tmp
|-- usr
|-- var

➢ /bin : Contém arquivos executáveis (binários) de comandos essenciais pertencentes ao sistema


e que são usados com freqüência pelos usuários e pelo administrador do sistema, como por
exemplo: su, tar, pwd, rm, cat, cp, entre outros.

➢ /boot : Este diretórios contém tudo que é necessário para carregar o sistema, exceto os
arquivos de configuração. Contém arquivos estáticos relacionados à inicialização do sistema,
como o Kernel, e o boot-loader GRUB ou LILO.

➢ /dev : Contém arquivos de dispositivos de entrada e saída (I/O) como por exemplo, o CD-ROM
(/dev/cdrom), o disquete (/dev/fd0), e o HD (/dev/hda). Todo o mapeamento para o hardware
do sistema será encontrado neste diretório.

➢ /etc : Contém os arquivos de configuração do sistema, substituindo de certa forma o registro


do Microsoft Windows®. A vantagem é que enquanto o registro é uma espécie de caixa preta,
os scripts do diretório /etc são desenvolvidos justamente para facilitar a edição manual. É
verdade que na maioria dos casos isto não é necessário, mas a possibilidade continua aí. Os
arquivos recebem o nome dos programas seguidos geralmente da extensão .conf. Normalmente
não contém binários.

➢ /etc/Network : Contém os arquivos de configuração de rede.

➢ /etc/skel : Contém os arquivos que serão gravados no diretório pessoal de um


novo usuário.

➢ /etc/X11 : Contém os arquivos de configuração do servidor gráfico.

➢ /home : Este diretório é nitidamente um sistema de arquivos específico dos usuários locais,
sendo a localização sugerida para os diretórios locais dos usuários. Sua estrutura pode diferir

ADMINISTRAÇÃO GNU/LINUX - 29/253


Treinamento em Software Livre

de máquina para máquina. Em sistemas pequenos, cada diretório de usuário é um dos


subdiretórios debaixo do /home, como por exemplo:
➢ /home/curso, /home/curso2, etc. Em sistemas maiores, (principalmente quando os
diretórios do /home são compartilhados entre várias máquina via rede) é útil subdividir os
diretórios locais. a subdivisão pode ser implementada utilizando subdiretórios tais como
/home/apoio, /home/desenvolvimento, /home/administrativo, etc.

➢ /lib : Este diretório contém aquelas bibliotecas compartilhadas que são necessárias para
inicializar o sistema e executar comandos no sistema de arquivos raiz, mais especificamente os
comandos contidos em /bin e /sbin. Pode conter também módulos do kernel, localizados em
/lib/modules.

➢ /lib<nome> : Em sistemas que suportam mais de um formato de binários, e portanto,


necessitem de bibliotecas separadas, podem existir uma ou mais variantes do diretório /lib.
Isso é comumente utilizado para fornecer suporte a 64 bits ou 32 bits em sistemas que
suportam múltiplos formatos de binários, mas requerem bibliotecas com o mesmo nome. Neste
caso, /lib32 e /lib64 seriam os diretórios de bibliotecas, e /lib seria um link para um deles.

➢ /media : Este diretório contém os subdiretórios que são utilizados como pontos de montagem
para mídias removíveis, como por exemplo disquetes, drives CD-ROM, ZIP drives, gravadores
de CD/DVD, dispositivos USB, etc.

➢ /mnt : Este diretório contém os subdiretórios que são utilizados como pontos de montagem
para sistemas de arquivos temporários, que podem ser partições de outros sistemas
operacionais da máquina, como por exemplo, um sistemas de arquivos FAT32 ou NTFS do
Microsoft Windows®.

➢ /opt : Este diretório é reservado para a instalação de pacotes de software aplicativos


adicionais. Nele podem existir subdiretórios que abrigam os arquivos estáticos destas
aplicações, tendo cada subdiretório um nome que descreva o pacote de software contido nele.
Podem existir os subdiretórios /opt/bin, /opt/doc, /opt/include, /opt/info, /opt/lib e
/opt/man, os quais são reservados para uso do administrador do sistema local.

➢ /proc : Este diretório é um sistema de arquivos virtual utilizado para manipular informações de
processos do sistema. É recomendada sua utilização para o armazenamento e obtenção de
informações de processos, assim como outras informações do Kernel ou da memória.

➢ /root : Este é um diretório opcional no GNU/Linux. O diretório local da conta do usuário root
pode ser determinado por preferências, porém /root é a sua localização padrão.

➢ /sbin : Este diretório contém comandos essenciais para inicializar, restaurar, recuperar
e
reparar o sistema, complementando os comandos encontrados em /bin. Comandos como getty,
reboot, shutdown, ifconfig e fdisk são encontrados neste diretório.

➢ /srv : Este diretório contém os arquivos de aplicações como Apache, FTP e CVS. Ainda pouco
usado por ter sido implementado nas versões mais recentes do FHS.

➢ /tmp : Este diretório é utilizado para arquivos temporários gerados por programas, podendo
estar no disco rígido ou na memória RAM. Os programas não devem assumir que quaisquer

ADMINISTRAÇÃO GNU/LINUX - 30/253


Treinamento em Software Livre

arquivos ou diretórios em /tmp sejam preservados entre execuções dos mesmos. Recomenda-
se que o conteúdo de /tmp seja apagado sempre que o sistema for inicializado (padrão).

➢ /usr : O diretório /usr é a segunda maior seção do sistema de arquivos. /usr é compartilhável
e somente de leitura. Isto significa que o /usr pode ser compartilhado entre várias máquinas
que utiliza GNU/Linux. Suas subdivisões consistem na seguinte estrutura:

➢ /usr/bin : Contém a maioria dos comandos dos usuários. Este é o diretório


principal de comandos executáveis no sistema. Executáveis de programas como
python, perl, clear e gcc encontram-se neste diretório.

➢ /usr/include : Contém todos os arquivos de cabeçalhos (headers) de uso geral


do sistema para programação em linguagem C/C++.

➢ /usr/lib : Contém arquivos-objeto, bibliotecas de programas internos que não


são indicados para serem executados diretamente por usuários ou shell scripts.
Podem existir subdiretórios em /usr/lib, os quais são utilizados por aplicações,
de forma que todos os dados dependentes da arquitetura usados
exclusivamente pela aplicação devem estar dentro destes subdiretórios.

➢ /usr/local : Este subdiretório existe para o uso do administrador de sistemas,


quando instala softwares localmente. Necessita ficar a salvo de ser sobrescrito
quando o software do sistema é atualizado. Pode ser usado por programas e
dados que são compartilháveis entre um grupo de máquinas. Ele também contém
subdiretórios importantes ao sistema, e os principais são:

➢ /usr/local/bin: Binários (executáveis) locais.

➢ /usr/local/games: Executáveis de jogos instalados localmente.

➢ /usr/local/include: Arquivos de cabeçalho (header) C locais.

➢ /usr/local/lib: Bibliotecas locais.

➢ /usr/local/man: Páginas de manual on line locais.

➢ /usr/local/sbin: Binários (executáveis) de sistema locais.

➢ /usr/local/share: Hierarquia local independente da arquitetura.

➢ /usr/local/src: Código-fonte local.

➢ /usr/sbin: Contém alguns binários (executáveis) não essenciais usados


exclusivamente pelo administrador do sistema.

➢ /usr/share: Contém arquivos de dados somente leitura que independem da


arquitetura. Este diretório é indicado para ser compartilhável entre todas as
plataformas de arquitetura de um dado sistema operacional. Ele também
contém subdiretórios importantes ao sistema, e os principais são:

ADMINISTRAÇÃO GNU/LINUX - 31/253


Treinamento em Software Livre

➢ /usr/share/man: Páginas de manual on line.

➢ /usr/share/misc: Miscelânea de dados independentes da


arquitetura.
➢ /usr/share/dict: Lista de palavras (opcional).

➢ /usr/share/doc: Arquivos de documentação (opcional).

➢ /usr/share/games: Arquivos de dados estáticos para


/usr/games (opcional).

➢ /usr/share/info: Diretório primário do sistema GNU Info


(opcional).

➢ /usr/share/locale: Informações de Locale (opcional).

➢ /usr/share/nls: Catálogo de mensagens para NLS (suporte à


língua nativa) (opcional).

➢ /usr/share/sgml: Dados de SGML e XML (opcional).

➢ /usr/share/terminfo: Diretórios para o banco de dados de


terminfo (opcional)

➢ /usr/share/zoneinfo:Informação e configuração para zoneinfo


(opcional).

➢ /usr/lib<nome>: Tem o mesmo papel de /usr/lib para um formato de binário


(executável) alternativo.

➢ /usr/src : Contém o código-fonte do kernel do GNU/Linux. Qualquer outro


código-fonte não local também deve localizar-se neste diretório.

➢ /var: Este diretório contém arquivos de dados variáveis. Inclui arquivos e diretórios em fila de
execução, dados de ordem administrativa e de login, além de arquivos temporários e
transitórios. Algumas partes de /var não são compartilháveis entre diferentes sistemas. Por
exemplo, /var/log, /var/lock e /var/run. outras partes podem ser compartilhadas,
notadamente em /var/mail, /var/cache/man, /var/cache/fonts e /var/spool/news. Ele também
contém subdiretórios importantes ao sistema, e os principais são:

➢ /var/account: Este diretório mantém o log dos processos ativos correntemente


e os dados compostos de uso dos processos (opcional).

➢ /var/cache: Este diretório é indicado para armazenar dados de aplicações em


cache. Pode conter os seguintes subdiretórios:

➢ /var/cache/fonts: Fontes geradas localmente (opcional).

ADMINISTRAÇÃO GNU/LINUX - 32/253


Treinamento em Software Livre

➢ /var/cache/man: Páginas de manual formatadas localmente


(opcional).

➢ /var/cache/<pacote>: Dados de cache de um pacote específico.

➢ /var/crash: Este diretório contém depósitos de sistemas quebrados (crashed).

➢ /var/games: Este diretório contém quaisquer dados variáveis relacionados a


jogos que estão em /usr (opcional).

➢ /var/lib: Contém informações sobre o estado das aplicações. Informação sobre


o estado são dados que o programa modifica enquanto está rodando, e que
pertencem a uma máquina específica. Os seguintes diretórios podem estar
contidos nele:

➢ /var/lib/misc: Dados de estado de aplicações (miscelânea).

➢ /var/lib/hwclock: Contém o arquivo adjtime, que possui as


informações de data e hora do sistema (opcional). Na
distribuição Debian este arquivo fica no diretório /etc.

➢ /var/lib/<editor>: Arquivos de backup e estado de editores de


texto. Por exemplo, o Emacs guarda este tipo de informação em
/var/lib/emacs/lock.

➢ /var/lib/<pacote>: Dados de estado para pacotes e subsistemas


(opcional).

➢ /var/lib/xdm: Dados variáveis do Xdm (X display manager)


(opcional). Como o Debian utiliza o GDM (GNOME Display
Manager) como padrão, este diretório é trocado por
/var/lib/gdm.

➢ /var/lock : Contém em sua estrutura os arquivos de bloqueio.

➢ /var/log: Contém uma miscelânea de arquivos de agenda (logs). A maioria dos


logs de sistema e de aplicações são escritos neste diretório ou em seus
subdiretórios. Alguns arquivos contidos em /var/log e seu conteúdo são listados
abaixo:

➢ /var/log/lastlog: Registro do último acesso de cada usuário.

➢ /var/log/messages: Mensagens do sistema syslogd.

➢ /var/log/wtmp: Registro de todos os acessos e saídas de


usuários.

➢ /var/mail: Contém as caixas postais de e-email dos usuários, que são arquivos
no formato mailbox do UNIX, com o nome do usuário.

ADMINISTRAÇÃO GNU/LINUX - 33/253


Treinamento em Software Livre

➢ /var/opt: Contém dados variáveis para os aplicativos instalados em /opt. Cada


aplicativo instalado em /opt que necessite, deve criar um subdiretório em
/var/opt, no qual ficarão seus dados variáveis.

➢ /var/run: Contém arquivos variáveis em tempo de execução, com informações


de sistema, descrevendo-o desde que foi inicializado. Geralmente os arquivos
neste subdiretório devem ser deletados (removidos ou truncados) ao começar o
processo de inicialização.

➢ /var/spool: Subdiretório de fila de trabalhos para processamento posterior.


/var/spool é tradicionalmente utilizado para a informação local de máquina que
é enviada para processamento posterior. geralmente, estes dados são apagados
após terem sido processados. Ele pode conter o seguintes subdiretórios:

➢ /var/spool/lpd: Diretório de dados para impressora (opcional).

➢ /var/spool/mqueue: Fila de saída de e-mail (opcional).

➢ /var/spool/news: Diretório de dados de notícias (opcional).

➢ /var/spool/rwho: Arquivos rwhod (opcional).

➢ /var/spool/uucp: Diretório de dados do UUCP (opcional).

➢ /var/tmp: Contém arquivos temporários que são preservados entre


reinicializações do sistema. O subdiretório /var/tmp é disponibilizado para
programas que requerem arquivos ou diretórios temporários que devem ser
preservados entre reinicializações do sistema. Portanto, os dados armazenados
em /var/tmp são mais persistentes que aqueles armazenados em /tmp.

➢ /var/yp: Contém dados variáveis para o Sistema de Informações de Rede


(NIS), também conhecido como Sun Yellow Pages (YP).

3.6 Particionamento de Discos no Linux

As partições são divisões existentes no disco rígido que marcam onde começa e onde termina um
sistema de arquivos. Por causa destas divisões, nós podemos usar mais de um sistema operacional
no mesmo computador (como o GNU/Linux, Microsoft Windows® e DOS), ou dividir o disco rígido
em uma ou mais partes para ser usado por um único sistema operacional. Uma partição de disco
não interfere em outras partições existentes, por este motivo é possível existir mais de um
sistema operacional no mesmo disco rígido.

Para particionar (dividir) o disco rígido em uma ou mais partes é necessário o uso de um programa
de particionamento. Os programas mais conhecidos para particionamento de discos no GNU/Linux
são fdisk, cfdisk, Parted e o Disk Druid. Informações importantes para a criação e utilização das
partições:

ADMINISTRAÇÃO GNU/LINUX - 34/253


Treinamento em Software Livre

➢ Para gravar os dados, o disco rígido deve ser primeiro particionado (usando o cfdisk por
exemplo), escolher o tipo da partição e depois aquela partição deve ser formatada com o
um tipo de sistema de arquivos. Após criada e formatada, a partição será identificada
como um dispositivo no diretório /dev e deverá ser montada para permitir seu uso no
sistema;

➢ Quando se apaga uma partição, você estará apagando TODOS os arquivos existentes nela!;

➢ Em sistemas novos, é comum encontrar o Microsoft Windows® instalado em uma partição


que utilize TODO o espaço do disco rígido. Uma solução para instalar o GNU/Linux é
apagar esta partição e criar três ou mais com tamanhos menores (uma para o Microsoft
Windows®, uma para o GNU/Linux e outra para a Memória Virtual do Linux (SWAP). É
possível, por exemplo, utilizar ferramentas especiais que conseguem diminuir o tamanho
de uma partição, deste modo não é necessário reinstalar tudo para ter o GNU/Linux
juntamente com Microsoft Windows®.

Para entender o particionamento é preciso antes saber como o Linux trata os discos rígidos no
sistema, pois estas unidades de armazenamento possuem nomes diferenciados de acordo com suas
configurações físicas de interface.

No GNU/Linux, os dispositivos existentes em seu computador (como discos rígidos, disquetes,


tela, portas de impressora, modem, etc) são identificados por um arquivo referente a este
dispositivo no diretório /dev. A identificação de discos rígidos no GNU/Linux é feita da seguinte
forma:

/dev/hda1
| |||
| |||_ Número que identifica o número da partição no disco rígido.
| ||
| ||_ Letra que identifica o disco rígido (a=primeiro, b=segundo, etc...).
| |
| |_ Sigla que identifica o tipo do disco rígido (hd=ide, sd=SCSI, xt=XT).
|
|_ Diretório onde são armazenados os dispositivos existentes no sistema.

Abaixo algumas identificações de discos e partições em sistemas Linux:

➢ /dev/fd0 - Primeira unidade de disquetes.


➢ /dev/fd1 - Segunda unidade de disquetes.
➢ /dev/hda - Primeiro disco rígido na primeira controladora IDE do micro (primary master).
➢ /dev/hda1 - Primeira partição do primeiro disco rígido IDE.
➢ /dev/hdb - Segundo disco rígido na primeira controladora IDE do micro (primary slave).
➢ /dev/hdb1 - Primeira partição do segundo disco rígido IDE.
➢ /dev/sda - Primeiro disco rígido na primeira controladora SCSI.
➢ /dev/sda1 - Primeira partição do primeiro disco rígido SCSI.
➢ /dev/sdb - Segundo disco rígido na primeira controladora SCSI.

ADMINISTRAÇÃO GNU/LINUX - 35/253


Treinamento em Software Livre

➢ /dev/sdb1 - Primeira partição do segundo disco rígido SCSI.


➢ /dev/sr0 - Primeiro CD-ROM SCSI.
➢ /dev/sr1 - Segundo CD-ROM SCSI.
➢ /dev/xda - Primeiro disco rígido XT.
➢ /dev/xdb - Segundo disco rígido XT.
➢ /dev/st0 – Primeira unidade de Fita SCSI (DAT, DLT, AIT, etc).

As letras de identificação de discos rígidos podem ir além de hdb, em algumas máquinas, por
exemplo, a unidade de CD-ROM podem estar localizada em /dev/hdg (Primeiro disco - quarta
controladora IDE). É importante entender como os discos e partições são identificados no
sistema, pois será necessário usar os parâmetros corretos para montá-los e utilizá-los
adequadamente.

A figura seguinte nos mostra um exemplo de como são tratados os discos rígidos IDE no sistema.

Controladora IDE0 Controladora IDE1

Unidade Master /dev/hda Unidade Master /dev/hdc

Unidade Slave /dev/hdb Unidade Slave /dev/hdd

3.7 Ponto de Montagem

Antes de um sistema de arquivos poder ser utilizado, ele necessita ser montado. O sistema
operacional executa diversas verificações para estar seguro de que tudo está funcionando bem.
Uma vez que todos os arquivos no GNU/Linux estão em uma única árvore de diretórios, a operação
de montagem fará com que o novo sistema de arquivos pareça um subdiretório existente em algum
sistema de arquivos já montado.

Como será visto mais para frente, o comando para montagem de um sistema de arquivos possui
dois argumentos. O primeiro é o arquivo de dispositivo correspondente ao disco ou partição que
contenha o sistema de arquivos. O segundo é o diretório sob o qual ele será montado. Por exemplo,
após a execução do comando: mount /dev/hda2 /mnt/backup, podemos dizer que /dev/hda2 está
montado em /mnt/backup.

Para examinar estes sistemas de arquivos, pode-se acessar estes diretórios exatamente da
mesma forma que qualquer outro, como veremos mais adiante. É importante ressaltar a diferença
entre o dispositivo /dev/hda e o o diretório montado /mnt/backup. Enquanto o primeiro dá
acesso aos dados brutos do disco, o segundo permite o acesso aos arquivos contidos no mesmo
disco. O diretório montado é chamado ponto de montagem.

ADMINISTRAÇÃO GNU/LINUX - 36/253


Treinamento em Software Livre

4 INSTALAÇÃO DO GNU/LINUX

4.1 Procedimentos Pré-Instalação

A instalação de um sistema GNU/Linux não é uma tarefa difícil como muitos usuários pensam, ela
é apenas um processo mais detalhado e customizável do que outros sistemas Para que este
procedimento seja bem sucedido, é indicado seguir algumas dicas básicas:

1. Antes da instalação, verifique se existe outro sistema operacional instalado na


máquina;
2. Caso exista outro sistema operacional (normalmente o Microsoft® Windows)
que esteja ocupando o espaço disponível em disco, é necessário fazer um
redimensionamento para que o GNU/Linux possa ser instalado;
3. Faça um backup de todos os seus arquivos mais importantes e execute a
ferramenta de desfragmentação de discos antes de realizar o
redimensionamento (Apenas no caso de existir outro sistema operacional na
máquina);
4. Mesmo que os instaladores possuam o recurso de detecção automática de
hardware, sempre tenha em mãos a listagem de hardware da sua máquina
(monitor, placa de vídeo, placa de rede, placa de fax modem, disco rígido SCSI,
etc.), pois nem todos os instaladores possuem um banco de dados de drivers
abrangente;
5. Dê preferência à instalação via boot no CD-ROM, que é a mais comum e a mais
simples disponível até o momento;
6. Em muitos casos, a máquina está localizada dentro de uma rede interna, então
peça ao administrador da rede as seguintes informações:
✔ Endereço IP da máquina;
✔ Nome da máquina;
✔ Gateway;
✔ Servidores de Nomes (DNS);
✔ domínio;
7. Tenha em mãos os cd's da sua distribuição GNU/Linux (Pode-se instalar um
sistema através da rede, NFS, FTP ou HTTP, com um boot pelo disquete ou
mesmo pelo CD);

Para efeitos de treinamento, os endereços IPs serão obtidos automaticamente via servidor DHCP
disponível na rede.

O nome de cada microcomputador será definido pelo instrutor e no momento correto do processo
de instalação, você será questionado para informar o nome do computador para o script de
instalação.

ADMINISTRAÇÃO GNU/LINUX - 37/253


Treinamento em Software Livre

4.2 Instalação de um GNU/LINUX Básico

Independente de existirem diversas distribuições, que possuem seus próprios sistemas de


instalação, cada qual com suas características individuais, o processo de instalação do GNU/Linux,
no geral, segue um padrão, o qual podemos resumir da seguinte forma:

➢ Tipo de instalação (modo texto, gráfico, expert, etc.);

➢ Detecção de hardware;

➢ Seleção do idioma;

➢ Seleção do layout do teclado;

➢ Seleção e configuração do mouse;

➢ Perfis de instalação;

➢ Configurar rede;

➢ Particionamento de disco;

➢ Instalação de pacotes;

➢ Configurar o modo gráfico:

➢ Monitor;

➢ Placa de vídeo;

➢ Nº de cores / resolução;

➢ Configuração do fuso horário;

➢ Configuração de usuários e senhas;

➢ Configuração do gerenciador de inicialização (bootloader);

➢ Disco de inicialização;

➢ Finalização da instalação;

➢ Inicialização do Modo Gráfico.

Normalmente uma instalação de GNU/Linux possui estas características, porém, como existem
diversas distribuições com seus próprios instaladores, algumas destas etapas podem não existir,
podem fazer parte de outro item do instalador, ou mesmo podem ser executadas sem aparecerem
visualmente para o usuário.

A distribuição utilizada como base para o curso é o Debian GNU/Linux 3.1, ou Debian “Sarge”.
Esta distribuição é desenvolvida e atualizada através do esforço de voluntários espalhados ao
redor do mundo, seguindo o estilo de desenvolvimento GNU/Linux. Por este motivo, foi adotada
como a distribuição oficial do projeto GNU.

Apesar da sua instalação ser inteiramente em modo texto, pode-se instalar um sistema completo
com uma enorme facilidade e rapidez. Sua instalação é dividida nas seguintes etapas:

ADMINISTRAÇÃO GNU/LINUX - 38/253


Treinamento em Software Livre

➢ Tipo de instalação (linux26, expert, etc.);

➢ Seleção do idioma;

➢ Seleção do layout do teclado;

➢ Detectar e montar CD-ROM;

➢ Carregar componentes do instalador;

➢ Detectar hardware de rede;

➢ Configurar rede;

➢ Detectar discos e outros hardwares;

➢ Particionar disco;

➢ Instalar Sistema Básico;

➢ Instalar o GRUB em um disco rígido;

➢ Configuração do fuso horário;

➢ Configurar usuários e senhas;

➢ Configurar o APT (repositório de pacotes);

➢ Seleção dos perfis de instalação;

➢ Configurar o modo gráfico:

➢ Monitor;

➢ Placa de vídeo;

➢ Nº de cores / resolução;

➢ Configurar o EXIM;

➢ Finalização da Configuração e da Instalação;

➢ Inicialização do Modo Gráfico.

A partir de agora, vamos detalhar o processo de instalação do Debian GNU/Linux 3.1 “Sarge”,
passo-a-passo, com apresentação das telas que fazem parte do instalador. Lembrando que as
opções selecionadas farão parte dos exemplos deste curso.

4.3 Iniciando o processo de Instalação

4.3.1 Tipo de instalação (linux26, expert, etc.)

A figura 4.1 mostra a tela de apresentação do instalador, logo após a inicialização do computador
pela mídia de instalação do Debian GNU/Linux Sarge, que pode ter sua imagem disponibilizada em
ftp://linorg.usp.br/iso/debian/. Precisa-se apenas do CD 1 para realizar uma instalação funcional
e enxuta.

ADMINISTRAÇÃO GNU/LINUX - 39/253


Treinamento em Software Livre

Figura 4.1 – Primeira tela de apresentação do instalador.

Pressionando a tecla F1, podemos visualizar um menu com diversas informações sobre a instalação
e sobre o Projeto Debian GNU/Linux. Utilize o método de instalação “linux26” (figura 4.2).
Figura 4.2 – Menu de opções do instalador.

ADMINISTRAÇÃO GNU/LINUX - 40/253


Treinamento em Software Livre

4.3.2 Seleção do Idioma

Nesta etapa, faz-se a seleção do idioma usado no processo de instalação (figura 4.3). Selecione a
opção “Portuguese (Brazil) - Português do Brasil”.

Figura 4.3 – Seleção do idioma.

ADMINISTRAÇÃO GNU/LINUX - 41/253


Treinamento em Software Livre

4.3.3 Seleção do layout do teclado

Escolha o layout do teclado que você está usando (figura 4.4). O instalador oferece a opção mais
comum, baseada na sua escolha de linguagem, mas obviamente, você pode mudar se desejar.
Selecione a opção “Português Brasileiro (layout ABNT2)”.

Figura 4.4 – Escolha do layout do teclado.

4.3.4 Detectar e montar CD-ROM

ADMINISTRAÇÃO GNU/LINUX - 42/253


Treinamento em Software Livre

Figura 4.5 – Detecção do CD-ROM.

O instalador executa a detecção do CD-ROM (figura 4.5) para poder carregar na memória os
componentes necessários ao seu funcionamento (figuras 4.6 e figura 4.7).

Figura 4.6 – Lendo os componentes do instalador no CD-ROM.

Figura 4.7 – Carregando na memória os componentes do instalador.

4.3.5 Configurar Rede


A detecção do hardware de rede é feita automaticamente (figura 4.8), e se a máquina faz parte
de uma rede, o instalador tenta realizar a configuração automática via DHCP (figura 4.9). Caso
contrário, será exibida uma mensagem de erro (figura 4.10) e o menu de opções da configuração
de rede. Selecione a opção “Configurar a Rede Manualmente” (figura 4.11).

Figura 4.8 – Detectando o hardware de rede.

ADMINISTRAÇÃO GNU/LINUX - 43/253


Treinamento em Software Livre

Figura 4.9 – Configuração de rede via DHCP.

Figura 4.10 – Mensagem de erro exibida por não achar nenhum servidor DHCP.

Figura 4.11 – Menu de opções da Configuração de Rede.

ADMINISTRAÇÃO GNU/LINUX - 44/253


Treinamento em Software Livre

As informações de rede como endereço IP (figura 4.12), máscara de rede (figura 4.13), Gateway
(figura 4.14), servidores de nomes, ou DNS (figura 4.15), nome da máquina (figura 4.16) e domínio
da rede (figura 4.17), serão necessárias nesta etapa da instalação.

Figura 4.12 – Endereço IP.

ADMINISTRAÇÃO GNU/LINUX - 45/253


Treinamento em Software Livre

Figura 4.13 – Máscara de Rede.

Figura 4.14 – Gateway.

Figura 4.15 – Servidores de Nomes, ou DNS.

ADMINISTRAÇÃO GNU/LINUX - 46/253


Treinamento em Software Livre

Figura 4.16 – Nome da Máquina.

Figura 4.17 -Domínio da rede.

4.3.6 Detectar Discos e outros Hardwares

Nesta etapa é feita a detecção dos disco e outros hardwares relacionados (figura 4.18).

Figura 4.18 – Detecção de de discos e outros hardware relacionados.

4.3.7 Particionar Discos

ADMINISTRAÇÃO GNU/LINUX - 47/253


Treinamento em Software Livre

Após realizar a detecção automática dos discos, o instalador inicializa o particionador (figura
4.19) e exibe um menu onde é listado todos discos detectados (figura 4.20). Selecione a opção
“Editar manualmente a tabela de partições”.

Figura 4.19 – Iniciando o particionador.

Figura 4.20 – Menu do particionador

Selecionando esta opção, o usuário tem um maior controle sobre como será a configuração das
partições do seu sistema, recurso não garantido no particionamento automático. Caso o seu disco
ainda não tenha uma tabela de partições por estar vazio ou não formatado, será exibida uma
mensagem notificando a necessidade desta criação (figura 4.21). Selecione a opção “Sim” para
continuar.

Figura 4.21 – Criar tabela de partições para disco vazio.

ADMINISTRAÇÃO GNU/LINUX - 48/253


Treinamento em Software Livre

Nesta instalação será utilizado um esquema de particionamento conforme a tabela abaixo. Siga as
orientações enumeradas para criar as partições. Cada item contém a referência das telas exibidas
durante o particionamento, para que você possa localizar-se durante a execução dos
procedimentos.

Tabela 1 – Partições

Partição Ponto de Montagem Tamanho (em MB) Tipo da Partição


/dev/hda1 /boot 100 Primária
/dev/hda2 / 5000 Primária
/dev/hda3 swap 2 x Tamanho da RAM Primária
/dev/hda5 /usr 10000 Lógica
/dev/hda6 /var 900 Lógica
/dev/hda7 /tmp 1000 Lógica
/dev/hda8 /home 4000 Lógica

1.Selecione a área do disco que contenha espaço livre para criar as partições (figura 4.22):

Figura 4.22 – Selecionar área do disco para particionar.

ADMINISTRAÇÃO GNU/LINUX - 49/253


Treinamento em Software Livre

2. Primeiramente, selecione a opção “Criar uma nova partição” (figura 4.23):

Figura 4.23 – Criar uma nova partição.

3. Coloque neste campo o valor “100 MB“ (Entre os valores “100” e “MB” coloque um espaço em
branco) (figura 4.24):

Figura 4.24 – informando o valor do tamanho da nova partição.

4. Selecione o tipo da partição com a opção “Primária” (figura 4.25):

Figura 4.25 – Tipo de partição

ADMINISTRAÇÃO GNU/LINUX - 50/253


Treinamento em Software Livre

5.Selecione a opção “Início” (figura 4.26):

Figura 4.26 – Posicionamento da nova partição no disco.

6. Selecione o item “Usar como” para selecionar o tipo de sistema de arquivos para esta partição
(figura 4.27):

Figura 4.27 – Informações sobre a partição.

ADMINISTRAÇÃO GNU/LINUX - 51/253


Treinamento em Software Livre

7. Para a criação desta nova partição, seleciona-se a opção “sistema de arquivos com Journaling
ext3” (figura 4.28):

Figura 4.28 – Selecionando o tipo de sistema de arquivos.

8. Nesta etapa, o instalador exibe a configuração da partição recém criada. Selecione a opção
“Ponto de Montagem” e selecione para /boot (figura 4.29):

Figura 4.29 – Confirmação da criação da partição tipo ext3.

ADMINISTRAÇÃO GNU/LINUX - 52/253


Treinamento em Software Livre

9. Ative o Flag Inicializável para que a partição seja uma partição ativa para boot. Em caso de uso
com outros sistemas operacionais como o Ms Windows, não use esta opção pois o Ms Windows não
conseguirá inicializar.

10. Após estas configurações, Selecione a opção “Finalizar a configuração da partição”.

11. Repita os procedimentos de criação de partições e siga o modelo da Tabela 1 – Partições,


anteriormente definida.

12. Será exibida a configuração da sua tabela de partições (figura 4.30). Selecione a opção
“Finalizar o particionamento e gravar as mudanças no disco”:

13. Conforme a gravação da tabela de partições, selecionando a opção “Sim” (Figura 4.30):

Figura 4.30 – Confirmar a gravação da tabela de partições.

14. Após a confirmação anterior, o instalador irá formatar as partições recém-criadas (figura
4.31):

Figura 4.31 – Formatando as partições.

4.3.8 Instalação do Sistema Básico

A instalação do sistema básico é feita logo após a formatação das partições (figura 4.32):

ADMINISTRAÇÃO GNU/LINUX - 53/253


Treinamento em Software Livre

Figura 4.32 – Instalação do sistema básico.

Terminada a instalação do sistema básico, o instalador pede a confirmação para instalar o


gerenciador de inicialização GRUB (figura 4.33):

Figura 4.33 - Instalar o gerenciador de inicialização GRUB.

Executa-se a instalação do GRUB na MBR (figura 4.34):

Figura 4.34 – Executando a instalação do GRUB.

Agora o instalador realiza as últimas configurações desta primeira etapa (figura 4.35), e exibe
uma mensagem notificando a finalização da instalação (figura 4.36). O CD será ejetado da bandeja
e o computador será reinicializado para a próxima etapa que é a configuração do sistema.

ADMINISTRAÇÃO GNU/LINUX - 54/253


Treinamento em Software Livre

Figura 4.35 – Finalizando a instalação.

Figura 4.36 – Instalação Finalizada.

4.4 Configurações Iniciais do Sistema

A configuração do sistema GNU/Linux é iniciada após a instalação do sistema básico (figura 4.38).
Agora serão feitas as configurações mais específicas do sistema, e a instalação de pacotes de
acordo com o uso da máquina. Mesmo que na mesma máquina exista outro sistema operacional
instalado, o novo gerenciador de inicialização será o GRUB, e a sua interface padrão tem a
configuração como a da figura 4.37:

Figura 4.37 – Tela inicial do GRUB.

ADMINISTRAÇÃO GNU/LINUX - 55/253


Treinamento em Software Livre

Figura 4.38 - Tela de boas vindas do configurador Debian

4.4.1 Configurações de Fuso Horário


Selecione a configuração de fuso horário para o seu computador (figuras 4.39 e 4.40). Escolha
“Sim” na primeira tela:

Figura 4.39 – Selecionando o fuso horário.

ADMINISTRAÇÃO GNU/LINUX - 56/253


Treinamento em Software Livre

Figura 4.40 - Selecionando o fuso horário.

Na tela anterior escolha o fuso horário Leste, pois este representa o horário de Brasília, pois no
caso do Brasil, há 4 fusos horários.

4.4.2 Configurar usuário e senha


Nesta parte da configuração, serão configuradas as informações dos usuários que normalmente
utilizam a máquina. Basicamente, têm-se dois usuários no sistema, o usuário para tarefas
administrativas, o “root”, e um usuário para utilização geral, o qual daremos o nome de “curso”.
Para o usuário administrativo (root), a configuração pede a sua senha (figura 4.41) e a
confirmação para esta senha (figura 4.42):

Figura 4.41 – Senha para usuário administrativo “root”.

ADMINISTRAÇÃO GNU/LINUX - 57/253


Treinamento em Software Livre

Figura 4.42 – Confirmação para senha do usuário administrativo.

Para o usuário de utilização geral (curso), a configuração pede o seu nome completo (figura 4.43),
seu username (figura 4.44), sua senha (figura 4.45) e a confirmação para esta senha (figuras
4.46):

Figura 4.43 – Nome completo do usuário de utilização geral.

Figura 4.44 – Username para o usuário de utilização geral.

ADMINISTRAÇÃO GNU/LINUX - 58/253


Treinamento em Software Livre

Figura 4.45 – Senha para o usuário de utilização geral.

Figura 4.46 – Confirmação da senha para o usuário de utilização geral.

4.4.3 Configurar repositório de pacotes (APT)


Deve-se escolher o método que o APT (A ferramenta de gerenciamento de pacotes do Debian
GNU/Linux) deverá utilizar para acessar o repositório de pacotes Debian. É possível instalar
estes pacotes através de um CD-ROM, FTP, HTTP, ou diretamente do sistema de arquivos. Utilize
a opção “cdrom” (figura 4.47) para o repositório de pacotes, o qual será examinado e preparado
(figura 4.48) para selecionar os perfis de instalação.

Figura 4.47 – Selecione o repositório de pacotes do Debian GNU/Linux.

ADMINISTRAÇÃO GNU/LINUX - 59/253


Treinamento em Software Livre

Figura 4.48 – Examinando e preparando as informações do repositório.

Repita o processo da escolha do CD-ROM caso você possua mais CDs da distribuição Debian. A
distribuição completa engloba mais de 16 CD-ROMs de pacotes.

4.4.4 Seleção dos Perfis de Instalação


Nesta etapa a seleção de perfis é requerida pela configuração do sistema. Como visto, existem
perfis para os mais variados usos para serem instalados (figura 4.49). Não selecione nenhuma
opção neste momento. As instalações serão realizadas no decorrer do treinamento.

Figura 4.49 – Menu dos perfis de instalação

ADMINISTRAÇÃO GNU/LINUX - 60/253


Treinamento em Software Livre

Figura 4.50 – Fim da instalação do Debian GNU/Linux

Parabéns! Agora o seu sistema Debian GNU/Linux está instalado.


As configurações realizadas foram as mais básicas, inclusive sem uma interface gráfica.
Entretanto, no decorrer do treinamento e dentro da seqüência estabelecida todos os principais
recursos serão abordados.

ADMINISTRAÇÃO GNU/LINUX - 61/253


Treinamento em Software Livre

ADMINISTRAÇÃO GNU/LINUX - 62/253


Treinamento em Software Livre

5 COMANDOS BÁSICOS

Neste capítulo serão abordados os comandos básicos para que você comece a interagir com o
interpretador de comandos do Shell bash.

5.1 - ls : lista conteúdos de diretórios.

Sintaxe:

$ ls <opções>

Opções:
• - l : escreve no formato de colunas simples.
• - i : procede a saída para o arquivo pelo seu número serial (inode).
• - R : lista os diretórios encontrados recursivamente.
• - h : mostra o tamanho dos arquivos em KB, MB, GB.
• - a : lista todos os arquivos inclusive os ocultos.
• - F : insere um caracter após arquivos executáveis ('*'), diretórios ('/'), sockets ('=')
e pipe ('|'). Seu uso é útil para identificar de forma fácil tipos de arquivos nas listagens
de diretórios.

Exemplo:

$ ls /
bin cdrom etc initrd lib mnt proc sbin sys usr vmlinuz
boot dev home initrd.img media opt root srv tmp var

5.2 - mkdir : cria diretórios.

Sintaxe:

$ mkdir <opções> <diretório>

Opções:
✔ - p : cria toda a estrutura de diretórios passada como parâmetro.
✔ --verbose : imprime uma mensagem para cada diretório criado.

Exemplo:
$ mkdir teste

ADMINISTRAÇÃO GNU/LINUX - 63/253


Treinamento em Software Livre

5.3 - rmdir : remove diretórios vazios.

Sintaxe:

$ rmdir <opções> <diretório>

Opções:
➢ - p: remove a estrutura de diretórios passadas como parâmetro, porém, o último
diretório passado como parâmetro deve estar vazio.
➢ -- verbose: imprime uma mensagem para cada diretório apagado.

Exemplo:

$ rmdir teste

5.4 - rm : remover diretórios e arquivos.

Sintaxe:

$ rm <opções> <diretório> <ou arquivo>

Opções:
➢ - i : pergunta antes de remover, esta é ativada por padrão.
➢ - v : mostra os arquivos/diretórios na medida que são removidos
➢ - r : usado para remover arquivos em sub-diretórios. Esta opção também pode ser usada para
remover sub-diretórios.
➢ - f : remove os arquivos sem perguntar.

Exemplo:

$ rm arquivo.txt
$ rm -r teste2

5.5 - cd : muda o diretório de trabalho atual. Caso não seja especificado


nenhum diretório, muda para o diretório pessoal do usuário.

Sintaxe:

$ cd <diretório>

Exemplo:

$ cd teste2

ADMINISTRAÇÃO GNU/LINUX - 64/253


Treinamento em Software Livre

5.6 - pwd : mostra o nome e caminho do diretório atual.

Sintaxe:

$ pwd

Exemplo:
$ pwd
/home/curso/teste2

5.7 - clear : limpa tela do terminal e posiciona o cursos no início da tela.

Sintaxe:

$ clear

5.8 Comandos de Ajuda

5.8.1 man

Este comando exibe as páginas de manual do comando ou programa passado como parâmetro. Elas
trazem uma descrição básica desta comando ou programa e detalhes sobre o funcionamento de
uma determinada opção. Uma página de manual é visualizada na forma de texto único com rolagem
vertical. Também documenta parâmetros usados em alguns arquivos de configuração.

Sintaxe:

$ man <comando ou programa>

Opções de navegação:
➢ q : sai da página de manual.
➢ f ou PageDown : rola 25 linhas abaixo
➢ w ou PageUp : rola 25 linhas acima
➢ k ou seta para cima : rola uma linha acima.
➢ e ou seta para baixo : rola uma linha abaixo.
➢ p ou g : Início da página.
➢ h : ajuda sobre as opções da página de manual.
➢ s : salva a página de manual em formato texto no arquivo especificado.

Exemplo:
$ man bash

ADMINISTRAÇÃO GNU/LINUX - 65/253


Treinamento em Software Livre

5.8.2 apropos

Procura por comandos através da descrição. É útil quando precisamos fazer alguma coisa mas não
sabemos qual comando usar. Ele faz sua pesquisa nas páginas de manual existentes no sistema e
lista os comandos/programas que atendem a consulta.

Sintaxe:

$ apropos <comando ou programa>

Exemplo:
$ apropos bash
bash (1) - GNU Bourne-Again Shell
bash-builtins (7) - bash built-in commands, see bash(1)
bashbug (1) - report a bug in bash
builtins (7) - bash built-in commands, see bash(1)
checkbashisms (1) - check for bashisms in /bin/sh scripts
gst-complete-0.8 (1) - do bash completion for gst-launch command-lines
ispellconfig (8) - Bash script to select a new ispell default dictionary.
rbash (1) - restricted bash, see bash(1)
update-ispell-dictionary (8) - Bash script to select a new ispell default dictionary.

5.8.3 info

Exibe informações de um comando no sistema.

Sintaxe: info [opções] <comando>

Opções Descrição
-d <nomedir> Adiciona um diretório à lista procura por arquivos
-f <arquivo> Especifica o diretório a ser utilizado pelo comando info.
-h Exibe uma mensagem de ajuda.

Exemplo:

$ info ls
<mostra toda a ajuda do comando ls>
Para sair do info, pressione <q>

5.8.4 whatis

Este comando consulta manuais on-line do sistema a partir de um banco de dados. Esse banco de
dados deve ser atualizado periodicamente pelo comando makewhatis (executado pelo root). Este
comando não possui páginas de manual. Para auxílio com ele, digite makewhatis -?.

ADMINISTRAÇÃO GNU/LINUX - 66/253


Treinamento em Software Livre

Sintaxe:
whatis <palavra-chave>

Exemplo:
$whatis find
find (1) - search for files in a directory hierarchy

5.8.5 apropos

Exibe informações sobre um assunto a partir de uma base de dados. Esse comando se utiliza da
mesma base que o comando whatis. Ele apresenta todas os comandos que tenham relação com a
palavra-chave pesquisada.

sintaxe:
$apropos <palavra-chave>

Exemplo:
$ apropos find

chkdupexe (1) - find duplicate executables


exinext (8) - Finding individual retry times
exiwhat (8) - Finding out what Exim processes are doing
find (1) - search for files in a directory hierarchy
findfs (8) - Find a filesystem by label or UUID
pidof (8) - find the process ID of a running program.
runlevel (8) - find the current and previous System runlevel.

5.8.6 Which

Este comando procura por um comando em diretórios e na variável PATH.

Sintaxe:
$ which <comando>

Exemplo:

$ which clear
/usr/bin/clear

Além dos comandos man, apropos, info, whatis e which, você pode conseguir mais informações
sobre os comandos ou programas através do comando help. Outra maneira de conseguir
informações mais rápidas sobre os parâmetros que o comando suporta é utilizando o parâmetro –-
help.

Exemplo:

ADMINISTRAÇÃO GNU/LINUX - 67/253


Treinamento em Software Livre

$ mkdir --help
Usage: mkdir [OPTION] DIRECTORY...
Create the DIRECTORY(ies), if they do not already exist.

Argumentos obrigatórios para opções longas também o são para opções curtas
-m, --mode=MODE set permission mode (as in chmod), not rwxrwxrwx - umask
-p, --parents no error if existing, make parent directories as needed
-v, --verbose print a message for each created directory
--help display this help and exit
--version output version information and exit

Comunicar `bugs' para <bug-coreutils@gnu.org>.

5.9 O interpretador de comandos – O Shell

O shell, é o programa responsável em interpretar as instruções enviadas pelo usuário ao sistema


operacional (Kernel), como por exemplo, criação e remoção de diretórios, listagem de diretórios,
criação e remoção de arquivos, etc. Ele executa os comandos lidos do dispositivo de entrada
padrão (teclado) ou de um arquivo executável. É a principal ligação entre o usuário, os programas,
e o Kernel.

O GNU/Linux possui diversos tipos de interpretadores de comando, entre eles, os de maior


destaque são o bash (Bourbe Again Shell), csh (C Shell), tcsh (Turbo C Shell), ksh (The Korn
Shell). Entre eles, o mais usado é o bash. Os comandos podem ser enviados de duas maneiras para
o interpretador: interativa e não-interativa:

➢ Interativa : os comandos são digitados no aviso de comando e passados ao


interpretador de comandos um a um. Neste modo, o computador depende do usuário
para executar uma tarefa, ou o próximo comando.

➢ Não-interativa : São usados arquivos de comandos criados pelo usuário (scripts) para o
computador executar os comandos na ordem encontrada no arquivo. Neste modo, o
computador executa os comandos do arquivos um a um e dependendo do término do
comando, o script pode checar qual será o próximo comando que será executado e dar
continuidade ao processamento.

O bash é um interpretador de comandos muito customizável, e para exemplificar uma pequena


porção desta ferramenta, podemos destacar um de seus recursos mais úteis, que é a
complementação do nome. Isto é feito pressionando a tecla TAB. Por exemplo, se digitar:

$ ls tes<TAB>

O bash localizará todos os arquivos que iniciam com “tes” e completará o restante do nome. Caso a
complementação de nomes encontre mais do que uma expressão que satisfaça a pesquisa, ou

ADMINISTRAÇÃO GNU/LINUX - 68/253


Treinamento em Software Livre

nenhuma, é emitido um beep.

Se você apertar novamente a tecla TAB imediatamente após o beep, o interpretador de comandos
irá listar as diversas possibilidades que satisfazem a pesquisa, para que você possa escolher o que
lhe interessa. A complementação de nomes funciona sem problemas para comandos internos.

5.9.1 Aviso de comando (prompt)

Aviso de comando (prompt), é a linha mostrada na tela para digitação de comandos que serão
passados ao interpretador de comandos para a sua execução. A posição onde o comando será
digitado é marcado por um traço piscante chamado cursor.

Tanto em shell texto como em gráficos é necessário o uso do cursor para sabermos onde iniciar a
digitação de textos e nos orientarmos quanto a posição na tela.

O aviso de comando do usuário root é identificado pela caractere “#” (tralha, cerquilha), e o aviso
de comando de usuários é identificado pelo caractere “$”. Isto é padrão em sistemas Unix®.

5.9.2 Coringas (Wildcards)

Coringas (ou referência global) é um recurso usado para especificar ou potencializar pesquisas
feitas para um ou mais arquivos ou diretórios do sistema de uma só vez. Este é um recurso
permite que você faça a filtragem do que será listado, copiado, apagado, etc. São usados 4 tipos
de coringas no GNU/Linux:

➢ * - Faz referência a qualquer nome completo/restante, qualquer número de vezes, de um


arquivo/diretório.

Exemplo:
$ ls /home/curso/teste/*.txt
teste10.txt teste1.txt teste3.txt teste5.txt testeA.txt testeC.txt testeE.txt teste11.txt
teste2.txt teste4.txt teste6.txt testeB.txt testeD.txt testeF.txt
Lista todos os arquivos que tiverem a extensão .txt no diretório /home/curso/teste.

$ ls teste*
teste10.txt teste1.txt teste3.txt teste5.txt testeA.txt testeC.txt testeE.txt teste11.txt
teste2.txt teste4.txt teste6.txt testeB.txt testeD.txt
Lista todos os arquivos que tiverem o prefixo teste.

$ ls teste*txt
teste10.txt teste1.txt teste3.txt teste5.txt testeA.txt testeC.txt testeE.txt teste11.txt
teste2.txt teste4.txt teste6.txt testeB.txt testeD.txt
Lista todos os arquivos que tiverem o prefixo teste e terminarem com a string txt.

ADMINISTRAÇÃO GNU/LINUX - 69/253


Treinamento em Software Livre

$ ls *5*
teste5.txt
Lista todos os arquivos que tiverem string 5.

➢ ? - Faz referência a um caracter em uma posição específica.

Exemplo:
$ ls teste?.txt
teste1.txt teste3.txt teste5.txt testeA.txt testeC.txt testeE.txt teste2.txt teste4.txt
teste6.txt testeB.txt testeD.txt testeF.txt
Lista todos os arquivos que tiverem um único caracter depois da string teste, e que tiverem a
extensão .txt.

$ ls teste??.txt
teste10.txt teste11.txt
Lista todos os arquivos que tiverem dois caracteres depois da string teste, e que tiverem a
extensão .txt.

$ ls /bin/??
/bin/cp /bin/dd /bin/df /bin/ed /bin/ln /bin/ls /bin/mt /bin/mv /bin/ps /bin/rm /bin/sh
/bin/su
Lista todos os arquivos que tiverem nome com apenas dois caracteres no diretório /bin.

$ ls /etc/???.conf
/etc/fam.conf /etc/ntp.conf /etc/pam.conf /etc/ucf.conf /etc/vnc.conf
/etc/xmp.conf
Lista todos os arquivos que tiverem nome com três caracteres e a extensão .conf no diretório
/etc.

➢ [ ] - O coringa "[...]" define um padrão que casa com o conjunto de caracteres entre "[" e "]".
O conjunto ainda pode conter intervalos de caracteres, como por exemplo "1-2" ou "a-z" e
também caracteres que não podem fazer parte do conjunto, indicados por "^" ou "!".

Exemplo:
$ ls teste[0-9].txt
teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt
Lista todos os arquivos que tiverem o intervalo de número de 0 até 9 entre o prefixo teste, com a
extensão .txt.

$ ls teste[5-9].txt
teste5.txt teste6.txt
Lista todos os arquivos que tiverem o intervalo de número de 5 até 9 entre o prefixo teste, com a
extensão .txt.

ADMINISTRAÇÃO GNU/LINUX - 70/253


Treinamento em Software Livre

$ ls teste[0-9].txt
teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt
Lista todos os arquivos que tiverem o intervalo de número de 0 até 9 entre o prefixo teste, com a
extensão .txt.

$ ls teste[A-Z].txt
testeA.txt testeB.txt testeC.txt testeD.txt testeE.txt testeF.txt
Lista todos os arquivos que tiverem o intervalo de A até Z entre o prefixo teste, com a extensão
.txt.

$ ls teste[B-D].txt
testeB.txt testeC.txt testeD.txt
Lista todos os arquivos que tiverem o intervalo de B até D entre o prefixo teste, com a extensão
.txt.

$ ls [a-z][0-9]*
t1.txt t2.txt t3.txt
Lista todos os arquivos que tiverem em seu nome na primeira posição um caracter no intervalo de a
à z, e na segunda posição um número no intervalo de 0 à 9, com qualquer sufixo ou extensão.

$ ls t[a-d,0-9]*
t1.txt t2.txt t3.txt ta1.txt ta2.txt
Lista todos os arquivos que tiverem o prefixo t, seguido por um caracter no intervalo de a à d, ou
um número no intervalo de 0 à 9, com qualquer sufixo ou extensão.

$ ls teste[0-9][^0-9]*
teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt
Lista todos os arquivos que tiverem o prefixo teste, seguido por um número no intervalo de 0 à 9,
e que não contenham um outro número na seqüência, com qualquer extensão. o caracter ^ significa
negação.

➢ { } - O coringa "{...}" define um padrão que casa com o conjunto de caracteres entre "{" e "}",
separados por vírgula.

Exemplo:

$ ls teste{[0-9],[A-Z]}.txt
teste1.txt teste3.txt teste5.txt testeA.txt testeC.txt testeE.txt teste2.txt teste4.txt
teste6.txt testeB.txt testeD.txt testeF.txt
Lista todos os arquivos que tiverem o prefixo teste, seguido por um conjunto composto por um
número no intervalo de 0 à 9, ou, caracteres no intervalo de A à Z, e. que contenham a extensão
.txt.

ADMINISTRAÇÃO GNU/LINUX - 71/253


Treinamento em Software Livre

$ ls teste*.{txt,log}
teste10.txt teste1.log teste2.log teste3.log teste4.txt teste6.txt testeB.txt testeD.txt
testeF.txt teste11.txt teste1.txt teste2.txt teste3.txt teste5.txt testeA.txt testeC.txt
testeE.txt teste.log
Lista todos os arquivos que tiverem o prefixo teste, seguido por qualquer conjunto de caracteres,
e que contenham as extensões .txt ou .log.

5.9.3. Direcionadores

Uma boa parte dos programas executados no terminal possuem alguma saída. Essas saídas são
enviadas por padrão para o terminal, sendo impressas na tela. Assim, consideremos o exemplo
abaixo:

$ ls teste[0-9].txt
teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt

Nesse caso, têm-se:

➢ entrada: ls teste[0-9].txt
➢ saída: teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt

Sendo que a entrada foi enviada pelo teclado (stdin) e a saída foi enviada para o terminal, que é a
saída padrão (stdout), o que fazer se o usuário quiser gravar a saída do comando ls em um arquivo
de texto, por exemplo?
Para isso existem os direcionadores de fluxo, de grande utilidade no GNU/Linux e essenciais para
a realização de diversas tarefas de manutenção do sistema.

Direcionadores de fluxo fazem o que o nome sugere: direcionam o fluxo da saída dos programas,
enviando-as para locais diferentes da saída padrão. Esses locais podem ser arquivos, dispositivos,
processos e outros programas. O direcionadores utilizados no GNU/Linux são:

➢ O Direcionador > : O direcionador > direciona a saída padrão de um comando para um arquivo.
Caso o arquivo exista, o seu conteúdo é substituído.

➢ Veja então a saída do comando ls que utilizou-se agora à pouco:

$ ls teste[0-9].txt
teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt

Para gravar essa lista em um arquivo chamado ls_out, utiliza-se o direcionador, da seguinte forma:

$ ls teste[0-9].txt > ls_out

Agora, nada é impresso no terminal. Por que? Porque a saída foi direcionada para o arquivo ls_out.

ADMINISTRAÇÃO GNU/LINUX - 72/253


Treinamento em Software Livre

Veja o conteúdo desse arquivo com o comando cat, que concatena e envia arquivos para a saída
padrão:

$ cat ls_out
teste1.txt
teste2.txt
teste3.txt
teste4.txt
teste5.txt
teste6.txt

Como visto, o conteúdo do arquivo ls_out é exatamente a saída do comando ls.

➢ O Direcionador 2> : Uma restrição ao uso do direcionador > é que ele não funciona para
mensagens de erro (stderr). No exemplo abaixo, usa-se o comando ls, e como parâmetro, um
diretório que não existe:

$ ls dir_fantasma > ls_out


ls: dir_fantasma: Arquivo ou diretório não encontrado

Observe que mesmo usando o direcionador >, a mensagem de erro foi exibida. Se o usuário
visualizar o conteúdo do arquivo ls_out, verá que nada foi gravado. Para gravar as mensagens de
erro, deve-se usar o direcionador 2>:

$ ls dir_fantasma 2> ls_out

Agora sim, nenhuma mensagem de erro foi exibida na tela, porque ela foi enviada para o arquivo
ls_out, como pode-se verificar:

$ cat ls_out
ls: dir_fantasma: Arquivo ou diretório não encontrado

➢ O Direcionador &> : Podemos usar os direcionadores > e 2> em conjunto, para gerar um arquivo
com a saída padrão e outro com a saída de erros, dessa forma:

$ ls teste[0-9].txt dir_fantasma > ls_out 2> ls_error

O comando acima pede para listar todos os arquivos que contenham o nome teste, seguido por um
intervalo de 0 à 9, com a extensão .txt, e o conteúdo do diretório dir_fantasma. Ao ver o
conteúdo dos arquivos ls_out e ls_error, têm-se:

ADMINISTRAÇÃO GNU/LINUX - 73/253


Treinamento em Software Livre

$ cat ls_out
teste1.txt
teste2.txt
teste3.txt
teste4.txt
teste5.txt
teste6.txt

$ cat ls_error
ls: dir_fantasma: Arquivo ou diretório não encontrado

Mas, e se for necessário gravar todas as mensagens em um arquivo apenas? Para isso existe o
direcionador &>, que direciona tanto as mensagens padrão quanto as mensagens de erro para um
arquivo. Repetindo o teste anterior:

$ ls teste[0-9].txt dir_fantasma &> ls_out

Nenhuma mensagem é exibida no terminal, e o conteúdo do arquivo ls_out é o seguinte:

$ cat ls_out
ls: dir_fantasma: Arquivo ou diretório não encontrado
teste1.txt
teste2.txt
teste3.txt
teste4.txt
teste5.txt
teste6.txt

Como visto, têm-se tanto a saída normal quanto as mensagens de erro.


Os Direcionadores >>, 2>>: Todos os direcionadores acima citados substituem o conteúdo do
arquivo caso ele já exista. Se você quiser gravar a saída de vários comandos num mesmo arquivo,
então precisará adicionar o conteúdo ao arquivo ao invés de substituí-lo. Para fazer isso, usa-se >>
ao invés de > e 2>.

➢ O Direcionador < : Direciona a entrada padrão de arquivo/dispositivo para um comando. Este


direcionador faz o contrário de < , ele envia dados à entrada padrão, que no caso, é o comando.
Por exemplo:

$ cat < ls_out


ls: dir_fantasma: Arquivo ou diretório não encontrado
teste1.txt
teste2.txt
teste3.txt

ADMINISTRAÇÃO GNU/LINUX - 74/253


Treinamento em Software Livre

Você pode usar o comando acima para enviar o conteúdo do arquivo ls_out ao comando cat, que
mostrará seu conteúdo. É claro que o mesmo resultado pode ser obtido com cat teste.txt, mas
este exemplo serviu para mostrar a funcionalidade do <.

➢ O Direcionador << : O direcionador << é utilizado para marcar o fim de exibição de um bloco.
Um dos usos mais freqüentes desse direcionador é em conjunto com o comando cat. O comando
abaixo termina o comando cat quando for digitada a palavra "fim".

$ cat << fim


> Este é um teste para demonstrar
> o recurso do direcionador <<,
> muito utilizado com o comando cat
> ..
> fim
Este é um teste para demonstrar
o recurso do direcionador <<,
muito utilizado com o comando cat

Como visto, a palavra "fim" foi usada para determinar o fim do comando cat. Perceba que a linha
onde digitamos "fim" não é exibida na saída do comando cat, logo abaixo.

O Direcionador | (pipe) : O direcionador | , também conhecido como pipe (duto, cano), é utilizado
para direcionar a saída de um comando para outro comando, e utilizado todo o tempo para a
realização de todo tipo de tarefas e procedimentos.
Um dos usos mais comuns do | é com os comandos ls e more, para ver o conteúdo de um diretório,
quando este não cabe na tela, como o diretório /usr/bin, por exemplo. Para que se possa ver todos
os arquivos, direciona-se a saída do ls para o more, que faz a paginação do conteúdo:

$ ls /usr/bin | more
411toppm
822-date
a2p
aaxine
abcde
abiword
AbiWord-2.2
--Mais--

Agora, basta pressionar Enter para rolar a lista, de forma que podemos ver todos os arquivos.
Pode utilizar o pipe para contar o número de linhas de um arquivo, em conjunto com os comandos
cat e wc:

$ cat /etc/profile | wc -l (ele minúsculo)


82

ADMINISTRAÇÃO GNU/LINUX - 75/253


Treinamento em Software Livre

O comando wc é utilizado para contar número de linhas, palavras e bytes do fluxo, que neste caso,
é um arquivo texto. Um outro exemplo é em conjunto com o gerenciador de pacotes apt, e com o
comando grep, que é utilizado para selecionar linhas que contém uma determinada expressão.

5.9.4 Alias

Permite criar um apelido a um comando ou programa. Por exemplo, se você quiser otimizar o nome
do comando ls -lh para ver uma listagem longa e com todos os atributos dos arquivos, você pode
usar o comando alias para facilitar as coisas digitando:

$ alias lista='ls -lh'


Detalhe: (não se esqueça da meia aspa 'para identificar o comando'). Agora quando você digitar
lista, a listagem será mostrada de forma completa.

5.9.5 Histórico dos Comandos - History

Todos os comandos executados em uma sessão são memorizados pelo shell, e podem ser
consultados e re-executados quando desejado. Para consultar o histórico basta executar o
comando history.

Os comandos que são digitados são armazenados dentro do arquivo .bash_history que está em seu
diretório de trabalho. Os comandos de uso do histórico começam sempre pelo sinal "!" . Vejamos
os mais comuns:

➢ !132 : re-executa o comando de número 132 do histórico


➢ !-2 : re-executa o penúltimo comando
➢ !! : re-executa o comando anterior (equivale a !-1)
➢ !gr : re-executa o último comando começando com as letras "gr"

5.9.6 tee

Envia o resultado do programa para a saída padrão (tela) e para um arquivo ao mesmo tempo. Este
comando deve ser usado com o pipe "|".

Sintaxe:

$ <comando> | tee <arquivo de saída>

Opções:
• - a : acrescenta ao arquivo passo ao invés de sobrescrevê-lo.

Exemplo:

ADMINISTRAÇÃO GNU/LINUX - 76/253


Treinamento em Software Livre

$ ls -lh | tee lista.txt


total 0
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste10.txt
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste11.txt
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste1.txt

5.9.7 grep

Procura por um texto dentro de um arquivo(s) ou no dispositivo de entrada padrão.

Sintaxe:

$ grep <expressão> <arquivo> <opções>

Opções:
• - A [número] : Mostra o [número] de linhas após a linha encontrada.
• - B [número] : Mostra o [número] de linhas antes a linha encontrada.
• - n : Mostra o número cada de linhas encontrada.
• - i : Ignora diferenças entre minúsculas e maiúsculas.

Exemplo:

$ cat lista.txt | grep 15:35

-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:35 testeB.txt


-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:35 testeC.txt
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:35 testeD.txt
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:35 testeE.txt
Exibe todas as linhas do arquivo lista.txt que contém a string 15:35.

$ ps -ef | grep bash


fabio 4978 4976 0 11:17 pts/0 00:00:00 bash
root 4982 4978 0 11:17 pts/0 00:00:00 bash
fabio 5713 4976 0 17:09 pts/1 00:00:00 bash
fabio 5726 5713 0 17:11 pts/1 00:00:00 grep bash
Exibe a saída do comando ps, que lista todos os processo que estão rodando na máquina, e no
exemplo acima, todos os processo que contém a string bash.

O grep faz sua pesquisa em arquivos texto. Use o comando zgrep para pesquisar diretamente em
arquivos compactados com gzip, os comandos e opções são as mesmas.

ADMINISTRAÇÃO GNU/LINUX - 77/253


Treinamento em Software Livre

5.9.8 cat

Concatena arquivos e imprime na saída padrão (exibe na tela). Em arquivos, usa-se o cat para listar
seu conteúdo na tela. Com o uso de direcionadores, podemos usá-lo para unir diferentes arquivos
em um só, dentre outra funções.

Sintaxe:

$ cat <opções> <arquivo>

Opções:
• - b : Numera as linhas, com exceção das linhas em branco.
• - E : Mostra um $ para indicar fim de linha.
• - n : Numera todas as linhas, incluindo as em branco .
• - s : Não mostra mais do que uma linha em branco. Se houver duas ou mais linhas
em branco consecutivas, elas são truncadas e apenas uma é mostrada.
• - T : Substitui tabulações pelos caracteres ^I.
• - v : Substitui os caracteres não imprimíveis por símbolos, exceto tabulações e final
de linha.

Exemplo:

$ cat lista.txt
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:35 testeB.txt
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:35 testeC.txt
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:35 testeD.txt
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:35 testeE.txt
Exibe todas as linhas do arquivo lista.txt, este é o exemplo mais simples da utilização deste
comando.

$ cat ls_new ls_log


-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:03 teste1.new
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:03 teste2.new
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:03 teste3.new
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:03 teste4.new
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:03 teste5.new
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:02 teste1.log
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:02 teste2.log
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:02 teste3.log
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:02 teste4.log
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:02 teste5.log
Exibe a saída o conteúdo dos arquivos ls_new e ls_log, que contém respectivamente, a saída do
comando ls -lh *.new e ls -lh *.log.

$ cat musica_1.mp3 musica_2.mp3 > junta_musica.mp3

ADMINISTRAÇÃO GNU/LINUX - 78/253


Treinamento em Software Livre

O comando cat também trabalha na junção de conteúdos de arquivos binários. Por exemplo, se
você quiser concatenar duas músicas sem precisar.

O comando cat trabalha com arquivos texto. Use o comando zcat para ver diretamente arquivos
compactados com gzip.

5.9.9 tac

Faz o mesmo que o cat, mas exibe o arquivo pela ordem inversa, ou seja, começando pela última
linha e terminando com a primeira.

Sintaxe:

$ tac <arquivo>

Exemplo:

$ tac lista_lognew
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:02 teste5.log
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:02 teste4.log
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:02 teste3.log
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:02 teste2.log
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:02 teste1.log
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:03 teste5.new
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:03 teste4.new
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:03 teste3.new
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:03 teste2.new
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:03 teste1.new

Exibe todas as linhas do arquivo lista.txt, este é o exemplo mais simples da utilização deste
comando.

5.9.10 wc

Conta o número de linhas, palavras, caracteres e bytes nos arquivos. Se as opções forem omitidas,
o wc mostra a quantidade de linhas, palavras, e bytes.

Sintaxe:

$ wc <opções> <arquivo>

Opções:

ADMINISTRAÇÃO GNU/LINUX - 79/253


Treinamento em Software Livre

• - c : Exibe apenas o número de bytes.


• - m: Exibe apenas o número de caracteres.
• - l: Exibe apenas o número de linhas.
• - L: Exibe o comprimento, em caracteres, da maior linha do arquivo.
• - w: Exibe o número de palavras encontradas.

Exemplo:

$ wc lista_lognew
10 80 560 lista_lognew
Se as opções forem omitidas, o wc mostra a quantidade de linhas, palavras, e bytes.

$ wc -w lista_lognew
80 lista_lognew
Exibe apenas o número de palavras.

5.9.11 find (modo básico)

Procura por arquivos/diretórios no disco. O find pode procurar arquivos através de sua data de
modificação, tamanho, etc, através do uso de opções.

Sintaxe:

$ find <arquivo/diretório> <opções/expressões>

Opções:
• -name : Procura arquivos cujo nome coincida com a expressão digitada.
• -type [tipo]: Procura por arquivos que sejam de um tipo específico.
• b : Dispositivos de bloco.
• c : Dispositivos de caractere.
• d : Diretório.
• p : Duto nomeado (FIFO).
• f : Arquivo regular.
• l : Link simbólico.
• s : Socket.

Exemplo:

$ find teste[A-Z].txt
testeA.txt
testeB.txt
testeC.txt

Utilizado desta maneira, sem informar um diretório para pesquisa, faz uma busca dentro diretório
atual.

ADMINISTRAÇÃO GNU/LINUX - 80/253


Treinamento em Software Livre

$ find /etc/ -name ???.conf


/etc/gdm/gdm.conf
/etc/fam.conf
/etc/pam.conf
/etc/ucf.conf
/etc/dbus-1/system.d/hal.conf
/etc/esound/esd.conf
/etc/sane.d/ibm.conf
/etc/sane.d/v4l.conf
/etc/sane.d/pie.conf
/etc/sane.d/leo.conf
/etc/sane.d/nec.conf
/etc/sane.d/u12.conf
/etc/sane.d/dll.conf
/etc/sane.d/dmc.conf
/etc/sane.d/net.conf
/etc/apache2/mods-available/ssl.conf
Faz um busca no diretório /etc, por arquivos que contenham apenas 3 letras em seu nome, e que
tenha a extensão .conf.

5.9.12 more

Permite fazer a paginação de arquivos ou da entrada padrão. O comando more pode ser usado
como comando para leitura de arquivos que ocupem mais de uma tela. Quando toda a tela é
ocupada, ele efetua uma pausa e permite que você pressione <ENTER> ou <espaço> para continuar
avançando no arquivo sendo visualizado. Para sair do more pressione <q>.

Sintaxe:

$ more <arquivo>

Exemplo:

ADMINISTRAÇÃO GNU/LINUX - 81/253


Treinamento em Software Livre

$ more /etc/adduser.conf
# /etc/adduser.conf: `adduser' configuration.
# See adduser(8) and adduser.conf(5) for full documentation.
# The DSHELL variable specifies the default login shell on your
# System
DSHELL=/bin/bash
# The DHOME variable specifies the directory containing users' home
# directories.
DHOME=/home
# If GROUPHOMES is "yes", then the home directories will be created as
# /home/groupname/user.
GROUPHOMES=no
# If LETTERHOMES is "yes", then the created home directories will have
# an extra directory - the first letter of the user name. For example:
# /home/u/user.
LETTERHOMES=no
--Mais--(55%)
Faz a paginação do arquivo /etc/adduser.conf.

$ ls -lh | more
total 24K
-rw-r--r-- 1 fabio fabio 560 2005-06-15 14:10 lista_lognew
-rw-r--r-- 1 root root 2,1K 2005-06-17 12:34 lista_pag
-rw-r--r-- 1 fabio fabio 968 2005-06-15 11:34 lista.txt
-rw-r--r-- 1 fabio fabio 280 2005-06-15 14:03 ls_log
-rw-r--r-- 1 fabio fabio 280 2005-06-15 14:03 ls_new
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste10.txt
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste11.txt
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:02 teste1.log
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:03 teste1.new
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste1.txt
--Mais--
Faz a paginação da saída do comando ls.

Para visualizar diretamente arquivos texto compactados pelo utilitário gzip (arquivos
.gz), use o comando zmore.

5.9.13 less

Permite fazer a paginação de arquivos ou da entrada padrão. Ele pode ser usado como comando
para leitura de arquivos que ocupem mais de uma tela. Quando toda a tela é ocupada, o less efetua
uma pausa (semelhante ao more) e permite que você pressione <seta para cima> e <seta para baixo>
ou <PgUP>/<PgDown> para fazer o rolamento da página. Para sair do less pressione <q>.

Sintaxe:

ADMINISTRAÇÃO GNU/LINUX - 82/253


Treinamento em Software Livre

$ less <arquivo>

Exemplo:

$ less /etc/adduser.conf
# /etc/adduser.conf: `adduser' configuration.
# See adduser(8) and adduser.conf(5) for full documentation.
# The DSHELL variable specifies the default login shell on your
# System
DSHELL=/bin/bash
# The DHOME variable specifies the directory containing users' home
# directories.
DHOME=/home
# If GROUPHOMES is "yes", then the home directories will be created as
# /home/groupname/user.
GROUPHOMES=no
# If LETTERHOMES is "yes", then the created home directories will have
# an extra directory - the first letter of the user name. For example:
# /home/u/user.
LETTERHOMES=no
:
Faz a paginação do arquivo /etc/adduser.conf.

$ ls -lh | less
total 24K
-rw-r--r-- 1 fabio fabio 560 2005-06-15 14:10 lista_lognew
-rw-r--r-- 1 root root 2,1K 2005-06-17 12:34 lista_pag
-rw-r--r-- 1 fabio fabio 968 2005-06-15 11:34 lista.txt
-rw-r--r-- 1 fabio fabio 280 2005-06-15 14:03 ls_log
-rw-r--r-- 1 fabio fabio 280 2005-06-15 14:03 ls_new
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste10.txt
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste11.txt
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:02 teste1.log
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:03 teste1.new
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste1.txt
:
Faz a paginação da saída do comando ls.

Para visualizar diretamente arquivos texto compactados pelo utilitário gzip (arquivos
.gz), use o comando zless.

5.9.14 touch

Muda a data e hora que um arquivo foi criado. Também pode ser usado para criar arquivos vazios.
Caso o touch seja usado com arquivos que não existam, por padrão ele criará estes arquivos.

ADMINISTRAÇÃO GNU/LINUX - 83/253


Treinamento em Software Livre

Sintaxe:
$ touch <opções> <arquivo>

Opções:
• -a : Modifica apenas a data do última acesso.
• -c: Não cria arquivos, caso eles não existam.
• -m : Modifica apenas a data de modificação.
• -t : Usa Minutos (MM), Dias (DD), Horas (hh), minutos (mm) e opcionalmente o ANO e
segundos para modificação do(s) arquivo(s) ao invés da data e hora atual.

Exemplo:

$ ls -lh teste1.txt
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste1.txt

$ touch teste1.txt

$ ls -lh teste1.txt
-rw-r--r-- 1 fabio fabio 0 2005-06-20 14:16 teste1.txt
Supondo que o arquivo teste1.txt tenha como última modificação, a data 14/06/2005 às 15:34.
utilizando o comando touch sem nenhum parâmetro, o arquivo automaticamente fica com a data
atual, como sendo a sua data de última modificação.

$ touch -t 200302111030.11 teste1.txt

$ ls -lh teste1.txt
-rw-r--r-- 1 fabio fabio 0 2003-02-11 10:30 teste1.txt

$ touch -t 200404151430 teste1.txt


-rw-r--r-- 1 fabio fabio 0 2004-04-15 14:30 teste1.txt

Neste exemplo, utiliza-se a opção -t para o comando touch gravar uma data específica no arquivo.
No exemplo acima, o arquivo teste1.txt terá como data de última modificação, a data 15/04/2004
às 14:30.

5.9.15 ln

O comando In é utilizado para criar links, simbólicos ou absolutos.

Sintaxe:

$ ln <opções> <origem> <destino>

Opções:
• -s : Cria um link simbólico. Usado para criar ligações com o arquivo/diretório de
destino.

ADMINISTRAÇÃO GNU/LINUX - 84/253


Treinamento em Software Livre

• -v: Exibe o nome de cada link antes de criá-lo.


• -d : Permite ao administrador do sistema (root) criar um hardlink (link absoluto) para
um diretório.
Exemplo:

$ ln -s teste1.txt teste1.documento
$ ls -lh teste1*
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste10.txt
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste11.txt
lrwxrwxrwx 1 fabio fabio 10 2005-06-20 16:30 teste1.documento -> teste1.txt
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:02 teste1.log
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:03 teste1.new
-rw-r--r-- 1 fabio fabio 0 2004-04-15 14:30 teste1.txt
Neste exemplo, foi criado um link simbólico para o arquivo teste1.txt com o nome de
teste1.documento.

$ ln -s -v teste1.txt teste1.documento
criar link simbólico `teste1.docs' to `teste1.txt'

$ ls -lh teste1*
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste10.txt
-rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste11.txt
lrwxrwxrwx 1 fabio fabio 10 2005-06-20 17:00 teste1.docs -> teste1.txt
lrwxrwxrwx 1 fabio fabio 10 2005-06-20 16:30 teste1.documento -> teste1.txt
-rw-r--r-- 1 fabio fabio 0 2005-06-15 14:02 teste1.log

Neste exemplo, foi criado um link simbólico para o arquivo teste1.txt com o nome de teste1.docs,
exemplificando a saída com a opção -v.

$ ln /etc/passwd
$ ln /etc/passwd passwd_curso
$ ls -lh pass*
-rw-r--r-- 3 root root 1,2K 2005-06-17 11:31 passwd
-rw-r--r-- 3 root root 1,2K 2005-06-17 11:31 passwd_curso
Neste exemplo, foram criados dois links absolutos, um para o arquivo /etc/passwd no diretório
atual com mesmo nome, e outro com o nome de passwd_curso, mas os dois referenciam o mesmo
arquivo.

5.10 Editor de textos “vi”

O vi é um dos editores de texto mais antigos. Independente de plataforma, ele é encontrado em


quase todos os sistemas *NIX. É um editor de texto para console, então não há a necessidade de
se usar um ambiente gráfico. Ele é um pouco confuso para quem utiliza o programa pela primeira
vez, visto que todas as operações são iniciadas a partir de uma seqüência de teclas. O vim
(abreviatura de vi improved) é uma variação do vi com alguns recursos extras. O uso do vim é igual
ao do vi, exceto pelas funções adicionais não encontradas neste. As principais opções do vi são:

ADMINISTRAÇÃO GNU/LINUX - 85/253


Treinamento em Software Livre

➢ i: habilita a inserção de textos no arquivo.


➢ a: permite a inserção de textos depois do cursor.
➢ A: permite a inserção de textos no final da linha onde encontra-se o cursor.
➢ o: Insere uma linha abaixo da linha corrente.
➢ O: Insere uma linha acima da linha corrente.
➢ W: Move o cursor para o início da próxima palavra, ignorando a pontuação.
➢ w: Move o cursor para o início da próxima palavra, sem ignorar a pontuação.
➢ B: Move o cursor para o início da palavra anterior, ignorando a pontuação.
➢ b: Move o cursor para o início da próxima palavra, sem ignorar a pontuação.
➢ <num>G : Move o cursor para a linha indicada pelo número <num>.

➢ G: Move o cursor para a última linha do arquivo.


➢ gg : Move o cursor para a primeira linha do arquivo.

➢ /<texto> : Procura dentro do arquivo pelo texo informado.

➢ n: repete o último comando / realizado.


➢ N: repete o último comando / realizado, porém, na direção reversa.
➢ <CTRL>+G : Mostra as informações sobre o arquivo, como seu nome, número da linha
corrente, e total de linhas.
➢ dw : Exclui uma palavra, da posição do cursor, até o seu final.
➢ dd : Exclui a linha onde o cursor está posicionado.
➢ D: Exclui o texto que está sob o cursor ate o final da linha.
➢ $: Move o cursor para o final da linha corrente.
➢ 0: Move o cursor para o início da linha corrente.
➢ R: Substitui o texto corrente.
➢ cw : Substitui a palavra corrente.
➢ cc : Exclui a linha corrente e habilita o modo de inserção.
➢ C: Substitui o restante da linha corrente, a partir da posição do cursor.
➢ u: desfaz a última modificação.
➢ U: Desfaz todas as modificações feitas na linha corrente (desde que o cursor não
tenha mudado de linha).
➢ J: Une a linha corrente à próxima.
➢ yw : copia uma palavra.
➢ dw : cortar uma palavra.
➢ Y: Copia a linha corrente.
➢ yy: Copia a linha corrente.
➢ S: Cortar a linha corrente.

ADMINISTRAÇÃO GNU/LINUX - 86/253


Treinamento em Software Livre

➢ P: Cola o conteúdo da área de transferência.


➢ V: Seleção visual.
➢ <ESC> : Alterna para o modo comando.

➢ :w : Salva o arquivo atual.


➢ :w novo_arquivo.txt : Salva o arquivo atual com o nome novo_arquivo.txt.

➢ :q : Sai do vi e não salva as alterações.


➢ :q! : Força a saída do vi sem salvar as alterações.
➢ :wq : salva o arquivo atual e sai do vi.

➢ :r nome_do_arquivo.txt : Insere o conteúdo de nome_do_arquivo.txt no arquivo atual

➢ :r! ps : Insere a saída do comando ps no arquivo atual.

➢ :set number : exibe o número de linhas do arquivos atual.

➢ :set nonumber : desabilita a visualização do número de linhas.

➢ :s/teste/teste1 : substitui a primeira ocorrência de teste por teste1 na linha corrente.

➢ :s/teste/teste1/g : substitui todas as ocorrências de teste por teste1 na linha


corrente.
➢ :%s/teste/teste1 : Substitui a primeira ocorrência da palavra teste por teste1 em cada
linha, no arquivo inteiro.
➢ :%s/teste/teste1/g : Substitui todas as ocorrências da palavra teste por teste1, no
arquivo inteiro.
➢ :%s/teste/teste1/gc : Substitui todas as ocorrências da palavra teste por teste1, no
arquivo inteiro, pedindo confirmação.

5.11 Ambiente do Usuário

No Shell bash é possível a customização do ambiente de execução, conforme algumas preferências


pessoais do usuário. Geralmente estas configurações ficam guardadas no script .bashrc.

Em seu primeiro login no sistema GNU/Linux, será criado o arquivo .bashrc dentro de seu
diretório home e caso deseje então customizar seu ambiente, basta editar diretamente este
arquivo.

5.11.1 Definindo alias no ambiente de execução do Shell

Sintaxe:
# alias <seu_comando>=<'comando do Shell'>

Exemplo:
#alias cls='clear --> Comando para limpar a tela do terminal
# alias learq=”ls -l | grep '^-' | more” --> Comando para listar somente arquivos
# alias ledir=”ls -l | grep '^d' | more” --> Comando para listar somente diretórios

ADMINISTRAÇÃO GNU/LINUX - 87/253


Treinamento em Software Livre

Para remover um alias, basta digitar o comando # unalias <nome_alias> que o Shell irá removê-lo
da lista de alias.

5.11.2 Definindo seu Prompt de Comando

No Shell bash, a variável de ambiente PS1 (prompt string 1) representa o seu estilo de prompt.
Você pode personalizar o seu prompt, conforme os exemplos abaixo:

# export PS1=`uname -n`'$PWD'”>”

Define o prompt como: micro1/etc>, onde:


micro1 é o nome do seu computador, vem do comando `uname -n`
/etc/ é o diretório onde você está posicionado neste momento, vem do comando '$PWD'
> é um caracter separador do prompt, vem do comando “>”

Detalhe importante:
Com as definições acima, o prompt fica dinâmico, ou seja, se você navegar pela estrutura de
diretórios do sistema, automaticamente seu prompt irá lhe mostrar onde você está posicionado.

O comando export possui a finalidade de exportar a variável PS1 para todos os processos filhos
criados pelo seu Shell. Com isso, se novos programas ou scripts forem iniciados a partir de seu
Shell atual, eles terão a visibilidade desta variável de ambiente.

5.11.3 Trabalhando e Definindo Variáveis de Ambiente

O seu ambiente Shell possui configurado várias variáveis de ambiente. Estas variáveis são
definidas por pacotes do sistema e/ou aplicativos que necessitam delas para que funcionem
corretamente.

Para visualizar as variáveis que estão definidas em seu ambiente de execução Shell, execute o
comando:

# set | more

Resultado:

BASH=/bin/bash
BASH_COMPLETION=/etc/bash_completion
BASH_COMPLETION_DIR=/etc/bash_completion.d
BASH_VERSINFO=([0]="2" [1]="05b" [2]="0" [3]="1" [4]="release" [5]="i386-pc-linux-gnu")
BASH_VERSION='2.05b.0(1)-release'
COLORTERM=gnome-terminal
COLUMNS=125
DESKTOP_SESSION=default
DIRSTACK=()

ADMINISTRAÇÃO GNU/LINUX - 88/253


Treinamento em Software Livre

DISPLAY=:0.0
EUID=0
GDMSESSION=default
GDM_XSERVER_LOCATION=local
GNOME_DESKTOP_SESSION_ID=Default
GNOME_KEYRING_SOCKET=/tmp/keyring-kWU8q4/socket
GROUPS=()
GTK_RC_FILES=/etc/gtk/gtkrc:/root/.gtkrc-1.2-gnome2
HISTFILE=/root/.bash_history
HISTFILESIZE=500
HISTSIZE=500
HOME=/root
HOSTNAME=sc7448nb100
HOSTTYPE=i386
IFS=$' \t\n'
LANG=pt_BR
LANGUAGE=pt_BR:pt:pt_PT
LINES=39
LOGNAME=root
...
É possível também ver as variáveis de ambiente através do comando env:

# env | more --> mostra as variáveis de ambiente atuais.

Para definir uma variável de ambiente execute:

# LINUX=tux --> define a variável de ambiente LINUX com o valor tux


# export LINUX --> exporta a variável para todos os ambientes, filhos do ambiente atual.
# export LINUX=tux --> Faz as duas linhas acima, num único comando.
#echo $LINUX --> Mostra o conteúdo da variável LINUX.
Para remover uma variável do ambiente, digite:

# unset LINUX --> remove a variável LINUX.

Principais variáveis de ambiente:

TERM --> Define o tipo de terminal do usuário. Em modo gráfico é xterm.


PATH --> Define o caminho de busca por comandos e executáveis (binários);
HOME --> Contém o caminho para seu diretório Home;
SHELL --> Contém o tipo de shell de seu ambiente. Ex: /bin/bash;
USER --> Contém o nome do usuário logado no sistema;
DISPLAY --> Define o terminal virtual do ambiente gráfico. Ex. :0.0

ADMINISTRAÇÃO GNU/LINUX - 89/253


Treinamento em Software Livre

5.11.4 Arquivos que Definem o Ambiente do Usuário

Dentro do sistema de Shell e, especificamente no Shell bash, alguns arquivos são responsáveis por
definir uma ambiente de execução mínimo para os usuários. Os mais importantes são:

/etc/profile --> Define variáveis globais, para todos os usuários. É executado no login.
/etc/bashrc --> Define os aliases para todos os usuários. É executado no login.
/home/usuário/.bash_profile --> Define as variáveis de ambiente para o usuário. Este arquivo é
executado no momento de login.
/home/usuário/.bashrc --> Define os aliases para o usuário. É executado no momento de login.
/home/usuario/.bash_logout --> Executa os comandos que estiverem neste arquivo, no processo
de logout do usuário.
/home/usuario/.bash_history --> Contém os últimos comandos digitados pelo usuário. Veja o
comando history.
/etc/issue --> Contém mensagem inicial aos usuários no momento de proceder o
login no sistema.
/etc/issue.net --> Contém mensagem inicial aos usuários no momento de proceder o login no
sistema via rede.
/etc/motd --> Contém mensagem que será apresentada ao usuário, após o processo de login no
sistema. Geralmente uma mensagem de boas-vindas.

ADMINISTRAÇÃO GNU/LINUX - 90/253


Treinamento em Software Livre

6 EMPACOTADORES E COMPACTADORES

Ao contrário de aplicativos de outros sistemas operacionais, os quais geralmente realizam o


empacotamento e a compressão de arquivos, no mundo GNU/LINUX este processo é realizado por
vários aplicativos.

Neste sentido, na seqüência serão abordados os comandos tar, gzip, bzip e bzip2, os quais
realizam, trabalhando em conjunto, o empacotamento e a compressão de arquivos.

6.1 O Empacotador de arquivos tar

O tar é um aplicativo que armazena e extrai arquivos ou diretórios, dentro e um arquivo ou


dispositivo como uma unidade de fita, por exemplo.
Seu uso é um dos mais importantes nos servidores baseados em GNU/LINUX, pois é através
deste comando que as rotinas de backup de arquivos são implementadas.

Sintaxe:
tar [opções] <arquivos_ou_diretórios>

Opções disponíveis:
Parâmetro Descrição
-c Cria um novo pacote tar e agrega e ele os arquivos especificados.
-x Extrai os arquivos de dentro de um pacote tar (tarball).
-f Indica que o destino dos arquivos é para um arquivo em disco ou device,
como uma unidade de fita magnética (dat, dlt, ait, etc).
-t Lista o conteúdo de um arquivo tar.
-v Exibe o nome de cada arquivo processado, é o modo verbose.
-Z Compacta ou Descompacta utilizando o comando compress.
-z Compacta ou Descompacta utilizando o comando gzip.
-j Compacta ou Descompacta utilizando o comando bzip2.
-C <dir> Descompacta os arquivos em dir.
-M Multi-volume, mas não pode ser utilizado para compressão ou
descompressão de arquivos.
-b <n> Define o tamanho do bloco de dados a ser utilizado pela tar, no
formato n*512 bytes. Default n=20.

Exemplos:

# cd /tmp
# tar -cvzf etc_conf.tar.gz /etc/*.conf

Empacota e comprime com bzip os arquivos *.conf do diretório /etc, criando o arquivo
etc_conf.tar.gz

# tar -cvjf etc_conf.tar.bz2 /etc/*.conf

ADMINISTRAÇÃO GNU/LINUX - 91/253


Treinamento em Software Livre

Empacota e comprime com bzip2 os arquivos *.conf do diretório /etc, criando o arquivo
etc_conf.tar.bz2. Compare o tamanho deste arquivo com o do exemplo anterior, para verificar a
compressão do programa bzip2.

# tar -cvjf /dev/st0 /home /sistemas /backup 1>/var/log/bkp.log 2>/var/log/bkp_erro.log

Empacota e comprime com bzip2 todos os arquivos dos diretórios /home, /sistemas e /backup,
gravando o pacote diretamente para a fita que está em /dev/st0. Será gravado um log do backup
em /var/log/bkp.log e um log de erros em /var/log/bkp_erro.log.

# tar -xvjf etc_conf.tar.bz2

Descompacta os arquivos do pacote etc_conf.tar.bz2, que foram comprimidos pelo programa


bzip2, no diretório corrente da execução do comando.

# tar -xvzf pacotezx.deb.gz -C /usr/local

Descompacta o pacote pacotezx.deb.gz, usando o gunzip para descomprimir e gravando os arquivos


em /usr/local.

# tar -tvjf /tmp/etc_conf.tar.bz2

Lista o conteúdo do pacote /tmp/etc_conf.tar.bz2. Observe que o caminho absoluto dos arquivos
também foi gravado no pacote tar.bz2.

# tar -xvzf etc_conf.tar.gz etc/pam.conf

Extrai somente o arquivo etc/pam.conf do pacote etc_conf.tar.gz, descompactando o arquivo no


diretório corrente de execução do programa.

Importante:
Note que o comando tar por default, retira a “/” de todos os arquivos que está inserindo no
pacote. Este procedimento serve para que você ao restaurar o arquivo, ele sempre fique abaixo do
diretório de execução do programa, exceto se você utilizar o parâmetro -C <dir>, conforme os
exemplos aplicados.

6.2 Os Compressores de arquivos compress, uncompress, gzip, gunzip,


bzip2 e bunzip2.

Os compressores de arquivos não fazem o empacotamento de arquivos, eles somente compactam


arquivo por arquivo e descompactam da mesma forma. A funcionalidade de empacotar e
desempacotar, somente é realizada associando estes programas com o programa tar, conforme
exemplificado anteriormente.

Vejamos os detalhes dos compressores:

ADMINISTRAÇÃO GNU/LINUX - 92/253


Treinamento em Software Livre

compress Compacta um ou mais arquivos, utilizando o algoritmo Lempel-Ziv.


uncompress Descompacta um ou mais arquivos, compactados pelo comando compress.
gzip Compacta um ou mais arquivos.
gunzip Descompacta um ou mais arquivos comprimidos pelo gzip ou compress.
bzip2 Compacta um ou mais arquivos, com taxa de compressão melhorada.
bunzip2 Descompacta um ou mais arquivos, comprimidos pelo bzip2

Dica!
É possível visualizar um arquivo comprimido, sem no entanto descompactá-lo diretamente. Este
procedimento pode ser feito pelos programas:
zcat Igual ao comando cat, porém para arquivos comprimidos com gzip ou compress.
zless Igual ao comando less, porém para arquivos comprimidos com gzip ou compress.
zmore Igual ao comando more, porém para arquivos comprimidos com gzip ou compress.
bz2cat Igual ao comando cat, porém para arquivos comprimidos com o bzip2.

ADMINISTRAÇÃO GNU/LINUX - 93/253


Treinamento em Software Livre

ADMINISTRAÇÃO GNU/LINUX - 94/253


Treinamento em Software Livre

7 PROGRAMAÇÃO BÁSICA EM SHELL SCRIPT

Decorrente da complexidade dos interpretadores de comando e também pela grande quantidade


de comandos e opções disponíveis, não há como abranger neste treinamento, todas as
funcionalidades da programação em Shell Script.

Para aqueles que desejam se aprofundar na programação em Shell Script é recomendável a leitura
do livro: Programação Shell Script, do Júlio Neves, da Editora Brasport Livros e Multimídia Ltda.
Entretanto, as informações que serão apresentadas, liberam grandes possibilidades de
programação no ambiente Shell bash, onde as principais estruturas de controle e comandos
adicionais, serão apresentadas.

É importante também que o leitor procure conhecer mais sobre as expressões regulares. Estas
expressões são muito utilizadas e aceitas por diversos comandos do ambiente Shell,
principalmente pelos comandos Sed, Awk, grep, dentre outros.

7.1 Shell Scripts

Shell scripts nada mais são que arquivos que contém uma seqüência de comandos para execução
seqüencial pelo Shell. Como o tipo de interpretador de comandos que iremos descrever será o
bash, a primeira linha de um arquivo de Shell script deverá conter a seguinte seqüência:

#!/bin/bash

Os arquivos do tipo Shell scripts precisam também possuir a permissão de execução, no mínimo
para o usuário dono do arquivo. Esta permissão pode ser concedida pelo comando abaixo:

#chmod u+x <arquivo_shell_script>

Nunca é demais lembrar que, para o Shell ao executar o seu arquivo de Shell script, ele precisa
estar contido dentro dos diretórios da variável PATH, caso contrário você terá que informar o
caminho completo até o arquivo. Se estiver posicionado no mesmo diretório onde reside seu Shell
script para sua execução basta informar #./<arquivo_shell_script>.

7.2 Proteção de Caracteres Especiais (Quoting)

A flexibilidade da programação Shell é tanta que se faz necessário o entendimento de certos


conceitos referentes à proteção dos caracteres especiais e palavras reservadas do ambiente
Shell.

A funcionalidade de Quoting é evitar a substituição de variáveis ou então remoção do significado


dos caracteres especiais e palavras reservadas, tudo para permitir que estes sejam utilizados
literalmente.

Os caracteres ' (aspas simples), “ (aspas duplas) e \ (contra-barra) são utilizados para a função

ADMINISTRAÇÃO GNU/LINUX - 95/253


Treinamento em Software Livre

de proteção de caracteres especiais (Quoting).

Regras básicas:

➢ Qualquer string entre aspas simples ( ' ) é considerada literalmente, mas não é
permitido a substituição de parâmetros;
➢ Qualquer string entre aspas duplas ( “ ) é considerada literalmente e a substituição de
parâmetros é permitida;
➢ Qualquer caracter depois da contra-barra ( \ ) é considerado literalmente. Ele protege
o caracter seguinte;
➢ Nunca confundir aspas simples ( ' ) com a crase ( ` ).

Exemplos:

# echo $PATH
/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11

# echo '$PATH'
$PATH

# export PS1=`uname -n`'$PWD'\\$


micro1/tmp#

# echo O Valor da Variável \$TERM é $TERM


O Valor da Variável $TERM é xterm

# echo "Você possui `ls -l | wc -l` arquivos em `pwd`"


Você possui 10 arquivos em /tmp

7.3 Formas de Execução de Comandos

A forma de execução de comandos no bash também possui suas características. Vejamos abaixo as
seguintes formas de executar comandos:

;\ Executa múltiplos comandos e linhas separadas. O caracter especial “\” permite que
se adicione comandos em várias linhas.

Exemplo:

# cd /var/log ;\
ls -lrt ;\
tail -f auth.log

comando & Executa um comando e o coloca em segundo plano (background).

Exemplo:

ADMINISTRAÇÃO GNU/LINUX - 96/253


Treinamento em Software Livre

# >mount -a &
[1] 8503 --> Número do processo que foi gerado em background
[1] Done mount -a --> Informa que o processo em background com Id [1] encerrou.

comando1 ; comando2 Executa dois comandos em seqüência e na mesma linha.

Exemplo:

# cd /etc ; ls -la --> Vai para o diretório /etc e executa o comando ls -la.
# echo Ola $USER, hoje é `date` ; echo Veja o calendário abaixo: ; cal

Ola root, hoje é Sáb Abr 15 15:45:59 BRT 2006


Veja o calendário abaixo:
Abril 2006
Do Se Te Qu Qu Se Sá
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

comando1 `comando2` --> Substituição de comandos. Esta sintaxe utiliza a saída do comando2
como entrada de parâmetros para comando1

Exemplo:

# kill -9 `lsof -t -u tux`

Este comando irá encerrar todos os processos do usuário tux no sistema.

comando1 | comando2 --> Canaliza a saída do comando1 como entrada do comando2.

Exemplo:

#ls -l /etc/*.conf | wc -l

Este comando informa o número de arquivos com a extensão .conf no diretório /etc.

comando1 && comando2 --> Executa comando2 se o comando1 for bem-sucedido.

Exemplo:
# df -h && du -hs /etc

Apresenta a utilização dos discos no sistema e o total de espaço utilizado pelo diretório
/etc.

ADMINISTRAÇÃO GNU/LINUX - 97/253


Treinamento em Software Livre

comando1 || comando2 --> Executa comando2 se o comando1 falhar (um ou outro).

Exemplo:

# cat password || cat passwd | wc -l

O comando cat password irá falhar, logo o segundo comando será executado.

7.4 Operadores

Os operadores lógicos são utilizados em qualquer linguagem de programação, inclusive na


programação Shell script. Abaixo estão listados os operadores lógicos e aritméticos usados pelo
Shell, pela ordem decrescente de precedência:

! , ~ Negação lógica, complemento de 1 (usado em operações binárias);


* , / , % Multiplicação, Divisão, módulo (resto da divisão);
+ , - Adição, Subtração;
<< , >> Deslocamento de bit à esquerda e deslocamento de bit à direita;
<= , >= Menor ou igual, Maior ou igual;
< , > Menor que, Maior que;
== , != Igualdade, Desigualdade;
& E (AND), utilizado para operações binárias;
^ OU Exclusivo (exclusive OR), usado em operações binárias;
| OU (OR), utilizado em operações binárias;
&& E (AND) lógico;
|| OU (OR) lógico;
= Atribuição de valor.

7.5 Variáveis Especiais

A implementação do Shell bash, libera algumas variáveis especiais que são pré-definidas quando
ele é iniciado, permitido grande flexibilidade na programação, inclusive a passagem de parâmetros.

Variáveis do Shell:

$# Informa o número de parâmetros passados ao script Shell;


$- Opções fornecidas pelo Shell;
$? Informa o valor de retorno do último comando executado pelo script Shell;
$$ Informa o número do processo (PID) do script Shell em execução;
$! Número do último processo (PID) executado em background;
$n Valor do parâmetro passado ao Shell, n=1, até 9, da esquerda para a direita;
$0 Nome do programa ou Shell em execução;
$* Informa todos os parâmetros passados ao script, separados por espaços em branco;
$@ Igual à variável anterior $*.

ADMINISTRAÇÃO GNU/LINUX - 98/253


Treinamento em Software Livre

7.6 Estruturas de Programação Shell

7.6.1 Comando Read

Sintaxe:

read [-ers] [-u fd] [-t timeout] [-p prompt] [-a array] [-n nchars] [-d delim] [name ...]

Onde:
-t <segundos> Timeout para a entrada de dados, em segundos;
-p <prompt> Prompt a ser apresentado na digitação dos dados;
-n <número_caract> Número de caracteres que serão lidos pelo comando;
-d <delimitador> Caractere delimitador. Read lê entrada até encontrar o delimitador;
name <nome_camp> Nome da variável que guardará os valores lidos pelo read.

Exemplo:
#!/bin/bash
#
echo -n "Entre com Nome e Sobrenome: "
read NOME SOBRENOME
echo "Olá $NOME ! seu Sobrenome é: $SOBRENOME"

7.6.2 Comando let

Sintaxe:
let <expressão> --> Faz expressões aritméticas com números inteiros.

Exemplo:
#!/bin/bash
#
clear
echo -n "Entre com dois números inteiros: "
read A B
let C=0; let D=0
let C=A+B
let D=A*B
echo "A soma deles é: $C, seu produto é: $D"

7.6.3 Comando test

ADMINISTRAÇÃO GNU/LINUX - 99/253


Treinamento em Software Livre

Sintaxe:

test <expressão> ou
[ <expressão> ] --> Avalia a expressão e, se o valor for verdadeiro, retorna o código de saída
em $? igual a zero, senão retorna o código de saída diferente de zero. Veja também os
operadores utilizados pelo comando test.

Operador Interpretação (para arquivos ou expressões lógicas)


-b dispositivo de bloco (disco);
-c dispositivo de caractere (terminal);
-d diretório;
-e existe;
-f arquivo comum;
-g possui o bit set group id (SGID) ativado;
-k possui o sticky bit ligado;
-L link simbólico;
-p pipe;
-r possível ler o arquivo;
-s tamanho é maior que zero;
-S soquete;
-u possui o bit set user id (SUID) ativado;
-w possível gravar no arquivo;
-x possível executar o arquivo;
-O proprietário do EUID;
-G proprietário do EGID;
arq1 -nt arq2 arq1 é mais novo que arq2;
arq1 -ot arq2 arq1 é mais velho que arq2;
arq1 -ef arq2 arq1 é link absoluto para arq2;
-z string string de tamanho zero;
-n string string de tamanho maior que zero;
string1 = string2 as strings são iguais;
string 1 != string2 as strings são diferentes;
!expressão nega a expressão, ou também a expressão é falsa;
exp1 -a exp2 exp1 AND exp2;
exp1 -o exp2 exp1 OR exp2;
arg1 -eq arg2 argumento1 é igual ao argumento2;
arg1 -ne arg2 argumentos são diferentes;
arg1 -lt arg2 argumento1 é menor que argumento2
arg1 -gt arg2 argumento1 é maior que argumento2
arg1 -ge arg2 argumento1 é maior ou igual ao argumento2
arg1 -le arg2 argumento1 é menor ou igual ao argumento2

Exemplos:

# test -x /usr/sbin/nmbd -a -x /usr/sbin/smbd || exit 0

Verifica se ambos (AND) os daemon do samba são executáveis. Esta comparação toda é o

ADMINISTRAÇÃO GNU/LINUX - 100/253


Treinamento em Software Livre

primeiro comando, executada com sucesso, logo o comando exit 0 não será executado.

[ "$TBACKUP" = DIFERENCIAL ] &&\


find $DBACKUP -mtime -$DIF |tar -cjvf $STODEV -T - \
1> /var/log/backup_dif_`date +%Y%d%m%k%M%S` \
2>/var/log/backup_dif_`date +%Y%d%m%k%M%S` & TPID=$!

Verifica se o conteúdo da variável $TBACKUP é DIFERENCIAL e caso positivo executa o


comando find, buscando os diretórios/arquivos contidos na variável $DBACKUP, com o parâmetro
mtime -$DIF, onde a variável $DIF informa quantas horas atrás os arquivos foram modificados,
o default é 24 horas, ou seja, busca arquivos alterados nas últimas 24 horas.

O resultado do comando find é passado ao comando tar para criar um pacote de arquivos em
$STODEV (pode ser arquivo ou fita magnética), com compressão bzip2. O parâmetro -T-
informa ao tar para pegar os arquivos da entrada padrão, que é na verdade a saída do comando
find.

Tanto a saída padrão do tar, quanto sua saída de erros, irão gerar um log no diretório /var/log
indicando no nome do arquivo o ano, dia, mês, hora, minuto e segundo. Todo o comando será
executado em background e seu PID será armazenado na variável $TPID.

7.6.4 Comando if

Abaixo veremos o comando if que é utilizado para testes condicionais.

Sintaxe:
if <expressão1>
then
lista de comandos 1
elif <expressão2>
then
lista de comandos 2
else
outros comandos
fi
Exemplo:
#!/bin/bash
#
if [ $# -ge 2 ]
then
echo $2
elif [ $# -eq 1 ]
then
echo $1
else
echo “Nenhum parâmetro!”
fi

ADMINISTRAÇÃO GNU/LINUX - 101/253


Treinamento em Software Livre

7.6.5 Comando case

Executa comandos da entrada do case na qual a variável valor é igual a um dos parâmetros
passados, onde são comparados como padrões, padrão1, padrão2, ...,. Se nenhum valor for
coincidente com os valores esperados, o case executará os comandos da entrada definida com o
padrão *.

Sintaxe:

case <valor> in
padrão1)
comandos 1;;
padrão2)
comandos 2;;
*)
outros
comandos;;
esac

Exemplos:

case "$1" in
start)
echo -n "Iniciando Samba daemons:"
echo -n " nmbd"
start-stop-daemon --start --quiet --exec /usr/sbin/nmbd -- -D;;
stop)
echo -n "Parando o Samba daemons: "
start-stop-daemon --stop --quiet --pidfile $NMBDPID;;
*)
echo "Uso: /etc/init.d/samba {start|stop|reload|restart|force-reload}"
exit 1
;;
esac

7.6.6 Comando for

Executa uma interação do laço de controle para cada elemento da “lista_de_valores”. A cada
iteração, “variável” assume o valor de um elemento de “lista_de_valores”.

Sintaxe:
for <variável> in <lista_de_valores>
do
lista de comandos
done

ADMINISTRAÇÃO GNU/LINUX - 102/253


Treinamento em Software Livre

Exemplos:

#!/bin/bash
#
clear
for i in 1 2 3 4 5
do
echo "Valor de i=$i"
done

7.6.7 Comando while

Este comando executa os comandos dentro do laço enquanto a <expressão> for verdadeira.

Sintaxe:

while <expressão>
do
lista de comandos
done

Exemplo:

#!/bin/bash
#
clear
let cont=0
while [ $# -gt 0 ]
do
echo "Parâmetros passados = $1"
shift
let cont=cont+1
done
if [ $cont -eq 0 ]
then
echo "você não digitou parâmetros..."
exit 1
else
echo "você digitou $cont parâmetros."
fi
exit

ADMINISTRAÇÃO GNU/LINUX - 103/253


Treinamento em Software Livre

7.6.8 Comando shift

Tecnicamente não há limitação no número de parâmetros a serem passados, via linha de comandos,
para os Shell scripts. Entretanto, somente conseguimos ler diretamente as variáveis de $1 até $9.
Não existe a variável $10.

Para resolver este pequeno problema há o comando shift, o qual faz o deslocamento de todos os
parâmetros em $*, para a esquerda em n posições e decrementa a variável $# em n. O valor
default para n é 1.

Sintaxe:

Shift [n] --> Desloca n parâmetros para a esquerda, atualizando as variáveis


especiais $* e $#.

Exemplo:
#!/bin/bash
#
clear
args=$*
echo "Foram passados $# parâmetros"
echo "Eles foram: $*"
shift 2
echo "Agora existem $# parâmetros"
echo "Eles são: $*"
echo "Os parâmetros iniciais eram: $args"

7.6.9 Comando trap

Executa um comando ao receber um sinal. É um comando muito importante para controlar


ambiente de usuários, caso você deseje criar um sub-shell específico, onde somente alguns
comandos ou programas podem ser executados.

Sintaxe:

trap '<comando1>;<comando2>;..<comandoN>' <sinal 1> <sinal 2> ...<sinal n>

Sinais Descrição
0 Saída normal do programa;
1 Equivale ao comando kill -HUP;
2 Interrompe o processo, enviado via teclas <ctrl> + <c>;
9 Interrompe o processo incondicionalmente. Trap não trata este sinal;
15 Encerra o processo de forma correta. Equivale ao comando kill pid_processo;
18 Coloca o processo em background, enviado via teclas <ctrl> + <z>.

ADMINISTRAÇÃO GNU/LINUX - 104/253


Treinamento em Software Livre

Exemplo:

#!/bin/bash
#
clear
trap 'echo Você digitou Ctrl-C ; exit;' 2
trap 'echo Você digitou Ctrl-Z; exit;' 18
trap 'echo Processo saindo por -HUP ; exit;' 1
trap 'echo Processo saindo por Kill; exit;' 15
trap 'echo Processo saindo pelas próprias pernas (exit 0); exit;' 0
while true
do
echo "Ainda estou no ar..$$ "
sleep 3
done

7.6.10 Comando exit

Este comando possui a finalidade de encerrar a execução do Shell script. Se não for especificado
um código de saída, ele será o mesmo do último comando executado imediatamente antes do
comando exit.

Para informar um erro ocorrido num determinado procedimento, onde tenha que encerrar então o
script, informe um número maior que zero. Tipicamente um código de erro igual a 1 (um) já
informa erro de execução.

Sintaxe:

exit [n]

Exemplo:

Veja o exemplo anterior do comando while

7.6.11 Comando return

Retorna de uma função dentro do Shell script. Deverá ser informado o seu código de saída, caso
contrário será o mesmo do último comando executado dentro da função.

Sintaxe:

return [n]

ADMINISTRAÇÃO GNU/LINUX - 105/253


Treinamento em Software Livre

7.6.12 Comando break

Encerra um laço, do tipo while, until ou for, após n iterações. O padrão para n é 1.

Sintaxe:

break [n]

7.6.13 Comando continue

Interrompe a iteração atual de um laço e salta para a n-ésima iteração. O padrão para n é 1.

Sintaxe:

continue [n]

7.6.14 Declaração function

Esta declaração permite ao programador em Shell script elaborar uma função dentro do seu
arquivo. A função declarada funciona da mesma forma que uma função em outra linguagem de
programação.

Sintaxe:

function <nome_função> ()
{ comandos }
ou
<nome_função> () { comando }

Exemplo:

#!/bin/bash
#
#
function fatorial () {
let A=1
num=$N
while [ $N -gt 0 ]
do
let A=A*N
let N=N-1
done
echo "Fatorial de $num = " $A
}

ADMINISTRAÇÃO GNU/LINUX - 106/253


Treinamento em Software Livre

clear
echo -n "Entre com um número inteiro: "
read N
if [ x"$N" == "x" ]
then
let N=0
fi
echo `fatorial $N`
exit

7.6.15 Comando cut

Comando do Shell para cortar fluxos de texto, conforme suas opções.

Sintaxe:

cut <opções> <arquivo>

Opções mais utilizadas:


-d <delimitador> Informa ao cut qual é o delimitador de campo;
-f <número_campo>Imprime o campo informado, conforme o delimitador especificado;
-b <número_bytes> Imprime a quantidade de bytes conforme o número_bytes;

Exemplos:

#cat /etc/passwd | cut -d : -f 1 --> Imprime os usuários cadastrados localmente;


#cat /etc/group | cut -d : -f 1 --> Imprime os grupos de usuários. Grupos locais;

7.6.16 Comando tput

O comando tput é utilizado para posicionamento do cursor de entrada dos terminais. Ele também
possui outras funcionalidades mais avançadas, como por exemplo, setar o terminal para imprimir os
caracteres em negrito e informar o número de linhas do terminal.

Exemplos:

# tput bold Imprime os caracteres em modo bold (negrito);


# tput cup 22 20 Posiciona o cursos na linha 22 e coluna 20 do terminal;
# tput cols Informa o número de colunas do terminal;
# tput reset Inicializa o terminal com seus valores defaults;
# tput clear Limpa a tela do terminal;

#!/bin/bash
#
clear

ADMINISTRAÇÃO GNU/LINUX - 107/253


Treinamento em Software Livre

tput bold
tput cup 20 20 ; echo Sistema de Cadastro Nome-Telefone
tput cup 22 20 ; echo [ 1 ] Consulta
tput cup 23 20 ; echo [ 2 ] Altera
tput cup 23 35 ; echo -n "Opção [ ]"
tput cup 23 43 ; read -n 1 opc
tput cup 23 50 ; echo Escolhi a opção: $opc

7.6.17 Comando sed

O sed (stream editor) é um editor de textos simples que executa procura, substituição, inserção e
eliminação de caracteres, oriundos de arquivos textos ou de qualquer outra fonte de stream de
textos, como uma simples variável de ambiente.

O sed não transforma os arquivos originais, pois ele recebe o stream de textos da entrada
padrão, realiza o processamento e então devolve os resultados para a saída padrão. Se houver
necessidade de gravar estas alterações, basta redirecionar a saída do comando, através do
direcionador “>”, para um arquivo em disco.

Sintaxe:

sed [opções] {script} {arquivos}

Exemplos:

# sed 's/tux/pinguim/g' /etc/passwd --> Troca tux por pinguim em todo arquivo passwd;
# sed 's/bash/csh/g' /etc/passwd --> Troca a palavra bash por csh em todo arquivo passwd;
# sed 's/\/usr\/local\/bin/\/usr\/bin/' texto.txt --> Troca /usr/local/bin por /usr/bin em
texto.txt;
# sed '3,5d' arq.txt --> Deleta as linhas 3,4,5 do arquivo arq.txt
# sed '8,10!d' arq.txt --> Deleta todas as linhas, exceto as linhas 8, 9 e 10 de arq.txt;
#sed '/Maria/,/João/d` arq.txt --> Deleta as linhas entre Maria e João, do arquivo arq.txt;

O comando sed trabalha muito com expressões regulares. Abaixo temos uma tabela com as
expressões mais utilizadas.

Tabela de Expressões Regulares Básicas


Símbolo Descrição
' Aspas simples são utilizadas para delimitar o texto dentro delas como
caracteres literais, não interpretando nenhum caractere como metacaractere.
“ Aspas duplas são utilizadas para delimitar o texto dentro delas como
caracteres literais, exceto os caracteres $ e \.
\ Contra-barra é utilizada para informar que o caractere imediatamente
posterior deve ser considerado como literal.
^ O acento circunflexo é usado para indicar o início de uma linha.
$ O cifrão (dólar) é usado para indicar o fim de uma linha.

ADMINISTRAÇÃO GNU/LINUX - 108/253


Treinamento em Software Livre

Símbolo Descrição
[a-z] Indica que o intervalo de caracteres, de a até z são válidos.
[0-9] Indica que qualquer número de 0 à 9 são válidos para a pesquisa.
[^abc] Qualquer caracter, menos a, b ou c são válidos para a busca.
/texto/ Indica que texto procurado deverá estar entre espaços.
. O ponto decimal indica qualquer caracter menos uma linha em branco.
Adaptada do livro Certificação Linux, de Uirá Ribeiro, Edição 2004, Editora Excel, páginas 105 e 106.

7.6.18 Comando awk

O awk na verdade é uma linguagem de programação. Entretanto, sua utilização na forma simples
auxilia muito no tratamento de campos de dados. É mais eficiente que o comando cut. Vejamos
alguns exemplos:

# cat /etc/passwd | awk -F : '{print $1}' --> Imprime a primeira coluna do arquivo passwd;
# cat /etc/passwd | awk -F : '{print $1 “ “ $5}' --> Imprime a primeira e a quinta colunas;
# awk -F : '$3 >= 1000 {print $1}' /etc/passwd --> Imprime usuários com UID >= 1000;
# echo 10.112.5.32 | awk -F . '{print $4 “.” $3 “.” $2 “.” $1}' --> Imprime o IP Reverso.

Desafio 1:
Elabore um script em Shell que permita incluir, excluir, consultar e alterar um registro
contendo nome e telefone de uma pessoa.

Desafio 2: Crie um usuário local no sistema com nome cadastro e coloque o script anterior
como seu único Shell de execução, não permitindo que o usuário cancele o script e, se ele o
fizer, o sistema fará o seu logout.

ADMINISTRAÇÃO GNU/LINUX - 109/253


Treinamento em Software Livre

ADMINISTRAÇÃO GNU/LINUX - 110/253


Treinamento em Software Livre

8 GERENCIAMENTO DE PACOTES (.deb e .rpm)

Um programa é constituído por vários arquivos, incluindo: aplicativos, arquivos de configuração,


bibliotecas, imagens e documentos. O processo natural de instalação de um programa consiste
então em 3 etapas:

➢ Compilação: Compilar significa transformar o código-fonte de um programa em arquivos


binários, isto é, que podem ser executados e utilizados pelo sistema operacional.

➢ Cópia: Uma vez compilados, os arquivos precisam ser copiados para os diretórios corretos,
para poder funcionar adequadamente. Nesse processo, alguns diretórios precisam ser
criados, eventualmente.

➢ Configuração: Depois de compilar e copiar, é necessário configurar o programa e o sistema


operacional, para que não hajam conflitos e tudo possa funcionar corretamente.

O processo natural não é nem um pouco animador. Instalar todos os programas do sistema
operacional seguindo esse método leva muito tempo, e a chance de ocorrer algum erro é muito
grande. Pensando nisso, os mantenedores dos pacotes de cada distribuição fazem por você o
processo de compilação e configuração dos programas, e juntam tudo em um só arquivo, chamado
pacote. Esse pacote, será interpretado pela ferramenta de gerenciamento de pacotes, que o
instalará automaticamente, com apenas um comando. Abaixo, encontra-se a listagem dos tipos de
pacotes e seus respectivos gerenciadores de algumas distribuições comentadas anteriormente:

Distribuição Tipo de Pacote Gerenciador


SuSe RPM YaST
Red Hat RPM APT, YUM
Fedora RPM APT, YUM
Slackware TGZ pkgtool
Debian DEB APT

8.1 Gerenciando Pacotes .deb

O Debian utiliza o formato DEB para os seus pacotes pré-compilados. Muitos pacotes (mais de
12.000) são mantidos pela equipe de desenvolvedores Debian, e encontram-se disponíveis em
diversos repositórios oficiais espalhados ao redor do mundo. Programas que não possuem pacotes
DEB devem ser instalados a partir do código-fonte. É possível gerar pacotes DEB manualmente
através da ferramenta dpkg-deb ou através de utilitários que automatizam essa tarefa, como o
checkinstall. Os nomes dos pacotes são geralmente formados da seguinte forma:

[foo]_[versão]-[revisão]_[arquitetura].deb

Onde:

ADMINISTRAÇÃO GNU/LINUX - 111/253


Treinamento em Software Livre

➢ foo : Nome dado ao pacote;


➢ versão : A versão do pacote;
➢ revisão : Muitas vezes o mantenedor pode fazer alterações na mesma versão de um
pacote. Nesses casos, são lançadas as revisões, como em 2.2-1, 2.2-2, 2.2-3, onde todos
são pacotes da versão 2.2, mas de revisões diferentes;
➢ arquitetura : A arquitetura de hardware para a qual o pacote foi compilado.

Alguns exemplos de nomes de pacotes:

➢ ladccad_0.4.0-4_i386.deb
➢ inkscape_0.41-2_i386.deb
➢ rsync_2.6.4-6_i386.deb
➢ mysql-server-4.1_4.1.11a-4_i386.deb
➢ openoffice.org-bin_1.1.3-9_i386.deb

8.2 Ferramentas Para Gerenciamento de Pacotes

8.2.1 dpkg

O dpkg é o principal programa de gerenciamento de pacotes do Debian. Todas as outras


ferramentas utilizam-no para instalar, remover e configurar os pacotes no sistema. A sintaxe de
uso do dpkg é a seguinte:

dpkg <opções> <arquivo/pacote>

Algumas opções são usadas com o nome do pacote, outras são usadas com o nome do arquivo .deb.
As principais são:

➢ --info: Exibe as informações sobre o pacote especificado, tais como descrição, versão,
dependências, mantenedor, etc.
➢ -i, --install: Instala o pacote no sistema, desde que ele não possua nenhuma dependência
não resolvida.
➢ --unpack: Apenas extrai os arquivos do pacote, copiando-os para os locais corretos, mas
não faz a configuração. Isso pode deixar o programa não utilizável, pois ele pode precisar
ser configurado, o que, nesse caso, não é feito.
➢ --configure: Configura o pacote desempacotado através do –unpack.
➢ -r, --remove: Remove um pacote, mantendo os arquivos de configuração. A importância
de se manter os arquivos de configuração é que, no caso da reinstalação do pacote, as
configurações não serão perdidas, permitindo usar o programa como se ele nunca tivesse
sido removido.
➢ --purge: Remove um pacote e também os seus arquivos de configuração. Só use essa
opção quando tiver certeza de que deseja acabar com qualquer vestígio do pacote em
questão, geralmente quando ele realmente não for mais necessário;
➢ -l, --list: Lista o estado de instalação do pacote. Útil para saber se um pacote está
instalado, ou se apresenta algum problema, como dependências quebradas ou se está
desconfigurado;
➢ --get-selections [arquivo]: Grava no arquivo uma lista com os pacotes do sistema, bem

ADMINISTRAÇÃO GNU/LINUX - 112/253


Treinamento em Software Livre

como o seu estado;


➢ -L, --list-files: Exibe os arquivos instalados pelo pacote selecionado;
➢ -S, --search [padrão]: Procura na lista de arquivos dos pacotes pelo padrão informado.
Esse comando é equivalente a --L | grep [padrão];
➢ -s : Exibe o status do pacote selecionado.

Exemplos:

$ dpkg -i opera_8.01-20050615.5-shared-qt_en_sarge_i386.deb
Selecionando pacote previamente não selecionado opera.
(Lendo banco de dados ... 91345 arquivos e diretórios atualmente instalados.)
Descompactando opera (de opera_8.01-20050615.5-shared-qt_en_sarge_i386.deb) ...
Instalando opera (8.01-20050615.5) ...
Instala o pacote do navegador Opera no sistema operacional.
$ dpkg --info opera_8.01-20050615.5-shared-qt_en_sarge_i386.deb
novo pacote debian, versão 2.0.
tamanho 4257754 bytes: arquivo de controle= 4241 bytes.
34 bytes, 2 linhas conffiles
826 bytes, 20 linhas control
5932 bytes, 85 linhas md5sums
1654 bytes, 55 linhas * postinst #!/bin/sh
1068 bytes, 38 linhas * postrm #!/bin/sh
1011 bytes, 40 linhas * prerm #!/bin/sh
Package: opera
Version: 8.01-20050615.5
Section: non-free/web
Priority: optional
Architecture: i386
Depends: libc6 (>= 2.1.3), xlib6g (>= 3.3.6) | xlibs, libqt3c102-mt
Recommends: libmotif (>= 2) | lesstif2, libaspell15
Conflicts: opera-static
Replaces: opera-static
Provides: opera-static, www-browser
Installed-Size: 9508
Maintainer: Christian Westgaard <christian.westgaard@opera.com>
Description: The Opera Web Browser
Welcome to the Opera Web browser. It is smaller, faster,
customizable, powerful, yet user-friendly. Opera eliminates
sluggish performance, HTML standard violations, desktop
domination, and instability. This robust Web browser lets you
navigate the Web at incredible speed and offers you the best
Internet experience.
The binaries were built on a RedHat-9.0 (shrike) installation using gcc-3.2.2.
Exibe as informações do pacote do navegador Opera.

$ dpkg -r opera
(Lendo banco de dados ... 91447 arquivos e diretórios atualmente instalados.)
Removendo opera ...
Remove o programa do sistema operacional.

ADMINISTRAÇÃO GNU/LINUX - 113/253


Treinamento em Software Livre

$ dpkg --purge opera


(Lendo banco de dados ... 91447 arquivos e diretórios atualmente instalados.)
Removendo opera ...
Apagando arquivos de configuração de opera ...
Remove o programa e todos os seus arquivos de configuração.

$ dpkg -l dnsutils
Desejado=U=Desconhecido/Instalar/Remover/aPagar/H=Manter
| status=Não/Instalado/arquiv.-Config./U=Descomp./Falhou-config/H=semi-inst.
|/ Erro?=(nenhum)/H=Mantido/precisa-Reinst./X=os dois problemas (status,Erro:
maiúsculas=ruim)
||/ Nome Versão Descrição
+++-===============-==============-==============================
||/ Nome Versão Descrição
+++=============================================================
ii dnsutils 9.2.4-1 Clients provided with BIND
Lista o estado do pacote dnsutils.

$ dpkg -l |less
Desejado=U=Desconhecido/Instalar/Remover/aPagar/H=Manter
| status=Não/Instalado/arquiv.-Config./U=Descomp./Falhou-config/H=semi-inst.
|/ Erro?=(nenhum)/H=Mantido/precisa-Reinst./X=os dois problemas (status,Erro:
maiúsculas=ruim)
||/ Nome Versão Descrição
+++-===============-==============-=====================================
||/ Nome Versão Descrição
+++-==============-=====================================================
ii aalib1 1.4p5-22 ascii art library
ii adduser 3.63 Add and remove users and groups
ii akode 3.3.2-1 akode arts plugin
ii apache2-common 2.0.54-4 next generation, scalable, extendable web se
ii apache2-mpm-pr 2.0.54-4 traditional model for Apache2
ii apache2-utils 2.0.54-4 utility programs for webservers
ii apt 0.5.28.6 Advanced front-end for dpkg
ii apt-utils 0.5.28.6 APT utility programs
ii aptitude 0.2.15.9-2 terminal-based apt frontend
ii ardour-doc 0.9beta28-1 Ardour documentation
ii ardour-gtk 0.9beta28-1 digital audio workstation (graphical gtk int
ii ardour-session 0.9beta28-1 Ardour session collaboration tool
ii ark 3.3.2-1 KDE archiving tool
ii arts 1.3.2-3 Analog Realtime Synthesizer (aRts) metapacka
ii artsbuilder 3.3.2-1 Arts synthesizer designer
ii at 3.1.8-11 Delayed job execution and batch processing
ii avidemux 2.0.40-0.0 a small editing software for avi (especially
ii base-config 2.53.10 Debian base System configurator
ii base-files 3.1.2 Debian base System miscellaneous files
ii base-passwd 3.5.9 Debian base System master password and group
ii bash 2.05b-26 The GNU Bourne Again SHell

ADMINISTRAÇÃO GNU/LINUX - 114/253


Treinamento em Software Livre

ii bc 1.06-15 The GNU bc arbitrary precision calculator la


ii bin86 0.16.14-1.2 16-bit x86 assembler and loader
ii bind9-host 9.2.4-1 Version of 'host' bundled with BIND 9.X
ii binutils 2.15-6 The GNU assembler, linker and binary utiliti
ii bison 1.875d-1 A parser generator that is compatible with Y
ii bittorrent 3.4.2-3sarge0. Scatter-gather Network file transfer
ii blop 0.2.8-1 Bandlimited wavetable-based oscillator plugi
:

Caso não seja passado o nome do pacote no uso a opção -l, o dpkg lista a situação de todos os
pacotes. Neste caso utilizou-se o direcionador | para que a listagem tenha quebra de página.

$ dpkg --get-selections > lista-pkg.txt

Utilizando o dpkg com esta opção, ele direcionará para o arquivo lista-pkg.txt, a listagem de todos
os pacotes instalados em seu sistema operacional, com seus respectivos estados de instalação.

$ dpkg --get-selections > lista-


pkg.txt

Utilizando o dpkg com esta opção, ele direcionará para o arquivo lista-pkg.txt, a listagem de todos
os pacotes instalados em seu sistema operacional, com seus respectivos estados de instalação.

Lista os arquivos instalados pelo pacote.


$ dpkg -L nerolinux
/.
/usr
/usr/bin
/usr/bin/nero
/usr/lib
/usr/lib/libCDCopy.so
/usr/lib/libNeroAPI.so
/usr/lib/libNeroASPI.so
/usr/lib/libNeroCDR.so
/usr/lib/libNeroErr.so
/usr/lib/libNeroSCSI.so
/usr/lib/libNewTrf.so
/usr/share
/usr/share/nero
/usr/share/nero/CDROM.CFG
/usr/share/nero/DosBootImage.ima
/usr/share/nero/Nero.txt
/usr/share/nero/desktop
/usr/share/nero/desktop/NeroLINUX.template
/usr/share/nero/docs
/usr/share/nero/docs/EULA
/usr/share/nero/docs/Manual.pdf
/usr/share/nero/libCDROM.so

ADMINISTRAÇÃO GNU/LINUX - 115/253


Treinamento em Software Livre

/usr/share/nero/libFATImporter.so
/usr/share/nero/libGenCueSheet.so
/usr/share/nero/libGenFAT.so
/usr/share/nero/libGenHFS.so
/usr/share/nero/libGenHyb.so
/usr/share/nero/libGenISO.so
/usr/share/nero/libGenUDF.so
/usr/share/nero/libGenerator.so
/usr/share/nero/libISOFS.so
/usr/share/nero/libImage.so
/usr/share/nero/libImageGen.so
/usr/share/nero/libMmc.so
/usr/share/nero/libNRPrimeraComposer.so
/usr/share/nero/libNeroRobo.so
/usr/share/nero/libUDFImporter.so
/usr/share/nero/pixmaps
/usr/share/nero/pixmaps/nero.png

Realiza uma pesquisa parecida com a do exemplo anterior.

$ dpkg -S nero
nerolinux: /usr/share/nero/libGenUDF.so
nerolinux: /usr/share/nero/docs/Manual.pdf
nerolinux: /usr/share/nero/libGenHFS.so
nerolinux: /usr/share/nero/pixmaps/nero.png
nerolinux: /usr/share/nero/desktop/NeroLINUX.template
nerolinux: /usr/bin/nero
nerolinux: /usr/share/nero/libMmc.so
nerolinux: /usr/share/nero/libNeroRobo.so
nerolinux: /usr/share/nero/DosBootImage.ima
kdebase-data: /usr/share/wallpapers/seaofconero.jpg
nerolinux: /usr/share/nero/libGenFAT.so
nerolinux: /usr/share/nero/libImage.so
nerolinux: /usr/share/nero/docs
nerolinux: /usr/share/nero/libNRPrimeraComposer.so
nerolinux: /usr/share/nero/libGenHyb.so
nerolinux: /usr/share/nero/libCDROM.so
nerolinux: /usr/share/nero/libImageGen.so
nerolinux: /usr/share/nero
nerolinux: /usr/share/nero/libGenCueSheet.so
nerolinux: /usr/share/nero/libGenerator.so
nerolinux: /usr/share/nero/libUDFImporter.so
nerolinux: /usr/share/nero/docs/EULA
nerolinux: /usr/share/nero/desktop
nerolinux: /usr/share/nero/libISOFS.so
nerolinux: /usr/share/nero/pixmaps
nerolinux: /usr/share/nero/Nero.txt
nerolinux: /usr/share/nero/libFATImporter.so

ADMINISTRAÇÃO GNU/LINUX - 116/253


Treinamento em Software Livre

nerolinux: /usr/share/nero/libGenISO.so
nerolinux: /usr/share/nero/CDROM.CFG

Exibe o estado do pacote.


$ dpkg -s opera
Package: opera
Status: install ok installed
Priority: optional
Section: non-free/web
Installed-Size: 9508
Maintainer: Christian Westgaard <christian.westgaard@opera.com>
Architecture: i386
Version: 8.01-20050615.5
Replaces: opera-static
Provides: opera-static, www-browser
Depends: libc6 (>= 2.1.3), xlib6g (>= 3.3.6) | xlibs, libqt3c102-mt
Recommends: libmotif (>= 2) | lesstif2, libaspell15
Conflicts: opera-static
Conffiles:
/etc/opera6rc 731c625736b38d6caf899c3c3b1cb490
/etc/opera6rc.fixed 9025d2d3e4549b0bf2c3ee3a65c3749a
Description: The Opera Web Browser
Welcome to the Opera Web browser. It is smaller, faster,
customizable, powerful, yet user-friendly. Opera eliminates
sluggish performance, HTML standard violations, desktop
domination, and instability. This robust Web browser lets you
navigate the Web at incredible speed and offers you the best
Internet experience.
The binaries were built on a RedHat-9.0 (shrike) installation using gcc-3.2.2.

8.2.2 APT

O APT (Advanced Packaging Tool) é uma avançada interface para o sistema de gerenciamento de
pacotes Debian, consistindo de vários programas cujos nomes tipicamente começam com 'apt-'.

O apt-get, apt-cache e o apt-cdrom são ferramentas de linha de comando para gerenciar pacotes.
Eles também funcionam como programas back-end para outras ferramentas, como o dselect e o
aptitude.

O APT trabalha procurando os pacotes nos repositórios Debian, baixando-os e instalando


automaticamente ao comando do usuário, resolvendo automaticamente dependências e conflitos.
Além de instalar, o APT também permite remover e pesquisar pacotes.

8.2.3 Configurando o APT

Para utilizar o APT é necessário, antes de mais nada, configurá-lo. A primeira coisa a ser fazer é
escolher um repositório de pacotes do Debian, de onde os pacotes serão baixados. Essa

ADMINISTRAÇÃO GNU/LINUX - 117/253


Treinamento em Software Livre

informação será adicionada no arquivo /etc/apt/sources.list. Neste arquivo ficam listadas as


fontes de pacotes do Debian, que podem ser:

➢ CD-ROM's do Debian
➢ repositórios FTP
➢ repositórios HTTP
➢ repositórios locais

Veja um exemplo de conteúdo do sources.list:

#deb cdrom:[Debian-BR-CDD GNU/Linux 1.0pre5 - Official i386 Binary-1]/ sarge main


#deb http://cdd.debian-br.org/debian-br-cdd 1.0 main
#deb http://debian-br-cdd.alioth.debian.org/debian 1.0 main

## Debian main distribution


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

## Security updates
deb http://security.debian.org/ sarge/updates main

deb http://download.unesp.br/linux/debian sarge main contrib non-free


deb cdrom:[Debian GNU/Linux 3.1 r1 _Sarge_ - Official i386 Binary-4 (20051220)]/ unstable
contrib main
deb cdrom:[Debian GNU/Linux 3.1 r1 _Sarge_ - Official i386 Binary-3 (20051220)]/ unstable
contrib main
deb cdrom:[Debian GNU/Linux 3.1 r1 _Sarge_ - Official i386 Binary-2 (20051220)]/ unstable
main
deb cdrom:[Debian GNU/Linux 3.1 r1 _Sarge_ - Official i386 Binary-1 (20051220)]/ unstable
contrib main

Cada uma das linhas corresponde a uma fonte utilizada pelo APT. As linhas comentadas com um #
não serão utilizadas. Cada linha é formada da seguinte forma:

<pacote> <URI> <distribuição> <seções>

Sendo:

➢ pacote: Os repositórios do Debian contém, além dos binários .deb, os fontes de alguns
pacotes, que podem ser baixados com o APT. Para configurar o APT para baixar os pacotes
.deb, colocamos deb, para baixar os fontes, colocamos deb-src.

➢ URI: A localização principal dos arquivos. O APT pode buscar pacotes de diversos locais,
utilizando os seguintes protocolos:

➢ file:/ - arquivos gravados localmente, no HD;


➢ cdrom:/ - CD-ROM oficial de alguma versão do Debian;
➢ http:// - servidor de arquivos HTTP (Internet);

ADMINISTRAÇÃO GNU/LINUX - 118/253


Treinamento em Software Livre

➢ ftp:// - servidor de arquivos FTP (Internet);


➢ copy:/ - o mesmo que o protocolo file:/, com a diferença de que os arquivos são
copiados para o diretório de cache, ao invés de serem usados diretamente a partir
de seu local original;
➢ rsh, ssh - pode-se ainda utilizar conexão a um computador remoto utilizando uma
conexão segura via SSH ou RSH;

➢ distribuição: Os pacotes do Debian são separados em categorias, de acordo com seu


estágio de estabilidade. Aqui, deve-se especificar qual categoria de pacotes se deseja
utilizar. As categorias são:

➢ stable: pacotes exaustivamente testados, considerados estáveis, porém antigos;


➢ testing: pacotes em fase de testes, mais recentes que os pacotes da stable;
➢ unstable: versão mais recente dos pacotes Debian;
➢ versões do Debian: existem ainda, as versões com os pacotes oficiais das versões
do Debian. Para acessá-las, basta utilizar o codinome das distribuições, como
woody, sarge ou sid;
➢ outras: existem muitos repositórios não-oficiais do Debian que utilizam outras
notações de distribuições.

➢ seções: Nos repositórios oficiais existem 3 seções de pacotes, a saber:


✔ main: seção principal, contendo somente pacotes de Software Livre;
✔ non-free: pacotes que não são Software Livre, porém gratuitos;
✔ contrib: pacotes que são Software Livre, mas que precisam de alguns pacotes da
seção non-free para funcionarem.

Assim, considere a seguinte linha:

deb ftp://ftp.br.debian.org/debian/ unstable main contrib non-free

Pode-se ver que ela configura o APT para baixar pacotes .deb. Se quiser configurar o APT para
baixar códigos-fontes, basta trocar deb por deb-src:

deb-src ftp://ftp.br.debian.org/debian/ unstable main contrib non-free

Neste caso, ele baixa pacotes da distribuição unstable. Se estiver utilizando o Debian num
servidor, é interessante baixar os pacotes da versão stable. Para isso, basta trocar unstable por
stable:

deb ftp://ftp.br.debian.org/debian/ stable main contrib non-free

O APT vai procurar pacotes em todas as seções, ou seja, main, contrib e non-free. Se você
desejar apenas Software Livre no seu sistema, vamos deixar apenas a seção main configurada,
removendo as seções non-free e contrib:

deb ftp://ftp.br.debian.org/debian/ stable main

ADMINISTRAÇÃO GNU/LINUX - 119/253


Treinamento em Software Livre

8.2.4 Adicionando um CD-ROM Debian no sources.list

Para utilizar pacotes de um CD-ROM Debian, utilizaremos a ferramenta apt-cdrom. Basta colocar
o CD contendo os pacotes Debian na unidade, e digitar o seguinte comando:

$ apt-cdrom add

O CD será analisado e, se forem achados pacotes Debian nele, será criada automaticamente uma
entrada no sources.list, como essa:

deb cdrom:[Debian GNU/Linux testing _Sarge_ - Official Snapshot i386 Binary-1 (20050226)]/
unstable contrib main

8.2.5 Adicionando um repositório remoto no sources.list

Um método muito útil de configurar as entradas do sources.list é através da ferramenta apt-


setup. Trata-se de uma interface que permite ao usuário adicionar novas entradas para o
sources.list de modo rápido e fácil.

O apt-setup oferece uma lista de repositório oficiais Debian, organizados por país. Pode-se
utilizar o apt-setup para adicionar CD-ROM's Debian e repositórios locais (protocolos file:/ e
copy:/) ao sources.list. Sua sintaxe é simples:

$ apt-setup

8.2.6 Atualizando a Lista de Pacotes

Uma vez configurado o sources.list, o APT já pode ser utilizado para baixar e instalar os pacotes.
A primeira coisa a se fazer é atualizar o APT, baixando a lista de pacotes disponíveis. Para isso,
usa-se o seguinte comando:

$ apt-get update
Atingido http://security.debian.org stable/updates/main Packages
Atingido http://security.debian.org stable/updates/main Release
Atingido http://security.debian.org stable/updates/contrib Packages
Atingido http://security.debian.org stable/updates/contrib Release
Atingido ftp://ftp.nerim.net stable/main Packages
Atingido ftp://ftp.nerim.net stable/main Release
Atingido ftp://ftp2.fr.postgresql.org sarge/pgadmin Packages
Atingido ftp://ftp2.fr.postgresql.org sarge/pgadmin Release
Atingido ftp://ftp.br.debian.org stable/main Packages
Atingido ftp://ftp.br.debian.org stable/main Release
Atingido ftp://ftp.br.debian.org stable/main Sources
Atingido ftp://ftp.br.debian.org stable/main Release
Lendo Lista de Pacotes... Pronto

ADMINISTRAÇÃO GNU/LINUX - 120/253


Treinamento em Software Livre

8.2.7 Instalando pacotes com o APT

Agora, pode-se instalar os pacotes facilmente, utilizando o apt-get, da seguinte forma:

$ apt-get install <pacotes>

Para instalar, por exemplo, o vncserver, utilizamos:

$ apt-get install vncserver


Lendo Lista de Pacotes... Pronto
Construindo Árvore de Dependências... Pronto
Os pacotes extra a seguir serão instalados:
vnc-common
Pacotes sugeridos :
xvncviewer vnc-java
Os NOVOS pacotes a seguir serão instalados:
vnc-common vncserver
0 pacotes atualizados, 2 pacotes novos instalados, 0 a serem removidos e 0 não atualizados.
É preciso fazer o download de 553kB de arquivos.
Depois de desempacotamento, 1303kB adicionais de espaço em disco serão usados.
Quer continuar? [S/n]

Nesse procedimento, o APT procura na lista de pacotes (gerada através do comando apt-get
update) pelo pacote vncserver. Uma vez encontrado, ele verifica se a versão disponível para
instalação é mais nova que a versão instalada. Se for, ele verifica se existem dependências, ou
seja, se existe algum pacote necessário para o vncserver funcionar. Se existir, ele insere esses
pacotes na lista de instalação. Depois disso, ele exibe a lista dos pacotes que serão instalados.

O APT ainda mostra uma lista de pacotes sugeridos. Os pacotes sugeridos são aqueles que
fornecem alguma funcionalidade extra ao pacote selecionado para instalação. Por fim, o APT exibe
a lista dos pacotes que serão instalados, e mostra o resumo da instalação, especificando quantos
pacotes serão instalados, atualizados, removidos e não atualizados, e qual o tamanho do download
que precisa ser feito.

Se algum pacote além dos que você especificou precisar ser instalado, o APT pedirá a confirmação
antes de iniciar a instalação. Para confirmar, digite s ou pressione Enter. Os pacotes são baixados
e instalados, automaticamente.

Obtendo:1 ftp://ftp.br.debian.org stable/main vnc-common 3.3.7-7 [60,4kB]


Obtendo:2 ftp://ftp.br.debian.org stable/main vncserver 3.3.7-7 [492kB]
Baixados 553kB em 3s (144kB/s)
Selecionando pacote previamente não selecionado vnc-common.
(Lendo banco de dados ... 91447 arquivos e diretórios atualmente instalados.)
Descompactando vnc-common (de .../vnc-common_3.3.7-7_i386.deb) ...
Selecionando pacote previamente não selecionado vncserver.
Descompactando vncserver (de .../vncserver_3.3.7-7_i386.deb) ...
Instalando vnc-common (3.3.7-7) ...
Instalando vncserver (3.3.7-7) ...

ADMINISTRAÇÃO GNU/LINUX - 121/253


Treinamento em Software Livre

8.2.8 Removendo pacotes com o APT

Pode-se remover pacotes facilmente, utilizando o apt-get, da seguinte forma:

$ apt-get remove <pacotes>

Para remover, por exemplo, o vncserver, utilizamos:

$ apt-get remove vncserver


Lendo Lista de Pacotes... Pronto
Construindo Árvore de Dependências... Pronto
Os pacotes a seguir serão REMOVIDOS:
vncserver
0 pacotes atualizados, 0 pacotes novos instalados, 1 a serem removidos e 0 não atualizados.
É preciso fazer o download de 0B de arquivos.
Depois de desempacotar, 1163kB de espaço em disco serão liberados.
Quer continuar? [S/n]

O procedimento aqui é parecido. Primeiro, o APT procura na lista de pacotes para ver se existe
um pacote instalado com o nome informado. Se existir, ele procura na lista de dependências, para
ver se existe algum outro pacote que precisa do pacote informado para funcionar.

Depois disso, o APT informa o número de pacotes que serão removidos. Depois, exibe a quantidade
de espaço em disco que será liberado. O APT solicita a confirmação para realizar a desinstalação.
Para confirmar, digita-se <s> ou pressiona-se Enter.

(Lendo banco de dados ... 91475 arquivos e diretórios atualmente instalados.)


Removendo vncserver ...

A remoção é feita automaticamente. Nesse processo não são removidos os arquivos de


configuração utilizados pelos programas. Dessa forma, se você quiser reinstalar o programa
futuramente, ele estará configurado, da mesma forma como estava antes de você removê-lo. Se
você quiser remover completamente o pacote, incluindo os arquivos de configuração, utilize o
parâmetro –-purge.
$ apt-get remove -–purge vncserver

8.2.9 Procurando Pacotes

O Debian possui em seu repositório milhares de pacotes. Seria muito complicado se você
precisasse saber antecipadamente o nome do pacote que deseja instalar ou remover. Por isso
mesmo, o APT conta com uma ferramenta para localizar pacotes e exibir informações sobre eles:
o apt-cache.

Para listar os pacotes que correspondem a determinadas palavras-chave, utilizamos o parâmetro


search, da seguinte forma:

ADMINISTRAÇÃO GNU/LINUX - 122/253


Treinamento em Software Livre

$ apt-cache search <palavras-chave>

Por exemplo, vamos procurar os pacotes de impressão do GIMP, utilizando as palavras-chave gimp
e print:

$ apt-cache search gimp print


cinepaint - motion picture image painting and retouching tool
cupsys-driver-gimpprint - Gimp-Print printer drivers for CUPS
cupsys-driver-gimpprint-data - Gimp-Print printer drivers for CUPS
escputil - A maintenance utility for Epson Stylus printers
foomatic-db - linuxprinting.org printer support - database
foomatic-db-engine - linuxprinting.org printer support - programs
foomatic-db-gimp-print - linuxprinting.org printer support - database for Gimp-Print printer
drivers
gimpprint-doc - Users' Guide for Gimp-Print and CUPS
gimpprint-locales - Locale data files for Gimp-Print
gpaint - GNU Paint - a small, easy to use paint program for GNOME
ijsgimpprint - Inkjet Server - Ghostscript driver for Gimp-Print
libgimpprint1 - The Gimp-Print printer driver library
libgimpprint1-dev - Development files for the Gimp-Print library
libgimpprint1-doc - Documentation for the Gimp-Print printer driver library
libijs-0.35 - IJS raster image transport protocol: shared library
libijs-dev - IJS raster image transport protocol: development files
xsane - GTK+-based X11 frontend for SANE (Scanner Access Now Easy)
xsane-common - GTK+-based X11 frontend for SANE (Scanner Access Now Easy)

Para exibir informações mais detalhadas sobre um programa, podemos utilizar os parâmetros
show e showpkg. Vejamos, por exemplo, as informações detalhadas do pacote gimp:

ADMINISTRAÇÃO GNU/LINUX - 123/253


Treinamento em Software Livre

$ apt-cache show dnsutils


Package: dnsutils
Priority: standard
Section: net
Installed-Size: 328
Maintainer: LaMont Jones <lamont@debian.org>
Architecture: i386
Source: bind9
Version: 1:9.2.4-1
Replaces: bind, bind9 (<< 1:9.1.0-3)
Depends: libc6 (>= 2.3.2.ds1-4), libdns16, libisc7, liblwres1, libssl0.9.7, bind9-host | host
Suggests: rblcheck
Conflicts: netstd (<< 2.00)
Filename: pool/main/b/bind9/dnsutils_9.2.4-1_i386.deb
Size: 158350
MD5Sum: a11d9d30edcff1eae173c3be06fe02d7
Description: Clients provided with BIND
The Berkeley Internet Name Domain (BIND) implements an Internet domain
name server. BIND is the most widely-used name server software on the
Internet, and is supported by the Internet Software Consortium, www.isc.org.
This package delivers various client programs related to DNS that are
derived from the BIND source tree.
Task: dns-server

A diferença entre show e showpkg é que show mostra detalhes relativos ao pacote, como
descrição, mantenedor, etc., enquanto showpkg exibe informações referentes às dependências
simples e reversas do pacote.

8.2.10 Atualizando o Sistema

O APT possui um recurso que permite atualizar todos os pacotes instalados no sistema. Isso pode
ser feito utilizando as opções upgrade e dist-upgrade do apt-get:

$ apt-get upgrade

$ apt-get dist-upgrade

A diferença entre o upgrade e o dist-upgrade está no mecanismo de resolução de dependências,


que é mais aprimorado quando se usa o dist-upgrade, e que é o recomendado.

Pode-se usar o dpkg para marcar os pacotes que não devem ser atualizados em hipótese alguma.
Esse recurso é útil para evitar a atualização de componentes importantes do sistema, cujas
atualizações podem ser instáveis, ou no caso de programas que tenham sido instalados
manualmente.

ADMINISTRAÇÃO GNU/LINUX - 124/253


Treinamento em Software Livre

8.2.11 Limpando o Cache de Pacotes

Os pacotes baixados da Internet pelo APT ficam armazenados no diretório


/var/cache/apt/archives, para serem usados no caso de reinstalação. Esses pacotes ocupam
espaço em disco, que muitas vezes pode não ser um recurso disponível. Por isso, o apt-get conta
com duas opções para limpeza de cache: clean e autoclean. O clean apaga todos os pacotes do
diretório /var/cache/apt/archives. Seu uso é simples:

$ apt-get clean

Já o autoclean apaga apenas os pacotes que possuem versões mais novas disponíveis para
download. É recomendável utilizar o autoclean sempre após fazer a atualização da lista de pacotes
do APT (apt-get update).

8.3 Pacotes em Formato .rpm

O Red Hat Package Manager – RPM é um gerenciador de pacotes que permite ao administrador
instalar, remover e obter informações sobre pacotes que possuem o formato .rpm.

Ele permite também a criação de pacotes a partir de arquivos fonte, verificar a assinatura digital
de um pacote e até simular uma instalação.

Cada pacote rpm contém programas binários, arquivos de configuração, documentação e


informações de como eles devem ser instalados e também suas dependências. O utilitário rpm
possui um banco de dados com informações sobre os pacotes instalados e seus arquivos, controle
de versões e dependências.

8.3.1 Formato da nomenclatura dos pacotes rpm

Segue a seguinte nomenclatura: package-versão-distribuição.arquitetura.rpm

Exemplo: rdesktop-1.2.0-162.i586.rpm, onde:


rdesktop Nome do pacote;
1.2.0 Versão deste pacote;
162 Distribuição do pacote (controle dos desenvolvedores);
i586 Arquitetura Intel para processadores padrão x86.

8.3.2 Opções do Utilitário rpm

Sintaxe:

# rpm [modo] [opções] [pacotes]


Exemplos:
# rpm {-q|-query} [opções de consulta] nome_do_pacote --> Consulta um pacote;

ADMINISTRAÇÃO GNU/LINUX - 125/253


Treinamento em Software Livre

# rpm {-V|-verify} nome_do_pacote --> Verifica o Status do pacote;


# rpm {-K|-checksig} nome_do_pacote --> Verifica a assinatura e integridade;
# rpm {-i|-install} [opções_instalação] nome_do_pacote --> Instala um novo pacote;
# rpm {-U|-upgrade} [opções_instalação] nome_do_pacote --> Atualiza um pacote;
# rpm {-e|-erase} [opções_remoção] nome_do_pacote --> Remove um pacote;
# rpm {-initdb|-rebuilddb} --> Refaz o banco de dados de pacotes rpm.

Exemplos praticos:

# rpm -qa | less --> Lista todos os pacotes rpm instalados no sistema;
# rpm -q bash --> Consulta informações do pacote bash;
# rpm -V snort-2.0.1-98.i586.rpm --> Verifica o status do pacote snort 2.0.1;
# rpm -K libpcap-0.7.2-37.i586.rpm --> Verifica assinatura e integridade do pacote;
# rpm -i snort-2.0.1-98.i586.rpm --> Instala o pacote snort, versão 2.0.1;
# rpm -U libpcap-0.7.2-37.i586.rpm --> Faz upgrade do pacote libpcap;
# rpm -e snort-2.0.1-98.i586.rpm --> Exclui o pacote snort, versão 2.0.1;
# rpm -qi snort-2.0.1-98.i586.rpm --> Ver informações de pacote rpm não instalado;
# rpm -qi snort-2.0.1 --> Ver informações de pacote rpm já instalado;
# rpm -ql snort-2.0.1 --> Ver arquivos e diretórios de pacote já instalado.

Importante:

No CD-ROM do Red Hat, os pacotes rpm ficam armazenados no seguinte diretório:


/RedHat/RPMS.

É possível transformar um pacote rpm em um pacote deb. Para isso utilize o programa Alien. Este
aplicativo lê as informações do pacote rpm e tenta convertê-las para o formato deb. Não há
garantias de que funcione completamente o novo pacote convertido, pois para o gerenciamento
correto de pacotes deb todas as informações devem estar presentes no pacote, principamente as
relacionadas com as dependências de pacotes.

ADMINISTRAÇÃO GNU/LINUX - 126/253


Treinamento em Software Livre

9 ADMINISTRAÇÃO DE USUÁRIOS, GRUPOS E PERMISSÕES

9.1 Mecanismos de Autenticação

O controle de acesso aos recursos do computador são controlados pelo sistema operacional. Este
controle acontece a nível de usuário e grupo, ou seja, para que alguém consiga executar qualquer
programa ou script no sistema, ele antes deve iniciar uma sessão com o sistema e para isso deverá
ser validado.

A validação do usuário acontece num processo denominado de autenticação. Neste processo o


usuário entra com sua identificação no sistema, denominado de login e uma senha.

O sistema então verifica se o login e a senha são válidos de acordo com informações cadastradas
no arquivo /etc/passwd, para dados do usuário, no arquivo /etc/shadow para a senha e no arquivo
/etc/group para suas definições de grupo.

O processo não verifica somente usuário e senha, mas também outras restrições e configurações
de segurança, as quais serão apresentadas no decorrer deste treinamento.

Em grandes redes de computadores, o GNU/Linux pode ser configurado para não utilizar uma
base de dados de usuários local, mas sim um sistema completo de autenticação, o qual pode prover
outros mecanismos e bases de dados de usuários.

Os mecanismos de autenticação centralizado mais conhecidos são o NIS – Network Information


Service, o qual já está em desuso, o SAMBA que implementa toda uma arquitetura de autenticação
de usuários baseada no protocolo CIFS e NBT – Netbios Over TCP/IP. Esta arquitetura de
autenticação é utilizada pela Microsoft nos sistemas Windows.

Outro sistema de autenticação centralizado é o Open Ldap. Neste sistema as informações de


usuários são armazenadas num modelo hierárquico e as bases de dados podem ser distribuídas e
replicadas por vários servidores na rede.

É possível por exemplo juntar os sistemas SAMBA e Open Ldap e prover um sistema de
autenticação de usuários mais robusto e que consegue agregar uma grande quantidade de tipos de
sistemas operacionais para utilizarem este mecanismo, como por exemplo sistemas Windows,
GNU/Linux, MacOS e UNIX, além é claro de que vários serviços também podem se utilizar desta
solução, como o Apache e o Squid.

Estas soluções de autenticação somente são possíveis através do PAM – Pluggable Authentication
Module, o qual provê um suporte a módulos de autenticação que conseguem mudar a maneira
tradicional de autenticação, baseada em arquivos locais, para um modelo de serviço centralizado.

É importante salientar que, quando referenciamos mecanismos de autenticação, estamos


referindo às arquiteturas completas da solução, as quais abrangem as bases de dados de contas
de usuários e grupos, os mecanismos de autenticação com seus tipos de hashs de senhas e também
os protocolos de rede suportados.

ADMINISTRAÇÃO GNU/LINUX - 127/253


Treinamento em Software Livre

9.2 Arquivos de Usuários e Grupos

Os usuários seguem uma padronização de informações, segundo o modelo Posix, onde estas
informações devem estar disponíveis no sistema, caso seja necessário, por exemplo, realizar uma
integração entre modelo de contas de usuários do GNU/Linux e do MS Windows, por exemplo.

Dados das Contas de Usuários:


Login O nome do usuário. Deve ser único no sistema;
Password Senha para acesso ao sistema;
UID User Identification é o número que identifica o usuário no
sistema. Deve ser único e em conjunto com o Login, são usados
para acesso.
GID Group Identification é o número que define qual o grupo a que o
usuário pertence. Um usuário pode pertencer à vários grupos.
Comment Descrição do usuário. Geralmente é o seu nome completo.
Home Directory Indica o diretório pessoal do usuário. Neste diretório são
armazenados os seus arquivos de configurações pessoais e
também os demais arquivos de trabalho.
Shell É o programa inicial que será executado toda vez que o usuário
efetuar um login no sistema. Geralmente é um interpretador de
comandos (Shell), porém pode ser um programa qualquer ou
também um arquivo de script de comandos.

Dados de Grupo de Usuários


Name Nome do grupo. Cada nome deve ser único no sistema.
Password Senha para se ter acesso ao grupo. Normalmente não se utiliza.
GID É o Group Identification, ou Identificação de Grupo. Deve ser
único e os usuários são relacionados aos grupos por este
número, não pelo seu nome.
User List É a lista de usuários que faz parte do grupo.

As configurações de usuários, senhas, grupos e demais dados relevantes do sistema de


autenticação de usuários, ficam armazenadas em arquivos no sistema.

Os principais arquivos de configurações são os seguintes:

/etc/passwd --> Este arquivo contém todas as informações dos usuários, menos a
senha.
O formato deste arquivo é apresentado abaixo:

<usuário>:<senha>:<UID>:<GID>:<comentários>:<home>:<shell>

Exemplo de um arquivo /etc/passwd:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh

ADMINISTRAÇÃO GNU/LINUX - 128/253


Treinamento em Software Livre

bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh

Como podemos ver, neste exemplo acima não existe a senha dos usuário no segundo campo, mas
somente há o caracter x. Esta característica é devido à medidas de segurança, onde as senhas
foram retiradas deste arquivo e colocadas no arquivo /etc/shadow.

/etc/shadow --> Contém as senhas criptografadas dos usuários, além de outras configurações.

Formato:

<usuário>:
<senha criptografada>:
<n dias após 01/01/1970 que a senha foi alterada pela última vez>:
<n dias após a criação do usuário, a senha pode ser modificada>:
<n dias depois da criação do usuário, a senha deve ser modificada>:
<notifica o usuário n dias antes que a senha expire>:
<desabilita a conta do usuário n dias após a senha ter expirado>:
<n dias após 01/01/1970 a conta será encerrada>:
<campo reservado>:

Abaixo um fragmento de um arquivo /etc/shadow:

root:$1$7KPoeEqW$ZC9l2q0bqhLte1Q70fEbG1:13175:0:99999:7:::
daemon:*:13175:0:99999:7:::
bin:*:13175:0:99999:7:::
sys:*:13175:0:99999:7:::
gdm:!:13175:0:99999:7:::
c031193:$1$zHMMg7Km$iOojKduk5Ol92zj8cNzlo.:13175:0:99999:7:::
logcheck:!:13213:0:99999:7:::
tux:$1$5GR0w7kX$FLfZmtgHRHoZ3YE1VnrO3/:13224:0:99999:7:::
coisa:!:13260:0:99999:7:::

/etc/group --> Contém as informações dos grupos cadastrados no sistema, bem


como relaciona os membros pertencentes à cada grupo.

Formato:
<grupo>:<senha criptografada>:<GID>:<comentário>:<lista de usuários>

ADMINISTRAÇÃO GNU/LINUX - 129/253


Treinamento em Software Livre

Abaixo um fragmento do arquivo:

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:logcheck
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:c031193
fax:x:21:
voice:x:22:
cdrom:x:24:hal,c031193
floppy:x:25:hal,c031193

Existem outros arquivos no sistema de autenticação do GNU/LINUX que servem para armazenar
diversas informações, necessárias para a correta administração de usuários, grupos e senhas.

Os demais arquivos são:

/etc/default/useradd --> Contém configurações padrão para criação de


usuários.
/etc/login.defs --> Contém configurações padrão para as definições de senhas
no sistema.
/etc/skel --> Os arquivos e diretórios contidos neste diretório serão copiados
para o diretório home do usuário, no momento do login inicial no
sistema.
/etc/gshadow --> Contém as senhas dos grupos de usuários.
/etc/adduser.conf --> Contém as configurações default para a criação de usuários
com o comando adduser.

9.3 Administração de Usuários, Senhas e Grupos

Agora que já conhecemos os principais arquivos de configuração de usuários e grupos, abaixo


então serão apresentados os principais comandos para administrar usuários, senhas e grupos.

9.3.1 useradd

Comando para adicionar usuários ao sistema.

ADMINISTRAÇÃO GNU/LINUX - 130/253


Treinamento em Software Livre

Sintaxe:

useradd <usuário> [opções]

Opções Descrição
-d <dir_home> Diretório home do usuário em criação;
-c <comentário> Comentários adicionais;
-g <grupo> Grupo primário do novo usuário no sistema;
-G <grupo> Demais grupos que o usuário irá pertencer;
-s <programa> Primeiro programa a ser executado, geralmente o Shell;
-e <mm/dd/aa> Data para desabilitar a conta;
-f <num_dias> Quantidade de dias, após a senha expirar, p/desabilitar a conta.

Exemplos:

#useradd tuxes -d /home/tuxes -c "Usuário de Teste" -g users -s /bin/csh


#useradd aluno1 -d /home/aluno1 -c "Usuário Aluno" -g users -s /bin/bash

Veja também o comando adduser o qual adiciona usuários, mas que possui maior interatividade com
o usuário.

9.3.2 passwd

Comando para mudar a senha do usuário atualmente logado, ou outro usuário do sistema (requer
nível administrativo).

Sintaxe:

passwd <usuário>

Exemplos:

# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

O comando acima alterou a senha do usuário corrente.

#passwd tuxes
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

O comando anterior alterou a senha do usuário tuxes no sistema. Em todos os casos é preciso
nível administrativo para a execução da troca de senhas.

ADMINISTRAÇÃO GNU/LINUX - 131/253


Treinamento em Software Livre

9.3.3 chage

Este comando altera informações da senha dos usuários no sistema.

Sintaxe:

chage <usuário> [opções]

Opções Descrição
-l Exibe informações de expiração da senha de um usuário;
-M <num_dias> Número máximo de dias até que a senha expire;
-m <num_dias> Número mínimo de dias entre alterações de senha. Um valor
zero indica que o usuário pode alterar sua senha quando
desejar.
-d <mm/dd/aa> Data da última alteração da senha;
-I <num_dias> Número de dias entre a expiração da senha e o bloqueio da
conta do usuário;
-E <mm/dd/aa> Data de expiração da conta do usuário;
-W <num_dias> Número de dias que a mensagem para troca de senha será
exibida para o usuário, anteriormente à sua data de expiração.

Exemplos:
# chage tux -M 20 -m 30 -W 2
# chage tux -M 20 -m 30 -W 2 -E 12/31/2099
# chage -l tux
Mínimo :t30
Máximo : 20
Aviso : 2
Inativa : -1
Última Mudança : Mar 17, 2006
Senha Expira : Abr 06, 2006
Senha Inativa : Nunca
Conta Expira : Nunca

9.3.4 usermod

Modifica as configurações de um usuário no sistema.

Sintaxe: usermod <opções> <usuário>

Opção Descrição
-c <comentário> Altera comentários da conta do usuário;
-d <dir_home> Novo diretório home;
-s <programa> Novo programa inicial (novo Shell);
-l <novo_login> Novo nome de login do usuário no sistema;
-g <novo_grupo> Novo grupo primário do usuário;

ADMINISTRAÇÃO GNU/LINUX - 132/253


Treinamento em Software Livre

-G <novos_grupos> Novos grupos que o usuário irá pertencer;


-e <mm/dd/aa> Data da expiração da conta;
-f <num_dias> Quantos dias após senha expirar p/conta ficar desabilitada;
-u <novo_UID> Novo UID do usuário;
-L Desabilita a senha do usuário (! na frente da senha);
-U Desbloqueia a senha do usuário (retira o ! da frente senha).

Exemplos:

# usermod -G coisa tuxes


# usermod -c "Usuário Tuxes para teste" tuxes

9.3.5 userdel

Exclui um usuário do sistema.

Sintaxe:

userdel < -r> <usuário>

Se for utilizada a opção -r, todos os arquivos e diretório home do usuário serão removidos do
sistema.

Exemplos:

# userdel tux
# userdel -r jan --> Remove o usuário jan e todos os seus arquivos e home dir.

9.3.6 chfn

Muda configurações das informações do usuário, como seu Full Name (nome completo) e telefones.

Sintaxe:

chfn [opções] [usuário]

Opção Descrição
-f <nome> Nome completo do usuário (full name);
-r <sala> Especifica a sala do usuário (room), sua localização, por exemplo.
-w <fone> Telefone de trabalho.
-h <fone> Telefone residencial.

Exemplos:
# chfn -f “Tux Pingüim da Silva” tux
# chfn -w “48 4009 0320” jan

ADMINISTRAÇÃO GNU/LINUX - 133/253


Treinamento em Software Livre

9.3.7 id

Exibe informações do usuário.

Sintaxe:

id [opções] [usuário]

Opção Descrição
-g Exibe o nome do grupo primário do usuário;
-G Exibe o nome de todos os grupos que o usuário pertence;
-u Exibe o UID do usuário;
-n Exibe os nomes dos grupos, usados com as opções g e G.

Exemplos:
# id -u c031193
# id -Gn tux
# id

9.3.8 su

É o comando para trocar de usuário corrente, sem o processo formal de login. O comando su
(switch user) não deve ser liberado para qualquer usuário, mas somente para os administradores
do sistema.

Sintaxe:

su [opções] [usuário]

Opções Descrição

- Substitui o Shell atual pelo Shell do usuário;


-c <comando> Executa o comando especificado;
-m e -p Mantém o Shell atual, sem substituir o ambiente;

Exemplos:
# su -
# su -c “ls -l”
# su -c “pwd” tux

9.3.9 groupadd

Adiciona Grupos de usuários no sistema.

Sintaxe:

ADMINISTRAÇÃO GNU/LINUX - 134/253


Treinamento em Software Livre

groupadd [-g <GID>] <grup>

Exemplos:

# groupadd -g 999 Grupo999


# groupadd GrupoPR

9.3.10 gpasswd

Este comando permite várias funções relacionadas à administração de grupos locais no


GNU/Linux, inclusive a definição de senhas para Grupos de Usuários.

Este comando é usado para administrar os arquivos /etc/group e /etc/gshadow e cada grupo deve
possuir um administrador, membros e uma senha.

Os administradores dos sistema poderão usar as opções -A para definir o administrador do grupo
e -M para definir os membros com direitos administrativos ao grupo. As demais opções serão
apresentadas na seqüência.

Sintaxe:

gpasswd [opções] [usuário] <grupo>

Opção Descrição
-a Adiciona usuário ao grupo;
-d Deleta usuário do grupo;
-r Remove a senha do grupo;
-A Define o Administrador do grupo;
-M Define os membros administrativos do grupo;
-R Desabilita o acesso ao grupo pelo comando newgrp.

Exemplos:

# gpasswd curso --> Define senha para o grupo curso.


# gpasswd -A tux curso --> Define usuário tux como administrador do grupo.
# gpasswd -d abel users --> Deleta usuário abel do grupo users.

9.3.11 groupmod

Modifica as características e definições de um grupo do sistema.

Sintaxe:

groupmod <opções> <grupo>

ADMINISTRAÇÃO GNU/LINUX - 135/253


Treinamento em Software Livre

Opção Descrição
-g <novo GID> Troca o GID para um novo número, que não deve existir.
-n <novo nome> Troca o nome do Grupo.

Exemplos:

# groupmode -g 10001 curso


# groupmode -n grupoNovo grupoVelho

9.3.12 groupdel

Remove um grupo do sistema.

Sintaxe:

groupdel <nome grupo>

Exemplo:
# groupdel curso --> Remove o grupo curso.
# groupdel grupoNovo --> Removo o grupo grupoNovo.

9.3.13 sudo

O comando sudo executa comando como superusuário do sistema (root). O arquivo de


configuração para este comando é o /etc/sudoers. Neste arquivo são definidos os comandos
privilegiados que podem ser executados por um usuário comum.

A edição deste arquivo é realizada pelo aplicativo visudo, que somente o usuário root pode
executá-lo.

Sintaxe:
sudo [opções] [comando]

Opções Descrição
-l Lista os comandos permitidos e proibidos para o usuário
-h Exibe a ajuda do comando.
-S Força a solicitação da senha do usuário;
-u <usuário> Força a execução do comando como se fosse o usuário.

Exemplos:
$ sudo shutdown -r +15 "reboot do sistema!"
$ sudo -u www vi ~www/htdocs/index.html
$ sudo -u yazza ls ~yazza

Abaixo temos um segmento do arquivo /etc/sudoers, onde podemos colocar os logins dos usuários
que porventura possam ter acesso à comandos de administração do sistema.

ADMINISTRAÇÃO GNU/LINUX - 136/253


Treinamento em Software Livre

# /etc/sudoers
# This file MUST be edited with the 'visudo' command as root.
# See the man page for details on how to write a sudoers file.

# Host alias specification


# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL) ALL

9.3.14 Demais Comandos de Usuários

A seguir temos uma relação de comandos que podem ser utilizados para auxiliar os usuários no seu
ambiente de trabalho.

Comando Objetivos
groups Exibe grupos de um usuário;
newgrp Troca de grupo o usuário corrente, somente em tempo de execução;
users Exibe os usuários ativos no sistema;
w Exibe usuários conectados ao sistema e o que estão executando;
who Exibe usuários utilizando os terminais/
whoami Mostra o UID efetivo do usuário.

9.3.15 Dicas de Auxílio

Criar um usuário com o poder do root.

# useradd poder
# passwd poder

Edite o arquivo /etc/passwd e modifique o UID e GID deste usuário, ambos para 0.

Antes:
poder:x:1006:100::/home/poder:/bin/bash

Depois:
poder:x:0:0::/home/poder:/bin/bash

Assim o usuário poder já é um usuário root.

Suspendendo um usuário:
Para suspender um usuário, basta comentar a linha de seu registro no arquivo /etc/passwd,
ficando como abaixo:

# poder:x:0:0::/home/poder:/bin/bash

ADMINISTRAÇÃO GNU/LINUX - 137/253


Treinamento em Software Livre

Removendo um usuário manualmente

Para remover um usuário manualmente, basta remover as linhas que contém referências ao seu
login nos arquivos: /etc/passwd, /etc/group e /etc/passwd. Remova também os diretórios
/home/usuário e /var/spool/mail/usuário, se existirem. Deste modo você exclui o usuário
localmente no sistema.

9.4 Permissões de Arquivos e Diretórios

As permissões de acesso aos arquivos e diretórios na estrutura das partições, num sistema
GNU/Linux, obedecem o modelo adotado nos sistemas UNIX. Dentro deste modelo de permissões,
há três tipos básicos de permissões de acesso aos arquivos e diretórios.

As permissões de acesso básicas possuem três categorias que são:


Permissões de Acesso do Dono do Arquivo;
Permissões de Acesso do Grupo ao qual o arquivo pertence;
Permissões de Acesso aos demais usuários.

Dono do arquivo é normalmente que cria o arquivo ou aquele definido pelo root.
Grupo do arquivo é normalmente o grupo primário ao qual o seu Dono pertence.

Para cada tipo de categoria, há três tipos básicos de permissões que são:

Permissão Abreviatura Valor em Octal


Leitura r 4
Escrita w 2
Execução x 1

Existem também permissões especiais que possuem funções diferentes das citadas acima. Estas
permissões são as seguintes:

SetUID Se ativado em arquivos, ao ser executado será com o perfil do dono do


arquivo. Não é usado para diretórios.
SetGID Se ativado em arquivos, ao ser executado será com o perfil de algum
membro do Grupo do dono do arquivo.
Se ativado em diretório, os arquivos criados neste diretório terão seu
grupo definido para o mesmo grupo do diretório.
StickyBit Se ativado em diretório, os arquivos dentro deste diretório somente
poderão ser excluídos pelos seus respectivos donos.
Não é usado para arquivos comuns.

Permissão Abreviatura Valor em Octal


Setuid s 4
Setgid s 2
Sticky t 1

ADMINISTRAÇÃO GNU/LINUX - 138/253


Treinamento em Software Livre

As permissões efetivas em um arquivo no sistema é então obtida pela soma de todas as


permissões acima, aplicadas em todas as categorias, ou seja, para o Dono , Grupo do Dono e
Outros usuários.
Abaixo temos uma representação de todas as permissões vistas no formato binário, como são
tratadas efetivamente pelo sistema.

Exemplos:

-rwsr-xr-x 1 root root 26616 2005-04-19 14:48 /usr/bin/passwd

O arquivo acima possui as seguintes permissões: (veja figura anterior)


rws – Leitura, Escrita e Suid para o Dono (dono é o usuário root);
r-x – Leitura e Execução para usuários do Grupo do dono (grupo root);
r-x – Leitura e Execução para os demais usuários.

O valor total das permissões deste arquivo é:


s- Suid = 4
r- Leitura = 4
w- Escrita = 2
x – Execução = 1
Total das permissões para o dono do arquivo = 7
r- Leitura = 4
w-Escrita = 0
x- Execução = 1
Total das permissões para o Grupo do dono do arquivo = 5
r- Leitura = 4
w-Escrita = 0
x- Execução = 1
Total das permissões para Outros usuários do arquivo = 5
Total das permissões especiais do arquivo (Suid) = 4

Assim, as permissões totais do arquivo são: Especiais + Dono + Grupo + Outros, o que equivale à
4755.

Em termos de bits ligados, temos os seguintes:

1 0 0 1 1 1 1 0 1 1 0 1
4 7 5 5

ADMINISTRAÇÃO GNU/LINUX - 139/253


Treinamento em Software Livre

A peculiaridade deste arquivo informa que:

Independentemente de quem executar este arquivo, o perfil utilizado será o do seu dono, no caso
o root, pois o SetUID está ativo na categoria dono do arquivo.

É importante frisar que, esta característica é importantíssima no comando passwd, pois este
comando altera as senhas dos usuários e a gravação das senhas no arquivo /etc/shadow somente é
permitida para o usuário root, logo sem esta permissão específica, nenhum outro usuário
conseguiria alterar suas senhas.

Para listar as permissões dos arquivos utilize o comando “ls -l”. Veja um exemplo abaixo:

# ls -l /usr/sbin
total 13504
-rwxr-xr-x 1 root root 47276 2005-09-05 08:16 ab
lrwxrwxrwx 1 root root 2 2006-03-06 20:00 ab2 -> ab
-rwxr-xr-x 1 root root 6284 2005-12-12 11:54 accept
-rwxr-xr-x 1 root root 15240 2005-01-05 14:30 accessdb
-rwxr-xr-x 1 root root 18456 2004-11-01 08:26 acpid
lrwxrwxrwx 1 root root 7 2006-01-27 18:09 addgroup -> adduser
-rwsr-xr-- 1 root cdrom 351404 2005-01-09 14:55 cdrecord.shm
-rwxr-xr-x 1 root root 70060 2004-11-24 22:24 c++filt
-rwxr-sr-x 1 root shadow 34488 2005-04-19 14:48 chage
lrwxrwxrwx 1 root root 9 2006-01-27 18:23 charmap -> gucharmap
-rwxr-xr-x 1 root root 2431 2005-02-05 08:23 charset
-rwxr-xr-x 1 root root 7368 2005-04-09 22:49 chattr
-rwsr-xr-x 1 root root 28056 2005-04-19 14:48 chfn
-rwxr-xr-x 1 root root 3676 2005-03-22 11:21 chkdupexe
-rwsr-xr-x 1 root root 28088 2005-04-19 14:48 chsh
-rwxr-xr-x 1 root root 5564 2005-02-05 08:23 chvt

Importante:

As permissões especiais (Sguid, Sgid, Sticky) ocupam a posição da permissão de execução (x).
Caso a permissão de execução (x) esteja definida no arquivo, a representação das permissões
especiais é apresentada em letras minúsculas (s e t) conforme o caso. Se a permissão de execução
(x) não estiver definida, estas letras serão apresentadas em maiúsculas (S e T).

Exemplo:
-rwSr--r-- 1 root root 0 2006-04-28 08:25 arq1
-rwsr--r-- 1 root root 0 2006-04-28 08:25 arq1

9.5 chmod

Este comando é a principal ferramenta para a mudança das permissões em arquivos e diretórios.

ADMINISTRAÇÃO GNU/LINUX - 140/253


Treinamento em Software Livre

Sintaxe:
chmod [opções] <modo_arquivo> <arquivo>

Opções Descrição
-c Mostra informações dos arquivos em modificação.
-f Não apresenta mensagens de erro.
-R Atua recursivamente em todos os sub-diretórios, se houverem.
-v Mostra os detalhes das alterações dos arquivos

modo_arquivo Pode ser Simbólico ou absoluto.

Modo simbólico = <identificador> <operando> <valor>, separados por vírgula.

Identificador: Operando:
u Usuário + Adiciona a permissão
g Grupo - Remove a permissão
o Outros = Adiciona explicitamente e remove as
a Todos outras permissões.

Valor:
r Permissão de leitura.
w Permissão de escrita.
x Permissão de execução.
s Bit SetUid se atribuído a usuário, bit SetGid se atribuído a Grupo.
t Bit Sticky.

Modo Absoluto = <atributo_especial> <dono> <grupo> <outros>


O atributo_especial é facultativo (não é obrigatório).

Valores possíveis para atributo_especial:


0 Nenhum atributo especial ligado.
1 Sticky bit ligado.
2 Bit SetGid ligado.
3 Sticky e SetGid ligados.
4 Bit SetUid ligado.
5 Sticky e SetUid ligados.
6 SetUid e SetGid ligados.
7 SetUid, SetGid e Sticky bits ligados.

Valores possíveis para as categorias Dono, Grupo e Outros:


0 Sem permissões
1 Permissão para execução.
2 Permissão para escrita.
3 Execução e escrita permitidos.
4 Permissão de leitura.
5 Leitura e execução permitidos.
6 Leitura e escrita permitidos.
7 Leitura, escrita e execução são permitidos.

ADMINISTRAÇÃO GNU/LINUX - 141/253


Treinamento em Software Livre

Exemplos:

# chmod u+x script


# chmod u+r, g+rx, o=r arquivo.txt
# chmod 777 arq.txt --> Libera acesso total ao arquivo arq.txt
# chmod 4755 /bin/comando --> Ativa SetUid para o arquivo /bin/comando e
concede acesso total ao dono e leitura e
execução para outros usuários.
# chmod 2774 /etc/dir1 --> Ativa SetGid para o diretório /etc/dir1 e concede
acesso total ao dono e grupo, bem como somente
leitura para outros usuários deste diretório.

Lembretes Importantes!

1- Se o bit SetUid for ativado em um arquivo, ao executá-lo, será feito com o perfil do dono do
arquivo.

2- Se o bit SetGid for ativado em um arquivo, ao executá-lo, será feito com o perfil do Grupo do
arquivo. Se for um diretório, todos os arquivos dentro deste terão seus grupos definidos para o
grupo do diretório.

3- Se o bit Sticky for ativado em um diretório, somente os donos dos arquivos neste diretórios,
poderão excluir estes arquivos, com excessão do usuário root.

4- Se ativar a permissão de escrita (w) em um diretório, então os arquivos dentro deste poderão
ser excluídos, mesmo que não tenham explicitamente esta permissão.

5- Somente o usuário administrador do sistema (root) poderá sobrepor qualquer restrição sobre
arquivos, podendo alterar qualquer uma de suas permissões.

9.6 chown

Comando para mudar o dono de arquivos (change owner).

Sintaxe:

chown [opções] <novo_dono.[novo_grupo]> <arquivo>

Opções Descrição
-c Exibe detalhes do arquivo em modificação.
-f Não apresenta mensagens de erros.
-R Atua recursivamente nos sub-diretórios, se houverem.
-v Apresenta detalhes das alterações realizadas nos arquivos.

Exemplos:

ADMINISTRAÇÃO GNU/LINUX - 142/253


Treinamento em Software Livre

# chown www-data /sistemas/cadastro/cad.php


# chown -R www-data. /sistemas/cadastro
# chwon -R www-data.root /var/log/sis/sistema.log

9.7 chgrp

Comando utilizado para a troca de grupo dos arquivos (change group).

Sintaxe:

chgrp [opções] <novo_grupo> <arquivo>

Opções Descrição
-c Exibe detalhes do arquivo em modificação.
-f Não apresenta mensagens de erros.
-R Atua recursivamente nos sub-diretórios, se houverem.
-v Apresenta detalhes das alterações realizadas nos arquivos.

Exemplos:
#chgrp www-data /sistemas/index.htm
#chgrp tux /tmp/arq_tux.doc

9.8 umask

Este comando altera os valores padronizados para a criação de arquivos e diretórios. Por
definição, os diretórios são criados com a permissão padrão 777, ou seja, permissões totais de
leitura, escrita e execução para dono, grupo e outros usuários, do respectivo diretório.

Os arquivos são criados, por padrão, com as permissões 666, ou seja, leitura e escrita para dono,
grupo e outros usuários.

Então, por questões de segurança, tornou-se uma padronização redefinir a máscara de permissões
de arquivos e diretórios, através do comando umask.

A máscara padrão é então 0022 e funciona da seguinte maneira:

Se a máscara for definida como 0022, então:


Arquivo novo = 666
umask = 0022
Resultado = 0644 --> Todo arquivo novo possuirá estas permissões.

Diretório novo = 777


umask = 0022
Resultado = 0755 --> Todo diretório novo possuirá estas permissões

O comando umask geralmente é definido nos scripts de inicialização do ambiente dos usuários,

ADMINISTRAÇÃO GNU/LINUX - 143/253


Treinamento em Software Livre

tipicamente no arquivo /etc/login.defs.

Para redefinir a máscara, basta colocar o comando dentro dos arquivos que são executados no
momento de login dos usuários, como os arquivos .bashrc ou .bash_profile.

Sintaxe do comando umask:

umask [máscara]

9.9 Atributos de Arquivos

Existem alguns atributos especiais sobre os arquivos no sistema GNU/Linux que devem ser
esclarecidos, pois afetam diretamente o comportamento das atualizações destes arquivos,
principalmente se considerarmos as facilidades de backup.

Neste sentido, o sistema implementa alguns atributos importantes para os administradores do


ambiente, porque permitem um controle adicional em arquivos, além dos controles relacionados
com a segurança propriamente dito.

Os atributos disponíveis são os seguintes:

Atributo Descrição
A Não permite a atualização da hora de acesso do arquivo. Em diretórios, seus arquivos
internos não terão a hora de acesso modificada.
a Só permite adicionar informações no arquivo (Append-Only). Em diretórios só
permite a adição de arquivos e, em todos os casos, estes arquivos não podem ser
excluídos.
c Este atributo informa ao Kernel para comprimir em disco o conteúdo do arquivo. No
momento da leitura o Kernel descompacta e entrega os dados sem a compressão.
D Sincroniza a gravação de dados em disco, somente para diretórios.
d Não permite o backup do arquivo pelo programa Dump.
E Atributo experimental para compressão de dados. Não utilizar.
l Em diretórios, indica que o mesmo estará sendo indexado por algoritmos do tipo
“hashed trees”. Não utilizar.
i Torna o arquivo imutável. Nada pode ser feito com ele, somente pode ser lido.
j Faz com os dados do arquivo sejam escritos no Journaling do ext3, antes que o
próprio arquivo seja gravado em disco, se o Filesystem estiver montado com a opção
“data=ordered” ou “data=writeback”. Não possui efeito se o filesystem for montado
com a opção “data=journal”.
s Faz com que, na deleção do arquivo, seus blocos sejam zerados em disco,
impossibilitando assim a sua recuperação (undelete).
S Sincroniza a gravação do arquivo em disco, em sistemas Ext2. Não possui efeito
sobre diretórios.

ADMINISTRAÇÃO GNU/LINUX - 144/253


Treinamento em Software Livre

T Altera a hierarquia do diretório na estrutura do filesystem. Válido somente para


diretórios e para testes do Kernel 2.5.46 (instável), no sistema de alocação de blocos
Orlov.
t Não permite que os blocos finais do arquivo, que não estejam completos
(fragmentos), que sejam mesclados com outros arquivos, no caso de filesystems que
suportam o tail-merging. Não suportado para filesystems Ext2 ou Ext3 (ainda).
u Marca o arquivo com recuperável, ou seja, poderá ser recuperado (undelete).
X Modo experimental para compressão. Não utilizar.
Z Modo experimental para compressão. Não utilizar.

Os atributos “c”, “s” e “u” não são respeitados pelos filesystem do tipo Ext2 e Ext3, conforme a
corrente implementação dos mesmos. Deverão ser implementados nas futuras versões destes
sistemas de arquivos.

O Atributo “j” é apenas funcional de o filesystem for do tipo Ext3 e o atributo “D” é usado
somente pelo kernel 2.5.19, ou superior (instáveis).

9.9.1 chattr

Permite alteração de atributos (change atribute) em arquivos e diretórios.

Sintaxe:

chattr [opções] [modo] arquivo

Opções Descrição
-R Recursivamente altera atributos em arquivos e sub-diretórios.
-V Mostra detalhes das alterações.

Modo Descrição
+ <atributo> Adiciona atributo
- <atributo> Retira atributo
= <atributo> Atributo exato (retira outros se for o caso).

Exemplos:

# chattr =Ass teste.txt


# chattr +i arquivo.txt

9.9.2 lsattr

Permite a visualização dos atributos de arquivos e diretórios.

Sintaxe:

ADMINISTRAÇÃO GNU/LINUX - 145/253


Treinamento em Software Livre

lsattr [opções] [arquivos]

Opções Descrição
-R Lista recursivamente diretórios e arquivos.
-a Lista todos os arquivos, inclusive arquivos ocultos.
-d Lista diretórios como arquivo.

ADMINISTRAÇÃO GNU/LINUX - 146/253


Treinamento em Software Livre

10 QUOTAS DE DISCO

Dentre as inúmeras funções de administração de servidores, o cuidado com os recursos de discos


é uma das mais trabalhosas, apesar de não ser uma das mais complexas.

No ambiente GNU/Linux há o recurso de Quotas de disco onde os administradores podem


controlar o uso dos discos do sistema, controlando a utilização do espaço utilizado por usuário ou
por grupo de usuários.

O recurso de Quotas de disco é implementado diretamente por módulos no Kernel, sem os quais
não é possível utilizar este importante recurso.

Nos sistemas Debian, por exemplo, os módulos para gerência e suporte de Quotas de disco estão
disponíveis no diretório /lib/modules/2.6.8-2-686/kernel/fs, através dos módulos quota_v1.ko
e quota_v2.ko.

Até o presente momento, o sistema de Quotas em disco somente funciona para partições com
filesystem do tipo Ext2 ou Ext3 e os limites para controle das quotas é baseado em três
parâmetros:

Parâmetro Descrição
soft limits Número máximo de blocos de 1k Bytes que um usuário, ou grupo, pode alocar.
Também é o número máximo de i-nodes (arquivos) que ele pode criar. Usuário ou
Grupo podem ultrapassar este limite por um período de tempo limitado.
hard limits É o número máximo de blocos de 1k Bytes que um usuário, ou grupo, pode alocar.
Também é o número máximo de i-nodes (arquivos) que ele pode criar. Porém, este
limite não pode ser ultrapassado.
grace É o período de tolerância em que um usuário, ou grupo, podem ultrapassar o soft
period limits. Caso o usuário ou grupo não consiga reverter o uso do espaço em disco, até
este período de tempo, o sistema de Quotas não permitirá mais alocação de espaço
em disco para o usuário ou grupo.

10.1 Procedimentos para Implementar Quotas de Disco

1- Escolher uma partição para a implementação das Quotas, por exemplo /home.

2- Editar as configurações de carga da partição no arquivo /etc/fstab, deixando


conforme abaixo:
/dev/hda3 /home ext3 defaults,usrquota,grpquota 0 2

3- Criar no ponto de montagem do filesystem /home, os arquivos de controle de quotas, por


usuário e por grupo:
# touch aquota.user aquota.group

ADMINISTRAÇÃO GNU/LINUX - 147/253


Treinamento em Software Livre

4- Alterar as permissões dos arquivos de controle de quotas para somente o usuário


root poder editar estes arquivos:
# chmod 600 aquota.user
# chmod 600 aquota.group

5- Reiniciar o sistema
# reboot

6- Após o retorno do sistema, verificar se o sistema de quotas está ativo.


# repquota -va

7- Definir quotas por tamanho, em megabytes, por usuário.


# edquota -T tux

8- Definir um limite para 30 MB de espaço em disco, com limite máximo de 40 MB, conforme
exemplo abaixo:

Disk quotas for user tux (uid 1001):


Filesystem blocks soft hard inodes soft hard
/dev/hda3 0 30000 40000

9- Consultar as quotas do usuário tux.


# quota -u tux

10- Editar o período de tolerância (grace period)para o usuário tux.


# edquota -T tux
Time units may be: days, hours, minutes, ou seconds
Grace period before enforcing soft limits for users:
/dev/hda3: block grace period: 15 days.
File grace period: 7 days.

11- Verifique novamente as quotas do usuário tux.


# quota -u tux

12- Definir quotas por quantidade de arquivos para o usuário aluno.


# edquota -u aluno

13- Definir um limite para 50 arquivos em disco, com limite máximo de 60 arquivos, conforme
exemplo abaixo:

Disk quotas for user aluno (uid 1002):


Filesystem blocks soft hard inodes soft hard
/dev/hda3 0 0 0 0 50 60

14- Consultar as quotas do usuário aluno.


# quota -u aluno

ADMINISTRAÇÃO GNU/LINUX - 148/253


Treinamento em Software Livre

10.2 Comandos para a Gerência de Quotas em Disco

10.2.1 quota

Mostra as quotas de espaço em disco configuradas para usuários ou grupos.

Sintaxe:
quota [opções] usuário/grupo

Opções: Descrição
-u Mostra a quota definida para usuário.
-g Mostra a quato definida para grupo.
-q Mostra somente quando a quota for excedida.
-v Mostra as quotas, mesmo que não estejam definidas.

Exemplos:
# quota -u tux
# quota -v aluno

10.2.2 quotaon

Habilita o gerenciamento de quotas em um dispositivo previamente configurado.

Sintaxe:

quotaon [opções] [dispositivo]

Opções Descrição
-a Habilita quotas para todos os dispositivos configurados em /etc/fstab.
-g Habilita quotas para grupos em um dispositivo.
-u Habilita quotas para usuário em um dispositivo.
-v Mostra os dispositivos onde o quota está habilitado.

Exemplo:
# quotaon -avug --> Habilita quota em todos os devices, p/todos grupos e usuários.

10.2.3 quotaoff

Desabilita as quotas nos dispositivos.

Sintaxe:
quotaoff [opções] [dispositivo]

ADMINISTRAÇÃO GNU/LINUX - 149/253


Treinamento em Software Livre

Opções Descrição
-a Desabilita quotas para todos os dispositivos configurados em /etc/fstab.
-g Desabilita quotas para grupos em um dispositivo.
-u Desabilita quotas para usuário em um dispositivo.

Exemplo:
# quotaoff -ug /dev/hda3

10.2.4 quotacheck

Faz uma verificação no sistema de arquivos e cria, verifica e repara os arquivos de configurações
das quotas.

Sintaxe:

quotacheck [opções] [dispositivos]

Opções Descrição
-a Varre todos os dispositivos configurados em /etc/fstab.
-g grupo Constrói a base de dados das quotas para o grupo.
-u usuário Constrói a base de dados das quotas para o usuário.
-v Apresenta os procedimentos executados.

Exemplos:
# quotacheck -a
# quotacheck -aug

10.2.5 edquota

Este comando edita as propriedades das quotas dos usuários e grupos. Ele se utiliza do editor vi,
ou outro editor padrão no sistema, para configurar as quotas de disco.

Opções Descrição
-g grupo Edita configurações de quota para o grupo.
-T usuário Edita configurações de quota para usuário.
-p pad_usr Copia as configurações de quota do usuário pad_usr, para outro.
-t Configura o período de tolerância (grace period) para usuário e grupo.

Exemplos:
# equota -T aluno
# equota -t

ADMINISTRAÇÃO GNU/LINUX - 150/253


Treinamento em Software Livre

10.2.6 repquota

Comando para gerar um relatório das quotas e utilização dos discos no sistema.

Sintaxe:

repquota [opções] dispositivo

Opções Descrição
-a Gera relatório para todos os dispositivos configurados.
-u Gera relatório por usuários.
-g Gera relatório por grupos.
-v Cria um cabeçalho descritivo no relatório.

Exemplo:
# repquota -va

ADMINISTRAÇÃO GNU/LINUX - 151/253


Treinamento em Software Livre

ADMINISTRAÇÃO GNU/LINUX - 152/253


Treinamento em Software Livre

11 DISCOS, PARTIÇÕES E RAID NO GNU/LINUX

O tratamento lógico das unidades de discos físicas no sistema GNU/Linux é bem diferente de
outros sistemas operacionais como o MS Windows ou Novell Netware. Não há por exemplo a
associação de letras do alfabeto para indicar partições lógicas no sistema.

Os discos e partições no GNU/Linux possuem as mesmas características dos sistemas Unix,


logicamente pela sua herança e descendência deste sistema.

Como já abordado, tudo no GNU/Linux é tratado como arquivo, inclusive as unidades físicas de
discos. Elas são tratadas através de drivers de dispositivos, os quais ficam residentes abaixo do
diretório /dev.

Abaixo temos algumas representações de discos físicos e sua correlação com o arquivo de driver
de dispositivo, residente em /dev.

➢ /dev/fd0 - Primeira unidade de disquetes.


➢ /dev/fd1 - Segunda unidade de disquetes.
➢ /dev/hda - Primeiro disco rígido na primeira controladora IDE do micro (primary master).
➢ /dev/hda1 - Primeira partição do primeiro disco rígido IDE.
➢ /dev/hdb - Segundo disco rígido na primeira controladora IDE do micro (primary slave).
➢ /dev/hdb1 - Primeira partição do segundo disco rígido IDE.
➢ /dev/sda - Primeiro disco rígido na primeira controladora SCSI.
➢ /dev/sda1 - Primeira partição do primeiro disco rígido SCSI.
➢ /dev/sdb - Segundo disco rígido na primeira controladora SCSI.
➢ /dev/sdb1 - Primeira partição do segundo disco rígido SCSI.
➢ /dev/sr0 - Primeiro CD-ROM SCSI.
➢ /dev/sr1 - Segundo CD-ROM SCSI.
➢ /dev/xda - Primeiro disco rígido XT.
➢ /dev/xdb - Segundo disco rígido XT.
➢ /dev/st0 – Primeira unidade de Fita SCSI (DAT, DLT, AIT, etc).

As letras de identificação de discos rígidos podem ir além de hdb, em algumas máquinas, por
exemplo, a unidade de CD-ROM podem estar localizada em /dev/hdg (Primeiro disco - quarta
controladora IDE). É importante entender como os discos e partições são identificados no
sistema, pois será necessário usar os parâmetros corretos para montá-los e utilizá-los
adequadamente.

11.1 Particionamento de Discos

Os sistemas de arquivos no GNU/Linux somente podem ser criados sob as partições de disco. A
padronização desta estrutura de partições permite que se tenha até quatro (4) partições
primárias.

Somente em uma partição primária é que o sistema poderá ser carregado e, neste caso específico,
esta partição deve ser marcada como ativa.

ADMINISTRAÇÃO GNU/LINUX - 153/253


Treinamento em Software Livre

Num primeiro exemplo, para o caso de um disco rígido IDE master da primeira interface do
computador, poderíamos então ter as seguintes partições primárias:

/dev/hda1
/dev/hda2
/dev/hda3
/dev/hda4

As partições estendidas são uma variante das partições primárias, entretanto, estas não podem
conter sistemas de arquivos. Elas servem para acomodar as partições lógicas, ou seja, são um
compartimento para partições lógicas.

Num disco físico, somente pode haver uma (1) partição estendida, a qual ocupa o lugar de uma
partição primária. Podem ser configuradas até doze (12) partições estendidas, e sua nomeação vai
da partição /dev/hda5 até /dev/hda16.

Deste modo, num disco físico pode haver até quinze (15), sendo três (3) partições primárias, e
doze (12) partições lógicas (acomodadas em uma partição primária).

Ao ser criada uma partição lógica, o sistema automaticamente nomeia a partição /dev/hda4 como
primária, para que esta então receba a primeira partição lógica, a qual será nomeada como
/dev/hda5.

11.2 CFDISK – Um particionador de Discos

A abordagem preferencial adotada neste treinamento será direcionada para o utilitário de


particionamento de discos, chamado CFDISK ( Curses based disk partition table manipulator for
Linux).

O CFDISK executado diretamente, procura pelo primeiro disco físico do sistema, tipicamente o
disco representado pelo driver /dev/hda, no caso de um disco rígido IDE ou /dev/sda, para o
primeiro disco SCSI.

Para executar o CFDISK, bastar digitar seu nome no prompt de comando. Entretanto, é preciso
de direitos administrativos para que você possa gravar na tabela de partições.

Se desejar particionar um outro disco, informe o seu dispositivo como parâmetro para o comando
CFDISK. Exemplo: # cfdisk /dev/hdc.

Abaixo temos a tela do programa CFDISK, o qual foi executado diretamente, sem parâmetros.

ADMINISTRAÇÃO GNU/LINUX - 154/253


Treinamento em Software Livre

Vamos utilizar o programa CFDISK para criar uma nova partição no sistema e então
realizar os demais procedimentos para que a mesma fique disponível para uso pelos usuários.

1- Posicione o cursor em uma área livre do disco (Free Space) e selecione a opção New .

2- Escolha o tipo de partição, Primária ou Lógica. Escolha Lógica.

3- Escolha o tamanho da partição em MB (megabytes).

4- Escolha o local de criação da partição, início ou fim do espaço disponível.

5- Defina o tipo de partição, através da opção Type. Defina para 83 – LINUX.

6- Grave as alterações na tabela de partição, escolhendo a opção Write.

7- Observe qual foi o nome do dispositivo (hd??) que o CFDISK definiu para esta partição recém
criada (anote), então reinicialize o sistema (init 6, ou reboot).

8- Formate a partição criada gerando um novo filesystem do tipo Ext3:


# mkfs -t ext3 /dev/hda5 --> Cria filesystem do tipo ext3

9- Crie um ponto de montagem para a nova partição criada e monte nele a nova partição.
# cd /
# mkdir pteste
# mount -t ext3 /dev/hda5 /pteste

10- Verificar se a partição foi montada corretamente:


# df -h
# mount

ADMINISTRAÇÃO GNU/LINUX - 155/253


Treinamento em Software Livre

# cat /proc/mounts

11- Configurar o sistema para montar a partição automaticamente ao iniciar o sistema. Editar o
arquivo /etc/fstab:

# vi /etc/fstab
# /etc/fstab: static file System information.
#
# <file System> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/hda1 / ext3 defaults,errors=remount-ro 0 1
/dev/hda2 none swap sw 0 0
/dev/hdc /media/cdrom0 iso9660 ro,user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
/dev/hda5 /pteste ext3 defaults 0 2

12- Após salvar o arquivo (comando do vi “:wq”), faça o sistema ler o arquivo /etc/fstab e montar
todos os filesystems:

# mount -a

Importante:

1- A verificação dos Filesystems são executadas automaticamente à cada 30 montagens, ou então,


somente após 6 meses. O sistema controla esta configuração.

2- A Tabela seguinte apresenta uma descrição do formato do arquivo /etc/fstab:

ADMINISTRAÇÃO GNU/LINUX - 156/253


Treinamento em Software Livre

Coluna Descrição
1a Coluna Informa o dispositivo a ser montado: (/dev/hda1, /dev/hdc1, etc).
2a Coluna Ponto de montagem do filesystem (/mnt, /backup, etc.). Já deve existir.
3a Coluna Tipo do FileSystem, que podem ser:
ext2 Sistema de arquivos do Linux
ext3 Sistema ext2 + Journaling
reiserfs Sistema de arquivos com Journaling do Linux.
msdos Sistema de arquivos do MS-DOS
vfat Sistema de arquivos do MS-Windows 95/98
iso9660 Sistema de arquivos padronizado para unidades de CD-ROM
auto Detecta automaticamente o sistema de arquivos.
4a Coluna Informa as opções de montagem:
defaults Montagem padrão do dispositivo (rw, suid,auto,
exec,nouser,async)
exec Permite a execução de programas da partição.
noexec Não permite a execução de programas da partição.
auto Monta automaticamente a partição.
noauto Montagem somente manual.
user Permite que usuários comuns montem a partição.
user Permite que usuários comuns montem a partição, mas proibe que
outros usuários desmontem.
nouser Somente o administrador (root) pode montar a partição.
rw Monta somente para leitura e escrita.
ro Monta somente leitura (read only).
sync Habilita a transferência de dados síncrona no dispositivo.
async Habilita a transferência de dados assíncrona no dispositivo.
dev Dispositivo especial de caractere.
suid Habilita que executáveis tenham bits suid e sgid
nosuid Desabilita que executáveis tenham os bits suid e sgid.
5a Coluna Dump do dispositivo
0 Não fará o Dump do dispositivo em tempo de montagem.
1 Executará o Dump (dumpe2fs) na partição
Dump executa verificações no superbloco do dispositivo em tempo de inicialização.
6a Coluna Executa ou não a Verificação do Filesystem.
0 Não faz a verificação no Filesystem (fsck).

ADMINISTRAÇÃO GNU/LINUX - 157/253


Treinamento em Software Livre

1 Executa o fsck no root Filesystem (/).


2 Executa o fsck em outras partições, exceto o raiz (/).
Se houverem vários Filesystem a serem verificados, isto é, com valor=2, então o
sistema executa a verificação em modo paralelo se estas pertencerem à discos
rígidos distintos, caso contrário, fará seqüencialmente

11.3 Comandos Para Gerência de Discos, Partições e Filesystems

11.3.1 mount

Comando para montar e desmontar partições.

Sintaxe: mount [opções] <dispositivo> <ponto_montagem>

Opções Descrição
-a Monta todos os dispositivos do arquivo /etc/fstab
-h Exibe a ajuda do comando.
-r Monta o dispositivo somente para leitura.
-w Monta o dispositivo para leitura e gravação.
-t <tipo_fs> Especifica o tipo de Filesystem, que podem ser:
msdos vfat ntfs ext2 ext3 xfs
reiserfs iso9660 nfs smbfs

Exemplos:
#mount -t ext2 /dev/hda5 /mnt/dados
#mount -t vfat /dev/fd0 /mnt/floppy.

11.3.2 umount

Desmonta sistemas de arquivos, que não podem estar em uso.

Sintaxe: umount <dispositivo> ou <ponto_montagem>

Exemplos:
# umount /dev/hdc
# umount /dev/fd0

11.3.3 fsck

Comando para reparação de Filesystems (File System Check).

Sintaxe: fsck [opções] <dispositivo>

ADMINISTRAÇÃO GNU/LINUX - 158/253


Treinamento em Software Livre

Opções Descrição
-A Verifica todos os filesystems em /etc/fstab.
-C Apresenta a barra de progresso da ferramenta.
-N Não executa, somente simula as ações que seriam executadas.
-p Repara automaticamente o sistema de arquivos.
-r Repara interativamente (pede confirmações ao usuário).
-f Força a reparação do Filesystem, mesmo que esteja correto.
-t <tipo_fs> Tipo de Filesystem: ext2, ext3, reiserfs, ou msdos.

Exemplos:
# fsck -t ext3 /dev/hda2
# fsck -t msdos /dev/fd0
# fsck -A

Comandos relacionados:
– fsck.ext2 - fsck.ext3 - fsck.reiserfs
– fsck.mdos - e2fsck - reiserfsck - dosfsck

11.3.4 mkfs

Comando para a criação de um sistema de arquivo. Ele formata logicamente a partição, conforme
o tipo de FileSystem utilizado

Sintaxe: mkfs [opções] <dispositivo>

Opções Descrição
-v Apresenta todos os comandos que estão sendo executados.
-c Verifica blocos ruins no dispositivo.
-t <tipo_fs> Tipo de Filesystem: ext2, ext3, reiserfs ou msdos.

Exemplos:
# mkfs -t ext2 /dev/hdb1
# mkfs -t reiserfs /dev/hdc2
# mkfs -t vfat /dev/hda3

Comandos relacionados:

- mkfs.ext2 - mkfs.ext3 - mkfs.reiserfs


- mkfs.msdos - mke2fs - mkreiserfs
- mkdosfs

11.3.5 resize2fs

Este comando permite o re-dimensionamento do tamanho dos Filesystems do sistema. Ela não
aumenta o tamanho das partições, pois isso somente é possível com o aplicativo fdisk ou cfdisk.

ADMINISTRAÇÃO GNU/LINUX - 159/253


Treinamento em Software Livre

Se houver necessidade de aumento do tamanho de algum Filesystem, deve-se primeiro aumentar a


partição correspondente e então aumentar o tamanho do sistema de arquivos desejado.

Sintaxe: resize2fs [opções] <dispositivo> [tamanho]

Opções Descrição
-f Força o redimensionamento do dispositivo.
-p Exibe a barra de progresso do aplicativo
tamanho Pode ser referenciado em setores, kilobytes, megabytes ou gigabytes,
através dos sufixos s, K, M ou G. Se não for especificado a unidade,
será adotada o tamanho do bloco da partição.
Não é possível aumentar o tamanho do FileSystem acima do tamanho
da partição associada.

Exemplos:
# resize2fs /dev/hda3 55G
# resize2fs /dev/sda1 110G

11.3.6 fdformat – Formatação de Disquetes

Este comando formata fisicamente a unidade de disquete, gerando as trilhas e setores. É muito
útil para a re-utilização de disquetes.

Sintaxe: fdformat [opções] <dispositivo><tipo_drive>

Opções Descrição
-n Não realiza a verificação após a formatação.
tipo_drive É o tipo de drive de disquete:
H1200 – Drive de 5 1/4” com 1,2 MB.
H1440 – Drive de 3 1/2” com 1.44 Mb.

Exemplos:
# fdformat -n /dev/fd0H1440 --> Formata o Drive fd0 (A) com 1.44 Mb.
# fdformat /dev/fd1h1440 --> Formata do Drive fd1 (B) com 1,44 Mb.

Importante!

Os utilitários df (disk free) e du (disk usage) podem ser utilizadas para a visualização dos
espaços em discos e partições, utilizados no sistema. Estes comandos são muito utilizados em
scripts de backup e para verificação constante do uso do espaço em disco, além é claro dos
comandos relacionados ao controle de quotas de disco por usuários e grupos.

O utilitário dumpe2fs pode ser utilizado para informar detalhes mais específicos dos Filesystems
do sistema. Ele apresenta uma série de informações sobre o status e a situação real dos blocos,
superblocos, datas de montagem, última verificação, etc. É muito útil para o acompanhamento da
saúde dos Filesystems do sistema.

ADMINISTRAÇÃO GNU/LINUX - 160/253


Treinamento em Software Livre

11.4 RAID no GNU/Linux

O RAID – Redundant Array of Independent Disks, que significa Arranjo Redundante de Discos
Independentes é uma forma de se obter maior segurança no sub-sistema de discos.

Existem basicamente dois conceitos que são utilizados pelas ferramentas que implementam o
array de discos, que são: espelhamento de dados e a divisão de dados (data striping). Nestes
conceitos então nós temos o Espelhamento de Discos, também denominado de Raid nível 1 e a
Distribuição de Dados, ou Data Striping, que é denominada de Raid nível 5, caso esta última divida
os dados em discos distintos, mas mantenha a integridade via paridade.

Existem outras definições mais profundas com relação aos Array de Discos, entretanto, como as
principais inovações nesta área da tecnologia estão basicamente empregadas diretamente em
placas de RAID e/ou poderosas interfaces HBA, não haverá necessidade e aprofundamento, pois o
Raid que iremos implementar será baseado em software.

O sistema de Raid no GNU/Linux que apresentaremos será baseado na ferramenta mdadm que
está contida no pacote de mesmo nome. Há também o pacote raidtools que apresenta outras
alternativas de comandos e, caso necessário, você também poderá instalar no sistema.

A idéia básica da implementação de um Array de discos é definida sobre dispositivos de


armazenamento, ou seja, um disco rígido completo (hda, hdb, sda, etc), ou somente algumas
partições deste (hda1, hda3, hda5, etc).

Por questões de praticidade e prática de laboratório, iremos apresentar a criação de um Array de


Discos baseado em partições lógicas, pré-existentes no sistema.

Roteiro para a criação de um Array de Discos:

1- Verificar se o pacote mdadm está instalado no sistema, caso contrário o mesmo deverá ser
instalado:
# apt-get install mdadm

2- Se você desejar ver a sincronização dos discos na criação do Array, execute a seguinte linha
de comando:
# while [ 1 ]; do clear; cat /proc/mdstat > /dev/tty10; sleep 1; done;

3- Criar através do cfdisk ou do fdisk, duas partições no sistema com o mesmo


tamanho/capacidade de armazenamento. Por exemplo /dev/hda7 e /dev/hda8.

4- Criar o Array de discos juntando as duas partições anteriormente criadas:


# mdadm –create –verbose /dev/md0 –level=1 –raid-devices=2 /dev/hda7 /dev/hda8
Obs.
Ao executar o procedimento acima, alterne a janela de terminal para a tty10, através do comando
Ctrl + Alt + F10 e acompanha a sincronização das partições.

ADMINISTRAÇÃO GNU/LINUX - 161/253


Treinamento em Software Livre

Importante:
Se no sistema não existirem os devices de Array em /dev, ou seja, os dispositivos md0,
md1,..md15, então deverão ser criados manualmente, conforme segue:
a- Copiar o comando MAKDEV do diretório /dev para o diretório /tmp.
b- Executar o comando: /tmp/MAKDEV md
c- Mover os arquivos md* para o diretório /dev: # mv /tmp/md* /dev.

5- Após o Array estar criado e sincronizado, editar o arquivo


/etc/mdadm/mdadm.conf, deixando conforme segue:

DEVICE /dev/hda7 /dev/hda8


ARRAY /dev/md0 devices=/dev/hda7, /dev/hda8

6- Crie o sistema de arquivos Ext3 neste novo dispositivo:


# mkfs -j /dev/md0

7- Crie um ponto de montagem chamado array para este novo dispositivo em /mnt:
# mkdir /mnt/array

8- Monte o dispositivo de Array no ponto de montagem anterior:


# mount -t ext3 /dev/md0 /mnt/array

9- Ajuste o arquivo /etc/fstab para que monte automaticamente o Array criado:


/dev/md0 /mnt/array ext3 defaults 0 2

10- Verificar os dispositivos:


# mdadm -E /dev/hda7
# mdadm -E /dev/hda8

11- Verificar o status detalhado dos dispositivos:


# mdadm --detail –scan
# mdadm --detail /dev/md0

12- Simular uma falha, caso você precise substituir um dispositivo:


# mdadm /dev/md0 –fail /dev/hda7
# mdadm --detail /dev/md0

13- Remova o dispositivo com problemas, no caso, /dev/hda7:


# mdadm /dev/md0 --remove /dev/hda7
# mdadm --detail /dev/md0

14- Retorne o dispositivo anterior, ou então um novo dispositivo:


# mdadm /dev/md0 –add /dev/hda7
# mdadm --detail /dev/md0

15- Parando e iniciando o Array:


# mdadm -S /dev/md0 --> para o Array
# mdadm -As /dev/md0 --> Iniciando o Array.

ADMINISTRAÇÃO GNU/LINUX - 162/253


Treinamento em Software Livre

12 NÍVEIS DE EXECUÇÃO DO SISTEMA

O GNU/Linux é um sistema operacional multitarefa, multiusuário e seus processos são todos


controlados, podendo ser cancelados a qualquer momento, ou seja, são processos preemptivos.

Neste sentido deve então haver uma prioridade na carga dos processos e no caso do GNU/Linux,
assim como nos sistemas UNIX, esta prioridade é dada ao processo init Ele será o primeiro
processo carregado no sistema, sendo portanto o processo pai de todos os demais e não pode ser
interrompido.

No momento de carga, a BIOS procura na Master Boot Record o programa responsável pela carga
do sistema operacional. Os programas de carga utilizados são o LILO (Linux Loader) ou o GRUB
(Grand Unifield Bootloader) e serão vistos com mais detalhes em outro capítulo.

Os programas de carga então carregam o sistema operacional na memória. Como o Kernel


normalmente fica compactado em disco, no início do arquivo há um programa que descompacta o
Kernel em memória e passa então o controle para ele.

Ao iniciar sua execução, o Kernel faz uma verificação e detecção no hardware do computador,
onde neste momento são apresentadas as mensagens dos dispositivos encontrados e/ou com
problemas.

Após o processo de detecção e verificação do hardware, o Kernel monta o root Filesystem (/) e
executa o processo init, a partir do diretório /sbin/init. Uma vez carregado o init se encarrega de
carregar todos os demais processos necessários.

O processo de carga gerenciado pelo programa init possui dois modos de trabalho. O modo de
carga BSD, ou BSD Init e o modo de carga SysV init. A maioria dos sistemas Unix do mercado e
também das distribuições Linux, utilizam o modelo de carga SysV Init, por ser mais flexível e
permitir configurações personalizadas.

Não será abordado detalhes do processo BSD init, mas os interessados podem ler o capítulo 7 do
livro “Linux – Guia do Administrador do Sistema”, escrito por Rubem E. Ferreira, da Editora
Novatec. Neste capítulo há mais informações sobre o processo de inicialização do BSD.

Na seqüência será apresentado e detalhado todo o processo de carga do SysV init, inclusive os
níveis de execução do Kernel e demais informações sobre os arquivos e scripts para a inicialização
completa do sistema.

12.1 O Processo INIT e os Níveis de Execução do Sistema

Uma vez carregado, o Init muda o estado do Kernel para multitarefa, porém ainda ficando em
modo mono-usuário. Ele então lê o arquivo /etc/inittab, onde estão as configurações que
determinam qual é o nível de execução em que o Kernel irá ser iniciado, bem como toda a
seqüência de scripts shell que serão executados para iniciar todos os demais processos e serviços

ADMINISTRAÇÃO GNU/LINUX - 163/253


Treinamento em Software Livre

do sistema.

Os níveis de execução definem como de fato o sistema irá funcionar e são divididos por números
de 0 à 6 mais os níveis s e S. Estas definições de níveis estão configuradas no arquivo
/etc/inittab e possuem o seguinte formato:

[id]:[níveis_execução]:[ação]:[processo]

Onde:
Campo Descrição
id Seqüência de 1 a 4 caracteres para identificar a linha (deve ser única).
níveis_execução Definem o nível de execução do Kernel, que podem ser:

-0 halt (desliga o sistema)


-1 Monousuário (single-user, geralmente para manutenção)
-2 Multiusuário sem o NFS
-3 Multiusuário com o NFS
-4 Reservado
-5 Multiusuário com modo Gráfico (X11)
-6 Reboot
- s ou S Usados por processos do Kernel durante o início do nível 1.
No Debian, os níveis 2,3 e 4 são todos multiusuários e com X11 carregado.
ação São os comandos a serem executados, conforme o caso, podendo ser:
- respawn, wait, once, boot, bootwait, off, ondemand, initdefault, sysinit
- powerwait, powerfail, powerokwait,ctraltdel, kbrequest
processo É o programa ou script a ser executado.

Na distribuição Debian, os script de inicialização ficam dentro do diretório /etc e no diretório


/etc/init.d. Os diretórios de /etc/rc0.d até /etc/rc6.d possuem os links simbólicos para os
scripts que ficam residentes em /etc/init.d

Cada diretório /etc/rc?.d representa um nível de execução, por exemplo: o diretório /etc/rc2.d
possui os links simbólicos que apontam para os scripts de inicialização residentes dentro do
diretório /etc/init.d. Estes scripts então inicializam os diversos processos e serviços, que ora
estão definidos para a execução no nível 2 (rc2.d), que é um nível multiusuário.

Os links simbólicos nos diretórios /etc/rc?.d que começam com a letra “K” (kill) dizem que o
respectivo serviço será interrompido (killed), onde ele executará o script correspondente, do
diretório /etc/init.d com o parâmetro stop.

Da mesma forma, os links simbólicos que começam com a letra “S” (start) dizem que o respectivo
serviço será iniciado (start), onde então ele executará o script correspondente, do diretório
/etc/init.d com o parâmetro start.

ADMINISTRAÇÃO GNU/LINUX - 164/253


Treinamento em Software Livre

Primeiramente são executados os scripts que iniciam com a letra “K” e depois os scripts que
iniciam com a letra “S”. Em todos os casos, a ordem de execução segue a numeração que segue
após as letras K ou S, definida para cada link simbólico.

Abaixo temos uma relação dos arquivos do diretório /etc/rc2.d, onde serão executados caso o
sistema inicialize em nível de execução 2 – multiusuário.

# ls -l /etc/rc2.d/
total 0
lrwxrwxrwx 1 root root 6 2006-02-08 17:54 K09samba -> /samba
lrwxrwxrwx 1 root root 18 2006-01-27 18:11 S10sysklogd -> ../init.d/sysklogd
lrwxrwxrwx 1 root root 15 2006-01-27 18:11 S11klogd -> ../init.d/klogd
lrwxrwxrwx 1 root root 14 2006-01-27 18:11 S12alsa -> ../init.d/alsa
lrwxrwxrwx 1 root root 13 2006-01-27 18:10 S14ppp -> ../init.d/ppp
lrwxrwxrwx 1 root root 17 2006-01-27 18:27 S18portmap -> ../init.d/portmap
lrwxrwxrwx 1 root root 15 2006-01-27 18:10 S20acpid -> ../init.d/acpid
lrwxrwxrwx 1 root root 14 2006-04-14 11:09 S20apmd -> ../init.d/apmd
lrwxrwxrwx 1 root root 16 2006-01-27 18:30 S20cupsys -> ../init.d/cupsys
lrwxrwxrwx 1 root root 16 2006-01-27 18:28 S20dbus-1 -> ../init.d/dbus-1
lrwxrwxrwx 1 root root 15 2006-01-27 18:10 S20exim4 -> ../init.d/exim4
lrwxrwxrwx 1 root root 21 2006-01-27 18:35 S20firestarter -> ../init.d/firestarter
lrwxrwxrwx 1 root root 15 2006-01-27 18:10 S20inetd -> ../init.d/inetd
lrwxrwxrwx 1 root root 17 2006-01-27 18:08 S20makedev -> ../init.d/makedev
lrwxrwxrwx 1 root root 16 2006-01-27 18:12 S20pcmcia -> ../init.d/pcmcia
lrwxrwxrwx 1 root root 20 2006-03-06 20:03 S20squidtaild -> ../init.d/squidtaild
lrwxrwxrwx 1 root root 13 2006-01-27 18:28 S20ssh -> ../init.d/ssh
lrwxrwxrwx 1 root root 16 2006-03-06 20:03 S20webmin -> ../init.d/webmin
lrwxrwxrwx 1 root root 26 2006-01-27 18:40 S20xdebconfigurator -> ../init.d/xdebconfigurator
lrwxrwxrwx 1 root root 13 2006-01-27 18:28 S21fam -> ../init.d/fam
lrwxrwxrwx 1 root root 15 2006-03-06 20:02 S30squid -> ../init.d/squid
lrwxrwxrwx 1 root root 24 2006-03-06 20:03 S31squid-prefetch -> ../init.d/squid-prefetch
lrwxrwxrwx 1 root root 13 2006-01-27 18:10 S89atd -> ../init.d/atd
lrwxrwxrwx 1 root root 14 2006-01-27 18:10 S89cron -> ../init.d/cron
lrwxrwxrwx 1 root root 16 2006-03-06 20:03 S91apache -> ../init.d/apache
lrwxrwxrwx 1 root root 13 2006-01-27 18:35 S99gdm -> ../init.d/gdm
lrwxrwxrwx 1 root root 19 2006-01-27 18:09 S99rmnologin -> ../init.d/rmnologin
lrwxrwxrwx 1 root root 23 2006-01-27 18:09 S99stop-bootlogd -> ../init.d/stop-bootlogd

Na seqüência temos um arquivo de inicialização /etc/inittab de um sistema Debian Sarge 3.1, onde
podemos ver a seqüência de execução das linhas, de acordo com as informações anteriormente
descritas.

# /etc/inittab: init(8) configuration.


# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $

# --> Nível de Execução Default do Sistema.


id:2:initdefault:

ADMINISTRAÇÃO GNU/LINUX - 165/253


Treinamento em Software Livre

# Script de configuração/inicialização do System Boot-time


# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS

# O que será executado no modo single-user


~~:S:wait:/sbin/sulogin

# /etc/init.d executa os scripts S e K scripts na troca do nível de execução


#
# Runlevel 0 is halt (desliga).
# Runlevel 1 is single-user (mono-usuário – manutenção).
# Runlevels 2-5 multiusuário (sistemas Debian)
# Runlevel 6 is reboot.

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# Normalmente não executado, mas em caso de emergência.
z6:6:respawn:/sbin/sulogin

# Executar quando a seqüência CTRL+ALT+DEL for pressionada


# Reinicializa o sistema
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
# Desliga o sistema
#ca:12345:ctrlaltdel:/sbin/halt

# Action on special keypress (ALT-UpArrow).


#kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work."

# What to do when the power fails/returns.


pf::powerwait:/etc/init.d/powerfail start
pn::powerfailnow:/etc/init.d/powerfail now
po::powerokwait:/etc/init.d/powerfail stop

# /sbin/getty invocations for the runlevels.


#
# The "id" field MUST be the same as the last
# characters of the device (after "tty").
#
# Format:
# <id>:<runlevels>:<action>:<process>
#
# E muitos sistemas Debian tty7 é usado para o X Window System,
# Lembre-se de não ativar o tty7 se deseja executar o X Window neste terminal.
#

ADMINISTRAÇÃO GNU/LINUX - 166/253


Treinamento em Software Livre

1:2345:respawn:/sbin/getty 38400 tty1


2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

# Example how to put a getty on a serial line (for a terminal)


#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

# Example how to put a getty on a modem line.


#
#T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3

Algumas distribuições possuem comandos adicionais que auxiliam no processo de controle dos
scripts de inicialização. Porém, estes comandos somente procedem a execução dos scripts
propriamente ditos.

Comando Descrição
service Inicia, interrompe, reinicializa e apresenta o status dos serviços.
chkconfig Gerencia os scripts de inicialização. Adiciona ou remove serviços.
ntsysv Gerencia através de menus os scripts de inicialização.

A seqüência canônica de carga do sistema, de acordo com o padão SysV Init é a seguinte:

1- O processo init lê o arquivo /etc/inittab e define o nível de execução do sistema.


2- O processo init executa o script /etc/rc.d/rc.sysinit.
3- O script /etc/rc.d/rc.sysinit executa o script /etc/rc.d/rc.serial (se existir).
4- O processo init executa o script /etc/rc.d/rc que recebe o nível de execução como parâmetro.
5- O processo /etc/rc.d/rc executa os scripts correspondentes ao nível de execução do sistema,
dos diretórios /etc/rc.d/rc0.d até /etc/rc.d/rc6.d
6- O processo init executa o script /etc/rc.d/rc.local
7- O processo init executa os processos mingetty para configurar os terminais tty.

Como podemos ver, na distribuição Debian não é seguido completamente o padrão de inicialização
SysV Init, porém é mais simples e funcional.

ADMINISTRAÇÃO GNU/LINUX - 167/253


Treinamento em Software Livre

ADMINISTRAÇÃO GNU/LINUX - 168/253


Treinamento em Software Livre

13 GERENCIAMENTO DE PROCESSOS

Em termos gerais, processo é um programa de computador em execução. Dentro de uma visão de


sistema operacional, é a estrutura de software responsável pelas informações necessárias à
execução dos códigos executáveis.

No sistema, são entidades independentes e cada uma destas entidades possui suas permissões de
acesso e atributos, além de outras características. O controle da execução dos processos permite
a otimização da CPU e a correta utilização da memória, permitindo assim que vários processos
possam ser executados quase simultaneamente.

Em termos básicos um processo passa por vários estágios durante seu tempo de execução. Estes
estágios indicam a situação dos processos em execução e permitem assim, uma melhor gerência
sobre os mesmos.

Estado Descrição
Ready Quando o processo é iniciado pelo Init.
Running Processo que ganhou o controle da CPU e está em execução.
Waiting Processo em estado de espera, por dados de i/o por exemplo.
Zombie Processo em estado zumbi é um processo morto, porém seu processo
pai não foi informado. É também referenciado como Defunct.

13.1 Tipos de Processos e Atributos

A execução dos processos também recebe uma classificação formal, onde podemos diferenciar os
processos, conforme segue:

ADMINISTRAÇÃO GNU/LINUX - 169/253


Treinamento em Software Livre

- Processos em Foreground (primeiro plano)


São processos iniciados em terminais e que geralmente possuem interação com os
usuários.
Estes tipos de processos recebem dados da entrada padrão (stdin) do terminal que os controla e
envia dados para a saída padrão (stdout), ou então para uma saída de erros (stderr). Com as teclas
Ctrl + Z é possível suspender um processo em Foreground. Ctrl + X aborta o processo.

- Processos em Background (segundo plano)


São processos sendo executados em segundo plano, não interagindo com os usuários. Eles
normalmente não prendem o prompt de comando e suas mensagens são gravadas em logs no
sistema.
Geralmente são os daemons do sistema, que são processos servidores, como o Apache (httpd), o
servidor Samba (smbd e nmbd), dentre outros

A tabela seguinte apresenta os atributos dos processos no GNU/Linux.

Atributo Descrição
PID É o process Identification. Identifica o processo na fila de processos. É um número
único e não pode ser repetido. O init recebe o PID 1.
PPID É o Parent Process Identification. É o PID do processo PAI que gerou o processo.
UID É o User Identification. É a identificação do usuário que criou o processo e por
conseqüência, todos os seus direitos ficam atrelados às permissões deste usuário.
GID É o Group Identification. É o GID do grupo ao qual o processo pertence.
Effective User Identification. Representa a identificação efetiva do usuário, ou seja,
para aqueles arquivos que possuem o bit SetUid ativado (passwd), onde o sistema
EUID
assume as permissões do dono do arquivo e não do usuário que chamou o programa. O
EUID nestes casos será o do dono do arquivo.
EGID É o Effective Group Identification. É a identificação efetiva do grupo, similar à
descrição do EUID para usuários.

Prioridades dos Processos

O escalonador do Kernel possui uma ordem de prioridade para os processos. Esta ordem possui o
seguinte padrão:

- 20 = Maior Prioridade
+ 19 = Menor Prioridade
+ 10 = Prioridade Padrão

O comando nice permite executar um programa ou comando, com uma determinada prioridade,
diferente da prioridade padrão (+10). Já o comando renice permite que seja alterada a prioridade
de um processo em execução. Esta prerrogativa é concedida somente ao usuário root.

ADMINISTRAÇÃO GNU/LINUX - 170/253


Treinamento em Software Livre

13.2 Comandos para a Gerência de Processos

Comando Descrição
Ctrl + C Aborta um programa em execução.
Ctrl + Z Suspende um programa em execução.
& Executa um programa/script em segundo plano
Ex: # ls -l > lista_dir.txt &
Coloca um processo em segundo plano
Exemplo: # vi
bg Ctrl Z
[1] + Stopped vi
bg %1
[1] + vi
fg Coloca um processo em primeiro plano. (inverso do comando bg)
Exibe os jobs em execução pelo Shell.
Sintaxe: jobs [opções]
jobs Opções:
-l Exibe nome e número de cada processo.
-s Exibe o nome de cada processo.
-p Exibe o número de cada processo.
Exibe informações sobre os processos.
Sintaxe: ps [opções]
Opções:
-A Exibe informações de todos os processos (similar à opção e).
ps a Exibe informações de processos de outros usuários.
u Exibe usuário e a hora de início de cada processo.
x Exibe processos não associados à terminal (exemplo: daemon).
-e Exibe todos os processos de forma resumida.
-f Exibe uma lista completa dos detalhes do processo (full list).
Veja mais informações no manual on-line Exemplo: # man ps
Exibe os processos em forma de uma árvore hierárquica.
Sintaxe: pstree [opções] [pid]
Opções:
pstree -a Exibe os argumento da linha de comando do processo.

ADMINISTRAÇÃO GNU/LINUX - 171/253


Treinamento em Software Livre

Comando Descrição
-c Não compacta as sub-árvores (lista toda a hierarquia).
-l Lista detalhada (long list).
-n Classifica processos pelo ID ao invés do Nome do processo.
-p Mostra os aids dos processos.
Exibe processos com maior utilização de CPU, por faulhes. As informações são
apresentadas em tempo real. O comando atualiza a tela a cada 3 segundos, mas
você pode alterar este tempo através da opção -d <n> na linha de comando, onde
n é o tempo em segundos para atualizar a tela.
Comandos digitados dentro da execução do top:
top s=Altera o tempo de refresh em segundos
P=Ordena pelo uso de CPU.
M=Ordena pelo uso de memória.
A=Ordena por tempo em memória.
z=Muda a cor.
Z=Configura as cores.
k=Cancela um processo pelo PID.
free Apresenta a quantidade de memória livre e utilizada pelo sistema
vmstat Apresenta as estatísticas de utilização da memória virtual do sistema.
Executa um processo com prioridade diferente da padrão (+10).
Sintaxe: nice <prioridade> <comando>
nice Opções Descrição
prioridade de -20 até +19 (-20 é a mais alta e +19 a mais baixa).
comando Comando a ser executado com a prioridade especificada.
Exemplo: # nice -3 “fsck /dev/hda3”
Modifica a prioridade de um processo em execução.
Sintaxe: renice <prioridade> [opções]
Opções Descrição
renice <prioridade> -20 até +19
-p <PID> Altera prioridade para o processo com o PID especificado.
-u <usuário> Altera prioridade para todos os processos do usuário.
-g <grupo> Altera prioridade para todos os processos do grupo.
Exemplos:
# renice +4 -u tux
#renice -5 -g curso

ADMINISTRAÇÃO GNU/LINUX - 172/253


Treinamento em Software Livre

Comando Descrição
Exibe de forma mais elaborada as informações dos processos em execução,
apresentando a utilização das memórias físicas e virtual e as cargas de
htop
processamento em todas as CPUs detectadas pelo Kernel.
Finaliza um processo pelo PID.
Sintaxe: kill [sinal] <PID>
Opções Descrição
kill -n Sinal a ser enviado ao processo com o PID informado onde:
0 = Saída normal do programa.
1= -HUP, faz o programa re-ler seus arquivos
2= Interrupção de teclado (ctrl + c)
3= Interrupção de teclado (ctrl + \).
9= Cancela incondicionalmente o processo.
15=Cancela o processo de forma normal.
Exemplos: # kill -9 `lsof -t -u tux` --> cancela todos os processos do usuário
tux.
Finaliza processos pelo nome.
Sintaxe: killall [sinal] <nome_processo>
Opções Descrição
-n Sinal a ser enviado ao processo com o nome_processo informado
onde:
killall
0 = Saída normal do programa.
1= -HUP, faz o programa re-ler seus arquivos (flush)
2= Interrupção de teclado (ctrl + c)
3= Interrupção de teclado (ctrl + \).
9= Cancela incondicionalmente o processo.
15=Cancela o processo de forma normal.
Exemplo: # killall -9 httpd --> Cancela todos os processos httpd (apache).

ADMINISTRAÇÃO GNU/LINUX - 173/253


Treinamento em Software Livre

ADMINISTRAÇÃO GNU/LINUX - 174/253


Treinamento em Software Livre

14 GERENCIADORES DE BOOT – GRUB E LILO

Gerenciadores de boot são programas que ficam residentes na Master Boot Record – MBR e
possuem a finalidade de carregar o sistema operacional em memória. No sistema GNU/Linux
existem dois programas para esta finalidade, o LILO - Linux Loader e o GRUB – Grand Unified
Bootloader.

Até onde sabemos, somente o Grub está sendo mantido pelo comunidade mundial. O Lilo está em
processo de descontinuidade, entretanto, a situação atual do sistema é funcional e atende às
necessidades dos sistemas.

O Grub possui mais facilidades, está mais atualizado e permite, por exemplo, definir uma senha
para o acesso às configurações de boot, não permitindo que pessoas, mesmo com acesso físico aos
setores, possam editá-lo. É uma segurança a mais ao sistema.

14.1 LILO – Linux Loader

O LILO é um dos programas mais antigos do GNU/Linux, mas ainda algumas distribuições o
mantém devido ao amplo conhecimento deste aplicativo pela comunidade de software livre, o que
facilita muito o suporte.

O LILO é um programa dividido em duas partes. A primeira fica residente na MBR e a outra no
disco rígido. A divisão em dois arquivos é necessária pois o espaço disponível na MBR é muito
pequeno e não caberia todo o sistema.

As configurações do LILO ficam residentes no arquivo /etc/lilo.conf. Este arquivo possui seção
global, seções por imagem e opções de Kernel.

As opções globais configuram o sistema LILO como um todo. As seções por imagem se referem às
configurações específicas de cada sistema operacional instalado na máquina. As opções de Kernel
são necessárias para a eventual passagem de parâmetros ao Kernel no momento de sua chamada
para carga. As opções configuradas nas seções por imagem, têm precedência sobre as opções
globais.

O LILO também possui um programa denominado “instalador de mapas”, o qual lê as configurações


do arquivo /etc/lilo.conf e gera um arquivo de mapas. Este arquivo é utilizado então pelo
gerenciador para encontrar e carregar a imagem do Kernel, ou de outros sistemas operacionais.

Opções Globais
timeout=<segs> Tempo de espera pelo LILO para a carga do sistema
default.
prompt Libera um prompt para u usuário escolher o sistema.
boot=<dispositivo> Nome do dispositivo, ou partição que contenha o setor de
inicialização. Se omitido, será lido o dispositivo que
contenha o root Filesystem.

ADMINISTRAÇÃO GNU/LINUX - 175/253


Treinamento em Software Livre

map=<arq_mapa> É a localização do arquivo de mapas, o padrão é /


boot/map.
install=<arquivo_boot> Especifica a localização do arquivo do setor de boot. O
padrão é /boot/boot.b
default=<nome_img> Indica qual será a imagem carregada como Default.
O parâmetro nome_img deve ser um “label” anteriormente
configurado. Se não informado o LILO irá carregar a
primeira imagem encontrada no arquivo.
message=<arquivo> Arquivo contendo uma mensagem a ser apresentada,
antes da linha de inicialização.
password=<senha> Permite colocar uma senha para a carga de todas as
partições. É um parâmetro global.
restricted Somente pedirá senha se o sistema entrar em sigle-user.

Opções para Imagens


image=<img_kernel> Indica onde está a imagem do Kernel (Ex. /boot/vmlinuz)
other=<dispositivo> Informa o dispositivo contendo um sistema operacional a
ser carregado.
label=<nome> Usado após a imagem do Kernel para possibilitar dar um password=<senha>
Senha para a carga da imagem especificada.
root=<dispositivo> Indica qual partição deverá ser montada como raiz.
table=<dispositivo> Dispositivo que contém a tabela de partição. Se não
informado o LILO não passará ao sistema operacional
esta informação.

Opções de Kernel
Append=<string> Parâmetros de hardware passados ao Kernel.
ramdisk=<tamanho> Se necessário definir um disco em RAM. Se não
informado, será utilizado a definição do Kernel a ser
carregado.
root=<dispositivo> Indica qual partição deverá ser montada como raiz.
read-only Monta o root Filesystem em modo somente leitura.
read-write Monta o root Filesystem em modo leitura-escrita.

Exemplo de um arquivo /etc/lilo.conf:

# Arquivo de configuração do LILO

### Seção de parâmetros globais do LILO ###


boot=/dev/hda
vga=normal
password=boboalegre

message=/boot/mensagem.txt
prompt
timeout=100
single-key

ADMINISTRAÇÃO GNU/LINUX - 176/253


Treinamento em Software Livre

### Seção de partições do LILO ###

# Slackware Linux usando kernel 2.2.16


image=/boot/vmlinuz-2.2.16
root=/dev/hda1
label=Slackware
read-only
alias=1

# Conectiva Linux 5.1 usando kernel 2.2.17


image=/boot/vmlinuz-2.2.17
root=/dev/hda2
label=Conectiva1
read-only
alias=2

# Conectiva Linux 5.1 usando kernel 2.2.16-cl6


image=/boot/vmlinuz-2.2.16-cl6
root=/dev/hda2
label=Conectiva2
read-only
alias=3

# Debian 2.2 usando kernel 2.2.17


image=/boot/vmlinuz-2.2.17
root=/dev/hdb1
label=Debian1
read-only
alias=4

# Debian 2.2 usando kernel 2.2.18


image=/boot/vmlinuz-2.2.18
root=/dev/hdb1
label=Debian2
read-only
alias=5

# Ruindows e Nojenta e Oitxo


other=/dev/hdc1
label=Ruindows
table=/dev/hdc
alias=6
# Fim da configuração do LILO

Abaixo temos um exemplo do LILO rodando com as configurações anteriores:


--------------------------------------------
Exemplo de mega-configuração do LILO rodando
--------------------------------------------
Digite as opções para bootar em cada sistema:

ADMINISTRAÇÃO GNU/LINUX - 177/253


Treinamento em Software Livre

[1] - Slackware Linux usando kernel 2.2.16


[2] - Conectiva Linux 5.1 usando kernel 2.2.17
[2] - Conectiva Linux 5.1 usando kernel 2.2.16-cl6
[3] - Debian 2.2 usando kernel 2.2.17
[4] - Debian 2.2 usando kernel 2.2.18
[5] - Ruindows e Nojenta e Oitxo
--------------------------------------------
Após as mudanças nos arquivo /etc/lilo.conf, devemos executar o comando “lilo” sem parâmetros,
para que o mesmo leia o arquivo de configuração e atualize as informações. É possível passar o
parâmetro -D <sis_oper> informando qual será o sistema operacional default na carga do sistema.
(Ex. # lilo -D linux).

14.2 GRUB – Grand Unified Bootloader

Devido à sua grande flexibilidade o GRUB está sendo adotado por cada vez mais distribuições do
GNU/Linux. É possível, por exemplo, buscar imagens do Kernel pela rede, por cabos seriais,
suporta sistemas de discos rígidos e terminais remotos.

As configurações do GRUB ficam armazenadas no arquivo /boot/grub/menu.lst e possui várias


opções de configuração. Abaixo segue algumas definições dos parâmetros de configuração:

Opções Descrição
timeout=<segs> Tempo de espera para seleção, caso contrário carrega o sistema default.
default=<nro_imagem> Define o número da imagem default a ser carregada.
fallback=<nro_img> Define a imagem alternativa, caso a default não consiga carregar.
color=<nro_cores> Define o número de cores a serem utilizadas no menu do Grub.
foreground=<hexa> Define a cor de primeiro plano.
background=<hexa> Define a cor de fundo.
splashimage=<arq> Informa o arquivo a ser utilizado como imagem de papel de parede.
password=<senha> Senha de acesso aos comandos do Grub.
Pode ser gerada via grub-md5-crypt.
hiddenmenu Esconde o menu do Grub até que seja pressionada a tecla ESC. Se o
tempo de timeout expirar, então o sistema default será iniciado.
title=<nome> Define um nome para a imagem a ser carregada. Ex. Linux, Kernel2.6.8
root=(hd?,pt) Inform qual hd (?) e qual partição (pt) da imagem a ser carregada.
Exemplo: root (hd0,0), root (hd1,2).
kernel=<dir_img> Informa o caminho da imagem do Kernel. Exemplo:
/boot/vmlinuz-2.6.8-2-k7 root=/dev/hda1 rw
initrd=<dir_initrd> Informa o caminho para a imagem do tipo initrd, a qual contém os
módulos do Kernel, gerados no processo de compilação. Exemplo:

ADMINISTRAÇÃO GNU/LINUX - 178/253


Treinamento em Software Livre

Opções Descrição
initrd /boot/initrd.img-2.6.8-2-k7.
chainloader <arq> ou +1 Define um arquivo (arq) a carregar de forma encadeada ou o primeiro
setor da partição +1 (somente para DOS/Windows).

Para mais detalhes sobre o GRUB, acesse o site oficial em:


http://www.gnu.org/software/grub.

Abaixo um exemplo do arquivo menu.lst:

# menu.lst - See: grub(8), info grub, update-grub(8)


# grub-install(8), grub-floppy(8),
# grub-md5-crypt, /usr/share/doc/grub
# and /usr/share/doc/grub-doc/.

## default num
# Set the default entry to the entry number NUM. Numbering starts from 0, and
# the entry number 0 is the default if the command is not used.
#
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
default 0
timeout 5
# Pretty colours
color cyan/blue white/blue

## password ['--md5'] passwd


# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line) and entries protected by the
# command 'lock'
# e.g. password topsecret
# password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret
# examples
#
# title Windows 95/98/NT/2000
# root (hd0,0)
# makeactive
# chainloader +1
#
# Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST

### BEGIN AUTOMAGIC KERNELS LIST


## lines between the AUTOMAGIC KERNELS LIST markers will be modified
## by the debian update-grub script except for the default options below

## DO NOT UNCOMMENT THEM, Just edit them to your needs

ADMINISTRAÇÃO GNU/LINUX - 179/253


Treinamento em Software Livre

## ## Start Default Options ##


## default kernel options
## default kernel options for automagic boot options
## If you want special options for specifiv kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
# kopt=root=/dev/hda1 ro

## default grub root device


## e.g. groot=(hd0,0)
# groot=(hd0,0)

## should update-grub create alternative automagic boot options


## e.g. alternative=true
## alternative=false
# alternative=true

## should update-grub lock alternative automagic boot options


## e.g. lockalternative=true
## lockalternative=false
# lockalternative=false

## altoption boot targets option


## multiple altoptions lines are allowed
## e.g. altoptions=(extra menu suffix) extra boot options
## altoptions=(recovery mode) single
# altoptions=(recovery mode) single

## controls how many kernels should be put into the menu.lst


## only counts the first occurence of a kernel, not the
## alternative kernel options
## e.g. howmany=all
## howmany=7
# howmany=all

## should update-grub create memtest86 boot option


## e.g. memtest86=true
## memtest86=false
# memtest86=true

## ## End Default Options ##

splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Debian GNU/Linux, kernel 2.6.8-2-686
root (hd0,0)
kernel /boot/vmlinuz-2.6.8-2-686 root=/dev/hda1 ro
initrd /boot/initrd.img-2.6.8-2-686
savedefault
boot

ADMINISTRAÇÃO GNU/LINUX - 180/253


Treinamento em Software Livre

title Debian GNU/Linux, kernel 2.6.8-2-686 (recovery mode)


root (hd0,0)
kernel /boot/vmlinuz-2.6.8-2-686 root=/dev/hda1 ro single
initrd /boot/initrd.img-2.6.8-2-686
savedefault
boot
### END DEBIAN AUTOMAGIC KERNELS LIST

Para utilizar e atualizar as configurações do GRUB e proceder sua cópia para o setor de boot,
execute:
# grub-install /dev/hda

Para configurar um papel de parede diferenciado para ser apresentado no menu de inicialização do
GRUB, a imagem deve possuir as seguintes características:
- formato .xpm
- 14 cores
- resolução de 640x480
- deve ser compactada com gzip.
Exemplo: # gzip -9 imagem.xpm.

Copiar então a imagem acima para o diretório /boot/grub e atualize suas referências no arquivo
/boot/grub/menu.lst.

ADMINISTRAÇÃO GNU/LINUX - 181/253


Treinamento em Software Livre

ADMINISTRAÇÃO GNU/LINUX - 182/253


Treinamento em Software Livre

15 PAM – PLUGGABLE AUTHENTICATION MODULES

O PAM – Pluggable Authentication Modules é um conjunto de bibliotecas compartilhadas que


permitem flexibilizar o processo de autenticação no sistema. Com ele é possível definir como as
aplicações autenticam usuários, sem no entanto termos que recompilar programas ou coisa
parecida.

A base de trabalho do PAM é baseada em serviços. Os programas que se utilizam do pam definem
seu próprio nome de serviço e seu respectivo arquivo de configuração. O programa Login, por
exemplo, define um serviço chamado login e seu arquivo de configuração na estrutura do PAM é o
/etc/pam.d/login e é deste modo para os demais serviços baseados no PAM.

As bibliotecas do PAM ficam armazenadas no diretório /lib/security e os arquivos de


configurações ficam em /etc/pam.d/. Todos os serviços que se utilizam do PAM devem possuir
neste diretório, os seus respectivos arquivos de configuração.

15.1 Arquivos de Configuração do PAM

As configurações dos arquivos do PAM possuem uma sintaxe definida e para que os módulos
funcionem corretamente é preciso obedecer e entender o que faz cada linha dentro destes
arquivos.

A sintaxe padrão é a seguinte:

<tipo_módulo> <flag_controle> <módulo> <parâmetros>

Tipo Módulo Descrição


auth Faz a autenticação do usuário, solicitando e verificando sua senha e liberando o
acesso se tudo estiver correto com o usuário.
account Verifica a conta do usuário, se não expirou, se ele pode acessar o sistema em
determinado horário, restringindo ou permitindo acesso.
password É requerido para o processo de atualização da senha do usuário e configurações
relativas à senhas.
session É responsável pela gerência da sessão de um usuário que foi autenticado pelo
sistema. Ele pode, por exemplo, criar o diretório home para usuários novos.

Flag Descrição
Controle
required Indica que o módulo é requerido e não pode falhar, ou seja, no caso de um usuário
se autenticando, este deve passar nesta etapa. Se falhar, o usuário não receberá
mensagens até que todos os outros módulos do mesmo tipo sejam verificados.
requisite indica que o módulo é requerido para que a autenticação seja bem-sucedida.

ADMINISTRAÇÃO GNU/LINUX - 183/253


Treinamento em Software Livre

Flag Descrição
Controle
Entretanto, se ocorrer uma falha, ou seja, o usuário não passar nesta etapa, ele é
notificado imediatamente, indicando o que falhou.
sufficient Indica que se houver falha na autenticação, não implica em falhar todo o processo
de autenticação, ou seja, é suficiente mas não obrigatório, pois se a autenticação
sufficient for bem sucedida e os módulos anteriores com required obtiveram
sucesso, os demais módulos do mesmo tipo não serão executados.
optional Significa que se um módulo deste tipo falhar, não implica na falha do processo de
autenticação. Este módulo é necessário para se ter uma autenticação bem
sucedida, quando os módulos anteriores falharem, ou seja, ele é á última fronteira
de execução, se todos os anteriores tiverem falhado.
include Permite a inclusão de outros arquivos de configuração utilizados no PAM.

Abaixo temos alguns dos principais módulos do PAM que são utilizados no dia-a-dia, dentro das
configurações de segurança dos servidores. Estão relacionados os que foram encontrados, porém
qualquer pessoa que conheça um pouco de programação, poderá desenvolver seu próprio módulo do
PAM.

Módulo Descrição
pam_securetty Controla o login em terminais seguros para o root. Verifica no arquivo
/etc/securetty se o terminal do root, em processo de login, está contido neste
arquivo. Para demais usuários retorna como sucesso. Deve ser utilizado com o
Flag required.
pam_nologin Desabilita o login de qualquer usuário que não seja o root, se e somente se,
existir o arquivo /etc/nologin.
pam_cracklib Este módulo é utilizado somente no módulo passwd e faz verificações
relacionadas à senha utilizada, por exemplo, se a senha é uma senha forte, se é
uma senha já utilizada, etc. Esta verificação é realizada antes que a senha seja
alterada.
Exemplos com os parâmetros:
...pam_cracklib.so retry=3 minlen=8 difok=3
pam_pwdb É um modo genérico para autenticação no PAM. Ele solicita usuário e senha e
faz as verificações pertinentes Aceita vários parâmetros: use_first_pass,
try_first_pass, use_authtok, md5, shadow,nullok, debug. Nos sistemas Debian
este módulo não é instalado por default.
pam_whell Este módulo somente permite o login de usuários que pertençam ao grupo do
root (gid=0). Qualquer outro usuário não terá acesso. Se utilizado com o
parâmetro “group=suporte” somente permite login dos usuários membro deste
grupo.
pam_unix É o módulo para autenticação padrão do Unix/Linux. Ele solicita as chamados
do sistema para verificação da autenticação e informações de contas de
usuários, obtidas dos arquivos /etc/passwd e /etc/shadow.

ADMINISTRAÇÃO GNU/LINUX - 184/253


Treinamento em Software Livre

Módulo Descrição
pam_time Faz verificações no arquivo /etc/security/time.conf para permitir o não o login
do usuário.
pam_mkhomedir É usado para criar o diretório home dos usuários, quando estes estão em bases
centralizadas como no SAMBA, Ldap, etc. Exemplo:
... pam_mkhomedir.so skel=/etc/skel/ umask=0022
pam_access Permite ou não o login de usuários, baseado nas configurações do arquivo
/etc/security/access.conf.

Abaixo exemplos de configurações de arquivos do PAM:

Arquivo /etc/pam.d/login
auth requisite pam_securetty.so
auth requisite pam_nologin.so
auth required pam_env.so
@include common-auth
account requisite pam_time.so
account required pam_access.so
@include common-account
@include common-session
session optional pam_motd.so
@include common-password

Arquivo /etc/pam.d/gdm
#%PAM-1.0
auth requisite pam_nologin.so
auth required pam_env.so
@include common-auth
@include common-account
session required pam_limits.so
@include common-session
@include common-password

ADMINISTRAÇÃO GNU/LINUX - 185/253


Treinamento em Software Livre

ADMINISTRAÇÃO GNU/LINUX - 186/253


Treinamento em Software Livre

16 AGENDADORES DO SISTEMA – CRON E AT

No ambiente do GNU/Linux existem dois aplicativos que possuem a finalidade de controlar o


agendamento de tarefas de usuários e administradores. Estas ferramentas são flexíveis e, apesar
da aparência de seus arquivos, são de fácil configuração.

Serão apresentados os comandos AT e Crontab, que são os mais tradicionais e também oferecem
todos os recursos necessários para o agendamento de tarefas repetitivas no ambiente, como por
exemplo, backups e rotação de Logs.

16.1 O Comando at

O comando at permite o agendamento de tarefas durante o dia. Se no agendamento o horário já


tiver decorrido, ele será automaticamente alocado para o dia seguinte. Ele não permite o
agendamento constante de tarefas. Esta característica ficará a cargo do comando Crontab.

O uso do comando at é baseado nas existência dos arquivos /etc/at.allow e /etc/at.deny. Se


existir o arquivo /etc/at.allow, então somente os usuários contidos neste arquivo poderão agendar
tarefas no sistema. Se este arquivo não existir, o at verifica então o arquivo /etc/at.deny e todos
os usuários que não estiverem neste arquivo poderão utilizar o comando. Se nenhum arquivo
destes citados existir, então somente o usuário root terá permissão para utilizar o comando at.

O padrão e a existência do arquivo /etc/at.deny, o qual vêm contido com todas as contas de
serviços do sistema, ou seja, todos os usuários que porventura se logarem no sistema, poderão
agendar tarefas.

Sintaxe: at [opções] <HH:mm> [MM/dd/YYYY] [+incr]

Onde:
Opções:
-m Envia e-mail ao usuário avisando que o comando foi executado.
-l Lista os trabalhos na fila de execução do comando at
-f <arq> Lê os comandos do arquivo arq para execução.
-d <job> Exclui o comando agendado.

Exemplos:

# at 19:40 05/04/2006
> ls -lrt /var/log
pressione <Enter>
pressione <Ctrl> + <D>
# at -f /home/suporte/agenda.sh 10:40 05/08/2006

Os jobs do comando at ficam armazenados no diretório /var/spool/cron/atjobs/, onde ele cria


arquivos seqüenciais individuais para cada tarefa agendada. Estes arquivos possuem o formato
texto e você pode visualizar o seu conteúdo.

ADMINISTRAÇÃO GNU/LINUX - 187/253


Treinamento em Software Livre

Para que o comando at esteja funcional no sistema é preciso que o daemon atd esteja executando.
Verifique no sistema, através do comando ps -e | grep Atd, bem como se está no script de
inicialização de serviços em /etc/init.d/atd.

16.2 O Comando Crontab

Da mesma forma que o comando at, o sistema de agendamento baseado no Cron (deus do tempo na
mitologia Grega) necessita de um daemon para seu funcionamento. Este daemon é o cron.

O cron lê seus arquivos de configuração e os executa conforme as datas e horários determinados.


Ele utiliza o arquivo /etc/crontab para ler as configurações dos agendamentos do sistema. Os
arquivos de agendamento de usuários ficam residentes no diretório /var/spool/cron/crontabs/.

O sistema Cron possui duas formas de trabalho. Uma é a forma de usuário, onde os usuários
podem agendar tarefas pessoais e que afetam somente seus domínios. A outra forma de trabalho
é baseado no arquivo de configuração /etc/crontab, o qual é o principal meio para agendamento de
tarefas administrativas no sistema.

O comando crontab utiliza os arquivos /etc/cron.allow e /etc/cron.deny para permitir ou negar a


utilização do comando. Se nenhum destes arquivos existir, somente o root poderá executar o
comando crontab. Um arquivo /etc/cron.deny vazio, ou contendo somente as contas de serviços do
sistema, permitirá que todos os usuários possam utilizar o sistema de agendamento.

Sintaxe: crontab [opções] [arquivo]

Opções: Descrição
-u <usuário> <arq> Nome do usuário para o qual o arquivo (arq) crontab será usado.
-u <usuário> -e Edita o arquivo de comandos.
-l Lista os comandos do arquivo crontab.
-r Deleta o agendamento.

Ao chamar o crontab com os comandos apropriados, será aberto na verdade um editor de textos
padrão no sistema (vi) para que você edite o arquivo de agendamento.

Este arquivo possui o seguinte formato, com 6 (seis) colunas, separadas por, pelo menos um
espaço, ou tabulação:

<minutos> <hora> <dia_do_mês> <mês> <dia_semana> <comando>

1a Coluna: minutos: 0-59


2a Coluna: hora: 0-23
3a Coluna: dia_do_mês: 1-31
4a Coluna: mes: 1-12
5a Coluna: dia semana: 0-7, onde Domingo=0 e Domingo=7
6a Coluna: Comando a ser executado:

ADMINISTRAÇÃO GNU/LINUX - 188/253


Treinamento em Software Livre

Os valores das colunas, podem ser:


* = Indica que será executado para todo o intervalo definido.
1-5 = Intervalo entre 1 e 5, por exemplo: Segunda à Sextas-Feiras.
1,2,4 = Dias 1, 2 e 4, por exemplo.
8-12 = Meses de Agosto à Dezembro.

Exemplo:
$ crontab -e
30 20 * * * “ls -l /etc/*.conf > /tmp/arqs_confs.txt”

Tente agendar a seguinte tarefa:


Executar o comando tar -cvzf /tmp/bkp_etc.tar /etc, para ser executado todas as
Quartas-Feiras e Domingo, de Março à Novembro, nos dias 15 e 20, às 14:25 horas.

16.3 Agendamentos do Sistema

Para realizar agendamentos no sistema, de forma que fique configurado para execução de acordo
com definições do administrador, o daemon crond se utiliza do arquivo /etc/crontab, o qual
contém as definições gerais de agendamento.

Existem também os diretório /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly e


/etc/cron.monthly, os quais poderão conter os scripts para execução, por hora, dia, semana e mês,
respectivamente.

O daemon crond executa o programa run-parts em datas e horários determinados no arquivo


/etc/crontab, o qual então executa todos os scripts que estiverem dentro dos diretórios acima
descritos. Esta é uma forma de execução simplificada que já está disponível automaticamente no
sistema.

Todos os demais agendamentos que o administrador do sistema necessitar e que necessitam de


características especiais de execução, deverão então ser colocados diretamente no arquivo
/etc/crontab.

A sintaxe deste arquivo é semelhante à dos arquivos de agendamento dos usuários, porém agora
engloba um campo a mais, o qual solicita o nome do usuário com o qual o crond irá executar o
comando.

<minutos> <hora> <dia_do_mês> <mês> <dia_semana> <usuário> <comando>

1a Coluna: minutos: 0-59


2a Coluna: hora: 0-23
3a Coluna: dia_do_mês: 1-31
4a Coluna: mes: 1-12
5a Coluna: dia semana: 0-7, onde Domingo=0 e Domingo=7
6a Coluna: usuário: Nome do usuário que executará o comando.
7a Coluna: Comando a ser executado:

ADMINISTRAÇÃO GNU/LINUX - 189/253


Treinamento em Software Livre

Os valores das colunas, podem ser:


* = Indica que será executado para todo o intervalo definido.
1-5 = Intervalo entre 1 e 5, por exemplo: Segunda à Sexta-Feiras.
1,2,4 = Dias 1, 2 e 4, por exemplo.
8-12 = Meses de Agosto à Dezembro.

Exemplo de um arquivo /etc/crontab:

# /etc/crontab: System-wide crontab


# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file.
# This file also has a username field, that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command


17 * * * * root run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily
47 6 * * 7 root test -x /usr/sbin/anacron || run-parts --report /etc/cron.weekly
52 6 1 * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.monthly
40 13 15,20 3-11 3,7 tux /home/tux/backup.sh
#

ADMINISTRAÇÃO GNU/LINUX - 190/253


Treinamento em Software Livre

17 FUNDAMENTOS E CONFIGURAÇÕES DE REDE

Se existir algum sistema operacional que nasceu para trabalhar em rede, este sistema é o UNIX,
e por conseguinte o GNU/Linux.

Desde os primórdios de sua história, o UNIX já nasceu testando o protocolo TCP/IP, pois neste
sistema é que a pilha de protocolos teve suas funções básicas implementadas. Daí por diante, a
evolução dos diversos protocolos que compõem a pilha TCP/IP sempre foram implementadas nos
sistemas UNIX e GNU/Linux.

Neste contexto, o suporte pelo GNU/Linux aos protocolos TCP/IP é completo e apresenta todas
as funcionalidades e aplicativos relacionados.

É importante porém, uma pequena introdução nos conceitos gerais de rede e do protocolo TCP/IP
para que fiquem elucidadas possíveis dúvidas sobre as relações entre os modelos RM-OSI e a
pilha de protocolos TCP/IP, além de algumas características importantes deste último.

Abaixo temos as definições formais das camadas de comunicação dos protocolos, no modelo de
referência OSI:

É importante lembrar que, somente os protocolos oficiais da OSI é que seguem o modelo completo
das camadas acima. Na verdade e como o próprio nome nos diz, este é um modelo de referência.

Na arquitetura dos protocolos TCP/IP, o modelo de camadas é um pouco diferente, não tendo
algumas definidas como no modelo de referência, mas estas estão na verdade englobadas em
outras camadas.

ADMINISTRAÇÃO GNU/LINUX - 191/253


Treinamento em Software Livre

Pela figura anterior podemos notar que a pilha de protocolos TCP/IP implementa as camadas de
referência OSI em apenas quatro (4), entretanto, todas as funcionalidades necessárias à
comunicação estão presentes.

No lado direito da figura podemos ver alguns protocolos que compõem a switch TCP/IP e também
algumas aplicações e protocolos que se utilizam dos serviços de rede desta arquitetura.

17.1 TCP/IP Definições Básicas

O protocolo TCP/IP possui um padrão de endereçamento e de formato de seus quadros de


comunicação. Não serão abordados neste capítulo, definições mais complexas sobre os quadros de
comunicação, mas somente detalhes da formação de seus endereços.

O Protocolo IP é o responsável pelos endereços e pela camada de rede. Os endereços IP são


compostos por 32 bits de informação. A representação destes bits é através de quatro (4) grupos
de 8 bits, formando então um byte. Cada byte é então escrito no formato decimal.

Exemplo de endereços IP:


10.112.10.99 125.32.47.253
192.168.0.64 200.201.18.1

Os endereços IPs são também divididos em classes de endereçamento, tendo também algumas
faixas de endereços reservadas e outras que são consideradas inválidas para a comunicação
global, ou seja, na Internet.

ADMINISTRAÇÃO GNU/LINUX - 192/253


Treinamento em Software Livre

Cl 0 7 8 15 16 23 24 31
A 0 Rede Host

B 0 1 Rede Host

C 0 0 1 Rede Host

D 0 0 0 1 Endereço de MultiCast

E 0 0 0 0 1 Endereços Reservados

Apenas as Classes (Cl) A, B e C acima definidas podem ser utilizadas para endereçamento de
redes e hosts. A classe D é reservada para tráfego multicast. Este tipo de tráfego é utilizado nas
comunicações entre servidores de mídia e estações de recepção.

As faixa de endereços podem ser definidas como abaixo:


Classe A: de 1 até 126
Classe B: de 128 até 191
Classe C: de 192 até 223
Classe D: de 224 até 239
Classe E: de 240 até 254

De acordo com a RFC 1918, foram definidas faixas de endereços IPs que não podem ser utilizadas
na Internet, mas somente em redes privadas. As faixas são as seguintes:
Classe Faixa início Faixa fim
A 10.0.0.0 10.255.255.255
B 172.16.0.0 172.31.255.255
C 192.168.0.0 192.168.255.255

17.2 Definições Especiais para Endereços

Os endereços de rede no protocolo TCP/IP, além das características inerentes à sua formação,
possuem também definições importantes que podem alterar o comportamento das comunicações
entre o computador e a rede e até mesmo entre os processo.

Endereço de Loopback
O endereço 127.0.0.1é chamado de Endereço de Loopback. Ele é utilizado para comunicação no
mesmo host, pelos seus processos, sem necessitar gerar tráfego na rede. Nos sistemas
UNIX/Linux é definida a interface “lo” e nesta interface é adicionado o endereço de Loopback

Endereço de Rede
Com foi a apresentado anteriormente, os endereços IPs possuem uma divisão para endereçar a
rede e outra para endereçar os hosts (computadores). Um endereço que possui todos os bits da

ADMINISTRAÇÃO GNU/LINUX - 193/253


Treinamento em Software Livre

divisão de hosts configurado para zero (0), é um endereço de rede.

Por exemplo:
Endereço do host = 200.201.10.52 máscara de rede 255.255.255.0
Address: 200.201.10.52 11001000.11001001.00001010. 00110100
Netmask: 255.255.255.0 11111111.11111111.11111111. 00000000
Network: 200.201.10.0 11001000.11001001.00001010. 00000000

Podemos ver pelos bits que estão zerados na linha Network acima, que este endereço é o
endereço da rede (ou melhor, sub-rede) do computador que está configurado com o endereço
200.201.10.52, tendo como máscara de rede a definição 255.255.255.0.

Lemos da seguinte maneira:


O endereço 200.201.10.52 com máscara 255.255.255.0 possui endereço de rede
200.201.10.0

Endereço de Broadcast
É o inverso do endereço de rede, ou seja, todos os bits do campo que representa os hosts serão
ligados para 1.

Vejamos o mesmo exemplo do endereço anterior:


Endereço 200.201.10.52 máscara 255.255.255.0
Address: 200.201.10.52 11001000.11001001.00001010. 00110100
Netmask: 255.255.255.0 11111111.11111111.11111111. 00000000
Network: 200.201.10.0 11001000.11001001.00001010. 00000000
HostMin: 200.201.10.1 11001000.11001001.00001010. 00000001
HostMax: 200.201.10.254 11001000.11001001.00001010. 11111110
Broadcast: 200.201.10.255 11001000.11001001.00001010. 11111111

Este endereço é utilizado quando uma mensagem deve ser encaminhada para todos os hosts de
uma mesma rede, sem a necessidade de atravessar um roteador.

Máscara de Rede
A máscara de rede não é um endereço propriamente dito. Ela possui a finalidade de classificar as
redes em suas diversas classes, bem como sub-dividir as redes IP em redes menores.

A máscara de rede é quem acaba definindo em qual rede o host está inserido e por tabela, qual
seu endereço de Broadcast. Ela possui todos os bits de endereços da parte de rede configurados
para 1 e todos os bits de endereços da parte host configurados para 0, a não ser que se deseje
sub-dividir uma rede em sub-redes.

A característica da divisão de uma rede em várias sub-redes é a grande vantagem da utilização


das máscaras de rede. Por definição, existem também máscaras de rede para cada classe de
endereços:
Classe Máscara Padrão
A 255.0.0.0 (Ativa 8 bits de rede) ou /8
B 255.255.0.0 (Ativa 16 bits de rede) ou /16
C 255.255.255.0 (Ativa 24 bits de rede) ou /24

ADMINISTRAÇÃO GNU/LINUX - 194/253


Treinamento em Software Livre

Regras Básicas

Para descobrir como utilizar as máscaras de rede fazemos o seguinte:


1- Quantas sub-redes eu preciso? Resp: 4
2- Para 4 sub-redes, quantos bits vou ter que ativar na máscara de rede?
Resposta: Fórmula 2x = Sub-redes --> 2x = 4, logo x=2.
3- Como fica a máscara de rede?
Exemp.: 255.255.255.0 = 11111111.11111111.11111111. 00000000 -default
255.255.255.192 = 11111111.11111111.11111111.11000000 – redef.

Deste modo, se em meu projeto eu preciso de quatro (4) sub-redes, então minha máscara deverá
ser: 255.255.255.192, pois eu emprestei 2 bits dos reservados para hosts, para criar 4 sub-
redes.

Estas configurações são muito aplicadas em vários exemplos do dia-a-dia, para aqueles que
trabalham com a administração de redes e servidores, pois é comum sempre ter que instalar novos
computadores e não haver endereços disponíveis.

Dividindo um Endereço IP em sub-redes – Regras

1- Defina com clareza, quantos endereços IPs deverão possuir cada sub-rede;
2- Calcule a máscara de rede apropriada e os endereços de rede;
3- Agrupe, se necessário, algumas sub-redes em uma sub-rede maior;
4- Faça as conexões físicas corretamente (switchs, hubs, roteadores, etc);
5- Atribua os endereços adequados de cada sub-rede nas interfaces de rede e a
máscara de rede anteriormente definida;
6- Configure as rotas nos roteadores ou gateways.
7- Teste as comunicações entre as sub-redes e se possível, redes externas.

Exercício Prático:

1- Dado o endereço IP 192.168.0.0, crie 4 sub-redes e calcule a máscara correta para cada uma
delas. Encontre para cada sub-rede: Máscara, End. Rede, End. Broadcast e Endereços de Hosts.

2- Na sala de treinamento, os primeiros 3 computadores deverão ser configurados para a 1a sub-


rede, os 3 seguintes na 2a sub-rede, os 3 seguintes na 3a sub-rede e os que sobrarem na 4a sub-
rede.

3- Configure um computador em cada sub-rede para servir de roteador para todas as outras sub-
redes da sala.

4- Teste as comunicações com todos os computadores e com a rede externa.

Observações:
Você pode utilizar o aplicativo ipcalc para realizar os cálculos e mostrar para você todas as
informações, restando somente as configurações das interfaces de rede.

ADMINISTRAÇÃO GNU/LINUX - 195/253


Treinamento em Software Livre

17.3 Configurações das Interfaces de Rede

As configurações das interfaces de rede no GNU/Linux podem ser realizadas de duas formas. A
definitiva que é baseada na edição e configuração do arquivo /etc/Network/interfaces. E também
existe a possibilidade de configurar as interfaces de rede de forma on-line.

Em qualquer caso, é preciso que você tenha as seguintes informações, antes de iniciar o processo
de configura:

– Endereço IP
– Máscara de Rede
– Endereço do Gateway
– Endereço de Broadcast.
– Identificação da interface de rede (eth0, eth1, eth2....)

De posse destas informações a configuração poderá ser realizada com o comando ifconfig que é
um dos comandos de responsabilidade do administrador do sistema.

Exemplos Diversos:

1- Configurando a interface eth0:

# ifconfig eth0 192.168.0.1 netmask 255.255.255.192 broadcast 192.168.0.63


# ifconfig eth1 10.112.10.32 netmask 255.255.255.0 broadcast 10.112.10.255
# ifconfig eth0:1 10.112.11.39 netmask 255.255.255.0 broadcast 10.112.11.255

Este último exemplo mostra como colocar mais de um endereço IP na mesma interface Física,
bastando somente criar um alias para a mesma interface, neste caso eth0:1.

2- Adicionando rotas:

# route add -net 192.168.0.0 netmask 255.255.255.192 dev eth0


# route add -net 10.112.10.0 netmask 255.255.255.0 dev eth1
# route add default dev eth0

3- Permitindo o repasse de pacotes:

# echo 1 > /proc/sys/net/ipv4/ip_forward

4- Ativando o DHCP em uma interface:

# dhclient eth0
# dhclient eth1

ADMINISTRAÇÃO GNU/LINUX - 196/253


Treinamento em Software Livre

5- Configurando as interfaces de forma permanente:

Edite o arquivo /etc/Network/interfaces, através do vi por exemplo, e deixe conforme


abaixo:

# The Loopback Network interface


auto lo
iface lo inet Loopback
# The primary Network interface
auto eth0
iface eth0 inet static
name Placa Ethernet LAN
address 10.112.10.60
netmask 255.255.255.0
broadcast 10.112.10.255
Network 10.112.10.0
Gateway 10.112.10.1

Para configuração com dhcp, deixe como abaixo:

# The Loopback Network interface


auto lo
iface lo inet Loopback
# This is a list of hotpluggable Network interfaces.
# They will be activated automatically by the hotplug subsystem.
mapping hotplug
script grep
map eth0
auto eth0
iface eth0 inet dhcp
name Placa Ethernet LAN

Configurando servidores de DNS:

Edite o arquivo /etc/resolv.conf e deixe-o conforme exemplificado abaixo:

search meudominio.com.br outrodominio.com


nameserver 200.205.10.1
nameserver 201.200.35.252
domain sc.caixa

ADMINISTRAÇÃO GNU/LINUX - 197/253


Treinamento em Software Livre

ADMINISTRAÇÃO GNU/LINUX - 198/253


Treinamento em Software Livre

18 SERVIÇO SSH

O serviço SSH (Secure Shell) implementa um canal seguro de comunicação entre um usuário
remoto e o servidor de rede. Neste canal todo tráfego é criptografado e caso alguém queira
capturar os pacotes para possíveis tentativas de quebra, não irá ter sucesso.

Este serviço é quase um padrão nas distribuições GNU/Linux porque o SSH implementa segurança
no sistema e isso sempre agrega mais estabilidade, principalmente em servidores de rede que
necessitam trabalhar com missão crítica.

18.1 Instalação e Configuração do Servidor SSH

Se você não optou por instalar o serviço SSH no início, ou por algum motivo o mesmo ainda não
está instalado, então os passos seguintes irão apresentar um roteiro para instalação e
configuração deste serviço.

1- Verificar se o serviço está instalado:

# dpkg -l | grep ssh

2- Se não estiver instalado, executar:

# apt-get install ssh

3- Configurar o serviço SSH através da edição do arquivo /etc/ssh/sshd_config.

# vi /etc/ssh/sshd_config

Parâmetro Valor Descrição


Port 22 É a porta padrão para o serviço escutar as chamadas remotas.
Protocol 2 Especifica a utilização da versão 2 do SSH, que é mais estável.
KeyRegenerationInterval Tempo em segundos para “renegociação” da chave de criptografia.
3600
LoginGraceTime 300 Timeout da conexão ssh (em segundos), se não houver login.
PermitRootLogin no Permite ou não que o root entre remotamente via ssh.
RSAAuthentication yes Se utiliza dos protocolos RSA com troca de chaves públicas.
PubKeyAuthentication yes Habilita autenticação através de chave pública. Versão 2 do SSH
PermitEmptyPasswords no Desabilita autenticação sem senha.
PasswordAuthentication no Habilita o tunelamento de senhas em modo texto. Deixar como no.

Os principais parâmetros de configuração estão descritos acima. Há outros relacionados com o


uso do protocolo Kerberos e outras configurações, entretanto, as configurações acima

ADMINISTRAÇÃO GNU/LINUX - 199/253


Treinamento em Software Livre

implementam um padrão de segurança adequado ao uso do serviço.

4 – Iniciar o Serviço SSH:

# /etc/init.d/ssh start (ou restart)

5- Verificar se o serviço está funcional e escutando na porta definida:

# fuser -v 22/tcp

18.2 Comandos do SSH

1 – Executar um comando remotamente e retornar:

# ssh -l tux 192.168.0.1 df -h

2- Copiando seguramente arquivos entre servidores ou estações:

# scp tux@10.112.11.60:/etc/*.conf /tmp


# scp -r aluno1@10.112.11.35:/var/spool/cron/ /tmp
# scp /sistemas/web/*.php c031193@10.112.5.43:/sistemas/tmp/

3- Abrindo um Shell remoto em outro servidor:

# ssh suporte@10.112.11.32

ADMINISTRAÇÃO GNU/LINUX - 200/253


Treinamento em Software Livre

19 TCP WRAPPER

O daemon tcpd é o responsável pela proteção dos servidores de rede que está protegendo,
liberando ou negando o acesso. Ele se utiliza dos arquivos /etc/hosts.allow, /etc/hosts.deny e
/etc/inetd.conf é o arquivo base dos serviços baseados no protocolo TCP/IP

Nos arquivos /etc/hosts.allow e /etc/hosts.deny é que são registrados os servidores que poderão
se conectar nos serviços configurados no arquivo base, que é o /etc/inetd.conf.

A sintaxe dos arquivos é a seguinte:

<serviço>: <computadores> [:comandos]

Onde:
- serviço: É uma lista de um ou mais serviços ou palavras-chave
separados por espaços ou vírgulas. O serviço deve estar
definido em /etc/services.
- computadores: É uma lista com um ou mais nomes de máquinas, ou endereços
IPs de computadores.
- comandos: São os comandos a serem executados na conexão.

Palavra-Chave Descrição
ALL Todos os computadores.
LOCAL Todos os computadores locais, ou seja, que não possuem o
caracter “.”, são válidos.
UNKNOW Todos os computadores que não possuem resolução DNS.
KNOW Todos os computadores que possuem resolução DNS.
PARANOID Derruba as conexões dos computadores, mesmo antes das
verificações de controle.

Os padrões na nomenclatura de computadores se utilizam de alguns caracteres especiais os quais


possuem funções específicas:
- ? ou * Usados para seleção de nome ou end.IP de computadores.
– . (ponto) Define um grupo de computadores.

Dentro dos campos <serviço> e <computadores> a palavra EXCEPT designa uma exceção à regra.
Exemplo: ALL EXCEPT in.telnetd:

Abaixo temos alguns exemplos dos arquivos:

Arquivo /etc/inetd.conf:

# /etc/inetd.conf: see inetd(8) for further informations.


# Internet server configuration database
# Lines starting with "#:LABEL:" or "#<off>#" should not
# be changed unless you know what you are doing!
#

ADMINISTRAÇÃO GNU/LINUX - 201/253


Treinamento em Software Livre

# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>


#
#:INTERNAL: Internal services
#echo stream tcp nowait root internal
#echo dgram udp wait root internal
#chargen stream tcp nowait root internal
#chargen dgram udp wait root internal
#discard stream tcp nowait root internal
#discard dgram udp wait root internal
#daytime stream tcp nowait root internal
#daytime dgram udp wait root internal
#time stream tcp nowait root internal
#time dgram udp wait root internal

#:STANDARD: These are standard services.


#:BSD: Shell, login, exec and talk are BSD protocols.
#:MAIL: Mail, news and uucp services.
#:INFO: Info services
#:BOOT: Tftp service is provided primarily for booting. Most sites
# run this only on machines acting as "boot servers."
#:RPC: RPC based services
#:HAM-RADIO: amateur-radio services
#:OTHER: Other services
printer stream tcp nowait lp /usr/lib/cups/daemon/cups-lpd cups-lpd
netbios-ssn stream tcp nowait root /usr/sbin/tcpd /usr/sbin/smbd

Arquivo /etc/hosts.allow

# /etc/hosts.allow: list of hosts that are allowed to access the System


# See the manual pages hosts_access(5), hosts_options(5)
# and /usr/doc/netbase/portmapper.txt.gz
#
ALL: LOCAL @some_netgroup
ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
in.telnetd : 192.168.0.10 192.168.0.11

Arquivo /etc/hosts.deny

# /etc/hosts.deny: list of hosts that are _not_ allowed to access the System
#
ALL: some.host.name, .some.domain
ALL EXCEPT in.fingerd: other.host.name, .other.domain
sshd : 192.168.200. EXCEPT 192.168.200.10

ADMINISTRAÇÃO GNU/LINUX - 202/253


Treinamento em Software Livre

20 SERVIDOR GRÁFICO X-WINDOW

Talvez não pareça trivial, mas o sistema que gerencia toda a interface gráfica nos ambientes
UNIX e GNU/Linux é um sistema cliente/servidor. Nesta estrutura de software há um software
que é o servidor gráfico, no caso, o X Window e também os clientes destes serviços gráficos, no
caso, os gerenciadores de janelas.

Aparentemente pode parecer um tanto complicado configurar o ambiente gráficos nos sistemas
GNU/Linux, porém isso não é um fato, mas sim mais uma lenda tecnológica.

A primeira ação que temos que ter em mente é a seguinte: é preciso identificar, no mínimo, qual é
a placa de vídeo que meu sistema possui e, se possível, qual é o tipo e as características do
monitor de vídeo.

Estas informações são possíveis através do comando lspci, o qual possui a finalidade de apresentar
o hardware que o Kernel encontrou nos barramentos PCI, isso também inclui as placas AGP.

Nas distribuições da Red Hat, há o comando superprobe que mostra mais detalhes importantes
das placas de vídeo, mas não é essencial para o nosso caso.

Com as informações anteriores em mãos, vamos então proceder a configuração do servidor


gráfico X Window.

20.1 Instalando o Servidor X Window

Adotaremos como padrão de configuração o sistema gráfico Xfree86 que é a versão livre do X
Window, o qual foi desenvolvimento originalmente para sistemas UNIX no MIT.

Todas as configurações necessárias serão informadas e as telas que o aplicativo vai apresentando
também serão mostradas.

1- Verificar se o sistema x-window-System está instalado. Em caso negativo, instale:


# apt-get install x-window-System

2- Descubra qual é sua interface de Vídeo e anote os dados:


# lspci --> Observar as informações para VGA Controller.

3- Execute o comando xf86config e vamos seguir em frente:

4- Tela inicial do programa xf86config:

This program will create a basic XF86Config file, based on menu selections you make.

The XF86Config file usually resides in /usr/X11R6/etc/X11 or /etc/X11. A sample XF86Config


file is supplied with XFree86; it is configured for a standard VGA card and monitor with

ADMINISTRAÇÃO GNU/LINUX - 203/253


Treinamento em Software Livre

640x480 resolution. This program will ask for a pathname when it is ready to write the file.

You can either take the sample XF86Config as a base and edit it for your configuration, or let
this program produce a base XF86Config file for your configuration and fine-tune it.

Before continuing with this program, make sure you know what video card you have, and
preferably also the chipset it uses and the amount of video memory on your video card.
SuperProbe may be able to help with this.

Press enter to continue, or ctrl-c to abort. --> Pressione Enter

5- Sistema solicita o protocolo de mouse suportado pelo sistema:

First specify a mouse protocol type. Choose one from the following list:

1. Auto
2. SysMouse
3. MouseSystems
4. PS/2
5. Microsoft
6. Busmouse
7. IMPS/2
8. ExplorerPS/2
9. GlidePointPS/2
10. MouseManPlusPS/2
11. NetMousePS/2
12. NetScrollPS/2
13. ThinkingMousePS/2
14. AceCad

The recommended protocol is Auto. If you have a very old mouse or don't want OS support or
auto detection, and you have a two-button or three-button serial mouse, it is most likely of type
Microsoft.

Enter a protocol number: --> Escolha a opção 4 – PS/2.

6- Sistema pergunta se deseja a emulação de 3 botões no mouse:

If your mouse has only two buttons, it is recommended that you enable Emulate3Buttons.

Please answer the following question with either 'y' or 'n'.


Do you want to enable Emulate3Buttons? -->> Responda y

7- Sistema solicita qual o dispositivo de mouse a ser utilizado:

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: --> Responda /dev/psaux (p/PS/2) ou /dev/ttyS0 (p/Serial 1)

ADMINISTRAÇÃO GNU/LINUX - 204/253


Treinamento em Software Livre

8- Sistema irá lhe solicitar informações sobre o seu tipo de teclado:

description of your keyboard. If nothing really matches, choose 1 (Generic 101-key PC)

1 Generic 101-key PC
2 Generic 102-key (Intl) PC
3 Generic 104-key PC
4 Generic 105-key (Intl) PC
5 Dell 101-key PC
6 Everex STEPnote
7 Keytronic FlexPro
8 Microsoft Natural
9 Northgate OmniKey 101
10 Winbook Model XP5
11 Japanese 106-key
12 PC-98xx Series
13 Brazilian ABNT2
14 Acer AirKey V
15 ACPI Standard
16 Advance Scorpius KI

Enter a number to choose the keyboard. --> escolha a opção 13 Brazilian ABNT2

Press enter for the next page

9- Selecione um País:

1 U.S. English
2 U.S. English w/ ISO9995-3
3 U.S. English w/ deadkeys
4 Albanian
5 Arabic
6 Armenian
7 Azerbaijani
8 Belarusian
9 Belgian
10 Bengali
11 Bosnian
12 Brazilian
13 Bulgarian
14 Burmese
15 Canadian
16 French Canadian
17 Croatian
18 Croatian (US)

Enter a number to choose the country. --> Escolha 12 Brazilian


Press enter for the next page.

ADMINISTRAÇÃO GNU/LINUX - 205/253


Treinamento em Software Livre

10- Informe a variante para o teclado “br”

Please enter a variant name for 'br' layout. Or just press enter for default variant -->
Informe abnt2

11- Sistema pede configurações adicionais ao seu layout de teclado.

Please answer the following question with either 'y' or 'n'.


Do you want to select additional XKB options (group switcher,
group indicator, etc.)? --> Reponda n

12- Sistema apresenta uma tela informando da necessidade das configurações de freqüência
do monitor e demais dados.

Now we want to set the specifications of the monitor. The two critical parameters are the
vertical refresh rate, which is the rate at which the the whole screen is refreshed, and most
importantly the horizontal sync rate, which is the rate at which scanlines are displayed.

The valid range for horizontal sync and vertical sync should be documented in the manual of your
monitor. If in doubt, check the monitor database /usr/X11R6/lib/X11/doc/Monitors to see if
your monitor is there.

Press enter to continue, or ctrl-c to abort. --> Pressione Enter

13- Sistema solicita a freqüência horizontal de seu monitor.

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): -->> Vamos tentar a opção 5 (veja seu caso).

ADMINISTRAÇÃO GNU/LINUX - 206/253


Treinamento em Software Livre

14- Sistema irá solicitar informações da freqüência vertical do monitor.

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: ---> Escolha a opção 2

15- Especifique um nome para seu monitor.

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 --> Digite um nome. Ex. Monitor1

16- Sistema apresenta mensagem que irá solicitar informações da placa de vídeo do
computador, as quais você já possui anotadas.

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 driver 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 driver to run (based on the chipset the card uses) and are untested.

If you can't find your card in the database, there'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? --> Responda y

ADMINISTRAÇÃO GNU/LINUX - 207/253


Treinamento em Software Livre

17- Sistema irá apresentar uma tela com todas as interfaces de vídeo as quais ele provê
suporte. A lista é grande, porém muitos drivers são genéricos e funcionam muito bem.
Escolha conforme seu hardware detectado.

0 * Generic VESA compatible -


1 * Generic VGA compatible -
2 * Unsupported VGA compatible -
3 ** 3DLabs, TI (generic) [glint] -
4 ** 3Dfx (generic) [tdfx] -
5 ** ATI (generic) [ati] -
6 ** ATI Radeon (generic) [radeon] -
7 ** ATI Rage 128 based (generic) [r128] -
8 ** Alliance Pro Motion (generic) [apm] -
9 ** Ark Logic (generic) [ark] -
10 ** Chips and Technologies (generic) [chips] -
11 ** Cirrus Logic (generic) [cirrus] -
12 ** Cyrix MediaGX (generic) [cyrix] -
13 ** DEC TGA (generic) [tga] -
14 ** Intel i740 (generic) [i740] -
15 ** Intel i810 (generic) [i810] -
16 ** Linux framebuffer (generic) [fbdev] -
17 ** Matrox Graphics (generic) [mga] -

Enter a number to choose the corresponding card definition.


Press enter for the next page, q to continue configuration. --> Meu caso, Opção 5 ATI -
Genérico

18- Sistema apresenta sua opção, bastando somente confirmar ou corrigir.

Identifier: ** ATI (generic) [ati]


Chipset: -
Driver: ati

Press enter to continue, or ctrl-c to abort. -- Pressione Enter

19- Sistema solicita a quantidade de memória da sua placa de Vídeo.

Now you must give information about your video card. This will be used for the "Device" section
of your video card in XF86Config.

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, specify the maximum amount supported by the server.

How much video memory do you have on your video card:

1 256K
2 512K

ADMINISTRAÇÃO GNU/LINUX - 208/253


Treinamento em Software Livre

3 1024K
4 2048K
5 4096K
6 8192K
7 16384K
8 32768K
9 65536K
10 131072K
11 262144K
12 Other

Enter your choice: --> Em meu caso, Opção 6 8 Megabytes de Ram de Vídeo.

20- Sistema solicita que você informe um nome para 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).

Your card definition is ** ATI (generic) [ati].

The strings are free-form, spaces are allowed.


Enter an identifier for your video card definition: --> Informe ATI

21- Sistema solicita qual a quantidade de bits de cores que seu sistema irá trabalhar e
informa os valores disponíveis, conforme informações anteriores.

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:

"1280x1024" "1024x768" "800x600" "640x480" for 8-bit


"1280x1024" "1024x768" "800x600" "640x480" for 16-bit
"1280x1024" "1024x768" "800x600" "640x480" for 24-bit

Modes that cannot be supported due to monitor or clock constraints will


be automatically skipped by the server.

1 Change the modes for 8-bit (256 colors)


2 Change the modes for 16-bit (32K/64K colors)
3 Change the modes for 24-bit (24-bit color)
4 The modes are OK, continue.

Enter your choice: --> Responda Opção 3 (24 bits de cores).

ADMINISTRAÇÃO GNU/LINUX - 209/253


Treinamento em Software Livre

22- Sistema solicita quais resoluções de vídeo você deseja deixar configurado. Selecione na
ordem, pois a primeira seleção será a default.

Select modes from the following list:

1 "640x400"
2 "640x480"
3 "800x600"
4 "1024x768"
5 "1280x1024"
6 "320x200"
7 "320x240"
8 "400x300"
9 "1152x864"
a "1600x1200"
b "1800x1400"
c "512x384"
d "1400x1050"

Please type the digits corresponding to the modes that you want to select.
For example, 432 selects "1024x768" "800x600" "640x480", with a
default mode of 1024x768.

Which modes? --> Responda 432 (conforme o exemplo)

23- Sistema agora solicita se você deseja configurações de uma tela virtual, sendo possível
como maior do que a tela física. Não recomenda-se esta opção.

You can have a virtual screen (desktop), which is screen area that is larger than the physical
screen and which is panned by moving the mouse to the edge of the screen. If you don't want
virtual desktop at a certain resolution, you cannot have modes listed that are larger. Each color
depth can have a differently-sized virtual screen

Please answer the following question with either 'y' or 'n'.


Do you want a virtual screen that is larger than the physical screen? --> Responda n

24- Sistema informa se as configurações de Bits por cores e resolução estão Ok. Se
concordar, basta escolher a opção 4, abaixo.

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:

"1280x1024" "1024x768" "800x600" "640x480" for 8-bit


"1280x1024" "1024x768" "800x600" "640x480" for 16-bit
"1024x768" "800x600" "640x480" for 24-bit

Modes that cannot be supported due to monitor or clock constraints will

ADMINISTRAÇÃO GNU/LINUX - 210/253


Treinamento em Software Livre

be automatically skipped by the server.

1 Change the modes for 8-bit (256 colors)


2 Change the modes for 16-bit (32K/64K colors)
3 Change the modes for 24-bit (24-bit color)
4 The modes are OK, continue.

Enter your choice: --> Escolha a opção 4

25- Escolha qual a quantidade de bits de cores será padrão no sistema.

Please specify which color depth you want to use by default:

1 1 bit (monochrome)
2 4 bits (16 colors)
3 8 bits (256 colors)
4 16 bits (65536 colors)
5 24 bits (16 million colors)

Enter a number to choose the default depth. --> Escolha a opção 4 (16 bits de cores)

26- Sistema pergunta se deseja salvar as configurações no arquivo especificado. Responda


yes.

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/X11/XF86Config? -->Responda yes

27- Sistema apresenta mensagem informativa que o arquivo foi salvo e mais detalhes de
configurações necessárias.

File has been written. Take a look at it before running 'startx'. Note that the XF86Config file
must be in one of the directories searched by the server (e.g. /etc/X11) in order to be used.
Within the server press ctrl, alt and '+' simultaneously to cycle video resolutions. Pressing ctrl,
alt and backspace simultaneously immediately exits the server (use if
the monitor doesn't sync for a particular mode).

For further configuration, refer to the XF86Config(5) manual page.

28- Abaixo segue um resumo das configurações que foram geradas anteriormente, onde
foram suprimidas todas as linhas de comentários.

Section "Module"
Load "dbe" # Double buffer extension

ADMINISTRAÇÃO GNU/LINUX - 211/253


Treinamento em Software Livre

SubSection "extmod"
Option "omit xfree86-dga" # don't initialise the DGA extension
EndSubSection
Load "type1"
Load "speedo"
EndSection
Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
EndSection
Section "InputDevice"
Identifier "Keyboard1"
Driver "Keyboard"
Option "AutoRepeat" "500 30"
Option "XkbRules" "xfree86"
Option "XkbModel" "abnt2"
Option "XkbLayout" "br"
Option "XkbVariant" "abnt2"
EndSection
Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Protocol" "PS/2"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons"
EndSection
Section "Monitor"
Identifier "Monitor1"
HorizSync 31.5 - 37.9
VertRefresh 50-90
EndSection
Section "Device"
Identifier "Standard VGA"
VendorName "Unknown"
BoardName "Unknown"
Driver "vga"
EndSection
Section "Device"
Identifier "ATI"
Driver "ati"
#VideoRam 32768
# Insert Clocks lines here if appropriate
EndSection

ADMINISTRAÇÃO GNU/LINUX - 212/253


Treinamento em Software Livre

Section "Screen"
Identifier "Screen 1"
Device "ATI"
Monitor "Monitor1"
DefaultDepth 16
Subsection "Display"
Depth 8
Modes "1280x1024" "1024x768" "800x600" "640x480"
ViewPort 0 0
EndSubsection
Subsection "Display"
Depth 16
Modes "1280x1024" "1024x768" "800x600" "640x480"
ViewPort 0 0
EndSubsection
Subsection "Display"
Depth 24
Modes "1024x768" "800x600" "640x480"
ViewPort 0 0
EndSubsection
EndSection
Section "ServerLayout"
Identifier "Simple Layout"
Screen "Screen 1"
InputDevice "Mouse1" "CorePointer"
InputDevice "Keyboard1" "CoreKeyboard"
EndSection

Importante:
As configurações anteriormente realizadas criaram o arquivo /etc/X11/XF86config, tendo seu
conteúdo apresentado anteriormente. As seções deste arquivo podem ser editadas diretamente,
caso se tenha algum tipo de problema e/ou incompatibilidades nas configurações.

Uma das seções mais importantes neste arquivo é a seção ServerLayout. Neste local é onde são
reunidas as informações dos Input Devices, Screens, etc para montar o servidor gráfico.

Abaixo temos, por exemplo, uma alternativa de configuração para um mouse serial:
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "Microsoft"
Option "Device" "/dev/ttyS0"
EndSection

Uma alternativa mais fácil de configurar o servidor XFree86 é através do comando de


configuração do apt:

# dpkg-reconfigure xserver-xfree86

ADMINISTRAÇÃO GNU/LINUX - 213/253


Treinamento em Software Livre

Com o comando anterior o script de configuração será chamado e ele irá gerar um novo arquivo
XF86config-4.

Para testar o servidor gráfico execute o comando: # X

20.2 Instalando um Gerenciador de Janelas

Como já temos o servidor gráfico configurado, vamos seguir em frente com a instalação de um
Gerenciador de Janelas, como o KDE, o Gnome ou o WindowMaker.

1- Instalar o WindowMaker

# apt-get install wmaker

2- Executar o gerenciador

# startx

3- Instalar o KDE

# apt-get install kdebase --> modo básico


# apt-get install kde --> modo completo.

4- Inciando o KDE

# startx

5- Para mudar a carga de qual gerenciador de janelas carregar, edite o arquivo que fica em
/root/.xinitrc alterando a linha conforme o caso (um ou outro):

wmaker -- > nome do binário windowmaker


startkde --> nome_do binário_kde

6- Para que esta alteração entre em vigor para o sistema, edite o arquivo
/etc/X11/xinit/xinitrc, colocando os mesmos valores do arquivo pessoal do root. Importante
lembrar que os arquivos pessoas sempre irão sobrepor os arquivos globais, caso os dois
existam.

20.3 Instalando Gerenciadores de Display

Os Gerenciadores de Display são os responsáveis pelo controle de qual Gerenciador de Janelas eu


vou utilizar por default. É possível por exemplo, possuir vários gerenciadores de janelas numa
mesma instalação, tipo Gnome, KDE e WindowMaker.

Não é usual manter uma configuração desta natureza, uma vez que cada gerenciador destes possui
uma enorme carga de bibliotecas e com certeza vão utilizar bastante espaço em disco.

ADMINISTRAÇÃO GNU/LINUX - 214/253


Treinamento em Software Livre

Os três (3) gerenciadores de display conhecidos e mais utilizados são os seguintes:

- xdm -> É mais antigo, com poucos recursos mas já vem junto com o Xfree86.
- kdm -> É o gerenciador do KDE.
- gdm -> É o gerenciador do projeto Gnome.

Cada um destes gerenciadores pode carregar qualquer gerenciador de janelas que esteja
configurado. Não significa, por exemplo, que o gdm que é do projeto Gnome, não consiga carregar
o Gerenciador de Janelas KDE.

20.4 Instalação do KDM

A instalação do KDM é bem simples:

# apt-get install kdm

Responder as perguntas sobre qual o Display Manager que será o default, no caso escolher o KDM.
Deste modo o kdm irá iniciar automaticamente no terminal tty7, por default.

Para iniciar o KDM de maneira direta, execute:

# /etc/init.d/kdm start

Se houver necessidade de alteração de qual display manager será o default do sistema. Edite o
arquivo /etc/X11/default-display-manager, colocando a linha:

/usr/bin/kdm --> nome do binário do kdm

20.5 Servidor X Remoto

De acordo com as informações iniciais. O X Window é uma ferramenta gráfica que trabalho em
modo Cliente/Servidor. Devido à esta característica, é possível por exemplo que uma estação com
poucos recursos, possa executar aplicações gráficas remotamente em um servidor.

O serviço Xterminal se utiliza do protocolo XDMCP para se comunicar com o servidor gráfico.

No caso do Display Manager kdm, editar o arquivo abaixo:

# vi /etc/kde3/kdm/kdmrc
Procurar o bloco [Xdmcp] e alterar a linha de Enable=false para Enable=true.

Editar também o arquivo:

# vi /etc/kde3/kdm/Xaccess
Descomentar a linha:

ADMINISTRAÇÃO GNU/LINUX - 215/253


Treinamento em Software Livre

#* #any host can get a login window, ficando então:


*
Descomentar também a linha:
#* CHOOSER BROADCAST #any indirect host can get a chooser. Ficando:
* CHOOSER BROADCAST #any indirect host can get a chooser

A linha acima permite que clientes contatem os servidores gráficos para obterem uma lista com
todos os demais servidores XDM disponíveis na rede.

No GDM, as configurações de acesso remoto ao servidor X são realizadas diretamente no menu


principal deste gerenciador de display. Utilize a opção XDMCP e habilite o protocolo para que
usuários remotos possam acessar o servidor X.

Agora para você testar a conectividade, execute o seguinte comando:

# X -query 192.168.0.10 :1

Onde:
-X Comando que chama o servidor X;
-query Opção para consulta ao servidor remoto;
-192.168.0.10 Endereço IP do servidor X Window remoto;
-:1 Especifica o terminal local que será utilizado, geralmente o :0 já está em uso.

ADMINISTRAÇÃO GNU/LINUX - 216/253


Treinamento em Software Livre

21 SERVIDOR DE IMPRESSÃO CUPS E LPRng

Os servidores de impressão no GNU/Linux possuem várias funcionalidades, uma delas e a


possibilidade de gerenciar as impressoras remotamente, via o servidor CUPS.

Estes dois servidores que serão abordados representam duas grandes possibilidades de serviço
de impressão. O LPRng é uma evolução do antigo LPD e que já era muito estável e funcional. O
CUPS veio implementar grandes funcionalidades ao serviço de impressão, agregando até mesmo
um novo protocolo para o serviço.

21.1 LPRng

O Line Printer daemon next generation é uma evolução natural do antigo LPD – Line Printer
Daemon e possui recursos aprimorados, porém mantém os mesmos comandos do LPR.

Procedimentos para Instalação e Configuração do LPRng.

1- Verifique se o sistema está instalado, caso contrário instale o pacote;


# apt-get install lprng

2- Edite o arquivo /etc/printcap conforme os parâmetros abaixo:

Exemplo:
# /etc/printcap
lp: \
:lp=/dev/lp0:\
:sd/var/spool/lpd/lp:\
:mx#0:\
:if=/var/spool/lpd/lp/filter:\
:lf:/var/spool/lpd/lp/imp.log:\
:sh:\

Parâmetro Descrição
lp Device da impressora (Paralela = /dev/lp0).
sd Diretório de Spool.
mx#<n>Tamanho máximo em n blocos do arquivo a ser impresso. Se informado 0
(zero) o arquivo pode ter qualquer tamanho.
if É o filtro de impressão, na verdade o Driver da impressora.
lf Arquivo de mensagens de estado do servidor de impressão.
sh Não imprime banner.
rm Nome do computador remoto (para impressoras remotas)
rp Nome da impressora remota (Remote Printer).

O filtro de impressão é em sua maioria um shell script que faz as conversões para as linguagens
de impressoras, como a PCL ou PostScript.

ADMINISTRAÇÃO GNU/LINUX - 217/253


Treinamento em Software Livre

3- Edite o arquivo /etc/lpd.perm para permitir ou negar impressões vinda da rede.

#/etc/lpd.perms
ACCEPT SERVICE=* REMOTEHOST=sc7448nt004.sc.caixa
DEFAULT REJECT
#
# Para rejeitar tentativas de impressão:
# REJECT SERVICE=* REMOTEHOST=*

4- A instalação de uma impressora Remota, basta editar o arquivo, conforme exemplo


abaixo:

#/etc/printcap
rlp: \
:sd/var/spool/lpd/lp:\
:mx#0:\
:rm=sc7448nt004.sc.caixa:\
:rp=sc7448pr002:\
:if=/var/spool/lpd/lp/filter:\
:lf:/var/spool/lpd/lp/imp.log:\
:sh:\

5- Para iniciar, parar ou reiniciar o daemon lpd, execute:


# /etc/init.d/lpd <start, stop, restart, force-reload>

6- Principais comandos do LPRng

Comando Descrição
lpr Imprime arquivos.
Exemplos: $ lpr arq1.txt $ lpr -Psc7448pr002 /home/docs/arquivo.doc
lpq Exibe a fila de impressão.
Exemplos: $ lpq -Psc7448pr002 $ lpq -Psc7448pr002 -l
lprm Remove trabalhos de impressão:
Exemplos: $ lprm -Psc7448pr002 13 tux $ lprm - (cancela todos os
trabalhos)
lpc Controla a impressora. Recebendo os parâmetros conforme exemplos:
# lpc status # lpc start # lpc stop # lpc restart

21.2 Servidor CUPS (Common Unix Printing System)

A instalação do servidor CUPS necessita de alguns pacotes adicionais, pois os formatos de


arquivos do servidor estão no padrão PPD e necessitam de interpretação.

Deveremos instalar junto com o sistema, os pacotes gs e gs-esp os quais são os interpretadores

ADMINISTRAÇÃO GNU/LINUX - 218/253


Treinamento em Software Livre

da linguagem PostScript.

Mãos à obra:

1- Instalar os pacotes gs e gs-esp.


# apt-get install gs
# apt-get install gs-esp

2- Instalar o sistema CUPS.


# apt-get install cupsys
# apt-get install cupsys-client

3- Verificar se há suporte de driver no sistema para seu modelo de impressora.


# gs -h

4- Se não houver suporte é possível instalar uma base de drivers do foomatic, conforme
abaixo:
# apt-get install foomatic-db-hpijs
# apt-get install foomatic-filters (provavelmente já estará instalado)
# apt-get install foomatic-filters-ppds (também já poderá estar instalado).

5- Se mesmo assim não houver suporte, nem mesmo genérico à sua impressora, procure no
site www.linuxprinting.org que poderá existir um driver mais específico.

6- Iniciar as configurações no arquivo /etc/cups/cupsd.conf alterando os seguintes


parâmetros, conforme o caso:

Servername sc7448sx010.sc.caixa --> Nome do servidor de impressão.


Printcap /etc/printcap --> Arquivo que define as impressoras.
RemoteRoot remroot --> Usuário responsável por impressões remotas.
SystemGroup sys --> Grupo do sistema responsável pelas impressões.
MaxClients 100 --> Número máximo de clientes simultâneos.
Port 631 --> Porta TCP do serviço CUPS (default).
AccessLog /var/log/cups/access_log --> Arquivo de log dos acessos ao serviço.
ErrorLog /var/log/cups/error_log --> Arquivo de log dos erros do sistema.
PreserveJobHistory Yes --> Ativa o histórico de jobs.
PageLog /var/log/cups/pages-log --> Log de páginas impressas.
MaxCopies 10 --> Número máximo de cópias (por job).
MaxJobs 0 --> Número máximo de Jobs, 0 = ilimitado
MaxJobsPerPrinter 0 --> Zero é sem limites de jobs
MaxJobsPerUser 0 --> Número máximo de Jobs por usuário, 0=ilimitado.
RequestRoot /var/spool/cups --> Onde ficam as requisições de impressão (spool).
ServerRoot /etc/cups --> Diretório do servidor CUPS.
User lp --> Conta do serviço no sistema.
Group lpdadmin --> Grupo do serviço no sistema.
#
# Abaixo alguma configurações sobre as permissões de acesso ao
# serviço via rede.
#

ADMINISTRAÇÃO GNU/LINUX - 219/253


Treinamento em Software Livre

<Location />
Encryption IfRequested
Satisfy All
Order deny,allow
Deny From All
Allow From 127.0.0.1
</Location>
<Location /jobs>
AuthType Basic
AuthClass User
Encryption IfRequested
Satisfy All
Order allow,deny
</Location>
<Location /admin>
AuthType Basic
AuthClass System
Encryption IfRequested
Satisfy All
Order deny,allow
Deny From All
Allow From 127.0.0.1
</Location>

Importante:
Muitos parâmetros de configuração não estão citados nos exemplos acima, somente os mais
relevantes. É fundamental que você procure conhecer os demais parâmetros do arquivo
cupsd.conf e verifique outras possibilidades que o sistema permite, podendo customizar ainda
mais o serviço, deixando-o conforme suas necessidades.

7- Iniciar o serviço CUPS.


# /etc/init.d/cusys start

8- Verificando se o serviço está ativo:


# fuser 631/tcp
# netstat -tlnp
# lpstat -t

Se estiver tudo ok com o serviço, todas as demais configurações necessárias de impressoras,


drivers, jobs, etc. deverão ser realizadas via interface Browser.

Abra então uma janela no navegador mozilla-firefox e acesso o endereço:


http://127.0.0.1:631

Será solicitado usuário e senha, onde você deverá digitar as credenciais do usuário root.

Abaixo apresentamos algumas telas de configuração via http. O modelo de configuração é


semelhante aos existentes em outros sistemas, porém você pode executar tudo remotamente.

ADMINISTRAÇÃO GNU/LINUX - 220/253


Treinamento em Software Livre

Tela inicial do gerenciador de impressoras do CUPS baseada em um ambiente de navegador Web.

Tela inicial do Administrador

ADMINISTRAÇÃO GNU/LINUX - 221/253


Treinamento em Software Livre

ADMINISTRAÇÃO GNU/LINUX - 222/253


Treinamento em Software Livre

22 SERVIÇO SAMBA

O SAMBA é um serviço múltiplo que é executado em servidores GNU/Linux, tendo a finalidade de


prover a interoperabilidade entre os sistemas operacionais LINUX/UNIX e os sistemas MS
Windows (Win95, Win98, WinNT, Win2K, 2003).

As principais funcionalidades deste sistema está no compartilhamento de arquivos e impressoras,


sendo estas funcionalidades implementadas sob o protocolo SMB – Server Message Block.

Como o MS Windows também se utiliza deste protocolo, a comunicação entre os sistemas da


Microsoft e GNU/Linux-Unix ocorre de forma transparente, nestes aspectos.

Para efeito de compatibilidade de modelo com a arquitetura de domínios Microsoft, o SAMBA


precisa também atender aos modelos de configuração existentes naquela rede. Os modelos de
configuração que o SAMBA suporta, para efeitos de compatibilidade com a rede Microsoft, são os
seguintes:

– Samba como PDC de Domínio;


– Samba como BDC de Domínio, onde o PDC é Samba.
– Samba como Member Server de Domínio.
– Samba com segurança a nível de compartilhamento.
– Samba provendo o Servidor Wins, onde este Wins deve ser único.

Algumas outras características do servidor samba são inerentes ao modelo de configuração, ou


seja, se ele se inserir num Domínio, poderá também ser um servidor de impressão, de arquivos,
local master browser e domain master browser.

Para configurar o serviço Samba é preciso antes saber qual será o papel do computador numa rede
com outros servidores Microsoft. Para efeito de ilustração e como de fato é o modelo mais
adotado no mercado, as configurações serão apresentadas para uma máquina que será um member
server de domínio, o qual será visto na rede Microsoft como mais um servidor da sua rede.

Todas as configurações do serviço samba estão centralizadas no arquivo /etc/samba/smb.conf.


Ele será a principal fonte de parâmetros para o serviço e quaisquer alterações e ajustes
necessários, deverão ser realizadas neste arquivo.

Associado ao Samba se faz necessário também a instalação do Winbind. Ele é um pacote que faz o
mapeamento de usuários e grupos do Windows para o padrão Posix do GNU/Linux. Este módulo
também provê os mecanismos de autenticação nos Domínios NT, através da utilização do NSS e do
PAM.

ADMINISTRAÇÃO GNU/LINUX - 223/253


Treinamento em Software Livre

22.1 Configurando um Servidor Member Server

1- Instale os seguintes pacotes:


# apt-get install samba
# apt-get install smblclient
# apt-get install smbfs
# apt-get install winbind

2- Os módulos anteriores fazem o seguinte:


- samba --> Servidor Samba propriamente dito.
– samba-common --> Arquivos de configuração do Samba
– smbclient --> Programas para um Cliente Samba para GNU/Linux.
– smbfs --> Permite a montagem de compartilhamentos remotos.
– winbind --> Resolve usuários e Grupos do Windows para o padrão
Posix e também autenticação via NSS e PAM

3- Edite o arquivo /etc/samba/smb.conf e altere os parâmetros, como segue:


# vi /etc/samba/smb.conf

Indicador de início da secção 'global'. Os parâmetros


abaixo desde indicador serão aplicados à todo o servidor.
[global]
O final de uma secção é indicado pelo início de outra ou
pelo final do arquivo.
Define o 'workgroup' da estação. Ou o domínio,
workgroup=DOMINIO
dependendo do modelo de configuração.
Corresponde ao nome netbios, o qual será usado pela
netbios name = sc7448ux003
estação para se anunciar na rede Microsoft.
O que será exibido como 'Comentário' no Server
server string = Servidor Apache
Manager e no Ambiente de Rede.
announce version = 5.0 Versão com a qual a estação se anunciará na rede.
Define quais hosts terão acesso a esta estação. No
hosts allow = 10. localhost exemplo ao lado, somente localhost e hosts com endereço
IP começando com '10.'.
Wins server = 192.168.4.32
Servidores Wins utilizados por esta estação.
192.168.8.150
Define se, quando o nmbd estiver atuando como Servidor
WINS, que deve procurar os nomes NetBIOS no
dns proxy = no
servidores DNS.
name resolve order = lmhosts host
Especifica a ordem de resolução de nomes.
wins bcast
Onde o log do SAMBA será gravado. A variável %m, é
log file = /var/log/samba/%m.log
substituída pelo nome da estação que está gerando o log.
max log size = 50 Define o tamanho máximo do log. O SAMBA sempre
verifica o tamanho e se este exceder, o arquivo recebe a

ADMINISTRAÇÃO GNU/LINUX - 224/253


Treinamento em Software Livre

extensão .old
Define a prioridade do log. Com o valor ajustado para 0
(zero), o log tem a mesma prioridade de um log de
ERRO. O nível 1 (um) recebe prioridade de ALERTA, o
syslog = 0
nível 2 (dois), prioridade de AVISO, o nível 3 (três),
INFORMAÇÂO e qualquer outro nível maior, é tratado
com DEBUG.
panic action = Comando a ser executado caso ocorra algum problema
/usr/share/samba/panic-action %d com o smbd.
Torna o samba compatível, em nível de autenticação, com
o Windows NT 4.0. Pois requer inclusive, que a
security = domain
estação/servidor Linux, seja inserida no domínio, através
do comando: ' net rpc join -U usuario '.
encrypt passwords = true Força o uso de senhas criptografadas
password server = pdcserv bdcserv Informa ao SAMBA, os servidores de autenticação.
Força o SAMBA obedecer as restrições do PAM de
obey pam restrictions = yes
account e session.
client ntlmv2 auth = yes Utiliza autenticação dos clientes com NTLMv2.
client plaintext auth = no Não permite o uso de autenticação em texto puro.
invalid users = root Usuários que não estão autorizados a utilizar o serviço.
Define a conta de usuário a ser usada para acessar
guest account = nobody recursos onde usuário convidado é permitido, através do
parâmetro 'guest ok = yes'.
short preserve case = yes Mantém a nomenclatura original dos arquivos.
hide dot files = yes Oculta arquivos precedidos por '.' (ponto final).
Não permitir recursão aos diretórios informados. Neste
dont descend = /proc,/sys
caso, /proc e /sys.
socket options = TCP_NODELAY Ajusta as configurações de socket para a comunicação
SO_RCVBUF=8192 com o cliente, definindo os tamanhos dos buffers de
SO_SNDBUF=8192 comunicação.
Range permitido para mapeamento de uid's de domínio
idmap uid = 10000-150000
para uid's locais
Range permitido para mapeamento de gid's de domínio
idmap gid = 10000-30000
para gid's locais
winbind cache time = 10 Tempo limite do cache do winbind, em milisegundos.
Faz com que o winbind enumere os grupos internamente,
winbind enum groups = yes
permitindo o retorno de dados das chamadas do sistema.
Faz com que o winbind enumere os usuários internamente,
winbind enum users = yes
permitindo o retorno de dados das chamadas do sistema.
winbind use default domain = yes Se o usuário não informar DOMÍNIO, o winbind utilizará

ADMINISTRAÇÃO GNU/LINUX - 225/253


Treinamento em Software Livre

o domínio corrente.
Caractere utilizado pelo winbind, como separador entre
winbind separator = ;
DOMINIO e usuário. Ex.: DOMINIO\X919192
template shell = /bin/bash Define o shell que será usado pelo usuário.
Diretório onde será criado o perfil do usuário. A variável
template homedir = /home/%U
%U representa o nome de usuário.

Indicador de início da secção 'pub'. Toda seção, com


exceção da [global], corresponde a um compartilhamento
[pub]
e todo parâmetro inserido numa secção, terá efeito
somente no compartilhamento que esta representa.
comment = Diretorio publico Descrição da secção/compartilhamento.
path = /sistemas/pub Diretório a ser compartilhado.
Define se o compartilhamento é publico. O mesmo que
public = yes
guest ok = yes.
writable = yes Define se há permissão para escrita no compartilhamento.
Quando yes, o compartilhamento é visualizado na lista de
browseable = yes
compartilhamentos ativos da estação.
Lista de usuários que têm permissão de escrita no
compartilhamento. Para especificar um grupo, usa-se o @.
write list = @"Domain Users" Se o grupo contiver espaços no nome, aspas devem ser
usadas. Para incluir mais de um grupo e/ou nomes de
usuários, separe-os com vírgula (,).

Exemplo de um arquivo /etc/samba/smb.conf.


#
#================= Global Settings ============================
[global]
# workgroup = NT-Domain-Name or Workgroup-Name
workgroup = DOMINIO
netbios name = srv010
server string = Servidor Apache/PostgreSQL/Arquivos
announce version = 5.0
hosts allow = 192. localhost
wins server = 192.96.4.32
wins support = no
dns proxy = no
name resolve order = lmhosts host wins bcast
log file = /var/log/samba/%m.log
max log size = 50
syslog = 0
panic action = /usr/share/samba/panic-action %d

ADMINISTRAÇÃO GNU/LINUX - 226/253


Treinamento em Software Livre

#################### Autenticacao #############


security = domain
encrypt passwords = true
password server = srvpdc srvbdc1 srvbdc2
obey pam restrictions = yes
client ntlmv2 auth = yes
client plaintext auth = no
invalid users = root
guest account = nobody
short preserve case = yes
hide dot files = yes
dont descend = /proc,/sys
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

############# Windbind ########################


idmap uid = 10000-150000
idmap gid = 10000-75000
winbind uid = 10000-150000
winbind gid = 10000-75000
winbind cache time = 10
winbind enum groups = yes
winbind enum users = yes
winbind use default domain = yes
winbind separator = ;
template shell = /bin/bash
template homedir = /home/%U
#============================ Share Definitions ==============================
[pub]
comment = Diretorio publico
path = /sistemas/pub
public = yes
writable = yes
browseable = yes
write list = @"Domain Users" @"Grupo USUARIOS"
valid users = @"Domain Users" @"Grupo USUARIOS"

[sistemas]
comment = Diretorio restrito equipe WEB
path = /sistemas
writeable = yes
browseable = yes
force directory mode = 0775
force create mode = 0664
force user = "www-data"
force group = "www-data"
write list = @"Grupo Ambiente" DOMINIO\tux
valid users = @"Grupo Ambiente" @"Grupo opweb", DOMINIO\aluno10

ADMINISTRAÇÃO GNU/LINUX - 227/253


Treinamento em Software Livre

4- Configurando o NSS – Name Service Switch

Para que a estação Linux possa resolver nomes NetBIOS e utilizar usuários e grupos da rede
Windows, deve-se incluir o winbind e wins na base de pesquisa de arquivos de usuários, senhas e
grupos, editando o arquivo nsswitch.conf, presente em /etc, como segue:

# /etc/nsswitch.conf
#
passwd: files winbind
group: files winbind
shadow: compat
hosts: files dns wins
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files

5- Configurando o PAM Para Autenticação Windows

Para que os usuários do Domínio NT possam se autenticar nas estações Linux, algumas
configurações do PAM devem ser alteradas. Os arquivos de configuração do PAM, encontram-se
em /etc/pam.d e as bibliotecas utilizadas pelo sistema, residem em /lib/security.

O arquivo principal de configuração do PAM utilizado neste exemplo é o /etc/pam.d/login. Dentro


deste arquivo, existem várias diretivas que permitem e direcionam a autenticação e a validação de
usuários para o samba.

Abaixo um exemplo dos arquivos de configuração do PAM:

/etc/pam.d/login
auth requisite pam_securetty.so
auth requisite pam_nologin.so
auth required pam_env.so
@include common-auth
@include common-account
@include common-password
session optional pam_lastlog.so
session optional pam_motd.so
@include common-session

/etc/pam.d/common-auth
auth sufficient pam_winbind.so
auth required pam_unix.so use_first_pass

/etc/pam.d/common-account
account sufficient pam_unix.so

ADMINISTRAÇÃO GNU/LINUX - 228/253


Treinamento em Software Livre

account required pam_access.so


account required pam_winbind.so

/etc/pam.d/common-session
#
session required pam_mkhomedir.so skel=/etc/skel umask=0022
session required pam_unix.so

/etc/init.d/common-password
password required pam_unix.so nullok obscure min=4 max=8 md5
# password required pam_cracklib.so retry=3 minlen=6 difok=3
# password required pam_unix.so use_authtok nullok md5

Após a configuração acima, o SAMBA deve ser reiniciado com o comando:


#/etc/init.d/samba stop
#/etc/init.d/samba start

Para inserir a estação Linux com SAMBA no domínio Windows, execute o seguinte comando:
#net rpc join -U usuário

Onde, usuário, corresponde à conta do usuário com permissão para adicionar máquinas ao Domínio
Windows.

22.2 Variáveis do Samba

Nas configurações do Samba, muitas vezes são utilizados parâmetros que referenciam variáveis
internas do sistema. Abaixo são apresentadas as principais variáveis utilizadas no Samba.

Variável Descrição
%h Nome do computador.
%v Versão do Samba.
%S Nome do serviço atual (compatilhamento).
%u Nome do usuário.
%g Nome do Grupo.
%H Nome do diretório pessoal do usuário (home diretório)
%m Nome da máquina cliente, via NetBios.
%L Nome do servidor Netbios.
%M Nome da Internet (FQDN) do computador cliente.
%a Sistema operacional da máquina remota.
%i O endereço IP da máquina remota.
%t Data e Hora.

ADMINISTRAÇÃO GNU/LINUX - 229/253


Treinamento em Software Livre

Observações:

O sistema Samba é tão complexo e flexível que suas possibilidades de configurações tornam-se
complexas. Não é objetivo deste material cobrir todas as possibilidades de configurações do
Samba.

Muitas outras possibilidades de configuração e padronização do Samba são possíveis, inclusive é


possível configurar o Samba para usar uma base Open Ldap para guardar usuários e demais
objetos da rede. Esta característica está mais fortemente sendo desenvolvida pela equipe do
Samba e na próxima versão 4.0 o Samba poderá substituir completamente o sistema Active
Directory da Microsoft.

O melhor conselho no momento é, no mínimo, uma leitura atenta das configurações do Samba no
seu manual de configuração, disponível no site www.samba.org.

ADMINISTRAÇÃO GNU/LINUX - 230/253


Treinamento em Software Livre

23 SERVIÇO DHCP

O primeiro serviço de rede que estará sendo descrito neste material será o DHCP. Ele possui a
finalidade de disponibilizar endereços IPs para as estações de rede, de forma automática. Pode
trabalhar com interfaces virtuais (alias) ou também com interfaces do tipo VLAN.

O DHCP é um pacote de software desenvolvido pelo Internet Software Consortium – ISC. Ele é
um software livre e possui pacotes para quase todas as distribuições existentes. Obedece os
padrões definidos nas RFCs rfc951, rfc2489 e rfc2485, rfc2131 e rfc2132, o que o torna um
pacote totalmente padronizado, garantindo deste modo que o serviço implementado deverá ser
compatível com qualquer cliente de rede que necessite de endereços IPs dinâmicos.

23.1 Instalação e Configuração do DHCP Server

A seguir, os passos a serem executados para procedermos a instalação, configuração e ativação


do serviço DHCP.

1- Instalar o pacote DHCP, caso o mesmo ainda não esteja instalado no sistema.
# apt-get install dhcp3-server
# apt-get install dhcp3-common

2- Editar e configurar o arquivo /etc/dhcp3/dhcpd.conf, conforme abaixo:


# vi /etc/dhcp3/dhcpd.conf

ddns-update-style none;--> Não irá utilizar a atualização dinâmica no DNS (DDNS).


option domain-name "dominio.intranet"; --> Nome do domínio a ser informado
option domain-name-servers 100.112.5.47, 100.1.8.98;--> Servidores de DNS
option subnet-mask 255.255.255.0; --> Máscara de rede padrão.
option netbios-node-type 4; --> Tipo de Nó Netbios 4=modo misto
option netbios-name-servers 100.96.4.32, 100.192.8.150;--> Servidores WINS
default-lease-time 172800; --> Tempo de aluguel de endereços IPs.
max-lease-time 259200; --> Tempo máximo de aluguel de endereços.

eth0; --> Aplica a distribuição de endereços na interface eth0


subnet 100.112.5.0 netmask 255.255.255.0 {--> Inicia a configuração da Sub-Rede
range 100.112.5.64 100.112.5.139; --> Faixa de endereços
range 100.112.5.160 100.112.5.254; --> Outra faixa de endereços
option broadcast-address 100.112.5.255;--> Endereço de Broadcast
option routers 100.112.5.1; --> Endereço do Gateway.

} -->Finaliza as configurações da Sub-Rede

eth1; --> Aplica a distribuição de endereços na interface eth1


subnet 100.112.56.0 netmask 255.255.255.0 {
range 100.112.56.64 100.112.56.139;

ADMINISTRAÇÃO GNU/LINUX - 231/253


Treinamento em Software Livre

range 100.112.56.160 100.112.56.254;


option broadcast-address 100.112.56.255;
option routers 100.112.56.1;
}
host microweb { --> Inicia a configuração de um endereço reservado.
hardware ethernet 00:02:b3:af:31:42; --> Endereço MAC da estação
fixed-address 100.112.56.109; --> Endereço reservado para a estação.
}

vlan10; --> Aplica a distribuição de endereços na interface vlan10 (virtual)


subnet 172.112.4.64 netmask 255.255.255.192 {
range 172.112.4.67 172.112.4.126;
option subnet-mask 255.255.255.192;
option broadcast-address 172.112.4.127;
option routers 172.112.4.65;
}
vlan20; --> Aplica a distribuição de endereços na interface vlan20
(virtual)
subnet 172.112.4.128 netmask 255.255.255.192 {
range 172.112.4.130 172.112.4.190;
option subnet-mask 255.255.255.192;
option broadcast-address 172.112.4.191;
option routers 172.112.4.129;
}

Ao conceder os aluguéis de endereços IPs para as estações de rede o servidor DHCPD então
grava as informações no arquivo /var/lib/dhcp3/dhcpd.leases. Veja abaixo um fragmento deste
arquivo.

# All times in this file are in UTC (GMT), not your local timezone. This is
# not a bug, so please don't ask about it. There is no portable way to
# store leases in the local timezone, so please don't request this as a
# feature. If this is inconvenient or confusing to you, we sincerely
# apologize. Seriously, though - don't ask.
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-V3.0pl1
lease 100.112.12.253 {
starts 4 2005/07/14 13:10:10;
ends 6 2005/07/16 13:05:49;
tstp 6 2005/07/16 13:05:49;
binding state free;
hardware ethernet 00:0f:ea:90:2f:f5;
uid "\001\000\017\352\220/\365";
client-hostname "MICRO1";
}
lease 100.112.56.108 {
starts 4 2006/05/04 15:25:06;
ends 6 2006/05/06 15:25:06;
binding state active;

ADMINISTRAÇÃO GNU/LINUX - 232/253


Treinamento em Software Livre

next binding state free;


hardware ethernet 00:20:ed:0f:82:4b;
uid "\001\000 \355\017\202K";
client-hostname "MICRO2";}

3- Ativação do serviço dhcp3d.


# /etc/init.d/dhcpd3-server start --> inicia o serviço dhcpd3
# /etc/init.d/dhcpd3-server stop --> encerra o serviço dhcpd3
# /etc/init.d/dhcpd3-server restart --> re-inicia o serviço dhcpd3

ADMINISTRAÇÃO GNU/LINUX - 233/253


Treinamento em Software Livre

ADMINISTRAÇÃO GNU/LINUX - 234/253


Treinamento em Software Livre

Anexo I – Licença GNU/GPL – Uma tradução Não Oficial

LICENÇA PÚBLICA GERAL GNU


Versão 2, junho de 1991

This is an unofficial translation of the GNU General Public License into Brazilian Portuguese. It
was not published by the Free Software Foundation, and does not legally state the distribution
terms for software that uses the GNU GPL -- only the original English text of the GNU GPL does
that. However, we hope that this translation will help Brazilian Portuguese speakers understand
the GNU GPL better.

Esta é uma tradução não-oficial da Licença Pública Geral GNU ("GPLGNU") para o português do
Brasil. Ela não foi publicada pela Free Software Foundation, e legalmente não afirma os termos de
distribuição de software que utiliza a GPL GNU -- apenas o texto original da GPL GNU, em inglês,
faz isso. Contudo, esperamos que esta tradução ajude
aos que utilizam o português do Brasil a entender melhor a GPL GNU.

Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave,
Cambridge, MA 02139, USA

A qualquer pessoa é permitido copiar e distribuir cópias desse documento de licença, desde que
sem qualquer alteração.

Introdução

As licenças de muitos softwares são desenvolvidas para restringir sua liberdade de compartilhá-lo
e mudá-lo. Contrária a isso, a Licença Pública Geral GNU pretende garantir sua liberdade de
compartilhar e alterar software livres -- garantindo que o software será livre e gratuito para os
seus usuários. Esta Licença Pública Geral aplica-se à maioria dos software da Free Software
Foundation e a qualquer outro programa cujo autor decida aplicá-la. Alguns outros software da
FSF são cobertos pela Licença Pública Geral de Bibliotecas, no entanto. Você pode aplicá-la
também aos seus programas.

Quando nos referimos a software livre, estamos nos referindo a liberdade e não a preço. Nossa
Licença Pública Geral foi desenvolvida para garantir que você tenha a liberdade de distribuir
cópias de software livre (e cobrar por isso, se quiser); que você receba o código-fonte ou tenha
acesso a ele, se quiser; que você possa mudar o software ou utilizar partes dele em novos
programas livres e gratuitos; e que você saiba que pode fazer tudo isso.

Para proteger seus direitos, precisamos fazer restrições que impeçam a qualquer um negar estes
direitos ou solicitar que você deles abdique. Estas restrições traduzem-se em certas
responsabilidades para você, se você for distribuir cópias do software ou modificá-lo.

Por exemplo, se você distribuir cópias de um programa, gratuitamente ou por alguma quantia, você
tem que fornecer aos recebedores todos os direitos que você possui. Você tem que garantir que
eles também recebam ou possam obter o código-fonte. E você tem que mostrar-lhes estes termos
para que eles possam conhecer seus direitos.

ADMINISTRAÇÃO GNU/LINUX - 235/253


Treinamento em Software Livre

Nós protegemos seus direitos em dois passos: (1) com copyright do software e (2) com a oferta
desta licença, que lhe dá permissão legal para copiar, distribuir e/ou modificar o software.

Além disso, tanto para a proteção do autor quanto a nossa, gostaríamos de certificar-nos que
todos entendam que não há qualquer garantia nestes software livres. Se o software é modificado
por alguém mais e passado adiante, queremos que seus recebedores saibam que o que eles
obtiveram não é original, de forma que qualquer problema introduzido por terceiros não interfira
na reputação do autor original.

Finalmente, qualquer programa é ameaçado constantemente por patentes de software. Queremos


evitar o perigo de que distribuidores de software livre obtenham patentes individuais, o que tem o
efeito de tornar o programa proprietário. Para prevenir isso, deixamos claro que qualquer patente
tem que ser licenciada para uso livre e gratuito por
qualquer pessoa, ou então que nem necessite ser licenciada.

Os termos e condições precisas para cópia, distribuição e modificação se encontram abaixo:

LICENÇA PÚBLICA GERAL GNU


TERMOS E CONDIÇÕES PARA CÓPIA, DISTRIBUIÇÃO E
MODIFICAÇÃO

Esta licença se aplica a qualquer programa ou outro trabalho que contenha um aviso colocado pelo
detentor dos direitos autorais informando que aquele pode ser distribuído sob as condições desta
Licença Pública Geral. O "Programa" abaixo refere-se a qualquer programa ou trabalho, e
"trabalho baseado no Programa" significa tanto o Programa em si como quaisquer trabalhos
derivados, de acordo com a lei de direitos autorais: isto quer dizer um trabalho que contenha o
Programa ou parte dele, tanto originalmente ou com modificações, e/ou tradução para outros
idiomas. (Doravante o processo de tradução está
incluído sem limites no termo "modificação".) Cada licenciado é mencionado como "você".

Atividades outras que a cópia, a distribuição e modificação não estão cobertas por esta Licença;
elas estão fora de seu escopo. O ato de executar o Programa não é restringido e o resultado do
Programa é coberto apenas se seu conteúdo contenha trabalhos baseados no Programa
(independentemente de terem sido gerados pela execução do
Programa). Se isso é verdadeiro depende do que o programa faz.

1. Você pode copiar e distribuir cópias fiéis do código-fonte do Programa da mesma forma que
você o recebeu, usando qualquer meio, deste que você conspícua e apropriadamente publique em
cada cópia um aviso de direitos autorais e uma declaração de inexistência de
garantias; mantenha intactas todos os avisos que se referem a esta Licença e à ausência total de
garantias; e forneça a outros recebedores do Programa uma cópia desta Licença, junto com o
Programa.

Você pode cobrar pelo ato físico de transferir uma cópia e pode, opcionalmente, oferecer
garantia em troca de pagamento.

2. Você pode modificar sua cópia ou cópias do Programa, ou qualquer parte dele, assim gerando um

ADMINISTRAÇÃO GNU/LINUX - 236/253


Treinamento em Software Livre

trabalho baseado no Programa, e copiar e distribuir essas modificações ou trabalhos sob os temos
da seção 1 acima, desde que você também se enquadre em todas estas condições:

a) Você tem que fazer com que os arquivos modificados levem avisos proeminentes
afirmando que você alterou os arquivos, incluindo a data de qualquer alteração.

b) Você tem que fazer com que quaisquer trabalhos que você distribua ou publique, e que
integralmente ou em partes contenham ou sejam derivados do Programa ou de suas partes,
sejam licenciados, integralmente e sem custo algum para quaisquer terceiros, sob os termos
desta Licença.

c) Se qualquer programa modificado normalmente lê comandos interativamente


quando executados, você tem que fazer com que, quando iniciado tal uso interativo da forma
mais simples, seja impresso ou mostrado um anúncio de que não há qualquer garantia (ou
então que você fornece a garantia) e que os usuários podem redistribuir o programa sob estas
condições, ainda informando os usuários como consultar uma cópia desta Licença.
(Exceção: se o Programa em si é interativo mas normalmente não imprime estes tipos de
anúncios, seu trabalho baseado no Programa não precisa imprimir um anúncio.)

Estas exigências aplicam-se ao trabalho modificado como um todo. Se seções identificáveis de tal
trabalho não são derivadas do Programa, e podem ser razoavelmente consideradas trabalhos
independentes e separados por si só, então esta Licença, e seus termos, não se aplicam a estas
seções quando você distribui-las como trabalhos em separado. Mas quando você distribuir as
mesmas seções como parte de um todo que é trabalho baseado no Programa, a distribuição como
um todo tem que se enquadrar nos termos desta Licença, cujas permissões para outros licenciados
se estendem ao todo, portanto também para cada e toda parte independente de quem a escreveu.

Desta forma, esta seção não tem a intenção de reclamar direitos os contestar seus direitos sobre
o trabalho escrito completamente por você; ao invés disso, a intenção é a de exercitar o direito
de controlar a distribuição de trabalhos, derivados ou coletivos, baseados no Programa.

Adicionalmente, a mera adição ao Programa de outro trabalho não baseado no Programa (ou de
trabalho baseado no Programa) em um volume de armazenamento ou meio de distribuição não faz o
outro trabalho parte do escopo desta Licença.

3. Você pode copiar e distribuir o Programa (ou trabalho baseado nele, conforme descrito na
Seção 2) em código-objeto ou em forma executável sob os termos das Seções 1 e 2 acima, desde
que você faça um dos seguintes:

a) O acompanhe com o código-fonte completo e em forma acessível por máquinas, que


tem que ser distribuído sob os termos das Seções 1 e 2 acima e em meio normalmente
utilizado para o intercâmbio de software; ou,

b) O acompanhe com uma oferta escrita, válida por pelo menos três anos, de
fornecer a qualquer um, com um custo não superior ao custo de distribuição física do
material, uma cópia do código-fonte completo e em forma acessível por máquinas, que
tem que ser distribuído sob os termos das Seções 1 e 2 acima e em meio normalmente
utilizado para o intercâmbio de software; ou,

ADMINISTRAÇÃO GNU/LINUX - 237/253


Treinamento em Software Livre

c) O acompanhe com a informação que você recebeu em relação à oferta de


distribuição do código-fonte correspondente. (Esta alternativa é permitida somente
em distribuição não comerciais, e apenas se você recebeu o programa em forma de
código-objeto ou executável, com oferta de acordo com a Subseção b acima.)

O código-fonte de um trabalho corresponde à forma de trabalho preferida para se fazer


modificações. Para um trabalho em forma executável, o código-fonte completo significa todo o
código-fonte de todos os módulos que ele contém, mais quaisquer arquivos de definição
de "interface", mais os "scripts" utilizados para se controlar a compilação e a instalação do
executável. Contudo, como exceção especial, o código-fonte distribuído não precisa incluir
qualquer componente normalmente distribuído (tanto em forma original quanto binária) com os
maiores componentes (o compilador, o "kernel" etc.) do sistema operacional sob o qual o
executável funciona, a menos que o componente em si acompanhe o executável.

Se a distribuição do executável ou código-objeto é feita através da oferta de acesso a cópias de


algum lugar, então ofertar o acesso equivalente a cópia, do mesmo lugar, do código-fonte equivale
à distribuição do código-fonte, mesmo que terceiros não sejam compelidos a copiar o código-fonte
com o código-objeto.

4. Você não pode copiar, modificar, sub-licenciar ou distribuir o Programa, exceto de acordo com
as condições expressas nesta Licença. Qualquer outra tentativa de cópia, modificação,
sub-licenciamento ou distribuição do Programa não é valida, e cancelará automaticamente os
direitos que lhe foram fornecidos por esta Licença. No entanto, terceiros que de você receberam
cópias ou direitos, fornecidos sob os termos desta Licença, não terão suas licenças terminadas,
desde que permaneçam em total concordância com ela.

5. Você não é obrigado a aceitar esta Licença já que não a assinou. No entanto, nada mais o dará
permissão para modificar ou distribuir o Programa ou trabalhos derivados deste. Estas ações são
proibidas por lei, caso você não aceite esta Licença. Desta forma, ao modificar ou distribuir o
Programa (ou qualquer trabalho derivado do Programa), você estará indicando sua total aceitação
desta Licença para fazê-los, e todos os seus termos e condições para copiar, distribuir ou
modificar o Programa, ou trabalhos baseados nele.

6. Cada vez que você redistribuir o Programa (ou qualquer trabalho baseado nele), os recebedores
adquirirão automaticamente do licenciador original uma licença para copiar, distribuir ou
modificar o Programa, sujeitos a estes termos e condições. Você não poderá impor aos
recebedores qualquer outra restrição ao exercício dos direitos então adquiridos. Você não é
responsável em garantir a concordância de terceiros a esta Licença.

7. Se, em conseqüência de decisões judiciais ou alegações de infringimento de patentes ou


quaisquer outras razões (não limitadas a assuntos relacionados a patentes), condições forem
impostas a você (por ordem judicial, acordos ou outras formas) e que contradigam as
condições desta Licença, elas não o livram das condições desta Licença. Se você não puder
distribuir de forma a satisfazer simultaneamente suas obrigações para com esta Licença e para
com as outras obrigações pertinentes, então como conseqüência você não poderá distribuir o
Programa. Por exemplo, se uma licença de patente não permitirá a redistribuição, livre de
"royalties", do Programa, por todos aqueles que receberem cópias direta ou indiretamente de
você, então a única forma de você satisfazer a ela e a esta Licença seria a de desistir
completamente de distribuir o Programa.

ADMINISTRAÇÃO GNU/LINUX - 238/253


Treinamento em Software Livre

Se qualquer parte desta seção for considerada inválida ou não aplicável em qualquer circunstância
particular, o restante da seção se aplica, e a seção como um todo se aplica em outras
circunstâncias.

O propósito desta seção não é o de induzí-lo a infringir quaisquer patentes ou reivindicação de


direitos de propriedade outros, ou a contestar a validade de quaisquer dessas reivindicações; esta
seção tem como único propósito proteger a integridade dos sistemas de
distribuição de software livres, o que é implementado pela prática de licenças públicas. Várias
pessoas têm contribuído generosamente e em grande escala para os software distribuídos usando
este sistema, na certeza de que sua aplicação é feita de forma consistente; fica a critério do
autor/doador decidir se ele ou ela está disposto a distribuir software utilizando outro sistema, e
um licenciado não pode impor qualquer escolha.

Esta seção destina-se a tornar bastante claro o que se acredita ser conseqüência do restante
desta Licença.

8. Se a distribuição e/ou uso do Programa são restringidos em certos países por patentes ou
direitos autorais, o detentor dos direitos autorais original, e que colocou o Programa sob esta
Licença, pode incluir uma limitação geográfica de distribuição, excluindo aqueles países de forma a
tornar a distribuição permitida apenas naqueles ou entre aqueles países então não excluídos.
Nestes casos, esta Licença incorpora a limitação como se a mesma constasse escrita nesta
Licença.

9. A Free Software Foundation pode publicar versões revisadas e/ou novas da Licença Pública
Geral de tempos em tempos. Estas novas versões serão similares em espírito à versão atual, mas
podem diferir em detalhes que resolvem novos problemas ou situações.

A cada versão é dada um número distinto. Se o Programa especifica um número de versão


específico desta Licença que se aplica a ele e a "qualquer nova versão", você tem a opção de
aceitar os termos e condições daquela versão ou de qualquer outra versão publicada pela Free
Software Foundation. Se o programa não especifica um número de versão desta Licença, você
pode escolher qualquer versão já publicada pela Free Software Foundation.

10. Se você pretende incorporar partes do Programa em outros programas livres cujas condições
de distribuição são diferentes, escreva ao autor e solicite permissão. Para o software que a Free
Software Foundation detém direitos autorais, escreva à Free Software
Foundation; às vezes nós permitimos exceções a este caso. Nossa decisão será guiada pelos dois
objetivos de preservar a condição de liberdade de todas as derivações do nosso software livre, e
de promover o compartilhamento e reutilização de software em aspectos gerais.

AUSÊNCIA DE GARANTIAS

11. UMA VEZ QUE O PROGRAMA É LICENCIADO SEM ÔNUS, NÃO HÁ QUALQUER
GARANTIA PARA O PROGRAMA, NA EXTENSÃO PERMITIDA PELAS LEIS APLICÁVEIS.
EXCETO QUANDO EXPRESSADO DE FORMA ESCRITA, OS DETENTORES DOS DIREITOS
AUTORAIS E/OU TERCEIROS DISPONIBILIZAM O PROGRAMA "NO ESTADO", SEM
QUALQUER TIPO DE GARANTIAS, EXPRESSAS OU IMPLÍCITAS, INCLUINDO, MAS NÃO

ADMINISTRAÇÃO GNU/LINUX - 239/253


Treinamento em Software Livre

LIMITADO A, AS GARANTIAS IMPLÍCITAS DE COMERCIALIZAÇÃO E AS DE ADEQUAÇÃO


A QUALQUER PROPÓSITO. O RISCO TOTAL COM A QUALIDADE E DESEMPENHO DO
PROGRAMA É SEU. SE O PROGRAMA SE MOSTRAR DEFEITUOSO, VOCÊ ASSUME OS
CUSTOS DE TODAS AS MANUTENÇÕES, REPAROS E CORREÇÕES.

12. EM NENHUMA OCASIÃO, A MENOS QUE EXIGIDO PELAS LEIS APLICÁVEIS OU


ACORDO ESCRITO, OS DETENTORES DOS DIREITOS AUTORAIS, OU QUALQUER OUTRA
PARTE QUE POSSA MODIFICAR E/OU REDISTRIBUIR O PROGRAMA CONFORME
PERMITIDO ACIMA, SERÃO RESPONSABILIZADOS POR VOCÊ POR DANOS, INCLUINDO
QUALQUER DANO EM GERAL, ESPECIAL, ACIDENTAL OU CONSEQÜENTE, RESULTANTES
DO USO OU INCAPACIDADE DE USO DO PROGRAMA (INCLUINDO, MAS NÃO LIMITADO A,
A PERDA DE DADOS OU DADOS TORNADOS INCORRETOS, OU PERDAS SOFRIDAS POR
VOCÊ OU POR OUTRAS PARTES, OU FALHAS DO PROGRAMA AO OPERAR COM QUALQUER
OUTRO PROGRAMA), MESMO QUE TAL DETENTOR OU PARTE TENHAM SIDO AVISADOS
DA POSSIBILIDADE DE TAIS DANOS.

FIM DOS TERMOS E CONDIÇÕES

Como Aplicar Estes Termos aos Seus Novos Programas

Se você desenvolver um novo programa, e quer que ele seja utilizado amplamente pelo público, a
melhor forma de alcançar este objetivo é torná-lo software livre que qualquer um pode
redistribuir e alterar, sob estes termos.

Para isso, anexe os seguintes avisos ao programa. É mais seguro anexá-los logo no início de cada
arquivo-fonte para reforçarem mais efetivamente a inexistência de garantias; e cada arquivo deve
possuir pelo menos a linha de "copyright" e uma indicação de onde o texto completo se encontra.

<uma linha que forneça o nome do programa e uma idéia do que ele faz.>
Copyright (C) <ano> <nome do autor>

Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo sob os termos da
Licença Pública Geral GNU, conforme publicada pela Free Software Foundation; tanto a versão 2
da Licença como (a seu critério) qualquer versão mais nova.

Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER GARANTIA; sem
mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO A QUALQUER
PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para obter mais detalhes.

Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa; se não,
escreva para a Free SoftwareFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-
1307, USA.

Inclua também informações sobre como contatá-lo eletronicamente e por carta.

Se o programa é interativo, faça-o mostrar um aviso breve como este, ao iniciar um modo
interativo:

ADMINISTRAÇÃO GNU/LINUX - 240/253


Treinamento em Software Livre

Gnomovision versão 69, Copyright (C) ano nome do autor


O Gnomovision não possui QUALQUER GARANTIA; para obter mais
detalhes digite `show w'. Ele é software livre e você está
convidado a redistribuí-lo sob certas condições; digite `show c'
para obter detalhes.

Os comandos hipotéticos `show w' e `show c' devem mostrar as partes apropriadas da Licença
Pública Geral. Claro, os comandos que você usar podem ser ativados de outra forma que `show w'
e `show c'; eles podem até ser cliques do mouse ou itens de um menu -- o que melhor se adequar
ao programa.

Você também deve obter do seu empregador (se você trabalha como programador) ou escola, se
houver, uma "declaração de ausência de direitos autorais" sobre o programa, se necessário. Aqui
está um exemplo; altere os nomes:

Yoyodyne, Inc., aqui declara a ausência de quaisquer direitos


autorais sobre o programa `Gnomovision' (que executa interpretações
em compiladores) escrito por James Hacker.

<assinatura de Ty Coon>, 1o. de abril de 1989


Ty Con, Vice-presidente

Esta Licença Pública Geral não permite incorporar seu programa em programas proprietários. Se
seu programa é uma biblioteca de sub-rotinas, você deve considerar mais útil permitir ligar
aplicações proprietárias com a biblioteca. Se isto é o que você deseja, use a Licença Pública Geral
de Bibliotecas GNU, ao invés desta Licença.

ADMINISTRAÇÃO GNU/LINUX - 241/253


Treinamento em Software Livre

ADMINISTRAÇÃO GNU/LINUX - 242/253


Treinamento em Software Livre

Anexo II – Licença Apostilas CCUEC

Licenciamento de Uso

Este documento é propriedade intelectual © 2002 do Centro de Computação da Unicamp


e distribuído sob os seguintes termos:

✔ As apostilas publicadas pelo Centro de Computação da Unicamp podem ser


reproduzidas e distribuídas no todo ou em parte, em qualquer meio físico ou
eletrônico, desde que os termos desta licença sejam obedecidos, e que esta licença ou
referência a ela seja exibida na reprodução.

✔ Qualquer publicação na forma impressa deve obrigatoriamente citar, nas páginas


externas, sua origem e atribuições de direito autoral (o Centro de Computação da
Unicamp e seu(s) autor(es)).

✔ Todas as traduções e trabalhos derivados ou agregados incorporando qualquer


informação contida neste documento devem ser regidas por estas mesmas normas de
distribuição e direitos autorais. Ou seja, não é permitido produzir um trabalho
derivado desta obra e impor restrições à sua distribuição. O Centro de Computação
da Unicamp deve obrigatoriamente ser notificado (treinamentos@ccuec.unicamp.br)
de tais trabalhos com vista ao aperfeiçoamento e incorporação de melhorias aos
originais.

Adicionalmente, devem ser observadas as seguintes restrições:


1. A versão modificada deve ser identificada como tal
2. O responsável pelas modificações deve ser identificado e as modificações datadas
3. Reconhecimento da fonte original do documento
4. A localização do documento original deve ser citada
5. Versões modificadas não contam com o endosso dos autores originais a menos que
autorização para tal seja fornecida por escrito.

A licença de uso e redistribuição deste material é oferecida sem nenhuma garantia de


qualquer tipo, expressa ou implícita, quanto a sua adequação a qualquer finalidade. O
Centro de Computação da Unicamp não assume qualquer responsabilidade sobre o uso
das informações contidas neste material.

ADMINISTRAÇÃO GNU/LINUX - 243/253


Treinamento em Software Livre

ADMINISTRAÇÃO GNU/LINUX - 244/253


Treinamento em Software Livre

Anexo III – Aplicativos para o GNU/Linux

Texto extraído da apostila GNU/Linux Módulo 1 – Introdução, elaborada por Fábio da Silva
Santos, da Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp – Aqui
preservados todos os seus direitos, em conformidade com a licença CCUEC constante no material
citado e aqui também presente.

Suítes de Escritórios

OpenOffice.org : Desenvolvido a partir do código-fonte do StarOffice, cedido pela Sun


Microsystems à comunidade, o OpenOffice.org é hoje se não a melhor, a mais difundida suíte
de escritórios livre do mercado, muito poderosa, com todos os recursos esperados de uma
suíte de escritórios completa. Fazem parte da suíte os softwares Writer (editor de textos),
Calc (planilha eletrônica), Draw (desenho vetorial), Impress (apresentação de slides) e Math
(fórmulas matemáticas). Para a versão 2.0, ainda em fase de testes, foi incorporado um
software de banco de dados, o Base.

Koffice : O KOffice é a suíte de escritórios do KDE, bastante completa e bem mais leve que o
OpenOffice.org, ideal para uso em máquinas mais modestas e por aqueles usuários que utilizam
tão somente os recursos básicos de uma suíte de escritórios.

Internet

Navegadores (Browsers)

Mozilla Firefox : Desenvolvido pela Fundação Mozilla, o Mozilla Firefox é um browser leve,
poderoso, fácil de usar e com vários recursos. Possui versões para GNU/Linux, Windows® e
MacOS®. Entre os seus recursos estão a navegação por abas, pesquisa inteligente, controles
avançados de privacidade e segurança, acelerador de downloads, suporte a temas para
personalizar a aparência e a extensões que fornecem todo tipo de funcionalidades extras para o
navegador.

Konqueror : O Konqueror é o navegador padrão do KDE. Também funciona como gerenciador de


arquivos, o que lhe confere uma grande praticidade. Seus recursos incluem suporte a abas e aos
plugins para Mozilla/Netscape.

Epiphany : Navegador padrão do ambiente GNOME, desenvolvido sobre a engine Gecko, a mesma
usada pelo Mozilla. As versões novas permitem adicionar recursos ao navegador em forma de
extensões. Infelizmente ele não é compatível com as extensões do Firefox.

Lynx : Navegador para modo texto, incrivelmente leve, ideal para testes de acesso a sites e
acesso a serviços configuráveis via Web. Extremamente simples, o lynx não suporta cores e
outros recursos como renderização de tabelas e frames.

Links : O links é um navegador em modo texto como o lynx, porém com alguns recursos adicionais,
como renderização de tabelas, suporte a frames, download em background e suporte a cores.
Existe ainda uma versão modificada do links, chamada links2, que fornece a esse navegador o
suporte a imagens e mouse através de framebuffer.

ADMINISTRAÇÃO GNU/LINUX - 245/253


Treinamento em Software Livre

Clientes de E-Mail

Mozilla Thunderbird : O Mozilla Thunderbird é um cliente de email seguro e versátil,


extremamente poderoso. Entre os seus recursos, um grande destaque é o seu filtro anti-SPAM
inteligente, que analisa as mensagens classificadas como SPAM, de modo que, com o passar do
tempo, o filtro se a auto-aperfeiçoa, ficando cada vez mais eficiente. Outros recursos
importantes são os de segurança, como S/MIME, assinatura digital, criptografia de mensagens,
suporte para certificados e dispositivos de segurança. Além de todos os recursos básicos de
todos os clientes de e-mail, o Mozilla Thunderbird suporta feeds RSS, filtros avançados de
mensagens e extensões, que lhe incorporam todo tipo de funcionalidades extras.

Evolution : Desenvolvido pela Ximian, empresa de Miguel de Icaza recentemente adquirida pela
Novell®, o Evolution é um cliente de email tão ou mais poderoso que o Mozilla Thunderbird,
rápido, seguro, fácil de usar, altamente configurável e totalmente integrado ao sistema (se o
ambiente gráfico em uso for o GNOME). Suas novas versões possuem suporte a servidores
Microsoft® Exchange e Novell® Groupwise.

Mutt : O Mutt é um cliente de email em modo texto pra *NIX. Extremamente leve pelo fato de
não utilizar interface gráfica, mas nem por isso limitado. O Mutt é extremamente poderoso. Sua
interface, ao contrário do que se possa esperar de um programa em modo texto, é bastante
intuitiva, e entre seus recursos estão a visualização de emails por threads, recurso muito útil para
quem faz parte de vários listas de discussão (comum entre usuários de GNU/Linux).

Mensagens Instantâneas

GAIM : O GAIM é muito popular entre os usuários de GNU/Linux, pela sua praticidade, velocidade
e estabilidade. Utilizando a biblioteca gráfica GTK, o Gaim oferece suporte a 7 protocolos
diferentes: AIM/ICQ, Gadu-Gadu, GroupWise, IRC, Jabber, MSN, Napster e Yahoo, além de
suportar conexões múltiplas, o que permite, entre outras coisas, que todas as pessoas que utilizam
o computador possam estar conectadas ao mesmo tempo. Outro ponto muito interessante é o
excelente controle de privacidade, onde pode-se determinar facilmente quais as pessoas que
podem conversar com você, além do excelente número de recursos de personalização da exibição
de informações, temas para personalizar sua aparência e plugins que lhe adicionam recursos.

GAIM-vv : O GAIM-vv é uma versão do Gaim com suporte a áudio e vídeo, não suportados pelo
Gaim original.

Kopete : Outro programa de mensagens instantâneas muito popular, o Kopete, assim como o Gaim,
possui suporte a diversos protocolos e conexões múltiplas. A diferença maior está na interface, na
localização das opções e nos recursos.

aMSN : Esse poderoso aplicativo é um clone do MSN Messenger da Microsoft®, muito similar
tanto na aparência quanto nos recursos. Suporta apenas o protocolo MSN, e possui suporte a
temas para personalizar a aparência e plugins para adicionar recursos.

Xchat : Excelente cliente de IRC, com diversas ferramentas para a utilização desse protocolo de
comunicação tão difundido, tais como lista de servidores, busca de canais, notificação de amigos,

ADMINISTRAÇÃO GNU/LINUX - 246/253


Treinamento em Software Livre

gerenciador de transferência de arquivos, múltiplas conexões, além de uma interface muito bela,
com suporte a transparências e plugins/scripts.

Irssi : Cliente de IRC para modo texto, extremamente leve e versátil. Um dos seus recursos mais
úteis é o suporte ao bash completion, que completa o caminho de diretórios e arquivos
automaticamente através do uso da tecla TAB, muito útil na hora de enviar arquivos.

Multimídia

Reprodutores (Players)

XMMS : O X Multimedia System é um clone do popular Winamp para Windows®, sendo muito
compatível com esse, suportando suas skins e alguns de seus plugins. A princípio, o XMMS
reproduz apenas áudio, mas existem plugins que permitem que ele reproduza vídeo.

Xine : O Xine é um reprodutor multimídia poderoso, altamente personalizável, utilizado


principalmente para reprodução de vídeos. Seus recursos incluem seleção de drivers de áudio e
vídeo, configuração de subtítulos, efeitos de vídeo, suporte a TV, entre tantos outros.

Kaffeine : O Kaffeine é um frontend para outros reprodutores multimídia (o padrão é o Xine),


feito para o KDE. Entre seus recursos adicionais estão a integração a browsers, permitindo
reproduzir streamings criados para o Windows® Media Player.

Amarok : Reprodutor para o KDE, extremamente poderoso, utiliza um banco de dados MySQL ou
SQLite para armazenar seus dados. Sua playlist inteligente analisa as preferências musicais do
usuário, e reproduz seqüencialmente as músicas no seu estilo preferido. Outro recurso
interessante é a busca por capas, que procura na Internet pela capa do álbum a que cada música
pertence, para que seja exibido durante a reprodução. Sua aparência é totalmente personalizável
através de skins, e possui suporte a plugins que lhe incorporam recursos adicionais.

Conversores

RipperX : O RipperX é um excelente programa para converter áudio de CD para formato digital,
com suporte a CDDB, que procura na Internet informações sob o álbum a ser convertido, como
artista e nomes das faixas. O RipperX utiliza o cdparanoia para extrair as músicas dos CD's, e
depois convertê-as para o formato escolhido (MP3, Ogg Vorbis, WMA, WAV) através do codec
apropriado.

Grip : Como o RipperX, o Grip utiliza o cdparanoia para extrair as músicas do CD, possui suporte a
CDDB e suporta diversos formatos de áudio. As diferenças maiores ficam por conta da interface.

Avidemux : Esse é, sem dúvida, um dos mais poderosos conversores multimídia que se conhece.
Leve e versátil, o avidemux pode converter entre formatos de áudio e vídeo. Possui suporte a
extração de áudio e vídeo de DVD's, pode extrair áudio de arquivos de vídeo, possui diversos
filtros, inclusive suporte a legendas, ajuste de volume, controle de cor, desentrelace e recursos
básicos de edição.

ADMINISTRAÇÃO GNU/LINUX - 247/253


Treinamento em Software Livre

Editores

Ardour : O Ardour é um software de edição de áudio profissional, extremamente poderoso, com


suporte a múltiplas pistas e diversos filtros de efeitos.

Protux : Criado por brasileiros e hoje mantido por desenvolvedores de todo o mundo, o Protux é
um software de edição de áudio profissional, desenvolvido por profissionais como engenheiros de
som, que incluem no Protux os recursos que precisam, o que o tornou uma alternativa muito
superior à maioria das soluções proprietárias da categoria, como o SoundForge®, da Sony®.

Rosegarden : Editor de MIDI profissioal, multipista, muito versátil e poderoso, possui os


recursos esperados de um sequencer e editor de músicas.

Cinelerra : O Cinelerra é um editor de vídeo profissional, que mistura recursos encontrados em


softwares comerciais como o Premiere e o AfterEffects, da Adobe®. Possui suporte a múltiplas
pistas de áudio e vídeo, transições e efeitos, pré-visualização, máscara, camadas e filtros de
áudio. Desenvolvido para uso profissional, o Cinelerra trabalha apenas com vídeos em alta
resolução nos sistemas NTSC, PAL ou HDTV e nos formatos DV ou sem compressão, o que exige
um grande espaço em disco e uma grande quantidade de memória RAM disponível. O Cinelerra
pode se comunicar com dispositivos como placas de captura de vídeo e recepção de TV, além de
câmeras digitais e outros dispositivos FireWire (IEEE 1394). Um ponto de destaque é o suporte a
clustering, que permite utilizar vários computadores para processar simultaneamente as tarefas
de renderização de vídeo, acelerando muito esse processo sem a necessidade de investir muito em
hardware poderoso.

Kino : O Kino é um software profissional de editoração de DVD's, permitindo a geração de


estruturas complexas, com menus avançados, múltiplas faixas de áudio, legendas, etc. O Kino
trabalha com o formato DV, nos sistemas NTSC e PAL, e tem suporte a dispositivos de captura de
vídeo.

Gráficos

The GIMP : O GNU Image Manipulator Program é um dos softwares livres de maior destaque,
graças ao seu grande poder, que o tornam uma alternativa real ao onipotente Photoshop®, da
Adobe®. Dentre os seus recursos, merecem destaque os seus filtros extremamente poderosos,
além do Script-fu, que permite criar rapidamente botões, animações e todo tipo de efeito para
uso em layouts de páginas para a Web.

Sodipodi : Excelente software de desenho vetorial, cuja interface é parecida com a do GIMP,
dividida em várias janelas. O Sodipodi conta com as principais ferramentas para desenho, como
bézier e formas prontas, sendo uma boa alternativa para o CorelDRAW®, para trabalhos que não
sejam extremamente complexos.
Inkscape : Outro software de desenho vetorial que utiliza o mesmo engine do sodipodi. A
diferença principal está na interface, que no caso do Inkscape é unificada, com todas as janelas
de ferramentas dispostas em uma única janela.

OpenOffice.org Draw : Incluso na suíte OpenOffice.org, o Draw é o software de desenho mais


poderoso dentre os softwares livres disponíveis para GNU/Linux, contendo todos os recursos

ADMINISTRAÇÃO GNU/LINUX - 248/253


Treinamento em Software Livre

básicos de desenho, além de outras ferramentas para a criação de formas de texto avançadas.

Desktop Publishing (DTP)

Scribus : Uma das áreas ainda pouco explorada no GNU/Linux é o DTP (Desktop Publishing), onde
encontramos o Scribus, um software poderoso que pode tranqüilamente substituir o já conhecido
(e extinto) Adobe® PageMaker®.

Visualizadores de Imagem

Eog : Eye of Gnome, é o visualizador de imagens do GNOME. Possui funções básicas de


visualização.

Gthumb : Visualizador de imagens poderoso, parecido com o ACDSee. Possui visualização de


thumbnails, slideshow, rotação de imagens, etc. Tudo que se precisa de um visualizador de
imagens.

XV : Esse é um visualizador de imagens independente de plataforma, bastante leve.

Display : Esse programa faz parte do ImageMagick, leve e de uso simples.

Emuladores

DosEmu: Emulador que permite rodar aplicações para DOS® sob o GNU/Linux.

Wine : O Wine permite rodar aplicativos para Windows® no GNU/Linux, funcionando para uma
grande quantidade de softwares comerciais como Office®, Photoshop®, Dreamweaver®, Flash® e
para uma quantidade ainda maior de jogos, entre eles o popular Counter Strike, que roda
perfeitamente no GNU/Linux através do Wine.

Cedega: O Cedega é um projeto derivado do Wine especialmente para jogos. Pode-se usar uma
versão GPL do Cedega, ou então assinar o serviço da Transgaming, que dá assistência necessária
para rodar praticamente qualquer jogo no Linux através desse emulador.

Crossover: O Crossover é um sistema que permite a emulação de outros sistemas operacionais


como o Windows, por exemplo. A emulação é executada sob o Linux e o usuário pode então
executar dois sistemas operacionais simultaneamente, como se fossem dois computadores
distintos.

VMWare: O VMWARE é uma poderosa ferramenta de virtualização de hardware, a qual permite


que sistemas operacionais sejam adicionados em máquinas virtuais dentro de um único computador.
Este software chega ao nível de emular até mesmo uma BIOS para o sistema hospede. O
VMWARE foi desenvolvido com base em tecnologia da IBM e a versão full não é livre. Há porém
um Player do produto, que neste caso não é paga, que permite que sejam executadas as imagens de
outros sistemas.

ADMINISTRAÇÃO GNU/LINUX - 249/253


Treinamento em Software Livre

Editores de Texto

Gedit : Editor de texto do GNOME, que vem sendo desenvolvido com a tecnologia GTK+.
Apresenta uma interface gráfica amigável, suporte a abas como o Mozilla Firefox, simples de
usar, além de suporte a realce de código de várias linguagens de programação.

Kate : Editor de texto que acompanha o KDE, utiliza a biblioteca gráfica QT. Seus recursos são
mais focados para programação em si, não sendo muito diferentes dos do Gedit.

Vi/Vim : O VI é um dos editores de texto mais antigos. Independente de plataforma, ele é


encontrado em quase todos os sistemas *NIX. É um editor de texto para console, então não há a
necessidade de se usar um ambiente gráfico. Ele é um pouco confuso para quem utiliza o programa
pela primeira vez, visto que todos as operações são iniciadas a partir de uma seqüência de teclas.
É usado tanto para editar um simples texto como para programar. Torna-se muito prático uma vez
que sistemas GNU/Linux armazenam as suas configurações em arquivos de texto que podem,
facilmente, ser editados pelo VI. O VIM (abreviatura de vi improved) é uma variação do vi com
alguns recursos extras. O uso do vim é igual ao do vi, exceto pelas funções adicionais não
encontradas neste. Para aqueles que não abrem mão de uma interface gráfica, há um frontend
para o vi/vim, chamado Gvim. Construído em GTK, oferece um conforto a mais para os usuários
inexperientes.

Pico : Outro editor de texto para console, mais simples de utilizar. Seus comandos são feitos pela
tecla CTRL+<letra>, sendo que há um menu na parte inferior da tela, com algumas teclas de atalho
mais usadas.

Desenvolvimento

Quanta Plus : O Quanta Plus é o aplicativo de desenvolvimento Web do KDE, com todos os
recursos principais necessários para o webmaster desenvolver desde sites simples em HTML até
complexos sistemas Web em PHP.

Bluefish : Tão ou mais poderoso que o Quanta, o Bluefish utiliza a biblioteca gráfica GTK, possui
suporte a diversas linguagens, além de ferramentas para configuração de CSS e acesso a banco de
dados MySQL.

Eclipse : IDE para desenvolvimento em Java, que oferece com amplos e inovadores recursos de
produtividade como refactoring, geração de código e muitos outros auxílios. Sua interface gráfica
é própria, o que lhe confere uma interface com o usuário muito rica de componentes gráficos sem
abrir mão do desempenho, e possui suporte a plugins que lhe conferem todo tipo de
funcionalidades extras.

Anjuta : Anjuta é uma IDE para desenvolvimento em C/C++, com muitos recursos e suporte a
integração com softwares para RAD, como o Glade.

Glade : Ferramenta para RAD (Rapid Application Development), que permite desenvolver
facilmente aplicativos gráficos para a biblioteca GTK. Utiliza várias linguagens, entre elas Python.
Seus códigos são gravados em arquivos XML, o que permite a fácil integração com outros
aplicativos de desenvolvimento, como o anjuta. Outro recurso interessante é a geração do código
em linguagem C que realiza a chamada dos componentes gráficos GTK.

ADMINISTRAÇÃO GNU/LINUX - 250/253


Treinamento em Software Livre

jEdit : O jEdit é uma IDE de desenvolvimento para mais de 130 linguagens, suportando destaque
de sintaxe para todas elas. Desenvolvido em Java, ele roda em MacOS®, OS/2, UNIX®, VMS e
Windows®. Seu forte é o suporte a macros e plugins, desenvolvidos pelos seus usuários e
disponibilizados no site oficial do jEdit, que agilizam o desenvolvimento dos aplicativos.

Terminais Gráficos

Gnome-Terminal : Terminal do GNOME, muito customizável, com transparências e efeitos


diversos, entretanto um pouco pesado.

Konsole : Terminal do KDE. Possui os mesmos recursos do Gnome-Terminal.

Xterm : O terminal mais simples e minimalista, é o terminal que acompanha o XFree/X.org. Não
possui muitos recursos, sendo o seu grande atrativo a velocidade de abertura, ideal para máquinas
modestas e para usuários que costumam abrir um grande número de janelas de terminal
simultaneamente.

Aterm : O terminal usado pelo AfterStep, muito popular entre os usuários por permitir a
completa personalização, com transparências, cores de fundo, etc.

Eterm : Terminal do Enlightment, possui alguns recursos semelhantes ao Aterm.

RXVT : Outro terminal minimalista. Como o Xterm, ele é presente na maior parte das
distribuições.

Onde procurar softwares para GNU/Linux

SourceForge : Pense em um local onde milhares de desenvolvedores de Software Livre têm


liberdade para desenvolver seus projetos sem se preocupar com hospedagem, criando uma
comunidade de desenvolvimento. Pois bem, esse projeto existe e se chama Souceforge
http://sourceforge.net. Mas o que é o SourceForge? Pois bem, o SourceForge é uma página que
incentiva a criação de comunidades de desenvolvimento de Software Livre. Essas comunidades
recebem, gratuitamente, serviços de hospedagem, fórum, bugzilla, enfim, tudo que um projeto de
software precisa para crescer. Para se ter uma idéia, existem cerca de 100.000 projetos somente
nesse site. Alguns deles são bem conhecidos, outros nem tanto. Qualquer projeto cuja home page
seja http://NOME.sourceforge.net é um dos membros dessa comunidade. Não há apenas software
para GNU/Linux no SourceForge. Estão presentes também softwares para MacOS®, Windows®,
*NIX, etc. É claro, só podem fazer parte dessa comunidade projetos de Software Livre,
publicados sob a licença GNU GPL ou alguma outra aceita pelo projeto. Esse é um dos lugares onde
se pode achar software livre de boa qualidade, ou criar um projeto próprio e usufruir das regalias
oferecidas pelo SourceForge.

FreshMeat : Outro lugar parecido com esse é o FreshMeat http://freshmeat.net, que também
conta com uma grande quantidade de softwares. Se você for ver a lista de projetos mais
populares, verá grandes projetos, como o Mplayer, o MySQL, etc. Um diferencial do FreshMeat é
a seção de temas http://themes.freshmeat.net, com temas para gerenciadores de janelas.

ADMINISTRAÇÃO GNU/LINUX - 251/253


Treinamento em Software Livre

ADMINISTRAÇÃO GNU/LINUX - 252/253


Treinamento em Software Livre

Anexo IV – Bibliografia e Outros Links

Ferreira, E. Ruben. Linux Guia do Administrador do Sistema. Editora Novatec, Edição 2003.

Ribeiro, Uirá, Certificação LINUX, Editora Axcel Books, Edição 2004.

Neves, Júlio Cezar, Programação Shell Linux, Editora Brasport, 5a Edição 2005.

Santos, Fábio da Silva,Apostila GNU/Linux Módulo 1 – Introdução, Diretoria de Transferência


Tecnológica, Centro de Computação – UNICAMP.

Links Sobre o GNU/LINUX

Guia Foca Linux - Gleydson Maziolli da Silva


http://focalinux.cipsga.org.br/
Documentação da Debian-BR-CDD
http://cdd.debian-br.org/project/
Dicas-L
http://www.dicas-l.unicamp.br
CIPSGA – http://www.cipsga.org.br
BR-Linux – http://www.br-linux.org
Viva o Linux – http://www.vivaolinux.com.br
Free Software Foundation - http://www.fsf.org/
Projeto GNU – http://www.gnu.org
Linux Security – http://www.linuxsecurity.com.br/
Guia do hardware – http://www.guiadohardware.net
CodigoLivre.org - http://codigolivre.org.br/
Debian-BR - http://www.debianbrasil.org/
SuSe - http://www.novell.com/linux/suse/
RedHat - http://www.redhat.com/
Projeto Fedora - http://www.redhat.com/fedora/
Conectiva(Mandriva) - http://www.conectiva.com.br/cpub/pt/principal/index.php
Ubuntu Linux - http://www.ubuntulinux.org/
Mandrake (Mandriva) - http://www.mandrivalinux.com
Slackware – http://www.slackware.com
Projeto Debian - http://www.debian.org/
Gentoo Linux – http://www.gentoo.org
Knoppix - http://www.knoppix.org/
Kurumin Linux - http://www.guiadohardware.net/linux/kurumin/
Muriqui Linux - http://www.muriquilinux.com.br/

FIM

ADMINISTRAÇÃO GNU/LINUX - 253/253

Você também pode gostar