Escolar Documentos
Profissional Documentos
Cultura Documentos
COD.: 1820_3
Linux LPI - Administração
Créditos
Todos os direitos autorais reservados. Este manual não pode ser copiado, fotocopiado, reproduzido,
traduzido ou convertido em qualquer forma eletrônica, ou legível por qualquer meio, em parte ou
no todo, sem a aprovação prévia, por escrito, da Monte Everest Participações e Empreendimentos
Ltda., estando o contrafator sujeito a responder por crime de Violação de Direito Autoral, conforme
o art.184 do Código Penal Brasileiro, além de responder por Perdas e Danos. Todos os logotipos
e marcas utilizados neste material pertencem às suas respectivas empresas.
"As marcas registradas e os nomes comerciais citados nesta obra, mesmo que não sejam assim identificados, pertencem
aos seus respectivos proprietários nos termos das leis, convenções e diretrizes nacionais e internacionais."
Coordenação Editorial
Henrique Thomaz Bruscagin
Autoria
Robson Aparecido Ferreira
Diagramação
Carla Cristina de Souza
Edição nº 1 | 1820_3
Fevereiro/ 2017
4
Sumário
5
Linux LPI - Administração
6
Sumário
7
Linux LPI - Administração
8
Sumário
9
Linux LPI - Administração
10
Sumário
11
Linux LPI - Administração
12
Sumário
13
Linux LPI - Administração
14
Sumário
15
1 Conceitos
básicos
ÃÃ Introdução ao GNU/Linux;
ÃÃ Instalação do GNU/Linux;
ÃÃ Executando os primeiros comandos.
Linux LPI - Administração
1.1. Introdução ao GNU/Linux
Um sistema operacional é formado por um conjunto de funções que, trabalhando em
perfeita harmonia, manipulam o hardware e, através de uma interface de comunicação,
oferecem todos os recursos úteis para o seu gerenciamento.
O projeto GNU surgiu em meados de 1983. Seu idealizador, Richard Stallman, tinha o
objetivo de criar um sistema operacional que fosse completamente livre e seguisse os
padrões do Unix que, na época, cobrava licenças de alto custo. GNU é um acrônimo
recursivo para a frase GNU Is Not Unix (GNU não é Unix), fazendo uma grande
oposição ao formato proprietário que a maioria dos sistemas Unix seguia.
O sistema GNU estava sendo desenvolvido por uma comunidade imensa, que seguia
os passos e as ideologias de Richard Stallman. Porém, com o tempo, o projeto foi
ganhando tal consistência e volume que necessitou urgentemente de um órgão para
gerenciar todo o seu desenvolvimento. Nasceu, então, a Free Software Foundation
(FSF). A FSF é uma organização sem fins lucrativos, que se mantém com a doação
de empresas que apoiam a mesma causa: defender o software livre. Hoje, o foco
principal da FSF é manter a GPL (General Public License, licença utilizada para defender
juridicamente um software livre), assim como disseminar a ideologia de software livre
pelo mundo.
A GPL, que é uma importante ferramenta jurídica criada pela Free Software Foundation,
tinha inicialmente, como principal função, defender a liberdade dos softwares
desenvolvidos pelo projeto GNU. Posteriormente, foi utilizada e empregada por
centenas de outros softwares envolvidos em projetos de terceiros e particulares por
todo o mundo.
A Licença Pública Geral segue, desde a sua primeira versão, as quatro liberdades
citadas anteriormente, sendo também sua intenção poder defender o software livre de
forma prorrogada. O documento oficial da GPL, válido oficialmente como ferramenta
de proteção ao software livre, existe somente em inglês.
18
Conceitos básicos 1
Um dos grandes motivos do sistema operacional GNU não ter sido lançado foi pelo
formato do desenvolvimento do seu kernel, o GNU/Hurd, que seguiu um modelo
complexo, não se adequando ou obtendo uma estabilidade segura para assumir a
posição de um kernel maduro e confiável.
Eis que, no ano de 1991, o finlandês Linus Torvalds criou um kernel denominado
Linux, o qual pôde ser unido aos programas GNU. Dessa junção, nasceu o sistema
GNU/Linux.
Costumamos nos referir aos sistemas GNU/Linux apenas como sistemas Linux,
denominação que não faz justiça aos desenvolvedores de softwares e ferramentas
GNU, afinal, estamos nos referindo apenas ao nome do kernel criado por Linus.
1.1.1. Software livre
Quando nos referimos ao software livre, estamos nos referindo à sua liberdade de
estudar, executar, alterar, melhorar, copiar e até mesmo distribuir um software
livre.
Essa ideia toda foi minuciosamente detalhada em quatro tipos de liberdades, conforme
veremos a seguir:
19
Linux LPI - Administração
1.1.2. Origem do Linux
Primeiramente, é importante entender que, tecnicamente falando, o Linux não é um
sistema operacional, mas sim um kernel, ou o centro de execução do seu sistema
operacional. Cada sistema operacional, independentemente da plataforma, possui o
seu próprio kernel, com suas características peculiares.
Foi a partir dessa ideia que Linus Torvalds começou o desenvolvimento do seu projeto,
conseguindo, na versão 0.01, melhorar o kernel do Minix, acrescentando suporte a
recursos que estavam indisponíveis na versão anterior. O nome Linux é uma junção
de Linus com Unix, e foi escolhido pela nova comunidade que estava surgindo, devido
ao convite público de Linus Torvalds ao anunciar seu projeto na Usenet (internet da
época), pedindo ajuda de colaboradores. Inicialmente, o desenvolvimento do kernel
Linux foi simplesmente um passatempo para Linus Torvalds.
A junção das milhares de ferramentas desenvolvidas pelo projeto GNU com o kernel
Linux forma todas as camadas de preenchimento para se ter um sistema operacional
completo.
20
Conceitos básicos 1
1.1.3. Distribuições GNU/Linux
Com a junção das ferramentas GNU e o kernel Linux, temos tecnicamente um sistema
operacional GNU/Linux. Em suas primeiras versões, instalar um sistema GNU/Linux
era extremamente complexo, pois era necessário praticamente instalar e compilar
manualmente quase todas as ferramentas, incluindo o próprio kernel. Ou seja, o
GNU/Linux era geralmente utilizado por usuários avançados.
Hoje, existe uma quantidade imensa de distribuições disponíveis para instalação, com
praticamente todos os níveis de dificuldade e focos específicos.
Em 1993, Patrick Volkerding reuniu o kernel Linux e diversos aplicativos, o que originou
a distribuição denominada Slackware, tida como a primeira a ser disponibilizada em
CD.
21
Linux LPI - Administração
Já as distribuições corporativas, como Ubuntu, Suse, Red Hat e Oracle Linux, são
administradas por empresas que cobram pelo suporte prestado. É importante notar
que, embora um custo esteja envolvido, isso não contradiz os princípios da licença
GPL, pois a liberdade de software é mantida. Qualquer usuário tem acesso ao código-
fonte das distribuições corporativas, de forma que o que é vendido não é o produto,
mas uma prestação de serviço de assistência.
As distribuições também podem ser categorizadas de acordo com a maneira como são
desenvolvidas. Assim, são classificadas como from scratch (do zero) ou provenientes
(baseadas).
A diferença básica entre os dois tipos é que as distribuições from scratch não derivam
de nenhuma já existente, sendo todas as suas características desenvolvidas específica
e exclusivamente para elas, como é o caso do Debian, Red Hat, Slackware e Gentoo,
enquanto as provenientes baseiam-se em alguma distribuição anterior e fazem ajustes
visando a um objetivo funcional definido. Exemplos desse tipo são os mencionados
Ubuntu, Fedora, CentOS, entre outras.
No momento de gerenciar o sistema, é importante saber lidar com todos esses tipos
de arquivos e tomar as devidas precauções na hora de manipulá-los.
22
Conceitos básicos 1
1.1.6. Aspecto case-sensitive
Uma qualidade em sistemas Unix-like é a presença da característica case-sensitive, em
que letras maiúsculas serão completamente diferentes de letras minúsculas, e vice-
versa. No início, quando não se tem prática e costume com essa característica, é um
tanto desconfortável, mas depois, com o domínio, ela é útil e prática. A funcionalidade
case-sensitive estará presente no sistema através de nomes de arquivos, diretórios,
comandos etc. Por exemplo, o comando LS é completamente diferente de ls.
1.1.9. Divisão em camadas
O sistema é todo dividido e trabalhado em camadas, não sendo necessária a execução
obrigatória de um ambiente gráfico, por exemplo. Teremos o kernel como o centro de
execução do nosso sistema, o qual controlará todo o hardware e fará a interface de
controle e gerenciamento dos usuários, aplicações e processos em execução.
23
Linux LPI - Administração
1.1.10. Superusuário (root)
O superusuário root é, por padrão, o único usuário com permissões completas
de administração e gerenciamento do sistema. Sua utilização deve ser restrita
e extremamente cautelosa, exatamente pela liberdade que o usuário root terá ao
executar qualquer tipo de tarefa, como excluir um diretório importante, por exemplo.
O login do superusuário é root e o que define esse login como superusuário não é
simplesmente o nome root, mas sim a UID (User Identification), que é o número de
identificação que cada usuário terá no sistema. O superusuário possui UID de número
0 (zero).
24
Conceitos básicos 1
Para compreender de fato o que é esse sistema, é fundamental saber do que se trata
cada uma de suas camadas. Veja:
As instruções digitadas no shell podem ser executadas por dois níveis de usuário:
superusuário (root) e usuário comum, os quais apresentam permissões diferentes. O
diretório padrão do usuário root, administrador do sistema, é o /root, enquanto os
usuários comuns usam por padrão o diretório /home. Outra diferença entre os dois
é que, antes do cursor do usuário root no shell, aparece um #, ao passo que, para os
usuários comuns, o cursor segue um $.
O shell usado no sistema operacional GNU é chamado de bash. Hoje, ele é praticamente
o padrão em sistemas Unix-like. O bash, que é o sucessor do interpretador de
comandos sh, apresenta mais funcionalidades e praticidades na hora de realizar
tarefas na linha de comandos, principalmente quando o assunto é a interpretação de
caracteres especiais.
25
Linux LPI - Administração
Uma sessão é composta por um login efetuado com sucesso por um usuário
previamente cadastrado no sistema. Esse login dará acesso direto ao interpretador de
comandos padrão determinado no sistema, que geralmente será o bash. As sessões
são iniciadas através dos terminais, que são caracterizados como terminal virtual
somente em modo texto ou pseudoterminal inicializado a partir de um ambiente
gráfico. A única diferença entre eles é a forma de acesso. A seguir, falaremos sobre
esses terminais.
Com programas como rlogin, ssh, rsh, rdesktop e telnet, podemos acessar terminais
virtuais remota ou localmente.
Um terminal virtual em modo texto é prático e rápido, pois não é necessário esperar
o ambiente gráfico carregar para iniciar uma sessão a partir dele.
*(CTRL +): Caso o terminal padrão não seja um terminal em modo texto, é preciso
utilizar também a tecla ALT.
26
Conceitos básicos 1
Teremos, então, na primeira linha, nome da distribuição, nome do kernel e versão da
distribuição. Na segunda linha, versão do kernel utilizado e arquitetura da máquina.
Na terceira linha, nome do host. No exemplo a seguir, temos CentOS Linux 7 (core):
•• Pseudoterminal
1.2. Instalação do GNU/Linux
Durante todo o curso, utilizaremos um programa de virtualização, para a instalação
do GNU/Linux e aprendizado deste. Além do programa de virtualização, você também
precisará realizar o download do arquivo de imagem .ISO da distribuição CentOS. Ela
é desenvolvida com base na distribuição corporativa Red Hat, sendo a mais utilizada
no mundo.
Saber trabalhar na distribuição CentOS faz com que, caso necessite usar alguma
distribuição corporativa no mercado de trabalho, você já esteja habituado às
particularidades que esse tipo de distribuição possui.
27
Linux LPI - Administração
1.2.1. Instalação do CentOS
A imagem .ISO poderá ser obtida através do site http://www.centos.org/. Ao acessar
o site, clique no ícone Get CentOS Now, destacado em laranja:
Você poderá escolher entre as três opções, conforme a imagem adiante. O que difere
entre elas é a quantidade de pacotes disponíveis no arquivo .ISO. Para uma instalação
mínima, realize o download da opção Minimal ISO:
28
Conceitos básicos 1
Após a preparação e iniciação da máquina virtual, a tela a seguir é apresentada:
29
Linux LPI - Administração
Clique na opção REDE & NOME DO HOST para definir o nome do computador. No
campo Nome do host, substitua o nome localhost.localdomain por srv<seunome>
e clique no botão Finalizado, localizado no canto superior esquerdo.
30
Conceitos básicos 1
Repare que ainda não foi definida a senha do usuário root e também não criamos um
usuário comum. Clique na opção SENHA RAIZ para cadastrar a senha do usuário root.
ATENÇÃO: Se você cadastrar uma senha que não satisfaça os requisitos mínimos
de segurança, uma targeta laranja será apresentada. Se, mesmo assim, você
quiser continuar com a senha informada, clique no botão Finalizado duas vezes.
1.2.2. Instalação do Debian
A imagem .ISO poderá ser obtida através do site http://www.debian.org/. Clique na
opção Imagens de CD/USB ISO, localizada na coluna Obtendo o Debian:
31
Linux LPI - Administração
32
Conceitos básicos 1
Selecione a opção Graphical Install e aguarde o carregamento da janela de seleção
do idioma.
33
Linux LPI - Administração
34
Conceitos básicos 1
Na janela do carregador de inicialização GRUB, mantenha a opção Sim e, na última
janela, selecione a opção /dev/sda (ata-VBOX...):
1.2.3. Instalação do Ubuntu
A imagem .ISO poderá ser obtida através do site http://www.ubuntu.com/. No caso
da instalação do Ubuntu, a imagem .ISO irá carregar todo o ambiente desktop, já
com os programas necessários para o uso. Esse tipo de distribuição se utiliza de uma
tecnologia chamada “Live Cd”, em que não é necessária a instalação do SO no HD
para ser operado.
35
Linux LPI - Administração
Na próxima página apresentada, selecione a opção Not now, take me to the download ›
e aguarde o download da imagem .ISO, identificada como ubuntu-16.04.1-desktop-
amd64.iso.
Assim que aparecer o menu de opção da instalação do sistema, clique no meio da tela
para assumir a máquina virtual.
36
Conceitos básicos 1
No Ubuntu, antes de realizar a instalação no disco, é possível utilizá-la, carregando
todos os arquivos necessários na memória RAM e posteriormente instalar a distribuição.
37
Linux LPI - Administração
38
Conceitos básicos 1
Na próxima tela, você tem a opção de instalar outros softwares adicionais como plug-
ins, codecs, entre outros, assim como também instalar outros softwares de terceiros.
Deixe as duas opções desmarcadas e clique no botão Continuar:
39
Linux LPI - Administração
Nessa janela, definimos a maneira pelo qual o Ubuntu será instalado. Para usuários
iniciantes, basta selecionar a primeira opção e clicar no botão Instalar agora. Com
isso, o próprio instalador se encarregará de criar as devidas partições para o uso do
Sistema Operacional.
Confirme a tela que será apresentada em seguida, selecione a sua localização e clique
no botão Continuar:
40
Conceitos básicos 1
Na janela de dispositivos de teclado, selecione Portuguese (Brazil) e clique no botão
Continuar:
Na última tela, defina o nome do usuário e a senha de sua escolha. Mantenha a opção
Pedir minha palavra-passe para iniciar a sessão:
41
Linux LPI - Administração
42
Conceitos básicos 1
1.2.4. Instalação do Linux Mint
A imagem .ISO poderá ser obtida através do site http://www.linuxmint.com/. Tanto
a tecnologia utilizada Live CD quanto a sequência de instalação são parecidas com o
processo do Ubuntu.
43
Linux LPI - Administração
Para a instalação no disco, você perceberá que existe um ícone chamado Install Linux
Mint:
44
Conceitos básicos 1
Após a autenticação do usuário, a sessão é iniciada, como mostrado a seguir:
45
Linux LPI - Administração
man <comando>
man ls
1.3.4. Histórico de comandos
Centenas de comandos podem ser armazenados pelo terminal do sistema GNU/
Linux. Esse recurso traz grande praticidade ao usuário, pois não é necessário redigitar
diversas vezes um mesmo comando.
Para manter o histórico dos comandos utilizados, basta digitarmos history na linha
de comando e teclarmos ENTER. Então, por meio das teclas direcionais para cima
e para baixo do teclado, temos acesso ao histórico. A imagem a seguir mostra a
execução do comando history:
46
Conceitos básicos 1
Tecla ou atalho Ação
DELETE Apaga o caractere à direita do cursor.
Apaga tudo o que estiver à direita do cursor, porém permite
CTRL + K
colar o conteúdo apagado com o atalho CTRL + Y.
Como o comando clear, limpa a tela e joga o cursor para
CTRL + L a primeira linha. Com o atalho SHIFT + PAGE UP, ainda é
possível visualizar o conteúdo.
CTRL + C Abre uma nova linha de comando na posição do cursor.
Busca algum caractere específico no último comando
CTRL + R
digitado.
CTRL + D Como o comando exit, sai do shell.
1.3.7. cd
O comando cd é utilizado para a movimentação entre os diretórios do sistema. Não
devemos esquecer como os diretórios são estruturados em sistemas GNU/Linux,
conforme explicado anteriormente.
cd <diretorio>
O comando cd também poderá ser utilizado com alguns caracteres que executam
funções especiais, descritos na tabela seguinte:
Caractere Função
. Link utilizado para fazer referência ao diretório atual.
.. Link utilizado para fazer referência ao diretório anterior.
Caractere que representa o diretório home do usuário que o está
~
utilizando.
Com o comando cd, volta ao último diretório acessado antes do
-
diretório atual.
47
Linux LPI - Administração
cd /
cd /tmp
Para ir para o subdiretório cache do diretório var, por exemplo, digite o seguinte:
cd /var/cache
cd ..
cd ../../
cd -
pwd
48
Conceitos básicos 1
Pontos principais
Atente para os tópicos a seguir. Eles devem ser estudados com muita atenção,
pois representam os pontos mais importantes do capítulo.
Material complementar
Sites Endereços
Projeto GNU http://www.gnu.org/
Free Software Foundation http://www.fsf.org/
General Public License http://www.gnu.org/licenses/licenses.html
Kernel Linux http://www.kernel.org/
Documentação CentOS https://www.centos.org/docs/
https://www.debian.org/doc/manuals/debian-
Documentação Debian
handbook/
https://help.ubuntu.com/lts/serverguide/
Documentação Ubuntu
serverguide.pdf
https://www.linuxmint.com/documentation/user-
Documentação Linux Mint
guide/Cinnamon/portuguese_brazil_18.0.pdf
49
Mapa mental para a fixação do aprendizado
50
1 Conceitos
básicos
Teste seus conhecimentos
Linux LPI - Administração
☐☐ a) Aberta e fechada.
☐☐ b) Livre e proprietária.
☐☐ c) Livre e corporativa.
☐☐ d) Red Hat e Debian.
☐☐ e) GNU e proprietária.
3. Qual organização sem fins lucrativos foi fundada por Richard Stallman
para eliminar restrições sobre cópia, redistribuição, estudo e modificação
de programas de computadores?
☐☐ a) GPL
☐☐ b) FSF
☐☐ c) GNU
☐☐ d) LPI
☐☐ e) Mandriva
52
Conceitos básicos 1
5. De acordo com a forma de desenvolvimento, quais são as categorias
das distribuições?
☐☐ a) reboot
☐☐ b) history
☐☐ c) man ls
☐☐ d) halt
☐☐ e) commands
☐☐ a) 1
☐☐ b) 3
☐☐ c) 6
☐☐ d) 8
☐☐ e) 10
53
Linux LPI - Administração
☐☐ a) -1
☐☐ b) 0
☐☐ c) 3
☐☐ d) 1
☐☐ e) 1001
☐☐ a) Primeiro terminal.
☐☐ b) Terceiro terminal em modo texto.
☐☐ c) Segundo terminal.
☐☐ d) Terceiro terminal em modo gráfico.
☐☐ e) Quarto terminal.
54
1 Conceitos
básicos
Mãos à obra!
Linux LPI - Administração
•• 2 GB de memória RAM;
•• 20 GB de HD;
•• Placa de rede em modo Bridge;
•• Deixar o particionamento automático;
•• Criar o usuário operador com a senha operador 123.
•• 2 GB de memória RAM;
•• 20 GB de HD;
•• Placa de rede em modo Bridge (desativada);
•• Deixar o particionamento automático;
•• Criar o usuário opera dor com a senha operador 123.
•• 3 GB de memória RAM;
•• 20 GB de HD;
•• Placa de rede em modo Bridge (ativada);
•• Deixar o particionamento automático;
•• Criar o usuário operador com a senha operador 123.
56
Conceitos básicos 1
Laboratório 4 - Realizando alguns testes
após a instalação das distribuições
Após a instalação das distribuições anteriores, realize o acesso com os usuários root
e operador. Nesse momento, a rede não precisará ser configurada.
57
2 Arquitetura do
sistema
60
Arquitetura do sistema 2
Os periféricos são listados em arquivos especiais, contidos no diretório /proc, e suas
informações podem ser consultadas através do comando lspci. A tabela a seguir
descreve as principais opções do comando lspci:
Opção Descrição
-v Exibe as informações em modo detalhado (verbose).
exibe as informações em forma de árvore, contendo todos os barramentos,
-t
pontes, conexões etc. Utilize junto com a opção -v.
-n Mostra os códigos do fornecedor e do dispositivo PCI.
Exibe mais informações, em que o endereço do dispositivo deverá ser
-s
informado.
# lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev
02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton
II]
00:01.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:0d.0 SATA controller: Intel Corporation 82801HM/HEM (ICH8M/ICH8M-E)
SATA Controller [AHCI mode] (rev 02)
...
# lspci -v
61
Linux LPI - Administração
# lspci -n
62
Arquitetura do sistema 2
A tabela a seguir descreve as principais opções do comando lsusb:
Opção Descrição
-t Exibe as conexões USB em forma de árvore.
Exibe informações mais detalhadas, como velocidade atual do
-v
dispositivo, classe etc.
-d Exibe o fabricante e o número de identificação do dispositivo.
Informações básicas são exibidas apenas digitando o comando lsusb, sem nenhum
parâmetro:
# lsusb
# lsusb -t
Informações mais detalhadas são exibidas usando a opção -v. As informações estão
divididas por descritor, como Dispositivo, Configuração, Interface, entre outros.
# lsusb -v
. . .
63
Linux LPI - Administração
Para verificar somente um dispositivo USB, o parâmetro -d seguido pelo seu ID deverá
ser informado:
# lsusb -v -d 1058:25a2
Temos também o comando usb-devices, que nada mais é que um script que tem a
função de exibir detalhes do barramento USB, juntamente com os dispositivos ligados
a ele.
# usb-devices
64
Arquitetura do sistema 2
2.1.3. Módulos
Os módulos são gerenciados automaticamente pelo kernel, e são encontrados no
diretório /lib/modules/<versão_kernel>. Há momentos em que existe a necessidade
de carregar algum módulo de forma manual, para a realização de testes ou solução
de problemas.
# lsmod
blacklist <nome_módulo>
65
Linux LPI - Administração
Opção Descrição
Remove um determinado módulo. Se ele estiver em uso, o módulo
-r
não poderá ser removido.
-v Modo verbose.
Esta opção substitui o diretório de configuração padrão (/etc/
-C
modprobe.d).
Para carregar o módulo, basta informar o comando, seguido pelo nome do módulo:
# modprobe pcspkr
# modprobe -r cdrom
No exemplo anterior, você deverá listar o módulo cdrom e verificar qual o nome do
submódulo que está sendo usado. Tendo essa informação, use o comando modprobe
seguido pelo nome do submódulo em questão.
66
Arquitetura do sistema 2
A separação dos recursos é realizada por meio de diretórios sendo:
Diretórios Descrição
Informações dos dispositivos de blocos do HD, CD, DVD,
/sys/block
entre outros.
/sys/bus Informações dos barramentos suportados pelo kernel.
Organiza os tipos de dispositivos suportados pelo sistema,
/sys/class
em subdiretórios.
/sys/module Módulos carregados na memória, pelo kernel.
Existem alguns comandos no sistema que solicitam os dados dos arquivos do diretório
/proc/, como, por exemplo, o comando lsmod: este comando informa quais são os
módulos carregados.
Arquivo Descrição
Parâmetros de inicialização que o gerenciador de boot
cmdline
repassa para o kernel.
Detalhes sobre o processador do sistema, como
cpuinfo
fabricante, velocidade etc.
Principais números (majors) para os vários tipos de
devices
dispositivos utilizados pelo kernel.
Exibe os sistemas de arquivos disponíveis e é utilizado
filesystems
pelo comando mount.
Exibe uma lista das IRQs e suas associações com os
interrupts
dispositivos correspondentes.
Exibe a relação de faixas da memória associadas aos
ioports
dispositivos do sistema.
Exibe informações do conteúdo atual da memória
kcore
RAM.
67
Linux LPI - Administração
Arquivo Descrição
meminfo Exibe as estatísticas de uso da memória.
modules Exibe os módulos carregados atualmente no sistema.
Exibe os sistemas de arquivos atualmente montados
mounts
no sistema.
pci Exibe os detalhes dos dispositivos PCI do sistema.
uptime Informa há quanto tempo o sistema está ativo.
•• /proc/interrupts:
# cat /proc/interrupts
CPU0
0: 139 IO-APIC-edge timer
1: 16 IO-APIC-edge i8042
8: 0 IO-APIC-edge rtc0
9: 0 IO-APIC-fasteoi acpi
•• /proc/ioports:
# cat /proc/ioports
0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-0060 : keyboard
0064-0064 : keyboard
0070-0071 : rtc_cmos
0070-0071 : rtc0
68
Arquitetura do sistema 2
•• /proc/cpuinfo:
# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 42
model name : Intel(R) Core(TM) i5-2435M CPU @ 2.40GHz
stepping : 7
•• /proc/partitions:
# cat /proc/partitions
11 0 1048575 sr0
8 0 31457280 sda
8 1 512000 sda1
8 2 30944256 sda2
•• /proc/cmdline:
# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.10.0-327.36.3.el7.x86_64 root=/dev/mapper/centos-root
ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet
LANG=pt_BR.UTF-8
2.1.5. UDEV
O udev substituiu o gerenciador de dispositivos devfs a partir da versão 2.6.12 do
kernel. Com o antigo devfs, todos os arquivos de dispositivo eram criados de uma vez
no diretório /dev, de maneira a gerar no diretório os dispositivos de todos os itens
de hardwares que o sistema suportasse, independentemente da existência desses
itens na máquina, ou seja, com o devfs acabavam-se criando arquivos de dispositivo
desnecessários, superpopulando o diretório /dev.
69
Linux LPI - Administração
2.1.6. SYSFS
O sistema de arquivo virtual sysfs, montado em /sys/, exporta informações
sobre dispositivos para que os utilitários de espaço do usuário possam acessar as
informações. Ele é carregado na memória RAM, no momento do boot do sistema,
fazendo com que o kernel identifique e já tenha o controle dos dispositivos. Nesse
diretório, podemos encontrar quase o mesmo conteúdo do /proc/, mas de uma forma
mais organizada.
# ls /sys/
Esse diretório está presente desde a versão 2.6 do kernel, agrupando informações
sobre os dispositivos instalados, tipo, fabricante, capacidade, endereços usados etc.
70
Arquitetura do sistema 2
# systemctl
2.1.7. D-Bus
O D-Bus (Desktop Bus) é um barramento de software distribuído que permite que os
aplicativos de desktop enviem mensagens uns aos outros e recebam mensagens do
kernel, fornecendo uma abstração adicional do acesso à informação de hardware. O
D-Bus pode ser usado para um cliente de e-mail notificar o gerenciador de janelas
de que um e-mail foi recebido, para que ele possa exibir um ícone, por exemplo. Ele
também pode ser usado pelo udev para notificar o gerenciador de janelas quando um
DVD foi inserido no sistema.
71
Linux LPI - Administração
O D-Bus permite que os processos se comuniquem uns com os outros, bem como se
registrem para serem notificados nos eventos do sistema, onde todo esse controle
ocorre através do daemon chamado dbus.service.
2.2. Sistema de boot
Podemos definir o processo de inicialização como um conjunto de tarefas executadas
para obter o sistema até o ponto em que ele pode entrar no nível de execução padrão,
onde as coisas podem se tornar complexas devido aos vários métodos de configuração,
inicialização e gerenciamento do sistema, serviços ou processos.
Esse processo de boot pode ser controlado por diversos sistemas de inicialização,
como: SystemVinit (versões antigas), SystemD (versões atuais), Upstart (utilizado
pela distribuição antigas do Ubuntu), entre outros.
1. Assim que o kernel é iniciado, aparecem algumas informações na tela. Nessa etapa,
podemos verificar em que partição do disco está o dispositivo raiz indicado para o
sistema, o sistema de arquivos identificado e o tipo de partição. Além disso, são
exibidas a imagem do kernel a ser utilizada e a imagem initrd, caso haja alguma;
72
Arquitetura do sistema 2
5. Após os itens de hardware serem identificados e a partição raiz ser montada, o
parâmetro init é acionado e dá-se início às configurações mais avançadas, assim
como aos daemons. É nessa etapa que serão montadas as demais partições, como a
partição swap;
2.2.1. SysVinit
Utilizado em distribuições mais antigas, comparadas à que temos atualmente, o
programa SysVinit usa uma série de scripts de shell, divididos em runlevels separados.
•• Cada programa usa um script de shell separado para iniciar, parar, recarregar
o programa;
RunLevel Descrição
Acionado pelo comando shutdown -h, o nível 0 suspende a
0
execução do sistema. Daemons e programas são encerrados.
Utilizado para manutenção do sistema, executa o sistema sob o
1,s,S
modo monousuário.
Este é o nível de execução padrão no Debian. Executa o sistema
2 sob o modo multiusuário. Para outras distribuições, esse runlevel
é indefinido.
3 Executa o sistema sob o modo multiusuário.
4 Não definido.
Executa o sistema sob o modo multiusuário com a utilização de
5
login gráfico.
Acionado pelo comando shutdown -r e pelas teclas CTRL + ALT +
6 DEL, este nível de execução encerra os programas e daemons para
iniciar o sistema.
73
Linux LPI - Administração
Características do link
Ação
simbólico
Iniciado com a letra K O serviço será interrompido no nível de execução
(kill) indicado pelo link.
Iniciado com a letra S O serviço será iniciado no nível de execução
(start) indicado pelo link.
id:niveis_de_execucao:acao:processo
Em que:
•• acao: Determina qual será a ação escolhida. Mais detalhes sobre este campo
serão fornecidos seguir;
74
Arquitetura do sistema 2
O exemplo a seguir exibe as informações do /etc/inittab:
Opções Descrição
Esta opção indica que assim que o processo for finalizado, ele
respawn
será reiniciado.
Esta opção indica que qualquer preenchimento do campo niveis_
boot
de_execucao será desconsiderado.
Esta opção indica que, apesar de o processo ser executado
durante a inicialização do sistema, somente após a inicialização
bootwait
ter sido concluída é que o init se direcionará à execução do
processo seguinte.
Esta opção indica que, no momento da introdução do nível de
wait execução, o processo será iniciado. No entanto, o init apenas o
iniciará após o término do processo.
Esta opção indica que o init não irá aguardar o término do
once processo para realizar a execução de alguns programas no nível
de execução.
Assim que houver uma solicitação quanto a um nível de execução
ondemand específico, o processo será executado. No entanto, não há
alterações no nível de execução.
Esta opção indica que a execução do processo ocorrerá durante
sysinit a inicialização do sistema e anteriormente a qualquer entrada
boot ou bootwait, as quais foram previamente explicadas.
75
Linux LPI - Administração
Opções Descrição
Esta opção atribui um nível de execução ao init durante a
initdefault inicialização, entretanto, o usuário poderá inserir esse nível no
console caso um padrão não tenha sido previamente especificado.
Esta opção indica que, assim que o usuário pressionar as teclas
ctrlaltdel CTRL + ALT + DEL, o init recebe um sinal, permitindo, então, a
execução do processo.
Esta opção indica que, caso haja problemas relacionados à
powerwait energia, outro processo enviará um sinal ao init e será executado,
fazendo com que o init aguarde o seu término para retornar.
Esta opção também indica que o processo que envia sinais ao init
quanto aos problemas de energia será executado. Entretanto,
powerfail
diferentemente da opção powerwait, o init não aguardará o
término do processo.
Um pouco diferente das opções anteriores, a opção em questão
indica que, quando o init recebe sinal quanto aos problemas de
powerokwait energia, o processo que envia o sinal apenas será executado
quando houver o arquivo /etc/powerstatus contendo a string
OK. Nesse caso, o init aguardará o término do processo.
•• Caso o nível de execução do sistema ainda não tenha sido alterado, é exibida a
letra N.
init 1
Ou:
telinit 1
76
Arquitetura do sistema 2
2.2.2. SystemD
O SystemD é um sistema de inicialização para iniciar o espaço do usuário e gerenciar
todos os processos posteriormente, em vez dos sistemas de inicialização SystemVinit
ou BSD (Berkeley Software), porém é compatível com eles.
Em vez de usar scripts shell e runlevels, o método SystemD usa unidades e alvos.
Uma unidade SystemD define um serviço ou ação no sistema. Consiste em:
•• Nome;
•• Tipo;
•• Arquivo de configuração.
•• Automount;
•• Device;
•• Mount;
•• Path;
•• Service;
•• Snapshot;
•• Socket;
•• Target.
77
Linux LPI - Administração
Os scripts utilizados por SystemD para iniciar e parar daemons são armazenados no
diretório /usr/lib/systemd/system.
# systemctl list-units
. . .
multi-user.target loaded active active Multi-User System
network-online.target loaded active active Network is Online
network.target loaded active active Network
. . .
Opção Descrição
list-units Mostra o status de todas as unidades configuradas.
default Altera o target da unidade como padrão.
isolate Inicia o nome da unidade e para todas as outras.
start Inicia a unidade.
stop Para a unidade.
reload Recarrega o arquivo de configuração da unidade informada.
restart Reinicia a unidade.
status Informa a situação atual da unidade.
enable Configura a unidade para ser iniciada no momento do boot.
disable Configura a unidade para não ser inicializada no momento do boot.
78
Arquitetura do sistema 2
O comando completo poderá ser executado das seguintes formas:
● sshd.servie.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
2.2.3. Upstart
Utilizado como um sistema de inicialização padrão no Ubuntu em versões mais antigas,
o Upstart faz o mesmo trabalho que o SysVinit, porém foi projetado para lidar melhor
com o hardware hotplug, que pode ser conectado e desconectado de um computador
enquanto ele ainda está em execução, fornecendo recursos de compatibilidade com
o SysVinit.
Seus scripts também suportam o início ou a parada de serviços com base em uma
variedade mais ampla de ações do que os scripts de inicialização do SysVinit. Por
exemplo, o Upstart pode iniciar um serviço sempre que um dispositivo de hardware
específico é anexado.
expect fork
respawn
exec cron
79
Linux LPI - Administração
Para administrar o serviços como parar, iniciar ou recarregar, use o comando initctl.
A versão mais recente do Ubuntu, conhecida como 16.04 Xenial Xerus, substituiu o
Upstart pelo SystemD.
2.2.4. Eventos do boot
É muito importante que o administrador do sistema entenda e saiba captar possíveis
mensagens de erro durante a inicialização do sistema. Para isso, dependendo do
sistema de inicialização utilizado, os comandos e os arquivos consultados mudam.
80
Arquitetura do sistema 2
# journalctl
Exemplo:
# journalctl -b d0c6482793c4452f910273bbc80feebb
81
Linux LPI - Administração
# runlevel
N 5
SYSVINIT -
DESCRIÇÃO SYSTEMD - Comando
Comando
Desligar init 0 runlevel.target, poweroff.target
Monousuário init 1 runlevel1.target, rescue.target
Multiusuário init 2 runlevel2.target, multi-user.target
Multiusuário com rede init 3 runlevel3.target, multi-user.target
Experimental init 4 runlevel4.target, multi-user.target
Multiusuário com rede
init 5 runlevel5.target, graphical.target
e interface gráfica
Reinicializar init 6 runlevel6.target, reboot.target
82
Arquitetura do sistema 2
Para alterar o nível de execução padrão, podemos realizar isso de duas maneiras:
SYSVINIT SYSTEMD
Editar o arquivo /etc/inittab
Alterar o valor do campo id:,
conforme o valor de runlevel systemctl set-default multi-user.target
desejado.
Exemplo: id:3initdefault:
Quanto à estrutura de diretórios para o controle dos scripts dos serviços, temos:
SYSVINIT SYSTEMD
/usr/lib/systemd/ -> Local onde são armazenados
os scripts de configuração do sistema.
/etc/init.d/ -> Local onde são
/etc/systemd/ -> Contém arquivos de
armazenados os scripts dos
configuração.
serviços.
/etc/rc*.d/ -> Contém links
/etc/systemd/system -> Unidades que são
de inicialização/desligamento
controladas pelo sysadmin e têm precedência
dos script, apontando para o
sobre todas as outras unidades.
diretório /etc/init.d/.
/lib/systemd/system -> Contém scripts de
configuração dos serviços.
83
Linux LPI - Administração
2.3.2. Desligar/reiniciar o sistema
Com o comando shutdown podemos reiniciar ou desligar o computador de maneira
segura, processo este apto a ser realizado imediatamente ou, então, com base em
um tempo predefinido na estrutura do próprio comando. Como padrão, apenas o
superusuário pode utilizar o comando shutdown. Antes que o computador seja
desligado pelo shutdown, os usuários do sistema recebem notificação sobre tal
procedimento.
Opções Descrição
Esta opção é empregada para iniciar o processo de desativação do
-h
computador.
Trata-se da opção responsável por suspender a reinicialização ou o
-c desligamento do computador. Uma mensagem de notificação aos
usuários pode ser definida como complemento para esta opção.
-r Por meio desta opção, o sistema é reinicializado.
Ao ser especificada, esta opção emite um sinal de finalização aos
-t<num> processos ativos no sistema, e, posteriormente, de acordo com o tempo
especificado, emite um sinal KILL.
Por meio desta opção, é possível simular a ação do shutdown. Neste
-k caso, uma notificação a respeito do procedimento de reinicialização ou
desligamento é enviada aos usuários.
Quando definida, esta opção faz com que o sistema de arquivos seja
verificado no decorrer da inicialização do sistema. Vale considerar a
-F execução de processo por meio da gravação de um arquivo chamado /
forcefsck. Durante o processo de inicialização do sistema, tal arquivo
é interpretado por scripts que executam o fsck.
Quando definida, esta opção faz com que o sistema de arquivos não
seja verificado no decorrer da inicialização do sistema. Vale considerar
-f sua execução por meio de gravação de um arquivo chamado /fastboot.
Durante o processo de inicialização do sistema, tal arquivo é interpretado
por scripts que executam o fsck.
Esta opção permita fazer com que o init deixe de ser carregado pelo
-n shutdown, gerando, consequentemente, a finalização de todos os
processos ativos.
84
Arquitetura do sistema 2
Alguns exemplos de uso do comando shutdown:
# shutdown -h now
# shutdown -r 18:00
# shutdown -c
•• SYSVINIT:
•• SYSTEMD:
85
Linux LPI - Administração
Esse comando poderá ser utilizado de duas formas, conforme os exemplos a seguir:
# wall
86
Arquitetura do sistema 2
Para encontrar o PID do processo, podemos utilizar o comando ps, seguido por outro
comando grep, que tem a função de filtrar o resultado gerado, informando apenas o
valor de pesquisa. Exemplo:
# kill 1318
Existem vários sinais que o comando kill pode enviar ao processo. Um outro que é
muito utilizado é o SIGKILL, ou -9, que força a remoção do processo na memória sem
mesmo permitir tempo para limpar a memória e os demais processos do disco. É um
tipo de sinal utilizado em último caso, quando o SIGTERM não foi capaz de encerrar
o processo adequadamente.
# kill -9 1318
O comando killall funciona da mesma forma que o kill, porém fazendo referência
ao nome do processo. É mais utilizado para matar todos os processos que possuem
o nome informado. Isso ocorre, por exemplo, quando se tem um processo pai (PID),
juntamente com vários outros processos filho, também conhecidos como (PPID -
Parent Process Identifier). O nome do processo é representado na última coluna do
resultado do comando ps.
# killall httpd
87
Linux LPI - Administração
88
Arquitetura do sistema 2
Pontos principais
Atente para os tópicos a seguir. Eles devem ser estudados com muita atenção,
pois representam os pontos mais importantes do capítulo.
•• Por meio do comando wall, podemos notificar todos os usuários que estão
conectados ao sistema, independentemente do tipo de manutenção que será
realizada.
Material complementar
Sites Endereços
SysVinit https://wiki.archlinux.org/index.php/SysVinit
SystemD https://www.freedesktop.org/wiki/Software/systemd/
Upstart http://upstart.ubuntu.com/cookbook/
89
Mapa mental para a fixação do aprendizado
90
2 Arquitetura do
sistema
Teste seus conhecimentos
Linux LPI - Administração
☐☐ a) --v
☐☐ b) -v
☐☐ c) -n
☐☐ d) -t
☐☐ e) -a
2. Qual comando visualiza dispositivos USB?
☐☐ a) lsusb
☐☐ b) usbls
☐☐ c) lsubs -v
☐☐ d) lsub -d
☐☐ e) lsusb -Q
☐☐ a) probemod
☐☐ b) probmode
☐☐ c) modeprobe
☐☐ d) modeprob
☐☐ e) modprobe
92
Arquitetura do sistema 2
4. “No arquivo /proc/_____, podemos encontrar informações referentes
às IRQs associadas aos dispositivos correspondentes”. Qual alternativa
preenche a lacuna corretamente?
☐☐ a) ioports
☐☐ b) interrupts
☐☐ c) mounts
☐☐ d) modules
☐☐ e) devices
☐☐ a) modls
☐☐ b) lmod
☐☐ c) lsmode
☐☐ d) lsmo
☐☐ e) lsmod
93
Linux LPI - Administração
☐☐ a) -C
☐☐ b) -c
☐☐ c) -r
☐☐ d) -h
☐☐ e) -s
9. Por padrão, o comando kill envia um sinal ao processo para que este
possa ser encerrado adequadamente. Qual o nome e o número desse sinal?
☐☐ a) SITERM, 15
☐☐ b) SIGKILL, 9
☐☐ c) SIGTERMI, 15
☐☐ d) SIGTERM, 15
☐☐ e) SIGKIL, 9
10. Qual das opções a seguir não é utilizada para a comunicação dos
periféricos com a CPU e outros periféricos?
☐☐ a) IO ports
☐☐ b) Direct memory access channels
☐☐ c) Interrupt requests
☐☐ d) TCP/IP ports
☐☐ e) Nenhuma das alternativas anteriores está correta.
94
Arquitetura do sistema 2
11. Informe o diretório que possui um pseudossistema de arquivos
contendo informação sobre o sistema:
☐☐ a) /dev
☐☐ b) /proc
☐☐ c) /usr
☐☐ d) /sbin
☐☐ e) Nenhuma das alternativas anteriores está correta.
☐☐ a) GRUB
☐☐ b) Bootloader
☐☐ c) Master Boot Record
☐☐ d) Index
☐☐ e) Nenhuma das alternativas anteriores está correta.
☐☐ a) cat /var/log/messages/kernel
☐☐ b) dmesg
☐☐ c) kernring
☐☐ d) lastlog
☐☐ e) Nenhuma das alternativas anteriores está correta.
14. Qual(is) dos comandos adiante faz(em) parte dos comandos e utilitários
do SystemD?
☐☐ a) journalctl
☐☐ b) shutdownd
☐☐ c) systemctl
☐☐ d) As alternativas A e C estão corretas.
☐☐ e) As alternativas B e C estão corretas.
95
Linux LPI - Administração
☐☐ a) shutdown -h
☐☐ b) shutdown -k
☐☐ c) shutdown -r
☐☐ d) shutdown -c
☐☐ e) Nenhuma das alternativas anteriores está correta.
☐☐ a) servicectl
☐☐ b) haltd
☐☐ c) journald
☐☐ d) initctl
☐☐ e) systemctl
96
2 Arquitetura do
sistema
Mãos à obra!
Linux LPI - Administração
# lsusb
# modprobe -r sr_mod
# cat /proc/partitions
6. Podemos listar os dispositivos PCI conectados à máquina por meio dos comandos:
# lspci -nn
# lspci -k
# lspci -vv
# lspci –d <vendor_ID>
7. Podemos listar os dispositivos USB conectados à máquina por meio dos comandos:
# lsusb
# lsusb -t
# lsusb –t <vendor_ID>
# lsusb –s <bus:device>
98
Arquitetura do sistema 2
Laboratório 2 - Desligando/reiniciando o
sistema
1. Programe o desligamento do sistema para as 18h00, informando todos os usuários
conectados:
2. Cancele o agendamento:
# shutdown -c
# wall "Mensagem"
# killall sshd
# journalctl -b
# dmesg
# dmesg -T
# dmesg -K
99
3 Instalação
do Linux e
gerenciamento
de pacotes
ÃÃ Particionamento do disco;
ÃÃ Instalando um gerenciador de boot;
ÃÃ Gerenciando bibliotecas compartilhadas;
ÃÃ Gerenciador de pacotes .DEB;
ÃÃ Gerenciador de pacotes .RPM.
Linux LPI - Administração
Este capítulo faz parte do tópico 102 - Linux Installation and Package Management,
da primeira prova identificada como 101-400 ou LX0-103 da certificação LPIC-1.
3.1. Particionamento do disco
O particionamento é um processo muito delicado, que deverá ser feito com total
controle e atenção para minimizar futuros problemas.
Ainda que um simples arquivo possa ser definido como swap, a funcionalidade de um
espaço de swap é muito maior quando for uma partição separada. Contudo, o mais
indicado é criar partições menores para hospedar partes separadas do sistema. Dessa
forma, não só o reparo de algum corrompimento é mais fácil, pois pode ser feito
de forma localizada, substituindo somente a partição afetada através de backups,
como o desempenho do computador tende a melhorar, pois um problema com algum
procedimento específico não afetará as outras partes do sistema.
102
Instalação do Linux e gerenciamento de pacotes 3
Diretório Descrição
Contém todos os outros diretórios do sistema. É o principal diretório
/ (raiz)
de um sistema GNU/Linux.
Contém arquivos binários de comandos que são essenciais para a
bin
inicialização básica do sistema.
Contém informações dos gerenciadores de inicialização, arquivos
boot
de imagem do kernel e auxiliares.
Arquivos orientados a dispositivos gerais e outros arquivos
dev
especiais.
Contém arquivos de configuração para o sistema, aplicações e
etc
serviços.
Contém bibliotecas dinâmicas, essenciais à inicialização básica do
lib
sistema e armazena módulos do kernel.
media Pontos de montagem para mídias removíveis.
mnt Utilizado em pontos de montagem de uso temporário.
Utilizado para instalar pacotes adicionais por meio do processo de
opt
compilação.
Contém arquivos binários essenciais à inicialização básica do
sbin
sistema, porém, é utilizado somente em nível administrativo.
Contém informações estáticas de serviços disponibilizados pelo
srv
sistema.
tmp Armazena arquivos de ordem temporária.
Mantém informações estáticas de aplicativos e serviços gerais
usr
instalados no sistema.
Contém informações variáveis, tanto do sistema como de aplicativos
var
em geral.
103
Linux LPI - Administração
Além desses, temos o diretório opcional home, que serve para centralizar dados
pessoais de usuários comuns, e o root, que serve para centralizar dados pessoais
do superusuário root. Recomenda-se, ainda, utilizar o diretório virtual /proc, que
armazena informações sobre o sistema e processos. Ele se localiza na memória RAM,
não ocupando espaço no disco rígido.
•• É altamente recomendável que uma partição seja criada somente para o diretório
raiz (/), pois como ele contém necessariamente os diretórios /etc, /bin, /sbin, /lib
e /dev, que são os componentes mais essenciais do sistema, o corrompimento de
qualquer outra partição ainda permitirá a inicialização do sistema, possibilitando
seu reparo. Entre 150 e 250 MB são normalmente usados pela partição raiz;
•• Entre 40 e 100 MB devem ser suficientes para o diretório /tmp, a menos que o
usuário pretenda usar aplicativos que armazenem temporariamente arquivos de
imagem, como ferramentas usadas na criação de CDs e DVDs, por exemplo. É
comum a criação de uma partição própria para o diretório /tmp;
104
Instalação do Linux e gerenciamento de pacotes 3
•• Se muitos programas que não façam parte da distribuição forem ser instalados,
é bom criar uma partição /usr/local separada para armazená-los;
3.1.1. Sistemas de arquivos
Além de definir o particionamento, é de fundamental importância escolher o sistema
de arquivos utilizado. A seguir, abordaremos os principais sistemas de arquivos que
podemos utilizar.
É importante ressaltar que a principal diferença entre eles é que o sistema ext2 não
utiliza journaling, ao passo que os outros três utilizam este recurso, que será descrito
mais adiante.
O ext2 é um sistema de arquivos cuja estrutura básica é o inode (index node). Cada
arquivo e diretório possui um inode próprio. O inode é uma identificação de cada
arquivo no sistema. Por não possuir journaling, checagens nesse sistema podem ser
demoradas.
•• ext3
105
Linux LPI - Administração
•• ext4
•• reiserfs
O reiserfs possui seu núcleo baseado em uma mesma árvore, a conhecida B+ (árvore
balanceada). Cada diretório apresenta uma subárvore da árvore principal, não
havendo uma árvore diferente para cada diretório. Ele utiliza o recurso journaling, e
sua conduta é armazenar apenas os metadados no journal. Estes dados armazenados
se referem ao tamanho e às permissões do arquivo.
•• xfs
106
Instalação do Linux e gerenciamento de pacotes 3
Vejamos suas principais características:
3.1.2. Conceitos de LVM
Existem momentos em que é necessário expandirmos o sistema, e isso pode ser
um grande problema, levando-se em conta os espaços disponíveis em partições,
especialmente nos servidores, onde seria necessário até a paralisação de seu
funcionamento para a migração de dados. Para evitar esses tipos de transtornos,
podemos utilizar o esquema de particionamento por LVM, ou Logical Volume
Management (Gerenciamento de Volumes Lógicos), um gerenciador de discos que nos
permite uma interação completa com os dispositivos de armazenamento, tornando
seu gerenciamento mais simples do que na utilização do particionamento tradicional.
O LVM permite trabalhar com vários discos para realizar uma função determinada. Sendo
assim, podemos utilizar volumes físicos para constituir uma área de armazenamento,
que será o volume lógico. As partições devem estar formatadas com o tipo LVM para
que seja possível trabalharmos com o gerenciador.
107
Linux LPI - Administração
Elemento Descrição
Tipicamente um disco rígido, uma partição do disco
ou qualquer dispositivo de armazenamento de mesma
natureza, como um dispositivo RAID, que será usado pelo
formato LVM. O PV serve para dar o número de identificação
Volume Físico de cada disco, o UUID.
PV
(Physical Volume) Quando inserimos um volume físico em um grupo de
volume e cada volume físico é dividido em pequenas
porções de dados, temos um trecho físico PE. Cada porção
é denominada PE (Physical Extent) e possui o mesmo
tamanho de um LE.
É a unidade administrativa com nível mais alto de abstração
Grupo de Volumes
do LVM. Consiste no conjunto de volumes físicos que
VG
serão utilizados no sistema de arquivos do volume lógico.
(Volume Group)
É possível termos diversos VGs.
O volume lógico é utilizado para alocar os grupos de volume
e é o equivalente a uma partição de disco tradicional. O LV
pode conter um sistema de arquivos, pois age como uma
partição tradicional, e pode ser acessado pelos usuários,
Volume Lógico
sendo associado a um ponto de montagem específico.
LV
(Logical Volume)
Volumes lógicos divididos em pequenas porções de
dados caracterizam um trecho lógico LE. Cada porção
é denominada LE (Logical Extent), e todas possuem o
mesmo tamanho.
108
Instalação do Linux e gerenciamento de pacotes 3
3.2.1. Gerenciador de boot GRUB
Muito utilizado em distribuições mais antigas, comparado com as atuais, o GRUB
(Grand Unified Bootloader) é um gerenciador de boot que, assim como o LILO,
é bastante versátil. A interface gráfica por ele apresentada pode ser facilmente
configurada, permitindo a alteração das letras e da imagem de fundo, entre outras
opções. Inclusive, é possível que seu ambiente seja apresentado em modo texto.
Além disso, o GRUB é capaz de promover o gerenciamento de diversos kernels sem
que haja a necessidade de gravar a posição física do kernel em disco.
Por meio do GRUB, podem ser carregados diversos sistemas operacionais, tanto
livres quanto proprietários. Tendo em vista que o gerenciador de inicialização em
questão permite a escolha de partições por meio de um menu gráfico, caso o GRUB
seja configurado como gerenciador padrão, após o hardware ter sido checado pela
BIOS, será exibida uma tela gráfica contendo uma listagem de sistemas operacionais
disponíveis para serem selecionados.
Arquivo Descrição
Essa opção tem a finalidade de definir o tempo de espera para a
entrada do teclado. Apenas salientando, esse tempo de espera
timeout é definido em segundos. Caso nenhuma tecla seja pressionada
no tempo determinado, o sistema padrão será carregado
automaticamente.
Essa opção é responsável por determinar qual sistema
operacional será definido como padrão quando nenhuma tecla
default for pressionada no tempo especificado. A opção default deve
ser indicada através de um valor numérico, sendo que o número
0 (zero) indica a primeira imagem como padrão.
Caso ocorram erros inesperados e seja impossível carregar a
fallback
imagem padrão, a opção indicada em fallback será carregada.
Essa opção tem a finalidade de definir o número de cores
color
utilizadas no menu do GRUB.
Essa opção é responsável por definir a cor de primeiro plano,
foreground
que deve ser definida em notação hexadecimal.
Essa opção é responsável por determinar a cor de fundo. É
background
fundamental que essa cor seja definida em notação hexadecimal.
Essa opção tem a finalidade de determinar o arquivo que será
splashimage
utilizado como papel de parede pelo GRUB.
Por meio dessa opção, podemos definir uma senha global para
password o GRUB. Com isso, torna-se necessário digitar uma senha para
utilizar o seu prompt.
109
Linux LPI - Administração
Opção Descrição
Por meio dessa opção, podemos definir um título que será apresentado
no menu do boot. Vejamos um exemplo:
title
title Debian GNU/Linux, kernel 2.6.25
3. Reinicie o computador.
110
Instalação do Linux e gerenciamento de pacotes 3
Para selecionar uma entrada e executá-la, basta seguir os passos adiante:
Nas situações em que a interface de menu está protegida com uma senha, é
necessário selecionar uma entrada e pressionar ENTER ou, então, pressionar P
para inserir a senha.
Uma vez que temos acesso à linha de comandos, podemos verificar os comandos
disponíveis. Para isso, pressionamos a tecla TAB, que permite também completar
nomes e parâmetros de alguns comandos.
Comando Descrição
boot Executa o boot.
111
Linux LPI - Administração
Comando Descrição
Essa opção é responsável por nos apresentar ajuda. Vejamos
um exemplo:
help
help color
Considere que o Linux esteja instalado em (hd0,6). A partir dessa ideia, podemos
passar comandos na linha de comandos. Os comandos transmitidos têm o objetivo
de efetuar a inicialização de uma imagem do GNU/Linux. São eles:
112
Instalação do Linux e gerenciamento de pacotes 3
A tabela a seguir lista os parâmetros de inicialização mais comuns:
Parâmetro Descrição
Esse parâmetro é responsável por ligar ou desligar o suporte a
ACPI. A seguir, temos um exemplo de utilização desse parâmetro:
acpi
acpi=off
mem mem=xM
vga=x
113
Linux LPI - Administração
•• Interface gráfica;
114
Instalação do Linux e gerenciamento de pacotes 3
Todas as vezes que alguma configuração for realizada, o comando grub2-mkconfig
deverá ser executado para a atualização do arquivo grub.cfg.
Parâmetro Descrição
GRUB_DEFAULT Define a entrada do menu padrão de inicialização.
Define o tempo de inicialização. Coloque 0 para iniciar
GRUB_TIMEOUT
imediatamente ou -1 para anular o contador.
Parâmetros a serem passados na linha de comando
do kernel para todas as entradas do menu do GNU/
Linux. Por exemplo, para suportar a hibernação, os
GRUB_CMDLINE_LINUX
usuários precisarão adicionar GRUB_CMDLINE_LINUX
= "resume =/dev/sdXY" com /dev/sdXY sendo a
partição swap.
GRUB_CMDLINE_LINUX_ Parâmetros a serem passados na linha de comando do
DEFAULT kernel para não recuperação de entradas do menu.
O dispositivo raiz inicial (ou seja, raiz do kernel = parâmetro).
Defina esta opção para substituir autodetecção de
GRUB_DEVICE dispositivo raiz do comando grub2-mkconfig. Por
exemplo, GRUB_DEVICE = /dev/ram0 forçará o root=/
dev/ram0 para ser usado na linha de comando do kernel.
Parâmetro Descrição
rw Realiza a montagem como leitura e escrita.
vga Informa um modo de vídeo.
quiet Omite a maioria das mensagens de inicialização.
mem Informa a quantidade de memória RAM que estará disponível.
115
Linux LPI - Administração
Parâmetro Descrição
116
Instalação do Linux e gerenciamento de pacotes 3
Para a instalação do GRUB em um determinado disco, basta executar o comando
grub-install, que obtém as devidas instruções no arquivo /boot/grub/menu.lst. Já
para o GRUB2, o comando grub2-install é necessário, que copiará a imagem da MBR
do disco para o diretório /boot/.
# grub2-install /dev/sda
117
Linux LPI - Administração
Esses dois tipos de bibliotecas apresentam algumas diferenças quanto à sua utilização,
pois as bibliotecas estáticas permitem que o código executável fique mais livre da
configuração de ambiente, o que significa que todo código que o programa necessita
para ser executado já se encontra no próprio executável.
As bibliotecas dinâmicas, por sua vez, fazem com que o programa seja dividido em
um módulo principal e um ou mais módulos que serão ligados de maneira dinâmica,
ou seja, essa ligação só ocorrerá se o módulo for solicitado.
Essas bibliotecas ocupam menos memória RAM, menos espaço em disco e menos
recursos do sistema, além de possuírem manutenção mais simples. Por exemplo,
a substituição dos módulos defeituosos pode ser realizada sem a necessidade de
compilar novamente todos os outros módulos ou sistemas envolvidos.
118
Instalação do Linux e gerenciamento de pacotes 3
A seguir, serão apresentadas algumas opções do comando ldd:
Opção Descrição
Esta opção é responsável por imprimir o número da versão do
--version
ldd.
Esta opção é responsável por imprimir as informações de forma
-v, --verbose
detalhada.
Esta opção tem como finalidade realizar realocações e relatar
-d, --data-relocs qualquer objeto que esteja faltando (somente ELF – Executable
and Linking Format).
--help Exibe informações de ajuda.
# ldd /usr/bin/ssh
3.3.3. Convenção de nomes
Cada biblioteca dinâmica possui um realname (nome de arquivo que contém o código
atual da biblioteca) e um soname (um nome especial que, sendo completamente
qualificado, é um link simbólico ao realname da biblioteca dinâmica). É muito
importante entender a diferença entre esses nomes.
•• Prefixo lib;
•• Nome da biblioteca;
•• A frase .so;
•• Um ponto (.) e número da versão, adicionados toda vez que ocorrem alterações
na interface.
119
Linux LPI - Administração
# ldd /bin/echo
•• Um ponto (.);
# ldd /bin/ls
120
Instalação do Linux e gerenciamento de pacotes 3
3.3.4. Localização
As localizações padrão das bibliotecas são os arquivos /lib e /usr/lib. Qualquer
localização adicional deve ser incluída ao arquivo /etc/ld.so.conf ou ao /etc/ld.so.
conf.d/, caso ele exista na distribuição em questão.
ldconfig [opcao]
121
Linux LPI - Administração
Opção Descrição
Exibe detalhes na execução do comando. É responsável por
imprimir o número da versão atual, o nome de cada diretório
-v, --verbose
da forma como ele é examinado e quaisquer links que sejam
criados.
Processará apenas os diretórios definidos na linha de
-n
comandos.
Esta opção não constrói o cache novamente. Vale ressaltar que
-N a atualização dos links também ocorrerá, exceto se a opção -X
também for definida.
-X Esta opção não permite atualizações nos links.
Esta opção utiliza o arquivo determinado na linha de comandos
-f <arquivo>
em vez do /etc/ld.so.conf.
Esta opção imprime as listas de diretórios e as bibliotecas que
-p, --print-cache
estão armazenadas no cache atual.
--help, --usage Esta opção exibe informações de ajuda.
# ldconfig -p | less
122
Instalação do Linux e gerenciamento de pacotes 3
3.3.6. Variável LD_LIBRARY_PATH
Esta variável de ambiente é utilizada quando se deseja utilizar uma biblioteca diferente
para uma execução particular, por exemplo, quando uma biblioteca não padrão será
empregada para propósitos especiais e, também, no momento de depuração de uma
nova biblioteca.
Ela se apresenta como um conjunto de diretórios que estão separados por dois pontos
(neste caso, antes do conjunto padrão de diretórios, as bibliotecas serão procuradas
em primeiro lugar). Ela não opera em todos os sistemas do tipo UNIX, mas a maioria
dos sistemas trabalha com ela.
Para os pacotes Debian, os gerenciadores mais usados são o dpkg, que instala pacotes
individuais, o apt-get e o aptitude, que localizam um pacote em repositórios remotos
e procedem com a instalação e resolução de suas dependências. Para a distribuição Red
Hat, os gerenciadores mais importantes são o yum e o rpm, semelhantes ao aptitude
e o dpkg respectivamente, mas usados somente para pacotes com a extensão .rpm.
3.4.1. Repositórios
Os gerenciadores apt-get e aptitude, que acabamos de mencionar, só podem
automatizar a administração das dependências dos pacotes, caso a origem desses
pacotes esteja especificada de forma correta nos arquivos chamados repositórios.
Os repositórios poderão ser indicados por meio do arquivo /etc/apt/sources.list.
Arquivos adicionais podem ir para o diretório /etc/apt/sources.list.d/.
123
Linux LPI - Administração
Um arquivo sources.list pode ser acessado por meio de um arquivo modelo em /usr/
share/doc/apt/exemples/sources.list, inclusive com caminhos para repositórios
oficiais de Internet, que poderão ser utilizados para obter pacotes.
Vejamos um exemplo:
•• Tipo de pacote: Além dos pacotes com a extensão .deb trabalhados até o
momento, também é possível obter o código-fonte desses pacotes para que
possam ser instalados pelo processo de compilação (visto no início do capítulo).
O código-fonte dos pacotes poderá ser acessado, caso o campo tipo de pacote
seja identificado como deb-src. Se forem utilizados apenas os pacotes normais
com a extensão .deb, basta identificar o campo tipo de pacote como deb;
124
Instalação do Linux e gerenciamento de pacotes 3
•• Protocolo de acesso: //Endereço: Neste campo, é indicado o protocolo de
acesso a um servidor de Internet ou local, podendo ser http ou ftp, com seu
respectivo endereço de acesso. Também é possível usar a indicação file para
especificar que o repositório é um diretório do sistema com imagens .iso dos
pacotes Debian;
•• Sessão de pacotes: Na sessão de uso dos pacotes que serão instalados, é criada
uma divisão para diferenciar os pacotes em relação às suas características de
licença. São elas:
125
Linux LPI - Administração
3.4.3. Instalação de pacotes
Antes de instalarmos um programa, devemos procurar por ele. Para isso, utilizamos
o apt da seguinte forma:
É possível, também, instalar vários pacotes ao mesmo tempo, pois o apt gerenciará a
instalação de todos eles de forma tranquila. Porém, não é possível executar o comando
apt-get com qualquer ação em paralelo. Vejamos a tabela a seguir:
Opção
Opção GNU Descrição
Unix
Apenas faz o download, não instalando os pacotes e
-d --download-only
as possíveis dependências.
-f --fix-broken Tenta corrigir erros gerados na instalação de pacotes.
Apenas simula o processo de instalação do pacote
-s --simulate com suas respectivas dependências, não realizando
suas instalações.
--reinstall Reinstala um pacote, caso já esteja instalado.
--show-
-u Exibe uma lista dos pacotes que serão atualizados.
upgraded
-y -yes Assume a resposta Yes para todos os questionamentos.
126
Instalação do Linux e gerenciamento de pacotes 3
O aptitude pode ser utilizado para instalar programas. Para isso, utiliza-se a seguinte
sintaxe:
dpkg -i <programa>
3.4.4. Reconfigurando os pacotes
O comando dpkg-reconfigure é utilizado para reconfigurar pacotes que, em sua
instalação, apresentaram alguma interface de configuração básica ao pacote específico.
Essa interface é provida pelo debconf.
Opção
Opção GNU Descrição
Unix
Reconfigura todos os pacotes instalados no sistema,
-a -all que utilizam uma interface de configuração por meio
do debconf.
Sobre a reconfiguração que será iniciada no pacote
especificado, serão configuradas apenas questões
-u --unseen-only que ainda não foram alteradas em configurações
anteriores. Por padrão, todas as questões possíveis
são questionadas ao executar o dpkg-reconfigure.
Força a reconfiguração de um pacote, mesmo que esse
--force
esteja em um estado inconsistente ou corrompido.
127
Linux LPI - Administração
3.4.5. Inspecionando o pacote
É possível também realizar tarefas de inspeção dos pacotes com a ajuda dos diversos
gerenciadores existentes. Veremos a seguir o que os gerenciadores mais usados
possibilitam em termos de inspeção.
128
Instalação do Linux e gerenciamento de pacotes 3
•• Outros tipos de consultas
129
Linux LPI - Administração
130
Instalação do Linux e gerenciamento de pacotes 3
•• Verificando e corrigindo falhas do comando apt
# apt-get check
3.4.6. Atualizando pacotes
Para atualizar um programa que já esteja instalado, usa-se o comando apt-get
upgrade. Sua sintaxe é a seguinte:
A tabela a seguir descreve as principais opções que podemos utilizar com apt-get
upgrade:
Opção
Opção GNU Descrição
Unix
-f --fix-broken Tenta corrigir erros gerados na atualização de pacotes.
131
Linux LPI - Administração
Também, é possível atualizar de uma só vez todos os pacotes que possuam alguma
versão mais recente nos repositórios especificados como origem. Para isso, utilizamos
o comando apt-get upgrade sem a especificação de um pacote. Existe também a
opção de utilizar, analogamente, o comando aptitude upgrade para atualização de
todos os pacotes, porém, nas versões mais recentes do programa, é recomendável
que se use o seguinte comando:
aptitude safe-upgrade
Como foi visto anteriormente, sem a utilização constante dos comandos apt-get
update ou aptitude update, os repositórios não são atualizados, de forma que a
atualização de um programa não poderá ser feita com os comandos que acabamos
de ver.
3.4.7. Excluindo pacotes
O apt também pode ser utilizado para remover pacotes instalados e seus respectivos
dependentes, caso existam, devido à ação remove. A remoção também é automatizada.
A ação remove também aceita certas opções para ajustar a execução de desinstalação,
como podemos perceber na sintaxe adiante:
Também, é possível remover vários pacotes ao mesmo tempo com o comando apt-
get e a ação remove.
A tabela a seguir descreve opções que podem ser utilizadas com o apt-get e a ação
remove:
Opção
Opção GNU Descrição
Unix
132
Instalação do Linux e gerenciamento de pacotes 3
O exemplo seguinte demonstra o uso de apt-get com a opção –y e a ação remove:
133
Linux LPI - Administração
A remoção de pacotes instalados também pode ser feita pelo dpkg, com as seguintes
opções:
O exemplo a seguir demonstra o uso do comando dpkg com a opção –r para excluir
o pacote linx:
# dpkg -r vim
134
Instalação do Linux e gerenciamento de pacotes 3
3.5. Gerenciador de pacotes .RPM
O rpm (Red Hat Package Manager) é o gerenciador de pacotes em distribuições de
base Red Hat e possui a mesma função do comando dpkg, anteriormente apresentado.
Entretanto, o rpm gerenciará apenas pacotes com a extensão .rpm.
3.5.2. Dependências
As dependências também deverão ser respeitadas na hora de gerenciar pacotes
rpm. Como no método de instalação de programas a partir do código-fonte, em que
a verificação das dependências obrigatórias é um passo essencial à instalação do
programa, com o rpm não será diferente. As dependências devem ser atendidas não
apenas na instalação de um pacote, mas também no momento de sua remoção. Um
pacote que é uma dependência obrigatória de outro pacote no sistema não pode ser
removido.
135
Linux LPI - Administração
136
Instalação do Linux e gerenciamento de pacotes 3
3.5.4. Excluindo pacotes com o rpm
O gerenciador de pacotes rpm removerá qualquer pacote .rpm instalado no sistema,
mas precisamos atentar à relação de dependências que os pacotes possuem. Vejamos
a tabela adiante:
137
Linux LPI - Administração
Opção
Opção GNU Descrição
Unix
Verifica se o pacote especificado está instalado
ou não no sistema. É a principal opção de busca
-q [pacote] --query [pacote] do rpm, que poderá ser utilizada em conjunto
com outras opções para trazer mais informações
detalhadas sobre os pacotes.
Opção
Opção GNU Descrição
Unix
-a --all Lista todos os pacotes instalados no sistema.
-f --file Realiza a busca pelo pacote que possui o arquivo
<arquivo> <arquivo> indicado.
138
Instalação do Linux e gerenciamento de pacotes 3
Há ainda outras opções que serão utilizadas para exibir uma busca sobre um
determinado pacote, com informações mais detalhadas. A tabela adiante ilustra essas
opções:
Opção
Opção GNU Descrição
Unix
Exibe informações detalhadas de um pacote, como
i --info nome, descrição, revisão, data de criação e instalação,
tamanho e outras informações.
139
Linux LPI - Administração
Atributo Descrição
S O tamanho do arquivo é diferente do original.
M As permissões do arquivo foram alteradas.
5 A soma md5sum é diferente da original.
Essa sequência de oito caracteres é a verificação executada. Caso um ponto (.) apareça
no lugar do atributo, significa que não há problemas. Caso uma interrogação (?) seja
exibida, significa que o teste não pôde ser efetuado.
# rpm –V samba-common
SM5..... c /etc/samba/smb.conf
Uma letra pode ser exibida após os atributos, para identificar o tipo
do arquivo em que c representa um arquivo de configuração, d um
arquivo relacionado à documentação do pacote, e nenhum caractere
é atribuído a outros tipos de arquivos relacionados ao programa.
140
Instalação do Linux e gerenciamento de pacotes 3
3.5.7. Listar o conteúdo de um pacote rpm
O comando rpm2cpio tem a função de listar o conteúdo de um pacote .rpm, exibindo
a saída no formato cpio. Esse comando aceita a utilização de caracteres curinga,
como o asterisco. A seguir, temos um exemplo do uso de rpm2cpio:
141
Linux LPI - Administração
Comando Definição
search [pacote] Faz uma busca por um pacote determinado.
install [pacote] Instala o pacote determinado.
remove [pacote] Exclui o pacote determinado.
Exibe qual pacote fornece o recurso ou arquivo
determinado, independente desse pacote estar instalado
provides [recurso]
ou não. É uma alternativa para o comando yum
whatprovides [recurso].
Se usado com argumento, atualiza o pacote determinado.
Sem argumentos, atualiza todos os pacotes disponíveis.
update
Com o subcomando --obsoletes, faz ainda a verificação
dos pacotes obsoletos durante a atualização.
142
Instalação do Linux e gerenciamento de pacotes 3
Pontos principais
Atente para os tópicos a seguir. Eles devem ser estudados com muita atenção,
pois representam os pontos mais importantes do capítulo.
Material complementar
Sites Endereços
Gerenciamento de https://access.redhat.com/documentation/en-US/Red_Hat_
pacotes Red Hat Enterprise_Linux/5/html/Deployment_Guide/ch-rpm.html
Gerenciamento de https://www.debian.org/doc/manuals/debian-reference/
pacotes Debian ch02.en.html
Bibliotecas http://www.tldp.org/HOWTO/Program-Library-HOWTO/
compartilhadas shared-libraries.html
143
Mapa mental para a fixação do aprendizado
144
Instalação
3 do Linux e
gerenciamento
de pacotes
Teste seus conhecimentos
Linux LPI - Administração
☐☐ a) rpm -pq
☐☐ b) rpm -qp
☐☐ c) rpm -qa
☐☐ d) rpm –list-package
☐☐ e) rpm -inst-package
☐☐ a) /etc/apt.conf
☐☐ b) /etc/sources.list
☐☐ c) /var/cache/apt/sources.list
☐☐ d) /var/cache/apt/apt.conf
☐☐ e) /etc/apt/sources.list
☐☐ a) dpkg -r emacs
☐☐ b) dpkg -P emacs
☐☐ c) dpkg –delete emacs
☐☐ d) dpkg -lr emacs
☐☐ e) dpkg -p emacs
☐☐ a) rpm -q <pacote>
☐☐ b) dpkg -q <pacote>
☐☐ c) rpm -info <pacote>
☐☐ d) yum –info <pacote>
☐☐ e) rpm -ivh <pacote>
146
Instalação do Linux e gerenciamento de pacotes 3
6. Depois de atualizar a lista do arquivo de repositórios remotos do Debian,
qual comando deveria ser rodado?
☐☐ a) dpkg update
☐☐ b) apt-cache fetch
☐☐ c) apt-cache update
☐☐ d) apt-get update
☐☐ e) Nenhuma das alternativas anteriores está correta.
☐☐ a) ld.so, /etc/ld.so.conf
☐☐ b) so.linux, /etc/ld.so.conf
☐☐ c) ld.so, /etc/so.linux.conf
☐☐ d) so.linux, /etc/so.linux.conf
☐☐ e) Nenhuma das alternativas anteriores está correta.
147
Linux LPI - Administração
☐☐ a) LIBC_EXTRA
☐☐ b) LD_SO_ETC
☐☐ c) LD_LIBRARY
☐☐ d) LD_LIBRARY_PATH
☐☐ e) Nenhuma das alternativas anteriores está correta.
☐☐ a) Upstart
☐☐ b) SystemVinit
☐☐ c) GRUB2
☐☐ d) GRUB
☐☐ e) System D
148
Instalação
3 do Linux e
gerenciamento
de pacotes
Mãos à obra!
Linux LPI - Administração
# apt-get update
# aptitude update
# dpkg -i /root/pacotes/emacs_22.2+2-5_all.deb
# dpkg -r emacs
# dpkg -l vim
150
Instalação do Linux e gerenciamento de pacotes 3
11. Atualize o computador com o comando apt-get:
# apt-get update
# aptitude update
# apt-get dist-upgrade
# yum update
# cd /media/Packages
151
Linux LPI - Administração
# yum update
2. Adicione uma senha no GRUB2. Essa senha será solicitada todas as vezes que você
precisar editar o menu de inicialização do GRUB2, conforme realizado no exercício
anterior.
# grub2-setpasswd
Atenção: Caso você se esqueça da senha do GRUB2, seu sistema não será
mais iniciado, e uma manutenção mais avançada deverá ser realizada.
152
Instalação do Linux e gerenciamento de pacotes 3
3. Altere o tempo de exibição do menu do GRUB2 para 10 segundos:
# grub2-mkconfig
# reboot
153
Linux LPI - Administração
154
4 Comandos
GNU e Unix
Este capítulo faz parte do tópico 103 – GNU and Unix Commands, da primeira
prova identificada como 101-400 ou LX0-103 da certificação LPIC-1.
Por meio do comando man <comando> (em que <comando> é o nome do comando
desejado), é possível obter informações a respeito de qualquer comando GNU/Linux.
bash
156
Comandos GNU e Unix 4
As variáveis podem ser lidas por meio do comando echo, seguido do caractere $ e do
nome da variável:
echo $PWD
As variáveis carregadas podem ser visualizadas por meio do comando env, que
exibirá as variáveis de ambiente, e do comando set, que exibirá tanto as variáveis
locais quanto as variáveis globais:
set
env
Uma variável local poderá ser transformada em global. Para isso, utilize o comando
export:
export VARIAVEL
unset VARIAVEL
Mais detalhes a respeito do ambiente shell bash serão tratados em capítulo posterior
sobre shell script e gerenciamento de dados.
ls [opcoes] [arquivo(s)/diretorio(s)]
Opção
Opção GNU Descrição
Unix
Exibe todo o conteúdo de diretórios, incluindo
-a --all arquivos e diretórios ocultos, que iniciam com .
(ponto) em seu nome.
157
Linux LPI - Administração
Opção
Opção GNU Descrição
Unix
Ativa o recurso de cores para os tipos de arquivos
com os parâmetros always (sempre usa cores na
saída do comando ls), auto (usa cores apenas se a
saída do comando ls for um terminal), never (não
usa cores, é padrão).
Cores:
•• Azul: Diretório;
158
Comandos GNU e Unix 4
Opção
Opção GNU Descrição
Unix
Semelhante à opção -l, porém, exibe a identificação
dos donos (UID – UserIdentification) e grupos (GID
-n --numeric-giduid
– GroupIdentification) dos arquivos e diretórios em
vez de seus respectivos nomes.
Lista o conteúdo de diretórios e seus respectivos
-R --recursive
subdiretórios em modo recursivo.
159
Linux LPI - Administração
Por padrão, o rótulo de tempo que é exibido é sobre a última modificação. Para poder
visualizar o rótulo de tempo sobre acesso, usa-se a opção –u em conjunto com a
opção -l.
Quando o comando ls –l é executado, a saída que ele traz mostra caracteres específicos
no começo da cada linha. O primeiro caractere indica o tipo dos arquivos listados,
conforme o seguinte esquema:
•• d: Para um diretório;
Vejamos:
4.1.5. Listando recursivamente
Ao utilizar o comando l com o parâmetro -R, podemos listar arquivos e mostrar
também os subdiretórios contidos no diretório especificado, ou seja, podemos listar
arquivos recursivamente, como mostra o seguinte exemplo:
160
Comandos GNU e Unix 4
4.1.6. Criando arquivos e diretórios
Simplesmente abrir um editor de texto e salvar o documento é suficiente para criar
um arquivo novo em sistemas GNU/Linux, porém existem outras maneiras para isso,
como será mostrado adiante.
4.1.7. touch
O comando touch gera um arquivo com zero byte de tamanho. Sua sintaxe é a
seguinte:
O comando touch tem várias funcionalidades, como poder alterar a data e/ou hora
(timestamp) de acesso ou modificação de um arquivo de qualquer tipo.
Opção
Opção GNU Descrição
Unix
-a --time=atime Altera a data de acesso de um arquivo.
-c --no-create Não cria arquivos caso eles não existam.
-m --time=mtime Altera a data de modificação de um arquivo.
Especifica o formato de data e hora para alteração,
com as opções -m ou –a. O formato passado junto
com a opção –t é [[CC]YY]MMDDhhmm[.SS], sendo:
161
Linux LPI - Administração
4.1.8. mkdir
Para criarmos um diretório no sistema, podemos utilizar o comando mkdir. Sua
sintaxe é a seguinte:
mkdir impacta
/home/arquivos/aulas/linux/aluno/lucas
A criação de uma estrutura como a que acabamos de exibir pede que utilizemos o
comando mkdir cinco vezes. Vejamos a sequência de comandos para criá-la:
mkdir /home/arquivos
mkdir /home/arquivos/aulas
mkdir /home/arquivos/aulas/linux
mkdir /home/arquivos/aulas/linux/aluno
mkdir /home/arquivos/aulas/linux/aluno/lucas
No entanto, há uma maneira mais simples de criar estruturas como essa. Para isso,
podemos utilizar mkdir junto com o parâmetro –p. A linha a seguir cria a estrutura
anterior com uma única execução do comando mkdir:
mkdir -p /home/arquivos/aulas/linux/aluno/lucas
162
Comandos GNU e Unix 4
4.1.10. rm
O comando rm é utilizado para excluir arquivos e diretórios, independentemente de
estarem vazios. Sua sintaxe é a seguinte:
rm [opcoes] <origem>
rm impacta.txt
No uso de rm, há uma forma de que uma mensagem de confirmação seja exibida
antes da exclusão ocorrer. Para isso, utilizamos o parâmetro –i. No exemplo a seguir,
excluímos impacta.txt, mas antes precisamos confirmar a ação (y):
rm -i impacta.txt
rm: remove arquivo comum "impacta.txt" y
rm –r arquivos
163
Linux LPI - Administração
4.1.11. rmdir
O comando rmdir remove diretórios vazios, que não contenham arquivos. Também
remove diretórios que contêm outros subdiretórios, mas apenas se estes também
estiverem sem arquivos. Sua sintaxe é a seguinte:
O rmdir pode ser utilizado com a opção -p, que remove a árvore de diretórios indicada
apenas se não existir qualquer arquivo presente na estrutura que será removida.
rmdir aulas
rmdir -p aulas/linux
164
Comandos GNU e Unix 4
Vejamos as telas de exemplo a seguir:
No segundo uso do cp, temos uma cópia de todos os arquivos – onde é utilizado o
caractere curinga asterisco (*), o qual explicaremos posteriormente neste capítulo –
do diretório /etc/cron.daily indicando o destino em dir-pai/dir-filho.
Já o terceiro exemplo copia apenas o arquivo /etc/hosts para o diretório atual, que é
representado pelo ponto (.).
No último exemplo, o diretório /etc/ é copiado por completo, com todo seu conteúdo,
sendo ele arquivos e subdiretórios, por meio da opção –r (recursivo), sendo o diretório
de destino o diretório atual. Como o nome do diretório foi alterado para .novo-etc,
isso significa que o diretório foi renomeado com o novo nome, e o caractere . (ponto)
no início do nome caracteriza-o agora como um diretório oculto.
Para que uma cópia conserve os metadados dos arquivos, utilizamos cp com o
parâmetro –p. Assim, as informações de data e hora de criação, proprietário e suas
permissões não sofrem alterações.
165
Linux LPI - Administração
Falar sobre esses curingas de maneira unicamente teórica pode deixar sua compreensão
muito vaga, portanto vamos tratar dos três principais tipos de curingas utilizados
pelos sistemas GNU/Linux separadamente, oferecendo alguns exemplos. São eles o
asterisco (*), o ponto de interrogação (?) e os colchetes ([ ]).
O caractere * substitui parte do nome de um arquivo ou até seu nome inteiro, como
nos exemplos a seguir:
# ls *
Nesse exemplo, todos os arquivos contidos no diretório atual serão listados, já que o
curinga não reduziu a busca a nenhum caractere ou termo específico.
# ls *teste*
Nesse caso, serão listados todos os arquivos que contenham a palavra teste no
diretório em que o usuário estiver, porque o curinga, da forma que foi usado, seleciona
todos os nomes em que a palavra teste venha seguida ou antecedida de qualquer
sequência de caracteres.
# ls *.pic
Aqui, o curinga mantém aberto apenas a seção do nome do arquivo que antecede a
sequência .pic, de forma que todos os arquivos cujo nome terminam com .pic serão
listados.
166
Comandos GNU e Unix 4
O curinga ? substitui um ou mais caracteres numa posição específica, permitindo ao
usuário filtrar mais a busca do que o curinga *, conforme o exemplo adiante:
# ls album?.pic
Dessa forma, serão listados os arquivos cujos nomes comecem com a palavra album,
tenham qualquer caractere no lugar do curinga e terminem com .pic.
Por fim, o curinga [ ] especifica ainda mais o que o usuário pretende buscar, porque
permite dar opções concretas, sejam elas alfabéticas ou numéricas, que o curinga
pode substituir. Novamente, os exemplos a seguir devem tornar seu funcionamento
mais claro:
# ls album[1,3].pic
# ls album[0-9].pic
Agora, todos os arquivos começados pela palavra album, terminados em .pic e que
tenham, no lugar do curinga, um dos números existentes no intervalo de 0 a 9 serão
listados. Note-se portanto a diferença entre a vírgula (,) e o hífen (-) na sintaxe desse
curinga.
167
Linux LPI - Administração
É preciso ter muita cautela na hora de utilizá-lo com arquivos comuns, pois,
caso o arquivo especificado já exista, um novo arquivo será criado em seu lugar,
sobrescrevendo o conteúdo do anterior. O redirecionador > também é utilizado para
criar arquivos vazios (0 byte), como o comando touch, porém, caso o arquivo já
exista, este será apagado e o novo arquivo será criado.
168
Comandos GNU e Unix 4
Vejamos o seguinte exemplo:
4.1.17. Redirecionador 2>
O redirecionador 2> tem por finalidade tratar a saída de erro gerada na execução de
um comando, podendo encaminhá-la para um tipo de arquivo especificado.
169
Linux LPI - Administração
4.1.18. Redirecionador &>
O redirecionador &> tem por finalidade tratar tanto a saída, quanto o erro gerado
na execução de um comando, podendo encaminhá-la para um tipo de arquivo
especificado.
4.1.19. Redirecionador &&
O redirecionador && tem por finalidade verificar se o comando1 foi executado com
sucesso e, caso positivo, o comando2 também será executado.
170
Comandos GNU e Unix 4
4.1.20. Redirecionador ||
O redirecionador || tem por finalidade verificar se o comando1 foi executado com
sucesso e, caso negativo, o comando2 também será executado.
[comando1] || [comando2]
4.1.21. Redirecionador >>
O redirecionador >> também é utilizado para redirecionar um resultado executado com
sucesso para um arquivo, porém, de forma concatenada, não mais sobrescrevendo
o conteúdo do arquivo existente, mas sim apenas adicionando o resultado ao final
dele. É uma forma segura de se adicionar mais informações ao final de um arquivo,
sem perde-lo.
Exemplos:
171
Linux LPI - Administração
4.1.22. Redirecionador 2>>
O redirecionador 2>> também consegue tratar resultados de erros quando o código
2 for informado. Será possível anexar uma saída sem sucesso ao final de um arquivo,
mantendo todas as características do redirecionamento de uma saída com sucesso,
como no exemplo anterior.
172
Comandos GNU e Unix 4
4.1.23. Redirecionador <
O redirecionador < terá a finalidade de redirecionar a entrada de dados do comando,
indicando que esta entrada de dados será agora o conteúdo de um arquivo.
Vejamos:
173
Linux LPI - Administração
4.1.24. Redirecionador <<
O redirecionador << é utilizado para poder criar, de forma simples e dinâmica, uma
entrada de dados que poderá ser aproveitada por um comando qualquer.
Vejamos:
174
Comandos GNU e Unix 4
4.1.25. Redirecionador |
O redirecionador | (PIPE) é, sem dúvida, um dos mais utilizados nas tarefas
administrativas do dia a dia. Com esse redirecionador, podemos fazer com que
comandos distintos se comuniquem, tornando-os muito mais flexíveis e avançados.
O | (PIPE) permite que o resultado com sucesso de um comando possa ser transferido
para uso em outro comando, e assim sucessivamente. Com ele, a saída de um comando
é redirecionada como entrada de outro.
ls /etc | less
ls /var | cat –n
4.1.26. tee
O comando tee é uma extensão dos redirecionadores apresentados anteriormente,
sendo possível encaminhar o resultado de um comando para um destino especificado,
um arquivo qualquer e, ao mesmo tempo, visualizá-lo na saída padrão (tela).
175
Linux LPI - Administração
Vejamos:
176
Comandos GNU e Unix 4
4.1.28. Exibindo a estrutura de um diretório em
árvore
O comando tree exibe a estrutura de um diretório e seu conteúdo em formato de
árvore. Sua sintaxe é a seguinte:
O exemplo adiante exibe a estrutura do diretório dir-pai, com seu respectivo conteúdo.
No CentOS, esse comando precisará ser instalado. Solicite ajuda ao seu instrutor.
A tabela a seguir descreve alguns parâmetros que podem ser utilizados com cat:
Opção
Opção GNU Descrição
Unix
Numera apenas as linhas com conteúdo na
-b --numbernonblank
exibição.
-n --number Numera todas as linhas na exibição.
Suprime linhas em branco, que se repetem de
-s --squeezeblank
forma sequencial na exibição.
177
Linux LPI - Administração
Este outro exemplo utiliza o redirecionador > para gravar a saída do comando cat no
arquivo treinamentosimpacta.txt:
178
Comandos GNU e Unix 4
Já no exemplo a seguir, foi executado o comando tac em vez de cat para visualizar o
conteúdo do mesmo arquivo (exemplo_tac). Podemos perceber que o resultado está
invertido em comparação à saída do comando cat:
4.1.30. more
O comando more é utilizado para visualizar um ou mais arquivos na saída padrão,
porém, de forma mais dinâmica. O comando cat, por exemplo, apresentado
anteriormente, não é eficiente para visualizar arquivos grandes. O more tem uma
interface própria, que aceitará diversos comandos internos, o que facilitará a navegação
no arquivo. Sua sintaxe é a seguinte:
179
Linux LPI - Administração
A tabela a seguir descreve as principais opções que podemos utilizar com o comando
more:
O comando more utiliza comandos internos, que têm validade apenas com ele em
funcionamento. Esses comandos são representados por teclas específicas, como é
apresentado na tabela a seguir:
Comando
Descrição
interno
h ou ? Exibe a ajuda do more.
Tecla de navegação. Desce linha a linha, no sentido do final do
ENTER
arquivo.
Tecla de navegação. Desce página a página, no sentido do final do
SPACE
arquivo.
Tecla de navegação. Sobe página a página, no sentido do início do
^b
arquivo.
Localiza a expressão no arquivo, porém, a busca é feita a partir da
/”expressão” página atual, no sentido do final do arquivo. A característica case-
sensitive é habilitada nas buscas.
N Localiza a próxima expressão caso ela exista.
Carrega o arquivo com o editor de textos padrão definido no
v
sistema.
Q Finaliza o more.
180
Comandos GNU e Unix 4
4.1.31. less
O comando less também é utilizado para visualizar arquivos de forma dinâmica, com
uma melhoria significativa nas teclas de navegação e comandos internos em relação
ao comando more. O comando more só permite navegar para baixo durante a leitura
de um arquivo, ao passo que o less possibilita também a navegação para cima.
A tabela a seguir descreve as principais opções que podemos utilizar com o comando
less:
181
Linux LPI - Administração
Assim como o comando more, o comando less também utiliza comandos internos, que
têm validade apenas com ele em funcionamento. Esses comandos são representados
por teclas específicas, como é apresentado na tabela a seguir:
4.1.32. head
O comando head é utilizado de forma bem simples para visualizar apenas as primeiras
linhas de um arquivo. Por padrão, o comando head exibe apenas as 10 primeiras linhas
do arquivo indicado, podendo haver alteração para quantas linhas forem necessárias,
com a utilização do parâmetro –n. Sua sintaxe é a seguinte:
182
Comandos GNU e Unix 4
Caso não queira que a exibição seja medida por linhas, mas pelo número de caracteres
(byte), o usuário pode usar o parâmetro –c, conforme o seguinte exemplo:
4.1.33. tail
O comando tail é utilizado de forma simples para visualizar apenas as últimas linhas
de um arquivo. Por padrão, o comando tail exibe apenas as 10 últimas linhas do
arquivo indicado, podendo haver alteração para quantas linhas forem necessárias.
Sua sintaxe é a seguinte:
A tabela a seguir descreve as principais opções que podemos utilizar com o comando
tail:
Como head, o comando tail também aceita o uso do redirecionador | para exibição de
trechos entre linhas específicas.
Neste outro exemplo, também depois de numerar o arquivo por inteiro, a sua
visualização inicia a partir da linha de número 50, até o final do arquivo.
183
Linux LPI - Administração
tail -f /var/log/messages
pr [opcao] [arquivo]
A tabela a seguir descreve algumas opções que podemos utilizar com pr:
Com o exemplo anterior, foi possível visualizar apenas o intervalo de páginas que vai
da página 2 até a página 4, inserindo a data de 07/07/2007 nos cabeçalhos.
184
Comandos GNU e Unix 4
4.1.35. paste
O comando paste faz uma junção de linha a linha de dois arquivos indicados,
separando a informação de cada linha, por padrão, com uma tabulação TAB, e exibindo
o resultado da junção dos arquivos na saída padrão. Sua sintaxe é a seguinte:
A tabela a seguir descreve as principais opções que podemos utilizar com paste:
Em seguida, é feita uma junção dos conteúdos dos arquivos, exibindo na saída padrão
cada linha de cada arquivo lado a lado, separadas apenas pela tabulação TAB, como
mostrado a seguir:
185
Linux LPI - Administração
Já no exemplo a seguir, outra junção foi feita, só que agora em formato paralelo (o
comando paste foi utilizado com o parâmetro –s):
É importante lembrar que a tabulação TAB pode ser substituída por um delimitador
qualquer, como no exemplo a seguir:
4.1.36. join
O comando join também faz a junção de linhas de arquivos distintos, porém, essas
linhas que serão unidas deverão ter um campo em comum, um índice que seja idêntico
em cada linha, exibindo o resultado do processo na saída padrão. O comando join
trata os arquivos como uma espécie de banco de dados primitivo, permitindo tratar
as informações linha a linha. O índice das linhas deverá seguir algumas regras, como
ser numérico ou alfabético, e também estar ordenado tanto de forma crescente como
decrescente.
A tabela a seguir descreve as principais opções que podemos utilizar com join:
186
Comandos GNU e Unix 4
Vejamos:
No exemplo anterior, foi feita uma junção do conteúdo do arquivo cidade com
o arquivo estado. Como a linha de índice número 3 do arquivo cidade não tinha
correspondente no arquivo estado, ela não apareceu na saída padrão, mas é possível
forçar a visualização dessa linha órfã com o seguinte exemplo:
Também é possível visualizar apenas a linha que não tem correspondente em outro
arquivo, como no exemplo a seguir:
187
Linux LPI - Administração
A tabela a seguir descreve as principais opções que podemos utilizar com uniq:
No exemplo anterior, depois de criado o ambiente de teste, foi feita uma filtragem
em que só foram exibidas as linhas únicas (uso do parâmetro –u) e posteriormente as
linhas que se repetem sequencialmente no arquivo (uso do parâmetro –d).
188
Comandos GNU e Unix 4
4.1.38. od
O comando od é utilizado para fazer uma conversão sobre o formato da visualização
de um arquivo, de forma que o arquivo original não é alterado em nada, apenas a sua
visualização é proporcionada no formato desejado pelo usuário.
od [opcao] [arquivo]
A tabela a seguir descreve as principais opções que podemos utilizar com od:
4.1.39. hexdump
O comando hexdump também é utilizado para fazer conversão do formato do
arquivo, com uma mudança notável sobre o od na formatação, no momento de exibir
a conversão na saída padrão.
A tabela a seguir descreve as principais opções que podemos utilizar com hexdump:
189
Linux LPI - Administração
No exemplo a seguir, o comando hexdump é utilizado com a opção –x, o que retorna
o arquivo /etc/resolv.conf em formato hexadecimal:
wc [opcao] [arquivo]
A tabela a seguir descreve as principais opções que podemos utilizar com o comando
wc:
190
Comandos GNU e Unix 4
4.1.41. Classificação numérica ou alfabética
O comando sort tem a função de classificar um arquivo de texto tanto em modo
alfabético quanto numérico, em formato crescente ou decrescente. O resultado
dessa classificação, por padrão, é exibido na tela, mas pode ser encaminhado para
um arquivo especificado, inclusive para o próprio arquivo original. Sua sintaxe é a
seguinte:
Esse comando é útil em tarefas como rápida exibição de nomes e exclusão de itens
repetidos. A tabela a seguir descreve as principais opções que podemos utilizar com
o comando sort:
191
Linux LPI - Administração
A informação que o usuário deseja capturar pode ainda ser mandada para um arquivo
determinado, caso se junte o comando echo a algum redirecionador.
Inserindo o comando echo “Isto é um teste”, como feito a seguir, será retornada na
tela a frase Isto é um teste:
O comando echo será muito útil quando estivermos lidando com shell scripts e
variáveis.
4.1.43. grep
O comando grep é utilizado para localizar um padrão especificado, que pode ser uma
palavra ou expressão em um ou vários arquivos. O resultado é a linha por extenso na
qual se encontra tal padrão desejado, que é exibida na saída padrão. Sua sintaxe é a
seguinte:
A tabela a seguir descreve as principais opções que podemos utilizar com o comando
grep:
192
Comandos GNU e Unix 4
Opção Unix Opção GNU Descrição
Não exibe o nome do arquivo no qual foi
-h --no-filename encontrado determinado padrão. É útil
quando a busca é em vários arquivos.
Ignora a característica de case-sensitive no
-i --ignore-case
momento de buscar algum padrão.
Exibe também o número da linha na qual o
-n --line-number
padrão se encontra.
Busca recursiva, preferencialmente utilizada
-r --recursive
em diretórios.
-v --invert-match Inverte a lógica da busca.
Interpreta <padrao> como uma expressão
-E --extended-regexp
regular estendida.
Interpreta <padrao> como uma lista de
-F --fixed-strings
strings fixas.
Vejamos:
Na primeira linha da imagem anterior, há uma simples busca pelo padrão loopback
em todos os arquivos do diretório /etc/; uma busca recursiva utilizando a opção -r.
193
Linux LPI - Administração
4.1.44. egrep
É um comando equivalente ao grep –E. O egrep busca uma expressão regular estendida
num arquivo. No exemplo a seguir, o egrep é utilizado em busca da expressão root
no arquivo /etc/passwd:
4.1.45. fgrep
É um comando equivalente ao grep –F. Busca as ocorrências de uma string fixa num
arquivo, sem interpretá-la como uma expressão regular.
No exemplo a seguir, o comando fgrep é utilizado para filtrar a expressão fixa EXT3
no arquivo de log /var/log/messages:
194
Comandos GNU e Unix 4
4.1.46. sed
O comando sed não só localiza expressões ou padrões em arquivos, como também
possibilita a alteração dos dados encontrados. Vejamos o seguinte exemplo:
195
Linux LPI - Administração
A tabela a seguir descreve as principais opções que podemos utilizar com o comando
cut:
Opção
Opção GNU Descrição
Unix
Tal opção define cada caractere como
-c [num] --caractere=[num]
membro de uma coluna específica.
Especifica o delimitador, um único caractere
-d [delim.] --delimiter=[delim.] que estará separando uma informação da
outra.
Utilizada em conjunto com a opção –d, após
-f [coluna] --fildes=[coluna] especificar o delimitador, informar o número
de coluna ou intervalo que será extraído.
Vejamos:
No exemplo seguinte, com o cut, após uma simples filtragem localizando a linha com
o padrão root, foram exibidos apenas os quatro primeiros caracteres de tal linha,
devido à função do corte de colunas por caractere atribuída à opção –c.
Um comando que realiza a mesma tarefa que o cut é o awk. No entanto, este último
é uma linguagem de processamento e escaneamento de padrões e apresenta uma
quantidade maior de opções e recursos para expressões regulares.
196
Comandos GNU e Unix 4
4.1.48. Determinando o tipo de arquivo
Diferente de outros sistemas operacionais, os arquivos em plataformas GNU/Linux
não são definidos por suas extensões. Caso o nome de algum arquivo possua o
formato nome.xyz, por exemplo, esses três caracteres finais não passam de uma
ferramenta de opção do usuário, se ele achar que assim se organizará melhor, porém
isso não possui nenhuma funcionalidade para o sistema.
file <arquivo>
197
Linux LPI - Administração
Vejamos:
Interpretador Descrição
[:digit:] Representa os valores numéricos (0-9).
[:lower:] Representa todas as letras do alfabeto em minúsculo.
[:upper:] Representa todas as letras do alfabeto em maiúsculo.
Representa todos os caracteres imprimíveis, letras, números,
[:print:]
pontuações etc.
198
Comandos GNU e Unix 4
No exemplo a seguir, foram retirados todos os dígitos numéricos de arq-numerico:
4.1.50. Numerando arquivos
O comando nl é utilizado para numerar um arquivo qualquer, exibindo essa numeração
na saída padrão. Sobre a numeração que poderá ser aplicada, existem alguns estilos
e formatos a serem definidos, conforme as opções do comando.
nl [opcao] [arquivo]
A tabela a seguir descreve as principais opções que podemos utilizar com nl:
199
Linux LPI - Administração
Com esse exemplo, o arquivo /etc/services teve seus parágrafos formatados com
uma diminuição da largura das linhas para o valor de coluna 30, quebrando linhas
que tinham tamanho maior que o estipulado. Lembrando que essa formatação foi
feita apenas no momento da exibição na saída padrão, para armazenar esse resultado
em um arquivo, basta utilizar os redirecionadores apresentados anteriormente.
200
Comandos GNU e Unix 4
4.1.52. Links
Arquivos especiais cuja função é servir de atalho para outros arquivos, os links
facilitam a navegação e o acesso a arquivos diferentes. Antes de partirmos para a
criação de links, é importante compreender o que é um inode, uma característica
muito importante presente nos sistemas Unix-like e base para o funcionamento e
entendimento pleno dos tipos de link com os quais poderemos trabalhar.
4.1.53. Inodes
O inode (abreviação de index node) é uma identificação que cada arquivo tem no
sistema. A referência pode ser por um número, em que tal número pode ser visualizado
com a opção -i do comando ls, ou com o comando stat.
O inode é utilizado de forma direta pelo sistema de arquivos, que é como um relatório
sobre o arquivo, com todas as informações sobre ele, como dono, grupo, permissões,
nome etc.
4.1.54. Link simbólico
Um link simbólico é simplesmente um tipo de arquivo especial, que é representado
pela letra l, caso listado com o comando ls -l. Esse arquivo é apenas um apontamento,
um atalho para o arquivo original ao qual o link está ligado. Por ser um atalho ao
arquivo original, e caso seja apagado, o arquivo original continua intacto. Porém, se
for o contrário, o arquivo original for apagado, o link se torna quebrado ou inacessível.
201
Linux LPI - Administração
4.1.56. Criando links
O comando ln poderá ser utilizado para criar os dois tipos de link. Sua sintaxe é a
seguinte:
A tabela a seguir descreve as principais opções que podemos utilizar com o comando
ln:
Opção
Opção GNU Descrição
Unix
-s --symbolic Utilizada para criar um link simbólico para arquivos.
-d --directory Cria um link físico para diretórios.
No exemplo anterior, foi possível criar um link simbólico para o arquivo chamado
services, apontando para o link de nome link-simbólico. É importante salientar
algumas diferenças entre o arquivo original e o link simbólico, como número de
inode, tamanho e permissões. Isso se deve ao fato de o link simbólico ser apenas
um atalho para o arquivo original, mantendo dependências diretas com relação ao
arquivo original.
202
Comandos GNU e Unix 4
Nesse exemplo, para criar um link físico com o comando ln, bastou utilizar o comando
ln sem qualquer tipo de opção. É possível observar agora que todas as informações
do arquivo original são idênticas às do arquivo link-físico, mudando apenas o nome,
o que dá a impressão de que o arquivo foi duplicado, mas, devido às características
do inode, apenas um novo nome foi adicionado ao arquivo original.
Podemos observar, também, que uma informação que fica à direita das permissões
também sofreu uma leve alteração. Esse valor é o número de links físicos presentes
para esse arquivo, ou seja, a quantidade de nomes para ele. Na imagem que acabamos
de ver, tal valor é 2. Já na imagem que ilustra a criação de link simbólico, o valor logo
à direita das permissões é 1.
4.1.57. expand
O comando expand é utilizado para converter tabulações TAB (oito espaços) em uma
quantidade de espaços desejada, exibindo o resultado na saída padrão.
A tabela a seguir descreve as principais opções que podemos utilizar com o comando
expand:
Opção
Opção GNU Descrição
Unix
Converte apenas os TABs que estiverem no
-i --initial
início das linhas.
Define um número de espaços desejados para
-t [numero] --tabs[numero]
a conversão.
No exemplo anterior, primeiro foi criado o cenário com o comando echo, imprimindo
na tela a respectiva frase com uma tabulação TAB em seu início. Por meio do
redirecionador |tee, o resultado foi armazenado no arquivo de nome arq-com-tab e
exibido na tela ao mesmo tempo. Logo em seguida, foi aplicado o comando expand
no arquivo de nome arq-com-tab, que substituiu a tabulação TAB por um simples
espaço.
203
Linux LPI - Administração
4.1.58. unexpand
O comando unexpand é utilizado para converter agora uma sequência de espaços
em branco (no mínimo dois) em tabulações TAB, exibindo o resultado da conversão
na saída padrão.
A principal opção que podemos utilizar com o comando unexpand é a -t, que define
um número de tabulações TAB que será utilizado na conversão.
Para dividir um arquivo por tamanho ou número de linhas, deverá ser informado ao
comando split qual tamanho terá cada arquivo ou a quantidade de linhas. O comando
não calcula automaticamente, e o arquivo original permanecerá intacto e um sufixo
padrão será atribuído aos nomes de arquivos que forem divididos.
204
Comandos GNU e Unix 4
A tabela a seguir descreve as principais opções utilizadas com split:
No primeiro uso do comando split (terceira linha da imagem anterior), foi feita uma
divisão do arquivo de nome services por número de linhas, colocando 250 linhas por
arquivo e exibindo o processo de divisão. Já no segundo exemplo (décima primeira
linha da imagem anterior), uma divisão por tamanho foi feita, sendo especificada
uma divisão de arquivos de 6 kilobytes cada, mas com alguns complementos, como
aplicar um nome aos arquivos divididos e também usar sufixo numérico em vez de
alfabético.
205
Linux LPI - Administração
Para juntar novamente tais arquivos divididos, basta utilizar o recurso do redirecionador
> junto com o comando cat, que visualizará cada arquivo, jogando o resultado para
um arquivo novo. O exemplo a seguir ilustra essa ação:
A tabela a seguir descreve as principais opções que podemos utilizar com o comando
df:
Opção
Opção GNU Descrição
Unix
Também exibe na listagem os sistemas de arquivos
-a --all que não ocupam blocos, ou seja, consomem espaço
real. Geralmente são montagens virtuais.
--human- Exibe o tamanho em sufixo amigável, colocando M
-h
readable para Megabyte, G para Gigabyte etc.
Exibe, em vez do tamanho disponível e utilizado,
-i --inodes informações de uso de i-nodes nos sistemas de
arquivos.
Exibe somente os detalhes do sistema de arquivo
-t <S. A.> --type= <S. A.>
indicado.
206
Comandos GNU e Unix 4
Se entrarmos apenas com o comando df, sem especificar um parâmetro e ponto
de montagem, é gerada uma listagem de todas as partições atualmente em uso no
sistema, com suas respectivas informações de utilização, representando também o
ponto de montagem ao qual cada partição está relacionada.
df -h /
Exemplo:
du /etc/
Opção
Opção GNU Descrição
Unix
Faz uma contagem geral, exibindo também o tamanho
-a --all
de todos os arquivos presentes nos subdiretórios.
Exibe um total quando é passado mais de um parâmetro
-c --total
para cálculo de tamanho.
Exibe apenas o tamanho total do diretório informado,
-s --summarize
não exibindo o tamanho de cada subdiretório dele.
--human- Exibe o tamanho em sufixo amigável, colocando M para
-h
readable Megabyte, G para Gigabyte etc.
207
Linux LPI - Administração
free [opcao]
Opção Opção
Descrição
Unix GNU
-b --bytes Exibe o resultado em bytes.
Exibe o resultado em kilobytes (KB), que é o formato padrão
-k --kb
da saída do comando free.
-m --mb Exibe o resultado em megabytes (MB).
-g --gb Exibe o resultado em gigabytes (GB).
-t --total Exibe o resumo do total de memória física mais espaço swap.
A seguir, temos o comando free executado com a opção –k, o que faz com que o
resultado na tela seja exibido em kilobytes:
208
Comandos GNU e Unix 4
4.1.64. Exibindo/configurando a data e hora do
sistema
O comando date exibe a data e a hora do sistema e permite configurar seu modo de
exibição através de opções que podem ser encontradas no manual acessível a partir
do comando man date.
O exemplo utiliza o comando uname com a opção –a, o que retorna informações
completas sobre o kernel do sistema.
209
Linux LPI - Administração
No exemplo anterior, foi feita a leitura do arquivo chamado arquivo.txt. A quinta linha
desse arquivo é complementada com a informação Arquivo 1. Em seguida, é feita a
leitura do arquivo chamado arquivo2.txt, no qual a quinta linha é complementada
com a informação Arquivo 2. Também, duas novas linhas são adicionadas, sendo que
a última repete a informação da linha anterior. Então, o comando diff é executado
para fazer a comparação entre os dois arquivos e informar a diferença entre eles.
time <programa>
210
Comandos GNU e Unix 4
No exemplo a seguir, a execução do comando time permite verificar qual dos métodos
de compactação, Bzip ou Gzip, é mais rápido. Vejamos:
4.1.69. find
O comando find é, sem dúvida, o comando mais completo quando o assunto é a
busca de arquivos, seja qual for o tipo. Sua sintaxe, dependendo da filtragem aplicada
e da sua utilização, poderá se tornar extensa e complexa. Porém, ele é um comando
muito versátil e proporciona muita flexibilidade na hora de buscar arquivos, podendo
localizar arquivos de determinados tipos (arquivo comum, arquivo de dispositivo
de bloco, arquivo de socket, etc.), arquivos que tenham determinado tamanho, que
sejam de determinado dono etc.
A tabela seguinte descreve as principais opções que podem ser utilizadas com find:
Opção Descrição
Busca arquivos de qualquer tipo, cujo nome seja igual a
-name <nome> <nome>, conforme colocado na busca. A busca é feita com
a característica case-sensitive.
Busca arquivos de qualquer tipo, cujo nome seja igual a
-iname <nome> <nome>, conforme colocado na busca. A busca agora é
feita com a característica case-sensitive desabilitada.
-mindepth <valor> Localiza arquivos em uma estrutura mínima de subdiretórios.
Localiza arquivos em uma estrutura máxima de
-maxdepth <valor>
subdiretórios.
211
Linux LPI - Administração
Opção Descrição
Especifica o tipo de arquivo desejado na busca, em que o
tipo pode ser:
•• f: Arquivo regular;
212
Comandos GNU e Unix 4
Um detalhe importante sobre as buscas por tempo é que o valor de <n> pode receber
alguns complementos, como + ou -, em que:
Tempo
Descrição
<n>
Retorna tudo que foi acessado ou modificado a exatamente
<n>
<n> minutos/dias atrás.
Retorna tudo que foi acessado ou modificado a menos (-) de
<-n>
<n> minutos/dias atrás.
Retorna tudo que foi acessado ou modificado a mais (+) de
<+n>
<n> minutos/dias atrás.
Sobre o tamanho dos arquivos, o valor representado por <n> também pode receber
complementos como + ou -, em que:
Tamanho
Descrição
<n>
Retorna um tamanho que tenha exatamente o valor
<n>
especificado em <n>.
<-n> Retorna todo valor menor (-) que o valor especificado em <n>.
<+n> Retorna todo valor maior (+) que o valor especificado em <n>.
No exemplo adiante, o comando find foi utilizado para localizar arquivos com o nome
arquivo.txt:
4.1.70. locate
O comando locate também é utilizado para localizar arquivos no sistema. Ele não
tem toda a versatilidade do comando find, mas, em compensação, é extremamente
rápido. Um dos motivos para tanto é que o comando locate faz as buscas pelos nomes
de arquivos em um banco de dados, em vez de ficar acessando o disco procurando
arquivo por arquivo. É uma boa característica do comando locate, mas ao mesmo
tempo não é tão prática, pois esse banco de dados deverá ser criado e constantemente
atualizado para que a busca seja sempre completa. Esse banco de dados é controlado
pelo comando updatedb, que será o próximo comando que estudaremos.
213
Linux LPI - Administração
A tabela seguinte descreve as principais opções que podem ser utilizadas com locate:
4.1.71. updatedb
Utilizando o comando updatedb, o banco de dados utilizado pelo comando locate é
criado e atualizado. É esse comando que, com a utilização de algumas regras, poderá
criar um banco de dados que corresponda a necessidades específicas.
Como a criação da primeira base de dados do sistema exige uma varredura do disco
que nunca foi realizada anteriormente, o updatedb funciona de forma lenta na
primeira vez em que é utilizado.
updatedb [opcao]
214
Comandos GNU e Unix 4
4.1.72. sleep
O comando sleep aplica uma pausa, em segundos de tempo. O exemplo a seguir
aplica ao sistema uma pausa de 15 segundos para retornar ao prompt:
sleep 15
4.1.73. logger
Com o comando logger, o usuário manualmente cria mensagens de log. O conteúdo
da mensagem deve ser inserido como argumento do comando em sua sintaxe.
Vejamos o seguinte exemplo:
No exemplo anterior, utilizamos o comando logger para inserir a frase Log de Teste
Inserido dentro do log do sistema. Pudemos conferir o resultado executando o
comando tail no arquivo de log /var/log/messages.
4.1.74. xargs
O comando xargs permite a criação de linhas de comando para serem executadas por
programas determinados pelo usuário. Vejamos o seguinte exemplo:
215
Linux LPI - Administração
4.1.75. seq
O comando seq tem a simples função de gerar uma sequência de números, seguindo
os intervalos definidos pelo usuário. Aliado a outros comandos, sua aplicação pode
ser bastante variada e útil. Vejamos o seguinte exemplo:
No exemplo anterior, o comando seq foi executado duas vezes. Na primeira vez, ele
criou uma sequência de 1 a 5. Na segunda, gerou uma sequência de 0 a 10 com um
incremento de 2 em 2, ou seja, somente os números pares foram retornados.
4.1.76. tar
O tar é usado como empacotador de arquivos, preservando as informações do
sistema de arquivos aplicados a eles, ou seja, os metadados. É usado em conjunto
com compactadores como gzip e bzip2.
Os arquivos empacotados pelo tar têm a extensão .tar, porém o destino de um arquivo
empacotado pode ser diretamente um dispositivo de fita que foi originalmente iniciado
com a utilização do comando tar.
216
Comandos GNU e Unix 4
A tabela a seguir descreve as principais opções que podemos utilizar com o
empacotador tar:
217
Linux LPI - Administração
4.1.77. cpio
Como o tar, o comando cpio também exerce as funções de empacotador ou
desempacotador, no caso do uso da opção -i, além de poder ser usado simplesmente
para copiar arquivos. Embora seja capaz de ler e escrever no formato .tar, o cpio
difere do tar por trabalhar apenas com redirecionamentos de entrada e saída padrão.
No exemplo a seguir, compactamos a pasta /etc com o cpio. Além deste último
(executado com a opção –ov), utilizamos também o comando ls. O arquivo compactado
foi redirecionado para a pasta /root/testecpio.
218
Comandos GNU e Unix 4
Ao verificarmos a pasta de destino utilizando o comando ls –l, podemos notar que o
arquivo foi criado com o tamanho de 5,7 MB:
219
Linux LPI - Administração
4.1.78. gzip
O comando gzip é utilizado para compactar e também descompactar arquivos.
Arquivos compactados com o utilitário gzip são identificados pela extensão .gz. Sua
sintaxe é a seguinte:
Um detalhe muito importante a ser considerado é que um diretório não pode ser
compactado de forma direta pelo gzip. Ele tem que, obrigatoriamente, se tornar um
arquivo empacotado, para depois ser compactado. Porém, é possível compactar todos
os arquivos de um determinado diretório através da função recursiva. A compressão
pode ser programada para seguir automaticamente o processo de empacotamento
realizado pelo tar, com o uso da opção -z.
A seguir, vejamos algumas opções que podem ser utilizadas com o gzip:
Opção
Opção GNU Descrição
Unix
Não compacta o arquivo original, porém o resultado da
-c --stdout compactação será enviado para a saída padrão (tela), e,
geralmente, redirecionado para um novo arquivo.
-d --decompress Utilizada para descompactar arquivos no formato .gz.
Força a compactação ou descompactação de um
-f --force arquivo, por exemplo, se existe um arquivo de mesmo
nome já compactado ou descompactado.
Exibe informações detalhadas de um arquivo
-l --list compactado, como o tamanho do arquivo compactado
e o tamanho do arquivo pós-compactação.
-q --quiet Não exibe mensagens de alerta.
Compacta, recursivamente, todos os arquivos presentes
-r --recursive em um diretório e também arquivos dentro de supostos
subdiretórios.
Utilizada para testar a integridade do arquivo
-t --test
compactado.
-v --verbose Exibe o processo de compactação ou descompactação.
Utilizada para gerenciar o grau de compactação, sendo
<nivel> um valor de 1 a 9. Quanto menor o valor,
menor a compactação, e, consequentemente, menor
será o tempo de execução do comando. Quanto maior
-<nivel> --fast / --best
o valor, maior a compactação, e, consequentemente,
também será maior o tempo de execução do comando.
O comando GNU --best equivale à opção Unix -9, e --fast
equivale à opção Unix -1.
220
Comandos GNU e Unix 4
Vejamos:
221
Linux LPI - Administração
Comando Descrição
Visualiza, com o comando cat, arquivos compactados no formato
zcat
.gz, sem necessariamente descompactar os arquivos.
Utiliza o recurso do comando grep para localizar palavras ou
zgrep expressões em um arquivo compactado no formato .gz, sem
descompactá-lo.
Utiliza o recurso do comando less para visualizar um arquivo
zless
compactado no formato .gz.
Utiliza o recurso do comando more para visualizar um arquivo
zmore
compactado no formato .gz.
222
Comandos GNU e Unix 4
4.1.80. bzip2
O comando bzip2 é utilizado para compactar e também descompactar arquivos.
Arquivos compactados com o utilitário bzip2 são identificados pela extensão .bz2.
Sua sintaxe é a seguinte:
Opção
Opção GNU Descrição
Unix
Não compacta o arquivo original, porém o resultado
da compactação será enviado para a saída padrão
-c --stdout
(tela), e, geralmente, redirecionado para um novo
arquivo.
Utilizada para descompactar arquivos que foram
-d --decompress
compactados pelo comando gzip.
Força a compactação ou descompactação de um
-f --force arquivo, por exemplo, se já existe um arquivo de
mesmo nome, já compactado ou descompactado.
-q --quiet Não exibe mensagens de alerta.
Utilizada para testar a integridade do arquivo
-t --test
compactado.
-v --verbose Exibe o processo de compactação ou descompactação.
Utilizada para gerenciar o grau de compactação,
sendo <nivel> um valor de 1 a 9. Quanto menor o
valor, menor a compactação e, consequentemente,
menor será o tempo de execução do comando.
-<nivel> --fast/--best Quanto maior o valor, maior a compactação e,
consequentemente, também será maior o tempo
de execução do comando. O comando GNU --best
equivale à opção Unix -9, e --fast equivale à opção
Unix -1.
Um detalhe muito importante é que um diretório não pode ser compactado de forma
direta pelo comando gzip, tendo, obrigatoriamente, que se tornar primeiro um
arquivo empacotado, para depois ser compactado.
223
Linux LPI - Administração
Para descompactarmos esse mesmo arquivo, utilizamos bzip2 com a opção –d, como
mostrado a seguir:
224
Comandos GNU e Unix 4
4.1.81. Família de comandos do bzip2
O comando bzip2 também tem uma família de comandos utilizados com a função
de apenas visualizar arquivos compactados, porém utilizando recursos de alguns
comandos vistos anteriormente. Essa família de comandos, descrita na tabela adiante,
pode ser útil quando houver a necessidade de executar determinada tarefa em um
arquivo compactado com o formato bzip2.
Comando Descrição
Visualiza, com o comando cat, arquivos compactados no formato
bzcat
.bz2, sem necessariamente descompactar o arquivo.
Utiliza o recurso do comando grep para localizar palavras ou
bzgrep expressões em um arquivo compactado no formato .bz2, sem
descompactá-lo.
Utiliza o recurso do comando less para visualizar um arquivo
zless
compactado no formato .bz2.
Utiliza o recurso do comando more para visualizar um arquivo
zmore
compactado no formato .bz2.
4.1.82. gunzip
O comando gunzip é utilizado apenas para descompactar arquivos, tendo exatamente
a mesma função do comando gzip -d. Ele é utilizado para descompactar apenas um
arquivo ou todos os arquivos presentes em um diretório específico, devido à função
recursiva.
Opção Opção
Descrição
Unix GNU
Não descompacta o arquivo original, porém o resultado da
-c --stdout descompactação será enviado para a saída padrão (tela),
e, geralmente, redirecionado para um novo arquivo.
Força a descompactação de um arquivo, por exemplo, se
-f --force
existe um arquivo de mesmo nome já descompactado.
-q --quiet Não exibe mensagens de alerta.
225
Linux LPI - Administração
Opção Opção
Descrição
Unix GNU
Descompacta recursivamente todos os arquivos presentes
-r --recursive em um diretório, e também arquivos dentro de supostos
subdiretórios.
-v --verbose Exibe o processo de descompactação.
4.1.83. bunzip2
O comando bunzip2 é utilizado apenas para descompactar arquivos, e tem exatamente
a mesma função do comando bzip2 –d. A sintaxe do bunzip2 é a seguinte:
Opção Opção
Descrição
Unix GNU
Não descompacta o arquivo original, porém o resultado
-c --stdout da descompactação será enviado para a saída padrão
(tela), e geralmente redirecionado para um novo arquivo.
226
Comandos GNU e Unix 4
No exemplo a seguir utilizamos o bunzip2 para descompactarmos um arquivo criado
pelo bzip2:
No exemplo a seguir, o comando dd faz uma cópia fiel do HD master primário (hda)
para o HD slave primário (hdb):
dd if=/dev/hda of=/dev/hdb
Já neste outro exemplo, o comando dd copia o setor MBR (Master Boot Record) para
um arquivo. O MBR localiza-se nos primeiros 512 setores do disco.
Os backups incremental e diferencial podem ser definidos pela sua relação com o
último backup completo realizado. O backup incremental salva as diferenças em
relação ao backup completo, de forma que serão salvos, em cada backup incremental,
os dados adicionais ao último backup completo. Assim, caso sejam feitos três backups
incrementais, em momentos 1, 2 e 3, o primeiro salvará os dados do backup completo
até o momento 1; o segundo salvará do backup completo até o momento 2; já o
terceiro cobrirá os dados do backup completo até o momento 3.
227
Linux LPI - Administração
Dicas LPI
•• O Inode é uma estrutura que é responsável por conter informações básicas
sobre seus arquivos e pastas, como permissões de acesso, identificação
dos donos dos arquivos, data e hora do último acesso, alterações, tamanho
e o mais importante: os famosos ponteiros para o arquivo em si. De modo
geral, o Inode é a identidade de um arquivo ou diretório, é uma identificação
única para ele;
•• A grande maioria dos comandos básicos deve formar sua base sólida de
conhecimento e, certamente, será necessária para resolver problemas. O
touch, além de criar arquivos, pode mudar alguns campos da timestamp,
como hora e tempo;
•• Uma opção do comando cp, muito útil em nosso dia a dia, é -p, que faz com
que a cópia mantenha dois arquivos, ou seja, não modifica a data e hora de
criação, seus donos e nem suas permissões;
228
Comandos GNU e Unix 4
4.2. Gerenciando processos no sistema
Em sistemas Unix-like, o gerenciamento de processos seguirá um modelo padrão, que
poderá ser utilizado em todos os sistemas operacionais que seguem o padrão POSIX.
229
Linux LPI - Administração
•• Estado
Todo processo em execução tem um tipo de estado que o define. Por meio desse
estado, é possível compreender em qual ciclo de execução tal processo se encontra,
uma vez que os processos têm um ciclo de vida em que nascem, executam suas
funções e morrem, caso não tiverem mais utilidade ao terminá-las.
Estado Descrição
O processo se encontra em execução atualmente e consumindo
Running
recursos.
O processo se encontra parado, não consumindo nenhum tipo de
Stopped
recurso até que seja liberado para Running novamente.
Enquanto não é solicitado, o processo fica hibernando e, portanto,
Sleeping
não consome recursos.
O processo fica travado, não executa sua função, porém, continua
Zombie
consumindo algum tipo de recurso.
•• Recursos
•• Proprietário
Os processos terão donos, que poderão intervir na forma como estão sendo
executados no sistema e também gerenciar seu funcionamento. É importante ressaltar
que usuários comuns só podem gerenciar os seus próprios processos, não sendo
permitido que eles modifiquem o funcionamento dos processos de outros usuários
ou do sistema. O usuário root, que é o administrador, terá permissão para gerenciar
qualquer tipo de processo em execução no sistema.
•• Prioridade
230
Comandos GNU e Unix 4
•• Número de identificação
Para gerenciar os processos, como o estado em que se encontram ou até mesmo suas
prioridades de execução, é preciso identificá-los por meio de um número, atribuído
em seu início. Esse número de identificação é conhecido como PID (Process Identifier).
Atribuído pelo próprio kernel, ele não pode ser utilizado por mais de um processo ao
mesmo tempo, mas pode ser reaproveitado posteriormente.
Além do PID, existe outra notação, chamada PPID (Parent Process Identifier), que
corresponde ao número do processo pai do processo atual. Processos são executados
em cadeia, desde o momento inicial do carregamento do sistema, no qual o primeiro
processo, de nome init e com PID 1, é carregado. Em uma relação de processo pai e
processo filho, um processo pode gerar outros processos, estabelecendo, assim, um
vínculo direto entre eles. Sobre essa relação, temos:
O processo filho depende, de forma direta, de seu processo pai; assim, se o processo
pai parar por algum motivo, o processo filho também tem sua funcionalidade
interrompida. Entretanto, se o processo filho parar, o processo pai continuará seu
funcionamento normalmente. Essa relação é atribuída a todos os processos em
funcionamento.
4.2.2. Listando processos
Para listar e obter informações sobre os processos em execução no sistema, dispomos
de diversos comandos. Por meio deles, podemos obter qualquer tipo de informação
relacionado aos processos em execução, como PID, estado, prioridade de execução etc.
231
Linux LPI - Administração
4.2.3. ps
O comando ps é utilizado apenas para obter informações sobre os processos que
estão sendo executados no sistema. Há várias informações que poderão ser obtidas
por meio deste comando, além dos simples nomes dos processos em execução,
PID, donos, prioridades, tempo de execução, entre outros. É um comando completo,
que trabalha com as opções Unix, BSD e GNU para manter uma padronização para
administradores que trabalham com outros sistemas Unix-like.
ps [opcoes]
Outra característica importante do comando ps, que também está ligada, de forma
direta, à grande quantidade de opções, é a quantidade de informações que podem
ser obtidas em sua execução. As informações são divididas em colunas, e cada opção
poderá exibir colunas contendo informações específicas.
Coluna Descrição
USER Nome do usuário dono do processo.
UID Número de identificação (UID) do usuário dono do processo.
PID Número de identificação do processo.
PPID Número de identificação do processo pai.
%CPU Porcentagem do processador em uso.
%MEM Porcentagem da memória em uso.
VSZ (Virtual Size) Tamanho virtual do processo.
RSZ (Resident Set
Indica a quantidade de memória utilizada (em kilobytes).
Size)
Nome do terminal associado ao processo. Caso o valor seja
TTY interrogação (?), o processo é daemon, e sua execução é
independente de um terminal.
232
Comandos GNU e Unix 4
Coluna Descrição
START Hora em que o processo foi iniciado.
TIME Tempo de processamento consumido pelo processo.
NI Valor de prioridade ajustado pelo comando nice ou renice.
PRI Prioridade real do processo, controlado pelo próprio kernel.
Define o estado do processo, em que temos os valores:
•• R: Executando;
•• S: Dormindo, suspenso;
•• T: Parado;
•• X: Processo finalizado;
•• s: Líder de sessão;
233
Linux LPI - Administração
Opção
Opção Unix Opção BSD Descrição
GNU
Exibe uma lista completa dos
processos em execução (daemons
-A / -e
e processos ligados a algum
terminal).
Exibe apenas uma lista dos
processos ligados a um terminal,
-a
exceto processos líderes de sessão
(processos pal).
Exibe uma lista dos processos
A ligados a um terminal, incluindo
processos líderes de sessão.
Exibe uma lista completa dos
-d processos em execução, exceto
processos líderes de sessão.
Exibe apenas os processos que têm
R
o estado Running.
-C Exibe informações do processo que
<processo> tenha o nome especificado.
--group Exibe informações dos processos
-g<nome>
<nome> do grupo de nome especificado.
--user Exibe informações do processo que
-u<grupo> U <grupo>
<grupo> pertença ao usuário especificado.
Exibe informações do processo que
-p<pid> <pid> --<pid>
tenha o PID especificado.
Exibe informações dos processos
T --tty
-t<terminal> que estão sendo executados no
<terminal> <terminal>
terminal de nome especificado.
j/l/u/v Exibe mais formatos de colunas na
-F
/x listagem dos processos.
Define manualmente o formato de
colunas desejado na visualização de
o --format informações dos processos. Sobre
-o<coluna>
<coluna> <coluna> as possíveis colunas, podemos
acompanhar a próxima tabela, ou
executar o comando ps L.
234
Comandos GNU e Unix 4
Opção
Opção Unix Opção BSD Descrição
GNU
Exibe a listagem de processos em
-H
formato hierárquico.
Exibe o nome dos formatos
L de coluna visualizáveis com o
comando ps.
Coluna Descrição
%cpu Exibe a coluna de controle de porcentagem de processador em uso.
%mem Exibe a coluna de controle de porcentagem de memória em uso.
command Exibe a coluna com o nome do processo em execução.
Exibe a coluna, especificando o nome dos grupos que estão
group
relacionados ao processo.
Exibe a coluna de valor de prioridade ajustado pelos comandos nice
nice
e renice.
Exibe a coluna com o valor de prioridade real do processo, controlado
pri
pelo próprio kernel.
rsz Exibe a coluna com a quantidade de memória utilizada pelo processo.
start Exibe a coluna com a hora em que o processo iniciou sua execução.
stat Exibe a coluna com o estado de execução do processo.
time Exibe a coluna com o tempo de consumo de recursos pelo processo.
Exibe a coluna com o nome do terminal ao qual o processo está
tty
associado.
uid Exibe a coluna com número de UID relacionado ao dono do processo.
user Exibe a coluna com o nome do usuário dono do processo.
vsz Exibe a coluna com o tamanho virtual do processo.
235
Linux LPI - Administração
Adicione a opção f e perceba que é possível visualizar quem são os processos pai e
filho. Dessa forma, fica mais fácil finalizar ou gerenciar toda uma árvore de processos.
236
Comandos GNU e Unix 4
Já com o comando ps –e f, é possível visualizar os processos de uma forma mais
organizada e com seus respectivos processos filho:
4.2.4. pidof
O comando pidof é utilizado para verificar o PID de um processo em execução, caso
o nome do processo seja especificado. Se nenhum processo for indicado, o comando
informará o PID de todos os processos em execução. Sua sintaxe é a seguinte:
Opção Descrição
-s Leva o comando a retornar somente o primeiro PID encontrado.
Retorna somente o PID de processos localizados num mesmo
diretório raiz. Como usuários comuns não têm acesso a informações
-c
relacionadas a processos dos quais eles não são donos, esta opção
só tem funcionalidade para o superusuário.
Retorna o PID de shells que estejam executando os processos
-x
especificados.
Os processos cujo PID sejam informados serão omitidos no retorno
-o
do comando.
237
Linux LPI - Administração
4.2.5. pstree
Com o comando pstree, os processos em andamento no sistema são mostrados no
formato de árvore genealógica, com ligações entre processos pai e processos filho.
Em conjunto com o comando less, a saída do comando pstree pode ser melhor
visualizada, já que os diagramas em forma de árvore são geralmente grandes demais
para exibição em uma tela só. Com o comando less, a saída será exibida em telas
diferentes e pode ser navegada com a Barra de Espaço e a tecla B, que avançam e
retornam a visualização respectivamente.
Opção Descrição
-p Exibe os PIDs dos processos.
Destaca em negrito o processo atual e seus ancestrais, caso esse
-h
destaque seja suportado pelo sistema.
Leva a árvore a ser organizada por ordem de PID, em vez da ordem
-n
alfabética padrão.
Exibe, entre parênteses, os proprietários dos processos, a menos que
-u
sejam filhos de processos de um mesmo proprietário.
Impede o truncamento de informações em árvores cuja exibição não
-l
caiba na largura da tela.
Exibe os argumentos da linha de comandos dos processos iniciados
-a
por um usuário, e não por outro processo.
4.2.6. top
O comando top também é utilizado para obter informações dos processos que estão
sendo executados e ainda exibe as informações dos processos em tempo real, em
nível de monitoramento, sendo possível obter praticamente todas as informações que
o comando ps exibe.
238
Comandos GNU e Unix 4
Sua sintaxe é a seguinte:
top [opcoes]
Outra característica do comando top é que, por meio dele, é possível gerenciar os
processos do estado de execução em que se encontram, e até mesmo suas prioridades.
A imagem a seguir ilustra sua utilização:
•• Opções externas
239
Linux LPI - Administração
•• Opções internas
Opção
Descrição
interna
<enter> ou Atualiza o tempo de monitoramento dos processos no momento
<espaço> desejado, sem que seja preciso aguardar a atualização automática.
<h> ou <?> Carrega o menu de ajuda do top.
<B> Desabilita o recurso de destaque em negrito do top.
Redefine o tempo, em segundos, para a atualização automática
<d> ou <s>
das informações dos processos monitorados pelo top.
Determina que sejam monitorados apenas os processos que
<u> ou <U>
pertencem ao dono especificado.
<q> Sai do top.
Define um novo valor nice de prioridade ao processo de PID
<r>
especificado.
<Z> Altera as cores da janela do top.
Salva, de forma permanente, as possíveis alterações feitas no top
<W> com os comandos anteriormente apresentados, deixando essas
configurações salvas como padrão.
Desabilita ou habilita informações de tempo de execução do
<l> sistema e a quantidade de usuários autenticados que aparecem
no cabeçalho do top.
Desabilita ou habilita informações de memória que aparecem no
<m>
cabeçalho do top.
Desabilita ou habilita informações de processos e consumo de
<t>
processador que aparecem no cabeçalho do top.
<z> Desabilita ou habilita o top monocromático.
<n> / <#> Define uma quantidade de processos por página.
Comandos para classificação dos processos no top, em que:
240
Comandos GNU e Unix 4
4.2.7. htop
O comando htop é semelhante ao comando top anteriormente apresentado, porém,
apresenta mais interatividade e controle sobre os processos em execução.
htop [opcoes]
241
Linux LPI - Administração
4.2.9. CTRL + Z
Uma vez que o programa está sendo executado em primeiro plano, prendendo o
terminal atual, é possível enviá-lo para segundo plano, sem precisar finalizar sua
execução, utilizando o atalho CTRL + Z.
Ao enviar um processo para o segundo plano com a sequência de teclas CTRL + Z, seu
estado é alterado para Stopped (parado), e, por meio do comando bg (apresentado
logo a seguir), torna-se possível alterar o estado desse processo de Stopped para
Running (executando).
4.2.10. &
Outra forma de enviar um processo para segundo plano é no momento de sua execução,
bastando apenas incluir o caractere & no final do comando que será executado. Isso
permite que o processo seja imediatamente enviado para segundo plano, em estado
Running, sem precisar utilizar algum outro comando para tal função. É a forma mais
prática de enviar programas ao segundo plano.
<programa> &
242
Comandos GNU e Unix 4
A imagem adiante esboça essa ação:
4.2.11. jobs
É possível enviar vários programas para o segundo plano e, para obter uma lista
dos programas que estão em execução no segundo plano e seu respectivo estado,
utilizamos o comando jobs. Sua sintaxe é a seguinte:
jobs [opcoes]
A tabela a seguir mostra opções que podem ser usadas com o jobs:
Opção Descrição
-p Exibe somente o número de PID dos processos em segundo plano.
Além de exibir as informações normais dos processos em segundo
-l
plano, exibe também o número de PID de cada um desses processos.
243
Linux LPI - Administração
4.2.12. Comando bg
O comando bg é utilizado para alterar o estado de um processo que se encontra em
segundo plano, de Stopped para Running. Também é possível fazer referência aos
processos em segundo plano pelos seus respectivos nomes, porém, isso pode gerar
problemas, caso processos em segundo plano tenham nomes idênticos. A sintaxe de
bg é a seguinte:
bg [job]
O exemplo anterior nos mostra a utilização do comando bg, em que havia um processo
de ordem [1], em segundo plano, em estado Stopped. Após a execução do comando
bg em tal processo, ele teve seu estado alterado para Running.
4.2.13. Comando fg
O comando fg tem a finalidade de trazer um programa de volta ao primeiro plano,
deixando seu estado em Running, independentemente de seu estado em segundo
plano. Também é possível utilizar o nome do processo para executar tal tarefa, porém,
problemas podem ocorrer caso existam processos com nomes idênticos no segundo
plano.
A sintaxe de fg é a seguinte:
fg [job]
244
Comandos GNU e Unix 4
4.2.14. Alterando o comportamento dos processos
Após conhecermos comandos que nos permitem obter informações sobre os processos
em execução, abordaremos o gerenciamento avançado de processos, que lida com o
envio de sinais e permite alterar o comportamento desses por meio de modificações
em seus estados de execução ou prioridade.
4.2.15. kill
O comando kill é utilizado para enviar sinais aos processos que estão sendo executados
pelo sistema. Esses sinais poderão mudar o comportamento dos processos de diversas
maneiras, podendo encerrá-los, pará-los ou até mesmo reiniciá-los. Sua sintaxe é a
seguinte:
Para visualizarmos a lista completa de sinais que poderão ser utilizados pelo comando
kill, devemos digitar kill -l. A tabela a seguir descreve os principais sinais utilizados
com o comando kill no envio de processos:
Caso nenhum sinal seja especificado ao comando kill para envio a algum processo
pelo PID, o sinal padrão de envio será o SIGTERM.
245
Linux LPI - Administração
4.2.16. killall
O comando killall é muito parecido com o comando kill anteriormente apresentado.
Ele envia aos processos exatamente os mesmos tipos de sinais que o comando kill.
A diferença, entretanto, é que o comando killall faz referência aos processos pelo
nome, e não pelo número de PID.
Caso nenhum sinal seja especificado ao comando killall, o sinal padrão SIGTERM é
enviado ao processo de nome especificado.
É necessário atentar para a utilização do comando killall, pois, caso haja processos com
nomes idênticos em execução no sistema, todos eles receberão o sinal especificado.
4.2.17. nice
O comando nice é capaz de trabalhar com o gerenciamento das prioridades dos
processos a serem executados, podendo inicializar um processo com a prioridade
desejada. A prioridade a ser definida segue o padrão adiante:
246
Comandos GNU e Unix 4
Sua sintaxe é a seguinte:
Vejamos:
4.2.18. renice
O comando renice também é utilizado para gerenciar prioridades, porém ele tem a
capacidade de alterar a prioridade de processos que já estão em execução no sistema.
Opção Descrição
Indica um nome de grupo para alterar todos os processos
-g <grupo>
relacionados a ele.
Indica um nome de usuário para alterar a prioridade de todos os
-u <usuário>
seus processos.
-p <pid> Indica o número de PID cuja prioridade se pretende alterar.
247
Linux LPI - Administração
Considerando que o processo já esteja sendo executado com a prioridade -10, vamos
utilizar o comando renice para reestabelecer o valor de prioridade 0, do processo
sleep, como exibido a seguir:
4.2.19. nohup
nohup <comando>
As saídas geradas pelo processo que foi iniciado com o comando nohup serão
armazenadas (por padrão) em um arquivo de nome nohup.out, que é gravado no
mesmo diretório em que o comando nohup foi inicializado.
No exemplo anterior, o comando ping foi executado junto com o comando nohup,
permitindo, assim, que ele se torne imune ao sinal SIGHUP.
248
Comandos GNU e Unix 4
4.2.20. screen
Esse programa é utilizado para trabalhar com vários terminais multiplexados, ou
seja, você poderá iniciar um processo em um determinado terminal e monitorá-lo por
outro. Quando você executa dentro de um login SSH remoto, você pode criar várias
novas janelas, todas na mesma sessão, alternar entre elas, ou visualizar de duas ou
mais de uma vez.
screen –S TOP
Execute o comando top. Depois, execute o atalho CTRL + A e, então, aperte a tecla A
, para que o prompt seja apresentado novamente.
screen -ls
Você poderá se desconectar desse terminal atual e conectar-se em outro. Com isso,
liste novamente as sessões do screen e abra a sessão de nome TOP.
Perceba que, mesmo você encerrando a sessão onde o top foi criado, ele continua em
execução, podendo ser aberto por qualquer outro terminal.
4.2.21. pgrep
Executa um filtro sobre a saída do comando ps, exibindo apenas os PIDs do comando
informado. Permite ainda que sejam executados filtros adicionais como apenas os
processos de um comando executado por um usuário específico.
Opção Descrição
-l Lista o PID e o comando localizado com base no filtro.
-u <usuário> Lista os processos relativos ao usuário informado.
Somente exibe os processos que casem exatamente com o
-x
padrão informado.
249
Linux LPI - Administração
pgrep –l ssh
4.2.22. pkill
Permite a finalização de processos baseado no padrão de pesquisa informado. Funciona
de forma análoga ao comando pgrep e aceita uma lista reduzida de parâmetros.
pkill -9 –x sshd
Dicas LPI
•• Uma listagem completa dos sinais possíveis pode ser vista na seção
STANDARD SIGNALS do man 7 signal. Alguns dos sinais mais utilizados
pelo kill podem ser vistos a seguir:
•• No diretório /proc você verá diversos arquivos com informações gerais que
o kernel nos fornece, por exemplo os arquivos: cpuinfo, ioport, memstat,
interrupts, mounts e swaps. Com o comando free, conseguimos ver
a quantidade de swap e memória utilizadas, e com o comando uptime,
conseguimos ver o tempo que a máquina está ligada;
250
Comandos GNU e Unix 4
4.3. Editor de texto vim
O editor de textos vim (vi improved) é um dos editores de textos mais utilizados
atualmente. O vim é o sucessor do antigo vi, porém muitos sistemas criam alias
(apelidos) para o vim, fazendo com que ele seja referenciado pelo nome vi.
Sendo assim, o editor pode ser facilmente identificado simplesmente por vi, mas é
importante lembrar que sua utilização é extremamente diferente, comparando as
versões atuais do vim e o vi na versão antiga. Essa convenção de nomenclatura facilita
seu acesso e utilização, uma vez que o antigo vi caiu em desuso.
Um dos motivos que tornam o vim um editor de textos útil e prático é o seu formato
e interface de comunicação final, que, para o principiante, é um pouco confusa, mas,
após o seu entendimento, é facilitadora. O vim é um editor de textos que poderá
ser utilizado diretamente na linha de comandos, porém, também existem versões
do vim para trabalhar no ambiente gráfico e até versões para sistemas operacionais
diferentes da base GNU/Linux.
251
Linux LPI - Administração
•• Modo de comandos
A maioria das teclas terá uma funcionalidade específica, como se cada uma delas fosse
um determinado comando que executará uma tarefa. Ou seja, no modo de comandos,
o vim é utilizado para manipular o arquivo, podendo executar tarefas de automação,
como copiar ou apagar uma sequência de linhas, ou tarefas de gerenciamento do
próprio arquivo, como salvar o arquivo simplesmente ou salvá-lo com nome e caminho
diferentes etc.
•• Modo de edição
É exatamente neste modo que o vim trabalhará como um editor de textos comum, no
qual as teclas terão suas funcionalidades reais e o texto poderá ser completamente
redigido ou alterado no formado desejado.
Saber alternar entre esses dois modos é essencial para executar qualquer tarefa
utilizando o editor de textos vim.
4.3.2. Utilizando o vim
O vim poderá ser inicializado diretamente na linha de comandos, a partir da digitação
da palavra vim simplesmente. Nesse modo de carregamento, o vim irá inicializar
com um arquivo novo e ainda sem nome. Mas também é possível inicializá-lo com um
arquivo já existente e a indicação de seu nome ou do caminho completo, caso seja
necessário, como no exemplo a seguir:
A tabela a seguir descreve opções que podemos utilizar para iniciarmos o vim:
Opção Descrição
+ Inicia o vim com o cursor no final do arquivo.
+<linha> Inicia o vim com o cursor na linha de número determinado.
252
Comandos GNU e Unix 4
4.3.3. Alternando entre o modo de comandos e o
modo de edição
O vim é sempre iniciado, por padrão, em modo de comandos, porém é possível
alternar tranquilamente para o modo de edição e, posteriormente, voltar para o modo
de comandos, e vice-versa.
Comando Descrição
i / <INSERT> Entra no modo de edição, mantendo o cursor na posição original.
Entra no modo de edição, movendo o cursor um caractere à
a
direita de sua posição original.
Entra no modo de edição, inserindo uma nova linha abaixo da
o
posição original do cursor.
4.3.4. Gerenciando arquivos
Depois que um determinado arquivo foi criado ou editado com o vim, também é
preciso conhecer alguns comandos para gerenciar o arquivo em si, por exemplo,
salvando alterações feitas ou simplesmente descartando-as. No modo de comandos,
temos a possibilidade de utilizar outros tipos de comandos, que serão sempre
precedidos pelo caractere : (dois-pontos). O comando passado junto com ele poderá
ser visualizado no rodapé da página do vim, como no exemplo a seguir:
253
Linux LPI - Administração
Comando Descrição
Sai do vim. Alterações feitas no arquivo, que não foram salvas,
:q
serão questionadas.
:w Salva as últimas alterações feitas.
Tem a mesma função do :w com a diferença de forçar a
:w!
sobrescrição.
:wq Salva as últimas alterações feitas e sai do vim.
:q! Sai sem salvar qualquer alteração feita no arquivo.
Salva o arquivo com o nome <nome-arq>. Como não foi
:w <nome-arq> especificado o caminho, o arquivo será salvo no diretório atual,
no qual o vim foi carregado.
Insere o conteúdo do arquivo de nome <outro-arq> no arquivo
:r <outro-arq>
atual, a partir da posição original do cursor.
Alterna a edição do arquivo atual para o arquivo de nome <arq-
:e <arq-teste>
teste>.
4.3.5. Automatizando tarefas
Com o vim, também é possível automatizar tarefas de gerenciamento do arquivo,
como copiar, apagar, recortar múltiplas linhas, inserir linhas etc. Vejamos:
Comando Descrição
yy Copia a linha inteira na qual se encontra o cursor.
Copia as <N> próximas linhas, a partir da posição atual do
<N>yy
cursor.
Dd Apaga a linha inteira na qual se encontra o cursor.
Apaga as <N> próximas linhas, a partir da posição atual do
<N>dd
cursor.
Apaga a partir da linha em que se encontra o cursor, até o
Dgg
início do arquivo (primeira linha).
Apaga a partir da linha em que se encontra o cursor, até o
dG
final do arquivo (última linha).
X Apaga um único caractere, no qual o cursor se encontra.
<N>x Apaga <N> caracteres, a partir da posição atual do cursor.
Recorta a linha em que se encontra o cursor e armazena-a no
cc
buffer.
254
Comandos GNU e Unix 4
Comando Descrição
Recorta <N> linhas, a partir da posição atual do cursor, e as
<N>cc
armazena no buffer.
p Cola o trecho de linhas que foi copiado, apagado ou recortado.
<n>p Cola <n> vezes o que estiver na área de transferência.
V Aciona a seleção visual de linhas.
J Junta a linha atual à seguinte.
u Desfaz a modificação mais recente.
Desfaz todas as modificações feitas na linha em que se
U
encontra o cursor.
Exclui todo o conteúdo da linha a partir da posição atual do
D
cursor.
r Substitui o conteúdo do início da linha em que o cursor estiver.
Substitui o caractere sob o cursor pelo que for colocado no
r<caractere>
lugar de <caractere>.
A Adiciona texto no fim da linha onde se encontra o cursor.
O Insere linha acima da linha atual.
CTRL + H Exclui o último caractere.
:%s/<string1>/
Substitui <string1> por <string2>.
<string2>/g
Comando Descrição
gg Move o cursos para a primeira linha.
G Avança para a última linha.
<n>G Avança para a linha N especificada.
$ Avança para o fim da linha atual.
^ Leva o cursor para o primeiro caractere não branco da linha atual.
:<n> Avança para a linha <n>.
CTRL + F Avança para a tela seguinte.
CTRL + B Leva o cursor para a tela anterior.
H Leva o cursor para a primeira linha da tela.
255
Linux LPI - Administração
Comando Descrição
h Leva o cursor um caractere à esquerda.
M Leva o cursor para o meio da tela.
L Avança para a última linha da tela.
j Avança para a linha seguinte.
k Leva o cursor para a linha anterior.
l Avança um caractere à direita.
w Avança para o começo da próxima palavra.
W Avança para o começo da próxima palavra, separada por espaço.
b Leva o cursor para o começo da palavra anterior.
B Leva o cursor para o início da palavra anterior, separada por espaço.
0 (zero) Leva o cursor para o começo da linha atual.
4.3.7. Realizando buscas
Para realizar buscas por palavras no vim, temos os seguintes comandos:
Comando Descrição
Faz uma busca, pelo texto inteiro, por aquilo que for colocado no
/<palavra>
lugar de <palavra>.
? <palavra> Leva o cursor até a ocorrência anterior à <palavra>.
n Repete o comando / ou ? mais recente.
N Repete, na direção inversa, o comando / ou ? mais recente.
Exibe o nome do arquivo, o número da linha atual e o total de
CTRL + G
linhas do texto.
256
Comandos GNU e Unix 4
4.3.8. Outros comandos úteis
O vim também traz diversos comandos úteis à utilização, ao gerenciamento e à
automatização do arquivo. A tabela a seguir descreve os principais deles:
Comando Descrição
CTRL + R Refaz as últimas ações dos comandos desfeitos.
. Repete o comando anterior.
N Vai para o próximo resultado da pesquisa.
Executa um comando de nome [comando] e exibe o resultado
:![comando] no arquivo simplesmente, não inserindo tal resultado como
conteúdo dele.
Executa um comando de nome [comando] e insere o resultado
:r![comando]
dele no arquivo atual.
Insere uma numeração de identificação das linhas no arquivo.
:set nu Esta numeração é apenas visual, não sendo inserida no arquivo
original.
:set nonu Desabilita a numeração no arquivo.
:help Inicializa a ajuda do vim.
cp /etc/vimrc ~/ .vimrc
257
Linux LPI - Administração
Pontos principais
Atente para os tópicos a seguir. Eles devem ser estudados com muita atenção,
pois representam os pontos mais importantes do capítulo.
•• O editor de textos vim (vi improved) é um dos editores de textos mais utilizados
atualmente. O vim é o sucessor do antigo vi, porém muitos sistemas criam alias
(apelidos) para o vim, fazendo com que ele seja referenciado pelo nome vi.
Material complementar
Sites Endereços
Expressões regulares http://aurelio.net/regex/apostila-conhecendo-regex.pdf
Man online http://man7.org/index.html
Vim http://vimdoc.sourceforge.net/
https://access.redhat.com/documentation/en-US/
Processos Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/
ch-System_Monitoring_Tools.html
258
Mapa mental para a fixação do aprendizado 4
259
4 Comandos
GNU e Unix
Teste seus conhecimentos
Linux LPI - Administração
☐☐ a) ls –o
☐☐ b) ls –l
☐☐ c) ls –a
☐☐ d) ls –R
☐☐ e) ls –p
☐☐ a) mkfile arquivo
☐☐ b) make file arquivo
☐☐ c) edit arquivo
☐☐ d) touch arquivo
☐☐ e) make arquivo
☐☐ a) mkdir /novo/diretorio/exemplo
☐☐ b) mkdir –p /novo/diretorio/exemplo
☐☐ c) makedir /novo/diretorio/exemplo
☐☐ d) createdir /novo/diretorio/exemplo
☐☐ e) touch /novo/diretorio/exemplo
☐☐ a) rmdir /novo/diretorio/exemplo
☐☐ b) rmdir /novo
☐☐ c) rm –r /novo
☐☐ d) rm /novo/diretorio/exemplo
☐☐ e) rmdir –f /novo
☐☐ a) cp * /tmb
☐☐ b) cp –ar /home/usuario/* /tmp
☐☐ c) cp /home/usuarios /tmp
☐☐ d) cp –ar /home/usuarios/* /tmp
☐☐ e) cp –f /home /tmp
262
Comandos GNU e Unix 4
6. Para ler o arquivo /var/log/messages, filtrando somente as linhas que
contêm a palavra kernel e redirecionando o resultado para o arquivo /tmp/
logkernel.txt, utilizamos qual sintaxe?
☐☐ a) ln
☐☐ b) ln symbolic
☐☐ c) create link
☐☐ d) ln –s
☐☐ e) ln –p
☐☐ a) restore
☐☐ b) split
☐☐ c) mount
☐☐ d) cat
☐☐ e) split arquivo_*
☐☐ a) df e du.
☐☐ b) ds e du.
☐☐ c) df e ls.
☐☐ d) du e df.
☐☐ e) ls e df.
263
Linux LPI - Administração
☐☐ a) cc
☐☐ b) yy
☐☐ c) pp
☐☐ d) dd
☐☐ e) p
☐☐ a) :set disablenu
☐☐ b) :set disable
☐☐ c) :set nu
☐☐ d) :set nonu
☐☐ e) :syntax off
☐☐ a) :q
☐☐ b) :w!
☐☐ c) :wq!
☐☐ d) :wq
☐☐ e) :q!
☐☐ a) ls e df.
☐☐ b) top e df.
☐☐ c) ps e df.
☐☐ d) ps e top.
☐☐ e) du e df.
264
Comandos GNU e Unix 4
16. Qual é o PID do init?
☐☐ a) 0
☐☐ b) 1
☐☐ c) 2
☐☐ d) Ele não tem PID.
☐☐ e) É um PID aleatório.
17. Um processo com PID 3128 está no sistema sem funcionar. Digitamos
o seguinte comando, mas o processo não é finalizado:
# kill 3128
☐☐ a) kill -9 3128
☐☐ b) kill -1 3128
☐☐ c) kill +9 3128
☐☐ d) kill 3128
☐☐ e) kill –die 3128
18. Qual das sequências de teclas a seguir é usada para iniciar um processo
em segundo plano e fazer este continuar funcionando?
☐☐ a) 20
☐☐ b) 10
☐☐ c) -19
☐☐ d) -5
☐☐ e) -10
265
Linux LPI - Administração
☐☐ a) -j
☐☐ b) -z
☐☐ c) -b
☐☐ d) -x
☐☐ e) -v
☐☐ a) -j
☐☐ b) -z
☐☐ c) -b
☐☐ d) -x
☐☐ e) -v
23. Qual parâmetro deve ser utilizado com o comando cpio para compactar?
☐☐ a) -c
☐☐ b) -ov
☐☐ c) -iv
☐☐ d) -cv
☐☐ e) –d
24. Qual parâmetro deve ser utilizado com o comando cpio para
descompactar?
☐☐ a) -c
☐☐ b) -ov
☐☐ c) -iv
☐☐ d) -cv
☐☐ e) -d
266
4 Comandos
GNU e Unix
Mãos à obra!
Linux LPI - Administração
$ ls
$ ls –a
$ ls –l
$ ls –aR /var/log
Neste último comando foi utilizado mais de um parâmetro: –a para exibir arquivos
ocultos e –R para listagem recursiva.
268
Comandos GNU e Unix 4
Laboratório 2 - Criando arquivos e diretórios
6. Logue no sistema com o usuário operador;
$ touch aluno.txt
$ ls
$ ls –l
$ mkdir diretorio1
$ ls
$ mkdir diretorio1/subdiretorio1
Note que o comando anterior não utilizou a barra (/) antes de diretorio1,
já que diretorio1 está dentro da pasta home do usuário operador e seu
caminho completo é /home/operador/diretorio1, e não /diretorio1.
13. Crie dois diretórios, um chamado diretorio2 e outro, subdiretorio2, que deve
estar dentro do primeiro. Para isso, utilize o comando a seguir:
$ mkdir diretorio2/subdiretorio2
269
Linux LPI - Administração
O erro ocorreu porque diretorio2 não existia para que fosse possível criar subdiretorio2
dentro dele. Então, para poder criar a estrutura toda em um único comando, utilize
mkdir com o parâmetro –p:
$ mkdir –p diretorio2/subdiretorio2
$ ls
$ cd diretorio2
$ ls
$ cp operador.txt ./diretorio1/subdiretorio1
Note que, no destino do arquivo, o endereço da pasta foi iniciado com uma
barra (/). O ponto (.) significa uma referência ao diretório atual. No nosso
caso, estamos localizados no home do usuário operador (/home/operador).
A sintaxe para a cópia seria esta: <local_atual>/diretorio1/subdiretorio1.
$ ls /home/operador/diretorio1/subdiretorio1
$ cp –R diretorio1 ./diretorio2/subdiretorio2/.
270
Comandos GNU e Unix 4
19. Verifique se todo o conteúdo foi devidamente copiado para subdiretorio2:
$ ls –R ./diretorio2/subdiretorio2
$ mv operador.txt arquivo.txt
$ ls
$ mv arquivo.txt ./diretorio2/subdiretorio2/.
$ ls
$ ls diretorio2/subdiretorio2
$ cd /etc
$ ls
$ ls mail*
$ ls *.conf
$ cd /dev
271
Linux LPI - Administração
30. Liste apenas os primeiros dispositivos seriais (de 0 a 9), ou seja, aqueles que,
após o nome tty, apresentam apenas 1 caractere:
$ ls tty?
31. Liste somente os dispositivos que trazem 2 caracteres após o nome tty:
$ ls tty??
Note que o resultado não mostra os arquivos que foram exibidos no resultado
obtido no passo anterior.
$ ls tty[1,3,5,7,9]
$ ls tty[3-8]
$ ls [M,m]*
# cd /var/log
# ls
# cat /root/lista_logs.txt
272
Comandos GNU e Unix 4
40. Agora, redirecione para o arquivo lista_logs.txt os logs de erros, os quais terminam
com .err. Com o redirecionamento, o arquivo lista_logs.txt existente será sobrescrito
(ao ler o arquivo com cat, é possível notar que o conteúdo anterior foi substituído
pelo conteúdo que acabou de ser redirecionado);
41. Corrija o erro e envie novamente a lista de logs, mas desta vez sem perder a lista
de arquivos .err:
42. Execute o comando a seguir e observe que a lista cresceu. Agora ela contém os
arquivos .log;
# cat /root/lista_logs.txt
# ls > /root/teste_erro.txt
Ao executar a linha anterior, pode-se notar que o erro é exibido na tela. No entanto,
ao listar com cat, percebe-se que o erro não foi para dentro do arquivo gerado, ou
seja, o arquivo está vazio:
# cat /root/teste_erro.txt
45. Então, realize o mesmo teste, desta vez redirecionando as mensagens de erro
com o 2> para o arquivo teste_erro.txt:
# ls 2> /root/teste_erro.txt
# cat /root/teste_erro.txt
273
Linux LPI - Administração
# cd /etc
# ls -l
# ls -l |more
Utilize a tecla ENTER para rolar linha a linha ou Barra de espaço para rolar páginas.
Tecle q para sair.
# ls -l | tee /root/teste_tee.txt
# cat /root/teste_tee.txt
51. Da mesma forma que o redirecionador >, o comando tee exclui o arquivo de
destino. Para que a exclusão não ocorra e o comando adicione o resultado no final do
arquivo de destino, utilize a opção –a:
274
Comandos GNU e Unix 4
Laboratório 8 - Visualizando a árvore de
diretórios
52. Logue no sistema como usuário operador;
$ tree /etc
Note que o resultado foi exibido muito rapidamente, pois a quantidade de dados
é muito grande.
$ tree -d /etc
$ cat /proc/cpuinfo
57. Leia o arquivo protocols com o comando cat e redirecione o resultado para o
less, a fim de viabilizar a navegação pelo arquivo:
$ cat /etc/passwd
275
Linux LPI - Administração
60. Agora, leia o mesmo arquivo com o comando tac e note que o resultado é o
inverso:
$ tac /etc/passwd
$ head /etc/debconf.conf
$ tail /etc/debconf.conf
$ su
# cd ~
67. Ajuste o arquivo de logs do kernel para impressão e redirecione o resultado para
o arquivo novo_messages da pasta /root:
68. Leia o novo arquivo gerado com cat e less para possibilitar a navegação pelo
arquivo:
Observe que o cabeçalho agora exibe a data, a hora, o nome do arquivo e o número
de cada página.
276
Comandos GNU e Unix 4
69. Em seguida, imprima na tela apenas as páginas 10 e 11 do arquivo de log messages
e mude o nome do cabeçalho utilizando a opção –header:
70. Leia o novo arquivo gerado e observe que foram impressas apenas as páginas 10
e 11 e que o cabeçalho agora é personalizado:
# cat messages_parcial
# cat /etc/passwd
# cat /etc/shadow
# cat /root/usuarios_e_senhas
76. Verifique como ficou o arquivo. No resultado, note que foi colocado o pipe | no
lugar da tabulação;
# cat /root/usuarios_e_senhas
•• Acre;
•• Alagoas;
•• Amapá;
•• Amazonas;
•• Bahia;
•• Ceará;
•• Distrito Federal;
277
Linux LPI - Administração
•• Espírito Santo;
•• Goiás;
•• Maranhão;
•• Mato Grosso;
•• Mato Grosso do Sul;
•• Minas Gerais;
•• Pará;
•• Paraíba;
•• Paraná;
•• Pernambuco;
•• Piauí;
•• Rio de Janeiro;
•• Rio Grande do Norte;
•• Rio Grande do Sul;
•• Rondônia;
•• Roraima;
•• Santa Catarina;
•• São Paulo;
•• Sergipe;
•• Tocantins;
•• Nova York;
•• Califórnia;
•• Flórida.
# cat /root/Estados.txt
•• Rio Branco;
•• Maceió;
•• Macapá;
•• Manaus;
•• Salvador;
•• Fortaleza;
•• Brasília;
•• Vitória;
•• Goiânia;
•• São Luís;
•• Cuiabá;
•• Campo Grande;
•• Belo Horizonte;
•• Belém;
•• João Pessoa;
•• Curitiba;
•• Recife;
•• Teresina;
•• Rio de Janeiro;
•• Natal;
278
Comandos GNU e Unix 4
•• Porto Alegre;
•• Porto Velho;
•• Boa Vista;
•• Florianópolis;
•• São Paulo;
•• Aracajú;
•• Palmas.
# cat /root/Capitais.txt
81. Junte os dois arquivos com o comando join e salve-os no arquivo /root/estados_e_
capitais.txt:
# cat /root/estados_e_capitais.txt
•• São Paulo;
•• Sorocaba;
•• Bauru;
•• Bauru;
•• Santos;
•• Itanhaém;
•• Praia Grande;
•• São Vicente;
•• São Vicente;
•• Barretos;
•• Alphaville;
•• Barueri;
•• Barueri;
•• Sorocaba.
279
Linux LPI - Administração
# cat /root/Cidades.txt
Note que este arquivo tem cidades repetidas (Bauru, São Vicente, Barueri e Sorocaba).
# uniq -c /root/Cidades.txt
87. Com o comando uniq, leia o arquivo para remover as linhas repetidas e redirecionar
o resultado para o arquivo Cidades_Exclusivas.txt:
# od -x /root/Cidades.txt
# hexdump -x /root/Cidades.txt
# wc -l /root/Cidades.txt
# wc -c /var/log/messages
92. Leia o arquivo Cidades.txt. No resultado, note que o arquivo não está em ordem
alfabética;
# cat /root/Cidades.txt
280
Comandos GNU e Unix 4
93. Ordene alfabeticamente as cidades com o comando sort:
# sort /root/Cidades.txt
# sort -u /root/Cidades.txt
95. Compare a diferença dos resultados, contando quantas linhas cada resultado
possui. Inicie a comparação sem suprimir as cidades repetidas:
100. Busque pelo nome São Paulo em todos os arquivos e, caso haja ocorrências
desse nome, mostre em qual linha dos arquivos cada uma delas está localizada:
101. Troque o estado Nova York por New York no arquivo Estados.txt:
# cat /root/Estados.txt
# sed -i “s/Nova York/New York/g” /root/Estados.txt
# cat /root/Estados.txt
281
Linux LPI - Administração
# file /bin/ls
# file /etc/passwd
# file /root/Estados.txt
106. Leia as últimas 10 linhas do arquivo de log messages, porém filtre-o para que
exiba apenas 60 caracteres em cada coluna:
# mkdir /root/novo_dir
# ls /root/
109. Crie um link simbólico do arquivo Capitais.txt para dentro da nova pasta:
# ln -s /root/Capitais.txt /root/novo_dir/Link_Capitais.txt
Note que o link tem nome diferente do arquivo original. Isso não é obrigatório.
282
Comandos GNU e Unix 4
110. Acesse a nova pasta:
# cd /root/novo_dir
# ls
# ls -l
# ln /root/Cidades.txt /root/novo_dir/Link_Cidades.txt
# ls -l
283
Linux LPI - Administração
# df -h
# du -chs /root
# free -m
# date
123. Verifique há quanto tempo o computador está ligado e exiba detalhes da carga
do sistema:
# uptime
# uname -a
# time exim4
# cp /root/Cidades.txt /root/Cidades_2.txt
284
Comandos GNU e Unix 4
128. Compare a diferença entre os dois arquivos:
# find / -atime 1
# updatedb
# locate passwd
# vim /var/log/messages
Note que não é possível digitar algo sequer, pois o modo de comandos está ativo.
:set nu
285
Linux LPI - Administração
:set nonu
/input
:syntax on
:q!
# cd
# vim
286
Comandos GNU e Unix 4
149. Vá para a última linha digitando G;
:3
:w /root/arquivo-vim.txt
:%s/palavra_original/nova_palavra/g
:wq
# ps aux
# ps faux
# pidof cron
287
Linux LPI - Administração
# pidof kthreadd
# pstree 2
# top
166. Separe seus processadores na tela digitando 1 (se tiver mais de um, aparecerão
a partir do 0);
# htop
288
Comandos GNU e Unix 4
Laboratório 24 - Gerenciando planos de
processos
174. Execute o comando ping;
# ping www.impacta.com.br
176. Execute o comando jobs para ver as tarefas. Observe que ele está parado
(stopped);
# jobs
# bg 1
178. Execute novamente o comando jobs. Apesar da resposta na tela, observe que é
possível inserir comandos, pois o processo está em segundo plano. O resultado de
jobs deve ser “Running”;
# jobs
# fg 1
# top &
# jobs
# fg [numero do job]
289
Linux LPI - Administração
# pkill ntpd
# nice –n -8 ntpd
# ps -l NI -e f |grep ntpd
# pidof ntpd
# renice -5 –p [PID]
# ps -l NI -e f |grep ntpd
# killall ntpd
# mkdir /root/laboratorio
190. Faça um backup para a pasta laboratorio das pastas /etc e /home, compactando
os dados com gzip:
290
Comandos GNU e Unix 4
191. Faça um backup das pastas /etc e /home para a pasta laboratorio, utilizando o
compactador bzip2:
# ls -l /root/laboratorio
193. Faça um backup da pasta /etc/ com cpio e salve o arquivo na pasta laboratorio:
# cd /etc
# ls | cpio -ov > /root/laboratorio/backup.cpio
# cd /root/laboratorio
# ls
195. Faça um backup do setor MBR com o comando dd (substitua a unidade sda pela
unidade principal):
# ls -l /root/laboratorio/backup.mbr
# mkdir -p /root/laboratorio/descompacta/gzip
# mkdir -p /root/laboratorio/descompacta/bzip2
# mkdir -p /root/laboratorio/descompacta/cpio
291
Linux LPI - Administração
# ls -laR /root/laboratorio/descompacta/gzip
# ls -laR /root/laboratorio/descompacta/bzip2
# cd /root/laboratorio/descompacta/cpio
# cpio -iv < /root/laboratorio/backup.cpio
292
5
Dispositivos,
Sistemas de
arquivos e FHS
Este capítulo faz parte do tópico 104- Devices, Linux Filesystems, Filesystem
Hierarchy Standard da primeira prova identificada como 101-400 ou LX0-103 da
certificação LPIC-1.
5.1.1. fdisk
O comando fdisk é utilizado para criar partições em um determinado disco. No GNU/
Linux, os dispositivos se encontram nos seguintes endereços:
fdisk <dispositivo>
294
Dispositivos, Sistemas de arquivos e FHS 5
A seguir, são apresentadas algumas opções do comando fdisk:
Opção Descrição
a Alterna a partição ativa, responsável pelo boot.
b Edita o disklabel do BSD.
c Alterna a sinalização de compatibilidade do DOS.
d Exclui uma determinada partição.
l Exibe a lista dos sistemas de arquivos conhecidos.
m Exibe a lista do menu de ajuda.
n Cria uma nova partição.
p Exibe a tabela de partições.
q Sai do programa e não salva as alterações.
s Cria um disklabel da Sun novo e vazio.
t Altera um id de sistema de partição.
u Altera unidades de exibição/entrada.
w Grava a tabela do disco e sai.
295
Linux LPI - Administração
5.1.2. cfdisk
O comando cfdisk permite efetuar a criação de partições nos dispositivos. Sua sintaxe
é a seguinte:
cfdisk <dispositivo>
296
Dispositivos, Sistemas de arquivos e FHS 5
A próxima imagem exibe a tela do utilitário cfdisk:
Opção Descrição
Inicializar Torna a partição inicializável.
Excluir Exclui partição.
Ajuda Exibe ajuda do cfdisk.
Maximize Permite maximizar o uso do disco.
Mostre Exibe tabela de partições na tela.
Sair Encerra o cfdisk.
Tipo Define o tipo de sistema de arquivos.
Exibe o tamanho das partições em megabytes (MB), setores e
Unidades
cilindros.
Gravar Grava a tabela de partições do disco.
297
Linux LPI - Administração
5.1.3. Sistema de arquivos
Podemos definir um sistema de arquivos como um meio de deixar os dados de nosso
sistema mais organizados. Todo sistema operacional gera um tipo de sistema de
arquivos.
•• xiafs;
•• minix;
•• msdos;
•• vfat;
•• proc;
•• smbfs;
•• iso9660;
•• hpfs;
•• ufs.
5.1.4. Estrutura básica
De maneira geral, podemos dividir o sistema de arquivos em quatro partes: bloco de
boot, superbloco, tabela de inodes e bloco de dados.
5.1.4.1. Bloco de boot
O bloco de boot fica localizado no início do sistema de arquivos. Para acessá-lo,
podemos utilizar o código mínimo incorporado na ROM da BIOS do computador. O
bloco de boot da partição bootável contém o código necessário para inicializar o
sistema operacional posteriormente.
298
Dispositivos, Sistemas de arquivos e FHS 5
5.1.4.2. Superbloco
Este bloco é responsável por descrever o estado do sistema de arquivos no que diz
respeito ao tamanho e à quantidade de arquivos que tal sistema pode armazenar.
Além disso, ele descreve as informações sobre quais partes da área de armazenamento
já estão sendo utilizadas e quais ainda estão disponíveis, bem como outras informações.
5.1.4.3. Tabela de inodes
O inode é definido como uma estrutura de dados que apresenta um sistema de
arquivos que adota a semântica de sistemas Unix. Os inodes têm como característica
conter dados de arquivos, tais como localização, tipo, proprietário, tempo de acesso,
entre outros.
Podemos definir a lista de inodes como uma lista estática. O tamanho da lista não
pode ser alterado depois que o sistema de arquivos for criado. O administrador e o
tamanho do dispositivo de armazenamento são responsáveis por definir o tamanho
desta lista.
299
Linux LPI - Administração
•• Tempo de acesso: Por meio deste item, podemos obter informações sobre
tempo de acesso e modificação dos arquivos, além do número de links, tamanho
do arquivo e o local onde os dados estão armazenados no dispositivo.
5.1.4.4. Bloco de dados
Os blocos de dados estão localizados após os blocos que possuem a lista de inodes
e têm a função de armazenar informações administrativas, bem como os dados dos
arquivos.
300
Dispositivos, Sistemas de arquivos e FHS 5
A seguir, listamos alguns dados sobre o sistema de arquivos ext2:
5.1.5.2. ext3
O ext3 foi desenvolvido por Estephen Tweedie, da Red Hat, e é uma versão journaling
do sistema de arquivos ext2. Um sistema de arquivo com journaling trabalha com um
log chamado journal. As informações referentes a uma operação que será realizada
são agendadas primeiro no journal, para depois serem realizadas de fato.
Caso a operação seja interrompida (por uma queda de energia, por exemplo) no
momento em que suas informações estão sendo registradas no journal, o arquivo
permanecerá intacto, ainda que não seja atualizado. Porém, se a operação for
interrompida durante sua execução, ela poderá ser posteriormente completada, pois
as informações necessárias para execução completa da operação já estão contidas no
journal.
•• Utiliza uma API denominada JBD (Journaling Block Device). Esta camada, em
vez de armazenar bytes a serem gravados, armazena na memória os blocos
modificados do sistema de arquivos. Com os blocos modificados já armazenados,
uma operação que foi interrompida pode continuar a ser executada;
301
Linux LPI - Administração
5.1.5.3. ext4
Os arquivos ext3 podem facilmente ser convertidos para o formato ext4, de forma
que possam ser trabalhados pelo sistema de arquivos ext4, um sistema moderno
que traz melhorias em desempenho, capacidade de armazenamento, velocidade de
verificação de disco e disponibilidade de ferramentas em relação aos sistemas de
arquivos anteriores a ele. Ele utiliza um esquema de alocação múltipla de blocos, em
vez da tradicional alocação de um bloco por vez, o que também melhora o desempenho
do sistema, pois evita o overhead.
5.1.5.4. reiserfs
O reiserfs foi criado por Hans Reiser, e seu núcleo é baseado em uma mesma árvore,
as conhecidas B+ (árvores balanceadas). Cada diretório apresenta uma subárvore da
árvore principal, não havendo uma árvore diferente para cada diretório.
Contudo, a utilização de uma mesma árvore em que estão contidos elementos como
diretórios, links e blocos de arquivos implica a utilização de técnicas de indexação
(hashing) mais complexas.
Caso ocorra uma interrupção durante a gravação dos arquivos journal, um arquivo
poderá apresentar seu conteúdo incompleto.
302
Dispositivos, Sistemas de arquivos e FHS 5
5.1.5.5. xfs
O xfs é o sistema de arquivos mais potente já desenvolvido e é utilizado para
desempenhos em escala extremamente grande. Compatível com o Linux 2.4 e versões
superiores, o xfs alia o recurso journaling a um endereçamento de 64 bits e permite
o escalonamento de estruturas e algoritmos.
Os processos realizados pelo xfs são rápidos, pois ele permite a execução de
operações de journaling sem deixar que elas afetem drasticamente o desempenho de
operações de escrita e leitura de dados.
5.1.6. Montando dispositivos
Ponto de montagem é uma das características mais importantes em sistemas Unix-
like, pois define a forma como acessaremos um determinado dispositivo. Em sistemas
Windows, o acesso às partições está diretamente relacionado a alguma unidade.
Acessando tal unidade é como se estivéssemos entrando no dispositivo e, a partir
daí, é só utilizar os recursos. Em sistemas Unix-like, o acesso aos dispositivos se dá
pelos pontos de montagem, que são diretórios simplesmente, de preferência vazios,
que serão um recipiente do dispositivo que será acessado.
303
Linux LPI - Administração
5.1.7. mount
O comando mount é utilizado para montar um sistema de arquivos, permitindo acesso
a um determinado dispositivo. Conforme o conceito apresentado anteriormente sobre
pontos de montagem, o comando mount permitirá a ligação de dispositivos com seu
respectivo ponto de montagem. Sua sintaxe é a seguinte:
Arquivo
Descrição
especial
Primeira partição do primeiro disco rígido IDE, que se encontra no
/dev/hda1
canal primário.
/dev/hdd Pode ser um CD-ROM IDE no segundo canal primário, como slave.
/dev/fd0 Primeira unidade de disquete.
Usado para identificar dispositivos SCSI, SATA e também unidades
/dev/sda1
USB, indicando a primeira partição desse dispositivo.
304
Dispositivos, Sistemas de arquivos e FHS 5
Já no exemplo adiante, temos uma montagem de um dispositivo que é aparentemente
uma partição e que usa o sistema de arquivos ext3. O acesso a esse dispositivo será
feito pelo ponto de montagem /mnt/backup:
5.1.8. umount
O comando umount é utilizado para fazer o processo de desmontagem de um
dispositivo para que ele possa ser liberado. A própria unidade de CD-ROM, para
que possa ser ejetada, precisa passar pelo processo de desmontagem, assim como
qualquer tipo de dispositivo montado no sistema.
umount /dev/hdd
umount /media/cdrom
Para desmontar os dispositivos, eles não podem ter qualquer tipo de recurso em
uso no sistema ou estar dentro do diretório a ser desmontado. Caso contrário,
uma mensagem de erro será exibida informando que o dispositivo está ocupado.
5.1.9. /etc/fstab
O arquivo /etc/fstab é responsável por armazenar as configurações de todos os
sistemas de arquivos do sistema e seus respectivos pontos de montagem, permitindo
que eles sejam montados corretamente a cada inicialização do sistema. Sistemas de
arquivo que não estejam representados no fstab não serão montados automaticamente.
305
Linux LPI - Administração
Opção Descrição
defaults Inicializa a partição com valores padrão de montagem.
rw Permite a modificação de dados na partição.
ro Montará a partição com permissão de somente leitura.
Os dados atribuídos aos dispositivos serão gravados de maneira
sync
imediata.
A partição será montada automaticamente na inicialização do
auto
sistema.
noauto A partição não será montada na inicialização do sistema.
Opção exclusiva para montagem manual, promove a remontagem de
remount um dispositivo já montado, com a possibilidade de adicionar outras
opções.
Garante permissão a qualquer usuário para habilitar e desabilitar o
users
dispositivo.
Permite que usuários comuns habilitem o dispositivo, mas só o
user
usuário que o montou tem permissão para desmontá-lo.
Após montado o dispositivo, suas permissões se adequarão ao
owner
usuário responsável por sua montagem.
usrquota Habilita o uso de cotas de disco para usuário.
grpquota Habilita o uso de cotas de disco para grupo.
306
Dispositivos, Sistemas de arquivos e FHS 5
Então, a lista é mostrada:
5.1.10. Particionando discos
Já falamos diversas vezes sobre partições, inclusive com uma explicação detalhada
sobre o padrão seguido por sistemas GNU/Linux para nomeá-las, agora passaremos
à sua definição de fato e aos processos por meio dos quais as partições podem ser
criadas.
Partições são divisões lógicas do disco rígido, sem as quais é impossível gravar
arquivos no computador. Uma vez definidas, as partições delimitam onde será criado e
armazenado cada sistema de arquivos, de forma organizada. Normalmente, os discos
já vêm particionados de fábrica, porém o esquema de partições é personalizável e
pode ser alterado pelo próprio usuário.
As partições padrão são chamadas primárias e só podem existir num limite de quatro
em qualquer PC. Para superar essa limitação, é possível trocar uma das partições
primárias por uma partição estendida, que funciona como hospedeira para mais
partições lógicas.
O comando cat costuma levar bastante tempo para exibir sua saída. O processo pode
ser interrompido com o atalho CTRL + C ou ainda digitando reset, caso o atalho não
produza resultado.
307
Linux LPI - Administração
Outro comando que pode ser utilizado é o vol_id, que informa o UUID de uma
participação específica, como podemos ver adiante:
308
Dispositivos, Sistemas de arquivos e FHS 5
5.1.12. Partição swap
Partições swap são espaços alocados em disco que funcionam como memória adicional,
para aliviar a carga sobre a memória RAM do computador, evitando lentidões no
funcionamento do sistema ou travamentos.
A tabela a seguir descreve opções que podem ser utilizadas com o comando swapon:
Opção Descrição
Ativa todas as partições do fstab que estiverem marcadas como
swap. Quando usado como argumento do comando swapoff, faz
-a justamente o contrário: desativa todos os espaços de swap. As
partições que estiverem com a opção noauto não serão afetadas por
esse argumento nem para ativação, nem para desativação.
-a -e Ignora sem notificação alguma as partições não encontradas.
-s Exibe detalhes do uso de cada partição ou arquivo de swap.
Indica a prioridade de uso dos espaços de swap disponíveis. O valor
de <N> varia de 0 a 32767, sendo que, quanto mais alto o valor,
-p <N>
maior a prioridade. Partições com o mesmo valor de prioridade são
usadas simultaneamente.
-L <nome> Usa a partição de rótulo <nome>.
-U <UUID> Usa a partição cujo UUID seja igual a <UUID>.
309
Linux LPI - Administração
5.1.14. mkfs
Este comando é utilizado para criar um sistema de arquivos no dispositivo. Em outros
termos ele realiza a formatação lógica dos dispositivos. A sintaxe do comando mkfs
é a seguinte:
É importante que o sistema de arquivos que aplicaremos seja suportado pelo kernel.
Para consultar a lista de sistemas de arquivos suportados, acesse o arquivo /proc/
filesystems.
Opção Descrição
-v Modo verboso (exibe com detalhes as operações efetuadas).
-c Realiza a verificação de blocos ruins no dispositivo.
Informa qual será o tipo de sistema de arquivos formatado no
-t <sistema_arq>
dispositivo especificado.
310
Dispositivos, Sistemas de arquivos e FHS 5
O exemplo a seguir realiza a formatação lógica do dispositivo e insere o sistema de
arquivos ext3:
mkfs.<sistema_arq>
5.1.15. mke2fs
O comando mke2fs, cuja sintaxe é exibida a seguir, é utilizado para criar sistemas de
arquivos ext2, ext3 e ext4 em dispositivos de armazenamento:
Opção Descrição
-F Força a execução do comando no dispositivo informado.
-j Cria um sistema de arquivos ext3 no dispositivo informado.
-c Varre o dispositivo informado à procura de blocos ruins.
-L Atribui um rótulo ao dispositivo.
-v Exibe detalhes sobre a execução do comando.
-V Exibe a versão do comando.
311
Linux LPI - Administração
5.1.16. mkreiserfs
Este comando é utilizado para criar uma partição e determinar que o dispositivo
trabalhará com o sistema de arquivos reiserfs. Sua sintaxe é a seguinte:
A seguir, podemos visualizar a descrição das opções mais utilizadas deste comando:
Opção Descrição
Define o tamanho do bloco, em bytes. Os valores aceitos estão em
-b
uma faixa de 512 até 8192 bytes.
-l Permite definir um nome de volume para o dispositivo.
312
Dispositivos, Sistemas de arquivos e FHS 5
O exemplo a seguir formata o dispositivo com o sistema de arquivos reiserfs:
313
Linux LPI - Administração
5.1.17. mkfs.xfs
Este comando é utilizado para criar uma partição e determinar que o dispositivo
trabalhará com o sistema de arquivos xfs. Sua sintaxe é a seguinte:
A seguir, podemos visualizar a descrição das opções mais utilizadas deste comando:
Opção Descrição
Define o tamanho do bloco, em bytes. Os valores aceitos estão em
-b
uma faixa de 512 até 65535 bytes.
-L Permite definir um nome de volume para o dispositivo.
Uma outra forma de adicionar um nome no volume seria utilizando o comando xfs_
admin:
314
Dispositivos, Sistemas de arquivos e FHS 5
5.1.18. Manutenção do sistema de arquivos
Passaremos agora à descrição de alguns comandos que permitem a obtenção de
informações sobre sistemas de arquivos, depuração e configuração de parâmetros,
auxiliando na manutenção dos sistemas.
5.1.19. fsck
O comando fsck realiza a verificação e o reparo de um determinado sistema de
arquivos, ou de um determinado dispositivo de armazenamento. Sua sintaxe é a
seguinte:
Opção Descrição
Realiza a verificação do sistema de arquivos em todos os
-A
dispositivos listados no arquivo /etc/fstab.
-c Exibe uma barra demonstrando o progresso da instalação.
Exibe somente o resultado do comando, não executa ação
-n
sobre o sistema de arquivo.
-a Realiza o reparo automático do sistema de arquivos.
-t <sistema arq> Define o tipo de sistema de arquivos que o dispositivo contém.
315
Linux LPI - Administração
É importante notarmos que, para que possamos utilizar o fsck e ao mesmo tempo
especificar o sistema de arquivos, podemos utilizar a seguinte sintaxe:
fsck.<sistema_arq> <dispositivo>
Exemplo:
fsck.ext4 /dev/sdb1
5.1.20. e2fsck
Este comando realiza a verificação e reparo de sistema de arquivos ext2, ext3 e ext4
em dispositivos de armazenamento. Sua sintaxe é a seguinte:
Opção Descrição
-f Força a checagem do dispositivo informado.
-p Realiza o reparo do sistema de arquivos automaticamente.
5.1.21. reiserfsck
O comando reiserfsck permite realizar a verificação de dispositivos que utilizam o
sistema de arquivos reiserfs. Sua sintaxe é a seguinte:
Na tabela a seguir, temos a descrição das opções mais utilizadas com reiserfsck:
Opção Descrição
-a Verifica todos os dispositivos listados no arquivo /etc/fstab.
-y Realiza o reparo automático do sistema de arquivos.
316
Dispositivos, Sistemas de arquivos e FHS 5
O exemplo a seguir demonstra a verificação e a correção do sistema de arquivos no
dispositivo definido por meio do reiserfsck:
5.1.22. xfs_repair
O comando xfs_repair permite realizar a verificação de dispositivos que utilizam o
sistema de arquivos xfs. Sua sintaxe é a seguinte:
Na tabela a seguir, temos a descrição das opções mais utilizadas com xfs_repair:
Opção Descrição
Apenas informa os erros que deverão ser corrigidos, sem efetuar
-n
as devidas alterações.
-v Exibe a saída do comando em modo detalhado.
317
Linux LPI - Administração
5.1.23. debugfs
O debugfs é o comando responsável por depurar o sistema de arquivos de forma
interativa, nos sistemas de arquivos ext2, ext3 e ext4. Por meio desse comando,
podemos checar e alterar o estado apresentado pelo sistema de arquivos. Sua sintaxe
é a seguinte:
318
Dispositivos, Sistemas de arquivos e FHS 5
As principais opções utilizadas com o debugfs são as seguintes:
Opção Descrição
-b <tamanho_do_ Esta opção tem a finalidade de forçar a utilização de um
bloco> tamanho de bloco para o sistema de arquivos.
Esta opção faz com que a leitura do superbloco do sistema
de arquivos seja realizada a partir da quantidade de blocos
-s <superbloco>
determinada. Isso significa que, quando utilizamos essa
opção, devemos também definir a opção -b.
-V Essa opção exibe a versão do debugfs.
Esta opção determina que o sistema de arquivos será aberto
-w em modo read-write (leitura e gravação). Caso não utilizemos
essa opção, o modo de abertura do sistema é somente leitura.
319
Linux LPI - Administração
5.1.24. dumpe2fs
O comando dumpe2fs é utilizado para obter informações de sistemas de arquivos
ext2, ext3 e ext4. Sua sintaxe é apresentada a seguir:
Opção Descrição
-b Exibe os blocos defeituosos.
-x Exibe descrição dos blocos do grupo em formato hexadecimal.
-V Exibe a versão do comando.
320
Dispositivos, Sistemas de arquivos e FHS 5
5.1.25. tune2fs
Por meio do comando tune2fs, o administrador do sistema pode configurar parâmetros
para os sistemas de arquivos ext2, ext3 e ext4. A sintaxe desse comando é a seguinte:
Opção Descrição
Esta opção é responsável por configurar o número máximo
-c <valor> de montagens entre duas verificações do sistema de
arquivos.
Esta opção determina o grupo de usuários que poderá
-g <grupo>
utilizar os blocos reservados.
O objetivo desta opção é adicionar um journal ao sistema
-j de arquivos. Muito utilizado para realizar a conversão de
sistema de arquivos ext2 para ext3.
-l Exibe o conteúdo do superbloco do sistema de arquivos.
Esta opção é responsável por configurar a porcentagem de
-m <numero_blocos>
blocos reservados em um determinado dispositivo.
Define o usuário que poderá utilizar os blocos reservados
-u <usuario>
no sistema de arquivos.
Esta opção é responsável por determinar a quantidade de
-C
vezes que o sistema de arquivos já foi montado.
Opção responsável por definir um rótulo para o volume no
-L <rotulo_volume>
sistema de arquivos.
321
Linux LPI - Administração
Dicas LPI
322
Dispositivos, Sistemas de arquivos e FHS 5
5.2. Árvore de diretórios FHS
Compreender a estrutura de diretórios em sistemas GNU/Linux não é algo complexo,
entretanto, usuários não acostumados a utilizar a linha de comandos como em
sistemas MS-DOS podem encontrar certa dificuldade. De modo geral, entender a forma
como os diretórios estão organizados e a principal distinção entre eles é essencial
para manipular o sistema de forma ágil e poder trabalhar de forma segura.
5.2.1. Diretórios
Diretórios são, basicamente, os lugares onde os arquivos do sistema são armazenados.
Como tudo em sistemas GNU/Linux são arquivos, a estrutura de diretórios do sistema
operacional organiza hierarquicamente todos os textos, imagens, programas,
dispositivos, planilhas, entre outros.
5.2.2. Hierarquia de diretórios
A estrutura de diretórios GNU/Linux, que segue o padrão POSIX (Portable Operating
System Interface), está dividida de forma hierárquica, na qual temos o conceito de
diretório pai e diretório filho. Diferentemente de outros sistemas operacionais que
dividem sua estrutura por discos e partições, em sistemas Unix-like, essa estrutura
será dividida hierarquicamente em uma árvore de diretórios, em que praticamente
tudo é um arquivo, inclusive os próprios dispositivos, como discos ou partições, que
são representados pelos respectivos arquivos especiais e acessados por meio do
processo de montagem.
Essa diferença e o conceito de tipos de arquivos que podem ser utilizados para
representar os dispositivos permitem que a estrutura e, inclusive, a forma de
manipular e gerenciar o sistema, sejam diferenciadas. Um bom exemplo é comparar
essa estrutura de diretórios a uma árvore, em que o principal diretório presente nos
sistemas Unix-like é referenciado pelo nome raiz e é representado por uma barra (/).
323
Linux LPI - Administração
5.2.3. FHS
As primeiras iniciativas em criar uma padronização para sistemas de arquivos para
distribuições GNU/Linux surgiram em 1994, com a criação do Filesystem Standard
(FSSTND). Mais tarde, foram adotadas regras de estrutura e armazenamento de
diretórios estabelecidas pelo Filesystem Hierarchy Standard, ou FHS.
O FHS foi desenvolvido pela LSB (Linux Standard Base), uma instituição sem fins
lucrativos que foi criada em 1998 para desenvolver e manter padrões para certificar
distribuições GNU/Linux.
324
Dispositivos, Sistemas de arquivos e FHS 5
O FHS provém das especificações de sistemas Unix, formando uma rica base para
manter a compatibilidade e a portabilidade entre as distribuições GNU/Linux. Dessa
forma, fabricantes de software podem aproveitar esse padrão para gerar aplicações
que podem ser executadas em distribuições distintas, certificadas pela Linux
Standard Base, e que seguem o padrão FHS. Mais informações sobre a LSB podem ser
encontradas em www.linuxfoundation.org/en/LSB.
O padrão FHS, desenvolvido e mantido pela LSB, é um dos padrões que uma distribuição
certificada pela LSB deve seguir em relação à posição e à estrutura dos diretórios no
sistema.
Tal definição sobre a distinção dos diretórios se dá por dois motivos essenciais:
os aplicativos desenvolvidos para distribuições que seguem o FHS poderão,
automaticamente, presumir a localização de diretórios específicos e, ainda, os
usuários em geral poderão ter uma ideia dessa estrutura de diretórios, deixando o
gerenciamento do sistema mais ágil e prático no momento de encontrar determinados
arquivos em uma manutenção. É possível encontrar as versões completas do FHS em
www.pathname.com/fhs/.
A seguir, abordaremos o formato do padrão FHS, com base em sua última versão.
325
Linux LPI - Administração
5.2.5. Estrutura de diretórios
O padrão FHS mantém a existência dos diretórios descritos na tabela a seguir:
Diretório Descrição
Representado por uma barra, este diretório contém todos os outros
diretórios do sistema. Trata-se do principal diretório de um sistema
/ (raiz)
GNU/Linux. Todos os arquivos e diretórios estão situados sob ele,
mesmo os dispositivos externos.
Contém arquivos binários de comandos que são essenciais para a
bin
inicialização básica do sistema.
Contém informações dos gerenciadores de inicialização, arquivos
boot
de imagem do kernel e auxiliares.
dev Arquivos orientados a dispositivos gerais e outros arquivos especiais.
Contém arquivos de configuração para o sistema, aplicações e
etc
serviços.
Contém bibliotecas dinâmicas, essenciais à inicialização básica do
lib
sistema. Armazena, também, módulos do kernel.
media Pontos de montagem para mídias removíveis.
mnt Utilizado em pontos de montagem de uso temporário.
Utilizado para instalar pacotes adicionais por meio do processo de
opt
compilação.
Como o /bin, contém arquivos binários essenciais à inicialização
sbin
básica do sistema, porém, é utilizado somente em nível administrativo.
Contém informações estáticas de serviços disponibilizados pelo
srv
sistema.
326
Dispositivos, Sistemas de arquivos e FHS 5
Diretório Descrição
tmp Armazena arquivos de ordem temporária.
Mantém informações estáticas de aplicativos e serviços gerais
usr
instalados no sistema.
Contém informações variáveis, tanto do sistema como de aplicativos
var
em geral. Arquivos de log e caixa de correio estão contidos em /var.
Diretório Descrição
home Diretório para centralizar dados pessoais dos usuários comuns.
root Diretório para centralizar dados pessoais do superusuário root.
5.2.5.1. /bin
O diretório /bin contém os arquivos binários dos comandos essenciais à inicialização
do sistema, que podem ser utilizados tanto pelo usuário do tipo administrador (root),
como por usuários comuns, pois é um diretório público.
Esses comandos também podem ser utilizados de forma indireta por algum shell
script, um aplicativo criado por meio dos recursos dos interpretadores de comandos
bash ou sh, por exemplo. O shell script segue a ideia de uma linguagem interpretada,
que é lida e executada, linha por linha. Por convenção, não devemos criar subdiretórios
nessa estrutura.
Por ser um diretório essencial à inicialização básica do sistema, como uma inicialização
em modo de segurança, tal diretório não pode ficar em uma partição diferente daquela
em que se encontra o diretório raiz (/).
327
Linux LPI - Administração
Comando Descrição
alias Define um alias (nome alternativo) para algum comando.
cat Exibe o conteúdo do(s) arquivo(s) na saída padrão (stdout).
Comando utilizado para gerenciar as permissões de arquivos
chmod
e diretórios.
cp Utilitário para cópia de arquivos e diretórios.
date Exibe a data e a hora atuais do sistema.
echo Copia um texto específico ou conteúdo da variável.
Quando usado sem argumentos, exibe as variáveis de ambiente
env e seus conteúdos. Pode executar um comando com variável de
ambiente modificada.
exec Substitui a sessão atual do shell.
Seleciona uma variável de ambiente para a sessão e todas as
export
sessões iniciadas a partir dela.
ls Comando para listar o conteúdo de diretórios.
mkdir Cria diretórios.
mv Move ou renomeia arquivos e diretórios.
ps Exibe uma lista de processos em execução.
pwd Exibe o caminho completo do diretório corrente.
sed Editor de textos em nível de linha de comando.
Define o valor de uma variável. Quando usado sem argumentos,
set
mostra todas as variáveis já definidas.
unset Exclui uma variável na sessão.
5.2.5.2. /boot
O diretório /boot mantém informações essenciais à inicialização básica do sistema.
Podemos citar, como exemplo, arquivos estáticos dos gerenciadores de inicialização
(boot-loaders) e o próprio arquivo binário de imagem do kernel, que dará início ao
sistema, assim como seus auxiliares.
328
Dispositivos, Sistemas de arquivos e FHS 5
5.2.5.3. /dev
O diretório /dev armazenará, em sua estrutura, arquivos especiais de sistema que
poderão ser utilizados para acessar determinados dispositivos, como uma partição,
uma unidade de CD, DVD ou, até mesmo, um pen drive. É através desses arquivos
no /deb que o GNU/Linux estabelece o diálogo entre o sistema e os dispositivos
periféricos do computador.
5.2.5.4. /etc
O diretório /etc mantém toda a estrutura de arquivos e diretórios para configurar
tanto o sistema quanto os serviços e aplicações. Configurações padrão de logins de
usuários, scripts de inicialização do sistema, tabela do sistema de arquivos, entre
outros, ficam armazenados nesse diretório.
Por convenção, não devemos alocar arquivos binários executáveis dentro dessa
estrutura. A tabela adiante ilustra a descrição dos principais arquivos:
Arquivo Descrição
/etc/hostname Arquivo para definir o nome da máquina (hostname).
/etc/network Diretório com as configurações das interfaces de rede.
Diretório com as configurações do servidor X atualmente
/etc/X11
instalado.
329
Linux LPI - Administração
5.2.5.5. /lib
O diretório /lib armazena as bibliotecas dinâmicas que são essenciais à inicialização
básica do sistema. Diversos programas do sistema operacional fazem uso de
bibliotecas.
Diretório Descrição
Estrutura de armazenamento de módulos e informações
modules
das versões de kernel instaladas.
5.2.5.6. /media
O diretório /media é utilizado para manter pontos de montagem para dispositivos de
mídia removíveis, como CD-ROM, DVD, disquetes, dispositivos USB etc.
Antigamente, a convenção para montar tais dispositivos era dentro do diretório /mnt,
ou no próprio diretório / (raiz). Essa organização mantém a localização para o acesso
a esses pontos de montagem, de maneira mais intuitiva e prática.
5.2.5.7. /mnt
O diretório /mnt era utilizado, antigamente, para armazenar os pontos de montagem
para dispositivos em geral, como CD-ROM, disquetes, entre outros. Com a criação
do /media, esse diretório ficou responsável por manter pontos de montagem para
sistemas de arquivos temporários, para acessar uma partição temporariamente,
copiar um dado específico e prover o compartilhamento de arquivos entre sistemas,
por exemplo.
330
Dispositivos, Sistemas de arquivos e FHS 5
5.2.5.8. /opt
É utilizado para manter uma organização importante no sistema no que diz respeito
a programas que serão instalados e que não pertencem à distribuição em uso, os
quais, geralmente, são instalados por meio do método de compilação. Também lida
com a organização de softwares proprietários. Os programas que serão instalados a
partir de /opt deverão ter um diretório específico com o seu respectivo nome, e esse
diretório poderá ser utilizado futuramente para removê-lo, por exemplo.
5.2.5.9. /sbin
Este diretório também armazena arquivos binários de comandos essenciais à
inicialização do sistema, porém, esses comandos são de uso específico do usuário
administrador. Além dos comandos de inicialização, outros de restauração, reparo e/
ou recuperação do sistema ficam guardados nesse diretório.
Comando Descrição
fdisk Gerencia a tabela de partições.
fsck Ferramenta para checar e reparar sistemas de arquivos.
halt Comando para desligar o sistema.
ifconfig Utilizado para gerenciar as interfaces de rede.
mkfs Formata partições com o sistema de arquivos indicado.
reboot Reinicia o sistema.
331
Linux LPI - Administração
5.2.5.10. /srv
Este diretório possibilita obter informações estáticas de serviços disponibilizados
pelo sistema, que poderão ser compartilhadas. O /srv é usado para centralização
de dados de serviços disponíveis a todos os usuários. As informações poderão ser
compartilhadas somente para leitura, e é importante ressaltar que só poderão ser
removidas pelo administrador do sistema.
Protocolos como CVS, FTP, www e rsync são exemplos de utilização de tal diretório
em nível administrativo.
5.2.5.11. /tmp
Este diretório é utilizado apenas como um centralizador de dados temporário, que é,
geralmente, de uso exclusivo do próprio sistema e, principalmente, das aplicações.
Também pode ser utilizado por usuários para alocar informações temporárias,
porém, é importante ressaltar que qualquer informação alocada no diretório /tmp é
automaticamente apagada ao desligar o sistema.
Por ser um diretório com permissões abertas, em que qualquer usuário pode gravar
dados, recomenda-se alocar o /tmp em uma partição separada da partição / (raiz), ou
redefinir suas permissões especiais e utilizar um controle de limites no sistema, para
não gerar danos por usuários mal-intencionados.
5.2.5.12. /usr
O diretório /usr é conhecido por manter a segunda maior estrutura de subdiretórios
do sistema. Sendo um diretório portável, ele contém praticamente uma segunda
árvore de diretórios inteira, independente da primeira. Os dados desse diretório
são, geralmente, informações estáticas de programas, comandos, serviços e outros,
que seguem o padrão GNU/Linux e que não são essenciais à inicialização básica do
sistema.
É um diretório que poderá ser compartilhado entre vários hosts que seguem o FHS,
disponíveis somente para leitura; porém, seu conteúdo só poderá ser modificado
pelo superusuário. A maior recomendação para este diretório é que não se aloque ou
modifique nenhum tipo de informação de forma manual.
332
Dispositivos, Sistemas de arquivos e FHS 5
Há muitas semelhanças com alguns diretórios já vistos, mas também há diferenças,
justamente pela organização que o diretório /usr apresenta. Seus subdiretórios
organizam as informações, como dados de programas, comandos e serviços, de
forma classificatória e são divididos conforme a tabela a seguir:
Diretório Descrição
Contém, como o /sbin, arquivos binários executáveis, não
bin essenciais para a inicialização básica do sistema, e de uso geral
por parte dos usuários.
Armazena arquivos de cabeçalho, muito utilizados na linguagem C
include
e, geralmente, com a extensão .h.
Mantém bibliotecas dinâmicas, que serão utilizadas, geralmente,
lib
pelos programas em /usr/bin e /usr/sbin.
Hierarquia local não compartilhada (utilizada por aplicativos que
local
são instalados de forma local, instalações a partir do código-fonte).
Contém, como o /bin, arquivos binários executáveis não essenciais
sbin à inicialização básica do sistema, porém de uso específico do
usuário root.
Contém dados e informações específicas das aplicações que podem
ser compartilhadas e são independentes de alguma arquitetura
share
específica. Há também muita documentação sobre o sistema e
programas nesse diretório.
Utilizado para armazenar o código-fonte de programas e,
src
principalmente, do kernel, no momento de sua recompilação.
5.2.5.13. /var
O diretório /var mantém informações e dados que sofrerão variações constantemente
(conteúdo dinâmico). Uma infinidade de serviços utiliza alguns subdiretórios de /var
para armazenar seus dados, como o gerenciador de fila de impressão, e-mail, log etc.
É um diretório muito importante para o funcionamento geral do sistema e serviços
implantados.
333
Linux LPI - Administração
Diretório Descrição
Diretório utilizado por aplicações, como o gerenciador de pacotes
cache
apt.
log Armazena os logs gerados pelo sistema, aplicações e serviços.
Diretório para armazenar a estrutura de serviços de e-mail, como
mail
contas de e-mail dos usuários, domínios etc.
Armazena informações que serão futuramente processadas, como
spool
fila de impressão e agendamento de tarefas.
tmp Arquivos temporários que poderão ser reutilizados mesmo após o reboot.
5.2.5.14. Diretórios opcionais
Dois subdiretórios do diretório raiz (/) merecem destaque: /home e /root. Ambos
não precisam necessariamente existir no sistema, ou seja, são opcionais. No entanto,
para fins de adequação ao padrão FHS, é recomendável mantê-los.
•• /home
•• /root
O diretório /root tem uma grande semelhança com o diretório /home, porém, é
utilizado para armazenar apenas os arquivos pessoais, profiles e configurações
específicas do administrador do sistema (usuário root). Apesar de ser opcional, manter
o diretório /root é uma boa escolha, pois os arquivos do usuário administrador ficarão
separados dos que pertencem aos usuários comuns.
5.2.5.15. Diretórios especiais
Também são subdiretórios do diretório raiz o /proc e o /sys, considerados arquivos
especiais. O primeiro armazena configurações do sistema. O segundo, arquivos graváveis
que permitem a execução de modificações imediatas por meio de seus valores.
334
Dispositivos, Sistemas de arquivos e FHS 5
•• /proc
Podemos encontrar três tipos de informações no diretório /proc, que são as seguintes:
Os subdiretórios do /proc são nomeados de acordo com o PID dos processos a que
eles dizem respeito/sys.
Dicas LPI
•• É de vital importância entender bem o FHS para a prova, afinal, é com ele
que devemos trabalhar no dia a dia;
•• Fique atento: Agora, o diretório /media faz parte oficialmente das provas
LPI;
•• Fique atento para as diferenças entre “.” e “..” e o que eles representam para
o sistema. Os comandos de movimentação muitas vezes são grandes alvos
nas provas. Uma boa interpretação desses comandos pode ser necessária.
335
Linux LPI - Administração
Temos as cotas por blocos, que referem-se ao espaço em disco, e também por inodes,
que determinam o número de arquivos.
1. Instale o pacote de cota. Para isso, você pode utilizar um dos seguintes comandos:
336
Dispositivos, Sistemas de arquivos e FHS 5
2. Edite e altere o arquivo /etc/fstab, inserindo nele as opções usrquota e grpquota
para que o serviço de cotas seja habilitado nos dispositivos. A opção usrquota habilita
cotas para usuários e a opção grpquota habilita cotas para grupos:
337
Linux LPI - Administração
5.3.3. quotacheck
O comando quotacheck é responsável pela verificação do uso de disco de um sistema
de arquivos. Os arquivos de cota são gerados, conferidos e reparados por ele. Sua
sintaxe é a seguinte:
quotacheck [opcoes]
Opção Descrição
Esta opção é responsável pela verificação dos sistemas de arquivo
-a
habilitados como automount e localizados em /etc/fstab.
-u Opção padrão, -u verifica as cotas de usuários.
-g Com esta opção, são as cotas de grupos que são verificadas.
Com esta opção, é usado o modo verbose, em que são exibidos mais
-v
detalhes na saída do comando.
5.3.4. edquota
Por meio do comando edquota, é possível configurar as cotas para usuários e grupos
do sistema. Sua sintaxe é a seguinte:
Opção Descrição
-g Efetua a configuração de cotas para um grupo.
Permite definir o tempo do grace period para todos os usuários. O
grace period determina o tempo que o usuário pode utilizar o limite
-t hard. Por padrão, esse tempo é composto por 7 dias. O limite hard
informa a quantidade de espaço que o usuário pode utilizar além do
limite soft (limite comum do espaço), durante um tempo determinado.
-T Permite definir o tempo de grace period para um usuário específico.
-u Efetua a configuração de cotas para um usuário distinto.
338
Dispositivos, Sistemas de arquivos e FHS 5
Vejamos o seguinte exemplo, em que configuraremos as cotas para o usuário teste:
Executado o comando edquota –u teste, editaremos os campos de configuração da
cota do usuário. Costuma-se utilizar o editor de texto padrão do sistema – normalmente
o vi – para a edição desses campos.
Adiante, temos a descrição dos campos existentes para configuração de cotas:
339
Linux LPI - Administração
5.3.5. repquota
Por meio do comando repquota, podemos visualizar um relatório referente à utilização
de cotas dentro do sistema. Sua sintaxe é a seguinte:
repquota [opcoes]
Opção Descrição
-a Faz referência a todos os usuários e grupos do sistema.
-g Faz referência aos grupos que estão utilizando cotas.
-u Faz referência aos usuários que estão utilizando cotas no sistema.
-v Habilita o modo verbose (detalhado).
5.3.6. quotaon
O comando quotaon é responsável por habilitar o serviço de cotas dentro do sistema.
Sua sintaxe é a seguinte:
quotaon [opcoes]
340
Dispositivos, Sistemas de arquivos e FHS 5
A tabela a seguir descreve as principais opções de quotaon:
Opção Descrição
-a Habilita o serviço de cotas para todos os usuários do grupo.
-g Habilita o serviço de cotas somente para os grupos.
-u Habilita o sistema de cotas para os usuários.
-v Exibe o modo verbose.
5.3.7. quotaoff
Para que possamos desabilitar o serviço de cotas, devemos utilizar o comando
quotaoff. Sua sintaxe é a seguinte:
quotaoff [opcoes]
Opção Descrição
-a Desabilita o serviço de cotas para todos os usuários e grupos.
-g Desabilita o serviço de cotas somente para os grupos.
-u Desabilita o sistema de cotas para os usuários.
-v Exibe o modo verbose.
341
Linux LPI - Administração
5.3.8. quota
Exibe a configuração das cotas de maneira simples, e o resultado é muito parecido
com o arquivo de configuração de cotas. Sua sintaxe é a seguinte:
Opção Descrição
Exibe as informações de maneira mais legível, como, por
-s
exemplo, tamanho em MB de espaço em disco utilizado.
-g Exibe a configuração da cota do grupo especificado.
-u Exibe a configuração da cota do usuário especificado.
5.4. Documentação
Nas últimas décadas, a disseminação de informações adquiriu novos contornos e
proporções, refletidas também na área de tecnologia. Com os sistemas GNU/Linux
não poderia ter sido diferente.
Tudo o que se deseja saber a respeito do sistema GNU/Linux, ou seja, tudo o que se
imagina poder realizar no sistema, está documentado, tanto de forma on-line como
no próprio sistema operacional.
342
Dispositivos, Sistemas de arquivos e FHS 5
5.4.1. Documentação
A documentação deve abranger todas as áreas que dizem respeito a determinado
projeto, sendo suficiente para que alguém consiga entendê-lo. São parte da
documentação itens como HOW-TOs e manuais. Existem, no entanto, projetos muito
específicos, que demandam uma consulta individual. Esse é o caso da documentação
de um projeto de rede, na qual detalhes e componentes são especificados e dividem
espaço com os HOW-TOs e manuais.
5.4.2. HOW-TOs
A documentação HOW-TO, disponibilizada de maneira on-line, refere-se aos
procedimentos detalhados para a execução de uma tarefa ou uma função específica
– a configuração de um servidor Web ou de placas de som, por exemplo. Apesar da
objetividade do HOW-TO, a atualização do software demanda uma nova documentação.
O site Viva o Linux é um dos sites de HOW-TO para GNU/Linux. Seu endereço é
www.vivaolinux.com.br.
343
Linux LPI - Administração
Cada comando é detalhado em uma seção de man page. Essa seção é determinada
pelo número que aparece entre parênteses após um comando, por exemplo:
•• mv (1);
•• quotacl (2);
•• history (3);
•• ttyS (4);
•• lilo.conf (5);
•• xboard (6);
•• bootparam (7);
•• useradd (8).
As seções de man page vão de 1 até 9. Vejamos, a seguir, a descrição de cada uma
delas:
As informações sobre cada uma das seções podem ser exibidas por meio do
comando man man.
344
Dispositivos, Sistemas de arquivos e FHS 5
5.4.4. Documentações em /usr/share/doc
O diretório /usr/share/doc, também conhecido como /usr/doc, é onde os HOW-
TOs, disponibilizados de maneira on-line, se encontram. Nesse diretório, também
encontramos documentações que dizem respeito às informações relacionadas a um
programa ou até mesmo a um pacote, e incluem, além de FAQs, os READMES e outras.
•• ASCII;
•• HTML;
•• LateX;
•• PostScript.
5.4.6. help
Com o help, podemos identificar as opções que devemos usar com os comandos
internos do shell. Ele permite a visualização da ajuda rápida tanto para todos os
comandos internos do sistema como apenas para um deles.
# help
# help <comando>
Para mostrar a ajuda para comandos externos, por outro lado, o help assume a posição
de parâmetro --help, com o qual buscamos os parâmetros de qualquer comando.
345
Linux LPI - Administração
A sintaxe utilizada para que a ajuda rápida sobre um comando externo seja visualizada
é apresentada a seguir:
# [comando] --help
Existem meios de se obter ajuda que não envolvem o parâmetro --help, já que ele
é um parâmetro individual de cada comando.
5.4.7. manpath
O comando manpath permite visualizar os diretórios que são pesquisados no
momento em que chamamos os manuais.
5.4.8. man
Por meio do comando man, podemos consultar o conteúdo dos manuais. No final
deles, está localizada a lista correspondente aos comandos relacionados. A sintaxe
desse comando é a seguinte:
Opção Descrição
-a Exibe todas as seções referentes ao comando consultado.
-k Consulta pela palavra-chave entre os manuais.
-w Exibe a localização do arquivo do manual solicitado.
# ls /usr/share/man
Nele, é possível verificar quais são os manuais disponíveis e visualizar divisões, tais
como idiomas e níveis. A introdução específica de cada nível é visualizada com o
seguinte comando:
346
Dispositivos, Sistemas de arquivos e FHS 5
Para que possamos visualizar o manual em determinado idioma, é necessário que o
pacote para o idioma em questão tenha sido instalado no sistema. Assim, podemos
ver os manuais disponíveis em português desde que o sistema esteja instalado nessa
língua.
# man 7 undocumented
347
Linux LPI - Administração
348
Dispositivos, Sistemas de arquivos e FHS 5
A linguagem troff/nroff é a linguagem na qual os manuais são escritos. Para visualizá-
los, utilizamos os paginadores more e less. Para alterar o padrão no qual o programa
paginador exibirá os manuais, utilizamos a variável PAGER, como mostrado a seguir:
export PAGER=more
man ls
5.4.9. apropos
Por meio do comando apropos, podemos especificar uma palavra-chave que será
pesquisada nos manuais. O resultado da busca é mais genérico, já que é composto
por manuais cujo nome, parte do nome ou descrição seja o termo pesquisado. A
sintaxe desse comando é a seguinte:
apropos <palavra>
Utilizamos esse comando quando não sabemos qual documentação acessar para um
determinado assunto – para resolver esse problema, o apropos recorre a um banco
de dados, que o auxilia a localizar os manuais. Esse banco é construído mediante a
execução do seguinte comando:
# catman
# man –k <palavra-chave>
349
Linux LPI - Administração
5.4.10. whatis
Com o comando whatis, temos resultados mais precisos de busca, compostos pelo
manual cujo nome seja exatamente o termo que pesquisamos. A seguir, temos a
sintaxe desse comando:
# whatis <comando>
# man –f <palavra-chave>
5.4.11. info
O comando info possibilita o acesso às páginas info (info pages), que são navegáveis.
•• U: Sobe um nível;
As informações que o info apresenta são mais atuais, pois os manuais não são
atualizados, fazendo com que as informações contidas neles fiquem obsoletas.
info <comando>
350
Dispositivos, Sistemas de arquivos e FHS 5
A próxima imagem exibe um exemplo de página info:
5.4.12. whereis
O comando whereis tem a finalidade de localizar o caminho do arquivo binário,
do arquivo de configuração – caso exista – e a página de manual de determinado
comando do sistema. Sua sintaxe é a seguinte:
A tabela seguinte descreve algumas opções que podem ser utilizadas com whereis:
Vejamos:
whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz
No exemplo anterior, é feita uma consulta sobre o comando ls. O resultado segue
basicamente a ordem mostrada, ou seja, primeiramente é exibido o nome e caminho
do arquivo binário e, depois, o nome e o caminho da página de manual.
351
Linux LPI - Administração
5.4.13. which
O comando which é semelhante ao comando whereis, porém, exibe apenas a
localização do arquivo binário de um determinado comando. A utilização desse
comando engloba abreviações de comandos em shell script. A busca que o comando
which faz é baseada no conteúdo da variável PATH. Sua sintaxe é a seguinte:
which <arquivo>
Para visualizar o valor da variável PATH e os diretórios nos quais o comando which
se baseia para localizar os arquivos binários dos comandos especificados, deve-se
utilizar echo $PATH.
352
Dispositivos, Sistemas de arquivos e FHS 5
5.4.16. The Linux Documentation Project
Trata-se do endereço oficial de documentações de sistemas GNU/Linux. Esse site é
disponibilizado em diversos idiomas, entre eles o português brasileiro, e formatos,
como PDFs, arquivos .txt, páginas HTML, entre outros.
353
Linux LPI - Administração
Dicas LPI
354
Dispositivos, Sistemas de arquivos e FHS 5
Pontos principais
Atente para os tópicos a seguir. Eles devem ser estudados com muita atenção,
pois representam os pontos mais importantes do capítulo.
Material complementar
Sites Endereços
Documentação FHS http://www.pathname.com/fhs/
https://access.redhat.com/documentation/en-
Cota de disco Red Hat US/Red_Hat_Enterprise_Linux/6/html/Storage_
Administration_Guide/ch-disk-quotas.html
355
Mapa mental para fixação do aprendizado
356
Dispositivos,
5 Sistemas de
arquivos e FHS
Teste seus conhecimentos
Linux LPI - Administração
☐☐ a) fsck
☐☐ b) debug2fs
☐☐ c) fdisk
☐☐ d) dumpe2fs
☐☐ e) tune2fs
☐☐ a) fsck
☐☐ b) e2fsck
☐☐ c) e3fsck
☐☐ d) check
☐☐ e) debug2fs
☐☐ a) sdc3
☐☐ b) hdc3
☐☐ c) hda3
☐☐ d) hda2
☐☐ e) hdc2
358
Dispositivos, Sistemas de arquivos e FHS 5
6. Qual diretório não pode estar em uma partição separada?
☐☐ a) /tmp
☐☐ b) /etc
☐☐ c) /srv
☐☐ d) /var
☐☐ e) /boot
☐☐ a) /conf
☐☐ b) /usr/conf
☐☐ c) /srv
☐☐ d) /etc
☐☐ e) /boot
☐☐ a) operador@localhost: ~$ cd usr/sbin
☐☐ b) operador@localhost: ~$ cd pwd
☐☐ c) operador@localhost: ~$ cd /usr/sbin
☐☐ d) operador@localhost: ~$ cd /sbin
☐☐ e) operador@localhost: ~$ cd /usr/bin
☐☐ a) /disp
☐☐ b) /dev
☐☐ c) /usr/devices
☐☐ d) /pci
☐☐ e) /etc
359
Linux LPI - Administração
11. No arquivo /etc/fstab, qual opção deve ser utilizada para habilitar
cotas para usuários?
☐☐ a) grpquota
☐☐ b) userquota
☐☐ c) groupquota
☐☐ d) quota
☐☐ e) usrquota
12. Qual o nome do arquivo criado na partição que possui cotas de grupos?
☐☐ a) aquota.user
☐☐ b) quota.group
☐☐ c) aquota.grp
☐☐ d) aquota.group
☐☐ e) aquota.grupo
13. Qual comando deve ser utilizado para ver as cotas de todos os usuários?
☐☐ a) repquota -a
☐☐ b) quotauser -a
☐☐ c) quota -a
☐☐ d) quotacheck -a
☐☐ e) quotacheck -svug
14. Qual comando deve ser utilizado para editar a cota de um usuário
específico?
☐☐ a) quota -u [usuario]
☐☐ b) repquota -u [usuario]
☐☐ c) edquota -u [usuario]
☐☐ d) quotauser [usuario]
☐☐ e) quota -g [usuario]
☐☐ a) man
☐☐ b) ls
☐☐ c) ?
☐☐ d) manual
☐☐ e) <comando> manual
360
Dispositivos, Sistemas de arquivos e FHS 5
16. Qual comando é utilizado para saber o que faz um comando?
☐☐ a) whereis
☐☐ b) which
☐☐ c) whatis
☐☐ d) ls
☐☐ e) mount
17. Qual comando é utilizado para descobrir onde está o executável binário
de um comando, suas páginas e demais informações?
☐☐ a) ls
☐☐ b) man
☐☐ c) whereis
☐☐ d) help
☐☐ e) grep
☐☐ a) grep
☐☐ b) which
☐☐ c) man
☐☐ d) help
☐☐ e) ls
19. Qual comando é utilizado para acessar páginas info (info pages)?
☐☐ a) apropos
☐☐ b) mount
☐☐ c) whereis
☐☐ d) manual
☐☐ e) info
361
Dispositivos,
5 Sistemas de
arquivos e FHS
Mãos à obra!
Linux LPI - Administração
# ls -l /dev/sd*
Note que, na informação sobre tipo de arquivo, ele se inicia com a letra b, indicando
que é um dispositivo de bloco.
# ls -l /dev/tty
Note que, na informação sobre tipo de arquivo, ele se inicia com a letra c, indicando
que é um dispositivo de caractere.
# ls -l /dev/xconsole
Note que, na informação sobre tipo de arquivo, ele se inicia com a letra p, indicando
que é um dispositivo de pipe.
# ls -l /dev/log
Note que, na informação sobre tipo de arquivo, ele se inicia com a letra s, indicando
que é um dispositivo de socket.
364
Dispositivos, Sistemas de arquivos e FHS 5
Laboratório 2 - Montando dispositivos
5. Carregue a imagem .ISO da distribuição CentOS 7 e liste o conteúdo do diretório
/media/:
# ls /media/
# ls /media/
# umount /media/
# ls /media/
# cat /etc/fstab
__________________________________________________________________________________
__________________________________________________________________________________
__________________________________________________________________________________
365
Linux LPI - Administração
__________________________________________________________________________________
__________________________________________________________________________________
# fdisk -l
Note que existe uma partição bootável (na coluna boot há um *).
# dumpe2fs -h /dev/sda1
# tune2fs -c 5 /dev/sda1
# tune2fs -c -1 /dev/sda1
16. Faça com que o sistema realize a manutenção automática para daqui a 3 dias:
366
Dispositivos, Sistemas de arquivos e FHS 5
Laboratório 5 - Analisando a estrutura de
diretórios
19. Logue no sistema com o usuário operador;
$ su
21. Execute o comando a seguir para observar em qual diretório estamos localizados
no momento:
# pwd
# cd /
# ls
# cd /etc
# ls
367
Linux LPI - Administração
26. Vá para o diretório /dev e liste seu conteúdo com os seguintes comandos:
# cd /dev
# ls
27. Vá para o diretório /bin e liste seu conteúdo com os seguintes comandos:
# cd /bin
# ls
Observe que os arquivos listados são os comandos utilizados com maior frequência.
Entre eles, estão o ls e o pwd.
# fdisk /dev/sdb
# mkfs.xfs /dev/sdb1
368
Dispositivos, Sistemas de arquivos e FHS 5
31. Habilite a quota no ponto de montagem backup e verifique seu status;
33. Mapeie o nome do projeto com a sua identificação, adicionando no arquivo /etc/
projectsid, que será criado:
37. Altere o grupo do usuário operador, no diretório /mnt/backup, abra uma nova
sessão com o usuário operador, acesse o diretório /mnt/backup e crie um arquivo
que tenha um tamanho acima de 1 Megabyte;
# su - operador
$ cd /mnt/backup
Será criado um arquivo contendo a lista de arquivos gerada pelo comando ls e após
ele atingir o tamanho definido na cota, uma mensagem será apresentada, conforme
o exemplo adiante:
369
Linux LPI - Administração
39. Edite o arquivo /etc/fstab para suportar as cotas de disco. Altere a linha a seguir:
Para:
:wq
# ls /home
# repquota -a
# quotaoff -a
370
Dispositivos, Sistemas de arquivos e FHS 5
47. Habilite novamente o sistema de cotas;
# quotaon -a
# edquota -u operador
# repquota -a
# repquota -a
Deve haver algo parecido com o que vemos a seguir, o que indica que o usuário aluno
estourou o limite soft e tem seis dias para corrigir o problema:
371
Linux LPI - Administração
54. Com o comando quota, verifique a quota disponível para o usuário operador;
# ulimit -a
# ulimit -u 5000
# ulimit -a
# man man
# ls --help
# manpath
Note que o resultado, apesar de contemplado em apenas uma linha, exibe vários
locais, separados por dois-pontos (:).
# apropos route
372
Dispositivos, Sistemas de arquivos e FHS 5
63. Faça a mesma busca do passo anterior, desta vez utilizando o comando man:
# man -k route
64. Supondo que não se sabe o que o ls faz, pergunte ao GNU/Linux do que se trata
o referido comando:
# whatis ls
65. Navegue pela página de ajuda do comando whatis utilizando o comando info:
# info whatis
66. Para saber onde estão todas as informações do comando info, como executável,
man page, entre outras, utilize o comando whereis:
# whereis info
67. Utilize o comando which para saber somente onde está o executável do whereis:
# which whereis
373
Shell script e
6 gerenciamento
de dados
ÃÃ Gerenciando o shell;
ÃÃ Shell Script;
ÃÃ Gerenciamento de dados.
Linux LPI - Administração
Este capítulo faz parte do tópico 105 - Shell, Scripting and Data Management
da segunda prova identificada como 102-400 ou LX0-104 da certificação LPIC-1.
Você precisará estar apto a customizar o ambiente shell bash, escrever scripts
simples de automação e gerenciar dados, usando MySQL.
6.1. Gerenciando o shell
Já vimos há alguns capítulos que o shell é o mediador entre o computador e o
usuário, pois é por meio dele que podemos enviar comandos que serão interpretados
e executados no sistema. Neste capítulo, serão mostrados alguns tipos de shell,
que variam dos mais simples àqueles indicados a usuários avançados ou com bom
entendimento de programação.
Como o bash é a versão do shell padrão para quase todas as distribuições e também
a versão em que as principais avaliações de certificação para o Linux são baseadas,
a ênfase será dada a ele. Aqui, veremos como configurá-lo, personalizá-lo, trabalhar
com suas variáveis, automatizar tarefas e fazer dele uma ferramenta eficiente de
programação.
6.1.1. Tipos de shell
Há diversos tipos de shell disponíveis para distribuições GNU/Linux. O bash é o tipo
utilizado na maioria das distros.
•• sh (Bourne shell)
Desenvolvido por Stephen Bourne, por isso Bourne shell. É o shell original, bem
simples, com poucas ferramentas, mas ainda utilizado em sistemas UNIX e ambientes
relacionados ao UNIX.
376
Shell script e gerenciamento de dados 6
•• bash (Bourne Again shell)
Trata-se do shell padrão do Linux, conveniente tanto para usuários iniciantes, por ser
intuitivo e flexível, quanto para avançados e profissionais, por possuir ferramentas
variadas e eficientes. Compatível com todos os comandos do sh.
•• csh (C shell)
Versão melhorada do csh, que interpreta linguagens de comando e pode ser usada
tanto como um shell de login interativo quanto como um processador de comandos
de shell scripts. É completamente compatível com o csh.
Este shell é o Bourne Shell evoluído, portando todos os comandos que funcionavam
no Bourne Shell funcionarão nesse com a vantagem de ter mais opções.
•• zsh (Z shell)
Além de um shell desenvolvido para uso interativo, que engloba várias funções úteis
do bash, ksh e tcsh, o zsh, é também uma linguagem de script eficiente.
6.1.2. Variáveis
Podemos definir variáveis como nomes que contêm algum valor e, ainda, como
espaços de memória que armazenam valores. Sua função é o fornecimento de dados
úteis e necessários a usuários e programas. Tais variáveis apresentam a seguinte
forma:
NOME=VALOR
•• Variáveis locais: São as variáveis disponíveis somente para o shell atual. Isso
significa que sua visibilidade é restrita ao ambiente para o qual foram definidas,
elas não ficam disponíveis para o restante do sistema;
•• Variáveis globais (de ambiente): São as variáveis disponíveis tanto para o shell
atual como para os subprocessos que as utilizam, de forma que sua visibilidade
é aberta a outros ambientes além daqueles em que elas são definidas.
377
Linux LPI - Administração
Variável Definição
HOME Responsável por identificar o diretório do usuário.
HOSTTYPE Faz referência à plataforma que está sendo utilizada.
SHELL Permite identificar o shell que está sendo utilizado.
TERM Define o tipo de terminal que está sendo utilizado.
USER Predefine o nome da conta como variável global.
Determina quais diretórios devemos pesquisar e, ainda, qual
PATH sequência deverá ser seguida para encontrar um determinado
comando.
PS1 Representa as informações exibidas no prompt.
PS2 Representa o prompt estendido.
MAIL Esta variável informa como o correio eletrônico está definido.
LOGNAME É um sinônimo da variável USER.
Com a utilização desta variável, é possível definir o tipo de sistema
OSTYPE
operacional que está sendo utilizado.
6.1.2.1. Definindo variáveis
A forma de definição é diferente entre variáveis locais e globais. Uma variável local é
definida com a simples atribuição de um nome para ela, como se vê a seguir:
<variavel>=<valor>
Já uma variável global exige o comando export antes da sintaxe usada para variáveis
locais, como podemos ver a seguir:
export <variavel>=<valor>
É convencionado que variáveis globais tenham seu nome iniciado por letra maiúscula.
378
Shell script e gerenciamento de dados 6
No exemplo que acabamos de ver, foi criada uma variável local chamada LOCAL, a
qual estará disponível apenas a esta seção. Para visualizar o retorno da variável, foi
utilizado o comando echo. Em seguida, por meio do comando export, foi criada uma
variável global, a qual estará disponível para todas as seções do sistema. Por fim, para
verificar o retorno da variável global criada, o comando echo também foi utilizado.
6.1.3. Visualizando variáveis
Os comandos env e set são usados para a visualização de variáveis, cada um com
suas especificidades. Veremos, a seguir, as particularidades de ambos.
6.1.3.1. env
Este comando é utilizado para exibir e trabalhar somente com as variáveis de
ambiente. Sem argumento, o comando lista todas as variáveis de ambiente do sistema
e seus valores. Com base nos argumentos definidos na linha de comandos, o env é
responsável por rodar um programa em uma ambientação modificada.
Opção Opção
Definição
GNU Linux
--help Esta opção gera uma mensagem de ajuda.
--version Esta opção é utilizada para visualizar a versão.
Esta opção desconsidera o ambiente herdado e inicia um
-i, --ignore
aplicativo com o ambiente vazio.
-u --unset Esta opção exclui, do ambiente, o nome da variável.
No exemplo a seguir, utilizamos o comando env em conjunto com grep para filtrar
as variáveis. Como o comando env só lista as variáveis globais, a variável LOCAL não
traz nenhum resultado.
379
Linux LPI - Administração
6.1.3.2. set
Diferente do comando env, o comando set é utilizado para visualizar variáveis, tanto
locais quanto globais, e seus atributos. Sua sintaxe é a seguinte:
echo $<variavel>
6.1.5. Excluindo variáveis
Utilizamos o comando unset para excluir variáveis. Sua sintaxe é a seguinte:
unset <variavel>
É importante lembrar que esse comando, quando usado para uma variável global, só
tem efeito na sessão atual, de forma que a variável continuará acessível em outras
sessões.
380
Shell script e gerenciamento de dados 6
No exemplo a seguir, a variável LOCAL é primeiramente definida. Depois, com a
execução do comando unset, a variável deixa de existir:
A seguir, serão descritos alguns valores que podem ser utilizados com a variável PS1:
Valor Descrição
\h Faz referência ao nome do host.
\w Caminho completo do diretório corrente.
\W Refere-se ao diretório atual.
\u Exibe o nome do usuário.
\t Exibe a hora do sistema.
\d Refere-se à data do sistema.
\$ Especifica o valor $ para usuários comuns, e o valor # para o root.
No exemplo adiante, alteramos a variável PS1 para que o prompt exiba o nome do
usuário, o nome do host e a hora atual:
381
Linux LPI - Administração
Caso o bash seja invocado durante um login, ele lerá os arquivos ~/etc/profile,
~/.bash_profile, ~/.bash_login e ~/.profile, nessa ordem, caso eles existam. O
primeiro aplica-se a todos os usuários do sistema, ao passo que os três últimos,
ocultos por iniciarem com um ponto (.), estão no diretório /home do usuário em
questão. Ao terminar a sessão, o bash executará automaticamente o arquivo ~/.bash_
logout, se ele existir.
Quando não se tratar de um shell invocado numa sessão de login, como é o caso
de terminais em sessões X, os arquivos executados automaticamente, caso existam,
serão o /etc/bash.bashrc e o ~/.bashrc.
•• /etc/profile
•• /etc/environment
•• /.bashrc
Executado por shells invocados em sessões já iniciadas, e não de login, esse arquivo
possui características semelhantes às do ~/.bash.profile.
382
Shell script e gerenciamento de dados 6
6.1.8. Alterando o shell atual
Para alterarmos o shell atual, utilizamos o comando chsh com a opção –s ou --shell,
seguido do nome do shell que se deseja utilizar.
# chsh –s /bin/sh
6.1.9. Utilizando aliases
Alguns comandos têm uma sintaxe indiscutivelmente grande e digitá-la inteira toda
vez que o comando for necessário tende a se tornar uma tarefa inconveniente,
especialmente quando o comando é usado diversas vezes com os mesmos argumentos
e opções.
Uma forma bastante útil de agilizar a entrada de um comando que seja usado
normalmente com os mesmos parâmetros é atribuir um alias, da palavra apelido
em inglês. Em linha de comando ou em um arquivo próprio para isso, atribui-se um
termo pequeno e de digitação fácil para executar um determinado comando com
parâmetros específicos toda vez que o alias for usado.
383
Linux LPI - Administração
6.1.11. .bash_history
O .bash_history é um arquivo responsável por armazenar o histórico de linhas de
comando. Por padrão, até 500 comandos podem ser armazenados nesse arquivo, que
pode ser verificado por comandos que exibem o seu conteúdo. Por meio das setas
direcionais no teclado, para cima e para baixo, podemos verificar quais comandos já
foram utilizados.
384
Shell script e gerenciamento de dados 6
O arquivo .bash_history armazena sua configuração em algumas variáveis.
Variável Descrição
Armazena o nome do arquivo utilizado para armazenar
HISTFILE
históricos.
Armazena o número máximo de comandos que o arquivo
HISTSIZE
suportará.
Armazena o número máximo de linhas que o arquivo do
HISTFILESIZE
histórico de comandos suportará.
Podemos determinar que algumas variáveis não terão seus valores alterados pelos
usuários. Podemos utilizar o comando readonly e, dessa forma, elas se tornarão
constantes.
385
Linux LPI - Administração
6.2. Shell Script
Scripts contribuem com a realização de diversas atividades, como na automatização
de trabalhos administrativos que podem se revelar repetitivos e extensos. Temos,
em um script, uma sequência de instruções que se distingue dos programas por seu
caráter não compilado.
Shell scripts são arquivos contendo conjuntos de comandos digitados em texto puro
(ASCII), cuja finalidade é realizar a automatização de tarefas no prompt de comandos.
Existem certas regras para a criação destes scripts que devem ser levadas em conta.
•• Para que outro usuário possa utilizá-lo, algumas providências devem ser tomadas,
como oferecer atributos de execução ao script e copiá-los para um diretório
devidamente citado na variável PATH. Logicamente, scripts que possuam
funções administrativas não podem ser utilizados por qualquer usuário, já que
somente o superusuário deve ter permissão de execução.
•• Linhas iniciadas com # são caracterizadas como comentários, o que faz com
que o shell as ignore. Aliás, a prática de comentar linhas é recomendável por
permitir que outros usuários compreendam a lógica utilizada nos scripts e façam
alterações, caso seja necessário;
•• Devem ser evitadas as linhas em branco, devido ao risco de o usuário ter dúvidas
quanto ao acesso e execução do script.
386
Shell script e gerenciamento de dados 6
6.2.1. Criando scripts
Para tratarmos da escrita e edição de scripts, é importante destacar dois pontos
fundamentais:
•• Para rodar diretamente, o script deve ter permissão de execução. Para atribuir
essa permissão, deve-se utilizar o comando chmod, cuja sintaxe é apresentada
a seguir:
chmod +x <script>
Em que:
# vi /root/ola_mundo.sh
387
Linux LPI - Administração
•• A primeira linha informa qual shell deve ser executado. Essa informação vem
logo após a sequência de caracteres #!;
•• Toda informação iniciada por # não é interpretada pelo script, sendo utilizada
como comentário;
Depois, precisamos dar a permissão de execução para poder utilizá-lo, como mostra
a imagem a seguir:
6.2.2. Fornecimento de parâmetros
O fornecimento de parâmetros permite que informações como dados, diretórios e
nomes de arquivos, entre outras, possam ser manipuladas diretamente pelos scripts,
o que, por sua vez, faz com que estes possuam uma interatividade e produtividade
extremamente eficazes.
Nesse sentido, temos os chamados parâmetros posicionais, que são variáveis dentro
de um shell script cujos valores são atribuídos pelos usuários. Cada parâmetro
posicional corresponde a um argumento na linha de comando, que é encarregado de
chamar programas. Eles são referidos com um sinal monetário ($); esses sinais são
enumerados pela ordem em que foram colocados na linha de comando ($1, $2, $3 e
assim por diante).
388
Shell script e gerenciamento de dados 6
Na tabela a seguir, destacamos algumas formas do parâmetro, ou variável $:
Variável Descrição
Representa todas as variáveis existentes, ou todos os valores
$*
passados como argumentos.
$# Representa o número de variáveis, ou argumentos, à disposição.
$0 Refere-se ao nome do arquivo de script.
$n Representa a posição do argumento.
$! Representa o PID (Process ID) do último programa executado.
$$ Representa o PID do shell atual.
$? Representa o valor de retorno do último comando executado.
389
Linux LPI - Administração
6.2.3. Instruções condicionais
Estudamos, até aqui, scripts que são executados com o uso de comandos de execução,
dispostos em linha de comando em série – isto é, scripts sem escolhas.
6.2.3.1. if-then
Esta instrução baseia-se em uma lógica extremamente simples, em que uma ação é
executada se a condição proposta existir ou for satisfeita. Para melhor compreensão,
demonstramos a seguir a sintaxe básica de um script com a instrução if-then:
#!/bin/sh
if [ condicao existe ou e satisfeita ]; then
[acao e realizada]
fi
A instrução também pode ser construída em forma de cascata. Tal estrutura pode
ser útil para estabelecer certos filtros em sucessão, para que uma determinada ação
possa ser executada ou não. A estrutura básica é a seguinte:
#!/bin/sh
if [ condicao existe ou e verdadeira ]; then
[acao e realizada];
if [ outra condicao existe ou e satisfeita ]; then
[outra acao e realizada];
else [ acoes alternadas ocorrem ]
fi
fi
exit
390
Shell script e gerenciamento de dados 6
O comando if é muito eficaz, já que possibilita impedir erros de processamento,
com a vantagem de informar exatamente o local do erro. Isso é possível pelo fato do
comando exit ser colocado justamente para interromper uma instrução condicional,
caso certas ocorrências sejam registradas.
391
Linux LPI - Administração
6.2.3.2. Loops
Por meio das expressões condicionais com loops, os comandos repetem-se
consecutivamente até que certa condição seja satisfeita. São várias as possibilidades
apresentadas na criação dos scripts, como podemos ver na tabela a seguir:
Comando Condição
Para o loop deixar de ocorrer, a condição deve passar de
while verdadeira a falsa (é impossível determinar o número de vezes
que o loop será realizado).
until O loop continuará ocorrendo, enquanto a condição for falsa.
for O loop é realizado até que a função seja completamente cumprida.
392
Shell script e gerenciamento de dados 6
Já no exemplo adiante, utilizamos o comando until para executar o script enquanto a
condição for falsa. Definimos VALOR como 0 novamente, mas utilizamos o comando
until dizendo que o valor é igual a 6. Obviamente que, por se iniciar como 0, ele não
é verdadeiro. O script vai somando até o instante em que a condição for verdadeira,
ou seja, até que VALOR seja igual a 6, para, então, ser finalizado.
No exemplo de script a seguir, que demonstra o uso de for, lista-se todos os arquivos
que estão na pasta /etc e que terminam com .conf, sendo que cada resultado é
armazenado em uma variável chamada i e, para cada resultado, uma mensagem é
exibida na tela:
393
Linux LPI - Administração
6.2.3.3. case
Este comando permite que se realize uma comparação entre um valor oferecido pelo
usuário e os parâmetros internos do script. Tal processo gera o retorno de uma ação
correspondente.
394
Shell script e gerenciamento de dados 6
6.2.4. test
O comando test é utilizado para testar condicionais. Ele pode ser usado para strings
(texto), expressões matemáticas (números), variáveis e arquivos.
A seguir, temos um exemplo de script que utiliza o comando test com uma operação
com variáveis:
395
Linux LPI - Administração
6.2.5. read
O comando read é utilizado para solicitar, durante a execução do script, um valor do
usuário. Com o read, em vez de digitarmos o valor juntamente com o comando, como
temos feito até o momento, podemos fazer perguntas durante a execução do script.
396
Shell script e gerenciamento de dados 6
6.2.6. Operadores
A seguir, listamos alguns operadores que podemos utilizar em shell script, junto com
suas respectivas funções:
397
Linux LPI - Administração
Operador Descrição
-b O arquivo é um dispositivo de bloco.
-c O arquivo é um dispositivo de caractere.
-d É um diretório.
-e O arquivo existe.
-f É um arquivo normal.
-g O bit SGID está ativado.
-G O grupo do arquivo é o do usuário atual.
-k O Sticky Bit está ativado.
-L O arquivo é um link simbólico.
-O O dono do arquivo é o usuário atual.
-p O arquivo é um pipe.
-r O arquivo tem permissão de leitura.
-s O tamanho do arquivo é maior que zero.
-S O arquivo é um socket.
-t O descritor de arquivo N é um terminal.
-u O bit SUID está ativado.
-w O arquivo tem permissão de escrita.
-x O arquivo tem permissão de execução.
-nt O arquivo é mais recente que...
-ot O arquivo é mais antigo que...
-ef O arquivo é o mesmo que...
398
Shell script e gerenciamento de dados 6
É importante, também, destacar outros operadores que funcionam como
redirecionadores, alterando as entradas e saídas dos comandos no shell. A seguir,
encontramos a descrição desses operadores:
Operador
Descrição
redirecionador
; Responsável pela separação dos comandos.
A Standard Output é transformada em Standard Input, de um
|
comando para outro.
A Standard Output é enviada para um arquivo. O conteúdo
>
desse arquivo é criado ou, caso ele já existisse, é sobrescrito.
A Standard Output é enviada para um arquivo. O conteúdo é
>>
inserido no final desse arquivo.
O conteúdo de um arquivo é redirecionado para a Standard
<
Input.
2>&1 A Standard Error é transformada em Standard Output.
2> A Standard Error é enviada para um arquivo.
Responsável por testar o valor da variável $?, este é o operador
||
OU.
$$ Responsável por testar o valor da variável $?, este é o operador E.
6.3. Gerenciamento de dados
Para consultar, editar e incluir dados em banco de dados, costumamos lidar com
a linguagem padrão SQL (Structured Query Language, que significa Linguagem de
Consulta Estruturada). Com ela, não é necessário conhecer as tecnologias específicas
que estão sendo utilizadas para que possamos realizar as principais atividades em
um banco de dados.
Utilizamos a linha de comando para nos comunicarmos com o banco de dados. Essa
interação é feita com um prompt proporcionado pelos principais bancos de dados,
procedimento similar ao prompt de bash.
399
Linux LPI - Administração
As tabelas dos bancos de dados são parecidas com as das planilhas. Seus componentes
se organizam em:
•• Linhas: Compostas pelos dados que podem ser alterados, bem como inseridos
ou excluídos.
6.3.1. Inserindo dados
O comando SQL INSERT é utilizado para inserir dados. A seguir, vemos o uso do
comando para inserir uma linha em uma tabela existente:
Os valores nos primeiros parênteses representam os nomes das colunas nas quais
se deseja inserir os dados. Os valores nos parênteses após VALUES representam os
dados a serem inseridos nas colunas. Uma instrução SQL deve sempre terminar com
ponto e vírgula (;).
Caso uma coluna seja omitida na instrução, o respectivo campo fica vazio na
linha inserida. Um campo id é criado automaticamente para identificar a linha que
corresponde aos dados inseridos.
400
Shell script e gerenciamento de dados 6
6.3.2. Consultando dados
Para consultar dados em bancos de dados, utilizamos o comando SELECT e algumas
instruções, que descrevemos adiante.
6.3.2.1. SELECT
O comando SELECT serve para consultar colunas de uma tabela. Para consultar uma
coluna específica, a sintaxe é a seguinte:
401
Linux LPI - Administração
6.3.2.2. WHERE
Para que a seleção se limite apenas a uma ou mais linhas que obedeçam a determinado
critério, utilizamos a instrução WHERE, cuja sintaxe é a seguinte:
A seguir, o WHERE é utilizado para listar apenas os produtos com o nome microondas,
e, em seguida, apenas os produtos com o nome TV:
402
Shell script e gerenciamento de dados 6
6.3.2.3. ORDER BY
A instrução ORDER BY serve para alterar a ordem de exibição das linhas. Sua sintaxe
é a seguinte:
403
Linux LPI - Administração
6.3.2.4. GROUP BY
A instrução GROUP BY permite reunir resultados de um ou mais valores duplicados.
Sua sintaxe é a seguinte:
Em que:
Vejamos:
404
Shell script e gerenciamento de dados 6
Observando a imagem anterior, primeiramente lista-se tudo o que há na tabela
cursos. Em seguida, é feita uma contagem e um agrupamento por curso, o que
permite identificar quantas pessoas estão realizando cada um dos cursos. Por fim, o
GROUP BY é utilizado para identificar quantas pessoas estão relacionadas em cada
modalidade. Podemos notar que há duas pessoas em Modulo 1.
6.3.2.5. INNER JOIN
Com a instrução INNER JOIN, podemos exibir linhas de uma tabela cujo valor em uma
determinada coluna seja igual ao valor de uma coluna localizada em outra tabela.
Dessa forma, é possível cruzar informações localizadas em tabelas diferentes.
405
Linux LPI - Administração
No exemplo que acabamos de ver, o SELECT foi utilizado junto com DISTINCT para que
não houvesse repetição de resultado. Em seguida, definimos quais colunas deveriam
ser exibidas na tela, seguindo o formato tabela.coluna. No momento de definir a
tabela (FROM), utilizamos o comando INNER JOIN (cursos INNER JOIN cadastro).
6.3.3. Atualizando dados
Com a instrução UPDATE, é possível modificar dados já inseridos em uma tabela. Sua
sintaxe é a seguinte:
As instruções UPDATE e SET definem a tabela e a coluna que terão os dados alterados.
Os novos dados são inseridos em <'novo_valor'>. Para definir as linhas que terão
seus valores modificados, é fundamental utilizar a instrução WHERE.
406
Shell script e gerenciamento de dados 6
No exemplo adiante, elevamos o curso do aluno Linus Torvalds de Modulo 1 para
Modulo 2:
6.3.4. Excluindo dados
Para excluirmos as linhas de uma tabela, utilizamos a instrução DELETE, cuja sintaxe
é a seguinte:
Essa sintaxe exclui todas as linhas de uma tabela. Para definir quais linhas devem ser
excluídas, deve-se utilizar a instrução WHERE após DELETE:
407
Linux LPI - Administração
No exemplo a seguir, o DELETE é utilizado para excluir o aluno Bill Gates da tabela:
Dicas LPI
•• Conhecer um pouco das shells sh e bash pode ser muito importante para
prova.
408
Shell script e gerenciamento de dados 6
Pontos principais
Atente para os tópicos a seguir. Eles devem ser estudados com muita atenção,
pois representam os pontos mais importantes do capítulo.
•• Para consultar, editar e incluir dados em banco de dados, costumamos lidar com
a linguagem padrão SQL (Structured Query Language, que significa Linguagem
de Consulta Estruturada). Com ela, não é necessário conhecer as tecnologias
específicas que estão sendo utilizadas para que possamos realizar as principais
atividades em um banco de dados.
Material complementar
Sites Endereços
Shell Script http://linuxcommand.org/index.php
https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-data-
MySQL
manipulation.html
409
Mapa mental para fixação do aprendizado
410
6
Shell script e
gerenciamento
de dados
Teste seus conhecimentos
Linux LPI - Administração
☐☐ a) sh
☐☐ b) csh
☐☐ c) bash
☐☐ d) rbash
☐☐ e) tsh
☐☐ a) Local
☐☐ b) Global
☐☐ c) Ambiente
☐☐ d) Sistema
☐☐ e) Setada
☐☐ a) unset
☐☐ b) unalias
☐☐ c) unenv
☐☐ d) remvar
☐☐ e) unvar
☐☐ a) variavel
☐☐ b) var
☐☐ c) ls
☐☐ d) cat
☐☐ e) echo
☐☐ a) history
☐☐ b) bash_history
☐☐ c) lastcommands
☐☐ d) ls
☐☐ e) echo
412
Shell script e gerenciamento de dados 6
6. Qual comando é utilizado para tornar um script executável?
☐☐ a) chmod +x
☐☐ b) chown +x
☐☐ c) chmod x
☐☐ d) chown x
☐☐ e) exec +x
☐☐ a) $?
☐☐ b) $1
☐☐ c) $n
☐☐ d) $!
☐☐ e) $0
8. Em uma sintaxe de if, se a situação não for atendida, qual comando deve
ser utilizado para executar outra tarefa?
☐☐ a) then
☐☐ b) else
☐☐ c) fi
☐☐ d) case
☐☐ e) for
413
Shell script e
6 gerenciamento
de dados
Mãos à obra!
Linux LPI - Administração
# CURSO=Impacta
# echo $CURSO
# echo $IMPACTA
6. Com o comando env, verifique se a variável global está listada nas definições de
variáveis:
# /bin/bash
9. Verifique se a variável global aparece nesse shell (o resultado deve ser positivo):
# exit
416
Shell script e gerenciamento de dados 6
Laboratório 2 - Criando alias
11. Crie um alias para o comando ls:
# l
# vi /root/.bashrc
# :wq
16. O novo alias terá efeito na próxima vez em que o logon for realizado. Então,
efetue o logoff:
# exit
17. Logue novamente e execute o comando ls. Agora, é possível notar que o resultado
é colorido.
# ls /etc
# history
417
Linux LPI - Administração
# mkdir /opt/scripts
# vi /opt/scripts/backup.sh
22. Para criar o script de backup, copie o script a seguir. Não é necessário copiar os
comentários (#):
#!/bin/bash
418
Shell script e gerenciamento de dados 6
then
# Cria a pasta
mkdir /var/log/backup
fi
419
Linux LPI - Administração
:wq
# chmod +x /opt/scripts/backup.sh
# /opt/scripts/backup.sh
26. Observe o log gerado (troque $DATA pela data no nome do arquivo);
# ls /var/log/backup
# cat /var/log/backup/backup_$DATA.log
420
Shell script e gerenciamento de dados 6
# ls /backup
# mysql -u root -p
421
7 Interface do
usuário e desktop
Este capítulo faz parte do tópico 106 – User Interfaces and Desktops da segunda
prova identificada como 102-400 ou LX0-104 da certificação LPIC-1.
Com esse servidor, as janelas são gerenciadas pelos gerenciadores de janela (window
managers, ou WM) e, assim, a estética gráfica delas difere dependendo de cada
gerenciador. Enquanto isso, configurações como mover janelas, desenhar na tela e a
interação com o mouse e teclado são feitas pelo GUI.
424
Interface do usuário e desktop 7
7.1.1. Verificando os dispositivos de hardware
compatíveis
O servidor X costuma ser configurado de forma automática, mas há casos em que sua
configuração ou instalação deve ser realizada manualmente. Para isso, é necessário
verificar os dispositivos de hardware compatíveis, cuja lista pode ser conferida no site
www.x.org/wiki/Projects/Drivers.
Grande parte dos dispositivos de vídeo suporta o modo VESA Framebuffer, permitindo
que o dispositivo nesse modo seja usado mesmo quando apenas parcialmente
compatível.
7.1.2. Instalando o servidor X
A instalação do Linux geralmente é acompanhada pela instalação do servidor X. No
entanto, existem casos em que devemos usar ferramentas de pacotes de distribuição
para fazer essa instalação.
Isso costuma ocorrer quando cada servidor tem uma distribuição específica instalada
nele. O site www.xorg.org disponibiliza o pacote xorg, com o qual adquirimos o X e
que pode ser instalado com o apt-get, o yum e o aptitude.
7.1.3. Iniciando o servidor X
Para iniciar o servidor X, basta digitar X na linha de comando. O resultado é o seguinte:
425
Linux LPI - Administração
7.1.4. Configurando o servidor X
Para que o servidor X seja configurado, precisamos editar o arquivo /etc/x11/xorg.
conf, no qual temos acesso a informações sobre:
•• Teclado;
•• Mouse;
•• Arquivo do sistema;
•• Dispositivo de vídeo;
•• Monitor.
# X -configure
•• Testar o driver;
426
Interface do usuário e desktop 7
•• Files: Contém caminhos como RGBPath, ModulePath e FontPath – este
último é responsável por identificar onde as fontes podem ser encontradas –,
indispensáveis ao X;
•• Device: Indica um dispositivo de vídeo, podendo ter mais de uma seção e, assim,
identificando mais de um desses dispositivos. Existem alguns itens, como BusID
e VideoRam (Option “BusID” “PCI:1:0:0” e Option “VideoRam” “8192” são seus
respectivos exemplos); entre os itens existentes, os obrigatórios são:
427
Linux LPI - Administração
7.1.6. Instalando fontes
As fontes usadas pelos aplicativos são obtidas por meio do X. Os sistemas básicos
responsáveis por isso são o Core e Xft, cuja principal diferença se encontra na
manipulação das fontes – ela ocorre no servidor no caso do Core, e no cliente quando
se trata do Xft.
No sistema Xft, a instalação das fontes é feita mediante a cópia delas para o diretório
padrão ou no pessoal, respectivamente, /usr/share/fonts/* e ~/.fonts/. As fontes
que podem ser instaladas estão listadas a seguir, e têm o recurso anti-aliasing, com o
qual os cantos ficam arredondados e o serrilhado é diminuído:
•• Type1;
•• TrueType;
•• OpenType;
•• CID;
•• Speedo.
428
Interface do usuário e desktop 7
O servidor de fontes Xfs permite que, em um servidor de rede, apenas um servidor
tenha as fontes utilizadas pelas outras máquinas. O arquivo de configuração /etc/
X11/fs/config possui algumas opções, descritas na tabela a seguir, e é o padrão para
o Xfs:
Opção Descrição
O limite de clientes com os quais o Xfs se conecta é definido
client-limit
nesta opção.
Esta opção representa os caminhos dos diretórios nos quais
catalogue
as fontes estão armazenadas.
O protocolo em que o servidor não deve operar é
no-listen
determinado nesta opção.
alternate-servers Demais servidores de fontes.
FontPath “Unix/:7100”
Inserimos, também, uma linha nos demais computadores. Assim, caso uma conexão
TCP/IP seja utilizada, teremos a seguinte sintaxe, em que numero_ip deve ser
substituído pelo número IP do computador em questão:
FontPath “tcp/numero_ip:7100”
7.1.7. Variável DISPLAY
Um servidor X remoto pode exibir as janelas de um aplicativo sendo executado
localmente. O local onde as janelas serão exibidas é identificado com a variável
DISPLAY.
429
Linux LPI - Administração
No caso de possuir apenas um display, o valor da variável será :0.0, pois contamos a
partir do número zero. Assim, as janelas serão exibidas tanto nesse display quanto no
computador local, sendo que temos localhost quando omitido o valor antes do sinal
de dois pontos.
$ export DISPLAY=192.168.0.5:0.0
Na estação que receberá as telas, será necessário autorizar a conexão entre as duas
máquinas. Para isso, utilizamos o comando xhost, adicionando (+) ou removendo (-)
o servidor, como no exemplo a seguir:
$ xhost +192.168.0.1
430
Interface do usuário e desktop 7
7.1.8. Gerenciadores de display (display managers)
Gerenciadores de display, também conhecidos como display managers, são
responsáveis pela identificação do usuário e inicialização do X11. Na tabela a seguir,
podemos conhecer os principais gerenciadores de display:
Gerenciador
Descrição
de display
Este gerenciador é o padrão do X, e a localização de seu arquivo
XDM
de configuração é etc/X11/xdm/*.
Padrão do KDE, seu arquivo de configuração se encontra em /
KDM
usr/share/config/kdm/*.
Padrão do GNOME, este gerenciador tem seu arquivo de
GDM
configuração em /etc/gdm.
Com ele, que por padrão é desativado, o login pode ser realizado localmente e por
rede. A solicitação de conexão será feita pela máquina remota, com o comando X
-query servidor, sendo que o login por rede necessita do XDM ativo e configurado.
Com o arquivo Xsetup, não é necessário esperar a tela de login ser exibida para
realizar configurações em imagens de fundo e cores, por exemplo. Alterações em
mensagens, cores e fontes do gerenciador XDM são feitas por meio da edição do
arquivo /etc/X11/xdm/Xresources.
431
Linux LPI - Administração
O acesso remoto obtido por meio desse protocolo é controlado com o arquivo
/etc/X11/xdm/Xaccess, como mostra a seguinte tela:
A seguir, temos a linha necessária para o bloqueio do login remoto por XDMCP:
DisplayManager.requestPort: 0
432
Interface do usuário e desktop 7
7.1.9. Gerenciadores de janela (window managers)
Com gerenciadores de janela (window managers), tanto a aparência quanto a
localização das janelas do X são administradas. Um dos diferenciais do GNU/Linux é
permitir que o próprio usuário gerencie as janelas, em vez de conceder esse controle
ao sistema, como é feito pelos sistemas Apple e Microsoft, que oferecem apenas uma
aparência básica.
•• Configuração de menus;
•• Interface gráfica;
•• Telas e visuais;
•• Capacidade de um servidor;
433
Linux LPI - Administração
Neste outro exemplo, utilizamos xdpyinfo para extrair apenas informações sobre a
resolução do X:
434
Interface do usuário e desktop 7
7.1.11. Exibindo informações sobre janelas
As informações sobre janelas são exibidas com o xwininfo. Esse utilitário possui
algumas opções, entre as quais a –stats é a opção padrão em caso de nenhuma das
outras serem escolhidas. A opção escolhida determinará as informações apresentadas.
435
Linux LPI - Administração
436
Interface do usuário e desktop 7
7.1.13. Utilizando um servidor X aninhado
Usando a variável DISPLAY, uma saída gráfica é redirecionada ao Xnest, servidor
X aninhado que a recebe. Com esse servidor, as solicitações são redirecionadas ao
servidor cliente, o qual é exibido, na sessão sendo executada, em outra janela. O
servidor X pai é, então, necessário para o funcionamento das fontes.
Nesse exemplo, foi criada com Xnest uma outra saída de vídeo, a :1 (tela ao fundo),
onde pode ser carregado um desktop remoto ou uma aplicação remota.
7.2. Acessibilidade
Como dito anteriormente, as distribuições GNU/Linux possuem recursos para pessoas
com necessidades especiais, que são mais utilizados em computadores desktops.
Entre esses recursos, temos:
•• Teclado virtual;
•• Leitor de tela;
•• Realce de cores;
437
Linux LPI - Administração
438
Interface do usuário e desktop 7
439
Linux LPI - Administração
7.2.1. Assistente de digitação
AccessX é conhecido como um assistente de digitação. Com ele, podemos habilitar
recursos como teclas de acessibilidade, teclas de aderência, teclas lentas e teclas de
repercussão.
7.2.2. Necessidade visuais
Usuários com deficiência visual poderão trabalhar no sistema por meio de um leitor
de tela chamado Orca, em que uma voz sintetizada é ouvida, conforme o clique do
mouse. Entre os recursos do Orca, temos:
•• Configurações gerais;
•• Voz;
•• Fala;
•• Braille;
•• Eco de tela;
440
Interface do usuário e desktop 7
•• Atalhos;
•• Pronúncia;
•• Atributos de texto.
Outro software que possui a mesma função é o Emacspeak, uma interface de voz
que permite aos usuários com deficiência visual interagirem de forma independente
e eficiente com o computador.
441
Linux LPI - Administração
442
Interface do usuário e desktop 7
Pontos principais
Atente para os tópicos a seguir. Eles devem ser estudados com muita atenção,
pois representam os pontos mais importantes do capítulo.
Material complementar
Sites Endereços
Servidor gráfico https://www.x.org/wiki/
GDM https://wiki.debian.org/GDM
KDM https://wiki.archlinux.org/index.php/KDM
Emacs http://emacspeak.sourceforge.net/
http://www.linuxfromscratch.org/blfs/view/6.3/gnome/
GOK
gok.html
Orca https://wiki.gnome.org/Projects/Orca
443
Mapa mental para a fixação do aprendizado
444
7 Interface do
usuário e desktop
Teste seus conhecimentos
Linux LPI - Administração
☐☐ a) xorg.conf
☐☐ b) x.conf
☐☐ c) Xresources
☐☐ d) kdm.conf
☐☐ e) gdm.conf
☐☐ a) Xconfigure
☐☐ b) X -configure
☐☐ c) Xconfigure
☐☐ d) x -configure
☐☐ e) xconf
☐☐ a) dexconf
☐☐ b) xconf
☐☐ c) X -config
☐☐ d) xconfig
☐☐ e) X
☐☐ a) 177/tcp
☐☐ b) 1777/tcp
☐☐ c) 127/udp
☐☐ d) 177/udp
☐☐ e) 1777/udp
☐☐ a) fc-cache
☐☐ b) fccache
☐☐ c) fontesdb
☐☐ d) atualiza-fonts
☐☐ e) fonts-update
446
Interface do usuário e desktop 7
6. Qual o nome do principal leitor de teclas para o GNU/Linux?
☐☐ a) Golfinho
☐☐ b) Orca
☐☐ c) Baleia
☐☐ d) Sardinha
☐☐ e) Nenhuma das alternativas anteriores está correta.
☐☐ a) GOkC
☐☐ b) GOCK
☐☐ c) GOK
☐☐ d) GOC
☐☐ e) Nenhuma das alternativas anteriores está correta.
8. Qual o nome do programa que usa uma interface de voz que permite
que os usuários com deficiência visual interajam de forma independente
e eficiente com o computador?
☐☐ a) Emacspeak
☐☐ b) Emacs
☐☐ c) Speaks
☐☐ d) Macs
☐☐ e) Nenhuma das alternativas anteriores está correta.
447
7 Interface do
usuário e desktop
Mãos à obra!
Linux LPI - Administração
# X –help
# X -probeonly
5. Execute a configuração do X:
# X -configure
6. Verifique a configuração do X:
7. Teste a configuração do X:
# X -config /root/xorg.conf.new
# dpkg-reconfigure xserver-xorg
# cp /root/xorg.conf.new /etc/X11/xorg.conf
10. Inicialize o X:
# X
450
Interface do usuário e desktop 7
Laboratório 2 - Analisando as configurações
12. Analise as configurações do arquivo xorg.conf e identifique as seções:
15. Inicie o X:
# X
# startx
17. Clique com o botão direito na tela e, em seguida, em Info / Info Panel;
18. Clique com o botão direito na tela e, em seguida, clique em Session / Exit e
confirme para sair;
451
Linux LPI - Administração
# aptitude update
# aptitude install kdebase
# startx
# startx
# vi /etc/gdm/gdm.conf
[xdmcp]
Enable=True
# /etc/init.d/gdm stop
# /etc/init.d/gdm restart
26. Verifique se o serviço está sendo executado na porta UDP 177 como era previsto:
452
Interface do usuário e desktop 7
Laboratório 5 - Acessando um servidor X remoto
28. Para chamar o ambiente X do colega, execute o comando a seguir:
# X -query <IP_do_colega> :1
453
8 Tarefas
administrativas
8.1.1. Tipos de usuário
É possível considerarmos três tipos distintos de usuários em um sistema GNU/Linux:
usuário administrador (superusuário), usuários de sistema e usuários comuns.
•• Usuário administrador
Em sistemas Unix e Linux, o superusuário do sistema tem o nome de root, pois ele
tem total poder dentro do sistema, atuando como seu administrador e definindo
regras e tipos de permissão que os demais usuários poderão acessar ou alterar. Além
disso, o usuário root tem total poder para interagir diretamente com o kernel e,
assim, possibilitar que o sistema atue de acordo com a sua necessidade. Dentro do
sistema, apenas o usuário root tem permissão para alterar o estado de serviços e criar
regras de firewall, entre outras funções.
Não é aconselhável trabalhar com o usuário root, pois, como foi citado, ele praticamente
não possui restrições no sistema. Dessa forma, é indicado que o administrador do
sistema trabalhe como um usuário comum e, só em caso de necessidade, execute
tarefas como superusuário.
456
Tarefas administrativas 8
•• Usuários comuns
Esses dois tipos de usuários, administradores e comuns, são constituídos por cinco
elementos básicos: nome, senha, diretório home, shell e grupo primário. A vinculação
de um usuário comum a um grupo é imprescindível devido ao funcionamento do
esquema de permissões dentro do sistema.
Recomenda-se o uso criterioso das senhas entre esses dois tipos de usuários, para
garantir a segurança do sistema contra acessos não desejados que podem pôr em
risco sua integridade.
•• Usuários de sistema
Os usuários de sistema têm a função de controlar serviços, e não devem possuir shell
válida, e nem senhas, como, por exemplo, o www-data, que controla o servidor web
Apache. Não há necessidade de efetuar logon no sistema com esse tipo de usuário.
Usuários do GNU/Linux, sejam mal intencionados ou por engano, podem ser impedidos
de instalar programas cuja função é desconhecida e que podem causar sérios danos
de larga escala, que afetem os arquivos, computadores ou até toda uma empresa.
457
Linux LPI - Administração
Para isso, o sistema GNU/Linux define o acesso aos arquivos segundo as definições
seguintes:
•• Outros: Usuários que não são donos e nem pertencem ao grupo do arquivo são
categorizados nesse terceiro tipo.
Essas três categorias apresentam, cada uma, três tipos de permissões de acesso.
Vejamos os tipos de permissões a seguir.
8.1.3. Tipos de permissões
São três os tipos de permissões que o GNU/Linux aplica ao dono, grupos e outros
usuários. Eles são os seguintes:
•• r: Para arquivos, permite sua leitura, e para diretórios, permite que seu conteúdo
seja listado (utilizando, por exemplo, o comando ls);
•• x: Para arquivos, permite que sejam executados, e para diretórios, habilita seu
acesso por meio do comando cd.
458
Tarefas administrativas 8
Por meio do comando ls –l, é possível visualizarmos essas permissões de acesso a
um arquivo ou diretório. A seguir, vemos arquivos listados com informações como as
permissões, proprietários, grupos etc.
Caractere Função
- Indica a listagem de um arquivo comum.
d Indica um diretório.
l Indica um link simbólico.
p Indica um pipe nomeado.
s Indica um socket.
c Indica um dispositivo de caractere.
b Indica um dispositivo de bloco.
459
Linux LPI - Administração
8.1.4. Atribuindo permissões
O comando chmod pode ser utilizado para atribuirmos as permissões de acesso de
usuários ou grupos a arquivos e diretórios, seja de leitura, gravação e/ou execução.
Com exceção de diretórios definidos com a permissão de grupo s, um arquivo, quando
criado, sempre tem como dono quem o criou e pertence ao seu mesmo grupo.
Vejamos:
Opção Descrição
-v Mostra todos os arquivos que estão sendo processados.
-f Oculta a maior parte das mensagens de erro.
-c Mostra apenas os arquivos que tiveram as permissões alteradas.
Muda permissões de acesso do diretório ou arquivo no diretório
-R
atual e subdiretórios.
Em que:
As permissões de links simbólicos devem ser mudadas no arquivo alvo do link, pois
o chmod não altera essas permissões.
460
Tarefas administrativas 8
Duas sintaxes são possíveis para o comando chmod, como veremos a seguir:
•• Sintaxe literal
461
Linux LPI - Administração
•• 1: Executar;
•• 2: Gravar;
•• 4: Ler.
A partir desses valores, podemos chegar a todos os outros possíveis no modo octal,
somando os valores numéricos referentes às permissões desejadas. Vejamos a seguir
o raciocínio:
462
Tarefas administrativas 8
•• 6: Permissão de leitura e gravação (rw). Equivale à permissão 4 + 2, ou
seja, os valores de leitura (4) e gravação (2) somados;
Para dono e grupo, devemos multiplicar as permissões anteriores por 100 e 10,
respectivamente.
•• 5000: Salva imagem do texto e ajusta o bit setuid (equivale a 1000 + 4000 /
Salvar texto + bit setuid);
Vejamos, a seguir, que o arquivo inicialmente tinha permissão de controle total para
todos os usuários (rwx). Logo em seguida, atribuímos a permissão 755 para o arquivo
(permissão rwxr-xr-x), o que manteve o controle total para o proprietário, mas tirou
o poder de escrita dos demais usuários.
8.1.5. umask
O comando umask é utilizado para definir a máscara de criação de arquivos para o
usuário. Com ela, definimos permissões padrão de um arquivo ou diretório quando
os criamos, por meio de três números. As permissões definidas por esses números
serão aplicadas ao arquivo ou diretório quando eles forem criados ou copiados para
um novo local, de acordo com o tipo de usuário (dono, grupo ou outros usuários).
463
Linux LPI - Administração
umask <valor>
Para retornar o valor do umask atual, devemos digitar umask sem parâmetros.
Cada tipo de arquivo, seja ele binário (executável) ou texto, recebe um efeito diferente
de umask, conforme podemos visualizar na tabela seguinte:
Programas que criam arquivos e/ou diretórios temporários utilizam muito o umask,
pois desta forma o acesso de outros usuários pode ser bloqueado desde a criação do
arquivo, sendo desnecessário o uso do chmod.
Já um arquivo binário copiado com o comando umask 027;cp /bin/ls /tmp/ls vai
receber as seguintes permissões: -rwxrw----. Isso significa que, respectivamente, o
dono terá permissões rwx (valor 0), o grupo terá permissões rw- (valor 2) e os outros
usuários não terão permissões de acesso --- (valor 7).
Devemos tomar cuidado com as atribuições do umask, pois um erro pode causar
problemas de acesso a arquivos e diretórios. Na maioria das distribuições atuais, o
valor padrão do umask é 022. O umask padrão no sistema Debian é a 022.
464
Tarefas administrativas 8
Caso não tenhamos acesso à tabela anterior, podemos recorrer à seguinte regra:
8.1.6. SUID e SGID
O SUID, o SGID e o Sticky Bit formam um conjunto de permissões especiais, as quais
também são denominadas bits especiais. Cada um deles é explicado a seguir.
Essa permissão pode ser uma grande ameaça à segurança, pois, quando atribuída a
um arquivo executável, dá permissões de usuário dono a um usuário qualquer, na
execução desse comando. Caso esse comando pertença a um usuário root, o usuário
comum terá sobre ele todas as permissões que seu dono possui.
Essa permissão é atribuída a diretórios, e faz com que o conteúdo gravado dentro do
diretório herde o seu grupo, e não o grupo do usuário que o criou, quando um arquivo
é criado dentro de um diretório com essa permissão ativada. O SGID é muito utilizado
em servidores de arquivos e quando usamos diretórios para grupos de trabalhos.
•• Sticky Bit
O Sticky Bit, a partir da versão 2.6 do kernel do Linux, tem apenas a função de fazer
diretórios de utilização comum a todos os usuários, como no /tmp, visto que a partir
dessa série do kernel, otimizações de acesso a conteúdos são feitas diretamente por
ele. Essa permissão, quando ativada em um diretório, impede que quaisquer usuários
excluam o arquivo ou diretório, mesmo que seu criador atribua permissões totais
para todos os usuários. Apenas o usuário root tem esse controle sobre o arquivo ou
diretório.
Nome Valor
SUID 4
SGID 2
Sticky Bit 1
465
Linux LPI - Administração
Vejamos um exemplo:
Na linha anterior, 4 é o valor relativo ao SUID. Os outros três números, 750, referem-
se às permissões padrão e aplicativo, ao comando a ser executado.
8.1.7.1. /etc/passwd
O arquivo /etc/passwd mantém uma linha relativa a cada usuário cadastrado,
separadas por : (dois-pontos). Vejamos um exemplo de como se compõe esse arquivo:
usuario:x:1000:1001:nome_do_usuario, 8111-1234:/home/usuario:/bin/
bash
Em que:
•• 1000: O UID, que identifica o usuário. Esse valor é divido em três categorias:
•• 1001: O GID, que identifica o grupo primário do usuário. Esse valor é divido em
três categorias:
466
Tarefas administrativas 8
•• nome_do_usuario, 8111-1234: Dados adicionais sobre o usuário, como nome
completo etc.;
8.1.7.2. /etc/shadow
O arquivo /etc/shadow, também conhecido pelo termo senhas sombra, armazena
todas as senhas dos usuários, por se tratar de um arquivo mais seguro que o /
etc/passwd, ao qual todos os usuários podem ter acesso. O arquivo /etc/shadow
contém permissões muito mais restritas e não pode ser copiado ou visualizado por
outros usuários, tornando o sistema muito mais seguro.
8.1.7.3. /etc/group
O arquivo /etc/group lista os grupos que estão presentes no sistema. Como usuário
root, podemos editar esse arquivo para adicionar um usuário em um novo grupo.
Assim, esse usuário passa a acessar os arquivos e diretórios pertencentes àquele
grupo. Indica-se o uso do comando vigr para editar o arquivo /etc/group. Esse
comando bloqueia o arquivo e evita sua alteração indesejada.
Cada grupo é definido, nesse arquivo, em uma linha, dividida em quatro segmentos.
Cada um deles tem uma função diferente, e são separados por : (dois-pontos). A
seguir, veremos as funções de cada segmento da linha:
467
Linux LPI - Administração
•• Quarto segmento: Lista de usuários que fazem parte do grupo, separados por
vírgula.
8.1.7.4. /etc/gshadow
O arquivo /etc/gshadow tem a função de armazenar as senhas ocultas dos grupos
existentes no sistema. Nesse caso, apenas o usuário root tem acesso liberado a
elas. O suporte a senhas ocultas pode ser ativado e desativado por meio do utilitário
shadowconfig.
8.1.8. Administrando usuários
Este tópico vai nos mostrar como administrar e gerenciar os usuários. Veremos como
devemos proceder para obtenção de informações sobre o usuário, como criá-los,
alterar suas configurações e senhas e como excluí-lo.
468
Tarefas administrativas 8
8.1.8.1. Obtendo informações sobre o usuário
Vejamos, a seguir, os principais comandos disponíveis para obtermos informações
sobre os usuários do sistema:
•• id
id <usuario>
•• finger
Dados sobre configurações dos usuários, tais como login, nome, diretório home,
shell e horário das últimas autenticações realizadas por esse usuário, podem ser
visualizados por meio do comando finger.
finger <usuario>
469
Linux LPI - Administração
•• users
Os usuários logados no sistema são listados de maneira simples pelo comando users.
•• who
Para que possamos visualizar os usuários que estão logados na máquina, utilizamos
o comando who. Além disso, esse comando também nos fornece outros dados sobre
os usuários, como qual terminal está sendo usado, quando o login foi feito e a partir
de qual máquina.
•• w
Para isso, usamos a seguinte sintaxe, que consiste no comando w mais o nome do
usuário que desejamos visualizar:
w <usuario>
470
Tarefas administrativas 8
8.1.8.2. Criando usuários
No momento da instalação do sistema, é possível criar usuários e, conforme a
utilização do sistema e a necessidade, mais usuários poderão ser criados. Vejamos, a
seguir, como criar usuários por meio dos comandos useradd e adduser:
•• useradd
Existem diversas opções para o comando useradd. As mais comuns são descritas
nesta tabela:
Opção Descrição
Comentário (normalmente utiliza-se o nome completo do
-c <comentario>
usuário).
-d <diretorio> Caminho do diretório pessoal do usuário.
-g <grupo> Grupo inicial (GID). É necessário que ele já exista no sistema.
-G <grupo1>,
Grupos adicionais (são separados por vírgula).
<grupo2>...
-u <uid> User ID (UID) do usuário.
-s <shell> Shell padrão para o usuário.
-p <senha> Senha (sempre entre aspas).
-e <data> Data de validade da conta.
-k /etc/skel Copia o diretório modelo /etc/skel.
-m Cria o diretório pessoal, caso não exista ainda.
O diretório /etc/skel aloca arquivos que são copiados para o diretório pessoal do
usuário, assim que uma conta é criada no sistema. Dessa maneira, não há necessidade
de configurar, individualmente, os arquivos para cada usuário.
471
Linux LPI - Administração
•• adduser
O comando adduser também pode ser utilizado para criar usuários e grupos no
sistema. A primeira identificação disponível no sistema será aquela escolhida para ser
a identificação do usuário (UID). Essa identificação é estipulada de acordo com a faixa
de UID definida no arquivo /etc/adduser.conf.
Opção Descrição
Esta opção não executa o comando passwd para gerar a
--disabled-login senha, porém, enquanto o usuário não defini-la, não poderá
efetuar o login.
Com esta opção habilitada, o sistema ignora a verificação de
--force-badname
senhas ruins.
--gid Define o GID do grupo primário do usuário.
Esta opção realiza a criação de um novo grupo em vez de um
--group
novo usuário.
Permite definir o diretório de trabalho do usuário. Caso esta
--home opção não seja definida, o diretório do usuário será definido
pela configuração.
Permite definir a identificação (UID) que o usuário herdará no
--uid
sistema.
--ingroup Permite definir o grupo primário do usuário pelo nome.
--system Permite criar um usuário ou grupo no sistema.
472
Tarefas administrativas 8
Por meio de adduser <usuario>, o usuário especificado em <usuario> automaticamente
será adicionado já com o pedido de definição da senha e de outros dados adicionais, e
um grupo é criado com o nome igual ao do usuário, copiando para o diretório home do
usuário todos os arquivos que estão no diretório /etc/skel, como mostra o seguinte
exemplo:
473
Linux LPI - Administração
474
Tarefas administrativas 8
Vejamos a descrição de alguns campos de configuração do /etc/adduser.conf:
•• SKEL: Define o local que armazena os arquivos que serão copiados para o
diretório de trabalho do usuário;
475
Linux LPI - Administração
•• usermod
Opção Descrição
Permite definir comentários adicionais para o usuário no arquivo /etc/
-c
passwd.
-d Permite definir ou alterar o diretório de trabalho do usuário.
-e Permite definir ou alterar a data de expiração de uma conta.
-f Permite definir ou alterar o período de inatividade da senha.
-g Altera o grupo primário do usuário.
-G Permite definir grupos complementares para o usuário.
-l Permite alterar o login do usuário.
Permite bloquear a senha do usuário (um caractere ! é acrescentado no
-L
início da linha do usuário no arquivo /etc/passwd).
-o Permite duplicar um UID que está sendo utilizado no sistema.
-s Define ou altera o interpretador de comandos do usuário.
-u Altera a identificação do usuário no sistema.
-U Opção utilizada para desbloquear a senha do usuário.
476
Tarefas administrativas 8
A seguir, o usermod é utilizado para alterar o grupo primário do usuário:
•• chfn
Utilizado para incluir ou alterar dados adicionais sobre os usuários criados. Caso chfn
seja utilizado sem opções, agirá de forma interativa.
Os dados que são incluídos ou alterados ficarão no campo gecos do arquivo /etc/
passwd. A sintaxe de chfn é a seguinte:
Opção Descrição
-f Altera o nome completo.
-h Telefone doméstico.
-o Outras informações.
-r Número da sala.
-w Telefone comercial.
Já na imagem seguinte, o comando chfn é executado com a opção –f, a fim de alterar
as informações sobre o nome completo do usuário:
477
Linux LPI - Administração
•• passwd
Para que possamos definir senhas e valores de configuração para as contas, utilizamos
o comando passwd.
A mudança da senha feita por um usuário normal vai solicitar sua senha atual para
que seja possível realizar sua troca. Já um usuário root pode definir uma nova senha
diretamente para ele próprio ou para diferentes usuários, sem a necessidade da
entrada da senha vigente.
Opção Descrição
-d Utilizada para remover a senha do usuário.
-e Executa a expiração da conta do usuário.
-h Exibe a ajuda do sistema.
-i Define o período de inatividade da senha.
-l Permite bloquear a conta do usuário.
Define o período mínimo de dias que o usuário deverá permanecer com
-n
a senha.
-S Exibe os valores da senha para a conta especificada.
-u Utilizada para desbloquear a conta do usuário.
Opção utilizada para definir o período em que o sistema notificará o
-w
usuário sobre a expiração da senha.
Define o período máximo de dias que o usuário poderá permanecer
-x
com a senha.
478
Tarefas administrativas 8
No exemplo a seguir, o comando passwd é executado de maneira que a senha do
usuário jose expire de forma imediata, forçando-o a gerar uma nova senha:
•• chage
O comando chage pode ser utilizado para configurar parâmetros referentes à senha
dos usuários. Além disso, várias configurações que foram realizadas recentemente
com o comando passwd podem ser efetuadas com o comando chage. A tabela a
seguir descreve opções desse comando:
Opção Descrição
-l (L Exibe as informações de configuração referentes à senha e conta
minúsculo) do usuário.
-I (i
Define o período de inatividade da senha.
maiúsculo)
-m Permite configurar a validade mínima da senha.
-M Permite configurar a validade máxima da senha.
-W Permite definir o tempo de aviso, antes que a senha expire.
479
Linux LPI - Administração
Caso o comando chage seja executado sem opções, serão realizadas perguntas sobre
os valores de configuração da senha.
•• pwconv
480
Tarefas administrativas 8
Vejamos a seguinte imagem:
•• pwunconv
481
Linux LPI - Administração
O teste a seguir é parecido com o teste feito por meio do pwconv, porém inversamente.
Agora, ao lermos o arquivo /etc/passwd, podemos notar que as senhas não estão
localizadas nele, mas sim no arquivo /etc/shadow. Então, ao executarmos o comando
pwunconv, as senhas voltaram a aparecer no arquivo /etc/passwd. O arquivo /etc/
shadow deixou de existir.
•• /etc/login.defs
Para que possamos definir o conjunto de senhas shadow, devemos alterar o arquivo
login.defs. Ele é constituído por variáveis e pode trabalhar com opções booleanas
(yes ou no).
Opção Descrição
Induz o sistema a solicitar autenticação, caso o comando chfn
CHFN_AUTH
ou chsh sejam executados.
Define se os diretórios home dos usuários serão criados pelo
CREATE_HOME
comando useradd.
482
Tarefas administrativas 8
Já as opções descritas na tabela a seguir, também presentes no login.defs, podem ser
configuradas com qualquer tipo de caractere:
Opção Descrição
Determina os campos relacionados ao gecos que os usuários
CHFN_RESTRICT
podem alterar.
MAIL_DIR Faz referência ao diretório de spool do correio.
Define o período padrão que será definido como prazo de
PASS_MAX_DAYS
validade máxima da senha.
Defino o período padrão de prazo de validade mínima da
PASS_MIN_DAYS
senha.
PASS_WARN_ Define o tempo padrão de envio de alerta de expiração de
AGE senha ao usuário.
483
Linux LPI - Administração
8.1.8.5. Excluindo usuários
O comando userdel é utilizado para remover as contas e todas as informações dos
usuários do sistema. Temos duas opções ao realizarmos esse tipo de ação: excluir
somente as contas ou excluir as contas e outros dados referentes ao usuário, como
seus arquivos e o diretório home.
userdel <usuario>
Para remover a conta, o diretório home e os arquivos do usuário, utiliza-se a opção –r:
userdel -r <usuario>
8.1.9. Administran do grupos
Grupos podem ser administrados por meio de diversos comandos, os quais permitem
exibir grupos de um usuário, alterar o dono e o grupo de arquivos e diretórios, criar,
alterar, definir senhas e excluir grupos, além de gerenciar seus membros. Podemos
também efetuar o login em um grupo diferente e converter senhas do /etc/group
para /etc/gshadow e vice-versa. Vejamos esses diversos comandos nos tópicos a
seguir.
484
Tarefas administrativas 8
8.1.9.1. Exibindo os grupos de um usuário
O comando groups exibe os grupos aos quais o usuário pertence. Sua sintaxe básica
é a seguinte:
groups <usuario>
No exemplo a seguir, groups é utilizado para exibir os grupos aos quais o usuário
fabricio pertence:
•• chown
Opção Opção
Descrição
Unix GNU
Descreve detalhadamente a ação ocorrida para cada
-c --changes
arquivo cujas permissões estão sendo alteradas.
Não mostra mensagens de erro para o arquivo cuja
-f --silent
propriedade não pode ser alterada.
Descreve detalhadamente toda a ação ocorrida em cada
-v --verbose
arquivo.
Altera recursivamente a propriedade de diretórios e de
-R --recursive
seus conteúdos.
485
Linux LPI - Administração
•• chgrp
Opção Descrição
-c Descreve a ação detalhadamente sobre a alteração do grupo do arquivo.
Caso o grupo não possa ser alterado, a mensagem de erro não será
-f
exibida.
-v Descreve todas as ações de maneira detalhada.
-R Altera, de maneira recursiva, o grupo do diretório e seu conteúdo.
486
Tarefas administrativas 8
8.1.9.3. Criando e alterando grupos
A criação e alteração de grupos são feitas por meio de comandos como groupadd,
addgroup e groupmod. Vejamos cada uma de suas funções a seguir.
•• groupadd
Opção Descrição
-g Permite definir o GID que o grupo herdará.
-o Permite definir um GID que já estava sendo utilizado por outro grupo.
No exemplo a seguir, criamos o grupo impacta e definimos que ele herdará o GID de
número 1098:
•• addgroup
487
Linux LPI - Administração
Opção Descrição
Onde <gid> é o valor numérico do GID. Como padrão, o valor utilizado
é o menor valor de ID acima de 500 que seja maior que todos os
-g <gid>
outros grupos. Não é comum a utilização de valores entre 0 e 499,
pois estes são mais comumente utilizados por contas de sistema.
-r Instrui o comando groupadd a adicionar uma conta de sistema.
Encerra a atividade do comando groupadd com um erro caso o grupo
-f a ser adicionado já exista no sistema, fazendo com que o grupo não
seja adicionado novamente e nem alterado.
No exemplo a seguir, é feita uma busca pelo nome impacta no arquivo /etc/group,
mas nada é encontrado. Em seguida, é criado o grupo impacta e a busca passa a exibir
resultados. Depois, por meio de addgroup, é criado um grupo chamado impacta2.
Podemos perceber que o comando retorna o status da criação.
•• groupmod
488
Tarefas administrativas 8
A tabela a seguir descreve as principais opções do comando groupmod:
Opção Descrição
-g Permite alterar o GID do grupo.
-n Permite alterar o nome do grupo.
-o Permite definir um GID que está sendo utilizado por outro grupo.
8.1.9.4. Excluindo grupos
O comando groupdel é utilizado para remover um grupo do sistema. Sua sintaxe é a
seguinte:
groupdel <grupo>
489
Linux LPI - Administração
Opção Descrição
-a Adiciona um membro ao grupo.
-A Define um administrador para o grupo.
-d Remove um membro do grupo.
-M Permite adicionar vários membros ao grupo.
-r Esta opção é utilizada para remover a senha do grupo.
-R Desabilita o acesso ao grupo pelo comando newgrp.
newgrp <grupo>
490
Tarefas administrativas 8
No exemplo a seguir, o usuário efetua o login no grupo impacta:
491
Linux LPI - Administração
Dicas LPI
•• Há quatro arquivos básicos que dizem respeito à administração de usuários:
492
Tarefas administrativas 8
8.2. Agendamento de tarefas
Agendar tarefas é bastante útil para automatizar a execução de certos processos
no sistema. Em plataformas GNU/Linux, os dois métodos mais importantes para a
realização desses agendamentos em servidores são o cron e o at. O agendamento cron
permite a execução periódica de tarefas, enquanto o agendamento at é normalmente
usado para agendar uma única execução de um procedimento em uma hora exata.
Para o agendamento em desktops, podemos utilizar o anacron.
8.2.1. Agendamento cron
Muito utilizado em tarefas que envolvem a checagem de integridade do sistema,
execução de programas ou comandos e arquivamento de logs, o crond é um daemon
que permite o agendamento de uma execução de um comando ou programa para
um dia, mês, ano ou horário específico. O agendamento de tarefas que envolve esse
daemon é conhecido como agendamento cron, o qual é indicado para tarefas que
precisam ser executadas regularmente.
As tarefas que o usuário pretende agendar devem ser documentadas nas crontabs,
que são tabelas verificadas a cada minuto pelo crond, com data e hora de execução
indicadas para cada tarefa. As crontabs podem ser de usuário ou do sistema. O primeiro
tipo fica armazenado no diretório /var/spool/cron/crontabs/<nomedousuario> e
a crontab do sistema fica no /etc/crontab. Além disso, elas se diferem pelo fato de
as crontabs de usuário trazerem a especificação de qual usuário irá executar a tarefa
agendada.
Para tarefas cuja hora exata não precise ser especificada, elas podem ser colocadas
nos diretórios /etc/cron.hourly/, para execução de hora em hora, /etc/cron.daily/,
para execução diária, /etc/cron.weekly/, para execução semanal, ou /etc/cron.
monthly/, para execução mensal.
Para especificar o agendamento de uma tarefa que será iniciada pelo daemon crond,
é necessário configurar o arquivo /etc/crontab, inserindo nele uma linha que deve
possuir o seguinte formato:
493
Linux LPI - Administração
Cada um desses campos pode assumir valores de acordo com a tabela seguinte:
Campo Valor
minuto 00 a 59
hora 00 a 23
dia 0 a 31
mes 1 a 12
dia_da_semana 0a7
É o usuário que irá executar o comando, no
usuario
caso de crontabs de usuário.
comando É o comando que deve ser executado.
No exemplo anterior, foi definido que às 23h30, de segunda até sexta, será efetuado
um empacotamento pelo comando tar.
•• É necessário incluir uma linha em branco no final do arquivo para que o último
comando seja executado;
•• No campo que se refere aos dias da semana, o domingo pode ser representado
pelo número 0 ou 7;
494
Tarefas administrativas 8
•• O asterisco (*) serve para especificar todo o intervalo disponível nos campos de
data e hora;
•• A vírgula (,) pode ser usada para especificar uma lista de valores;
•• A barra (/) serve para especificar passos, ou seja, para inserir mais serviços que
serão executados de acordo com o agendamento.
Se, na sintaxe, não aparecer um nome de usuário, o usuário atual será considerado.
A tabela a seguir descreve as opções que podemos utilizar com o comando crontab:
Opção Descrição
-l São exibidas as tarefas agendadas pelo usuário.
-e Utilizado para editar a crontab do usuário.
-r Remove a crontab do usuário.
Para usar esse comando, um usuário comum precisa estar listado no arquivo /etc/
cron.allow, caso ele exista, ou não estar listado no arquivo /etc/cron.deny. Se
nenhum desses dois arquivos existir, todos os usuários poderão agendar tarefas.
495
Linux LPI - Administração
8.2.3. Agendamento at
Recomendado para a execução única de uma tarefa em um instante futuro, o
agendamento at se dá por meio do comando at.
at <quando> <comando>
496
Tarefas administrativas 8
Como com o crontab, o parâmetro -l pode ser usado com o at para listar as tarefas
agendadas, e um alias para esse comando é o atq. Nessa listagem, é informado
também o número atribuído para cada trabalho, que pode ser usado com o comando
atrm para excluir o agendamento.
Dicas LPI
8.2.4. Agendamento anacron
Em caso de agendamento de tarefa, onde não é necessária a sua execução em um
determinado horário, o anacron deverá ser utilizado. Esse tipo de agendamento é
muito comum para desktops ou laptops. Com isso, caso você agende uma determinada
tarefa em um horário em que o desktop estiver desligado, essa mesma tarefa será
executada assim que o desktop estiver ligado, o que no caso do cron não ocorre.
497
Linux LPI - Administração
Em que:
498
Tarefas administrativas 8
No exemplo adiante, foi agendada a execução do backup uma vez a cada sete dias e
que aguardará 15 minutos para executá-lo, após o desktop ser iniciado:
8.3.1. Comando locale
O comando locale tem a função de alterar algumas configurações, como: renderizar
texto, exibir corretamente valores monetários regionais, exibir corretamente o
formato de data/hora, entre outros.
499
Linux LPI - Administração
Repare que uma série de variáveis são informadas, com seus respectivos valores,
sendo eles:
•• LANG
O valor definido para essa variável será utilizado para as demais (LC_*), as quais
não foram apresentadas na saída do comando. Essa definição poderá ser alterada no
arquivo /etc/locale.conf.
•• LC_TIME
Se estiver definida como UTF-8, o formato de data/hora será exibido como MM/DD/
YYYY.
•• LC_ALL
Utilizada apenas para testes ou solução de problemas. A localidade definida para esta
variável sempre substituirá LANG e todas as outras variáveis LC_ *, independentemente
de estarem ou não definidas. Essa variável é a única variável LC_ * que não pode ser
definida no arquivo locale.conf.
500
Tarefas administrativas 8
8.3.2. Comando tzselect
A alteração do timezone ocorre através do comando tzselect, o qual, ao ser executado,
apresenta um menu. Entre as suas opções, temos: continente ou oceano, país e região.
8.3.3. Comando timedatectl
O comando timedatectl possui diversas funcionalidades, como: verificar as definições
de data e hora do sistema e do hardware, informar se o servidor possui alguma
configuração de NTP etc.
Para alteração da data e hora local, é necessário alterar o valor set-local-rtc para o
valor yes. Caso contrário, as alterações também ocorrerão para o horário UTC.
501
Linux LPI - Administração
8.3.4. Comando date
O comando date é o comando utilizado para visualizar e alterar a data e hora do
sistema. Sua sintaxe é a seguinte:
502
Tarefas administrativas 8
Na tabela a seguir, estão descritas algumas opções do comando date:
Opção Descrição
%d Dia do mês.
%H Hora (pode variar entre 00 e 23).
%l Hora (pode variar entre 00 e 12).
%j Dia do ano (pode variar entre 1 e 366).
%m Mês do ano (pode variar entre 00 e 12).
%M Minuto (pode variar entre 00 e 59).
Exibe a hora completa, utilizando o formato de 12 horas (HH:MM:SS,
%r
AM ou PM).
%T Exibe a hora completa, utilizando o formato de 24 horas (HH:MM:SS).
%y Formato do ano com dois dígitos.
%Y Formato do ano com quatro dígitos.
%w Dia da semana (pode variar entre 0 e 6).
8.3.5. Comando iconv
Arquivos de texto criados no GNU/Linux recebem a codificação UTF-8, diferentemente
do padrão utilizado em sistemas Microsoft Windows, que utilizam a codificação ISO-
8859-1.
Para arquivos que não contenham qualquer caractere especial, como uma cedilha (ç),
por exemplo, o arquivo será criado com a codificação ASCII em ambas as plataformas.
503
Linux LPI - Administração
iconv <opcao>
504
Tarefas administrativas 8
Pontos principais
Atente para os tópicos a seguir. Eles devem ser estudados com muita atenção,
pois representam os pontos mais importantes do capítulo.
Material complementar
Sites Endereços
Administração de https://www.centos.org/docs/5/html/Deployment_
usuários Guide-en-US/s1-users-tools.html
https://www.centos.org/docs/5/html/Deployment_
Cron CentOS
Guide-en-US/ch-autotasks.html
Localização e ftp://ftp.lyx.org/pub/sgml-tools/website/HOWTO/
Internacionalização Cyrillic-HOWTO/t1842.html
505
Mapa mental para fixação do aprendizado
506
8 Tarefas
administrativas
Teste seus conhecimentos
Linux LPI - Administração
☐☐ a) 0750
☐☐ b) 0640
☐☐ c) 0760
☐☐ d) 0660
☐☐ e) 0700
☐☐ a) -a
☐☐ b) -m
☐☐ c) -f
☐☐ d) -d
☐☐ e) -h
☐☐ a) 0642
☐☐ b) 0724
☐☐ c) 0027
☐☐ d) 0024
☐☐ e) 0012
☐☐ a) /etc/user.conf
☐☐ b) /etc/confusers
☐☐ c) /etc/login.defs
☐☐ d) /etc/login.conf
☐☐ e) /etc/login.def
☐☐ a) userblock
☐☐ b) passwd
☐☐ c) userdel
☐☐ d) groupdel
☐☐ e) userremove
508
Tarefas administrativas 8
6. Qual comando é utilizado para criar ou editar um agendamento no cron?
☐☐ a) crontab -l
☐☐ b) crontab -e
☐☐ c) crontab -x
☐☐ d) crontab -d
☐☐ e) crontab -c
☐☐ a) atq
☐☐ b) at-list
☐☐ c) list-at
☐☐ d) at
☐☐ e) atrm
☐☐ a) atq
☐☐ b) at-remove
☐☐ c) remove-at
☐☐ d) atrm
☐☐ e) at
509
Linux LPI - Administração
☐☐ a) crontab
☐☐ b) anacron
☐☐ c) tabanacron
☐☐ d) anacrontab
☐☐ e) anacront
☐☐ a) alttimezone
☐☐ b) tzselect
☐☐ c) selecttz
☐☐ d) timezoneselect
☐☐ e) alttz
☐☐ a) inconv
☐☐ b) icov
☐☐ c) imcov
☐☐ d) icomv
☐☐ e) iconv
510
8 Tarefas
administrativas
Mãos à obra!
Linux LPI - Administração
# touch /tmp/arquivo.txt
# ls -l /tmp/arquivo.txt
4. Confira a alteração:
# ls -l /tmp/arquivo.txt
6. Confira a alteração:
# ls -l /tmp/arquivo.txt
9. Crie um arquivo com umask 017 em /tmp e confira se ele apresenta a permissão
-rw-rw----:
10. Crie um diretório com umask 017 em /tmp e confira se ele apresenta a permissão
drwxrw----:
512
Tarefas administrativas 8
11. Copie o executável binário cp para a pasta /tmp utilizando o umask 017 e verifique
se ele ficou com a permissão -rwxr-----:
# useradd teste1
# cat /etc/passwd |grep teste1
# passwd teste1
# mkdir /home/teste1
17. Conceda propriedade de acesso desta pasta para o usuário teste1 e para o grupo
users:
# ls -ld /home/teste1
513
Linux LPI - Administração
19. Altere o shell do usuário teste1 para o bash e confira se a alteração foi bem
sucedida:
# su teste1
# cd ~
# pwd
# exit
# passwd -l teste1
24. Verifique se a conta foi bloqueada (o caractere ! deve aparecer no início da senha
do usuário):
# passwd -u teste1
# cat /etc/shadow | grep teste1
26. Defina a senha do usuário teste1 para a validade máxima de dois meses:
# chage -M 60 teste1
# chage -l teste1
# addgroup Impacta
# cat /etc/grops |grep Impacta
514
Tarefas administrativas 8
29. Crie o usuário teste2 com o comando adduser:
# adduser teste2
# userdel teste1
# userdel teste2
# cat /etc/passwd |grep teste
# groupdel Impacta
# cat /etc/group |grep Impacta
# crontab -e
33. Adicione a tarefa para que seja executada hoje, daqui a 10 minutos:
:wq
# cat /tmp/testecron.txt
515
Linux LPI - Administração
37. Altere a crontab para que seja executada todos os dias no horário atual. Para isso,
apenas modifique a linha inserida no passo 34:
# crontab -l
# atq
40. Agende uma tarefa para ser executada 10 minutos depois do horário atual:
# at 11:30
CTRL + D
# atq
# ls -l /tmp/teste_at
# at midnight
516
Tarefas administrativas 8
46. Peça a criação de um novo arquivo na pasta /tmp:
CTRL + D
# atq
# atq
# timedatectl
# cat /etc/localtime
# cp /usr/share/zoneinfo/America/Sao_Paulo /etc/timezone
517
Linux LPI - Administração
56. Verifique se o timezone está correto usando o comando date. O resultado deve
ser parecido com este: Sex Nov 26 23:26:45 BRST 2010;
# date
# cat /etc/timezone
# dpkg-reconfigure tzdata
# cat /etc/timezone
518
9 Serviços essenciais
do sistema
ÃÃ Servidor NTP;
ÃÃ Configuração do serviço de log;
ÃÃ Agente MTA;
ÃÃ Serviço de impressão CUPS.
Linux LPI - Administração
Este capítulo faz parte do tópico 108 – Essencial System services da segunda
prova identificada como 102-400 ou LX0-104 da certificação LPIC-1.
9.1. Servidor NTP
Sabemos da importância e conveniência do agendamento de tarefas no sistema.
No entanto, a programação de processos a serem executados depende de uma
configuração adequada da hora e da data do sistema. Sem seu ajuste correto, existem
chances de que as tarefas sejam executadas fora dos horários desejados.
Não só isso, como manter a hora e a data do sistema corretamente ajustadas também
facilita a definição do horário de ocorrência de eventos no sistema, a leitura de logs e
a manutenção de um servidor de e-mails, por exemplo.
Neste tópico, veremos como ajustar o horário do sistema e da BIOS e como configurar
o horário de computadores em rede, por meio do protocolo NTP.
520
Serviços essenciais do sistema 9
No caso da configuração do relógio do CMOS, vale considerar a funcionalidade de um
programa chamado hwclock. Por meio dele, é possível exibir a data atual, alterá-la
para uma determinada hora e configurar o relógio de hardware com base na hora do
sistema.
9.1.2. Comando hwclock
O comando hwclock é utilizado para visualizar e alterar o RTC (Real Time Clock), ou
seja, o relógio de hardware da máquina que continua funcionando mesmo quando o
computador está desligado, possibilitando que a hora permaneça ajustada quando a
máquina for utilizada novamente.
hwclock <opcao>
Opção Descrição
Reajusta o relógio de hardware. Esta opção atualiza o arquivo /
-a ou -adjust
etc/adjtime de acordo com a variação sistemática do relógio.
-r ou -show Exibe, na saída padrão, as informações do relógio de hardware.
Configura a hora do sistema tendo como base o relógio do
-s ou -hctosys
hardware.
Ajusta o relógio de hardware. Podemos também utilizar a opção
-set ou -date
-set quando não possuímos o arquivo /etc/adjtime.
-v ou -version Exibe a versão do comando hwclock.
Configura o relógio de hardware, tendo como base a hora do
-w ou -systohc
sistema.
521
Linux LPI - Administração
9.1.4. ntpdate
Este comando é utilizado para configurar a data e a hora do sistema via protocolo
NTP. Para instalar o ntpdate, utilizamos o comando a seguir:
Após instalar o pacote ntpdate, devemos informar quem será o servidor NTP. Podemos
realizar essa tarefa digitando no shell o seguinte comando:
# ntpdate <servidor_NTP>
# ntpdate ntp.usp.br
# ntpdate-debian
•• /etc/default/ntpdate
Caso o servidor ntpd não esteja rodando, as duas linhas seguintes devem ser
configuradas no arquivo em questão:
NTPDATE_USE_NTP_CONF=no
NTPSERVER=”a.ntp.br 192.168.0.100”
A primeira linha diz que o arquivo /etc/ntp.conf não será procurado pelo servidor
ntpd. Caso instalemos o servidor NTP, essa linha deve ser reconfigurada para yes.
A segunda linha só é lida caso a primeira linha esteja configurada como no. Ela indica
qual é o servidor que fornecerá as informações de hora. No nosso caso, podemos
notar que o servidor especificado é a.ntp.br. No entanto, poderíamos especificar um
IP de um servidor ou computador da rede. Também, é possível especificar mais de um
servidor, desde que separados por espaço dentro das aspas.
522
Serviços essenciais do sistema 9
9.1.5. ntpd
O ntpd (Network Time Protocol Daemon) é responsável por controlar o sincronismo
do relógio de sistema via protocolo NTP e deve ser instalado em máquinas que
funcionarão como servidores NTP. Para utilizar esse serviço, é necessário instalá-lo
por meio do comando seguinte:
Opção Descrição
-a Habilita o modo de autenticação.
-A Desabilita o modo de autenticação.
-c<arquivo> Determina o caminho e o nome do arquivo de configuração.
-d Determina o depurador.
-D<nivel> Determina o nível de depuração a ser realizado.
Determina o caminho e o nome do arquivo que contém as chaves
-k<arquivo>
para autenticação.
-l<arquivo> Determina o caminho e o nome do arquivo de log.
523
Linux LPI - Administração
Acessando o link Public Time Server Lists, na página inicial do site do projeto NTP,
é apresentada a lista de servidores públicos disponíveis, cabendo ao usuário escolher
um pool próximo de sua localidade. Para o Brasil, eles são <numero>.south-america.
pool.ntp.org, onde <numero> pode ser 1, 2 ou 3, sendo cada um deles um servidor
diferente. É bom evitar o uso de stratum inferior a 3, exceto se formos criar um
servidor para integrar a lista dos servidores públicos.
Podemos usar o ntpd em todas as máquinas para sincronizar a hora, mesmo que
utilizemos como fonte um servidor local. Porém, é desnecessário grande quantidade
de tráfego para as estações de trabalho, já que estas podem se sincronizar em um
período mais esparso (no momento em que são ligadas, por exemplo). Sendo assim,
nesses computadores podemos trabalhar apenas com o ntpdate.
524
Serviços essenciais do sistema 9
O principal log do servidor NTP é o loopstats, que armazena dados referentes às
variáveis do sistema. Outro log relevante é o peerstats, que apresenta dados sobre
as associações existentes.
525
Linux LPI - Administração
Antigamente, o gerenciamento dos logs era feito com o serviço syslog. As versões
atuais do Linux trabalham com o serviço rsyslog.
526
Serviços essenciais do sistema 9
Em que:
Geralmente são utilizados dois formatos de arquivos pelo diretório padrão dos logs
/var/log:
•• O formato texto, como o /var/log/messages, pode ser visualizado com o
comando tail.
527
Linux LPI - Administração
9.2.1. Daemons de log
Os daemons são os responsáveis por registrar as mensagens, que são as mensagens
de sistema e de saída do kernel.
9.2.2. rsyslogd
O rsyslogd é o daemon responsável por registrar os logs do sistema, cuja sintaxe é
a seguinte:
rsyslogd [opcoes]
•• -h: Por meio desta opção, as mensagens recebidas são direcionadas a outros
servidores, cujos logs são determinados;
•• -n: Com esta opção, evita-se que o processo caia em background de modo
automático. Caso o serviço rsyslogd seja controlado pelo init, faz-se necessário
o uso desta opção;
•• -r: Esta opção auxilia na criação de um servidor de logs centralizado, uma vez
que permite que mensagens sejam recebidas por meio da rede. Contudo, o
servidor rsyslog, por padrão, rejeita as conexões externas, e a porta utilizada
para o recebimento de mensagens é a UDP 514;
•• -s: Com esta opção, é possível determinar os domínios que devem ser removidos
antes que sejam enviados ao log.
528
Serviços essenciais do sistema 9
9.2.3. Mais funções do rsyslog
O rsyslog é o substituto do syslog. O rsyslog é um syslogd de múltiplas threads
aprimorado. Ele valoriza a segurança e permite o suporte a:
•• Alerta de e-mail;
facilidade.nivel destino
Em que:
•• facilidade
Facilidade Descrição
Auth Utilizada em mensagens de segurança ou autorização.
Em vez de utilizar a opção auth, é mais recomendável utilizar
Authpriv
esta opção, que possui a mesma utilidade.
Cron Refere-se a daemons de agendamento, tanto cron como at.
Esta opção é utilizada para os demais daemons do sistema,
Daemon
cujas facilidades específicas não existem.
FTP Referente ao daemon ftp do sistema.
Kern Esta opção é utilizada por mensagens do kernel.
Lpr Referente ao subsistema de impressão.
Estas opções ficam reservadas para serem utilizadas
local0 e local7
localmente.
Mail Esta opção se refere ao sistema de e-mail.
News Referente ao sistema de notícias USENET.
Security Opção que deve ser evitada, sendo similar à opção auth.
529
Linux LPI - Administração
Facilidade Descrição
Esta facilidade é utilizada nas mensagens internas, as quais
Rsyslog
são geradas pelo rsyslogd.
User Refere-se a mensagens genéricas, em nível de usuário.
Uucp Esta opção é utilizada para o subsistema de UUCP.
•• nivel
Responsável por determinar o nível de importância que a mensagem que está sendo
enviada tem, ou seja, a urgência da mensagem. O programa, por si só, atribui
uma urgência a uma mensagem de log que ele gera. nivel identifica tal urgência e
encaminha para o destino especificado em destino a mensagem de log gerada.
A tabela a seguir descreve os níveis de urgência das mensagens de log que podem ser
especificados em nivel, do menos para o mais importante:
Nível Descrição
None Utilizado quando não há prioridade.
Assim como nas facilidades, este nível diz respeito a todos os
*
demais.
Debug Referente a mensagens de depuração.
Info Este nível refere-se a mensagens informativas.
Mesmo representando um nível de condição normal, esta opção
Notice
é significante.
Warning Refere-se a alertas.
Err Este nível refere-se a erros.
Crit Referente a condições críticas.
A utilização deste nível significa que se deve executar uma ação
Alert de modo imediato a fim de que um problema existente possa ser
resolvido.
Emerg Este nível indica que o sistema não pode mais ser utilizado.
530
Serviços essenciais do sistema 9
Alguns níveis na tabela anterior possuem sinônimos. São eles:
•• destino
Destino Descrição
Ao especificarmos um arquivo como destino, o rsyslog enviará os
Um arquivo
logs para o arquivo especificado.
O envio dos logs através de um pipe – utiliza-se o caractere | – por
Um pipe parte do rsyslog costuma ser adotado para redirecionamento de
logs para um terminal.
Um Podemos fazer com que o rsyslog envie os logs para um
computador computador remoto. Para isso, utiliza-se o caractere arroba (@) no
remoto início do hostname ou endereço IP do computador remoto.
Os logs do rsyslog podem ser enviados para um ou mais usuários
Um ou vários específicos. Para tanto, devemos especificar como destino o(s)
usuários nome(s) do(s) usuário(s). No caso de vários usuários, os nomes
devem ser separados por vírgula (usuario1,usuario2,...).
Todos os Para o envio dos logs do rsyslog para todos os usuários atualmente
usuários logados no sistema, utiliza-se o asterisco (*), via comando wall.
531
Linux LPI - Administração
Caractere Descrição
Assim que o arquivo é gravado, este caractere pode ser utilizado
-
para que o sync imediato do arquivo em questão seja desativado.
Quando este caractere é utilizado, determina que apenas o nível
=
que foi especificado possuirá registro.
Determina que todos os níveis, os quais foram especificados e são
! maiores, não possuirão registro. Pode ser utilizado em combinação
com o caractere sinal de igual (=) na mesma regra.
Este caractere determina que todas as mensagens definidas em
*
facilidade sejam redirecionadas.
Vejamos:
532
Serviços essenciais do sistema 9
Na imagem anterior, podemos observar parte do arquivo /etc/rsyslog.conf, em que
há algumas configurações, como a linha a seguir, que diz que todas as mensagens de
kernel com qualquer prioridade serão redirecionadas para o arquivo /var/log/kern.
log:
kern.* -/var/log/kern.log
Outro exemplo são as mensagens de e-mail, que, de acordo com a prioridade, são
enviadas para um arquivo diferente, como podemos perceber nas linhas a seguir:
mail.info /var/log/mail.info
mail.warn /var/log/mail.warn
mail.err /var/log/mail.err
$ModLoad imudp
$UDPServerRun 514
533
Linux LPI - Administração
Para realizar tal alteração, basta mudar o destino dos logs, inserindo @<endereco_
IP> (onde <endereco_IP> é o endereço IP do servidor de log), como mostra o exemplo
a seguir:
Caso tenha ativado o envio de mensagens via protocolo TCP, deve ser utilizado @@
antes do IP em vez de somente uma @.
# /etc/init.d/rsyslog restart
534
Serviços essenciais do sistema 9
9.2.7. Configurando a rotação de logs
O logrotate é um serviço desenvolvido em cron ou até mesmo em outro daemon que
possua a mesma função deste. Sua função consiste em:
O serviço logrotate possui uma opção que possibilita que os arquivos de log antigos
sejam compactados. Com isso, o tamanho desses arquivos é reduzido, permitindo
que sejam enviados ao administrador do sistema e que o espaço em disco utilizado
por esses arquivos seja menor.
Opção Descrição
Sua função é fornecer detalhes do que está sendo executado pelo
-d
logrotate.
Esta opção possui um número máximo de logs a serem mantidos.
Quando esse limite for atingido, ocorre a eliminação dos logs.
Rotate
Estes, por sua vez, são enviados a um usuário determinado na
<num>
opção mail <email>. Para impedir que o limite de logs mantidos
seja atingido, é possível utilizar a diretiva nomail.
Determina o usuário para o qual serão enviados os logs assim que
Mail <email>
o limite da opção rotate <num> for atingido.
535
Linux LPI - Administração
É importante que, para não ocorrerem problemas assim que a rotação for realizada,
um sinal HUP seja enviado ao programa que grava o arquivo de log. Para realizarmos
essa tarefa, fazemos uso do parâmetro postrotate.
536
Serviços essenciais do sistema 9
9.2.8. Criando mensagens de log manualmente
O comando logger registra entradas no sistema de logs e fornece uma interface
de comando shell para o módulo de logs do sistema. Por meio de logger, criamos
manualmente mensagens de log que o comando interpreta como argumento.
Em que:
Opções Descrição
-i Registra o PID do processo.
A mensagem é enviada para a saída padrão (STDOUT) e para
-s
syslog.
Envia o conteúdo de um arquivo especificado para o syslog, como
-f <arquivo>
uma mensagem.
Determina o nome do processo responsável pelo log que será
-t <nome>
exibido antes do PID na mensagem do syslog.
-p Determina a prioridade da mensagem do syslog, especificada
<prioridade> como facilidade.nivel.
537
Linux LPI - Administração
O comando tail pode ser utilizado com o parâmetro –f, que permite a visualização do
arquivo de maneira contínua, como mostrado na imagem seguinte. Isso significa que
o arquivo é atualizado e visualizado no seu estado atual, e é apresentada, em tempo
real, a linha criada no momento em que o arquivo estiver sendo visualizado.
9.2.10. Syslog-ng
Com o syslog-ng, a coleta dos logs pode ocorrer de qualquer fonte, processá-los em
tempo quase real e entregá-los a uma grande variedade de destinos.
Vejamos um exemplo:
@version: 3.7
@include “scl.conf”
source s_system { system(); internal(); };
destination d_all { file(“/var/log/all.log”); };
log { source(s_system); destination(d_all); };
538
Serviços essenciais do sistema 9
9.3. Agente MTA
O agente MTA – Mail Transfer Agent – é um componente essencial para o
funcionamento do controle de e-mails em um determinado servidor. Os componentes
envolvidos na criação, envio e recepção de mensagens entre o servidor e a caixa
postal do cliente são identificados como:
539
Linux LPI - Administração
9.3.1. Instalação do Postfix
Para verificar se o programa Postfix já se encontra instalado no CentOS 7, informe o
comando a seguir:
Name : postfix
Epoch : 2
Version : 2.10.1
Release : 6.el7
Architecture: x86_64
Install Date: Wed Nov 16 09:24:08 2016
Group : System Environment/Daemons
Size : 12773475
License : IBM and GPLv2+
Signature : RSA/SHA256, Fri Jul 4 01:33:15 2014, Key ID 24c6a8a7f4a80eb5
Source RPM : postfix-2.10.1-6.el7.src.rpm
Build Date : Mon Jun 9 22:39:36 2014
Build Host : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://www.postfix.org
Summary : Postfix Mail Transport Agent
Description :
Postfix is a Mail Transport Agent (MTA), supporting LDAP, SMTP AUTH (SASL),
TLS
Caso o Postfix não esteja instalado, realize a instalação com o comando yum install
postfix.
9.3.2. Configuração do Postfix
Os arquivos de configuração do Postfix são encontrados no diretório /etc/postfix. Os
dois principais arquivos são mail.cf e master.cf.
# ls /etc/postfix/
540
Serviços essenciais do sistema 9
O arquivo main.cf possui as configurações globais do servidor, como:
•• Definição do hostname;
•• Definição do domínio;
9.3.3. Redirecionamento de e-mails
O redirecionamento de e-mails pode ser configurado através do arquivo identificado
como /etc/aliases. Com isso, todos os e-mails enviados para um determinado
destinatário terão também uma cópia que será enviada para o usuário configurado
nesse arquivo.
Vejamos um exemplo:
Manager: root
Webmaster: operador
Nesse exemplo, todas as mensagens enviadas para o usuário Manager também serão
encaminhadas para o usuário root, assim como também as mensagens enviadas para
o usuário Webmaster serão encaminhadas para o usuário operador.
Após alterar esse arquivo, é necessário executar o comando newaliases para sua
atualização.
9.3.4. Envio de e-mails
Um simples teste de envio de mensagem pode ser realizado diretamente na linha de
comando, utilizando o comando sendmail ou mail:
541
Linux LPI - Administração
Esse sistema, cuja configuração pode ser realizada pela interface Web ou por linha de
comando, administra o material a ser impresso e as filas de impressão com o auxílio
do protocolo IPP (Internet Printing Protocol), com o qual também podemos executar
uma impressão remota. Além disso, ele é compatível com as ferramentas do LPD,
antigo sistema de impressão.
9.4.1. Instalando o CUPS
Para instalar o CUPS, devemos, primeiramente, instalar os seguintes pacotes:
•• cups;
•• cupsys-driver-gutenprint.
O CUPS, como vimos, também pode ser usado para controlar uma impressão remota.
Na configuração do CUPS que veremos a seguir, por meio da interface Web, uma
impressora é adicionada e configurada como servidor de impressão:
542
Serviços essenciais do sistema 9
1. Execute o browser de preferência e, na barra de endereço, digite http://
localhost:631. Será apresentado um menu de configuração, como na próxima
imagem:
543
Linux LPI - Administração
544
Serviços essenciais do sistema 9
6. Defina o driver da impressora, como mostra a imagem adiante:
545
Linux LPI - Administração
Requisições remotas são aceitas pelo CUPS mediante a habilitação da opção Share
published printers connected to this system, presente na guia Administration,
exibida a seguir:
O exemplo a seguir demonstra a utilização do comando lpinfo com a opção –m, a fim
de exibir os drivers de impressora disponíveis no sistema:
546
Serviços essenciais do sistema 9
Ao utilizarmos lpinfo com a opção –v, visualizamos os dispositivos de impressão
disponíveis no sistema.
Opção Descrição
Determina uma classe para a impressora em questão. Essa
-c <classe>
classe é criada caso seja inexistente.
A impressora especificada é removida da classe que, ao ficar
-r <classe>
vazia, é excluída.
O driver padrão da impressora – um arquivo PPD, na maioria
das vezes – é determinado nesta opção. O comando lpinfo
-m <modelo>
–m nos permite visualizar em uma lista os modelos que estão
disponíveis, como mencionado anteriormente.
-P <arquivo_PPD> Um arquivo PPD de driver local é especificado para a impressora.
O endereço do dispositivo de comunicação da impressora que
-v <dispositivo>
será usada é determinado nesta opção.
Esta opção diz respeito à descrição de texto referente à
-D info
impressora.
-E A impressora recebe permissão para imprimir trabalhos.
Esta opção diz respeito à descrição de texto referente à
-L <localizacao>
localização da impressora.
547
Linux LPI - Administração
Arquivo de
Descrição
configuração
classes.conf As classes das impressoras locais são determinadas nesta opção.
As impressoras locais com disponibilidade são determinadas
printers.conf
nesta opção.
Esta opção refere-se às configurações específicas de cada
lpoptions
impressora.
mime.types Nesta opção são especificados os tipos de arquivos conhecidos.
Os filtros com disponibilidade para converter formatos de
mime.convs
arquivos são determinados nesta opção.
Esta opção refere-se às configurações que o daemon cupsd
cupsd.conf
apresenta.
548
Serviços essenciais do sistema 9
4. Informe a localização e o nome da impressora remota, conforme mostrado adiante.
Depois, clique em Continue;
5. Insira um nome local para a impressora e sua localização, que poderá ter qualquer
tipo de descrição (campo Description). Clique em Continue;
549
Linux LPI - Administração
9.4.6. Gerenciando a impressão
A seguir, veremos alguns comandos úteis para gerenciar tarefas de impressão.
Com eles, podemos imprimir arquivos, monitorar filas de impressão e configurar
impressoras instaladas como servidores de impressão.
Opção Descrição
-P<xxx> O arquivo é enviado para a fila <xxx>.
-#<N> O documento é impresso o número de vezes determinado em <N>.
É criado um link simbólico na fila de impressão, embora o documento
-s
não seja copiado para ela.
Para verificar as tarefas de impressão, usamos o comando lpq. Podemos fazer essa
verificação apenas nos trabalhos de um determinado computador, ou em todos os
trabalhos do sistema que estiverem em fila. Para isso, utilizamos, respectivamente,
lpq –P e lpq –a.
550
Serviços essenciais do sistema 9
Os trabalhos de impressão têm, cada um, um número designado que permite que
esse trabalho seja cancelado na fila de impressão pelo comando lprm. A seguir,
descrevemos outras considerações sobre esse comando e o processo de cancelamento:
•• O último trabalho que foi enviado será cancelado caso usemos o lprm sem
argumentos;
•• Tanto o comando lprm –a como o lprm – farão com que todos os trabalhos
sejam cancelados.
Como mencionado, o CUPS permite que um trabalho seja impresso remotamente. Para
que isso ocorra, o computador local (o servidor de impressão, isto é, o computador
no qual a impressora foi instalada) deve estar ligado a uma rede, na qual a impressora
deve ser disponibilizada. Tal configuração pode ser realizada por meio de uma das
seguintes alternativas:
551
Linux LPI - Administração
As configurações novas poderão ser utilizadas apenas depois que o cupsd tiver sido
reiniciado. Os outros computadores que estiverem na rede precisam ter a seguinte
linha inserida no arquivo /etc/cups/client.conf:
ServerName <endereço_do_servidor_de_impressao>
lpstat -a
lpoptions –d <nome_da_impressora>
552
Serviços essenciais do sistema 9
Pontos principais
Atente para os tópicos a seguir. Eles devem ser estudados com muita atenção,
pois representam os pontos mais importantes do capítulo.
Material complementar
Sites Endereços
https://access.redhat.com/documentation/en-US/Red_Hat_
LOGS Enterprise_Linux/6/html/Deployment_Guide/ch-Viewing_and_
Managing_Log_Files.html
https://access.redhat.com/documentation/en-US/Red_Hat_
Agente MTA
Enterprise_Linux/6/html/Deployment_Guide/s1-email-mta.html
Servidor de
https://www.cups.org/
impressão
553
Mapa mental para a fixação do aprendizado
554
9 Serviços essenciais
do sistema
Teste seus conhecimentos
Linux LPI - Administração
☐☐ a) /etc/zoneinfo
☐☐ b) /usr/zoneinfo
☐☐ c) /usr/share/zoneinfo
☐☐ d) /etc/share/zoneinfo
☐☐ e) /share/zoneinfo
☐☐ a) hwclock -s
☐☐ b) hwclock -w
☐☐ c) hwclock -systohc
☐☐ d) date –set hw
☐☐ e) date hw set
☐☐ a) ntpdate ntp.usp.br
☐☐ b) ntpdate -sync ntp.usp.br
☐☐ c) ntpsync ntp.usp.br
☐☐ d) ntpdate -set ntp.usp.br
☐☐ e) date ntp.usp.br
☐☐ a) /etc/ntpd.conf
☐☐ b) /etc/ntpdate.conf
☐☐ c) /etc/default/ntpdate
☐☐ d) /etc/ntp.conf
☐☐ e) /etc/default/ntp.conf
556
Serviços essenciais do sistema 9
6. Com qual comando é possível ler o arquivo wtmp?
☐☐ a) tail
☐☐ b) cat
☐☐ c) more
☐☐ d) last
☐☐ e) vi
☐☐ a) info
☐☐ b) nivel
☐☐ c) destino
☐☐ d) warn
☐☐ e) facilidade
☐☐ a) /etc/rsyslog.conf
☐☐ b) /etc/syslogd.conf
☐☐ c) /usr/src/rsyslog.conf
☐☐ d) /etc/syslog.conf
☐☐ e) /usr/src/syslogd.conf
☐☐ a) #
☐☐ b) @
☐☐ c) %
☐☐ d) !
☐☐ e)&
557
Linux LPI - Administração
☐☐ a) #
☐☐ b) @
☐☐ c) %
☐☐ d) @@
☐☐ e)&
☐☐ a) 22
☐☐ b) 621
☐☐ c) 23
☐☐ d) 631
☐☐ e) 321
13. Qual comando deve ser utilizado para verificar o status das impressoras
e filas?
☐☐ a) lpd -a
☐☐ b) lp -a
☐☐ c) lpstat -a
☐☐ d) lpadmin -a
☐☐ e) lpoptions -a
☐☐ a) TCP/IP
☐☐ b) IPP
☐☐ c) PPP
☐☐ d) CUPS
☐☐ e) ISP
15. Qual comando deve ser utilizado para listar as impressoras disponíveis?
☐☐ a) lpinfo
☐☐ b) lpq
☐☐ c) lpd
☐☐ d) lpadmin -l
☐☐ e) lpinfo -m
558
Serviços essenciais do sistema 9
16. Qual comando deve ser utilizado para verificar configurações
específicas de cada impressora?
☐☐ a) lpoptions
☐☐ b) lpinfo
☐☐ c) lpq
☐☐ d) lpd
☐☐ e) cups
☐☐ a) mail.cf
☐☐ b) main.cf
☐☐ c) man.cf
☐☐ d) main
☐☐ e) cf.main
☐☐ a) Configuração de e-mail.
☐☐ b) Redirecionamento de e-mails.
☐☐ c) Configurações globais do agente.
☐☐ d) Definição da porta TCP.
☐☐ e) Definição da caixa de e-mail.
559
9 Serviços essenciais
do sistema
Mãos à obra!
Linux LPI - Administração
# hwclock -r
# hwclock -w
# hwclock –show
# date
# vi /etc/default/ntpdate
NTPDATE_USE_NTP_CONF=no
NTPSERVERS=”a.ntp.br b.ntp.br”
# ntpdate a.ntp.br
# date
562
Serviços essenciais do sistema 9
Laboratório 3 - Instalando o servidor NTP
10. Instale o pacote do NTP;
# mv /etc/ntp.conf /etc/ntp.conf.old
12. Crie um novo arquivo de configuração abrindo com vi (ele aparecerá em branco);
13. Adicione o conteúdo a seguir no arquivo (observe que ele está todo comentado
para maior entendimento do seu funcionamento);
:wq
# touch /etc/ntp.drift
563
Linux LPI - Administração
# ntpd -g -n -q
# date
# ntpq -c pe
•• Servidores que iniciam com + são boas fontes de sincronismo e estão sendo
utilizados;
•• Servidores que iniciam com – não estão respondendo e, por isso, não estão
sendo utilizados;
•• A coluna offset representa quanto o relógio será adiantado ou atrasado até ficar
igual à fonte de tempo (em milissegundos).
# ntpq -c rl
564
Serviços essenciais do sistema 9
•• rootdispersão: Erro máximo da medida de offset em relação ao estrato 0, em
milissegundos;
# ntpdc -c loopinfo
# cat /var/log/ntpstats/loopstats
# cat /var/log/ntpstats/peerstats
# cd /var/log
26. Liste os arquivos contidos no diretório, com identificação facilitada (em cores).
Analise com calma o resultado;
# ls –color
565
Linux LPI - Administração
27. Leia o arquivo de log dmesg (logs de inicialização da máquina) e tente identificar
o máximo de informações possível, de acordo com o que foi visto neste e no módulo
anterior;
# tail -n 30 messages
# tail -n 30 syslog
# vim /etc/rsyslog.conf
31. Descomente as seguintes linhas para ativar o recebimento dos logs através do
protocolo UDP:
$ModLoad imudp
$UDPServerRun 514
:wq
# /etc/init.d/rsyslog restart
566
Serviços essenciais do sistema 9
Laboratório 8 - Configurando as estações ou
servidores para gravar os logs no servidor
de log
35. Na estação de trabalho ou servidor cliente, edite o arquivo /etc/rsyslog.conf;
# vi /etc/rsyslog.conf
36. Adicione a regra para gravar todos os logs de um dos alunos deste treinamento
no servidor. Altere o X para o endereço IP correto do aluno;
*.* @192.168.0.X
:wq
39. Para testar, leia os logs do outro aluno. Deve aparecer o nome da sua máquina e
informações de logs. No servidor do outro aluno, digite e observe:
# tail -f /var/log/messages
# vi /etc/logrotate.conf
567
Linux LPI - Administração
:wq
# logrotate -f /etc/logrotate.conf
# cat /var/log/syslog
Laboratório 11 - MTA
47. Instale o servidor de e-mail Postfix e envie um e-mail para o seu e-mail pessoal:
Escreva a mensagem desejada e depois coloque o ponto “.” para enviar o e-mail.
# wget https://kojipkgs.fedoraproject.org//packages/cups-
pdf/2.6.1/11.fc24/ppc64le/cups-pdf-2.6.1-11.fc24.ppc64le.rpm
568
Serviços essenciais do sistema 9
49. Para a distribuição Debian:
# cd /etc/cups
# ls
51. Caso sua distribuição esteja com a interface gráfica instalada, abra o navegador e
digite o endereço do seu servidor CUPS;
http://localhost:631
52. Permita que este servidor possa ser administrado remotamente. Para tanto, clique
na guia Administration;
59. Selecione o tipo de conexão apropriado para esta impressora (ex.: Internet Printing
Protocol (IPP));
569
Linux LPI - Administração
# gs -h
# lpstat -t
72. Envie um trabalho para uma impressora (no código a seguir, onde lê-se impressora,
use uma impressora da lista);
# lp -d[impressora] /etc/passwd
# lpstat
# lpstat -a
570
Serviços essenciais do sistema 9
Laboratório 14 - Lendo arquivos de configuração
do CUPS
75. Verifique o arquivo de configuração do CUPS;
# cat /etc/cups/cupsd.conf
# cat /etc/cups/printers.conf
# lpoptions
571
10 Fundamentos
de rede
Você precisará estar apto a configurar uma rede básica, utilizando o protocolo
TCP/IP.
A conexão entre os computadores de uma rede pode ser unificada por meio de
conectores, cabos, ondas de rádio e centralizadores. Uma comunicação poderá
ser estabelecida permitindo que todos os computadores participantes dessa rede
compartilhem informações ou acessem serviços disponibilizados para uso distribuído.
Sendo assim, o uso de tais serviços e o acesso a informações compartilhadas podem ser
administrados de maneira centralizada, economizando gastos e melhor gerenciando
os computadores presentes na rede.
Para que essa conexão e as vantagens que ela traz sejam possíveis, deve haver um
bom funcionamento tanto dos componentes de uma rede (cabeamento, adaptadores
de rede e protocolos) como de seus integrantes (servidor, cliente, host, local host,
remote host e gateway). Neste capítulo, aprenderemos mais sobre esses e outros
aspectos da rede, como a configuração de redes Linux e o monitoramento e a
reparação de problemas apresentados por elas.
574
Fundamentos de rede 10
10.1.1. Componentes básicos de uma rede
Para que uma rede de computadores possa estar acessível, necessitamos de um bom
funcionamento de seus respectivos componentes, que irão variar conforme o tipo de
tecnologia adotada. Os componentes básicos para o bom funcionamento de uma rede
são: cabeamento, adaptadores de rede e protocolos. A seguir, aprenderemos mais
sobre eles.
10.1.1.1. Cabeamento
Atualmente, o componente cabeamento é utilizado apenas para referenciar o tipo de
conexão física entre computadores em uma rede. No início, tínhamos apenas cabos
fazendo a interconexão entre esses computadores; agora, contamos também com
a tecnologia Wi-Fi de transmissão de dados via ondas de rádio ou outros meios de
comunicação sem fio como o Bluetooth.
10.1.1.2. Adaptadores de redes
A conexão estabelecida entre computadores em uma rede por seu meio físico de
interconexão se dará pelo componente básico, que é o adaptador de rede. Sobre os
adaptadores de rede e suas respectivas tecnologias, temos:
•• Token Ring: Originalmente criado pela IBM, em meados de 1980, para conexões
com topologia em anel;
575
Linux LPI - Administração
10.1.1.3. Protocolos
Para que os computadores de uma rede possam se comunicar, além da estrutura
física mencionada, também será necessário um protocolo de comunicação, o qual é a
base para que um computador possa estar ativo na rede e disponível para conexões.
Ou seja, o protocolo é o componente essencial para disponibilizar acessos e trocas de
informações pelos computadores em uma rede.
Os integrantes a seguir compõem uma rede; por meio dos termos citados, é possível
referenciá-los melhor.
•• Host
Host é qualquer máquina ou equipamento que faz parte de uma rede. O host pode
ser servidor ou cliente.
•• Servidor
•• Servidor de impressão;
•• Servidor de arquivos.
•• Cliente
Utiliza algum tipo de serviço ou recurso disponível por algum servidor. Não é
necessariamente um computador, mas sim qualquer tipo de equipamento conectado
à rede, como um celular, por exemplo.
576
Fundamentos de rede 10
•• Local host
•• Remote host
•• Gateway
O gateway realiza o transporte de pacotes TCP/IP para redes não identificadas pelos
próprios hosts que originaram o pacote. Isso permite que esses pacotes cheguem
a uma rede WAN partindo de uma rede privada. Com o gateway, os pacotes podem
transitar por uma rede fechada ou pela Internet. Geralmente, os hosts possuem
configurações como máscara e classe de IP iguais em uma rede local. Neste caso, o
gateway é o próprio computador nesse tipo de rede.
•• Endereço físico
577
Linux LPI - Administração
10.1.4. Protocolos de rede
Em uma rede, para que um computador estabeleça uma comunicação com outro
computador, é necessário que haja um protocolo de rede. Alguns desses protocolos
são projetados especificamente para determinados tipos de rede: em redes de
pequeno porte, utilizamos protocolos como NetBios; em redes mundiais, utilizamos
protocolos de roteamento, como o TCP/IP.
10.1.5. TCP
O TCP (Transmission Control Protocol) é um protocolo da camada 4 (camada de
transporte) do modelo OSI. A principal característica desse protocolo é verificar e
controlar erros dos pacotes que serão entregues pela rede. As aplicações que
necessitam de confiabilidade na entrega dos dados pela rede utilizarão esse protocolo
como base no seu transporte.
•• Handshake
Para que uma conexão seja estabelecida entre dois pontos, é preciso que haja um
controle do estabelecimento até a finalização da conexão. Assim, tal conexão poderá
ter uma autenticação e um processo de verificação dos dados transmitidos. Tal
mecanismo é possível devido ao Handshake, o qual, por meio do processo de três a
quatro tempos, poderá iniciar, manter e finalizar uma conexão TCP.
578
Fundamentos de rede 10
•• Portas TCP
As portas do protocolo TCP são utilizadas para permitir que múltiplos serviços sejam
executados simultaneamente. Elas compõem um número de 16 bits, totalizando
65.536 portas. Tais portas possuem uma padronização que é determinada pelo órgão
IANA. Algumas regras sobre as portas foram definidas por este órgão; são elas:
•• Controle de flags
Código Flag
10 User Point
11 Acknowledgement
12 Push
13 Reset
14 Syncronize
15 Finalize
579
Linux LPI - Administração
10.1. Exemplo de uma comunicação entre dois hosts (Three Way handshake)
•• SYN: Flag responsável pelo início da conexão, para a qual o cliente envia
um SYN ativo e aguarda pela confirmação de recebimento do servidor.
Caso a porta, na qual há uma tentativa de conexão, esteja fechada, uma
flag RST é enviada como resposta, e o processo de tentativa de conexão
será finalizado imediatamente. Há, também, um tempo limite de espera na
confirmação de recebimento da flag SYN. Caso a porta esteja disponível,
se o tempo limite for ultrapassado, um timeout é gerado, e a flag SYN é
enviada novamente;
•• ACK: A flag ACK poderá ser utilizada para situações distintas: como uma
confirmação de que a flag SYN+ACK foi recebida com sucesso, e como
auxílio na entrega dos dados após a conexão estabelecida, confirmando
cada pacote recebido com sucesso;
580
Fundamentos de rede 10
•• Segurança
•• Full-duplex
Como exemplo de serviços que utilizam o protocolo TCP, temos o SMTP, o Telnet, o
pop3 etc.
10.1.6. UDP
Assim como o TCP, o UDP (User Datagram Protocol) também é um protocolo de
transporte. Suas funções são similares, porém, o UDP não controla o fluxo e não
detecta erros durante a comunicação. Dessa forma, não temos a garantia de que o
pacote enviado será entregue intacto.
Isso nos faz atentar para o fato de que o protocolo UDP não tem um bom desempenho
em redes de longa distância, em que o tratamento de erro, bem como a sua correção,
precisa ser realizada pelo aplicativo. Assim, o UDP é mais bem aproveitado para redes
locais.
581
Linux LPI - Administração
No entanto, o UDP tem muitos pontos positivos, tornando-o um protocolo muito útil
em determinadas situações. Sobre algumas das características do UDP, temos:
Outros exemplos de serviços que utilizam o protocolo UDP são: NCS, DNS, SNMP e
TFTP.
10.1.7. ICMP
O ICMP (Internet Control Message Protocol) é um protocolo cuja implementação ocorre
juntamente ao IP, mesmo que eles não possuam as mesmas funções.
582
Fundamentos de rede 10
A RFC do protocolo ICMP é a 792.
Os dados que trafegam em uma rede TCP/IP são divididos em pacotes. Isso é
importante porque possibilita que tanto os recursos de rede sejam compartilhados
como os erros sejam detectados e, consequentemente, corrigidos.
Suponhamos que os dados não sejam divididos em pacotes, e que o recurso utilizado
para enviar esses dados seja um servidor de arquivos. Quando um usuário realizar
o envio de suas informações como sendo apenas um pacote, o servidor não poderá
ser utilizado pelos demais usuários até que esse pacote que está trafegando seja
entregue ao seu destino.
Se esse único pacote for dividido em vários, os usuários poderão enviar todos os seus
pacotes, que serão recebidos pelo servidor de forma alternada. Desse modo, a rede é
compartilhada por todos os usuários ao mesmo tempo.
Quando uma informação é dividida em pacotes, ela passa a ser constituída pelo
cabeçalho e pela parte de dados; dentre outras, esta parte contém as informações a
respeito do pacote que está trafegando na rede.
583
Linux LPI - Administração
10.1.9. Endereçamento IP
O IP (Internet Protocol) é um protocolo de endereçamento que possibilita a criação
de redes, dando endereços a cada estação participante, de modo que o tráfego de
dados seja direcionado para um ou outro participante, de acordo com seu endereço.
No modelo OSI, o protocolo IP se enquadra na camada 3 (camada de rede).
•• WAN (Wide Area Network): Uma rede expandida, normalmente formada por
várias LANs.
Atualmente, utilizamos o IPv4, cujo nome deve-se ao formato de seu endereço: quatro
octetos com valores decimais. Um octeto é um número composto por 8 bits. Podemos
encontrar alguns exemplos na tabela a seguir:
Decimal Binário
192 11000000
168 10101000
19 00010011
5 00000101
No dia a dia, utilizamos apenas o formato decimal, mas para entender esse protocolo,
é extremamente necessário compreender a forma binária. Sendo assim, o maior
número decimal que podemos ter em um octeto é 255 que, em formato binário, é
11111111.
584
Fundamentos de rede 10
10.1.10. Classes IP
Os endereços IP são divididos em cinco classes: A, B, C, D e E. Essa divisão se dá, entre
outros motivos, pela própria notação binária, que é modificada conforme os números
aumentam. Na classe A, todos os endereços entre 1 e 127, quando binários, iniciam
em 0; na classe B, todos os endereços entre 128 e 129, quando binários, são números
iniciados em 10; na classe C são 110, na classe D são 1110 e na classe E são 11110.
10.1.11. Endereços especiais
O primeiro e mais comum endereço especial é o 127.0.0.1, chamado de loopback.
Qualquer sistema que suporte o protocolo IP possui esse endereço, que é utilizado
para acessar serviços de rede no próprio computador. Ele é atribuído a uma interface
virtual de rede, como se fosse uma placa de rede.
Além disso, toda rede tem três informações básicas: o endereço da rede, o endereço
de broadcast (fim da rede) e as estações. Essa informação será esclarecida a seguir,
com as máscaras de rede.
Nem todos os endereços das classes são utilizados na Internet. Alguns, em cada
classe, foram separados para a criação de redes locais e nunca existirão na Internet.
Sendo assim, são os fornecedores de link que fornecem os IPs ou até as classes de
um link de acesso à Internet. Já na rede local, devemos utilizar os endereços da tabela
anterior, que não são válidos na Internet.
Para mais informações sobre classes de IP válidos ou domínios, basta consultar o site
www.registro.br.
585
Linux LPI - Administração
10.1.12. Máscaras de rede
Na configuração de uma rede, cada comutador deve possuir um endereço IP e uma
máscara de rede. Apesar da divisão das classes mencionadas anteriormente, é a
máscara de rede que define qual é a rede e o broadcast de um host, a partir do
endereço IP.
Classe Máscara
A 255.0.0.0
B 255.255.0.0
C 255.255.255.0
Em uma operação E, é executado o cálculo por meio de valores binários para determinar
se hosts com suas respectivas máscaras estão na mesma rede. O cálculo E por meio
de valores binários se dá pela seguinte regra:
1010
1100
------
1000
IP 192 168 0 1
Máscara 255 255 255 0
Rede 192 168 0 0
Broadcast 192 168 0 255
586
Fundamentos de rede 10
Sendo assim, o endereço IP 192.168.0.1, com a máscara 255.255.255.0, pertence à
rede 192.168.0.0, com broadcast 192.168.0.255. Se o mesmo cálculo for aplicado
ao computador B, este irá pertencer agora à rede 192.168.1.0, com broadcast
192.168.1.255.
10.1.13. Broadcast
O termo broadcast (transmitir) é utilizado para o envio ou difusão de uma determinada
informação em grande escala. Sua base e principal característica é o envio das
informações para vários receptores ao mesmo tempo.
10.1.14. Multicast
O multicast também é conhecido como multicast IP. Trata-se de uma forma de
comunicação e difusão da informação, porém, o multicast é conhecido como um
broadcast controlado, o qual propagará determinada informação aos hosts de
interesse.
10.1.15. ARP
As interfaces de uma rede são identificadas pela camada de comunicação ARP (Address
Resolution Protocol), sobre a qual os dados trafegam na camada IP. A conexão é
promovida pelo ARP, uma vez que o mapeamento de endereços IP para endereços
MAC do dispositivo de comunicação é feita nele.
Um pedido ARP é enviado, pelo kernel, para a interface de rede após a conexão ser
solicitada. Isto é, temos a solicitação do endereço MAC do endereço IP da conexão a
ser realizada. A resolução MAC – IP, por sua vez, depende do protocolo RARP (Reverse
Address Resolution Protocol) para ser realizada.
587
Linux LPI - Administração
Padrão da IETF (Internet Engineering Task Force), o NAT permite que um número
menor de endereços IPv4 públicos sejam necessários para o estabelecimento de
conexão com a Internet.
10.1.17. IPv6
O endereçamento IPv6, substituto do IPv4, é uma evolução em que são utilizados
endereços de 128 bits, em vez de 32 bits.
Como podemos perceber, o IPv6 é bem diferente do IPv4 em vários aspectos. Vejamos,
a seguir, alguns deles:
588
Fundamentos de rede 10
Há compatibilidade entre o IPv4 e o IPv6, já que o IPv6 pode conter o IPv4, como
em 192.168.0.1. Dessa forma, 96 bits são utilizados para o endereço IPv6 e os 32
bits restantes são utilizados para o IPv4, o que garante interoperabilidade durante a
migração das redes.
Vale lembrar, no entanto, que esse meio de identificação de hosts já não é utilizado,
e implementações modernas não têm a obrigação de aceitá-lo. Maiores informações
sobre este tipo de endereçamento podem ser consultadas na RFC 4038.
•• UDP (User Datagram Protocol): Funciona do mesmo modo que o TCP, porém o
controle sofre intervenção da aplicação;
A cada serviço de rede – o FTP, o HTTP e o SMTP são alguns deles – é atribuída
uma porta específica, determinada pelos protocolos de rede. Assim, a transmissão de
dados é feita por uma porta definida, em um endereço conhecido de uma máquina
na rede.
589
Linux LPI - Administração
Porta Serviço
20 FTP (porta de dados)
21 FTP
22 SSH
23 Telnet
25 SMTP
53 DNS
80 HTTP
110 POP3
119 NNTP (Usenet)
139 Netbios
143 IMAP
161 SNMP
443 HTTPS
465 SMTPS
993 IMAPS
995 POP3S
10.2.1. Serviços de rede
Os serviços tipo inetd e xinetd são aqueles que dependem do superdaemon de
rede inetd (Internet daemon). O xinetd (extended Internet daemon) fornece alguns
recursos além daqueles que o inetd provê, como, por exemplo, controle de acesso,
capacidade de fazer logs e de determinar horários para a disponibilidade do serviço.
Tanto o inetd como o xinetd são ativados no momento em que ocorre a inicialização
do sistema. São eles os responsáveis por realizar o monitoramento das portas de
serviços. Desse modo, assim que é solicitada uma conexão em uma das portas que
o inetd ou o xinetd monitoram, uma instância do serviço requerido é executada. Em
seguida, a conexão é transmitida e controlada pelo serviço em questão.
Podemos perceber, nesse cenário, que os daemons inetd e xinetd impedem que
vários serviços sejam ativados no momento da inicialização do sistema. Isso evita
que os serviços utilizem os recursos da máquina desnecessariamente, visto que não
estariam ali ativos apenas aguardando por uma conexão.
590
Fundamentos de rede 10
Como outra função dos superdaemons, temos que eles controlam acessos e também
realizam o envio de mensagens ao serviço de log do sistema.
10.2.2. Configurando o inetd
O inetd possui dois arquivos de configuração: o /etc/inetd.conf e o /etc/services.
O /etc/inetd.conf é o arquivo de configuração do inetd. Para configurar esse
daemon, podemos tanto incluir quanto excluir serviços no arquivo /etc/inetd.conf
manualmente. Isso só é possível porque o arquivo /etc/services já possui uma
descrição do serviço que será controlado. É neste último arquivo que encontramos a
lista de serviços conhecidos e suas respectivas portas.
# /etc/init.d/inetd restart
Ou:
# killall -1 inetd
O arquivo /etc/inetd.conf é apresentado com sete colunas e uma linha para cada
serviço. A próxima tabela mostra quais são essas colunas, juntamente com suas
respectivas descrições:
591
Linux LPI - Administração
10.2.3. Configurando o xinetd
O daemon xinetd possui algumas vantagens que o inetd não possui. Vejamos algumas
delas:
592
Fundamentos de rede 10
O conteúdo do diretório /etc/xinetd.d/ corresponde a um arquivo por serviço, e
os nomes desses arquivos são iguais aos nomes dos serviços que os definem. Além
disso, cada arquivo possui as características para o serviço respectivo. A sintaxe
utilizada pode ser vista a seguir:
service <servico>
{
<parametro> <operador> <valor>
...
}
Em que:
•• O item <servico> necessariamente tem que ser igual ao nome que foi especificado
no arquivo /etc/services;
•• disable: Desabilita o controle do serviço pelo xinetd caso o valor seja yes;
•• wait: Indica se o socket irá aguardar ou não o serviço retornar para novas
conexões (yes ou no);
593
Linux LPI - Administração
10.2.4. Telnet
O telnet (Telnet) é um aplicativo utilizado para acesso remoto. É um serviço que deve
ser utilizado com muita cautela, pois gera no sistema algumas falhas de segurança
quando utilizado de forma não controlada.
Para que uma conexão remota possa ser efetuada por meio do telnet, é preciso que o
daemon do telnet (telnetd) esteja instalado na máquina que será acessada e o cliente
Telnet esteja instalado na máquina que será utilizada para fazer o acesso remoto.
O telnet é uma aplicação que será controlada de forma direta pelo superdaemon
inetd ou xinetd, caso instalada. Sendo assim, terá um controle de execução em que
somente será carregado quando houver uma solicitação de conexão em sua porta
padrão, que é a porta 23.
594
Fundamentos de rede 10
Uma vez que o servidor Telnet (telnetd) esteja instalado na máquina que será acessada
remotamente, utilizamos o comando telnet para que o cliente possa se conectar ao
servidor Telnet. Para tal, utilizamos a seguinte sintaxe:
Opção Descrição
Faz com que a conexão seja estabelecida por meio de resoluções
-4
de endereços IPv4.
Faz com que a conexão seja estabelecida por meio de resoluções
-6
de endereços IPv6.
Realiza uma tentativa de logon no sistema de forma automática.
-a O nome de usuário enviado para autenticação é o nome de
usuário armazenado na variável de ambiente USER.
-d Habilita o modo debug.
Especifica o nome de usuário que será utilizado para tentar
-l <usuario>
estabelecer a conexão.
•• Como padrão, não existe criptografia nos dados enviados, inclusive para
usuários e senhas;
595
Linux LPI - Administração
# /etc/init.d/xinetd restart
# telnet <endereço_IP>
10.3. Configuração de rede
Todo o processo de configuração da rede Linux pode ser executado de forma dinâmica,
usando comandos específicos, ou de maneira estática, por meio de arquivos de
configuração. A diferença entre as configurações é que, na configuração dinâmica, as
definições poderão se perder após a reinicialização do sistema. Já nas configurações
estáticas, é possível definir uma configuração permanente.
Os dois métodos de configuração serão apresentados a seguir por meio dos comandos
e arquivos de configuração específicos.
596
Fundamentos de rede 10
10.3.1. Verificando o status da interface de rede
O comando mii-tool é uma ferramenta utilizada para verificar se as interfaces de rede
estão com seu link devidamente ativo. Ou seja, é possível verificar se o cabo está
devidamente conectado na placa de rede e se ele tem um link ativo e funcional com a
outra ponta. Ele é utilizado da seguinte forma:
# mii-tool
Opção Descrição
Exibe informações sobre todas as interfaces disponíveis, até
-a
mesmo de interfaces desabilitadas.
Exibe uma lista simples das interfaces e suas informações
-s
estatísticas de uso.
Parâmetro Descrição
up Habilita uma determinada interface de rede.
down Desabilita uma determinada interface de rede.
Parâmetro utilizado para alterar o endereço de MAC de
hw ether
um determinado dispositivo.
597
Linux LPI - Administração
As principais informações que poderão ser visualizadas com o comando ifconfig são:
Informação Descrição
Endereço de HW Endereço físico da interface (MAC).
Inet end Endereço IPv4 atribuído à interface.
Endereço Inet6 Endereço IPv6 atribuído à interface.
Bcast Endereço de broadcast da rede da qual o host faz parte.
Masc Máscara de rede utilizada para definir a rede do host.
O endereço de loopback é utilizado para realizar uma conexão local com a própria
máquina, possibilitando, assim, testar nosso dispositivo de rede sem interferir na
rede local. Por padrão, o endereço de loopback é 127.0.0.1. A interface loopback é
geralmente inicializada automaticamente na inicialização do sistema por determinados
scripts.
É saudável para o sistema manter sempre a interface loopback ativa. Muitos aplicativos
utilizam referência a loopback para executar suas funcionalidades; o gerenciador de
janelas KDE é um exemplo.
598
Fundamentos de rede 10
599
Linux LPI - Administração
No exemplo adiante, o endereço físico da interface eth0 foi alterado. Para se alterar o
endereço físico de um dispositivo, o mesmo deve ser desabilitado antes da execução
do processo.
É importante atentar para o fato de que todas as alterações feitas com o comando
ifconfig são meramente dinâmicas, ou seja, são perdidas após a reinicialização do
sistema.
# nmtui
600
Fundamentos de rede 10
Quanto à verificação das interfaces configuradas, utilize o comando nmcli d.
10.3.3. Comando ip
Comandos como ifconfig, netmask, route, entre outros, fazem parte do pacote
chamado net-tools, em distribuições Red Hat e seus derivados. Nas novas
distribuições, esses comandos passaram a ser substituídos por outros, como por
exemplo o comando ip. Porém, caso você escolha continuar usando-os, basta instalar
o pacote já mencionado.
Para definir o gateway da rede, utiliza-se o comando route, cuja sintaxe é a seguinte:
601
Linux LPI - Administração
A tabela a seguir descreve duas opções que podemos utilizar com route:
Ação Descrição
add Adiciona um gateway na tabela de rotas.
del Remove um gateway na tabela de rotas.
No exemplo anterior, o comando route foi utilizado inicialmente apenas para exibir a
tabela de rotas (comando route –n). Logo em seguida, foi adicionada uma rota para
o gateway 172.16.126.2 – comando route add default gw 172.16.126.2 eth0 – e foi
exibida a nova tabela de rotas.
Para que um gateway possa ser removido, basta seguir o exemplo adiante. Nele, o
gateway padrão foi removido da tabela de rotas – comando route del default gw
172.16.126.2 – e a nova visualização da tabela de rotas pôde ser visualizada com o
comando route –n.
602
Fundamentos de rede 10
10.3.5. Configurando o servidor DNS
Para que a configuração básica da rede seja finalizada, é preciso indicar um resolvedor
de nomes. O primeiro sistema de resolução de nomes implementado desde as
primeiras versões de Unix e utilizado até hoje é o recurso disponível por meio do
arquivo /etc/hosts, que tem a função de converter o nome de um computador em
um endereço IP.
A partir daí, fica mais fácil identificar um micro em uma rede local. Não há necessidade
de ter sempre em mente o endereço IP dos hosts da rede – basta saber o nome da
máquina. Na prática, é muito mais simples memorizar nomes do que uma sequência
de números representando o endereço IP.
Vejamos um exemplo:
127.0.0.1 localhost
172.16.19.1 P19-01.impacta.com.br P19-01
172.16.19.2 P19-02.impacta.com.br P19-02
172.16.200.202 prodigy.impacta.com.br
# ping P19-01
Caso o host descrito no arquivo troque de endereço IP, o arquivo /etc/hosts deve ser
atualizado manualmente.
603
Linux LPI - Administração
Uma das principais facilidades proporcionadas pelo serviço DNS é poder centralizar
as requisições de resolução de nomes a um único servidor, para que ele, de alguma
forma, mapeie um determinado nome para um endereço IP específico.
O arquivo pode ser editado utilizando o vi ou qualquer outro editor de texto, visto
que este arquivo é um arquivo de texto normal. O arquivo resolv.conf configura
basicamente três opções:
604
Fundamentos de rede 10
A seguir, com o comando vi, editamos o arquivo /etc/resolv.conf e adicionamos o
servidor de DNS 192.168.0.1 (nameserver 192.168.0.1):
10.3.6.1. /etc/host.conf
O arquivo /etc/host.conf poderá definir uma ordem para a resolução de nomes no
sistema e estará ligado diretamente com as definições feitas nos arquivos /etc/hosts
e /etc/resolv.conf, respectivamente. A seguir, podemos visualizar um exemplo do
arquivo:
•• multi on: Determina que serão retornados todos os endereços IP resolvidos que
se encontram no arquivo /etc/hosts.
605
Linux LPI - Administração
10.3.6.2. /etc/networks
O arquivo /etc/networks é utilizado para criar um vínculo entre o nome de uma
determinada rede e seu respectivo endereço IP.
Para visualizarmos tal vínculo, podemos utilizar o comando route sem nenhuma
opção. Visualizaremos, então, ao invés dos números IP das redes, os seus respectivos
nomes.
10.3.6.3. /etc/hostname
O arquivo /etc/hostname é responsável por armazenar e definir o nome da estação
de trabalho.
Para que as alterações feitas no arquivo hostname tenham efeito, é preciso reiniciar
o sistema ou utilizar o próprio comando hostname, como no exemplo adiante, para
redefinir dinamicamente o nome da máquina. Ou seja, basta reiniciar a sessão atual
para que o novo nome seja utilizado.
606
Fundamentos de rede 10
10.3.6.4. /etc/nsswitch.conf
Neste arquivo, encontramos a indicação e a forma de acesso às bases de dados do
sistema, como:
•• Resolução de nomes;
•• Grupos de usuários.
passwd : compat
group : compat
shadow : compat
Para configurar a rede com esse arquivo, devemos possuir as configurações básicas
da rede. É possível definir o endereço IP, rede, broadcast e o gateway padrão que será
utilizado por cada interface.
607
Linux LPI - Administração
As configurações das interfaces são definidas por blocos, onde cada interface terá
suas respectivas configurações. Na tabela a seguir, podemos encontrar algumas
opções com as descrições para o arquivo interfaces:
Opção Definição
A interface especificada será carregada automaticamente na
auto <interface> inicialização do sistema, caso a opção auto seja inserida com
a interface desejada.
É preciso indicar a interface que será configurada com as
<interface> referências vistas anteriormente. Por exemplo: Io, eth0,
wlan0, entre outras.
iface Determina o início da configuração de uma interface de rede.
Determina que a família de protocolos a ser utilizada para a
interface de rede é o TCP/IP na versão 4. Caso seja necessário
inet
utilizar a tecnologia de IPv6, é preciso indicar a opção inet6,
ou ipx para usar a Tecnologia de IPX.
608
Fundamentos de rede 10
Opção Definição
Determina o método no qual a interface de rede está sendo
configurada (static significa que a interface de rede está
sendo configurada como endereço estático, fixo). Para tal
opção, é possível usar os seguintes parâmetros:
609
Linux LPI - Administração
Parâmetro Descrição
Relê o arquivo interfaces, habilitando todas as interfaces com
start
as supostas novas configurações.
Desabilita todas as interfaces (exceto a interface loopback) que
stop
estão ativas no sistema.
Desabilita todas as interfaces e, logo em seguida, habilita
restart novamente, reiniciando assim as interfaces e definindo novas
configurações.
Exemplo:
# /etc/init.d/networking restart
Para o Red Hat e seus derivados, essa configuração será realizada no arquivo /etc/
sysconfig/network-scripts/ifcfg-<nome_interface>.
610
Fundamentos de rede 10
Na tabela a seguir, podemos encontrar algumas opções com as descrições para o
arquivo ifcfg-<nome_interface>:
Opção Definição
TYPE Define o tipo de rede.
Define a maneira como a interface será configurada:
611
Linux LPI - Administração
10.3.8.1. ping
O ping é o comando utilizado para verificar se uma determinada máquina encontra-
se conectada à rede. Podemos verificar também o tempo que cada máquina leva para
responder aos pacotes enviados por este comando.
Opção Descrição
Envia pacotes para o endereço broadcast, onde todas as máquinas
-b ativas na rede receberão o pacote ping. Opção mais útil para
descobrir os IPs ocupados em um endereço de rede.
Especifica a quantidade de pacotes a serem enviados para um
-c <num> determinado destino. Após o envio do número determinado de
pacotes, o comando é encerrado.
Especifica que o sistema não deverá esperar a resposta do
destinatário para enviar outros pacotes. Este comando exibirá em
-f
tela um ponto (.), que é apagado quando recebido com sucesso na
outra ponta.
Especifica, em segundos, o intervalo entre o envio de um pacote e
-i [seq]
outro.
Oculta a exibição dos pacotes enviados, e só mostra o resultado do
-q
comando quando este for encerrado.
-s <tam> Especifica o tamanho do pacote que será enviado.
612
Fundamentos de rede 10
No exemplo a seguir, executamos o comando ping para o site www.impacta.com.br.
É retornada a mensagem de resposta com o tempo de execução.
Para redes configuradas em IPv6, poderá ser utilizado o comando ping6. Sua sintaxe
é a seguinte:
ping6 ::1
ping6 2002:c000:203::1
10.3.8.2. dig
O comando dig (Domain Information Groper) é um aplicativo muito flexível e nos
permite fazer perguntas a determinados servidores de nomes DNS. É utilizado para
exibir informações do servidor de nomes especificado. A sintaxe do comando é a
seguinte:
dig <dominio>
613
Linux LPI - Administração
Vejamos um exemplo:
dig www.impacta.com.br
10.3.8.3. host
O comando host é utilizado para fazer pesquisas em DNS. É utilizado, normalmente,
para converter nomes em endereços IP e vice-versa. Serve para detectar e corrigir
problemas de resolução de nomes.
Quando nenhuma opção é informada, o comando host exibe uma pequena lista de
seus argumentos de linha de comando e opções.
Opção Descrição
Equivalente ao uso das opções -v, que acionam o modo verboso, e
-a
-t, que especifica um tipo de pergunta.
Tenta exibir os registros SOA para o nome da zona de todos os
-C servidores de nomes autorizados listados para ela. Essa lista é
definida pelos registros NS que são encontrados para a zona.
-l Seleciona o Listmode.
614
Fundamentos de rede 10
10.3.8.4. netstat
O comando netstat é o responsável por exibir, entre outras coisas, as interfaces de
rede configuradas, as conexões de rede e as tabelas de roteamento. Sua sintaxe é a
seguinte:
netstat [opcoes]
615
Linux LPI - Administração
10.3.8.5. traceroute
O traceroute é o comando utilizado para exibir o caminho (ou rota) percorrido por
um pacote entre os gateways da rede até chegar ao seu destino, e o tempo gasto na
retransmissão.
Uma das utilidades deste comando é encontrar o computador que está provocando
a falha na comunicação entre o emissor dos pacotes e o destinatário. Necessitamos
desse tipo de informação quando ocorrem problemas no envio e recebimento de
pacotes via rede.
Vejamos um exemplo:
# traceroute -v www.impacta.com.br
Opções Descrição
-l Exibe o tempo de vida do pacote.
Utilizamos esta opção para especificar a quantidade máxima de
-m <num>
TTL dos pacotes.
Exibe os endereços em formato numérico, não utilizando, assim, o
-n
serviço de DNS.
A porta padrão utilizada para teste é a 33434. Podemos utilizar
-p <porta> esta opção para determinar que os testes serão realizados da porta
especificada.
Utilizamos esta opção quando não desejamos que a tabela de
-r roteamento seja consultada. Portanto, os pacotes são enviados
diretamente ao computador conectado à rede.
-v Exibe o resultado do comando em detalhes (modo verboso).
Especifica o tempo máximo que o comando aguardará por uma
-w <num> resposta. Se não utilizarmos esta opção, será utilizado o valor
padrão de três segundos para o tempo máximo de resposta.
616
Fundamentos de rede 10
10.3.8.6. tracepath
Com o comando tracepath, descobrimos o MTU (Maximum Transmission Unit)
durante o caminho traçado até um host de rede. Mesmo usuários que não sejam
administradores do sistema podem fazer uso desse comando, característica que o
diferencia do comando traceroute, apesar das semelhanças entre eles. O tracepath
possui a seguinte sintaxe:
No caminho até <destino>, é utilizada uma porta aleatória ou a porta UDP especificada
em [porta].
617
Linux LPI - Administração
Pontos principais
Atente para os tópicos a seguir. Eles devem ser estudados com muita atenção,
pois representam os pontos mais importantes do capítulo.
Material complementar
Sites Endereços
Configuração de https://www.debian.org/doc/manuals/debian-reference/
rede Debian ch05.en.html
https://access.redhat.com/documentation/en-US/Red_Hat_
Configuração de
Enterprise_Linux/6/html/Deployment_Guide/ch-Network_
rede Red Hat
Interfaces.html
IPV4 https://en.wikipedia.org/wiki/IPv4
IPV6 https://en.wikipedia.org/wiki/IPv6
618
Mapa mental para fixação do aprendizado 10
619
10 Fundamentos
de rede
Teste seus conhecimentos
Linux LPI - Administração
☐☐ a) ifconfig
☐☐ b) mii-tool
☐☐ c) ipconfig
☐☐ d) arp
☐☐ e) traceroute
☐☐ a) /etc/dns.conf
☐☐ b) /etc/dnsresolv.conf
☐☐ c) /etc/resolv.conf
☐☐ d) /etc/nsswitch.conf
☐☐ e) /etc/hosts
☐☐ a) ifconfig ou route.
☐☐ b) route ou arp.
☐☐ c) ifconfig ou netstat.
☐☐ d) route ou netstat.
☐☐ e) arp ou ifconfig.
☐☐ a) B
☐☐ b) A
☐☐ c) C
☐☐ d) E
☐☐ e) D
622
Fundamentos de rede 10
6. Sobre o endereço 127.0.0.1, qual das alternativas a seguir é verdadeira?
☐☐ a) 11111111.00011101.01101011.10010011
☐☐ b) 11001101.10100100.10110101.10100010
☐☐ c) 11000000.10101000.00000101.01100100
☐☐ d) 00110000.10100100.00010011.11010110
☐☐ e) 11000000.11001010.00001000.00010101
☐☐ a) 169.254.0.255
☐☐ b) 169.254.255.0
☐☐ c) 169.255.255.255
☐☐ d) 169.254.255.255
☐☐ e) 169.254.254.255
☐☐ a) 255.255.255.224
☐☐ b) 255.255.255.0
☐☐ c) 255.255.255.192
☐☐ d) 255.255.254.0
☐☐ e) 255.255.255.252
☐☐ a) 255.255.255.248
☐☐ b) 255.255.248.0
☐☐ c) 255.255.255.240
☐☐ d) 255.255.255.192
☐☐ e) 255.255.255.224
623
Linux LPI - Administração
☐☐ a) 21
☐☐ b) 22
☐☐ c) 23
☐☐ d) 993
☐☐ e) 53
☐☐ a) interfaces
☐☐ b) interface
☐☐ c) ifcfg-enp0s3
☐☐ d) resolv.conf
☐☐ e) Interfaces
☐☐ a) ifcfg-<nome da interface>
☐☐ b) icg-<nome da interface>
☐☐ c)fcfg-<nome da interface>
☐☐ d) iffg-<nome da interface>
☐☐ e) ifcf-<nome da interface>
624
10 Fundamentos
de rede
Mãos à obra!
Linux LPI - Administração
# mii-tool
# ifconfig eth0
•• Endereço IP;
•• Máscara;
•• MAC Address;
•• Broadcast.
# ifdown eth0
# ifup eth0
# ifconfig eth0:1
8. Execute o ping para o computador de um dos colegas. Para isso, pergunte a ele
qual é o endereço IP de sua máquina (no lugar de x, informe o endereço IP obtido);
# ping 192,168.100.x
# route -n
626
Fundamentos de rede 10
Laboratório 2 - Configurando respostas de DNS
10. Verifique o arquivo resolv.conf para identificar a configuração de DNS:
# cat /etc/resolv.conf
11. Configure o computador para que responda pelo seguinte nome: srvYY.impacta.
com.br. O endereço YY é numérico, portanto, a escolha do valor a ser utilizado deve
ser feita com auxílio do instrutor, a fim de evitar valores repetidos em sala de aula;
# vi /etc/hosts
# ping srvYY.impacta.com.br
# ping srvYY
# traceroute www.impacta.com.br
# netstat -i
# cat /etc/resolv.conf
# dig @ip_do_dns
627
Linux LPI - Administração
628
11 Segurança
ÃÃ TCP wrapper;
ÃÃ Limitando recursos do sistema;
ÃÃ Configuração do SSH.
Linux LPI - Administração
Este capítulo faz parte do tópico 110 – Security da segunda prova identificada
como 102-400 ou LX0-104 da certificação LPIC-1.
11.1. TCP wrapper
Os TCP wrappers demonstram grande funcionalidade no GNU/Linux por atuarem na
verificação de solicitações da rede. Eles definem uma camada de segurança que é
aplicada em diferentes serviços, como o SSH e o SMTP, ou seja, os TCP wrappers
constituem um mecanismo de controle de acesso aos serviços disponíveis.
630
Segurança 11
•• Caso o endereço atenda a uma regra do arquivo etc/hosts.allow, o acesso será
liberado. Nesse caso, a consulta ao arquivo /etc/hosts.deny não será realizada;
•• O endereço será liberado caso não esteja em nenhum desses dois arquivos.
Em que:
O acesso será liberado caso o par servicos:clientes esteja localizado no arquivo /etc/
hosts.allow e negado caso o par servicos:clientes esteja localizado no arquivo /etc/
hosts.deny.
Instrução Descrição
ALL Todos os serviços/hosts têm a condição atendida.
Hosts que apresentam nome sem um ponto (.) têm a condição
LOCAL
atendida.
Usuários de nome conhecido e hosts de nome e endereço conhecidos
KNOW
têm a condição atendida.
Usuários de nome desconhecido e hosts de nome e endereço
UNKNOWN
desconhecidos têm a condição atendida.
Hosts que não apresentam nome correspondente ao endereço têm
PARANOID
a condição atendida.
EXCEPT Excetua de determinada condição um ou mais endereços.
631
Linux LPI - Administração
11.1.2. tcpdump
O tcpdump atua na segurança dos pacotes que são transmitidos através da rede e na
solução de possíveis falhas. Sua atuação consiste em ler pacotes a partir da interface
TCP, que pode ser ethernet ou token ring, e comparar esses pacotes com um filtro
especificado.
632
Segurança 11
A tabela a seguir apresenta opções de tcpdump:
Opção Descrição
-A Exibe o conteúdo do pacote em formato ASCII.
-i <interface> Indica a interface que será monitorada.
-n Não resolve nomes, exibindo o endereço de IP.
-s <tamanho> Captura pacotes pelo tamanho especificado (bytes).
-c <numero> Captura uma quantidade específica de pacotes.
-w <arquivo> Salva o resultado em um arquivo determinado.
-v <arquivo> Exibe as informações em um nível detalhado.
-vv <arquivo> Nível maior de detalhamento sobre as informações exibidas.
-vvv <arquivo> Nível máximo de detalhamento sobre as informações exibidas.
-x Exibe o conteúdo do pacote em formato hexadecimal.
•• dst host | net port value: Responsável por capturar pacotes destinados ao host,
à porta ou à rede especificada;
•• src host | net port value: Responsável por capturar pacotes a partir de um host,
porta ou rede especificada;
•• host <host>: Responsável por capturar pacotes para o host definido ou a partir
dele;
633
Linux LPI - Administração
Vejamos um exemplo:
11.1.3. Comando fuser
O comando fuser é utilizado nos casos em que é necessário verificar os processos
que estão utilizando um determinado arquivo, como nos casos de um bloqueio de
algum dispositivo ou mapeamentos.
Opção Descrição
-u Exibe o PID e o nome do usuário em que está executando o comando.
Altera o formato de exibição para a saída do comando ps, com os
-v
seguintes campos: PID, USER, ACCESS e COMMAND.
-k Finaliza os processos que estão acessando o arquivo.
fuser –k /dev/tty1
fuser /etc
11.1.4. Comando lsof
Podemos recorrer a arquivos ou proto-arquivos para acessar a maioria dos recursos
em ambientes Unix. Os recursos e arquivos que estiverem sendo usados são listados
pelo comando lsof que, além disso, investiga os processos, no computador local,
relacionados a recursos de rede.
634
Segurança 11
As conexões abertas cuja base é o protocolo IP são selecionadas pela opção –i, que
exibe dados como o programa e o usuário que a utiliza. Por exemplo:
Vale lembrar que o comando lsof fornece informações referentes somente às conexões
com o computador local. Para estabelecer uma conexão com um computador remoto,
é interessante recorrer a uma maneira mais prática.
Uma porta é especificada quando a informamos logo depois do sinal de dois pontos,
como vemos a seguir:
lsof -i :<porta>
O endereço também pode ser especificado juntamente com a porta. Para isso, usamos
a seguinte sintaxe:
11.1.5. Comando sudo
O comando sudo é um programa desenvolvido para possibilitar que um administrador
de sistemas conceda privilégios limitados de superusuário aos usuários comuns.
Esse arquivo em seu estado original, apresenta uma série de configurações onde elas
estão comentadas. O arquivo neste estado facilita a configuração para um determinado
usuário do sistema.
Para edição desse arquivo, utilize o comando visudo, cujos comandos de edição e
gravação das informações são iguais ao editor de texto vim.
635
Linux LPI - Administração
•• Host Aliases
•• User Aliases
•• Command Aliases
sudo <comando>
11.1.6. Comando last
O comando last realiza a leitura do arquivo binário /var/log/wtmp, que tem a função
de armazenar os eventos ocorridos em um processo de desligamento, reinicialização
e acesso ao sistema.
636
Segurança 11
11.1.7. Arquivos com permissões especiais
Através do comando find, podemos encontrar arquivos com Bit SUID ou SGID
habilitados em arquivos que não necessitam desse tipo de permissão, evitando assim,
falhas ou ataques.
Também é possível verificar arquivos que não possuem um dono ou grupo associado:
Há dois tipos de limites que são definidos para cada recurso, a saber:
•• Hard: Especificado pela opção –H, este limite é a expressão do valor máximo;
•• Soft: Especificado pela opção –S, este limite expressa o valor de alerta enquanto
o limite hard não tiver sido atingido.
Todos os recursos terão o mesmo limite caso nenhuma das opções mencionadas
(–S e –H) seja determinada.
637
Linux LPI - Administração
Opção Descrição
-a Com esta opção, os limites atuais são exibidos.
Com esta opção, é determinada a quantidade máxima de arquivos de
-f
uma sessão do shell.
Com esta opção, é expressa a quantidade máxima de processos a que
-u
o usuário tem acesso.
Esta opção refere-se à quantidade máxima de memória virtual que o
-v
shell pode utilizar.
638
Segurança 11
A limitação de recursos, também poderá ser configurada no arquivo /etc/security/
limits.conf.
11.3. Configuração do SSH
Neste tópico, abordaremos aspectos acerca do funcionamento do protocolo SSH,
da configuração de servidores SSH e da administração remota de computadores
utilizando o SSH.Para que o usuário possa compreender efetivamente o funcionamento
do SSH, também serão contempladas aqui considerações sobre os diferentes tipos de
criptografia utilizadas e suas particularidades, além das versões existentes para esse
protocolo e dos utilitários do cliente SSH.
11.3.1. SSH
No sistema operacional GNU/Linux, para que seja possível estabelecer uma
comunicação segura entre um cliente e um servidor, ou entre dois computadores,
utilizamos o Secure Shell (SSH), um conjunto de padrões e protocolo com base
criptografada por meio do qual o usuário faz a autenticação de um sistema remoto
ou de usuários. Além disso, o SSH permite realizar conexões X11, tunelamentos,
redirecionar portas e transferir arquivos.
Por meio do SSH é possível ter acesso aos aplicativos ssh, scp e sftp, os quais
substituem aplicações como telnet, rcp e o ftp.
11.3.2. Criptografia
A criptografia é uma técnica utilizada para proteger o acesso direto aos dados e
informações, em que um algoritmo de criptografia pode converter e proteger um
arquivo de texto puro por meio do uso de uma chave para um formato ilegível. Tal
chave é utilizada para criptografar e decriptografar dados.
•• Criptografia simétrica;
•• Criptografia assimétrica.
639
Linux LPI - Administração
11.3.2.1. Criptografia simétrica
No processo de criptografia simétrica, a chave é única, ou seja, a mesma chave
que é utilizada para criptografar as informações também é utilizada no processo
de decriptografia. Se tal chave secreta for descoberta, ou interceptada de maneira
indevida, todos os dados criptografados poderão estar comprometidos.
11.3.2.2. Criptografia assimétrica
Na criptografia assimétrica, são utilizadas duas chaves diferentes: uma chave privada
e uma chave pública. Nesse processo, todos os dados que forem criptografados
com a chave privada só poderão ser decriptografados pela chave pública, assim
como todos os dados que forem criptografados pela chave pública só poderão ser
decriptografados pela chave privada.
Logo, a chave pública poderá ser distribuída livremente, já que sem a utilização da
chave privada, que deverá ser guardada com sua devida segurança, ela se torna inútil.
A única desvantagem apresentada pelas chaves assimétricas é o tempo utilizado no
processo de criptografia e decriptografia, consideravelmente maior que o tempo do
processo de criptografia simétrico.
640
Segurança 11
Vejamos dois exemplos de criptografia assimétrica:
•• RSA: A chave assimétrica RSA (que deriva dos sobrenomes de seus criadores
Ronald Rivest, Adi Shamir e Leonard Adleman) é uma das chaves de criptografia
mais seguras, que utiliza o fundamento da teoria clássica dos números, a qual,
por meio de números primos, cria as chaves públicas e privadas utilizadas no
processo de criptografia. A RSA também permite a utilização de assinaturas
digitais.
11.3.3.1. Protocolo versão 1
O processo de conexão utilizando o protocolo SSH versão 1 é descrito na próxima
imagem:
641
Linux LPI - Administração
Nesse processo, as chaves públicas são enviadas ao cliente. Sobre os dois tipos de
chaves utilizadas nesse processo, temos:
3. O cliente verifica se a chave pública HK, enviada pelo servidor, está correta, por
meio dos arquivos /etc/ssh/ssh_know_hosts e ~/.ssh/know_hosts;
4. O cliente cria um valor randômico de 256 bits que é gerado de forma aleatória. Esse
valor é enviado em formato criptografado para o servidor, onde é usado como uma
chave de sessão que será utilizada para criptografar toda a comunicação;
11.3.3.2. Protocolo versão 2
A versão 2 do protocolo SSH é semelhante à versão 1. Porém, na versão 2, não há
a utilização de chaves de servidor (Server Key), as quais são substituídas por outro
método de gerenciamento de chaves, conhecido como Diffie-Hellman. O servidor se
utiliza de um par de chaves RSA ou DSA.
642
Segurança 11
Vejamos a ilustração a seguir:
643
Linux LPI - Administração
Além dos pacotes citados, há também o pacote openssl. A partir dele, são instaladas
as bibliotecas de criptografia utilizadas na comunicação entre os hosts.
11.3.5. Daemon do servidor
O servidor SSH é controlado pelo daemon /etc/init.d/sshd, que poderá ser manipulado
conforme seus parâmetros de gerenciamento. Tal daemon poderá ser personalizado
através do seu arquivo de configuração /etc/ssh/sshd_config. As principais opções
de configurações desse arquivo são:
Opção Descrição
Define a porta TCP na qual o servidor irá aceitar
Port
conexões. O padrão é 22.
Quantidade de bits utilizados na criptografia dos dados.
ServerKeyBits
O padrão é geralmente 768 bits.
644
Segurança 11
Opção Descrição
O tempo máximo (em segundos) que o servidor SSH irá
LoginGraceTime
aguardar a autenticação do usuário após sua conexão.
Habilita ou desabilita o login como usuário root no
PermitRootLogin
servidor.
Permite ou não a utilização de senhas em branco na
PermitEmptyPassword
autenticação dos usuários.
Lista dos usuários que têm permissão para se
autenticarem no servidor. A opção AllowGroups
AllowUsers
também pode ser utilizada para permitir a autenticação
por grupos.
Lista dos usuários que não têm permissão para se
autenticarem no servidor. A opção DenyGroups
DenyUsers
também pode ser utilizada para proibir a autenticação
por grupos.
Habilita o suporte à execução de aplicações gráficas a
X11Forwarding
partir do servidor SSH.
11.3.6. Utilitários do cliente
O cliente SSH possui alguns utilitários básicos, os quais serão apresentados a seguir.
11.3.6.1. ssh
A sintaxe desse utilitário é a seguinte:
Em que:
Opção Descrição
-1 Força o ssh a utilizar o protocolo de versão 1.
-2 Força o ssh a utilizar o protocolo de versão 2.
-p <porta> Indica uma porta específica para conexão no servidor ssh.
-q Modo silencioso, não exibe informações.
-X Permite executar aplicativos gráficos remotamente.
645
Linux LPI - Administração
Opção Descrição
-v Exibe informações detalhadas no processo de conexão.
-l Indica o nome do usuário que irá se conectar.
Arquivo Descrição
/etc/ssh/ssh_config Arquivo de configuração do cliente ssh.
Relação das chaves públicas enviadas pelos servidores
~/.ssh/know_hosts
ssh na primeira conexão.
Relação das chaves públicas utilizadas para login sem
~/.ssh/authorized_keys
senha ou com frase secreta.
No exemplo a seguir, com uma conexão com o usuário aluno no host com IP
especificado, foi possível iniciar uma conexão SSH. Porém, como é a primeira vez que
o host de origem inicia uma conexão com o servidor SSH, é preciso obter sua chave
pública de conexão, que será alocada no arquivo ~/.ssh/know_hosts:
11.3.6.2. scp
A ferramenta scp (secure copy) é utilizada para cópia remota de arquivos e diretórios
através de um canal criptografado. É possível utilizar o comando scp de duas maneiras:
copiando arquivos do host atual para um host remoto ou copiando arquivos de um
host remoto para o host atual.
646
Segurança 11
Para obter arquivos remotamente, utilizamos a seguinte sintaxe:
No próximo exemplo, o arquivo /etc/services foi enviado para o host remoto como
usuário aluno, indicando seu destino em /tmp:
Opção Descrição
-1 Força o scp a utilizar o protocolo de versão 1.
-2 Força o scp a utilizar o protocolo de versão 2.
-P <porta> Especifica uma porta para conexão com o host remoto.
-q Não exibe o medidor de progresso.
-r Cópia recursiva de diretórios.
-v Exibe informações detalhadas no processo de conexão.
647
Linux LPI - Administração
11.3.6.3. sftp
O sftp (secure file transfer program) tem seu funcionamento similar ao FTP padrão.
O sftp utiliza o protocolo SSH para realizar a transferência de arquivos, ou seja, os
arquivos são criptografados antes de serem enviados.
No exemplo a seguir, uma conexão SFTP foi iniciada no host especificado como usuário
aluno. Após o estabelecimento da conexão, os comandos básicos FTP funcionam
perfeitamente na utilização do serviço sftp. É feita uma cópia de um arquivo com o
comando get e, logo após, a finalização da conexão com o comando bye:
Para criação e envio da chave pública, o processo começa com a criação do par de
chaves com o comando ssh-keygen, no host que será utilizado para estabelecer a
comunicação com o servidor SSH. Este comando, quando utilizado com a opção –t,
pode indicar o tipo da chave (DSA ou RSA) utilizada no processo de criptografia. A
opção -b é utilizada para especificar o tamanho da chave, que pode ter um tamanho
de 1024 bits.
648
Segurança 11
O exemplo a seguir cria o par de chaves RSA com 1024 bits. Durante o processo
de criação do par de chaves, é possível fazer algumas alterações. Primeiramente,
é solicitada a localização e nome da chave privada (poderá ser alterado, caso
necessário). Logo em seguida, é possível criar uma frase secreta que será utilizada
em toda conexão.
Assim que o par de chaves for criado, é preciso enviar a chave pública ao servidor SSH
que estabelecerá a conexão através do processo de autenticação por chave. A chave
ficará armazenada no arquivo ~/.ssh/authorized_keys do usuário que utilizará tal
mecanismo de autenticação. Vejamos um exemplo de envio de chave:
Nesse exemplo, a chave pública id_rsa.pub foi enviada ao host especificado, ficando
armazenada no diretório pessoal do usuário aluno em .ssh/authorized_keys. Assim,
todo processo de autenticação do usuário aluno (que se encontra no host em que o
par de chaves foi criado) no host em que a chave pública foi enviada e armazenada
será feito através de chaves.
649
Linux LPI - Administração
Pontos principais
Atente para os tópicos a seguir. Eles devem ser estudados com muita atenção,
pois representam os pontos mais importantes do capítulo.
•• O comando ulimit, utilizado em uma sessão bash, impõe restrições que dizem
respeito à quantidade de processos, uso de memória e criação de arquivos,
evitando problemas causados pelo uso excessivo de recursos do computador;
Material complementar
Sites Endereços
https://www.centos.org/docs/5/html/Deployment_Guide-en-
TCP wrapper
US/ch-tcpwrappers.html
SSH https://wiki.centos.org/HowTos/Network/SecuringSSH
650
Mapa mental para a fixação do aprendizado 11
651
11 Segurança
☐☐ a) tcp
☐☐ b) tcpdump
☐☐ c) tcpd
☐☐ d) tcptraceroute
☐☐ e) tcpdmatch
☐☐ a) %H
☐☐ b) %s
☐☐ c) %d
☐☐ d) %S
☐☐ e) %h
4. Qual opção deve ser utilizada para especificar a placa de rede a ser
monitorada pelo tcpdump?
☐☐ a) –r
☐☐ b) –A
☐☐ c) –i
☐☐ d) –w
☐☐ e) –n
5. Qual filtro pode ser utilizado para ver apenas pacotes vindos do host X?
☐☐ a) dst host
☐☐ b) src host
☐☐ c) net host
☐☐ d) ip proto
☐☐ e) not host
654
Segurança 11
6. Sobre a criptografia simétrica, qual das alternativas a seguir é falsa?
☐☐ a) Proteger o documento.
☐☐ b) Ser distribuída livremente, já que é necessária a chave privada para
decriptografar.
☐☐ c) Abrir a segurança da criptografia, pois esta chave é facilmente
encontrada.
☐☐ d) Apenas decriptografar os dados.
☐☐ e) Apenas criptografar os dados.
☐☐ a) openssh-client
☐☐ b) client-ssh
☐☐ c) openssl-client
☐☐ d) client-ssl
☐☐ e) opensshssl-client
☐☐ a) /etc/ssh
☐☐ b) /etc/init.d/ssh
☐☐ c) /etc/init.d/ssh-init
☐☐ d) /etc/sshd
☐☐ e) /etc/init/sshd
☐☐ a) /etc/ssh_config
☐☐ b) /etc/ssh/sshd_config
☐☐ c) /etc/ssh/ssh_config
☐☐ d) /etc/sshd_config
☐☐ e) /etc/init.d/sshd_conf
655
11 Segurança
Mãos à obra!
Linux LPI - Administração
2. Libere todos os hosts, exceto um específico. Para isso, edite o arquivo hosts.deny;
# vi /etc/hosts.deny
sshd: 192.168.0.X
4. Salve e saia;
:wq
658
Segurança 11
6. Vá até a máquina de outro aluno e tente conectar via SSH no seu computador;
7. Agora, faça o contrário: bloqueie todos e libere apenas o host do outro aluno. Para
isso, edite novamente o arquivo hosts.deny;
# vi /etc/hosts.deny
8. Adicione a seguinte regra, que bloqueará todos exceto o host do outro aluno:
9. Salve e saia;
:wq
11. Faça o teste da máquina do outro aluno e, depois, escolha uma máquina qualquer
na sala de aula e tente conectar.
13. Monitore as atividades da placa de rede, sendo a origem dos pacotes o computa-
dor do outro aluno (troque o X pelo endereço IP do outro aluno);
14. Agora, monitore as atividades da placa de rede, de forma que sejam vistos apenas
os pacotes destinados ao computador do outro aluno;
659
Linux LPI - Administração
Laboratório 4 – Personalizando as
configurações do servidor SSH
20. Abra o arquivo de configuração do servidor SSH;
# vi /etc/ssh/sshd_config
Para:
:wq
23. Antes de reiniciar o serviço SSH, limpe as regras de firewall e desabilite o SELinux.
Nesse caso, o servidor deverá ser reiniciado:
•• Desabilite o SELinux:
# vim /etc/selinux/config
SELINUX=disable
# systemctl reboot
# iptables -F
660
Segurança 11
25. De volta ao seu computador, edite novamente o arquivo sshd_config;
# vi /etc/ssh/sshd_config
26. Não permita mais que o usuário root conecte via SSH. Altere a seguinte linha:
PermitRootLogin yes
Para:
PermitRootLogin no
:wq
# /etc/init.d/ssh restart
30. Se não obtiver sucesso (o que é esperado), tente com o usuário aluno.
661
Linux LPI - Administração
# ls /tmp/*.conf
# ls -l /tmp/messages
# cd /tmp
sftp> cd /etc
sftp> bye
# ls -l hosts.allow
662
Segurança 11
Laboratório 7 – Autenticando através de
chave de criptografia
42. Considerando que o seu computador será o cliente da conexão SSH, crie as chaves
de conexão;
44. Insira a senha duas vezes (pode-se definir uma senha ou, se desejar experimentar,
deixá-la em branco; basta pressionar ENTER);
# cd /root/.ssh
46. Envie a chave pública para o servidor SSH (máquina do outro aluno);
663
Referências bibliográficas
Livros
TechnoEdition Editora (Org); DOMINGOS, Cesar Augusto. Linux LPI - Módulo I. 1. ed.
São Paulo: TechnoEdition Editora Ltda., 2013. 554 p.
TechnoEdition Editora (Org); DOMINGOS, Cesar Augusto. Linux LPI - Módulo II. 1. ed.
São Paulo: TechnoEdition Editora Ltda., 2013. 444 p.
664