Vous êtes sur la page 1sur 126

tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.

br

DlteC do Brasil®
www.dltec.com.br
info@dltec.com.br | 41 3045.7810

DLTEC DO APOSTILA/EBOOK DO CURSO DE LINUX


BRASIL ESSENTIALS

Apostila/eBook do Curso Linux Essentials


DlteC do Brasil®
Todos os direitos reservados©

Apostila/eBook do Curso Linux Essentials Página 1


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Sobre o E-book/Apostila

O conteúdo desse documento é uma adaptação


da matéria online de leitura do curso.

O presente material traz conteúdo teórico do


curso online, porém temos que deixar claro que
não é um curso e sim uma adaptação do
nosso material online para e-book/apostila.
Portanto recursos como exercícios, simulados,
tutoria (tira dúvidas com professores) e vídeo
aulas não fazem parte desse e-book, pois são
exclusivos para alunos devidamente matriculados
em nosso site oficial.

Para maiores informações sobre nossos treinamento visite o site:

>>> http://www.dltec.com.br <<<

Apostila/eBook do Curso Linux Essentials Página 2


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Direitos Autorais

Aviso Importante!

Esse material é de propriedade da DlteC do Brasil Ltda e é protegido pela lei


de direitos autorais 9610/98.

É expressamente proibida cópia física ou em meio digital, reprodução parcial,


reprografia, fotocópia ou qualquer forma de extração de informações deste sem
prévia autorização da DlteC do Brasil conforme legislação vigente.

Seu uso pessoal e intransferível é somente para o cliente que adquiriu o


referido e-book/apostila.

A cópia e distribuição são expressamente proibidas e seu descumprimento


implica em processo cível de danos morais e materiais previstos na legislação
contra quem copia e para quem distribui, sejam cópias físicas e/ou digitais.

Copyright © 2016.

Apostila/eBook do Curso Linux Essentials Página 3


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Indice

Introdução .................................................................................................................................. 5
Capítulo 01 – A Comunidade Linux e uma Carreira em Opensource .............................................. 6
Capítulo 02 – Encontrando seu Caminho em Sistemas Linux ....................................................... 23
Capítulo 03 – O Poder da Linha de Comandos ............................................................................ 53
Capítulo 04 - O sistema operacional Linux.................................................................................. 76
Capítulo 05 - Segurança e Permissões de Arquivos ................................................................... 102

Apostila/eBook do Curso Linux Essentials Página 4


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Introdução

Olá,

Essa apostila que você recebendo é uma


adaptação do material de leitura Online do
curso Linux Essentials da DlteC do Brasil.
Aqui nessa apostila colocamos uma
adaptação em texto do nosso material
online de estudo (matéria online do curso
Linux Essentials).

Esperamos que você aproveite o material e


bons estudos.

Apostila/eBook do Curso Linux Essentials Página 5


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Capítulo 01 - A Comunidade
Linux e uma Carreira em
Opensource

Objetivos do Capítulo
Ao longo desse capítulo você deverá:

 Obter conhecimentos sobre o


desenvolvimento do linux e suas
principais distribuições
 Ter noções sobres as principais
aplicações no Linux e suas
utilizações
 Obter conhecimentos sobre
comunidades abertas e
licenciamento de softwares
opensource para os negócios
 Obter conhecimentos básicos sobre o
ICT e formas de se trabalhar com o
Linux

Apostila/eBook do Curso Linux Essentials Página 6


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Sumário do Capítulo

1 Evolução do Linux como um Sistema


Operacional Popular __________________ 8
1.1 Filosofia OpenSource ______________ 9
1.2 Distribuições Linux ________________ 9
1.3 Sistemas Embarcados ____________ 10
2 Principais Aplicações Open Source___ 11
2.1 Aplicações para Desktop __________ 12
2.2 Aplicações para Servidores ________ 14
2.3 Aplicações Móveis _______________ 14
2.4 Linguagens de Desenvolvimento____ 15
2.5 Ferramentas de Gerenciamento de
Pacotes e Repositórios _________________ 16
3 Entendendo o Software OpenSource e o
Licenciamento ______________________ 17
3.1 Licenciamento __________________ 18
3.2 Freesoftware Foundation (FSF) _____ 18
3.3 OpenSource Initiative (OSI) ________ 18
4 Habilidades com ICT e Trabalhando no
Linux ______________________________ 19
4.1 Desktops_______________________ 20
4.2 Utilizando a Linha de Comando no Linux
21
4.3 Casos de Uso de Linux na Indústria __ 22

Apostila/eBook do Curso Linux Essentials Página 7


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

1 Evolução do Linux como um Sistema Operacional Popular


Peso: 2
Descrição: Conhecimentos sobre o desenvolvimento do linux e suas principais distribuições.

Tópicos Importantes:

Filosofia OpenSource
Distribuições
Sistemas Embarcados

Veja abaixo uma lista parcial com os arquivos, termos e utilitários mais utilizados:

Android
Debian
CentOS

Apostila/eBook do Curso Linux Essentials Página 8


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

1.1 Filosofia OpenSource

Open Source é por si só uma filosofia que promove a livre distribuição, redistribuição e
acesso a um determinado software, incluindo ao código do mesmo (por isso o nome Open
Source - código aberto), onde você tem o direito de ler, alterar e redistribuir suas (ou com
suas) alterações. Existem variações de licenças Open Source que permite ou não algumas
coisas, mas chegaremos neste ponto mais adiante.

Uma das coisas que fez com que o Open Source se popularizasse foi a evolução da internet,
com esta foi possível a interação e colaboração de voluntários do mundo todo em determinados
projetos, tornando a evolução dos mesmos surpreendentes, um bom exemplo disso é o Linux.
Uma frase padrão que costumamos utilizar para descrever este processo é que enquanto um
desenvolvedor brasileiro para de trabalhar e vai dormir, um desenvolvedor japonês acorda e
começa a trabalhar no Linux, tornando desta forma o desenvolvimento rápido e constante.

O Open Source deu espaço para a criação de várias outras culturas, como por exemplo a
Creative Commons, esta é uma licença de direitos autorais com a qual você pode ou não
permitir que as pessoas utilizem seu produto (artístico), alterem, redistribuam, e assim por
diante, mantendo você mencionado no trabalho através de vários pontos da licença.

Basicamente a ideia da filosofia do Open Source é permitir que você possa:

 Utilizar um software para qualquer propósito


 Adaptar um software, estudar seu código e funcionamento
 Distribuir o software ou redistribuir com ou sem alterações

1.2 Distribuições Linux

Distribuições são por assim dizer “caixas” de software. Basicamente é um Linux, com uma
seleção de softwares que aqueles que a montaram acreditam ser o ideal para o seu público
alvo.

Estas distribuições são montadas por grupos de voluntários (como é o caso do slackware ,
Debian e gentoo por exemplo) ou por empresas como acontece com o RedHat Linux ou SuSE
Linux (novel). Dentro deste ponto você costuma ter distribuições para diferentes pontos de
interesse, veja abaixo uma pequena lista com alguns casos.

 Desktop: Ubuntu, OpenSuSE, Fedora, LinuxMint


 Servidores: Debian, CentOS, RedHat, SuSE Linux
 Segurança (firewalls/ids e outros): OpenWall, Vyatta, BackTrack

A grande questão que fica é o porque montar uma distribuição? Já não existem muitas?

Como citamos no inicio, uma distribuição é feita por um grupo de voluntários ou uma empresa
analisando necessidades que eles acham necessárias. Para exemplificar imagine o seguinte
cenário: você trabalha em uma empresa que utiliza um Linux RedHat e em cada desktop,
depois de instalado o linux, você precisa instalar uma série de softwares e aplicativos.

Não seria muito mais fácil, já que trata-se de um processo repetitivo, que você monte um CD
com todos os aplicativos dentro e um processo automático de instalação já no seu perfil? Assim
nasce uma nova distribuição Linux que pode ou não chegar a conhecimento publico.

Apostila/eBook do Curso Linux Essentials Página 9


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

1.3 Sistemas Embarcados

O Linux é um dos principais sistemas operacionais utilizados em sistemas embarcados, mas o


que são sistemas embarcados?

Sistemas embarcados são hardwares criados para um propósito especifico, ou uma série de
propósitos, mas é um equipamento limitado, podendo ser um pabx, um celular, um pda, um
receptor de tv ou uma tv.

Na verdade existem vários ambientes onde o Linux pode ser utilizado, por exemplo, os
celulares que chamamos de Android são celulares com Linux Embarcado, ou seja, ele vem de
fábrica com o Linux controlando suas funções principais, os receptores de satélite da AZBox são
outro caso onde é um sistema Linux que roda no hardware.

Apostila/eBook do Curso Linux Essentials Página 10


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

2 Principais Aplicações Open Source


Peso: 2
Descrição: Conhecimentos das principais aplicações e suas utilizações.

Tópicos Importantes:

Aplicações para Desktop


Aplicações de Servidores
Aplicações Móveis
Linguagens de Desenvolvimento
Ferramentas para Gerenciamento de Pacotes e Repositórios

Veja abaixo uma lista parcial com os arquivos, termos e utilitários mais utilizados:

OpenOffice.org, LibreOffice, Thunderbird, Firefox


Blender, Gimp, Audacity, ImageMagick
Apache, MySQL, PostgreSQL
NFS, Samba, OpenLDAP, Postfix, DNS, DHCP
C, Perl, shell, Python, PHP

Apostila/eBook do Curso Linux Essentials Página 11


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

2.1 Aplicações para Desktop

Gerenciadores de Desktop

Os gerenciadores de desktop foram desenvolvidos para facilitar o uso do Linux para os


usuários finais. No início, o Linux não era muito popular entre os usuários finais e sua utilização
era mais difundida no meio técnico ou acadêmico. Isso porque antes dos gerenciadores de
desktops tudo o que você precisasse fazer no Linux deveria ser feito via linha de comandos.

Os usuários finais que desejavam utilizar o computador para tarefas corriqueiras, como acessar
a internet, ver um email e etc acabavam não gostando do linux devido a essa dificuldade inicial.

Com o intuito de difundir a utilização do linux para todos os tipos de usuários (residenciais,
comerciais) os programadores desenvolveram interfaces gráficas, chamadas de gerenciadores
de desktops, para permitir ao usuário uma melhor experiência de usabilidade.

A grande questão é que existem várias versões diferentes, com focos diferentes e com recursos
diferentes, onde o melhor deles depende unicamente das suas escolhas e do seu gosto.

Alguns dos gerenciadores de desktop mais conhecidos são:

 Gnome ( http://www.gnome.org/ )

 KDE ( http://www.kde.org/ )

Apostila/eBook do Curso Linux Essentials Página 12


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Estes dois são os mais completos e amplamente utilizados, mas existem vários outros , alguns
levíssimos com alguns recursos interessantes, outros praticamente sem recurso algum,
variando conforme sua finalidade, segue abaixo uma pequena lista com alguns exemplos.

 LXDE ( http://www.lxde.org/ )
 Fluxbox ( http://www.fluxbox.org/ )
 XFCE ( http://www.xfce.org/ )
 FVWM ( http://www.fvwm/ )
 Icewm ( http://www.icewm.org/ )
 WindowMaker ( http://www.windowmaker.org/ )

Além destes existem muitos outros, mas vamos deixar isso para você mesmo descobrir e fazer
a escolha da melhor opção para o seu perfil.

Aplicativos de Desktop
Como quase tudo no Linux, temos muitas variações de vários de tipos de softwares. Existem
diversas opções de gerenciadores de arquivos, suítes de escritório, gravadores de cd, players
de áudio, mas existem algumas que se destacam em meio a multidão. Veja abaixo apenas
alguns exemplos.

Suíte de Escritório
OpenOffice/LibreOffice ( http://www.openoffice.org/ / http://www.libreoffice.org/ )

Gravador de CDs/DVD
K3b ( http://www.k3b.org/)

Gravação / Manipulação de áudio


Audacity (http://www.audacity.sourceforge.net/)

Gráficos 3D
Blender ( http://www.blender.org/ )

Editor de vídeo
Cinelerra ( http://www.cinelerra.org/ )

Apostila/eBook do Curso Linux Essentials Página 13


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

2.2 Aplicações para Servidores

Hoje os sistemas Linux vários serviços na internet, um deles e amplamente utilizado por todos
nós são os websites, na maior parte das vezes hospedados em servidores Linux rodando o
software Apache.

Para termos uma ideia da sua popularidade a utilização do Linux hoje correspondente a 62%
dos servidores mundiais (relatório da netcraft até junho de 2011), mas também existem
muitos servidores de e-mails, bancos de dados, firewalls, proxys e outras aplicações.

Também existem vários aplicativos para compartilhamento de arquivos como o samba, nfs,
coda, aplicações para serviço de DNS como o BIND, PowerDNS e outras

2.3 Aplicações Móveis

O Linux também é muito utilizado em aplicações móveis, um dos primeiros Linux que saiu
para dispositivo móvel foi o Symbian da Nokia. Sua primeira release saiu em 1997 e foi
embarcado na maior parte dos dispositivos Nokia até a chegada do AndroidOS. Outro exemplo
que podemos citar é o MeeGo que foi criado de uma junção dos projetos Moblin e Maemo.

Também existem vários dispositivos que vem com sistemas Linux, mas que devido aos seus
fabricantes darem uma interface própria e não mostrarem as telas de boot, muitas vezes não
percebemos que são na verdade um Linux. Um bom exemplo desses casos é o AndroidOS que
levou estes sistemas a um novo patamar, trazendo um sistema Linux mais completo e mais
compatível com os softwares que existem para o mesmo.

Você pode por exemplo pegar um celular com AndroidOS, fazer o jailbreak do mesmo para ter
acesso root e então instalar um Samba para compartilhar dados do seu celular em uma rede
Windows, ou pode colocar um servidor apache no mesmo entre outras funções.

Apostila/eBook do Curso Linux Essentials Página 14


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Informação Adcional:

O que significa Jailbreak?

Em uma tradução livre e literal, "Jailbreak" significa "fugir da prisão", e representa uma
metáfora para o ato de burlar as restrições impostas por uma empresa em seus dispositvos,
adicionando funcionalidades não oficiais a eles.

O método, desenvolvido por grupos hackers, tem sido comumente relacionado aos
dispositivos da Apple e ao seu sistema operacional móvel, o iOS, devido à grande
popularidade que o processo ganhou entre esses usuários. Entretanto, é possível realizar o
Jailbreak para "desbloquear" outros aparelhos, como no Playstation 3, da Sony, ou o Xbox
360, da Microsoft, por exemplo.

2.4 Linguagens de Desenvolvimento

O Linux em si, que na verdade é apenas o Kernel, é desenvolvido utilizando as linguagens C e


C++, já as aplicações que você utiliza são construídas nas mais variadas linguagens passando
por C, C++, Earlang, Python, Perl, PHP, assembly e muitas outras, na maior parte utilizando
compiladores 100% livres que foram escritos em C e C++.

Informação Adcional:

O que é o Kernel do Linux?

O kernel é responsável pelas funções vitais do sistema, como gerenciamento de memória,


gerenciamento de dispositivos e controle de processos em execução. A cada mês são
lançadas novas versões de Kernel, que podem ser obtidas gratuitamente pela internet,
trazendo suporte a novos dispositivos, trazendo características inovadoras, ou simplesmente
aperfeiçoando o que já existe.

Não confuda Kernel com distribuições linux, o Kernel faz parte de uma distribuição. Toda
distribuição tem a sua versão de Kernel.

Apostila/eBook do Curso Linux Essentials Página 15


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

2.5 Ferramentas de Gerenciamento de Pacotes e Repositórios

Diferentemente do Windows, onde você pode pegar um arquivo .exe que contenha toda a
estrutura necessária para a aplicação rodar, no Linux quando você desenvolve um software
normalmente você não o cria inteiro, você utiliza muito código pronto como bibliotecas
gráficas, bibliotecas para conexão com bancos de dados, manipulação de arquivos e etc.

Para facilitar o gerenciamento destes softwares e o processo de instalação o Linux utiliza


o conceito de pacotes com dependências, ou seja, meu software X depende do software A, B, C
para instalar, o software C por sua vez depende do software E que por sua vez depende do
software H.

Neste caso, se você baixar apenas o software X e tentar instalar o mesmo usando por exemplo
o rpm ou o dpkg (falaremos mais sobre o rpm e dpkg posteriormente) ele irá falar que para
instalar o software X é necessário A, B, C e etc, e não vai prosseguir com a instalação.

Apostila/eBook do Curso Linux Essentials Página 16


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3 Entendendo o Software OpenSource e o Licenciamento


Peso: 1
Descrição: Conhecimentos sobre comunidades abertas e licenciamento de softwares
opensource para os negócios.

Tópicos Importantes:

Licenciamento
Free Software Foundation (FSF), Open Source Initiative (OSI)

Veja abaixo uma lista parcial com os arquivos, termos e utilitários mais utilizados:

GPL, BSD, Creative Commons


Free Software, Open Source Software, FOSS, FLOSS
Open Source business models

Apostila/eBook do Curso Linux Essentials Página 17


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3.1 Licenciamento

O Linux foi inicialmente lançado sob uma licença de software que proibia qualquer uso
comercial.

Isso foi rapidamente alterado pela GPL (Gnu Public


Licence), através desta licença foi permitida a venda,
distribuição, alteração de novas versões que poderiam ser
ou não modificadas garantindo que estas versões fossem
lançadas dentro da mesma licença permanecendo assim os
mesmos direitos e os créditos aos autores.

Infomação adcional:
http://pt.wikipedia.org/wiki/GNU_General_Public_License

3.2 Freesoftware Foundation (FSF)

A Freesoftware Foundation (FSF) é uma organização


sem fins lucrativos com ação mundial para promover o
uso de computadores e para defender os direitos de
todos os usuários de software livre.
Informação adcional:
Atualmente a FreeSoftware Foundation conta com http://www.fsf.org
membros como Google, Oracle, IBM , HP, Intel, Nokia e
muitos outros, estes membros colaboram com recursos
financeiros, técnicos, estruturais entre outros.

3.3 OpenSource Initiative (OSI)

Assim como a FSF a OSI (OpenSource Initiative) é uma


organização sem fins lucrativos com ação global formada
para educar e advogar em beneficio do software livre e
construir meios para constituir o uso de software livre.

Uma das principais atividades da OSI é a definição de


padrões, mantendo a definição aberta para o bem da
comunidade. As licenças aprovadas e mantidas pela OSI
criam um elo de segurança ao redor de desenvolvedores,
usuários, corporações e governos para que estes possam
organizar a cooperação sobre o código aberto.
Informação adcional:
http://opensource.org/

Apostila/eBook do Curso Linux Essentials Página 18


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

4 Habilidades com ICT e Trabalhando no Linux


Peso: 2
Descrição: Conhecimentos básicos sobre o ICT e formas de se trabalhar com o Linux.

Tópicos Importantes:

Conhecimentos em Desktop
Linha de Comando no Linux
Uso do Linux na Indústria, Computações nas Nuvens e Virtualização

Veja abaixo uma lista parcial com os arquivos, termos e utilitários mais utilizados:

Using a browser, privacy concerns, configuration options, searching the web and saving content
Terminal and Console
Password issues
Privacy issues and tools
Use of common open source applications in presentations and projects

Apostila/eBook do Curso Linux Essentials Página 19


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

4.1 Desktops

Antes de mais nada vamos entender o que é ICT (Information and Communication
Technology). ICT é basicamente tecnologia da informação, seja ela a utilização de softwares
para pesquisa, comunicação, conteúdo multimídia ou qualquer outro modelo, basicamente aqui
estamos falando de navegação na web, conceitos de privacidade e outras questões que
envolvem comunicação usando o computador.

Atualmente o desktop do Linux é extremamente completo, as soluções são muito bem


acabadas e você possui algumas variações de desktop com focos diferentes permitindo que
você escolha a melhor opção para você. Conforme já comentamos, alguns dos desktops mais
conhecidos são o GNOME (figura 1) o KDE (figura 2).

Figura 1 Figura 2

Graças a estes desktops, você tem uma experiência muito mais simples atualmente durante a
utilização de sistemas Linux. Desde o surgimento dos primeiros desktops para Linux muito se
evoluiu, inclusive suporte a placas de vídeo e tudo mais, ganhando-se em performance e
qualidade.

Os softwares desktops para Linux incluem atualmente excelentes aplicações, como por
exemplo, os navegadores Firefox, Google Chrome e Opera (além de outros), suíte de escritório
OpenOffice/LibreOffice e o Calligra que faz parte da suíte do KDE e também alguns
aplicativos do Gnome para determinadas funções como o Abiword (editor de texto), gnumeric
(planilhas), Inkscape (editoração) e outras aplicações.

Em termos de suíte de escritório o OpenOffice/LibreOffice é o mais completo e também o que


mais se assemelha aos recursos oferecidos pelo Office da Microsoft ou da Apple.

Apostila/eBook do Curso Linux Essentials Página 20


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Conforme falado existem muitas aplicações para Linux, para várias finalidades. Basta procurar
um pouco e normalmente você acha tudo que precisa com uma versão open source de ótima
qualidade.

4.2 Utilizando a Linha de Comando no Linux

A utilização de desktops que falamos anteriormente é mais utilizada por usuários finais, que
utilizam o Linux em seus micros e laptops. Quando falamos em Linux, principalmente para
funções de servidor é muito comum utilizarmos apenas linha de comando para
manipulação do sistema, desta forma é imprescindível que conheçamos algumas questões
básicas sobre isso.

A linha de comando do Linux permite a você realizar praticamente todas as atividades


necessárias do sistema. Tenha em mente que tudo em si é comando, ao dar um clique em
um ícone você está utilizando de forma transparente um comando para executar o programa
em questão.

No Linux através da linha de comando é possível verificar status de rede, configurar a rede,
configurar um compartilhamento de rede, alterar informações de data e hora, alterar
configurações de funcionamento do equipamento, executar programas, instalar atualizações e
por ai vai.

A Linha de Comando:
A navegação via linha de comando é similar ao utilizado no Windows por exemplo, digamos que
você tenha no Windows sua partição C: com uma pasta chamada teste dentro dela, no
Windows o comando para acesso seria:

C:\> cd teste

No Linux não seria tão diferente:

root@localhost ~/ # cd /teste

A “/" que informarmos no caso do Linux é porque no exemplo a pasta não está no mesmo
diretório que o usuário se encontra, isso no Windows também é possível com o comando “cd
\teste”

Além destes você tem vários outros comandos para, por exemplo:

limpar a tela: clear


listar arquivo: cat ARQUIVO
listar diretório: ls DIRETORIO
editar arquivo: nano ARQUIVO

Como já comentamos, basicamente no Linux tudo é possível de ser feito na linha de comando,
entraremos mais a fundo nestas questões no próximo tópico desse módulo.

Apostila/eBook do Curso Linux Essentials Página 21


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

4.3 Casos de Uso de Linux na Indústria

Atualmente temos muitas empresas utilizando Linux em sistema críticos, para quem não
conhece o termo a ideia de sistema crítico é aquele sistema que não pode parar, tendo que
se manter o tempo todo estável e disponível.

O Linux por sua flexibilidade e variedade de aplicações é utilizado em várias áreas diferentes. É
comum encontramos empresas que utilizam o Linux em seus roteadores para fazer
conectividade de grande porte com operadoras de telecomunicações, ou utilizam o Linux como
seu servidor radius para autenticação e controle de seus usuários de internet. Também existem
plataforma de voz (voip) construída com Linux utilizando softwares Asterisk, OpenSIPS e
FreeSwitch, além de bancos de dados MySQL e outras ferramentas.

O Linux também é utilizado em praticamente todos os supercomputadores existentes hoje no


mercado (todos os top 10 são Linux) , além de várias outras soluções como caixas eletrônicos
do sistema bancário e computadores de bordo em carros. Muitas empresas possuem Linux
sendo utilizados como Gateways ou Proxies, este uso é muito comum e muitas vezes a empresa
nem mesmo tem noção que faz uso de Linux em seu sistema critico.

Exemplos de uso do Linux

 Departamento de Defesa dos Estados Unidos


 Prefeitura de Munich, Alemanhã
 Correio Americano
 Governo do México
 Petrobrás
 Banco do Brasil
 Walmart
 DreamWorks

Enfim, como podemos perceber existem muitos usos de Linux, em diferentes ambientes para
diferentes finalidades

Apostila/eBook do Curso Linux Essentials Página 22


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Capítulo 02 - Encontrando
seu Caminho em Sistemas
Linux

Objetivos do Capítulo
Ao longo desse capítulo você deverá:

 Aprender a utilização básica da linha


de comandos no Linux.
 Aprender como utilizar os comandos
de ajuda e navegação nos vários
sistemas de ajuda do Linux.
 Saber como navegar por entre os
diretórios home e system e listar
arquivos em várias localizações.
 Dominar as formas de criar, mover e
apagar arquivos e diretórios.

Apostila/eBook do Curso Linux Essentials Página 23


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

4.7 Utilizando Caracteres Curinga ______ 52


Sumário do Capítulo

1 Introdução a Linha de Comandos ____ 25


1.1 Shell Básico _____________________ 26
1.2 Movendo-se entre os Diretórios ____ 26
1.3 O comando env e suas Variáveis ____ 27
1.4 PATH __________________________ 28
1.5 Comandos de Formatação _________ 30
1.6 Variáveis _______________________ 31
1.7 Globbing (Caracteres Curinga) ______ 32
1.8 Quotting (Escape de caracteres) ____ 32
2 Usando a Linha de Comando para Obter
Ajuda ______________________________ 34
2.1 Manuais (comando man) __________ 35
2.2 Acessando Manuais com o Comando
info 36
2.3 Arquivos de Documentação ________ 37
2.4 Encontrando um Manual a Partir de
uma Referência _______________________ 37
2.5 Localizando Arquivos _____________ 38
2.5.1 Comando Locate ________________ 38
2.5.2 Comando whereis _______________ 38

3 Usando Diretórios e Listando Arquivos 40


3.1 Arquivos e Diretórios _____________ 41
3.2 Diretório home __________________ 45
3.3 Caminho Absoluto e Caminho Relativo
45
4 Criando, Movendo e Removendo
Arquivos ou Diretórios ________________ 47
4.1 Um pouco mais sobre Caracteres
Curinga ______________________________ 48
4.2 Movendo Arquivos e Diretórios_____ 49
4.3 Copiando Arquivos e Diretórios _____ 50
4.4 Removendo Diretórios ____________ 50
4.5 Criando Arquivos ________________ 51
4.5.1 Touch _________________________ 51
4.5.2 Criando Arquivos de Outras Formas _ 51
4.6 Criando Diretórios _______________ 52

Apostila/eBook do Curso Linux Essentials Página 24


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

1 Introdução a Linha de Comandos


Peso: 2
Descrição: Utilização básica da linha de comandos no Linux.

Tópicos Importantes:

Shell básico
Comandos de formatação
Trabalhando com opções
Variáveis
Globbing
Quoting

Veja abaixo uma lista parcial com os arquivos, termos e utilitários mais utilizados:

echo
history
PATH env variable
which
Substitutions
||, && and ; control operators

Apostila/eBook do Curso Linux Essentials Página 25


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

1.1 Shell Básico

O Shell é o interpretador de comandos, quando você digita algum comando ele é que
interpreta. Quando você usa um comando para alterar diretório, ou limpar a tela, isso é um
comando do shell.

O shell padrão do Linux é o bash (bourne again shell), mas existem outras opções como o csh,
tcsh , ksh , zsh . Quando estamos em um prompt do Linux com o shell bash carregado é
comum que o prompt de comando tenha um formato similar ao mostrado no comando
abaixo.

usuário@nome_da_maquina:/caminho/onde/voce/esta $

1.2 Movendo-se entre os Diretórios

Nesse tópico iremos introduzir de forma bem básica nossos três primeiros comandos, o pwd
(print working directory), cd (change directory) e ls (list files and directories). Se você nunca
trabalhou com a linha de comandos antes em sua vida você deve prestar bem atenção nesse
tópico, pois ele será crucial para o seu entendimento de todos os conceitos que veremos mais
adiante.

Quando pensamos em comandos no Linux temos que pensar como vamos andar pelos
diretórios, editar e copiar arquivos, listar conteúdo de arquivos, encontrar comandos e
outras coisas mais. Nesse tópico veremos um pouco sobre esse tema.

Assim como em outros sistemas operacionais o Linux utiliza uma estrutura hierárquica de
diretórios, organizada em um padrão conhecido como árvore de diretórios, onde cada
diretório pode conter arquivos ou outros diretórios.

Apostila/eBook do Curso Linux Essentials Página 26


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Nessa árvore o primeiro diretório é chamado de root. Root é a raiz do sistema, representado
pelo caractere “/” (barra para direita), tudo está abaixo da raiz, ela é nosso top-level, nossa
ponta da pirâmide. Vamos exemplificar uma pequena árvore de diretórios abaixo.

/ ---> raiz
|---home -> diretório de usuários
|---me -> diretório do usuário me

1.3 O comando env e suas Variáveis

As configurações do seu shell estão definidos em uma variável de ambiente que podem ser
verificadas através do comando env, acompanhe abaixo a imagem da exibição do mesmo.

dltec@dltec:~$ env
LC_PAPER=pt_BR.UTF-8
LC_ADDRESS=pt_BR.UTF-8
LC_MONETARY=pt_BR.UTF-8
TERM=xterm
SHELL=/bin/bash
SSH_CLIENT=10.0.2.2 47905 22
LC_NUMERIC=pt_BR.UTF-8
SSH_TTY=/dev/pts/2
USER=dltec
LC_TELEPHONE=pt_BR.UTF-8
MAIL=/var/mail/dltec
PATH=/home/dltec/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
:/usr/games
LC_IDENTIFICATION=pt_BR.UTF-8
PWD=/home/dltec
LANG=en_US.UTF-8
LC_MEASUREMENT=pt_BR.UTF-8
SHLVL=1
HOME=/home/dltec
LOGNAME=dltec
SSH_CONNECTION=10.0.2.2 47905 10.0.2.15 22
LESSOPEN=| /usr/bin/lesspipe %s
LESSCLOSE=/usr/bin/lesspipe %s %s
LC_TIME=pt_BR.UTF-8
LC_NAME=pt_BR.UTF-8
_=/usr/bin/env
OLDPWD=/
dltec@dltec:~$

Apostila/eBook do Curso Linux Essentials Página 27


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Veja que no mesmo temos informações referente ao SHELL utilizado, o diretório de e-mail do
usuário (MAIL), quais são os diretórios de executáveis do usuário (PATH), o diretório ao qual o
mesmo se encontra (PWD) além de outras variáveis possíveis de acordo com o a finalidade do
sistema.

Informação adcional: Como definir uma variável?

Para definir uma variável durante sua sessão basta digitar:

export JAVA_HOME=/usr/local/java/bin/

No exemplo mostrado está sendo exportado a variável JAVA_HOME, que é utilizada para
localizar onde ficam os binários do java e normalmente é utilizado quando você roda alguma
aplicação ou serviço java no sistema.

Porém não se torna muito prático ter de executar esse comando cada vez que você entra no
sistema, além do mais algumas vezes podem ser necessárias várias variáveis.

Nestes casos a solução padrão é colocar o comando dentro do arquivo .bash_profile no


diretório do usuário, este diretório é lido logo após o login e executa os comandos que você
definiu, no caso, define as variáveis que você precisa.

1.4 PATH

Vimos no tópico anterior a saída do comando env. Uma das linhas importantes do comando
env é a que mostra o PATH (figura 1). Vamos agora entender o que seria o PATH através de
um exemplo bem simples.

dltec@dltec:~$ env

TERM=xterm
SHELL=/bin/bash
SSH_CLIENT=10.0.2.2 47905 22
LC_NUMERIC=pt_BR.UTF-8
SSH_TTY=/dev/pts/2
USER=dltec
LC_TELEPHONE=pt_BR.UTF-8
MAIL=/var/mail/dltec
PATH=/home/dltec/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
:/usr/games
LC_IDENTIFICATION=pt_BR.UTF-8

Quando queremos que o sistema execute um comando nós não precisamos digitar o caminho
completo do comando. Por exemplo, quando queremos listar o conteúdo do diretório em que
estamos simplesmente digitamos o comando ls.

dltec@dltec:~$ ls
Desktop Music Templates essentials php.versoes
Documents Pictures Videos examples.desktop
Downloads Public bin lpi102

O comando ls está localizado na pasta /bin, mas então por que não precisamos digitar o
caminho completo do comando, como por exemplo, /bin/ls ? Por que simplesmente digitando ls
o sistema entende que deve executar o comando ls que está localizado no diretório /bin ?

Apostila/eBook do Curso Linux Essentials Página 28


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

A resposta a essa pergunta é a variável PATH. Essa variável lista os diretórios do sistema
onde os arquivos executáveis podem ser encontrados. Para visualizar o conteúdo da variável
PATH entre com o comando mostrado abaixo.

dltec@dltec:~$ echo $PATH


/home/dltec/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr
/games

Em nosso exemplo a variável está listando os diretórios abaixo:

 /home/dltec/bin
 /usr/local/sbin
 /usr/local/bin
 /usr/sbin
 /usr/bin
 /sbin
 /bin
 /usr/games

Isso faz com que o sistema faça um busca, do primeiro ao último diretório listado, quando
tentamos executar algum comando. Assim que uma correspondência é encontrado a procura é
encerrada, mesmo que não tenha sido verificado todos os diretórios listados.

Ou seja, em nosso exemplo do ls, quando digitamos ls o sistema irá buscar por uma
correspondência nos diretórios listados na variável PATH, tão logo a correspondência seja
encontrado (no caso, no diretório /bin) a busca é interrompida e o comando é executado.

Curiosidade: Para você verificar o caminho completo de um comando ou arquivo utilize o


comando which -a filename. Esse comando pode ser útil nos casos onde mais de uma
correspondência for encontrada. Vamos supor que, por algum motivo, existam dois
comandos com o nome wc no seu sistema:

 um na pasta /usr/bin e
 outro na pasta /home/aluno/bin/WC

E vamos supor também que você queira utilizar o comando o wc (word count) padrão, ou
seja, o que está na pasta /usr/bin e que sua variável PATH está definida como mostrado
abaixo.

aluno:~> echo $PATH


/home/aluno/bin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin

Então se você simplesmente digitar o comando wc -l arquivo1.txt o sistema irá tentar


executar o comando wc que está na pasta /home/aluno/bin/wc e você não vai obter a
saída desejada. Isso porque na sua variável PATH está sendo informado para procurar
primeiro na pasta /home/aluno/bin.

Uma das soluções para resolver esse problema seria informar o caminho completo do
comando desejado. Para tal, você utilizaria o comando which -a wc para exibir todas as
correspondências para o comando wc. Em seguida entraria com o caminho completo do
comando wc desejado, ou seja, /usr/bin/wc -l arquivo1.txt.

Apostila/eBook do Curso Linux Essentials Página 29


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

1.5 Comandos de Formatação

Através do shell nós podemos executar vários comandos diferentes, para finalidades diferentes,
utilizando opções diferentes para visualização dos resultados e muitas vezes fazendo uso de
vários comandos ao mesmo tempo.

Vamos agora ver um exemplo um pouco mais avançado do que podemos fazer na linha de
comandos. Ao longo desse curso você aprenderá a utilizar esse e outros tipos de recursos
avançados. Imagine que eu quero listar o conteúdo de um arquivo, mas quero filtrar apenas as
linhas que contenham a palavra php, por exemplo.

Para ilustrar o processo vamos criar um arquivo chamado teste.txt (comando touch teste.txt -
veremos mais para frente o uso desse comando) e dentro deste arquivo vamos escrever
algumas coisas e vamos também colocar em 3 linhas do arquivo a palavra php. Para editar o
arquivo teste.txt você pode utilizar o aplicativo nano ou vi (também veremos mais detalhes
sobre isso posteriormente nesse curso). Acompanhe o exemplo abaixo, com todos os passos
mostrados.

Conteúdo do arquivo:

Primeiro passo: criar o arquivo teste.txt


touch teste.txt

Segundo passo: Editar o arquivo teste.txt


nano teste.txt

safdsfd sf dadf sdf adf df a dfa


fasdfdf php fdafsd asdf adf aphp

asfdfasdf
adfadfas
dfadf902u3423 42390 rfs0 fs dfasdf php
fdasfdasf
d asdfa
sdfasdfasdfh9283r fpsdhfasdf php fdsafdasfd

Pressione ctrl+o para salvar o arquivo e depois ctrl+x para sair do editor.

Agora veja abaixo o comando executado.

dltec@dltec $ cat teste.txt | grep php


fasdfdf php fdafsd asdf adf aphp
dfadf902u3423 42390 rfs0 fs dfasdf php
sdfasdfasdfh9283r fpsdhfasdf php fdsafdasfd
dltec@dltec $

Perceba que apenas 3 linhas foram mostradas, justamente as que continham a palavra php.

Isso pode ser muito útil no seu dia a dia, imagine um arquivo de log com 10.000 linhas e você
quer visualizar todos os logs referente ao daemon openvpn por exemplo, então você digita o
comando cat /var/log/syslog | grep openvpn e todo o conteúdo do arquivo de log
referente ao openvpn será exibido e você poderá analisar o conteúdo sem tanta “sujeira” na
visualização do arquivo.

Apostila/eBook do Curso Linux Essentials Página 30


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

1.6 Variáveis

No shell do Linux nós podemos utilizar os comandos e criar variáveis para serem usadas por
estes comandos.

Para declarar uma variável você utiliza nome_da_variavel=valor_da_variavel, ou seja,


vamos dizer que eu quero colocar o nome de um arquivo em uma variável e depois executar
algum comando, eu poderia fazer conforme mostrado abaixo.

MYFILE=”/tmp/teste.txt”
cat .bash_profile > $MYFILE

Neste caso estamos definindo a variável MYFILE com o caminho para o arquivo que queremos,
depois exibimos o conteúdo do .bash_profile direcionando a saída do comando para a variável
$MYFILE que no caso é o arquivo /tmp/teste.txt

A título de ilustração vamos ver um exemplo real do uso de variáveis no linux. Imagine que
em um diretório existam diversos arquivos de imagem com a extensão .JPG (em maiúscula) e
que você queira renomear esses arquivos de forma que fique .jpg (em minúscula). Vamos ver
como é possível fazer isso com uso de variáveis? Acompanhe o código abaixo.

cd /tmp/teste
for i in *; do NEWNAME=$(echo $i | sed –e s/JPG/jpg/g); mv $i $NEWNAME; done

O comando utilizado é bem complexo mas é um exemplo válido para exemplificar um uso real
para este tipo de utilização (variáveis), acompanhe a descrição dos passos:

 Entramos no diretório /tmp/teste


 Definimos que para cada valor dentro do diretório (*) queremos o valor na variável i (for
i in *)
 Pegamos o valor de $i ( echo $i ) e substituímos JPG por jpg ( sed –e s/JPG/jpg ), e
então definimos que este valor será o valor da variável NEWNAME
 Realizamos um move (mover) dos arquivos de .JPG para .jpg (exemplo: mv DSC-
1401.JPG DSC-1401.jpg)

O que acha, isso é muito mais prático do que selecionar um a um e então fazer a troca do
nome não acha?

Um exemplo habitual de uso de variáveis é em arquivos de configuração ou scripts para alguma


finalidade específica, por exemplo, imagine que você esta criando um script de firewall, o
binário do iptables (aplicação de firewall nativa do Linux) fica em /sbin/iptables, você em seu
arquivo ao invés de colocar este comando linha por linha define uma variável (ex:
FW=”/sbin/iptables” ) e no lugar de chamar o arquivo completo, chama apenas FW, define
arquivos de configuração em variáveis e assim por diante.

Apostila/eBook do Curso Linux Essentials Página 31


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

1.7 Globbing (Caracteres Curinga)

O Glob foi um programa que existiu no unix para expandir a capacidade de utilização de
caracteres curingas de forma estendida, atualmente isso é incorporado no shell e graças a esta
ferramenta podemos utilizar uma série de parâmetros para fazer varredura, leitura, alteração
em diretórios e assim por diante.

É possível basicamente utilizar:

 ? = Faz match em um único caractere


 * = Faz match em qualquer caractere (inclusive vazios)

Também podemos utilizar alguns outros tipos de glob, vamos ver abaixo:

Classes de caracteres:
Classes de caractere, seria por exemplo alguns caracteres dentro de um [ ], não
necessariamente sequenciais, podendo ser algo como [ac3t], qualquer um destes caracteres
que casarem a regra serão aceitos.

Range de caracteres:
Este possui uma convenção especial, dois caracteres separados por um traço “-“ denotam um
range, desta forma [a-cA-C0-3] é equivalente a [abcABC0123]

1.8 Quotting (Escape de caracteres)

Quotting significa “aspas”, no caso em especifico não é bem isso que ele quer dizer, a questão
aqui é escape de caracteres. Você deve pensar da seguinte forma, se no shell o cifrão “$” é
inicio de variável, como você irá manipular um arquivo que possui este caractere em seu nome,
ou mesmo um arquivo ou diretório que contenha uma barra “/” em seu nome ?

A questão é bastante simples, nós fazemos o escape do caractere, vamos fazer alguns
exemplos para tentarmos entender. Acompanhe o comando abaixo.

$ echo $date
$

No comando acima foi executado o comando echo $date que irá mostrar o valor da variável
$date, porém ele aparece em branco já que a variável não possui nenhuma valor.

Já neste comando ao pressionarmos o "enter" foi exibido a string $date

$ echo \$date
$date
$

O mesmo processo também pode ser executado digitando aspas simples ( ‘ ) que neste caso
faz a interpretação literal do que está dentro, acompanhe o comando ao lado.

Neste caso é importante lembrar que não deve haver uma aspas simples dentro de um outro
par, ou seja, não pode usar:

‘ teste’a ‘

Apostila/eBook do Curso Linux Essentials Página 32


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

A aspas dentro do contexto irá cancelar a última. Nesses casos podemos utilizar uma barra
invertida “\” para cancelar a funcionalidade do caractere, no caso a expressão ficaria:

‘ teste\’a ‘

Ou seja, a \ cancela a funcionalidade da '.

As aspas duplas também fazem a preservação dos caracteres, exceto pelo cifrão, mas o mesmo
também pode ser utilizando se houver uma barra invertida antes.

No caso da existência de uma barra invertida como parte da string é importante que você
adicione outra para realizar o escape da mesma, no caso pensemos no seguinte exemplo
abaixo.

$ cd /teste\2
-bash: cd: teste2: No such file or directory
$ cd /teste\\2
:~/teste\2 $

Perceba que o diretório foi criado com o nome de teste\2, ao tentar entrar no diretório com o
comando puro “cd teste\2” ele não entende e tenta entrar em teste2, ao digitarmos com
barra de escape nós conseguimos entrar no diretório, dessa forma o comando ficou “cd
teste\\2” , no caso com a utilização de aspas simples ou duplas não se torna necessária a
barra de escape.

Uma coisa importante nesta questão é que no Linux um espaço é um caractere, então você tem
dois modos de entrar, por exemplo, no diretório “teste 2”, sendo elas

 cd “teste 2”
 cd teste\ 2

No segundo exemplo você fez o escape do caractere de espaço e passou a continuação do


nome do diretório.

Apostila/eBook do Curso Linux Essentials Página 33


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

2 Usando a Linha de Comando para Obter Ajuda


Peso: 2
Descrição: Utilizando os comandos de ajuda e navegação nos vários sistemas de ajuda do
Linux.

Tópicos Importantes:

Man
Info

Veja abaixo uma lista parcial com os arquivos, termos e utilitários mais utilizados:

man
info
Man pages
/usr/share/doc
locate
apropos, whatis, whereis

Apostila/eBook do Curso Linux Essentials Página 34


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

2.1 Manuais (comando man)

O Linux traz em sua instalação e em seus programas muitos pacotes de documentação ,


normalmente estes estão em inglês mas possuem toda a documentação referente ao comando
em si. Vale lembrar que além destes manuais você tem o parâmetro -help / -h que já foi
mencionado em tópicos anteriores.

O comando man é um dos recursos mais úteis do Linux e de outros sistemas unix, através dele
você obtém toda a documentação de um comando, com explicações detalhadas e muitas vezes
alguns exemplos.

Vamos pegar por exemplo um pedaço do comando “man tar”. Acompanhe abaixo. Veja que
ele traz o inicio uma sinopse, em seguida uma descrição e exemplos.

Obs: para sair da página do manual e voltar para a linha de comandos basta pressionar a tecla
q.

Veja a figura a seguir que mostra uma outra pagina do mesmo manual .

Apostila/eBook do Curso Linux Essentials Página 35


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Como você pode perceber a saída do comando lhe fornece explicações a respeito de cada um
dos parâmetros que o comando aceita, infelizmente é necessário dar uma boa treinada no
inglês para conseguir ter mais domínio, mas com certeza isso fará toda a diferença para você.

Existem alguns casos onde os comandos possuem documentações diferentes em diferentes


seções, para estes casos você utiliza o comando man SEÇÃO comando , estas seções são
divididas da seguinte forma.

1. Programas executáveis ou comandos do shell


2. Chamadas de sistema (utilizado pelo kernel)
3. Bibliotecas (funções utilizadas por outros programas)
4. Arquivos especiais (usualmente contidos no /dev)
5. Formatos de arquivos e convenções (ex: /etc/passwd)
6. Jogos
7. Variados (incluindo macros e convenções (ex: man(7), groff(7))
8. Comandos de administração de sistema (normalmente apenas para root)
9. Rotinas do kernel [Fora de Padrão ]

Esta descrição foi retirada de uma página do man man.

2.2 Acessando Manuais com o Comando info

O comando info acessa as mesmas documentações que o man, mas ele na verdade é um
leitor para estas documentações, basicamente ele permite uma navegação mais fácil pelas
paginas por ter mais recursos como procura, navegação por links e etc..

O comando man por padrão utiliza o paginador more para permitir que você navegue na
documentação, se existir o comando less instalado já facilita um pouco pois permite descer e
subir o conteúdo (o comando more apenas desce). Veja abaixo as figuras d as telas para os
comandos man e info, respectivamente.

Apostila/eBook do Curso Linux Essentials Página 36


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

2.3 Arquivos de Documentação

Além dos manuais em alguns casos temos arquivos de exemplos e outros no diretório
/usr/share/doc seguido do nome do comando ou programa que você está buscando, veja
abaixo a listagem dos arquivos do diretório /usr/share/doc/rsync

dltec@dltec:~$ ls /usr/share/doc/rsync
README.gz changelog.Debian.gz examples tech_report.tex.gz
TODO.gz copyright scripts
dltec@dltec:~$

Perceba que dentro do diretório além dos arquivos de licença (copyright), temos o README,
changelog e alguns outros dependendo de que diretório estamos listando. No caso do rsync
temos um diretório examples e outro scripts, no diretório examples são alguns exemplos de
configuração para o rsync e no diretório scripts alguns scripts que podem ser utilizados para
algumas operações como log, verificação de status e outros.

2.4 Encontrando um Manual a Partir de uma Referência

Algumas vezes nós sabemos o nome de um arquivo ou comando e queremos saber onde tem
informações sobre ele, para este caso nós utilizamos o comando apropos. A ideia deste
comando é simplesmente localizar em que manual contém a informação que você solicitou,
veja o exemplo abaixo.

web:~# apropos rsyncd.conf


rsyncd.conf (5) - configuration file for rsync in daemon mode

Veja que perguntei sobre o arquivo rsyncd.conf, este arquivo em especifico possui um manual
próprio explicando suas configurações, no caso a resposta dele foi:

rsyncd.conf (5) Configuration file for rsync in


daemon mode
Qual Manual Que seção do manual Descrição

Vamos ver agora um exemplo que possua mais saídas.

Questionamos o apropos sobre “passwd” e como pode ser verificado, ele trouxe vários
manuais com referências ao termo, ou seja, se você quer procurar algo, mas não sabe de qual
manual é, utilize o apropos para esta função.

apropos passwd
auth_passwd (3) - Change accounts password
authpasswd (1) - Generate login passwords
chgpasswd (8) - update group passwords in batch mode
chpasswd (8) - update passwords in batch mode
exim4_passwd (5) - Files in use by the Debian exim4 packages
exim4_passwd_client (5) - Files in use by the Debian exim4 packages
expect_mkpasswd (1) - generate new password, optionally apply it to a user
gpasswd (1) - administer the /etc/group and /etc/gshadow files
htpasswd (1) - Manage user files for basic authentication
mkpasswd (1) - Overfeatured front end to crypt(3)

Apostila/eBook do Curso Linux Essentials Página 37


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Informação adcional:

Outra forma de encontrar uma página de um manual é através do comando whatis, este
comando assim como o apropos traz a informação do manual referente a string que você
buscou, com uma diferença, o apropos busca em todo o manual e o whatis busca apenas na
descrição do manual.

2.5 Localizando Arquivos

Como no Linux utilizamos muito a linha de comando é importante que saibamos através do
modo console procurar por um arquivo.

Tenha em mente que nem sempre você saberá onde um determinado arquivo se encontra, ele
pode estar fora de padrão ou com uma instalação especifica e nestes casos você precisará
localizar esse arquivo.

Para tal podemos utilizar os comandos locate e whereis.

2.5.1 Comando Locate


Vamos imaginar que você está acessando pela primeira vez um servidor de email que possui o
software dovecot instalado, você já verificou e viu que ele não está no /etc (o arquivo de
configuração), então como podemos localizar? Veja a abaixo.

$ locate dovecot.conf
/usr/local/etc/dovecot/dovecot.conf
/usr/local/share/doc/dovecot/example-config/dovecot.conf
/usr/local/var/run/dovecot/dovecot.conf
/usr/src/dovecot.conf.tar.gz

O comando que utilizamos foi o locate, o nome é bem sugestivo e trata-se de um comando
para localização de arquivos. Um ponto importante é que ele não irá procurar o arquivo no
momento em que você o acionou, pois ele possui um banco de dados que roda uma ou mais
vezes por dia e atualiza as informações.

Você pode executar o update através do comando updatedb e com esta tabela devidamente
atualizada você consegue encontrar qualquer arquivo no sistema, veja que no nosso exemplo
ele trouxe várias linhas de resultado contendo a string “dovecot.conf”.

2.5.2 Comando whereis


O comando whereis é utilizado para procurar arquivos binários, códigos fontes e/ou páginas
de manuais. Se digitarmos o comando whereis passwd, por exemplo, o retorno será a linha
mostrada abaixo.

whereis passwd
passwd:/usr/src/apr-1.4.6/passwd /usr/bin/passwd /etc/passwd
/usr/share/man/man1/passwd.
1ssl.gz /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.
5.gz

Apostila/eBook do Curso Linux Essentials Página 38


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Veja que ele trouxe a string passwd: seguida de tudo que ele achou, o primeiro passwd trata-
se de um fonte, o segundo é o binário de troca de senhas, o terceiro é o arquivo de senhas do
Linux, depois os manuais.

Você pode por exemplo no comando whereis especificar que tipo de resultado você quer, como
por exemplo apenas binário:

whereis –b passwd

Existem outras opções de uso do comando que você pode verificar no man whereis.

Apostila/eBook do Curso Linux Essentials Página 39


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3 Usando Diretórios e Listando Arquivos


Peso: 2
Descrição: Navegar por entre os diretórios home e system e listando arquivos em várias
localizações.

Tópicos Importantes:

Arquivos e diretórios
Ocultando arquivos e diretórios
Home
Caminhos relativos e absolutos

Veja abaixo uma lista parcial com os arquivos, termos e utilitários mais utilizados:

Common options for ls


Recursive listings
cd
. and ..
home and ~

Apostila/eBook do Curso Linux Essentials Página 40


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3.1 Arquivos e Diretórios

Arquivos e diretórios no Linux não possuem muito segredos, porém, existem algumas
configurações que ajudam você a identificar de forma mais simples quando trata-se de um
diretório e quando trata-se de um arquivo. Acompanhe a figura abaixo onde mostramos a saída
do comando ls / .

dltec@dltec:/$ ls
bin dev initrd.img media proc sbin sys var
boot etc lib mnt root selinux tmp vmlinuz
cdrom home lost+found opt run srv usr
dltec@dltec:/$

Obs: o comando ls / irá listar os arquivos e diretórios do diretório root (/)

Salvo o caso do arquivo initrd.img, os demais seriam todos diretórios?

Vale lembrar que no Linux não faz diferença a extensão do arquivo, ela tem o intuito apenas de
informação, facilitar para quem está vendo o arquivo sobre o que se trata, mas não é
primordial sua utilização. Mas e então, a primeira vista, que conclusão tiramos da listagem do
diretório root (/)?

Bom, eu não tiraria nenhuma no momento. Vamos verificar um outro modo de visualizar esta
listagem.

dltec@dltec:/$ ls -p
bin/ dev/ initrd.img media/ proc/ sbin/ sys/ var/
boot/ etc/ lib/ mnt/ root/ selinux/ tmp/ vmlinuz
cdrom/ home/ lost+found/ opt/ run/ srv/ usr/
dltec@dltec:/$

Veja que agora utilizamos o comando ls –p o qual acrescentou uma / após cada diretório e
não fez o mesmo nos arquivos. Muito mais fácil assim não acha?

Outro parâmetro interessante é o color. Normalmente o color já vem habilitado como padrão
na maioria das distribuições. Caso esse não seja o caso, basta acrescentarmos o parâmetro --
color=auto. Este comando produz uma saída colorida, onde cada cor tem seu significado.
Vamos listar algumas delas.

 Cinza: Arquivo simples


 Azul claro: Link Simbólico
 Azul: Diretório
 Fundo Azul fonte cinza: Arquivo com bit stick (t)
 Fundo Verde e fonte preta: Permissão 777 e bit stick

Existem algumas outras cores que você verá depois, mas basicamente esta é uma das formas
mais praticas para identificar os tipos de arquivos e diretórios, pois trata-se do modo mais
diferenciado.

Apostila/eBook do Curso Linux Essentials Página 41


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Podemos ainda exibir a saída do comando como uma listagem com as propriedades, veja a
abaixo.

dltec@dltec:/$ ls -l --color=auto -p
total 88
drwxr-xr-x 2 root root 4096 Jul 23 12:41 bin/
drwxr-xr-x 3 root root 4096 Jul 23 12:41 boot/
drwxr-xr-x 2 root root 4096 Jul 23 12:34 cdrom/
drwxr-xr-x 14 root root 4000 Sep 17 11:52 dev/
drwxr-xr-x 129 root root 12288 Sep 17 11:52 etc/
drwxr-xr-x 4 root root 4096 Sep 13 20:48 home/
lrwxrwxrwx 1 root root 36 Jul 23 12:40 initrd.img -> boot/initrd.img-3.2.0-
23-generic-pae
drwxr-xr-x 21 root root 4096 Jul 23 12:41 lib/
drwx------ 2 root root 16384 Jul 23 12:28 lost+found/
drwxr-xr-x 2 root root 4096 Apr 23 2012 media/
drwxr-xr-x 2 root root 4096 Apr 19 2012 mnt/
drwxr-xr-x 2 root root 4096 Apr 23 2012 opt/
dr-xr-xr-x 112 root root 0 Sep 17 11:51 proc/
drwx------ 3 root root 4096 Jul 23 12:47 root/
drwxr-xr-x 22 root root 820 Sep 17 11:52 run/
drwxr-xr-x 2 root root 4096 Jul 23 12:41 sbin/
drwxr-xr-x 2 root root 4096 Mar 5 2012 selinux/
drwxr-xr-x 2 root root 4096 Apr 23 2012 srv/
drwxr-xr-x 13 root root 0 Sep 17 11:51 sys/
drwxrwxrwt 7 root root 4096 Sep 17 12:21 tmp/
drwxr-xr-x 10 root root 4096 Apr 23 2012 usr/
drwxr-xr-x 14 root root 4096 Sep 16 20:10 var/
lrwxrwxrwx 1 root root 33 Jul 23 12:40 vmlinuz -> boot/vmlinuz-3.2.0-23-
generic-pae
dltec@dltec:/$

Perceba que para gerar esta saída utilizamos todas as opções que vimos anteriormente. O
comando ficou ls –l –color=auto –p , o –l significa lista longa, que é o que ele mostra, vamos
analisar uma saída. Acompanhe também na figura abaixo um exemplo.

Apostila/eBook do Curso Linux Essentials Página 42


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

drwxrwxrwt 33 root root 425984 2012-07-18 21:52 tmp/

O primeiro bloco do comando traz as permissões aplicadas no diretório.


O segundo campo (33) é a quantidade de diretórios existentes dentro desse diretório.
O terceiro campo (root) representa o proprietário (dono) do diretório.
O quarto campo (root) representa o grupo ao qual o diretório faz parte.
O quinto campo traz o tamanho do diretório em bytes.
O sexto campo traz a data da última modificação.
O sétimo campo traz o diretório em questão.

Com estas informações você já pode identificar arquivos e diretórios sem maiores dificuldades.

Obs: Mais para frente nesse curso entraremos em mais detalhes sobre como interpretar o
campo de permissões do arquivo. Não se preocupe com isso nesse momento, tudo ficará
mais claro mais para frente.

Uma outra utilização que vale apena ressaltar no comando ls é a listagem recursiva, esta
opção é utilizada com o parâmetro –R.

A listagem recursiva irá executar um ls para cada diretório que for encontrado. Por exemplo, se
tiramos um ls -R do diretório teste, a saída irá mostrar o conteúdo do diretório teste e para
cada diretório que for encontrado ele irá executar um ls desse diretório e assim
sucessivamente. Veja abaixo.

Perceba que no primeiro nível temos os diretórios teste2, teste3, teste4 e teste5, dentro de
teste2 temos outro diretório teste2, dentro de teste5 temos outro diretório teste2, dentro deste
teste2, temos um diretório teste6, onde temos um diretório de número 8.

Se você reparar para cada diretório ele executou uma listagem também, em nosso caso não
havia nenhum arquivo dentro então nada foi exibido.

Apostila/eBook do Curso Linux Essentials Página 43


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

No Linux temos uma facilidade que são os diretórios ou arquivos ocultos. Normalmente estes
arquivos/diretórios ocultos são utilizados para não gerar volume desnecessário quando estamos
visualizando um determinado diretório. Vamos exemplificar esta questão, acompanhe na saída
seguinte.

dltec@dltec:~$ ls
Desktop Music Templates essentials php.versoes
Documents Pictures Videos examples.desktop
Downloads Public bin lpi102
dltec@dltec:~$

Veja que a listagem da imagem traz apenas alguns diretórios, nada muito poluído salvo alguns
arquivos e diretórios.

Agora vamos usar o comando ls –a para listar todos os arquivos, inclusive os ocultos.

dltec@dltec:~$ ls -a
. .dbus .mozilla Music
.. .dmrc .mysql_history Pictures
.ICEauthority .gconf .profile Public
.Xauthority .gnome2 .pulse Templates
.bash_history .goutputstream-2NA22W .pulse-cookie Videos
.bash_logout .gtk-bookmarks .xsession-errors bin
.bashrc .gvfs .xsession-errors.old essentials
.bashrc.swp .lesshst Desktop examples.desktop
.cache .local Documents lpi102
.config .mission-control Downloads php.versoes
dltec@dltec:~$

Perceba que agora vemos muitos outros diretórios que não estavam lá antes, estes são
diretórios ocultos. A maior parte é alguma configuração ou diretório de configurações de algum
aplicativo. Por exemplo, você poderá ver o diretório .mozilla que contém os dados do Firefox
ou o diretório .local onde ficam as configurações do KDE.

Uma questão muito importante a se saber sobre o Linux, é que o caractere “.” aparece em
todos os arquivos e diretórios ocultos.

Apostila/eBook do Curso Linux Essentials Página 44


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3.2 Diretório home

Desde o início do curso até agora você já deve ter reparado que várias vezes falamos do
diretório home. Esse é o diretório especifico para armazenamento dos dados dos
usuários, por exemplo, o usuário mike possui por padrão seu home (sua casa) no diretório
/home/mike.

É importante ressaltar que nada impede que você utilize outro local para isso, porém você
estaria fugindo do padrão e os padrões foram criados para que o conhecimento pudesse ser
compartilhado por todos. Assim qualquer administrador que precise sabe onde ficam as coisas
desde que elas estejam utilizando os devidos padrões.

Dica:
Um uso comum que fazemos é criar o diretório /home em uma partição separada do HD,
desta forma podemos atualizar ou reinstalar o sistema operacional sem nos preocupar com
estes dados.

O diretório /home é muitas vezes referenciado pelo caractere “~” , por exemplo, de
qualquer lugar do sistema se você digitar cd ~ você será direcionado para o diretório
/home de seu usuário, caso seja o usuário root o diretório de home do mesmo é /root.

3.3 Caminho Absoluto e Caminho Relativo

O caminho nada mais é do que a direção que você deve seguir, dentro da estrutura de
diretórios, para chegar a um determinado arquivo ou diretório.

O caminho absoluto inicia a partir do diretório raiz (o root) e guia você por entre a estrutura
de diretórios, desde da raiz até o destino final. Por exemplo, temos no linux um diretório onde
ficam instalados a maioria dos programas no linux. O caminho para esse diretório é /usr/bin.
Isso significa que o caminho absoluto para esse diretório é:

root - usr - bin

Lembre-se que a primeira “/” representa o root.

aluno@dltec-VirtualBox:~$ cd /usr/bin
aluno@ dltec-VirtualBox:/usr/bin$ pwd
/usr/bin
aluno@ dltec-VirtualBox:/usr/bin$ ls
[ linux32
2to3 linux64
2to3-2.7 linux-boot-prober
a2p listres
accountwizard lnstat
aconnect loadkeys
acpi_fakekey loadunimap
acpi_listen localc

Enquanto que o caminho absoluto inicia a partir do root, um caminho relativo inicia a partir
do seu diretório atual. Para indicar um caminho relativo utilizamos o "." (ponto) e o ".."
(ponto ponto).

O "." faz referência ao seu diretório atual e o ".." faz referência ao diretório pai do seu
diretório atual. Vamos exemplificar no exemplo abaixo.

Apostila/eBook do Curso Linux Essentials Página 45


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Estamos no diretório /usr/bin e desejamos mudar para o diretório pai do /usr/bin, ou seja,
para o diretório /usr. Podemos fazer isso de duas formas:

aluno@dltec-VirtualBox:/usr/bin$ pwd
/usr/bin
aluno@dltec-VirtualBox:/usr/bin$ cd /usr
aluno@dltec-VirtualBox:/usr$ pwd
/usr

ou

aluno@dltec-VirtualBox:/usr/bin$ pwd
/usr/bin
aluno@dltec-VirtualBox:/usr/bin$ cd ..
aluno@dltec-VirtualBox:/usr$ pwd
/usr

Da mesma forma uma vez dentro do diretório /usr podemos ir para o diretório /usr/bin de
duas formas. Acompanhe abaixo.

Primeiro utilizando o caminho absoluto:


aluno@dltec-VirtualBox:/usr$ pwd
/usr
aluno@dltec-VirtualBox:/usr$ cd /usr/bin
aluno@dltec-VirtualBox:/usr/bin$ pwd
/usr/bin

Ou utilizando o caminho relativo:


aluno@dltec-VirtualBox:/usr$ pwd
/usr
aluno@dltec-VirtualBox:/usr$ cd ./bin
aluno@dltec-VirtualBox:/usr/bin$ pwd
/usr/bin

Importante:
Na maioria dos casos você pode omitir o "./", pois ele está implícito. Ou seja, no exemplo
anterior, a partir do /usr para se chegar no /usr/bin basta digitar:

aluno@dltec-VirtualBox:/usr$ pwd
/usr
aluno@dltec-VirtualBox:/usr$ cd bin
aluno@dltec-VirtualBox:/usr/bin$ pwd
/usr/bin

Apostila/eBook do Curso Linux Essentials Página 46


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

4 Criando, Movendo e Removendo Arquivos ou Diretórios


Peso: 2
Descrição: Criar, mover e apagar arquivos e diretórios.

Tópicos Importantes:

Arquivos e diretórios
Case sensitive (maiúsculas e minúsculas)
Globbing e quoting simples

Veja abaixo uma lista parcial com os arquivos, termos e utilitários mais utilizados:

mv, cp, rm, touch


mkdir, rmdir

Apostila/eBook do Curso Linux Essentials Página 47


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

4.1 Um pouco mais sobre Caracteres Curinga

A manipulação de arquivos e diretórios (criar, mover, copiar e deletar) é feita via linha de
comando basicamente através da utilização dos seguintes comandos:

 touch (para criar arquivos)


 mkdir (para criar diretórios - make directory)
 cp (copy)
 mv (move)
 rm (remove)
 rmdir (remove directory)

É claro que existem maneiras mais simples de se fazer essas coisas através das interfaces
gráficas, no entanto, a utilização da linha de comando nos dá uma flexibilidade que não é
encontrada nas interfaces gráficas.

Antes de prosseguirmos para a explicação dos comandos vamos voltar a um tópico muito
importantes - os caracteres curingas (wildcards). Os caracteres curinga nos permitem fazer
a seleção de nomes de arquivos baseada em padrões de caracteres. Já vimos no tópico sobre
"Globbing" a utilização do * e ?. Agora veremos mais detalhes sobre os caracteres curinga.
Acompanhe na tabela abaixo.

WildCard Significado
* Corresponde qualquer caractere.
? Corresponde um caractere único.

[characters]
Corresponde qualquer caractere que seja membro do
grupo especificado. A especificação do grupo pode ser feita
através de:

[:alnum:] Caracteres alfanuméricos


[:alpha:] Caracteres alfabéticos
[:digit:] Numerais
[:upper:] Caracteres alfabéticos maiúsculos
[:lower:] Caracteres alfabéticos minúsculos

[!characters] Corresponde qualquer caractere que não faça parte do


grupo especificado.

Apostila/eBook do Curso Linux Essentials Página 48


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

A utilização dos caracteres curinga possibilita a criação de critérios de seleção muitos


sofisticados. Acompanhe abaixo.

Pattern Matches
* Todos os arquivos
g* Todos os arquivos que iniciem com “g”
b*.txt Todos os arquivos que iniciem com “b” e terminem com
“.txt”
Data??? Qualquer arquivo que inicie com “Data” e termine com
exatamente 3 caracteres
[abc]* Qualquer arquivo com “a” com “b” ou com “c” seguidos de
quaisquer outros carateres
[[:upper:]]* Qualquer arquivo que inicie com uma letra maiúscula
BACKUP.[[:digit:]][[:digit:]] Qualquer arquivo que inicie com os caracteres “BACKUP.”
seguido por exatamente 2 numerais
*[![:lower:]] Qualquer arquivo que não termine com uma letra
minúscula. Perceba que aqui estamos utilizando o ! para
negar a condição.

Dica: Você pode utilizar os caracteres curinga (wildcard) com qualquer comando que
aceite nome de arquivos como argumento.

4.2 Movendo Arquivos e Diretórios

Utilizamos para mover arquivos ou diretórios o comando mv. Este comando é uma abreviação
da palavra move (do inglês mover) e a sintaxe básica de comando é mv [origem] [destino],
desta forma, se temos um diretório teste e queremos move-lo para testeok basta digitar mv
teste testeok.

Veja o exemplo abaixo onde queremos mover a pasta netqmail-1.0.6 que se encontra em
nosso diretório home, para o diretório /usr/src.

mv netqmail-1.0.6 /usr/src/

Vale lembrar que para mover um arquivo o processo é o mesmo.

Se você quiser, além de mover para o diretório você também pode no mesmo comando alterar
o nome que o diretório terá no seu novo destino. Para tal, utilize o comando conforme
mostrado abaixo.

mv netqmail-1.0.6 /usr/src/netqmail

Mas é importante lembrar que caso existe no destino um diretório com o nome que você está
especificando a pasta netqamil-1.0.6 constará dentro do diretório em questão.

No caso do nosso exemplo se houvesse a pasta netqmail o caminho total para acesso ao
diretório movido seria

/usr/src/netqmail/netqmail-1.0.6 .

Apostila/eBook do Curso Linux Essentials Página 49


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

4.3 Copiando Arquivos e Diretórios

O comando para copia de arquivos ou diretórios é o cp, que é uma abreviação da palavra
copy. A sintaxe básica do copy é similar a do comando mv, porém tem uma diferença básica,
ao copiar um diretório inteiro é necessário acrescentar o parâmetro –r que significa recursivo
(lembra do recursivo que vimos no comando ls??).

Este comando fará com que ele pegue qualquer diretório e acrescente a copia, ou seja, copiar o
diretório netqmail-1.0.6 para o diretório /usr/src seria realizado da seguinte forma, veja abaixo.

cp –r netqmail-1.0.6 /usr/src/

Dessa forma, todos os diretórios existentes dentro do netqmail-1.0.6 seriam também copiados.
Existem outros parâmetros que podem ser utilizados, segue abaixo alguns dos mais comuns

-v = verbose (exibe o que esta copiando)


-i = interactive (solicita confirmação)
-p = mantém permissões

Case Sensitive:

Case sensitive basicamente significa que o sistema é sensível a diferença de caixa alta
(maiúscula) ou caixa baixa (minúscula). Isso na prática significa que para o sistema
operacional o arquivo arvore é diferente do arquivo Arvore. O mesmo vale para diretórios e
outras coisas mais e também para muitos aplicativos, um exemplo disso é que o banco de
dados MySQL ao criar um banco de dados de nome banco01 é diferente de BANCO01.

Isso faz muita diferença na hora de realizar cópias, interação em arquivos e outras coisas
mais. Precisa-se ter atenção a esta questão ou você estará manipulando algo que ou é
errado ou não existe.

4.4 Removendo Diretórios

Existem dois comandos utilizados para


remoção do diretórios, rmdir e rm.

O comando rmdir não é muito utilizado


pois ele apenas remove diretórios que
estejam vazios.

Já o comando rm não remove por padrão


o diretório e seus arquivos recursivamente
sem que seja especificado, para isso
utilizamos o parâmetro –r. Vamos ver na
imagem abaixo a saída do comando para
remover a estrutura que criamos na pasta Perceba que acrescentamos ao comando o
teste. parâmetro –v de verbose para poder
exemplificar.
Veja que solicitamos a remoção do diretório
teste, ele iniciou a remoção pelo ultimo diretório
existente e foi descendo sucessivamente até o
diretório solicitado.

Apostila/eBook do Curso Linux Essentials Página 50


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

4.5 Criando Arquivos

Não é muito comum criarmos arquivos vazios mas as vezes é necessário ou simplesmente
preferimos criar o arquivo antes de começar a editar.

Vamos ver algumas formas de realizar este procedimentos.

4.5.1 Touch
O comando touch (toque em inglês) é utilizado para gerar um arquivo vazio, ele apenas o cria
da forma que você solicitou. Ou seja, para criarmos um arquivo com o nome arquivo.txt
utilizamos da forma mostrada abaixo.

touch arquivo.txt

Vamos lembrar que no Linux a extensão não é tão importante, mas é bom utilizarmos alguma
referencia para que ao olhar para o arquivo já tenhamos em mente qual a finalidade do mesmo.

4.5.2 Criando Arquivos de Outras Formas

Temos algumas maneiras alternativas para gerar arquivos no Linux, vamos exemplificar
algumas abaixo.

>arquivo.txt

No caso acima, geramos um arquivo vazio, pegamos o nada, e jogamos para dentro dele.

Agora no próximo exemplo, utilizamos o comando echo gerando a palavra teste e direcionando
para dentro de arquivo.txt.

echo “teste” > arquivo.txt

para exibir o conteúdo do arquivo:

cat arquivo.txt
teste

Se em seguida você exibir o conteúdo do arquivo arquivo.txt verá que será exibido o conteúdo
"teste".

Obs: Podemos também abrir um editor de texto e salvar a saída do mesmo em um arquivo
que não existe, como é comum de fazermos em ambiente gráfico (abro o editor de texto,
coloco o conteúdo e salvo gerando assim meu arquivo). Veremos mais sobre editores de
texto em linha de comando no Linux mais para frente nesse curso.

Apostila/eBook do Curso Linux Essentials Página 51


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

4.6 Criando Diretórios

Falamos anteriormente de como mover diretórios, agora vamos ver como nós podemos criar os
diretórios. Basicamente utilizamos o comando mkdir, o nome é bastante sugestivo, mk =
make – dir = directory (make directory).

Acompanhe abaixo a forma de utilização. No exemplo mostrado criamos o diretório teste.

mkdir teste

Agora vamos criar o diretório teste dentro de teste.

mkdir teste/teste

Informação importante:

Se você tentar criar o diretório teste/teste2/teste2 lembrando que não criamos o


primeiro diretório teste2 ele irá apresentar uma mensagem de erro, isso porque você está
solicitando a criação do diretório dentro de outro que não existe. Para realizar este
procedimento é necessário que acrescentemos o parâmetro –p

mkdir –p teste/teste1/teste2/teste3/teste4/teste5/teste6

Agora foi criado todos os diretórios necessários para criar o ultimo que é o teste6. Com o -p
o sistema entende que como não existe o diretório anterior ele vai criando sucessivamente
todos eles.

4.7 Utilizando Caracteres Curinga

Você se lembra que falamos anteriormente sobre globbing e caracteres curinga?

Nós podemos aplicar esta ideia ao remover ou copiar diretórios, como exemplo podemos citar o
seguinte caso, em um backup eu tenho os diretórios organizados por data da seguinte forma:
2012-03-01, contendo diretórios até o mês de julho.

Suponha agora que eu queria apagar todos os diretórios que correspondam o período de
março até maio, para isso podemos utilizar o comando mostrado em seguida.

rm –vr 2012-0[345]-??

Com isso foram removidos os diretórios de março, abril e maio, independente do dia, desde que
contendo dois dígitos, no caso os dias menores que 10 eram compostos pelo 0 na frente, então
funcionou da forma adequada.

Apostila/eBook do Curso Linux Essentials Página 52


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Capítulo 03 - O Poder da
Linha de Comandos

Objetivo do capítulo:

Ao longo desse capítulo você deverá


adquirir conhecimentos sobre:

 Como arquivar e compactar arquivos


no diretório de usuário.
 Como procurar e extrair dados de
arquivos no diretório de usuário.
 Como transformar comandos
repetidos em um script simples.

Apostila/eBook do Curso Linux Essentials Página 53


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Sumário do Capítulo

1 Arquivando Arquivos na Linha de


Comando __________________________ 55
1.1 Arquivamento __________________ 56
1.2 Compactação e Arquivamento _____ 58
2 Procurando e Extraindo Dados de
Arquivos ___________________________ 60
2.1 Redirecionamento de I/O _________ 61
2.2 Pipes de Linha de Comando _______ 63
2.3 Comandos head e tail ____________ 66
2.4 Paginadores more e less __________ 67
2.5 Procurando Arquivos _____________ 67
2.6 Expressões Regulares_____________ 68
2.6.1 Expressões Regulares Básicas ______ 68
2.6.2 Expressões Regulares Estendida ____ 69

3 Transformando Comandos em Scripts 70


3.1 Edição Básica de Texto (editores de
texto) 71
3.1.1 Editor de Texto vi ________________ 71
3.1.2 Editor nano _____________________ 73
3.2 Shell Script Básico _______________ 73

Apostila/eBook do Curso Linux Essentials Página 54


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

1 Arquivando Arquivos na Linha de Comando


Peso: 2
Descrição: Arquivando arquivos no diretório de usuário.

Tópicos Importantes:

Arquivos e diretórios
Arquivos e compressão

Veja abaixo uma lista parcial com os arquivos, termos e utilitários mais utilizados:

tar
Opções comuns do tar
gzip, bzip2
zip, unzip
Extraindo arquivos individuais dos arquivos

Apostila/eBook do Curso Linux Essentials Página 55


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

1.1 Arquivamento

É muito comum querermos realizar o arquivamento de um diretório ou mesmo um arquivo,


normalmente para titulo de backup ou transferência de arquivo. Tenha em mente que é
muito mais fácil você transferir um arquivo grande do que centenas de arquivos pequenos.

Um dos usos mais comuns para arquivamento é quando você vai pegar um código fonte de
algum aplicativo, ele vem arquivado normalmente com a ferramenta tar, ao desarquivar o
mesmo você tem um diretório e todos os arquivos fontes dentro.

Para exemplificar vamos criar dois arquivos de texto de nome teste.txt e teste2.txt e realizar o
arquivamento deles.

$ tar –cvf teste.tar *.txt

Veja abaixo o processo todo.

Primeiro criamos os dois arquivos teste.txt e teste2.txt utilizando o comando "touch" que já
estudamos anteriormente. Depois executamos o comando tar, ele nos mostrou o que foi
executado e então listamos os arquivos no diretório e constatamos que foi gerado um terceiro
arquivo de nome teste.tar.

Agora vamos ver como podemos visualizar o conteúdo deste arquivo via linha de comando,
ou seja, como podemos ver o que está dentro desse arquivo teste.tar. Acompanhe a seguir.

Veja que agora podemos ver o conteúdo do arquivo num formato similar ao do ls, vamos
explicar os parâmetros que vimos até aqui.

-v: verbose.
-c: Realiza a criação de um novo arquivo.
-f: executar sobre ou para o nome de arquivo informado, no caso é o arquivo de onde ele irá
ler ou onde vai gravar.
-t: realiza apenas a listagem do conteúdo sem realizar a extração.

Apostila/eBook do Curso Linux Essentials Página 56


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Existem outras opções que também podem ser utilizadas, como por exemplo a função –r que é
para acrescentar (append) um novo arquivo ao fim do arquivo tar, veja abaixo como
funciona.

Primeiro realizamos a listagem do arquivo teste.tar mostrando que o mesmo continha dois
arquivos dentro dele.

tar -tvf teste.tar

Depois listamos o diretório onde você pode ver que ali existia o arquivo teste3.txt.

ls

E finalmente realizamos o comando tar –rvf teste.tar teste3.txt que inseriu o dentro do
arquivo teste.tar

Para realizar o arquivamento de um diretório o processo é o mesmo, porém você especifica


o diretório que você deseja arquivar ao invés de quais arquivos, veja a seguir como fica a
exibição de um diretório compactado.

# tar -tvf teste-dir.tar


rwxr-xr-x root/root 0 2012-07-19 17:05 teste/
-rw-r--r-- root/root 10240 2012-07-19 17:02 teste/teste.tar
drwxr-xr-x root/root 0 2012-07-19 17:05 teste/cidade/
drwxr-xr-x root/root 0 2012-07-19 17:05 teste/cidade/curitiba/
-rw-r--r-- root/root 0 2012-07-19 17:00 teste/teste3.txt
-rw-r--r-- root/root 0 2012-07-19 17:05 teste/teset.txt
-rw-r--r-- root/root 0 2012-07-19 16:50 teste/teste2.txt
-rw-r--r-- root/root 0 2012-07-19 16:50 teste/teste.txt

Veja que ele traz o nome do diretório principal que é teste e traz o nome de cada arquivo
contido dentro do mesmo e de cada diretório .

O procedimento de desarquivamento é realizado através da opção –x (extract), ou seja,


para desarquivar este arquivo utilizaríamos o comando:

$ tar –xvf teste.dir.tar

E se nós quisermos extrair apenas um dos arquivos que está dentro do arquivo .tar, isso é
possível? A resposta é claro que sim.

Apostila/eBook do Curso Linux Essentials Página 57


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Para a extração de um único arquivo do arquivo, basta especificar o caminho completo do


mesmo como foi informado pela exibição do comando –t.

É importante lembrar que caso o arquivo esteja em um diretório dentro do tar ele irá extrair
toda a estrutura de diretórios, mas não extrairá os arquivos, vamos ver um exemplo a seguir.

Observe que primeiro listamos o diretório atual onde estávamos (comando ls), havia apenas o
arquivo teste-dir.tar dentro do mesmo. Depois listamos o conteúdo do arquivo (tar -vtf teste-
dir.tar). Deste conteúdo solicitamos a extração do arquivo teste/teste3.txt (tar -xvf teste-
dir.tar teste/test3.txt) e ao realizarmos a listagem do diretório novamente lá estava o
diretório teste e ao listar o diretório vemos o arquivo que solicitamos que é o teste3.txt

1.2 Compactação e Arquivamento

A diferença entre compactação e


arquivamento é bastante simples, o
arquivamento junta vários arquivos ou
diretório em um único arquivo, já na
compactação ele transforma este arquivo
ou diretório utilizando algoritmos de
compressão.

Normalmente os arquivos são compactados e


arquivados, por exemplo, quando você abre
um arquivo .zip com vários diretórios dentro
isso caracteriza um arquivamento e a
extensão .zip indica que o mesmo passou por
um processo de compressão também.

O comando tar permite que durante sua utilização nós possamos realizar também a
compressão (muito comum este uso inclusive) através de dois parâmetros básicos que são:

 -z (utilizando gzip para comprimir) ou


 –j (utilizando bzip2 para comprimir)

Obviamente para utilizar estes parâmetros é necessário que você tenha estas ferramentas (gzip
e bzip2) instaladas em seu sistema, normalmente o gzip já vem por padrão mas o bzip2 precisa
ser instalado.

Apostila/eBook do Curso Linux Essentials Página 58


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Um arquivo tar comprimido leva o nome de .tar.gz ou .tar.bz2 para simbolizar que o arquivo
inicialmente é um bzip ou gzip e após realizar a compressão você deve desempacotar o arquivo
tar, por isso o nome .tar.gz. Para exemplificar vamos fazer um teste onde vamos criar um
arquivo utilizando cada um dos formatos e ver a diferença entre os arquivos finais. Acompanhe
a seguir.

Veja que no inicio da tela realizamos a compressão nos dois formatos, o formato .tar sem
compressão nós já havíamos gerado, então depois realizamos a listagem dos arquivos, veja a
área que está selecionada na tela, você tem os três formatos, observe a diferença do tamanho
deles em bytes:

 arquivo tar simples = 20480 bytes


 arquivo tar com bzip2 = 284 bytes
 arquivo tar com gzip = 318 bytes

Como você pode ver a diferença realmente é considerável, se você pensar em grandes arquivos
de log por exemplo você chega a ter 2 GB diminuído em cerca de 20 MB, isso quando falamos
em backup é muito importante pois significa economia de espaço.

Informação adcional:

Outros compactadores:
Também temos disponíveis alguns outros compactadores como é o caso do zip, rar, 7zip e
muitos outros que existem disponíveis no Linux.

Nada impede você de gerar o arquivo tar e depois compactar com um compactador de sua
preferência, mas é importante lembrar que o gzip e o bzip2 estão disponíveis em todas as
distribuições.

Apostila/eBook do Curso Linux Essentials Página 59


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

2 Procurando e Extraindo Dados de Arquivos


Peso: 4
Descrição: Procurando e extraindo dados de arquivos no diretório de usuário.

Tópicos Importantes:

Pipes de linha de comando


I/O re-direction
Partial POSIX Regular Expressions (., [ ], *, ?)

Veja abaixo uma lista parcial com os arquivos, termos e utilitários mais utilizados:

find, grep
less
head, tail
sort, cut, wc
Partial POSIX Basic Regular Expressions ([^ ], ^, $)
Partial POSIX Extended Regular Expressions (+, ( ), |)
Xargs

Apostila/eBook do Curso Linux Essentials Página 60


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

2.1 Redirecionamento de I/O

Vamos nesse tópico explorar um recurso poderoso da linha de comando chamado de


input/output redirection (redirecionamento de entrada/saída). Como já vimos em
alguns exemplos anteriores muitos comandos, como o ls, exibe sua saída na tela. Mas isso não
precisa ser somente dessa forma, pois com uso do redirecionamento podemos enviar a saída
do comando para outro lugar, como arquivos, dispositivos e até mesmo outros comandos.

Saída Padrão
Muitos programas da linha de comando que utilizamos exibem seus resultados enviando esses
resultados para a saída padrão (standard output). Via de regra, a saída padrão utilizada é o
display, ou seja, nossa tela.

Para redirecionarmos a saída padrão para outro lugar, como um arquivo, utilizamos o caractere
">". Veja o exemplo abaixo.

aluno:~$ ls > lista.txt


aluno:~$ cat lista.txt
Área de Trabalho
arquivo1.txt
arquivo-diretorio_66-24787.txt
diretorio_20
diretorio-2.tar.gz
Documentos
Imagens
link-teste-link.txt
lista.txt
Modelos
muitos-diretorios
Música
Público
que_arquivo_e_este.txt
scripts
teste-link.txt
time
Transferências
Vídeos

No exemplo mostrado redirecionamos a saída padrão do comando ls para que o seu


resultado fosse enviado para um arquivo chamado lista.txt. Dessa forma, ao invés de exibir
o resultado na tela o resultado foi armazenado no arquivo. Em seguida exibimos o conteúdo
desse arquivo (cat lista.txt) para ilustrar o ocorrido.

Importante: o uso do caractere ">" faz com que toda vez que esse comando seja repetido (ls
> lista.txt) o arquivo seré sobrescrito e os dados anteriores serão perdidos. Para fazer de forma
incremental, ou seja, redirecionar o resultado para o final do arquivo lista.txt (sem apagar o
conteúdo anterior) basta utilizar o caractere ">>" (ls >> lista.txt)

Apostila/eBook do Curso Linux Essentials Página 61


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Entrada Padrão
Muitos comandos utilizam como entrada padrão os dados vindo do teclado. No entanto, isso
também pode ser redirecionado, ou seja, podemos redirecionar a entrada padrão de um
comando para que ele utilize os dados vindo de outro arquivo e não do nosso teclado.
Acompanhe um exemplo a seguir.

aluno:~$ grep sys < /etc/passwd


sys:x:3:3:sys:/dev:/bin/sh
syslog:x:101:103::/home/syslog:/bin/false
hplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false
aluno:~$

O que fizemos foi informar ao comando grep sys para que ele utilize como entrada os dados
que estão no arquivo /etc/passwd. Ou seja, esse comando irá no arquivo /etc/passwd e irá
exibir na tela todas as ocorrências dos caracteres "sys" que ele encontrar.

Perceba que o comando anterior irá exibir na tela, pois não redirecionamos a saída padrão. Mas
poderíamos fazer esse redirecionamento também, acompanhe o exemplo abaixo.

aluno:~$ grep sys < /etc/passwd > sys.txt


aluno:~$ cat sys.txt
sys:x:3:3:sys:/dev:/bin/sh
syslog:x:101:103::/home/syslog:/bin/false
hplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false
aluno:~$

Agora o que fizemos foi redirecionar a saída para que fosse enviada para o arquivo sys.txt
e não para a tela.

Este tipo de redirecionamento pode também ser feito de outras formas, não necessariamente
para utilização em arquivos de texto.

Muitas vezes vemos usuários descompactarem arquivos .tar.gz da seguinte forma.

$ gunzip < spandsp-0.0.6pre20.tgz | tar -xvf –

Na prática o que o comando faz é inicialmente descompactar o arquivo tar (gunzip) e depois
desarquivar o resultado com o comando tar

Apostila/eBook do Curso Linux Essentials Página 62


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

2.2 Pipes de Linha de Comando

Uma das práticas mais comuns que utilizamos no redirecionamento I/O é a conexão de vários
comandos juntos, formando o que chamamos de pipes de linha de comando. Com os pipes, a
saída padrão de um comando é enviada para a entrada padrão do outro comando para
continuidade do processamento. Os dados enviados são processados pelo próximo comando
que mostrará o resultado do processamento.

Podemos dizer que os pipes são como se fossem uma peneira, o símbolo do pipe é “|” e
dependendo da fonte de seu terminal ele irá parecer como uma barra com um furo no meio. A
ideia é de um filtro, ou seja, vou barrar o conteúdo e deixar sair uma parte apenas, esta parte
é o que me interessa do conteúdo.

Vamos pegar como exemplo o arquivo /etc/passwd, dentro deste temos a entrada referente
ao usuário root, se eu quiser listar apenas esta entrada sem a necessidade de abrir o
arquivo eu poderia utilizar o comando mostrado a seguir.

$ cat /etc/passwd | grep root

Este comando produziria a seguinte saída

root:x:0:0:root:/root:/bin/bash

Ou seja, listamos o arquivo /etc/passwd e filtramos a saída do mesmo para nos mostrar
apenas o que contivesse a palavra root, para isso utilizamos o comando grep, cuja função é
exatamente esta, exibir linhas que casam com uma expressão.

Informação importante:

Diferença entre o "|" e o ">":

A principal diferença entre o "|" e o ">", é que o Pipe envolve processamento entre
comandos, ou seja, a saída de um comando é enviado a entrada do próximo e o ">"
redireciona a saída de um comando para um arquivo/dispositivo.

Você pode notar pelo exemplo (ls -la | more) que ambos ls e more são comandos porque
estão separados por um "|". Se um deles não existir ou estiver digitado incorretamente,
será mostrada uma mensagem de erro.

Um resultado diferente seria obtido usando um ">" no lugar do "|". A saída do comando ls -
la > more seria gravada em um arquivo chamado more.

Poderíamos também sermos mais genéricos, solicitando que fosse exibido tudo que tivesse
/bin/bash, para isso utilizaríamos o comando conforme a seguir.

$ cat /etc/passwd | grep “/bin/bash”

A saída do comando seria algo similar ao conteúdo abaixo.

root:x:0:0:root:/root:/bin/bash
mike:x:1001:1001::/home/mike:/bin/bash

Apostila/eBook do Curso Linux Essentials Página 63


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Ou seja, existiam no arquivo duas entradas contendo a expressão “/bin/bash”.

É possível também a utilização de expressões regulares. Acompanhe o exemplo com o


comando abaixo.

$ cat /etc/passwd | grep –e “^m”

Este comando nos retornaria todas as linhas que iniciem pela letra m

Lembre-se que o Linux é sensível a maiúscula/minúscula e você precisa escrever da maneira


que deseja a interpretação. Dessa forma, se utilizarmos o comando cat /etc/passwd | grep
–e “^[mM]” seriam retornadas todas as linhas começadas pela letra m, seja ela maiúscula ou
minúscula.

Dica: O comando grep em especifico possui um parâmetro –i que pode ser utilizado para
deixar a interpretação insensível a maiúscula e minúscula (insensitive), dependendo do que
você está buscando no arquivo isso torna mais simples a formação do comando.

Existem outros comandos que podemos utilizar para filtrar conteúdo, por exemplo, digamos que
queiramos retirar uma lista de todos os usuários que estão no arquivo /etc/passwd, neste
caso podemos usar o comando cut. Vamos ver um exemplo e explicamos o comando em
seguida.

$ cat /etc/passwd | cut –d “:” –f1

A parte da listagem do arquivo cat não é preciso explicar, portanto, vamos direto ao comando
cut. O parâmetro –d do cut especifica o delimitador, que no nosso exemplo é o “:”, depois
especificamos que queremos o primeiro campo da seleção (-f1), a saída do comando pode ser
verificada na figura abaixo.

$ cat /etc/passwd | cut -d ":" -f 1


root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
www-data
backup
list
irc
gnats
nobody
libuuid
syslog
messagebus
colord
lightdm
whoopsie
avahi-autoipd
avahi

Apostila/eBook do Curso Linux Essentials Página 64


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

usbmux
kernoops
pulse
rtkit
speech-dispatcher
hplip
saned
dltec
sshd
mysql
dltec1

Entendeu?

Vamos a uma explicação mais detalhada:

Você conseguiu entender o que o cut fez? Perceba que a saída do comando cat /etc/passwd
é algo do tipo:

root:x:0:0:root:/root:/bin/bash
mike:x:1001:1001::/home/mike:/bin/bash

Ao utilizarmos o cut -d ":" -f1 estamos solicitando apenas o primeiro campo da seleção.

root:x:0:0:root:/root:/bin/bash
mike:x:1001:1001::/home/mike:/bin/bash

Podemos ainda fazer um pipe de um pipe, ou seja, pegar um resultado filtrado e filtrar
novamente.

Vamos supor que queiramos contar a quantidade de resultados que este comando gerou, para
isso podemos acrescentar o comando wc com o parâmetro –l que utiliza a linha como base
de contagem. Vamos ver como fica, acompanhe o exemplo abaixo.

$ cat /etc/passwd | cut –d “:” –f1 | wc -l

A saída do comando será o número 25 que é quantidade de resultados na execução do


comando que eu fiz.

O comando wc possui vários parâmetros possíveis, vamos colocar alguns abaixo para a escolha
do que queremos contar.

 -c: bytes
 -m: caracteres
 -w: palavras
 -l: linhas

Ainda é possível acrescentar outros parâmetros no comando, por exemplo ordenação com o
comando sort.

Apostila/eBook do Curso Linux Essentials Página 65


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Se você acrescentar o parâmetro –r ao sort ele irá trazer o resultado em ordem inversa ou
com o –R para aleatório.

$ cat /etc/passwd | cut –d “:” –f1 | sort

Veja que agora ele exibirá os nomes de forma ordenada.

asterisk
backup
bin
cl-builder
daemon
Debian-exim
games
gnats
irc
libuuid
list
LP

2.3 Comandos head e tail

Os comandos head e tail também podem ser utilizados juntamente com outros comandos
através do pipe, os nomes dos dois comandos simbolizam exatamente o que eles querem dizer,
head (cabeça = inicio do arquivo), tail (rabo = final do arquivo).

É muito comum quando queremos verificar as ultimas linhas de um arquivo de log utilizarmos o
tail para exibição, vamos exemplificar com a figura a seguir.

Como você pode ver ele mostrou as últimas linhas do arquivo, mais especificamente as últimas
10 linhas que é o padrão dele.

Você pode utilizar o parâmetro –n para especificar a quantidade de linhas que deseja que ele
exiba e claro, dentro desta quantidade de linhas você por exemplo aplicar um grep para
procurar algo especifico dentro das linhas que ele vai exibir.

Apostila/eBook do Curso Linux Essentials Página 66


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Também é possível utilizar o parâmetro –k para exibir uma quantidade X de bytes na saída

O comando head funciona da mesma forma mas a contagem dele é a partir do inicio do
arquivo e não do fim.

Uma utilização bastante comum do comando tail é com o parâmetro –f que abre as ultimas
linhas e continua carregando as demais linhas que forem inseridas no arquivo, isso é útil e
usado normalmente para leitura de arquivos de log em tempo real.

Com o comando tail –f, por exemplo, você pode acompanhar os logs do apache ou do squid
enquanto os acessos estão acontecendo.

2.4 Paginadores more e less

Quando abrimos arquivos grandes para serem analisados ou mesmo lidos é muito comum ao
invés de abrirmos com um editor de texto abrirmos com um paginador.

Os mais comuns de serem utilizados são o more e o less, nas definições dos dois no manual
diz o seguinte:

 more: Filtro para leitura em tela crt


 less: O oposto do more

As diferenças básicas entre os dois são que o less permite que você volte o arquivo, enquanto
o more permite que você apenas avance no arquivo.

Outra questão base é que o less não precisa carregar o arquivo inteiro para exibir, se você abrir
um arquivo muito grande isso é de grande ajuda.

Outra diferença grande é que o less permite que você utilize alguns comandos similares aos do
editor vi para fazer procura no arquivo e outras coisas mais.

2.5 Procurando Arquivos

Como todo usuário nós temos muitas vezes que manipular arquivos de texto, procurar
conteúdos, configurações e coisas do tipo. No Linux é possível fazer tudo isso de forma muito
simples utilizando a linha de comando.

Falamos anteriormente sobre o comando locate, uma outra opção para pesquisa de arquivos é
a utilização do comando find, o nome já diz tudo (find = encontrar).

Digamos que estamos em qualquer lugar do sistema e queremos localizar o arquivo de nome
apache2.conf (lembrando que no caso em questão o arquivo existe no mesmo pois o servidor
apache está funcionando). Veja o comando a seguir.

$ find / -name “apache2.conf”

Se ele encontrar o arquivo ele irá retornar o caminho completo para o mesmo.

O comando find permite também que adicionemos comandos para ele, por exemplo,
digamos que queiramos encontrar todos os arquivos alterados a mais de 20 dias em um
diretório e fazer a remoção do mesmo, para tal utilizaríamos o comando conforme mostrado
abaixo.

Apostila/eBook do Curso Linux Essentials Página 67


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

$ find /home/backup –ctime +20 –exec rm –i {} \;

No caso o sistema irá procurar os arquivos com alteração a mais de 20 dias e executará o
comando rm para remover, as duas chaves que existem após o rm é o valor que o find
encontrar e a \ significa o fim do comando.

Dica: Procure ajuda sobre o comando find (man find) e verifique quais parâmetros que
podem ser utilizados e o que faz o -ctime.

Também é possível utilizar o parâmetro xargs para executar alguma operação, se


quiséssemos por exemplo remover os arquivos como fizemos com o rm poderíamos usar o
seguinte comando. Acompanhe a explicação a seguir.

$ find ./ -type f -print0 | xargs -0 rm

Ou seja, o xargs usará os resultados do find para alimentar o rm.

2.6 Expressões Regulares

Aqui vamos ver um pouco de expressões regulares, de forma bastante superficial, apenas
para termos uma ideia.

As expressões regulares são utilizadas quando queremos buscar algo mais especifico onde
apenas uma única palavra não traria o resultado desejado.

Existem alguns caracteres especiais que são utilizados para isso, alguns deles até já vimos aqui
como o ^ para referenciar inicio de linha ou opções de valores como [a-z] que seria qualquer
caractere de a até z minúsculo.

Vamos então na sequência ver mais um pouco a respeito das expressões regulares.

2.6.1 Expressões Regulares Básicas


Expressões regulares básicas nós já utilizamos em alguns momentos.

Exemplo 1 – Asterisco (*)


O asterísco é um caractere curinga que significa qualquer coisa, seja numero, letra ou outro.
Por exemplo, podemos utilizar o * para fazer uma busca:

ls /home/mike/*.txt

onde queremos procurar qualquer coisa terminada em .txt dentro do diretório /home/mike.

Exemplo 2 – Interrogação(?)
Também temos outros caracteres especiais como “?” (interrogação) que representa qualquer
coisa apenas uma vez. Acompanhe o exemplo abaixo:

ls /home/mike/test?.txt

Esta expressão encontrará por exemplo o arquivo teste.txt mas não encontrará o teste2.txt

Exemplo 3 – Colchetes []
Podemos também usar sequências de caracteres com o [ ] (colchetes). Um exemplo seria
conforme abaixo:

ls /home/mike/teste[0-9].txt

Apostila/eBook do Curso Linux Essentials Página 68


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Nesse comando o resultado mostraria para nós o arquivo teste2.txt mas não mostraria o
arquivo teste.txt

2.6.2 Expressões Regulares Estendida


Para exemplificarmos o uso das expressões regulares estendida vamos ver um exemplo bem
simples, acompanhe na imagem abaixo.

dltec@dltec:~$ cat /etc/passwd | egrep "([0-9]{2})" | egrep "(sync)|(man)"


sync:x:4:65534:sync:/bin:/bin/sync
man:x:6:12:man:/var/cache/man:/bin/sh
colord:x:103:108:colord colour management daemon,,,:/var/lib/colord:/bin/false
dltec@dltec:~$

A primeira vista parece estranho, mas na verdade é bem simples, nós utilizamos o egrep invés
do grep porque o egrep é um alias (apelido) para o comando grep –E que significa a
utilização de expressões regulares estendidas.

No nosso caso o primeiro comando egrep informou para ele procurar valores que fossem um
numero de 0-9 de até 3 casas, ou seja [0-9] repetindo + {2} a regra, isso é o mesmo que
escrever [0-9][0-9][0-9].

No segundo egrep utilizamos expressões simples separadas por um “|” (pipe), o pipe neste
caso significa que pode ser o resultado da direita ou o da esquerda, no pé da letra, é a
representação de OR (OU).

Informação importante:

Imagine por exemplo que você quer listar todas as linhas de um arquivo que contenha um
endereço ip. Os endereços possuem tamanhos variáveis, onde eles podem ter de 1 a 3
dígitos, repetindo este padrão por mais 3 vezes separados por um ponto (.). Você poderia
utilizar o comando da forma abaixo:

grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" teste.txt

Esta regra representa exatamente isso:


[0-9] – Qualquer numero de 0 até 9
{1,3} – Podendo aparece de uma a três vezes
\. – seguido de um ponto
{3} – Ocorrendo três vezes
[0-9] – com um numero qualquer de 0 até 9
{1,3} – Podendo ter de um até três dígitos

Para maiores detalhes sobre expressões regulares verifique os links abaixo.


http://en.wikipedia.org/wiki/Regular_expression
http://aurelio.net/regex/

Apostila/eBook do Curso Linux Essentials Página 69


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3 Transformando Comandos em Scripts


Peso: 4
Descrição: Transformando comandos repetidos em um script simples.

Tópicos Importantes:

Edição de texto básica


Script básico

Veja abaixo uma lista parcial com os arquivos, termos e utilitários mais utilizados:

/bin/sh
Variables, Arguments
for loops
echo
Exit status
pico, nano, vi (only basics for creating scripts)
Bash
if, while, case statements
read and test, and [ commands

Apostila/eBook do Curso Linux Essentials Página 70


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3.1 Edição Básica de Texto (editores de texto)

Um script é nada mais que uma série de comandos colocados em ordem dentro de um
arquivo para que estes sejam executados sempre da mesma forma. Os scripts podem ou não
receber valores extras pela linha de comando, isso vária de acordo com a finalidade do script.

Antes de fazermos um script precisamos conhecer os editores de texto que temos


disponíveis. Claro que você pode utilizar qualquer editor de texto disponível em seu sistema,
mas quando estamos apenas com interface texto precisamos saber como utilizar
adequadamente o editor de texto.

Os principais editores de texto do Linux são:

 VI
 Gnu NANO
 Emacs
 Pico

Vamos cobrir apenas o VI e nano que estão presentes em todas as distribuições.

3.1.1 Editor de Texto vi


O editor de texto vi é um dos mais usados pelos administradores Linux e também por
programadores. Ele dispõe de muitos recursos existindo até mesmo livros ensinando como
utilizar o vi.

Em alguns casos você tem apenas a versão pura do vi instalado, este é um pouco mais
complexo de se utilizar pois depende de muitas funções do teclado.

Já a versão vim já possui algumas facilidades de uso, mas os comandos que passaremos aqui
correspondem aos dois.

Você pode abrir um arquivo diretamente passando o comando abaixo

vi nome_do_arquivo

Outra forma é de dentro do vi utilizar o comando abaixo

:open nome_do_arquivo

Obs: lembre-se que no caso de estar dentro do vi para abrir o arquivo é necessário passar o
caminho todo para ele (ex: :open /etc/apache2/sites-enabled/000-default)

Ao entrar no editor você não estará em modo de edição, para isso é necessário pressionar a
tecla i do teclado ou o botão insert, desta forma você estará pronto para começar a digitar.

Apostila/eBook do Curso Linux Essentials Página 71


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Acompanhe abaixo uma lista dos comandos mais básicos.

Comandos no vi:

i: inserir
x: apaga um caractere
dd: apaga uma linha
o: adiciona uma nova linha e entra em modo edição (i)
q: sair
w: salvar

Importante: para alterar de um comando para outro é necessário pressionar a tecla esc
para sair do modo que você está.

Por exemplo, para salvar o documento que você está utilizando é possível utilizar o comando
:wq, onde o w seria para salvar e o q para sair do vi.

Um comando muito útil é o split, utilizado para abrir um segundo conteúdo na mesma
interface. Por exemplo, vamos dizer que você está com o arquivo do apache instalado e quer
abrir a configuração do serviço de ftp, você então digita o comando abaixo

:split /etc/vsftpd.conf

Com isso sua tela será dividida ao meio (horizontalmente) e você pode alterar entre elas com o
comando Ctrl+w . Se quiser uma divisão vertical utilize vsplit .

Veja abaixo uma tela do vi, onde estamos com o vi aberto com dois arquivos de código fonte,
como você pode ver o vi permite a utilização de syntax hilight.

Apostila/eBook do Curso Linux Essentials Página 72


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3.1.2 Editor nano


O nano é um editor mais simples de ser utilizado, ao entrar nele você já pode ver na parte
inferior uma série de comandos, veja a seguir uma configuração aberta.

Dica: O mais importante de tudo é que você se sinta bem ao utilizar um determinado editor
de texto, seja ele qual for. Mas também é muito importante que você tenha alguma prática
em outro tipo de editor, como uma alternativa, pois pode acontecer de o sistema que você
precisar manipular não ter o editor de sua preferência.

Maiores informações sobre os editores você pode ver no man de cada um deles.

3.2 Shell Script Básico

Um shell script pode ser basicamente uma série de comandos colocados juntos dentro de
um arquivo para ser executado, como também pode ser praticamente um programa inteiro,
depende muito do que você coloca dentro dele. Aqui vamos cobrir apenas scripts em bash .

Normalmente ao abrir um script você verá no seu inicio qual o interpretador deste, no caso de
um script em bash normalmente será conforme mostrado a seguir.

#!/bin/bash

Este apontamento indica como o script deve ser executado quando for chamado.

Nada impede que você o chame usando outro interpretador, mas provavelmente o script
retornará erro neste caso, porém se você apenas o executar sem especificar o interpretador
então ele precisa desta informação para saber como deve proceder a execução.

Apostila/eBook do Curso Linux Essentials Página 73


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Vamos analisar um pequeno script como exemplo. Acompanhe na figura abaixo.

Atente que definimos a opção :set number no vi para que exibisse no canto esquerdo o
número das linhas, assim fica mais fácil de explicar.

Na linha 1 definimos o interpretador padrão


Na linha 3 definimos uma variável chamada NOME
Na linha 5 exibimos o texto Qual o seu nome ?
Na linha 7 chamamos o comando read para ler o que o usuário digitar, e jogamos para uma
variável chamada NOVONOME
Na linha 9 realizamos uma comparação entre os dois valores
Na linha 10 definimos que se o nome for mike ele exibe a frase Bonito nome! :)
Na linha 12 colocamos para apresentar a frase Hum.. Ta bom caso o nome não seja mike

Este é um pequeno exemplo de shell script, vamos na sequência utilizar algo mais real, apenas
como forma de exemplificar o que pode ser feito.

Este é um pequeno pedaço de um script de backup.

Apostila/eBook do Curso Linux Essentials Página 74


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

No inicio do mesmo ele lê uma série de configurações em um outro arquivo e define as


variáveis para uso, veja que utilizamos o comando echo, cut, mkdir, rsync, cat, grep , ou seja,
pegamos uma grande linha de comando e organizamos em um arquivo.

Pense que este arquivo possui 84 linhas, imagine que tamanho ficaria isso se fosse uma única
linha de comando!

Vamos ver mais um exemplo, agora mais simples.

Primeiro em linha de comando e em seguida o mesmo conteúdo em um arquivo.

Linha de comando:
$ for i in *; do if [ -e "$i" ]; then echo "O Arquivo $i existe"; echo "$i" >
/tmp/teste2.txt; sleep 1 ;else "Nao encontrei o arquivo informado" ; fi; done

Arquivo:
#!/bin/bash

for i in *; do
if [ -e "$i" ]; then
echo "O Arquivo $i existe"
echo "$i" > /tmp/teste2.txt
sleep 1
else
"Nao encontrei o arquivo informado"
fi
done

Os scripts em shell permitem a nós a utilização de algumas ferramentas já conhecidas do


pessoal de programação como if, else, while, for, case e outras ferramentas para
comparação de resultados. O bash traz também alguns operadores básicos que você pode
verificar abaixo.

-e: verifica se o arquivo existe


-f: verifica se é um arquivo e não um diretório ou arquivo de dispositivo
-s: verifica se o tamanho do arquivo é diferente de 0
-d: verifica se é um diretório
-r: verifica se o usuário tem permissão de leitura
-w: verifica se o usuário tem permissão de escrita
!: utilizando junto com outros representa ação contrária (ex: não ter permissão, não existir
etc...)

Na linha de comando para não precisar digitar o if você pode usar a ferramenta test juntamente
com estas opções, por exemplo, testar se um arquivo tem permissão de escrita para você:

test –w /etc/passwd && echo “Escrita” || echo “Leitura”

Nesse caso nós utilizamos o echo para definir, se for verdadeiro utiliza-se o comando da
esquerda, se for falso, utiliza-se o comando da direita.

Você pode ver o valor real do resultado colocando da seguinte forma:

test –w /etc/passwd ; echo $?

Apostila/eBook do Curso Linux Essentials Página 75


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Capítulo 4 – O sistema
operacional Linux

Objetivos do Capítulo
Ao final desse capítulo você deverá ser
capaz de:

 Os principais sistemas operacionais e


distribuições Linux.
 Os componentes que fazem parte
dos desktops e servidores.
 Onde os vários tipos de dados são
armazenados em um sistema Linux.
 As configurações mais importantes
de rede e com os requisitos básicos
que o computador necessita para
funcionar em uma rede LAN (Local
Area Network).

Apostila/eBook do Curso Linux Essentials Página 76


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Sumário do Capítulo

1 Escolhendo um Sistema Operacional _ 78


1.1 Windows, MacOS, Linux, BSD e Solaris
79
1.2 Gerenciamento do Ciclo de Vida das
Distribuições _________________________ 80
1.3 Interface Grafica Vs Linha de Comando
81
2 Entendendo o Hardware do Computador
82
2.1 HD e Partições __________________ 83
2.2 Drivers Opticos__________________ 84
2.3 Drivers Extras ___________________ 84
2.4 Verificando todo o Hardware de seu
Computador _________________________ 85
2.5 Gerenciadores de Energia _________ 85
3 Onde os Dados são Armazenados ___ 86
3.1 Kernel _________________________ 87
3.2 Processos ______________________ 88
3.3 Verificação de Memória __________ 89
3.4 syslog, klog, dmesg ______________ 90
3.5 Diretórios do Linux ______________ 91
3.6 Pacotes e Banco de Dados de Pacote 92
3.7 Bibliotecas _____________________ 93
4 Seu Computador na Rede __________ 94
4.1 Internet, Rede, Roteadores ________ 95
4.2 DNS ___________________________ 96
4.3 Configuração de Rede ____________ 96
4.3.1 Configuração Manual _____________ 97
4.3.2 Configuração Através de Arquivos de
Configurações __________________________ 100

Apostila/eBook do Curso Linux Essentials Página 77


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

1 Escolhendo um Sistema Operacional


Peso: 1
Descrição: Conhecer sobre os principais sistemas operacionais e as distribuições Linux.

Tópicos Importantes:

Diferença entre o Linux, Windows e Mac


Gerenciamento do ciclo de vida da distribuição

Veja abaixo uma lista parcial com os arquivos, termos e utilitários mais utilizados:

GUI versus command line, desktop configuration


Maintenance cycles, Beta and Stable

Apostila/eBook do Curso Linux Essentials Página 78


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

1.1 Windows, MacOS, Linux, BSD e Solaris

Hoje em dia temos muitos sistemas operacionais, mas os mais conhecidos são o MS Windows,
MacOS, Linux e os derivados de BSD como o FreeBSD e OpenBSD.

O MacOS da Apple é baseado em BSD também, então acaba sendo um sistema muito parecido
com o Linux. A grande diferença é o Windows, que não é baseado em Unix como os outros, o
sistema da Microsoft também incorporou algumas coisas do Linux e BSD, por exemplo, da
versão 2000 do Windows em diante não é necessário reiniciar o computador após trocar a
configuração de rede porque foi implementando um modelo baseado em BSD. Uma das grandes
vantagens dos sistemas "Unix Like" é a questão da segurança devido a seu modelo de
permissões e arquitetura do sistema.

O Windows como você já deve ter percebido é líder no mercado de Desktops, mas nos
últimos anos o Linux evoluiu muito nesta área. Se você comparar as primeiros interfaces
gráficas com as atuais você consegue ter uma noção nítida desta questão.

Alguns anos atrás era comum ouvir as pessoas falando que não usavam Linux porque não
conseguiam utilizar o cdrom ou o disquete, isso tudo na verdade se dava devido a diferença de
conceito, no Windows você coloca o CD no drive e o Windows já o disponibiliza para você, no
Linux era necessário utilizar o processo de montagem manualmente, existiam alguns
programas que ajudavam neste processo como o automount que já não é mais usado. Com a
chegada do haldaemon e posteriormente do udev isso tudo mudou, o Linux tornou-se mais fácil
para trabalhar com dispositivos removíveis.

Fora estas questões a grande diferença é a questão do modelo comercial, como o Windows é
proprietário e ninguém além da própria Microsoft pode ter acesso ao código fonte do mesmo
isso gera um entrave muito grande, pois não sabemos até onde nossos dados são mantidos em
sigilo já que o código do mesmo é fechado.

O mesmo é claro acontece com o sistema da Apple, por mais que o sistema seja baseado em
BSD a apple não libera a sua versão das coisas em modelo aberto, assim sendo, a mesma
duvida recai sobre a apple.

Algum tempo atrás a Sun Microsystem abriu o código fonte de seu Solaris (Unix da Sun)
criando assim o projeto OpenSolaris, do qual rapidamente nasceu algumas distribuições. A
licença da Sun não é GPL, porém, também permite visualização e alteração do código fonte.
Com a aquisição da Sun pela Oracle o projeto foi extinto porém criou-se um fork do mesmo,
uma das distribuições existentes é o OpenIndiana, você pode ver mais a respeito em
http://openindiana.org/

Agora como uma opinião pessoal eu diria, o melhor sistema operacional a ser utilizado
depende muito de sua necessidade, existem sistemas operacionais que são excelentes em
algumas tarefas e pecam em outras. Existem restrições de projeto que também não lhe
permitem uma escolha, como por exemplo a utilização de banco de dados SQL Server ou
páginas escritas em ASP utilizando recursos que só existem no Windows (como o framework
.NET). Tirando estes casos é quase sempre possível a utilização de Linux e existem aqueles que
preferem o BSD ao Linux.

Apostila/eBook do Curso Linux Essentials Página 79


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

1.2 Gerenciamento do Ciclo de Vida das Distribuições

Distribuição debian
Normalmente nós utilizamos um sistema operacional quando o mesmo está estável, salvo
quando queremos testar novos recursos. Em sistemas Debian nós temos 3 estágios, sendo
eles, stable (estável), testing (teste), unstable (instável).

No caso do Debian basicamente a coisa funciona assim, quando uma versão stable é lançada os
pacotes da unstable são colocados na testing e começam a sofrer alterações (já houve casos
onde este período durou cerca de 5 anos). Após o sistema estar de acordo a equipe do Debian
coloca a testing em freeze (congelado), neste momento o sistema não recebe mais
modificações de versões, apenas correções das versões atuais. Algum tempo depois ele se
tornará a nova versão testing, a unstable continuará sempre unstable e uma nova série de
pacotes entram na testing que um dia se tornará estável novamente.

Também é possível atualizar a distribuição de oldstable para stable (você usava a stable e
agora existe uma nova stable), utilizando o gerenciador de pacotes apt-get. Após fazer as
devidas configurações basta realizar o comando apt-get dist-upgrade que todo o seu sistema
será atualizado para nova versão, é claro que você pode atualizar também para testing ou
mesmo para unstable porém não é recomendado para sistemas em produção.

Maiores informações sobre as versões do Debian podem ser verificadas no link abaixo:
http://www.debian.org/releases/

Distribuição CentOS
O CentOS é baseado no RedHat Enterprise Linux, basicamente a RedHat disponibiliza todo o
código fonte de seus sistema operacional e o pessoal do CentOS baixa os fontes, compila e
transforma em um CD para você provendo as atualizações e etc.

Apostila/eBook do Curso Linux Essentials Página 80


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Baseado nesta questão é trabalhado o ciclo de vida que a RedHat estabelece, as versões 5 e 6
destes possuem um tempo de vida de 10 anos, seguido de 3 anos de tempo de vida extra. As
versões 3 e 4 já tiveram seu tempo de vida encerrado, a versão 3 em 2010 e a versão 4 em
2012.

Maiores informações sobre o tempo de vida desta pode ser verificado no link abaixo:
https://access.redhat.com/support/policy/updates/errata/?cid=1480606

1.3 Interface Grafica Vs Linha de Comando

A utilização de linha de comando, como você já pode ver no decorrer do curso, exige muito
mais habilidade de que simplesmente pressionar um botão do mouse.

Com certeza a curva de aprendizado para utilização de linha de comando é maior, mas você
sempre aprenderá como as coisas funcionam.

Através da linha de comando você pode passar muitos parâmetros para o sistema, e como já
foi dito anteriormente, no Linux é possível fazer praticamente tudo através da linha de
comando, exemplos disso que eu tenho da “vida real” são:

 Gravação de TV
 Alteração de Metadados de Imagens
 Inserção de Marca d’agua em Imagens
 Backups
 Monitoramento
 Scripts para automação de processos.

Seja feito digitando manualmente ou através de scripts, no fim tudo é linha de comando e isso
nos permite dimensionar de forma mais inteligente os recursos que dispomos.

Apostila/eBook do Curso Linux Essentials Página 81


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

2 Entendendo o Hardware do Computador


Peso: 2
Descrição: Familiarizar-se com os componentes que fazem parte dos desktops e servidores.

Tópicos Importantes:

Hardware

Veja abaixo uma lista parcial com os arquivos, termos e utilitários mais utilizados:

Hard drives and partitions, motherboards, processors, power supplies, optical drives,
peripherals
Display types
Drivers

Apostila/eBook do Curso Linux Essentials Página 82


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

2.1 HD e Partições

Normalmente ao ligarmos um HD (hard drive/disco rígido) ou outro dispositivo de bloco,


podemos verificar as partições existentes através do comando fdisk –l.

Também podemos utilizar o comando dmesg | less para tentar localizar as informações do
disco, veja abaixo com o resultado da busca no dmesg

Perceba que temos destacado a palavra SAMSUNG que foi o argumento da busca feito e em
azul temos as partições listadas sda: sda1 sda2 sda3.

Agora se digitarmos o comando fdisk –l veja a seguir as partições.

Perceba que no caso para o disco sda as partições exibidas são exatamente as informadas
anteriormente (sda1 sda2 sda3).

Apostila/eBook do Curso Linux Essentials Página 83


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Quando nós ligamos um dispositivo de bloco, como um pendrive por exemplo, ele é exibido da
mesma forma tanto no dmesg devido ao reconhecimento do dispositivo e no fdisk para poder
verificar as partições e fazer a montagem das mesmas.

2.2 Drivers Opticos

Os drivers de CD-R/RW/DVD-R/RW atualmente no Linux são reconhecidos como


dispositivos scsi, mesmo que sejam IDE, assim o dispositivo normalmente é o /dev/sr0. Veja
abaixo a listagem do comando dmesg.

root@pabx:~# dmesg | grep -i sr0


[ 0.786091] sr0: scsi3-mmc drive: 48x/48x writer cd/rw xa/form2 cdda tray
[ 0.786193] sr 0:0:0:0: Attached scsi CD-ROM sr0

Curiosidade:
A pouco tempo atrás para utilizar gravadores de CD no Linux normalmente era preciso
especificar no grub/lilo a opção hdX=ide-scsi, neste caso o X era o drive de CD.

Por exemplo, hdc e habilitando o parâmetro ide-scsi ativava a emulação de scsi que era
necessária para gravação de CDS, atualmente este processo não é mais necessário
conforme já informamos anteriormente.

2.3 Drivers Extras

Alguns dispositivos no Linux precisam de drivers extras para rodar. No Linux não chamamos
de drivers e sim de módulos, estes módulos externos normalmente vem em código fonte
para ser compilado.

E existem alguns binários que executam algumas compilações mas a base do código é
proprietária. Um exemplo disso são os drivers de vídeo da NVIDIA, alguns Linux já trazem
uma opção de instalação automática, mas você pode baixar o driver para Linux no site da
NVIDIA e tendo os pacotes certos a compilação e instalação do mesmo ocorre de forma
razoavelmente automática.

Existem algumas placas de rede que utilizam drivers externos para funcionar, hoje isso não é
tão comum de se ver mas pode acontecer. Se o fabricante disponibiliza o driver é importante
observar as limitações do mesmo, algumas vezes o mesmo só funciona em algumas versões de
kernel, mas realizando a instalação o mesmo é inserido no kernel do Linux e passa a funcionar
de forma automática.

Existem também alguns drivers que são utilizado para liberação de recursos, como acontece
com algumas controladores scsi/raid que possuem softwares de gerenciamento e
monitoramento para o Linux.

No geral para a compilação destes módulos é necessário que você tenha os aplicativos gcc,
make, g++ além dos fontes do kernel, com tudo isso devidamente instalado os passos de
compilação normalmente são make, make install.

Em alguns casos é necessários executar o arquivo configure para que este gere o arquivo
Makefile responsável pelas instruções de compilação, mas não é tão comum para módulos.

Apostila/eBook do Curso Linux Essentials Página 84


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

2.4 Verificando todo o Hardware de seu Computador

Existe no Linux um utilitário muito bom chamado hwinfo, que permite que você gere um
dump de todo o hardware disponível.

O hwinfo traz informações sobre memória, hd, placa mãe, processador e outros dispositivos.
Veja a seguir a saída do comando referente a memória.

web:~# hwinfo --mem


01: None 00.0: 10102 Main Memory
[Created at memory.61]
Unique ID: rdCR.CxwsZFjVASF
Hardware Class: memory
Model: "Main Memory"
Memory Range: 0x00000000-0xf791afff (rw)
Memory Size: 3 GB + 768 MB
Config Status: cfg=new, avail=yes, need=no, active=unknown

2.5 Gerenciadores de Energia

No Linux existem disponíveis recursos para APM (Advanced Power Management) e ACPI
(Advanced Configuration and Power Interface).

Atualmente todos os laptops suportam ACPI, o suporte já vem ativo no Kernel do Linux
bastando que seja feita apenas a configuração do mesmo. O APM e o ACPI basicamente
realizam o gerenciamento de energia, a verificação se uma fonte está ligada ou se a bateria
está descarregada. Também disponibiliza, por exemplo, a configuração para ajustes de brilho
do monitor.

Existem outras ferramentas bastante importantes no gerenciamento de energia como o


hdparm (gerenciamento do hd inclusive com relação a desempenho do mesmo) e o cpufreqd.

Apostila/eBook do Curso Linux Essentials Página 85


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3 Onde os Dados são Armazenados


Peso: 3
Descrição: Entender onde os vários tipos de dados são armazenados em um sistema Linux.

Tópicos Importantes:

Kernel
Processos
syslog, klog, dmesg
/lib, /usr/lib, /etc, /var/log

Veja abaixo uma lista parcial com os arquivos, termos e utilitários mais utilizados:

Programs, libraries, packages and package databases, system configuration


Processes and process tables, memory addresses, system messaging and logging
ps, top, free

Apostila/eBook do Curso Linux Essentials Página 86


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3.1 Kernel

O Kernel do Linux é coração do mesmo, é onde a mágica acontece, onde o software e o


hardware começam a se falar. Já vimos um pouco sobre o kernel nos capítulo 1 e 2. Aqui
veremos onde as informações do kernel ficam armazenadas.

As informações do kernel durante a execução ficam localizadas nos diretório /proc, /dev, por
exemplo, nosso drive de CD após reconhecido aparece como dispositivo em /dev/sr0, se você
verificar em /proc/scsi poderá ver os dispositivos reconhecidos.

Apostila/eBook do Curso Linux Essentials Página 87


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3.2 Processos

Todo processo executado gera um número chamado PID (process ID). Este número é
criado também no /proc, onde você pode verificar algumas informações sobre os processo,
mas existem outros meios de se ter acesso as informações mais relevantes, uma delas é
através do comando ps. Acompanhe na imagem abaixo.

Veja que o comando utilizado foi ps aux, os parâmetros utilizados significam:

 a - Seleciona todos os processo


 u - Traz a listagem com os nomes dos usuários
 x - Traz em formato BSD

As informações do processo no /proc você pode verificar no man proc que irá trazer uma
explicação detalhada de cada item.

Outra forma muito utilizada para acompanhar os processos é através do comando top. O
comando top mostra em tempo real o que acontece, veja abaixo.

Apostila/eBook do Curso Linux Essentials Página 88


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3.3 Verificação de Memória

A verificação da memória via linha de comando é realizada através do comando free, veja a
seguir a saída do comando.

dltec@dltec:~$ free
total used free shared buffers cached
Mem: 738856 508056 230800 0 69068 298372
-/+ buffers/cache: 140616 598240
Swap: 1046524 0 1046524
dltec@dltec:~$

Atente que esses valores são exibidos em kilobytes. Uma informação importante é que o
campo shared é obsoleto e deve ser ignorado de acordo com informação no manual.

Você pode especificar alguns parâmetros para facilitar a leitura, como por exemplo –m para
exibição de memória em MB, ou –g para GB, veja abaixo o mesmo resultado anterior agora
com –m.

dltec@dltec:~$ free -m
total used free shared buffers cached
Mem: 721 496 225 0 67 291
-/+ buffers/cache: 137 584
Swap: 1021 0 1021
dltec@dltec:~$

Também é possível verificar a utilização de memória através do comando vmstat, veja ao


lado uma saída para o comando vmstat -a –Sm.

dltec@dltec:~$ vmstat -a -Sm


procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free inact active si so bi bo in cs us sy id wa
1 0 0 236 253 203 0 0 27 7 16 35 1 0 99 0
dltec@dltec:~$

Dica: O comando top já demonstrado anteriormente também permite que você ordene os
resultados baseado na utilização de memória.

Apostila/eBook do Curso Linux Essentials Página 89


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3.4 syslog, klog, dmesg

syslog
O syslog antes de ser um aplicativo ele é um protocolo definido pela RFC5424. Com base nesta
RFC foi criado no Linux os aplicativos syslog, rsyslog, syslog-ng e outros.

O syslog permite uma divisão das mensagens recebidas utilizando alguns nomes de
serviços e outras facilities, desta maneira é possível pelo aplicativo separar as mensagens
que recebe e organizar em arquivos separados

O Debian utiliza por padrão a aplicação rsyslog, a configuração deste fica em


/etc/rsyslog.conf. Veja abaixo um pedaço da configuração do mesmo.

lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log

Ou seja, ele recebe a informação do log com os parâmetros lpr, mail e user (além de outras) e
direciona cada um para um determinado arquivo.

Também é possível direcionar vários tipos de mensagens para um único arquivo, veja a seguir.

*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages

O resultado disso tudo, no caso do servidor de onde pegamos essa configuração, é para o
arquivo /var/log/mail.log o seguinte conteúdo.

Jul 23 19:09:22 web vpopmail[15376]: vchkpw-smtp: (PLAIN) login success


x@xxx.com.br:177.111.248.132

A mensagem mostrada acima é uma mensagem gerada pelo sistema de autenticação do


sistema de email do servidor, mostrando um login com sucesso do usuário x do domínio
xxx.com.br (estes valores foram alterados para não mostrar dados legítimos de usuário).

Ou seja, no fim, os aplicativos mandam as mensagens pelo syslog e o rsyslog recebe e trata
estas mensagens.

klog
O Kernel do Linux também gera mensagens que são interpretadas pelo syslog, anteriormente
havia um daemon chamado klogd para realizar a recepção destas mensagens, porém
atualmente o rsyslog realiza todo o processo.

No entanto, é comum ainda encontrarmos sistemas mais antigos (Debian) ou sistemas CentOS
que ainda utilizam desta forma.

Vale a pena mencionar que o CentOS utiliza o sysklogd para daemon de syslog, o mesmo
possui sua configuração em /etc/syslog.conf.

O formato de configuração é parecido com o do rsyslog.

Apostila/eBook do Curso Linux Essentials Página 90


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

dmesg
As mensagens do kernel também podem ser exibidas pelo comando dmesg. Já vimos um
pouco sobre esse comando no tópico sobre HD e partições.

Este comando exibe um buffer de 16384 bytes, após isso é feito o dump para ao arquivo
/var/log/dmesg. Este buffer é necessário pois de acordo com a falha apresentada a
mensagem de erro pode ocorrer apenas no buffer, não chegando a ser transferida para o
arquivo de log devido a algum tipo de travamento.

O dmesg é também utilizado para verificar as mensagens de boot do sistema operacional


além de mensagens de kernel relacionadas a algum dispositivo inserido como um pendrive,
webcam ou outro.

3.5 Diretórios do Linux

No quadro abaixo descrevemos a estrutura padrão de diretórios do Linux apenas para que
você tenha uma noção melhor da finalidade de cada diretório.

/ - Raiz do sistema
/bin - Binários do sistema
/boot - Arquivos necessários para o boot do sistema
/dev - Arquivos relacionados a comunicação com dispositivos
/home - Arquivos de usuários
/lib - Bibliotecas do sistema
/lib32 - Bibliotecas do sistema para compatibilidade com sistemas 32 bits
/media - Medias removíveis (pendrive, cds etc..)
/mnt - Montagem de dispositivos (cds, pendrives, etc)
/opt - Diretório para sofwares que não são do próprio sistema (software externos)
/proc - Sistema de arquivo virtual para utilização de memória e alguns dispositivos
/root - Diretório do usuário root
/sbin - Binários do sistema para serem utilizados apenas pelo root
/srv - Arquivos para serem oferecidos para serviços como ftp, rsync e outros
/sys - Arquivos específicos de devices plug and play?
/tmp - Arquivos temporários
/usr - Arquivos instalados pela distribuição
/var - Dados variáveis como logs , fila de e-mail e outros.

De todos estes diretórios existem dois em especial que precisam ser mencionados, sendo
eles:

 /etc/
 /var/log

Apostila/eBook do Curso Linux Essentials Página 91


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Estes diretórios são dos mais utilizados por qualquer administrador, o diretório /etc/ contém
normalmente a configuração de todos os serviços que você executa e o /var/log contém
os logs destes serviços. Vamos exemplificar.

No Debian o serviço do apache


Configuração: /etc/apache2/
Logs: /var/log/apache2

No CentOS o serviço do apache


Configuração: /etc/httpd
Logs: /var/log/httpd

3.6 Pacotes e Banco de Dados de Pacote

Como já foi falado os gerenciadores de pacotes possuem uma lista com os pacotes. Ele
utiliza esta lista para poder realizar o download dos pacotes e suas dependências.

O apt-get mantém uma lista dos pacotes no diretório /var/lib/apt/lists.

Tenha em mente que cada repositório possui sua lista de arquivos lá e quando você solicita a
instalação de algo o pacote é armazenado em /var/cache/apt/archive. Aqui ele será
processado após o download e caso o download seja interrompido o pacote ficará em
/var/cache/apt/archives/partial.

Estes diretórios (archive e partial) podem ficar um pouco grande, principalmente em um


desktop, então de vez em quando é recomendado executar o comando apt-get clean para
remover o conteúdo existente nestes diretórios.

No caso do gerenciador de pacotes yum existem três comandos base para limpar os dados do
mesmo, sendo eles:

 yum clean headers


 yum clean packages
 yum clean metadata

Apenas para mantermos claro a questão do pacote, vamos novamente explicar alguns detalhes.

.dpkg e .rpm são pacotes

Pacotes neste caso são uma série de arquivos e scripts prontos para serem executados
através de um gerenciador de pacote e mantidos todos em um único arquivo

Caso você se interesse por empacotamento segue abaixo algumas referencias.

Debian:

 http://www.debian.org/doc/manuals/maint-guide/

RPM:

 https://fedoraproject.org/wiki/Packaging/Guidelines
 http://www.ibm.com/developerworks/library/l-rpm1/
 http://www.gurulabs.com/GURULABS-RPM-LAB/GURULABS-RPM-GUIDE-v1.0.PDF

Apostila/eBook do Curso Linux Essentials Página 92


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3.7 Bibliotecas

Já falamos aqui sobre biblioteca e agora vamos ver um pouco mais sobre o tema com o intuito
de deixar claro alguns pontos importantes. A biblioteca é na verdade um código que é criado
para ser utilizado por outros programas, com o objetivo de permitir a utilização de recursos já
previamente criados.

Basicamente imagine o seguinte, o aplicativo wget que é utilizado para realizar downloads via
linha de comando precisa acessar algumas vezes sites que utilizam SSL. Para isso ele precisa
ter suporte a SSL, no caso o wget utiliza a biblioteca libssl. Através do comando ldd você
pode ver as bibliotecas que um determinado software utiliza, vamos ver o caso do wget na
figura abaixo.

dltec@dltec:~$ ldd /usr/bin/wget


linux-gate.so.1 => (0xb7729000)
libssl.so.1.0.0 => /lib/i386-linux-gnu/libssl.so.1.0.0 (0xb76c1000)
libcrypto.so.1.0.0 => /lib/i386-linux-gnu/libcrypto.so.1.0.0 (0xb7516000)
libidn.so.11 => /usr/lib/i386-linux-gnu/libidn.so.11 (0xb74e1000)
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xb74d8000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7333000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb732e000)
libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb7318000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb72fc000)
/lib/ld-linux.so.2 (0xb772a000)
dltec@dltec:~$

Como você pode ver o wget utiliza algumas bibliotecas, para ssl e outras finalidades. O mesmo
acontece com muitos outros aplicativos, em geral como o Linux é aberto, ao invés de você criar
uma biblioteca de criptografia você usa a libcrypto, e assim por diante, de acordo com o que já
existe disponível. Dessa forma você ganha tempo, o seu software utiliza bibliotecas de
excelente qualidade e você foca nas necessidades de seu software.

O importante de lembrar é que a falta de uma biblioteca pode impedir o funcionamento


parcial ou total do software que você está tentando utilizar. Por isso a importância dos
gerenciadores de pacotes, pois eles manipulam estas dependências e trazem para você tudo
para que o software funcione de forma adequada.

Apostila/eBook do Curso Linux Essentials Página 93


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

4 Seu Computador na Rede


Peso: 2
Descrição: Familiarizar-se com as configurações mais importantes de rede e com os requisitos
básicos que o computador necessita para funcionar em uma rede LAN (Local Area Network).

Tópicos Importantes:

Internet, network, routers


Domain Name Service
Network configuration

Veja abaixo uma lista parcial com os arquivos, termos e utilitários mais utilizados:

route
resolv.conf
IPv4, IPv6
ifconfig, netstat, ping
ssh, dig

Apostila/eBook do Curso Linux Essentials Página 94


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

4.1 Internet, Rede, Roteadores

No Linux é normal termos bastante convívio com ambientes de rede por isso é importante
mencionarmos aqui algumas questões sobre esse tema.

Uma rede de computadores nada mais é que um grupo de computadores que “falam” uns com
os outros, permitindo assim o compartilhamento de recursos como arquivos, impressoras e
outras finalidades.

Quando você passa a ter a necessidade de acessar algum conteúdo externo (que não esteja na
sua rede) isso é realizado através de um roteador, que é o dispositivo que coloca você em
contato com a internet, seja através de um modem adsl ou uma conexão dedicada.

Muitas pessoas/empresas utilizam o Linux como roteador. Além de possível essa solução se
torna bem flexível devido a quantidade de recursos disponíveis no Linux. Veja abaixo uma
topologia simples como exemplo.

Esta é uma topologia muita utilizada em ambientes de escritório e até mesmo em empresas
maiores. Quanto maior a empresa, mais micros e switches você encontrará, mas a ideia básica
é que você terá esses micros conectados no switch e o switch conectado no roteador/firewall.

É importante ressaltar que tanto a função do roteador quanto do firewall podem ser realizados
pelo Linux ou estarem em equipamentos com essa finalidade própria. Normalmente o firewall é
um firewall Linux (existem muitos firewall BSD também além de soluções proprietárias).

Apostila/eBook do Curso Linux Essentials Página 95


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

4.2 DNS

DNS é DOMAIN NAME SERVICE ou seja, Serviço de Nome de Domínio. A ideia do DNS é
simples, ele pega os endereços IPs e traduz para um nome. Imagine o seguinte, um endereço
IP hoje, na versão IPv4, possui quatro sequências numéricas que vão de 0 até 255. Por
exemplo, o endereço IP do site www.uol.com.br é 200.221.2.45.

Não é muito mais fácil guardarmos o endereço uol.com.br do que 200.221.2.45?

E essa é justamente a função do DNS, ao digitarmos www.uol.com.br o DNS irá traduzir esse
endereço para 200.221.2.45, ou seja, ele realiza uma conversão de nomes para endereços IP.
O dns também permitiu a criação de outros tipos de registros que no caso são utilizados para
informar qual o host de email, qual o servidor de dns do domínio, quando o mesmo foi
modificado, quem é o contato do domínio e por ai vai.

No Linux temos vários aplicativos para fazer consultas em serviços de dns. O pacote bind-
utils (CentOS) / dnsutils (Debian) trazem uma série de ferramentas como os comandos
dig, nslookup e o comando host que já é padrão no Linux.

Por exemplo, para saber por exemplo qual o endereço de mx (servidor de email) do domínio
dltec.com.br podemos utilizar o comando dig. Veja o exemplo a seguir.

$ dig –t mx dltec.com.br

O comando trará a seguinte saída (extraído apenas a parte que nos interessa)

dltec.com.br. 14392 IN MX 0 dltec.com.br.

Ou seja, o domínio dltec.com.br tem o MX apontado para o host dltec.com.br com prioridade 0.
Em seguida você poderia digitar dig –t A dltec.com.br para saber qual o ip do host .

4.3 Configuração de Rede

Vamos separar a configuração de rede para facilitar o entendimento em dois pontos, um que é
o manual e outro que é a configuração por arquivo.

Também iremos diferenciar cada uma das formas nos sistemas Debian e CentOS, pois cada
um apresenta suas particularidades.

Apostila/eBook do Curso Linux Essentials Página 96


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

4.3.1 Configuração Manual


A configuração de rede é sempre dividida em três tarefas, mostradas no quadro abaixo.

Configuração de Rede:

 a configuração do endereço IP
 a configuração de sua rota para internet (apontamento do gateway)
 a configuração dos servidores de DNS

Configurando endereço IP
Vamos imaginar nossa rede residencial, vamos supor também que iremos utilizar uma faixa de
IP 192.168.0.0/24, onde o host 1 (IP: 192.168.0.1) será o nosso roteador (ou seja, esse é
o endereço do seu roteador ADSL de conexão com a Internet da sua casa) e o host 10 (IP:
192.168.0.10) será o nosso endereço IP (ou seja, o endereço IP do seu micro).

Para os endereços de dns utilizaremos os servidores do google (8.8.8.8 e 8.8.4.4).

O comando que utilizaremos é o ifconfig. A sintaxe do comando basicamente é

ifconfig [interface] [endereço_ip] netmask [mascara_de_rede]

Então para configurarmos o ambiente que descrevemos acima usaremos o comando abaixo.

$ ifconfig eth0 192.168.0.10 netmask 255.255.255.0

Feito isso, se você digitar o comando ifconfig, sem nenhum parâmetro, deverá trazer uma
saída similar a figura a seguir.

Apostila/eBook do Curso Linux Essentials Página 97


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Configuração do roteador
Agora vamos realizar o apontamento do roteador, ou seja, definir qual o nosso gateway
default. Esta expressão é bem assertiva porque gateway significa porta de entrada e default
significa padrão, ou seja, para a internet, nós vamos definir a nossa porta de entrada padrão.

Para isso utilizamos o comando route, que deve ser utilizado na seguinte sintaxe:

route {add|del} [-host|-net] DESTINO[/prefixo] gw IP_DO_GATEWAY

No nosso caso, de acordo com ambiente que descrevemos anteriormente, o comando seria:

$ route add default gw 192.168.0.1

Veja que descrevemos na sintaxe do comando que após a opção add|del deveria vir a definição
de host ou net e depois a rede e no exemplo colocamos apenas default. A expressão default
significa –net 0.0.0.0/0, ou seja, isso significa qualquer rede. No caso este endereço é
substituído pela palavra default ou então você pode se preferir, digitar o comando com a rede
completa, que ficaria da seguinte forma:

$ route add -net 0.0.0.0/0 gw 192.168.0.1

Para listar as rotas que temos agora digite o comando route –n (o parâmetro –n é para que
ele não tente resolver nomes para o endereço, mostrando assim apenas os números dos
endereços).

Na imagem abaixo você pode verificar que do lado direito ele traz na segunda linha o endereço
de destino 0.0.0.0 através do roteador 192.168.0.1 através da interface eth0, desta forma está
definida a nossa configuração de rota padrão.

Configurando os servidores DNS


No Linux para definirmos qual será o nosso servidor de DNS padrão basta adicionar os
endereços no arquivo /etc/resolv.conf, no formato nameserver ENDERECO_IP.

Ou seja, no nosso exemplo, basta abrir com o editor de texto que acharmos mais interessante
e colocar a seguinte informação dentro do arquivo:

nameserver 8.8.8.8
nameserver 8.8.4.4

Apostila/eBook do Curso Linux Essentials Página 98


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Testando as configurações
Bem, agora que tudo está configurado vamos testar se a configuração está ok. A ferramenta
básica de teste de conectividade é o ping.

A ideia do ping é que ele manda um pacote icmp e este pacote é respondido pelo host de
destino, se o host de origem receber a resposta então está tudo certo.

Vamos fazer o teste realizando o ping para o nosso gateway. Acompanhe na saída abaixo.

$ ping -c 5 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_req=1 ttl=255 time=5.62 ms
64 bytes from 192.168.0.1: icmp_req=2 ttl=255 time=2.25 ms
64 bytes from 192.168.0.1: icmp_req=3 ttl=255 time=2.26 ms
64 bytes from 192.168.0.1: icmp_req=4 ttl=255 time=2.93 ms
64 bytes from 192.168.0.1: icmp_req=5 ttl=255 time=4.35 ms

--- 192.168.0.1 ping statistics ---


5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 2.255/3.486/5.624/1.316 ms

Veja que colocamos o comando ping –c 5 192.168.0.1, o parâmetro –c é para definir a


contagem de pings. No nosso caso utilizamos -c 5, ou seja, ao receber 5 respostas ele encerra
o comando. Caso não definirmos a quantidade de respostas desejada ele ficará rodando até que
você digite Ctrl+C para interromper o comando.

Se a sua resposta foi como a da imagem então está tudo ok com sua rede, você tem
conectividade.

Em seguida precisamos ver se você consegue resolver nomes, digite o comando:

ping –c 5 www.dltec.com.br

Se a sua configuração de DNS estiver ok e claro, o seu gateway também estiver ok, então sua
conexão está 100% funcional.

Curiosidade:

Se você estiver em um ambiente onde exista um servidor de DHCP basta digitar o


comando dhclient eth0 que o sistema fará o resto para você.

Nesses casos toda a configuração de endereço IP, gateway default e dns será enviada
automaticamente do servidor DHCP para o seu micro.

Apostila/eBook do Curso Linux Essentials Página 99


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

4.3.2 Configuração Através de Arquivos de Configurações


Modelo de configuração Debian
A configuração de rede do Debian fica em /etc/network/interfaces, basicamente ele traz a
definição da rede para todas as interfaces (inclusive a interface de loopback), veja a seguir o
arquivo aberto.

Veja que temos para cada interface (lo, eth0) um parâmetro auto. Isso significa que o
sistema deverá iniciar a interface no boot, depois temos a definição básica dela, iface eth0
inet static, e no caso da loopback, iface lo inet loopback.

É muito importante ter a configuração de loopback, muitos serviços a utilizam essa interface
para o seu funcionamento, seguindo a configuração temos então as definições de address
(endereço ip), netmask, network, broadcast, gateway. Os parâmetros de network e
broadcast não precisam ser colocados se a opção netmask está sendo utilizada, o sistema irá
calcular automaticamente a rede e o broadcast.

Esta configuração é lida sempre que a máquina é iniciada ou então se você iniciar pelo
comando /etc/init.d/networking [start|stop|restart].

No caso de tentar reiniciar via comando é importante ter em mente que se a configuração está
de um modo (um endereço ip X) e você troca para Y (com a rede funcionando) ele não irá
conseguir aplicar suas configurações, pois ele irá tentar derrubar a rede e os endereços não irão
coincidir. Nesses casos, uma opção seria aplicar a configuração manualmente (e apenas alterar
os dados no arquivo) ou então alterar pelo arquivo e reiniciar a maquina.

Se você fosse utilizar a eth0 recebendo ip por dhcp bastaria na linha onde está static alterar
para dhcp e remover as configurações referente aos endereços, desta forma ele já funcionaria
via dhcp.

Apostila/eBook do Curso Linux Essentials Página 100


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Modelo de configuração RedHat


No CentOS a configuração segue a linha do RedHat, até porque é uma distro feita sobre o
RedHat.

A configuração é separada em dois arquivos, sendo eles:

 /etc/sysconfig/network
 /etc/sysconfig/network-scripts/ifcfg-[interface name]

No caso é utilizado o arquivo sysconfig/network para configurar a definição de se a rede


deverá ou não ser utilizada. Também é possível definir o gateway nesta configuração mas não é
obrigatório, pode ser junto com a configuração da placa de rede, como nossa placa de rede é a
eth0 então nossa configuração fica em /etc/sysconifg/network-scripts/ifcfg-eth0.

A ideia da configuração é bem parecida com a do Debian. O script do CentOS busca todos os
arquivos ifcfg-* e dentro de cada arquivo nós informamos as configurações.

É importante notar as opções DEVICE, BOOTPROTO, ONBOOT e TYPE. A opção DEVICE


identifica para qual interface será aplicada a configuração, BOOTPROTO pode ser none,dhcp
ou bootp, é importante que quando a configuração é estática a opção esteja marcada para none
do contrário ele irá executar o comando para bootp ou dhcp de acordo com o que está
configurado, a opção TYPE deve ser sempre Ethernet (existem configurações especiais onde
este parâmetro será diferente, mas não iremos cobrir aqui) e finalmente na sequencia da
configuração temos os dados de nossa rede.

DEVICE="eth0"
BOOTPROTO="none"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR="192.168.0.11"
NETWORK="192.168.0.0"
NETMASK="255.255.255.0"
GATEWAY="192.168.0.1"

Após realizar as alterações basta digitar o comando /etc/init.d/network restart que a


configuração será devidamente aplicada.

Apostila/eBook do Curso Linux Essentials Página 101


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Capítulo 5 - Segurança e
Permissões de Arquivos

Objetivos do Capítulo
Ao final desse capítulo você deverá
entender os seguintes assuntos:

 Os vários tipos de usuários no


sistema Linux.
 Como criar usuários e grupos em
sistemas Linux.
 Compreender sobre a manipulação
de permissões e configurações de
propriedades de arquivos.
 Entender sobre os arquivos e
diretórios especiais no Linux,
incluindo suas permissões.

Apostila/eBook do Curso Linux Essentials Página 102


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Sumário do Capítulo

1 Segurança Básica e Identificação de


Tipos de Usuários __________________ 104
1.1 O Usuário root e os Usuários padrões
105
1.1.1 Verificando usuários logados ______ 105
1.1.2 Verificando os Últimos Logins no
Sistema 106
1.1.3 Verificando Dados de um Usuário __ 106
1.1.4 Tornando-se root _______________ 107
1.2 Usuários de Sistema ____________ 107
2 Criando Usuários e Grupos ________ 108
2.1 Criando Grupos ________________ 109
2.2 Criando Usuários _______________ 109
2.2.1 Comando useradd ______________ 109
2.2.2 Comando adduser ______________ 110
2.3 Removendo Usuários e Grupos ____ 111
2.4 Adicionando e Removendo Grupos de
um Usuário _________________________ 112
2.4.1 Adicionando Grupos com usermod _ 112
2.4.2 Manipulando Grupos Diretamente no
Arquivo /etc/group _____________________ 113

3 Manipulando Permissões e Propriedades


de Arquivo ________________________ 114
3.1 Verificando as Permissões e
Propriedades de um Arquivo ___________ 115
3.2 Alterando o Grupo de um Arquivo ou
Diretório ___________________________ 116
3.2.1 O Comando chmod _____________ 117
3.2.2 SUID, SGID e Stick Bit ____________ 119
3.2.2.1 SUID (Set User ID) ____________ 119
3.2.2.2 SGID (Set Group ID) ___________ 120
3.2.2.3 Sticky bit ____________________ 121

4 Diretórios Especiais e Arquivos ____ 122


4.1 Arquivos de Sistemas e Bibliotecas _ 123
4.2 Links Simbólicos ________________ 124

Apostila/eBook do Curso Linux Essentials Página 103


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

1 Segurança Básica e Identificação de Tipos de Usuários

Peso: 2
Descrição: Tomar conhecimento sobre os vários tipos de usuários no sistema Linux.

Tópicos Importantes:

Root and Standard Users


System users

Veja abaixo uma lista parcial com os arquivos, termos e utilitários mais utilizados:

/etc/passwd, /etc/group
id, who, w
sudo
su

Apostila/eBook do Curso Linux Essentials Página 104


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

1.1 O Usuário root e os Usuários padrões

O usuário root é o superusuário do Linux (e dos sistemas Unix e Unix Like), este é o usuário
com UID 0, é o usuário com permissão completa no sistema, capaz de realizar qualquer
modificação e também cometer erros catastróficos.

Obs: quando estamos, via linha de terminal, acessando o sistema como root nosso prompt
geralmente tem essa aparência (root@nomedaquina:# )

Um usuário comum no Linux tem permissão apenas para executar tarefas em seu diretório,
não tendo acesso a comandos de superusuário. Mesmo que consiga acessar os comandos
normalmente não consegue executar algumas tarefas por não ter permissão para isso.

Obs: quando estamos, via linha de terminal, acessando o sistema como um usário comum
nosso prompt geralmente tem essa aparência (usuario@nomedaquina:$ )

Normalmente é adicionado o usuário comum em alguns grupos estratégicos para que ele tenha
acesso a manipulação de impressoras, portas seriais, modems e outros periféricos.

Basicamente o usuário comum deve ter acesso a menor quantidade possíveis de coisas,
qualquer acesso que precise de mais permissões deve ser executado pelo root, isso garante que
usuários mal intencionados não consigam realizar nada significante em seu sistema.

Comando sudo:
Em sistemas mais recentes popularizou-se o uso do comando sudo para executar comandos
com permissão de root, porém isso também abre algumas brechas de segurança já que um
usuário pouco experiente pode digitar sua senha para execução de algum código malicioso.

1.1.1 Verificando usuários logados

É possível verificar os usuários logados no sistema através do comando who ou w,veja a


seguir uma tela com a execução dos dois comandos.

Analisando a saída dos comandos você consegue ver que basicamente o comando who e o
comando w exibem a mesma informação, mas o comando w traz algumas outras
informações como uptime, quantidade de usuários logados, média de carga do equipamento e
horário do login do usuário.

Já o traz apenas nome, console, horário de login, ip, então dependendo de que informação você
precisa é utilizado um ou outro comando.

dltec@dltec:~$ who
dltec pts/2 Sep 17 11:52 (10.0.2.2)
dltec pts/3 Sep 17 15:56 (10.0.2.2)
dltec@dltec:~$
dltec@dltec:~$ w
15:57:02 up 4:05, 2 users, load average: 0.12, 0.23, 0.28
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
dltec pts/2 10.0.2.2 11:52 58.00s 0.75s 0.75s -bash
dltec pts/3 10.0.2.2 15:56 0.00s 0.31s 0.00s w
dltec@dltec:~$

Apostila/eBook do Curso Linux Essentials Página 105


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

1.1.2 Verificando os Últimos Logins no Sistema


Todo login gera uma informação no sistema e esta informação pode ser acessada através do
comando last.

Este comando irá trazer algumas informações como ip de origem (caso seja um acesso
remoto), qual console foi utilizada, tempo de seção e data do login.

Veja abaixo uma saída do comando last.

1.1.3 Verificando Dados de um Usuário


Você pode em algum momento querer saber a que grupos um determinado usuário faz parte,
ou qual o id do mesmo.

Estes dados podem ser levantados utilizando o comando id USUARIO, veja a seguir um
exemplo.

mike@web:~$ id mike
uid=1000(mike) gid=1000(mike) groups=1000(mike)

Com esta informação eu vejo que o id do usuário mike é 1000, e o grupo principal dele é
1000 também, e ele não faz parte de nenhum outro grupo.

Importante:

Você também pode querer buscar no /etc/passwd qual o home do usuário ou então alguma
anotação que possa existir neste, para isso podemos utilizar o comando:

cat /etc/passwd | grep mike

A saída exibida seria algo do tipo:

mike:x:1000:1000::/home/mike:/bin/bash

Neste caso nós temos a informação de nome, id, gid, diretório home e shell

Apostila/eBook do Curso Linux Essentials Página 106


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

1.1.4 Tornando-se root


O processo de tornar-se root é bastante simples, basta digitar o comando su e pressionar
enter. Em seguida digite a senha do root e você estará logado como root.

aluno@dltec-VirtualBox:~$ su
Senha: (digite a senha do root)
root@dltec-VirtualBox:/home/aluno#

Curiosidade:

E muito comum em alguns sistemas atuais que o usuário root não tenha senha definida, isso
acontece porque o intuito é a centralização do gerenciamento utilizando o comando sudo.

1.2 Usuários de Sistema

Usuários de sistemas são usuários criados para que alguns serviços possam rodar sem a
utilização do usuário root. O objetivo é prevenir que possíveis falhas nos serviços possam ser
exploradas para ganhar acesso root ao sistema.

Normalmente você verá alguns usuários como mysql, ntp, News, mail, lp, man e alguns outros,
estes usuários não possuem nem devem possuir senha definida. Sempre que possível também
é interessante que eles não tenham um shell válido, desta forma você evita que seja possível
qualquer forma de login utilizando estes usuários, veja a seguir um exemplo.

avahi:x:110:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false

O avahi é um daemon de cache para dns e outros protocolos, no caso dele você vê que o shell
definido é /bin/false, como este shell não existe ele não consegue realizar login mesmo que
seja definida uma senha.

Apostila/eBook do Curso Linux Essentials Página 107


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

2 Criando Usuários e Grupos


Peso: 2
Descrição: Criando usuários e grupos em sistemas Linux.

Tópicos Importantes:

Comando de usuário e grupo


User IDs

Veja abaixo uma lista parcial com os arquivos, termos e utilitários mais utilizados:

/etc/passwd, /etc/shadow, /etc/group


id, last
useradd, groupadd
passwd
usermod, userdel
groupmod, groupdel

Apostila/eBook do Curso Linux Essentials Página 108


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

2.1 Criando Grupos

A criação de grupos é bastante simples e utiliza-se apenas o comando groupadd, onde você
pode definir alguns parâmetros ou não.

Execução simples:

$ groupadd meugrupo

Execução com especificação de GID:

$ groupadd –g 89 meugrupo

Neste exemplo criamos o grupo com GID 89, enquanto no primeiro exemplo o grupo foi criado
de forma automática. No caso da forma automática o grupo é criado utilizando a regra que está
no arquivo /etc/login.defs

GID_MIN 100
GID_MAX 60000

Ou seja, ele irá criar o grupo com um GID mínimo de 100 e máximo de 60000, porém ele
segue uma contagem, se o ultimo grupo criado foi o 110, o próximo será o 111 e assim por
diante.

2.2 Criando Usuários

Existem dois comandos que podem ser utilizados para criação de usuários, sendo que eles
estão mostrados abaixo.

 Comando useradd
 Comando adduser

Os dois fazem basicamente a mesma coisa, porém o adduser utiliza um dialogo enquanto o
useradd precisa que os dados sejam informados na linha de comando, mostraremos a seguir o
funcionamento de ambos os comandos.

2.2.1 Comando useradd


O useradd é um utilitário de baixo nível pois depende de parâmetros informados na linha de
comando. Normalmente recomenda-se a utilização do adduser, mas vamos ver aqui como
deveria acontecer este processo do useradd. Veja um exemplo abaixo e acompanhe a
explicação.

$ useradd –m –s /bin/bash –g MEU_GRUPO –G vídeo,lp,audio –c “Usuario Teste” –d


/home/teste teste

Apenas para ter uma explicação básica dos parâmetros informados vejamos a lista abaixo:

-m = criar diretório home


-s = shell utilizado pelo usuário
-g = grupo principal
-G = grupos secundários
-c = Comentário exibido no arquivo /etc/passwd
-d = especificação de qual o diretório home do usuário

Apostila/eBook do Curso Linux Essentials Página 109


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Após criar o usuário, conforme mostrado ao lado, se você digitar o comando id teste você
verá todos os grupos que o mesmo faz parte.

Depois de criado o usuário é necessáiro definir uma senha para o mesmo, para isso é
necessário utilizarmos o comando passwd:

$ passwd teste

Após digitar este comando você será solicitado para digitar a senha e a confirmação da senha.

As senhas ficam em um arquivo chamado /etc/shadow, este arquivo traz várias informações
referente as senhas inclusive a quantidade de dias desde a ultima alteração de senha e outras
informações. Você pode verificar a definição exata dos campos acessando o man shadow.

2.2.2 Comando adduser


O comando adduser permite também que você utilize as opções em linha de comando, porém
se você digitar apenas o comando com o nome de usuário ele irá solicitar todas as informações
necessárias. Acompanhe o exemplo a seguir.

dltec@dltec:~$ sudo adduser aluno


[sudo] password for dltec:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "pt_BR.UTF-8",
LC_ADDRESS = "pt_BR.UTF-8",
LC_MONETARY = "pt_BR.UTF-8",
LC_NUMERIC = "pt_BR.UTF-8",
LC_TELEPHONE = "pt_BR.UTF-8",
LC_IDENTIFICATION = "pt_BR.UTF-8",
LC_MEASUREMENT = "pt_BR.UTF-8",
LC_TIME = "pt_BR.UTF-8",
LC_NAME = "pt_BR.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Adding user `aluno' ...
Adding new group `aluno' (1002) ...
Adding new user `aluno' (1002) with group `aluno' ...
Creating home directory `/home/aluno' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for aluno
Enter the new value, or press ENTER for the default
Full Name []: Aluno Linux Essentials
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
dltec@dltec:~$

Veja que foi digitado apenas adduser aluno e então ele solicitou a senha e outras
informações.

Apostila/eBook do Curso Linux Essentials Página 110


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Importante:

Vamos ver agora como ficaria o mesmo comando mas informando alguns parâmetros via
linha de comando.

$ adduser --home /home/aluno02 --shell /bin/bash --gecos "Aluno de Linux


Essentials" aluno02

Com este comando ele irá já lhe solicitar a senha para o usuário.

2.3 Removendo Usuários e Grupos

Remoção de Usuários

A remoção de usuários é bastante simples, apenas é importante pensar se queremos ou não


remover o diretório do usuário. O comando userdel e deluser por padrão não fazem a
remoção do diretório do usuário.

Acompanhe no abaixo a forma de utilização dos dois comandos.

Removendo com userdel:


Remoção simples

$ userdel aluno02

Remoção do usuário e do diretório do usuário

$ userdel –r aluno02

Removendo com deluser


A remoção com deluser também não remove o diretório home do usuário, para isso é
necessário passar os parâmetros . O comando também permite a utilização de um parâmetro –
backup. Veja um exemplo abaixo:

$ deluser –remove-all-files –backup aluno

O comando –backup irá produzir um arquivo de nome aluno.tar.gz no diretório de onde você
executou o comando, obviamente o nome do arquivo vai variar de acordo com o nome do
usuário que você está removendo.

Já o comando –remove-all-files irá remover todos os arquivos do sistema ao qual o usuário


removido é proprietário, se você quer remover apenas o home então altere para –remove-
home

Removendo Grupos
A remoção de grupos pode ser realizada pelo comando groupdel e delgroup.

O comando groupdel não tem muito o que falar a respeito, a sintaxe dele é:

$ groupdel GRUPO

e ele irá remover o grupo.

Apostila/eBook do Curso Linux Essentials Página 111


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Já o comando delgroup permite que você utilize o parâmetro –only-if-empty que irá
proceder com a remoção apenas se o grupo não estiver sendo utilizado por nenhum usuário.

2.4 Adicionando e Removendo Grupos de um Usuário

A manipulação de grupos para o usuário é uma tarefa importante e muito comum em um


ambiente operacional com sistema Linux.

Basicamente podemos utilizar duas formas para manipularmos os grupos de um usuário. As


duas formas estão citadas abaixo e a seguir veremos os detalhes da utilização de cada uma
delas.

Manipulação de grupos:

 diretamente no arquivo /etc/group


 comando usermod

2.4.1 Adicionando Grupos com usermod

O comando usermod é na verdade um comando para manipulação de usuários já existentes.


Este comando permite que você faça alterações nos grupos e em outros parâmetros,
porém vamos tratar apenas os grupos aqui, se desejar basta consultar o man usermod para
saber os outros parâmetros.

Acompanhe a seguir a utilização do comando.

$ usermod –G grupo01,grupo02,grupo03 teste

O comando acima irá adicionar como grupos suplementares os grupos


grupo01,grupo02,grupo03 para o usuário teste.

Após realizara esse comando se você consultar os grupos do usuário com o comando id teste
você receberá a seguinte saída.

uid=1001(teste)
gid=1001(teste) grupos=1001(teste),1004(grupo01),1005(grupo02),1006(grupo03)

É importante saber que se depois de executar este comando você digitar o comando usermod
–G grupo04 teste ele irá remover os demais grupos e manter apenas o grupo04.

Para evitar isso é necessário quando utilizando o parâmetro –G utilizar também o parâmetro –
a. Dessa forma a maneira correta de adicionarmos o grupo04 para o usuário teste seria
conforme mostrado abaixo.

$ usermod –a –G grupo04 teste

Agora ao listar os grupos do usuário teste vemos:

uid=1001(teste)
gid=1001(teste)
grupos=1001(teste),1004(grupo01),1006(grupo03),1007(grupo02),1008(grupo04)

Apostila/eBook do Curso Linux Essentials Página 112


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Removendo Acesso ao Grupo com usermod


A remoção do grupo com o usermod é realizada da mesma forma que a inserção, porém você
precisará especificar todos os grupos que o usuário faz parte novamente.

Por exemplo, para remover apenas o grupo02 do usuário teste você poderia executar o
comando a seguir (considerando que ele esta com todos os grupos de 01 até 04)

$ usermod –G grupo01,grupo03,grupo04 teste

Desta forma o usuário ficará sem permissão aos dados do grupo02.

2.4.2 Manipulando Grupos Diretamente no Arquivo /etc/group


Também é possível realizar a manipulação diretamente através do arquivo /etc/group.
Tenha em mente que toda a manipulação realizada através dos comandos usermod , groupadd,
groupdel refletem diretamente neste arquivo. A sintaxe do arquivo é:

nome_do_grupo:senha:GID:lista_de_usuários

Normalmente não é utilizado senha para o grupo, mas é possível. Como exemplo, a seguir as
linhas as quais o usuário teste se encontra em nosso arquivo.

teste:x:1001:
grupo01:x:1004:teste
grupo03:x:1006:teste
grupo02:x:1007:teste
grupo04:x:1008:teste

Veja só, o primeiro grupo é o próprio grupo base do usuário, o grupo mencionado no arquivo
/etc/passwd. Sequencialmente temos os demais grupos que criamos, e em todos, temos o
usuário teste no ultimo campo.

Se quiser adicionar ou remover um usuário basta acrescentar uma “,”(virgula) e o nome,


ou então apenas remover o nome do usuário do grupo.

Veja abaixo um exemplo de grupo com vários usuários.

audio:x:29:mike,teste2,teste3

O grupo áudio possui como membros os usuários mike,teste2,teste3, se quiser remover o


usuário teste3 basta remove-lo da linha e ele estará sem acesso ao mesmo.

Apostila/eBook do Curso Linux Essentials Página 113


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3 Manipulando Permissões e Propriedades de Arquivo


Peso: 2
Descrição: Compreender sobre a manipulação de permissões e configurações de propriedades
de arquivos.

Tópicos Importantes:

Propriedade e permissões de arquivos e diretórios

Veja abaixo uma lista parcial com os arquivos, termos e utilitários mais utilizados:

ls -l
chmod, chown
chgrp

Apostila/eBook do Curso Linux Essentials Página 114


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3.1 Verificando as Permissões e Propriedades de um Arquivo

Apenas para facilitar o entendimento quando falamos em propriedade falamos em dono, ou


seja, quem é o dono de um determinado arquivo ou diretório.

No Linux temos três permissões básicas que são dono, grupo e outros, todas as permissões
básicas são tratadas por estes três “indivíduos”.

Você pode facilmente verificar as propriedades de um arquivo ou diretório utilizando o


comando ls –l, veja um exemplo a seguir.

dltec@dltec:~$ ls -l
total 88
drwxr-xr-x 2 dltec dltec 4096 Jul 23 12:48 Desktop
drwxr-xr-x 2 dltec dltec 4096 Jul 23 12:48 Documents
drwxr-xr-x 2 dltec dltec 4096 Sep 3 22:47 Downloads
drwxr-xr-x 2 dltec dltec 4096 Jul 23 12:48 Music
drwxr-xr-x 2 dltec dltec 4096 Jul 23 12:48 Pictures
drwxr-xr-x 2 dltec dltec 4096 Jul 23 12:48 Public
drwxr-xr-x 2 dltec dltec 4096 Jul 23 12:48 Templates
drwxr-xr-x 2 dltec dltec 4096 Jul 23 12:48 Videos
drwxr-xr-x 2 root root 4096 Sep 13 13:13 bin
drwxr-xr-x 2 root root 4096 Sep 17 12:07 essentials
-rw-r--r-- 1 dltec dltec 8445 Jul 23 12:35 examples.desktop
drwxr-xr-x 3 root root 4096 Sep 16 15:47 lpi102
-rw-rw-r-- 1 dltec dltec 29500 Sep 3 22:36 php.versoes
dltec@dltec:~$

Perceba que temos os diretórios dos usuários, no primeiro campo temos em todos o conteúdo
drwxr-xr-x. Vamos entender primeiro o que significam estes parâmetros.

d = diretório
rwx = read (leitura), write (escrita), execution (execução ) (para o dono)
r-x = read, execution (para o grupo)
r-x = read, execution (para outros usuários)
Basicamente isso quer dizer que o dono pode tudo, o grupo e os outros podem acessar o
diretório, mas não podem gravar no diretório. Continuando com a saída do comando ainda
temos:

O segundo campo com número 2 simboliza a quantidade de diretórios dentro de cada


diretório.
O terceiro campo representa o dono do arquivo ou diretório
O quarto campo representa o grupo que possui acesso ao arquivo ou diretório
O quinto campo é o tamanho
O sexto campo é a data de modificação do mesmo
O ultimo campo é o nome do arquivo ou diretório

Com estas informações agora você sabe tudo a respeito do conteúdo.

Apostila/eBook do Curso Linux Essentials Página 115


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3.2 Alterando o Grupo de um Arquivo ou Diretório

A alteração do grupo pode ser feita utilizando o comando chgrp ou chown, o nome dos
comandos como em outros casos é bem sugestivo.

 Chgrp = change group (trocar grupo)


 Chown = change owner (trocar dono)

Acompanhe na sequência a explicação de cada um.

O Comando chgrp

O comando chgrp possui uma string básica (chgrp opções grupo [pasta|arquivo]).

A ideia é basicamente conforme mostrado abaixo.

$ chgrp mike teste

Desta forma definimos que o diretório teste é permitido ao grupo mike, porém vamos rever
a permissão do mesmo:

drwxr-xr-x 2 teste mike 4096 Mar 17 20:59 teste/

Veja que a permissão para o grupo é r-x e isso permite ao grupo entrar no diretório mas não
permite escrever nada no diretório.

Atente que quando falamos escrever falamos em editar arquivos, criar arquivos, remover
arquivos ou diretórios, mais a frente veremos a utilização do comando chmod que resolve esta
questão.

O Comando chown
O comando chown tem como função primária alterar o dono de um diretório ou arquivo,
também podendo realizar a troca do grupo.

Vamos alterar o nosso diretório teste para que ele pertença ao usuário mike. Acompanhe a
seguir.

$ chown mike teste

Digamos que queiramos altera de uma única vez o dono e o grupo, então utilizamos o
comando:

$ chown mike:mike teste

Agora nossa permissão é a seguinte.

drwxr-xr-x 2 mike mike 4096 Mar 17 20:59 teste/

Perceba que desta forma ainda temos a questão de que o grupo mike não tem permissão de
escrita no diretório.

Apostila/eBook do Curso Linux Essentials Página 116


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3.2.1 O Comando chmod


O chmod é o comando responsável por realizar as trocas de permissões de acesso.

Vamos tratar o chmod de duas formas aqui, primeiro em forma literal e depois numérica.

Permissões Literais (simbólicas)


A ideia aqui já foi apresentada a você quando falamos anteriormente sobre os parâmetros
rwx para o usuário, grupo e outros.

Lembrando que a primeira sequência é referente ao dono, a segunda referente ao grupo e a


terceira referente aos demais usuários.

Precisamos lembrar de alguns detalhes

 Permissões mínimas para diretórios: r-x


 Permissões mínimas para arquivos: r— (ou rw-)

Um arquivo precisa ao menos ter permissão de leitura, o correto seria ter também permissão
de escrita, pelo menos para o dono.

Os diretórios precisam ter a permissão de leitura e execução, sem a permissão de execução


não é possível que o usuário entre no diretório.

Se queremos que o dono e o grupo tenham permissão no diretório teste então devemos
aplicar as seguintes permissões, conforme mostrado abaixo.

$ chmod g+rwx teste

Agora a permissão de nosso diretório ficou:

drwxrwxr-x 2 mike mike 4096 Mar 17 20:59 teste/

Como você pode ver os demais usuários possuem permissão para entrar em nosso diretório.
Vamos então remover esta permissão:

$ chmod o-r-x teste

Agora temos a seguinte permissão.

drwxrwx--- 2 mike mike 4096 Mar 17 20:59 teste/

Vamos entender o último comando executado para não termos confusão.

chmod o-r-x
| |--- permissões a serem removidas (r-x)
| |----- símbolo de subtração, remoção
|------- permissão para outros

ou seja, subtraímos as permissões r-x do parâmetro outros.

Permissões Numéricas
Antes de fazermos exemplos precisamos entender bem o funcionamento deste modelo de
permissões, mesmo porque ele é o comumente mais utilizado.

Apostila/eBook do Curso Linux Essentials Página 117


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Por exemplo, para dar as permissões que demos na pasta teste poderíamos executar: chmod
770 teste e o resultado seria o mesmo, mas antes precisamos entender o que significa este
770. Acompanhe a explicação abaixo.

Cada permissão corresponde a um octeto derivado da soma dos números 1,2,4 e qualquer
digito não utilizado é entendido como 0.

A ideia é :

 (4) = leitura
 (2) = escrita
 (1) = execução

Desta forma é, se eu quero ter permissão de leitura e escrita então (4+2)=6, então o
parâmetro que usarei é 6.

Por exemplo, digamos que fossemos dar um arquivo a permissão chmod 600 teste.txt, neste
caso o arquivo teste.txt terá permissão rw-------.

Se eu quero dar ao grupo a mesma permissão então o chmod será 660 e então nossa
permissão será rw-rw---- .

Podemos dar permissão também para os demais usuários com um chmod 666 teste.txt,
ficando nossa permissão rw-rw-rw-. Não é tão difícil, certo?

Informação adcional:

Permissões para diretórios:

Vamos então ver a permissão para diretório. Falamos anteriormente que um diretório
precisa ter permissão de leitura e execução, realizando a soma dos números temos
(4+1)=5.

No entanto, queremos dar permissão completa para o dono, então seria (4+2+1)=7.
Nesse caso o nosso chmod ficaria assim: chmod 750 teste, ficando nossa permissão rwx-
rw----

Apostila/eBook do Curso Linux Essentials Página 118


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3.2.2 SUID, SGID e Stick Bit


Além das permissões usuais para arquivos e diretórios (read, write e execution) temos outras
permissões especiais que podemos encontrar. Nesse tópico vamos ver brevemente sobre esses
outros atributos especiais:

 Set-user-id (SUID)
 Set-group-id (SGID)
 Sticky Bit

3.2.2.1 SUID (SET USER ID)

Via de regra, quando um usuário executa um arquivo, o processo resultante dessa execução
possui a mesma permissão do usuário que executou o arquivo. Quando o SUID é aplicado em
um arquivo executável, esse arquivo será executado com o ID do dono desse arquivo e não
do usuário que o executou.

Para aplicarmos o SUID em um arquivo utilizamos a sintaxe especial "u+s" no comando


chmod ou adicionando o prefixo "4" no modo numérico. Veja um exemplo abaixo.

$ chmod u+s meuarquivo


ou

$ chmod 4764

Para verificarmos as permissões,

$ ls –la meuarquivo
-rwsrw-r-- 1 aluno aluno 0 Sep 01 15:56 meuarquivo

Reparem que apareceu um "s" no campo relativo ao usuário (dono) do meuarquivo. Isso faz
com que quando o "meuarquivo" for executado por algum outro usuário ele será executado com
as permissões do seu dono, ou seja, com as permissões do usuário aluno.

Obs: se o SUID for aplicado em um arquivo que não tenha permissão de execução, em vez
de s (minúsculo) aparecerá um S (maiúsculo).

Um exemplo prático do uso desta permissão:

Digamos que os usuários de um determinado sistema devam ser responsáveis por manter seu
firewall rodando, ou seja, iniciar, parar, reiniciar o serviço. Mas, por questões de segurança o
administrador do sistema não queira passar a senha de root para os usuários.

A solução para essa questão é aplicar um SUID nesse firewall. Dessa forma, os usuários
poderão executar o programa com as mesmas permissões do root e sem a necissadade de
passarmos a senha de root para eles.

Apostila/eBook do Curso Linux Essentials Página 119


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3.2.2.2 SGID (SET GROUP ID)

O SGID é bem similar ao SUID, sua finalidade é fazer com que, quando um arquivo/diretório
for criado, herde a permissão do grupo do diretório. Esta é uma permissão que sempre se
encontrará no campo groups (g) e é representada pela letra "s".

Por exemplo, se queremos que todos arquivos e diretórios que forem criados dentro de
/home/aluno/meudir herdem a permissão do diretório meudir, basta aplicarmos o SGID nesse
diretório.

Para aplicarmos o SGID em um arquivo utilizamos a sintaxe especial "g+s" no comando


chmod ou adicionando o prefixo "2" no modo numérico. Veja um exemplo a seguir.

$ ls -ld meudir
drwxrwxr-x 2 aluno aluno 4096 Set 8 22:55 meudir

$ chmod g+s meudir

ou

$ chmod 2775 meudir

$ ls -ld meudir
drwxrwsr-x 2 aluno aluno 4096 Set 8 22:55 meudir

Para retirarmos o SGID basta utilizarmos a sintaxe g-s,

$ chmod g-s meudir

$ ls -ld meudir
drwxrwxr-x 2 aluno aluno 4096 Set 8 22:55 meudir

Obs: se o SGID for aplicado em um diretório que não tenha permissão de execução
(permissão que permite entrar nesse diretório), em vez de s (minúsculo) aparecerá um S
(maiúsculo).

Apostila/eBook do Curso Linux Essentials Página 120


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

3.2.2.3 STICKY BIT

O Bitsticky é uma permissão que chamamos de pegajosa, isso quer dizer que quando nós
damos esta permissão a um arquivo/diretório, esse arquivo ou os arquivos dentro do diretório
só poderão ser movidos ou removidos pelo dono do arquivo/diretório ou pelo root.

Mesmo se o usuário tiver permissões de escrita não irá conseguir apagá-lo, só alterá-lo. Essa
permissão é representada pela letra (t) e sempre se encontrará no bloco outros (o).

Para aplicarmos o sticky bit utilizamos a sintaxe especial "o+t" no comando chmod ou
adicionando o prefixo "1" no modo numérico. Veja um exemplo a seguir.

$ ls –la aluno_linux.sh
-rwxrwxr-x 1 aluno aluno 0 Sep 01 16:08 aluno_linux.sh

$ chmod o+t aluno_linux.sh

ou

$ chmod 1775

$ ls –la aluno_linux.sh
-rwxrwxr-t 1 aluno aluno 0 Sep 01 16:08 aluno_linux.sh

Para retirarmos o sticky bit basta utilizarmos a sintaxe o-t,

$ chmod o-t aluno_linux.sh

$ ls -l aluno_linux.sh
-rwxrwxr-x 1 aluno aluno 0 Set 8 23:28 aluno_linux.sh

se o sticky bit for aplicado em um arquivo/diretório que não tenha permissão de execução, em
vez de t (minúsculo) aparecerá um T (maiúsculo).

Obs: se o sticky bit for aplicado em um arquivo/diretório que não tenha permissão de
execução, em vez de t (minúsculo) aparecerá um T (maiúsculo).

Apostila/eBook do Curso Linux Essentials Página 121


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

4 Diretórios Especiais e Arquivos


Peso: 1
Descrição: Entender sobre os arquivos e diretórios especiais no Linux, incluindo suas
permissões.

Tópicos Importantes:

Arquivos de sistema e bibliotecas


Links simbólicos

Veja abaixo uma lista parcial com os arquivos, termos e utilitários mais utilizados:

/etc, /var
/tmp, /var/tmp and Sticky Bit
ls -d
ln -s
Hard links
Setuid/Setgid

Apostila/eBook do Curso Linux Essentials Página 122


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

4.1 Arquivos de Sistemas e Bibliotecas

Nos sistemas Linux nós temos muitos arquivos importantes referentes a configurações de
sistema. Muita coisa você já viu no decorrer do curso, mas vamos enfatiza-los mais uma vez
para que você possa entender adequadamente.

Arquivos do Sistema
Os arquivos de configuração do sistema e dos aplicativos em geral ficam no diretório /etc.
Este diretório é onde normalmente você vai trabalhar as configurações, vamos dar alguns
exemplos:

Configuração do vsftpd: /etc/vsftpd.conf


Configuração do apache: /etc/apache2/apache2.conf
Configuração do postfix: /etc/postfix/main.cf
Configuração do mysql: /etc/mysql/my.cnf
Configurações de inicialização: /etc/inittab
Scripts suplementares: /etc/rcX.d/

Estes são apenas alguns exemplos para ilustrar onde as configurações costumam ficar
armazenadas, como você pode ver, tudo fica no /etc e aí em algum diretório referente ao tipo
de configuração.

Bibliotecas
Existem diretórios específicos onde as bibliotecas são armazenadas, mas existem duas
opções básicas, sendo elas uma do sistema operacional em si e outra para os aplicativos.

As bibliotecas do sistema ficam no diretório /lib e as dos aplicativos ficam em /usr/lib.

No /lib, por exemplo, você tem a biblioteca da pam (módulo de autenticação), tem a biblioteca
do devmapper que é o módulo de LVM do Linux e muitos outros.

No diretório /usr/lib temos as bibliotecas do mysql, ldap, X11 e muitos outros, basicamente
tudo que não é do sistema operacional estará lá.

Outros Diretórios Importantes


O Diretório /var
O diretório /var é utilizado para várias finalidades. Temos dentro do /var o diretório log onde
são armazenados os logs de sistema e aplicativos (/var/log), temos o diretório spool que é
utilizado para filas de mensagens e outros conteúdos que tendem a permanecer no diretório
para execução. Esses são apenas alguns exemplos, pois existem também outras finalidades
dentro deste.

O Diretório /tmp
O diretório /tmp é como o nome sugere um diretório temporário. Ele é utilizado por algumas
aplicações para armazenar alguns arquivos e depois os mesmos são removidos.

Alguns Linux (como o Debian) removem todo o conteúdo do diretório quando o sistema está
iniciando, então não é recomendado usar este diretório para nada que você queira consultar
mais tarde.

Apostila/eBook do Curso Linux Essentials Página 123


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

4.2 Links Simbólicos

Um link simbólico é como se fosse um atalho, é um arquivo que na verdade aponta para
outro arquivo, não aparecendo como um outro arquivo mas sim como um arquivo com o
caminho para o arquivo original.

Para exemplificar vamos analisar o caso abaixo.

Criamos um link simbólico chamado teste, ao digitarmos o ls vemos o arquivo da seguinte


forma:

lrwxrwxrwx 1 root root 23 Jul 26 01:08 teste -> /var/cache/apt/archives/

Você pode notar que antes das permissões temos um l. Este l simboliza um link, depois
temos o nome do arquivo (teste) seguido por um seta (apontamento) para um determinado
diretório, no nosso caso /var/cache/apt/archive.

Isso significa que seu eu digitar cd teste vou entrar na verdade em /var/cache/apt/archive
(poderia também ser um arquivo ao invés de um diretório).

Para a criação de um link simbólico a sintaxe do comando é basicamente ln –s caminho


nome_do_link, no nosso exemplo utilizamos o comando:

ln -s /var/cache/apt/archives teste

Apostila/eBook do Curso Linux Essentials Página 124


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Conclusão

Parabéns, se você chegou até aqui é porque concluiu seus estudos!

Tenha certeza de que compreendeu todos os conceitos aqui mostrados. Dê uma repassada na
matéria e tome notas dos pontos que não entendeu muito bem.

Equipe DlteC do Brasil

Apostila/eBook do Curso Linux Essentials Página 125


tel (41) 3045.7810 - info@dltec.com.br - www.dltec.com.br

Sobre o E-book/Apostila

O conteúdo desse documento é uma adaptação


da matéria online de leitura do curso.

O presente material traz conteúdo teórico do


curso online, porém temos que deixar claro que
não é um curso e sim uma adaptação do
nosso material online para e-book/apostila.
Portanto recursos como exercícios, simulados,
tutoria (tira dúvidas com professores) e vídeo
aulas não fazem parte desse e-book, pois são
exclusivos para alunos devidamente matriculados
em nosso site oficial.

Para maiores informações sobre nossos treinamento visite o site:

>>> http://www.dltec.com.br <<<

Apostila/eBook do Curso Linux Essentials Página 126

Vous aimerez peut-être aussi