apostila lpi 101

88
Guia de Estudo LPIC – 101 por Luciano Antonio Siqueira Lançado sob os termos da Gnu Free Documentation License

Upload: fernandu00

Post on 28-Dec-2015

609 views

Category:

Documents


233 download

TRANSCRIPT

Page 1: Apostila LPI 101

Guia de Estudo

LPIC – 101por Luciano Antonio Siqueira

Lançado sob os termos daGnu Free Documentation License

Page 2: Apostila LPI 101

ÍndiceIntrodução.............................................................................................................................................5

Porque este documento foi escrito?............................................................................................5À Quem se Destina.....................................................................................................................5Versão Atualizada do Guia.........................................................................................................5Contribuições..............................................................................................................................5Informações de Copyright...........................................................................................................5Pré-requisitos..............................................................................................................................6Convenções usadas neste documento.........................................................................................6

Tópico 101: Hardware e Arquitetura....................................................................................................7Objetivo 1.101.1: Configuração de Atributos Fundamentais de BIOS ..........................................7

Recursos de Hardware................................................................................................................7Comandos para inspecionar dispositivos....................................................................................8

Objetivo 1.101.3: Configuração de Modems e Placas de som........................................................9Modems.......................................................................................................................................9Placas de Som...........................................................................................................................10

Objetivo 1.101.4: Configuração de Dispositivos não IDE............................................................11Dispositivos SCSI (scuzzy).......................................................................................................11

Objetivo 1.101.5: Configuração de Placas de Expansão Diversas................................................12Objetivo 1.101.6: Configuração de Dispositivos de Comunicação...............................................12

ISDN.........................................................................................................................................12DSL...........................................................................................................................................13

Objetivo 1.101.7: Configuração de Dispositivos USB..................................................................13Tópico 102: Instalação do GNU/Linux e Administração de Pacotes.................................................15

Objetivo 1.102.1: Criação de Esquemas de Partições de Disco....................................................15A Partição Swap........................................................................................................................16

Objetivo 1.101.2: O Gerenciador de Boot.....................................................................................16LILO..........................................................................................................................................16GRUB........................................................................................................................................18Dispositivos de Boot Alternativos............................................................................................18

Objetivo 1.102.3: Compilar e Instalar Programas a partir do Código Fonte.................................19Compressão e Descompressão de Arquivos.............................................................................19Compilar e Instalar Programas..................................................................................................20

Objetivo 1.102.4: Bibliotecas Compartilhadas..............................................................................21Objetivo 1.102.5: Administração de Pacotes Debian (.deb)..........................................................21Objetivo 1.102.6: Administração de Pacotes RedHat (.rpm)........................................................21

Modos Maior e Menor..............................................................................................................21Assinaturas de Pacotes..............................................................................................................22Integridade do Pacote................................................................................................................23Arquivos e Diretórios Pertinentes ao rpm.................................................................................23Exemplos de uso do rpm...........................................................................................................23

Tópico 103: Comandos GNU e Unix ................................................................................................25Objetivo 1.103.3: Trabalhando na Linha de Comando..................................................................25

Variáveis...................................................................................................................................25Variáveis pré-definidas.............................................................................................................26Variáveis especiais....................................................................................................................27Histórico de comandos..............................................................................................................27Comandos Seqüenciais.............................................................................................................28Auto-Completar Comandos e Caminhos..................................................................................28

Objetivo 1.103.2: Processar Fluxos de Texto Através de Filtros..................................................28Objetivo 1.103.3: Gerenciamento Básico de Arquivos.................................................................33

Diretórios e Arquivos................................................................................................................33Encontrando Arquivos com o Comando find...........................................................................34

Page 3: Apostila LPI 101

Caracteres Coringa (file globbing)............................................................................................35Objetivo 1.103.4: Fluxos, Canalização e Redirecionamentos de Saída.........................................36

Redirecionamento.....................................................................................................................36Canalização...............................................................................................................................37

Objetivo 1.103.5: Criar, Monitorar e Finalizar Processos.............................................................38Tarefas em Primeiro e Segundo Plano......................................................................................39

Objetivo 1.103.6: Modificar a Prioridade de Execução de um Processo......................................40Objetivo 1.103.7: Procurar em Arquivos de Texto Usando Expressões Regulares......................40

Expressões Regulares e grep.....................................................................................................40sed.............................................................................................................................................41

Objetivo 1.103.8: Edição Básica de Arquivos com o vi................................................................42Tópico 104: Dispositivos, Sistemas de Arquivos GNU/Linux e Padrão FHS...................................45

Objetivo 1.104.1:Criação de Partições e Sistemas de Arquivos....................................................45fdisk...........................................................................................................................................45Criação de Sistemas de Arquivos..............................................................................................46Partição Swap............................................................................................................................46

Objetivo 1.104.2: Manutenção da Integridade de Sistemas de Arquivos......................................47Checando o Sistema de Arquivos.............................................................................................47Examinando e corrigindo o Sistema de Arquivos.....................................................................47Uso do Disco.............................................................................................................................47

Objetivo 1.104.3: Controle da Montagem e Desmontagem dos Sistemas de Arquivos................48/etc/fstab....................................................................................................................................48mount........................................................................................................................................48Opções de montagem................................................................................................................48

Objetivo 1.104.4: Administração de Cotas de Disco.....................................................................49Objetivo 1.104.5: Controle de Permissões e Acesso à Arquivos...................................................50

Permissões Octais.....................................................................................................................51umask........................................................................................................................................51suid e sgid..................................................................................................................................52A Permissão sticky....................................................................................................................52Permissões Especiais em Formato Octal..................................................................................53Atributos chattr.........................................................................................................................53Listas de Controle de Acesso – ACL........................................................................................54

Objetivo 1.104.6: Modificar Donos e Grupos de Arquivos...........................................................54Objetivo 1.104.7: Criar e Alterar Links Simbólicos e Links Físicos.............................................55

Hardlinks (Links Físicos)..........................................................................................................55Softlinks (Links Simbólicos)....................................................................................................55

Objetivo 1.104.8: Encontrar Arquivos de Sistema e Conhecer sua Localização Correta.............56Hierarquia Padrão de Sistemas de Arquivos (FHS)..................................................................56Encontrando Arquivos..............................................................................................................57

Tópico 110: O Sistema de Janelas X..................................................................................................59Objetivo 1.110.1: Instalar e Configurar o X11R6.........................................................................59

Compatibilidade de Hardware..................................................................................................59Instalando o X11R6..................................................................................................................59Configurando o X11R6.............................................................................................................59Ajustes da Configuração...........................................................................................................60Seções de XF86Config e xorg.conf..........................................................................................60Fontes........................................................................................................................................62Instalar fontes Xft......................................................................................................................62Instalar fontes Core...................................................................................................................62Servidor de Fontes xfs...............................................................................................................63

Objetivo 1.110.2: Configurar o Gerenciador de Display...............................................................63xdm............................................................................................................................................64gdm............................................................................................................................................65

Page 4: Apostila LPI 101

kdm............................................................................................................................................65Objetivo 1.110.4: Instalar e Personalizar um Ambiente de Gerenciador de Janelas.....................65

Menus........................................................................................................................................65Emulador de Terminal..............................................................................................................66Comportamento de Teclado e Mouse.......................................................................................66Bibliotecas Adicionais de Aplicativos......................................................................................67DISPLAY Remoto....................................................................................................................67

Apêndice 1..........................................................................................................................................69Objetivos detalhados para o exame 101........................................................................................69Exam 101: Detailed Objectives.....................................................................................................69

Topic 101: Hardware & Architecture.......................................................................................69Topic 102: Linux Installation & Package Management...........................................................71Topic: 103 GNU & Unix Commands.......................................................................................74Topic 104: Devices, Linux Filesystems, Filesystem Hierarchy Standard................................77Topic 110: The X Window System...........................................................................................80

Apêndice 2..........................................................................................................................................83GNU Free Documentation License................................................................................................83

Page 5: Apostila LPI 101

Introdução

Porque este documento foi escrito?

Este material foi escrito quando da minha própria preparação para os exames da certificação LPI nível 1. Depois de terminado, considerei que poderia ser útil para outras pessoas que buscam a certificação e sentem falta de material específico em português. O exame para obtenção do certificado é dividido em duas provas, 101 e 102. Este volume é específico para a prova 101 e foi escrito tendo como referência os objetivos detalhados para prova 101 fornecidos pelo próprio LPI. A lista dos objetivos detalhados para o exame 101 pode ser conferida no primeiro apêndice do presente volume. Mais informações sobre o LPI e suas certificações em http://www.lpi.org/.

Todo material contido neste guia foi basicamente retirado de HOWTOs, páginas de manual de programas e demais documentos disponíveis através do Linux Documentation Project. Outra importante fonte foi o livro Linux System Administration 1, lançado pelo LinuxIT, disponível em http://savannah.nongnu.org/projects/lpi-manuals/.

À Quem se Destina

O presente material destina-se à todos que desejam obter a certificação Linux LPI nível 1. No entanto, o guia também poderá ser útil a quem não pretende obter a certificação, mas interessa-se em aprofundar seus conhecimentos em administração de sistemas GNU/Linux.

Versão Atualizada do Guia

Versões atualizadas deste guia podem ser obtidas em http://lcnsqr.byethost15.com/.

Contribuições

Todos leitores são convidados a contribuir para o guia. Sugestões para aprofundar os tópicos e exercícios para cada objetivo serão muito bem vindos.

Caso identifique informações incorretas, erros de ortografia ou outros equívocos, informe o autor:

<lcnsqr em yahoo·com·br >

Informações de Copyright Copyright (c) Luciano Antonio Siqueira. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

Leia The GNU Manifesto se você quiser saber porquê essa licença foi escolhida para esse material.

O guia foi escrito com todo esforço para garantir a confiabilidade das informações contidas. No entanto, as informações aqui contidas são oferecidas sem qualquer garantia, expressa ou implícita. O responsável pelo material aqui apresentado não se responsabiliza por possíveis danos causados ou alegação do gênero em relação à este livro. Tampouco a leitura deste guia é garantia de sucesso na obtenção da certificação LPI nível 1.

5

Page 6: Apostila LPI 101

Introdução

Os logotipos, marcas registradas e símbolos usados neste livro são de propriedade de seus respectivos proprietários.

Pré-requisitos

Para melhor utilização deste guia, presume-se que o leitor já esteja familiarizado com o sistema GNU/Linux. Portanto, os assuntos são abordados de maneira direta, com objetivo de serem apenas referência rápida para posterior estudo e exercício mais aprofundados. O material foi escrito e testado num computador rodando Linux Slackware 10.2.

Convenções usadas neste documento

Comandos, opções de comandos, caminhos para arquivos/diretórios, saídas de programas e informações tiradas de telas de terminal em geral são apresentados com fonte de tamanho fixo:

Exemplo de tabela de rotas mostradas com o comando route:

Kernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface200.228.60.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo0.0.0.0 200.228.60.1 0.0.0.0 UG 0 0 0 eth0

Argumentos de comandos são geralmente mostrados em itálico, significando que devem ser substituídos por valor apropriado:

shutdown [opção] horário [mensagem]

Também são mostrados em itálico nomes e termos específicos ao tema:

“Projetos GNU geralmente incluem documentações como FAQ, Readme, ChangeLog e Guia de usuário/administrador. Podem estar no formato ASCII, HTML, LateX ou postscript. Estes arquivos podem ser encontrados em /usr/share/doc, em diretórios correspondentes aos programas.”

Termos em negrito são usados quando introduzidos ou muito relevantes para o assunto:

“Uma conta de usuário pode ser apagada com o comando userdel. A opção -r assegura que o diretório pessoal do usuário também seja apagado.”

6

Page 7: Apostila LPI 101

Tópico 101: Hardware e Arquitetura

Objetivo 1.101.1: Configuração de Atributos Fundamentais de BIOS Peso: 1

Recursos de Hardware

O hardware básico do sistema é configurado através do utilitário de configuração de BIOS, que pode ser acessado no início do boot da máquina. Através deste utilitário, é possível liberar e bloquear periféricos integrados, ativar proteção básica contra erros (proteção básica contra vírus e S.M.A.R.T.) e configurar endereços I/O, IRQ e DMA.

✔ IRQ: Requisição de Interrupção do dispositivo para a CPU, que interrompe a atividade em andamento e processa a instrução enviada pelo dispositivo.

✔ I/O: Endereço específico no mapa de memória do sistema. A CPU irá se comunicar com o dispositivo lendo e escrevendo neste endereço.

✔ DMA: Canal que permite à certos dispositivos acesso direto à memória sem intermédio da CPU.

Recursos padrão utilizados por dispositivos comuns:

Dispositivo Porta I/O IRQ

/dev/ttyS0 0x03f8 4

/dev/ttyS1 0x02f8 3

/dev/ttyS2 0x03e8 4

/dev/ttyS3 0x02e8 3

/dev/lp0 0x378 7

/dev/lp1 0x278 5

Placa de Som 0x220 -

É comum que algumas máquinas, como servidores dedicados, sejam acessados apenas remotamente e não tenham um teclado conectado. Em caso de algum problema que faça a máquina desligar, como interrupção no fornecimento de energia, é importante que a máquina reinicie e volte a operar normalmente. Alguns BIOS procuram por um teclado e interrompem o boot caso não o encontrem. Para esse tipo de máquina sem teclado, é imprescindível que o BIOS esteja configurado para não checar por teclado durante o boot.

O kernel do Linux armazena informações sobre recursos de dispositivos no diretório /proc, nos arquivos:

✔ /proc/dma

✔ /proc/interrupts

✔ /proc/ioports

✔ /proc/pci

7

Page 8: Apostila LPI 101

Tópico 101: Hardware e Arquitetura

Trecho exemplo de /proc/ioports:

0000-001f : dma10020-0021 : pic10040-0043 : timer00050-0053 : timer10060-006f : keyboard0070-0077 : rtc0080-008f : dma page reg00a0-00a1 : pic200c0-00df : dma200f0-00ff : fpu0170-0177 : ide101f0-01f7 : ide00376-0376 : ide10378-037a : parport003c0-03df : vesafb03f6-03f6 : ide003f8-03ff : serial(...)

Comandos para inspecionar dispositivos

lspci

Lista informações de chipset dos componentes PCI. Com a opção -v lista I/O e IRQ dos dispositivos.

Exemplo de lspci:

# lspci -v(...)00:0f.1 Communication controller: C-Media Electronics Inc CM8738 (rev 10) Subsystem: C-Media Electronics Inc CM8738 Flags: medium devsel, IRQ 9 I/O ports at dc80 [size=64] Capabilities: [40] Power Management version 2

01:00.0 VGA compatible controller: Silicon Integrated Systems [SiS] 630/730 PCI/AGP VGA Display Adapter (rev 20) (prog-if 00 [VGA]) Subsystem: Silicon Integrated Systems [SiS] 630/730 PCI/AGP VGA Display Adapter Flags: 66Mhz, medium devsel BIST result: 00 Memory at e0000000 (32-bit, prefetchable) [size=128M] Memory at efee0000 (32-bit, non-prefetchable) [size=128K] I/O ports at cc80 [size=128] Expansion ROM at <unassigned> [disabled] Capabilities: [40] Power Management version 1 Capabilities: [50] AGP version 2.0

Dmesg

Mostra as mensagens do kernel, da identificação do hardware em diante. Essa informação está disponível em /var/log/dmesg e /var/log/messages.

Exemplo de dmesg:

8

Page 9: Apostila LPI 101

Tópico 101: Hardware e Arquitetura

# dmesg(...)ttyS0 at I/O 0x3f8 (irq = 4) is a 16550Aparport0: PC-style at 0x378 (0x778) [PCSPP(,...)]parport0: irq 7 detectedlp0: using parport0 (polling).io scheduler noop registeredio scheduler anticipatory registeredio scheduler deadline registeredio scheduler cfq registeredFloppy drive(s): fd0 is 1.44M(...)

Objetivo 1.101.3: Configuração de Modems e Placas de somPeso: 1

Modems

Para utilizar um modem externo, tudo que precisa ser considerado é a porta serial a qual ele está conectado. Se o modem for PCI interno, precisar-se-á saber qual é a porta I/O e a interrupção utilizadas pelo mesmo. Isso pode ser conseguido com o comando lspci -v.

Para configurar a porta serial do modem interno, usa-se o comando setserial. Para checar se uma porta serial está em uso, usa-se setserial -g dispositivo.

Checando portas serias com setserial:

# setserial -g /dev/ttyS[0123]/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4/dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3

No caso do exemplo, apenas a primeira porta serial (/dev/ttyS0) está em uso. Às demais podem ser atribuídos os valores de recursos do modem conseguidos através do comando lspci -v.

Por exemplo, se os valores relativos ao modem forem I/O 0xdc80 e IRQ 9 pode-se atribuir esses valores à porta /dev/ttyS3, que está livre:

# setserial /dev/ttyS3 port 0xdc80 irq 9 autoconfig

e cria-se um link simbólico /dev/modem para /dev/ttyS3:

# ln -s /dev/ttyS3 /dev/modem

O comando setserial também é usado para controlar a velocidade da porta serial.

Usar /dev/ttyS3 a 115kb:

# setserial /dev/ttyS3 spd_vhi

Argumentos setserial de velocidade:

spd_hi

56kb quando solicitado for 38.4

spd_vhi

9

Page 10: Apostila LPI 101

Tópico 101: Hardware e Arquitetura

115kb quando solicitado for 38.4

spd_shi

230kb quando solicitado for 38.4

spd_warp

460kb quando solicitado for 38.4

spd_cust

Usar um divisor diferente quando solicitado for 38.4. A velocidade será o valor do argumento baud_base dividido pelo valor do argumento divisor.

spd_normal

38.4kb quando solicitado for 38.4

A configuração do modem para fazer ligações dial-up pode ser feita através do utilitário wvdial ou do minicom.

O script wvdialconf busca por um modem nas portas seriais e USB automaticamente e gera o arquivo /etc/wvdial.conf. Editando este arquivo com as informações sobre o provedor de internet, a ligação é feita com o wvdial:

# wvdial <nome do provedor>

No minicom, os processos de configuração, discagem e autenticação são feitos manualmente, na janela do terminal do programa. Para configurar o modem, o minicom deve ser iniciado no modo de configuração:# minicom -s

Diferente do wvdial, o minicom não executa o pppd automaticamente, cabendo ao usuário fazê-lo para criar a interface de rede e à ela um número IP. Esses procedimentos serão abordados mais profundamente no no tópico 112 do exame 102, objetivo 1.112.4: Configurar o GNU/Linux com um cliente PPP.

Se não foi possível a comunicação com o modem através desses procedimentos e o modem está devidamente conectado à máquina, muito provavelmente trata-se de um winmodem. Winmodems são dispositivos dependentes de software adicional muitas vezes desenvolvido exclusivamente para plataforma MS-Windows®. Dessa forma, se esse software específico não estiver disponível também para GNU/Linux, o modem não funcionará.

Placas de Som

Há dois tipos principais de suporte a placas de som no GNU/Linux, OSS (Open Sound System) e ALSA (Advanced Linux Sound Architeture).

Para encontrar o dispositivo de som:

# lspci | grep -i audio00:0f.0 Multimedia audio controller: C-Media Electronics Inc CM8738 (rev 10)

Caso o dispositivo não pôde ser encontrado dessa forma, toda a saída de dmesg e lspci pode ser consultada para procurar o dispositivo correspondente ao áudio.

Identificada a placa, é possível carregar o módulo correspondente, seja ele OSS ou ALSA. A entrada em /etc/modules.conf referente ao primeiro dispositivo de áudio encontrado é

10

Page 11: Apostila LPI 101

Tópico 101: Hardware e Arquitetura

sound-slot-0. Para carregar automaticamente a placa através do /etc/modules.conf, adicione neste arquivo a linhaalias sound-slot-0 <nome do módulo>

Informações mais aprofundadas sobre a instalação e carregamento de módulos do kernel serão abordadas no tópico 105 do exame 102: Kernel.

Objetivo 1.101.4: Configuração de Dispositivos não IDEPeso: 1

Dispositivos SCSI (scuzzy)

Há dois tipos de dispositivos SCSI:

✔ 8 bit: 8 dispositivos incluindo o controlador.

✔ 16 bit: 16 dispositivos incluindo o controlador.

Dispositivos SCSI são identificados através de um conjunto de três números chamado SCSI_ID:

1. O Canal SCSI. Cada adaptador SCSI suporta um canal de dados no qual são anexados os dispositivos SCSI. São numerados a partir de zero.

2. O ID do dispositivo. A cada dispositivo é atribuído um número ID único alterável através de jumpers. A gama de IDs vai de 0 a 7 em controladores de 8 bit e de 0 a 15 em controladores de 16 bit. O ID do controlador costuma ser 7.

3. O número lógico da unidade (LUN). É usado para determinar diferentes dispositivos dentro de um mesmo alvo SCSI. Pode indicar uma partição em um disco ou um dispositivo de fita específico em um dispositivo multi-fita. Hoje não é muito utilizado pois adaptadores SCSI estão mais baratos e podem comportar mais alvos por barramento.

Todos dispositivos SCSI são listados em /proc/scsi/scsi:

# cat /proc/scsi/scsiAttached devices:Host: scsi1 Channel: 00 Id: 00 Lun: 00 Vendor: HL-DT-ST Model: RW/DVD GCC-4521B Rev: 1.00 Type: CD-ROM ANSI SCSI revision: 02

O comando scsi_info usa as informações deste arquivo para mostrar o SCSI_ID e o modelo do dispositivo solicitado:# scsi_info /dev/scd0 SCSI_ID="0,0,0"HOST="1"MODEL="HL-DT-ST RW/DVD GCC-4521B"FW_REV="1.00"

Por padrão, o dispositivo SCSI de boot é o de ID 0, o que pode ser alterado na BIOS SCSI. Se existirem tanto dispositivos SCSI quanto IDE, a ordem do boot precisa ser especificada na BIOS da máquina.

11

Page 12: Apostila LPI 101

Tópico 101: Hardware e Arquitetura

Objetivo 1.101.5: Configuração de Placas de Expansão DiversasPeso: 3

A configuração de placas de expansão diversas engloba os aspectos abordados nos objetivos anteriores, mais um conhecimento mais sólido sobre coldplug, hotplug e inspeção de hardware.

Em linhas gerais, coldplug significa a impossibilidade de se conectar dispositivo sem a necessidade de desligar a máquina. Exemplos de dispositivos coldplug são placas PCI, ISA e dispositivos IDE. Na maioria dos computadores, CPU e pentes de memória são coldplug. Porém, alguns servidores de alta performance suportam hotplug para esses componentes.

Hotplug é o sistema que permite conectar novos dispositivos à máquina em funcionamento e usá-los imediatamente, como no caso de dispositivos USB. O sistema Hotplug foi incorporado ao núcleo do modelo de driver do kernel 2.6, assim qualquer barramento ou classe pode disparar eventos hotplug quando um dispositivo é conectado ou desconectado. Assim que um dispositivo é conectado ou desconectado, o hotplug dispara um evento correspondente, geralmente trabalhando junto do sub-sistema udev, que atualiza os os arquivos de dispositivos em /dev.

O hotplug precisa estar liberado no kernel, através da opção CONFIG_HOTPLUG. Dessa forma, haverá o arquivo /proc/sys/kernel/hotplug contendo o caminho para o programa hotplug (normalmente em /sbin/hotplug). A ação tomada pelo hotplug dependerá do nome do agente passado pelo kernel (nomes de agentes podem ser “usb”, “pci”, “net”, etc.). Para cada agente existe um script correspondente em /etc/hoplug/, que se encarrega de configurar corretamente o dispositivo no sistema.

Mesmo alguns dispositivos coldplug são configurados pelo sistema hotplug. Na hora do boot, o script /etc/init.d/hotplug (ou /etc/rc.d/rc.hotplug no slackware) dispara os agentes em /etc/hotplug/ para configurar aqueles dispositivos presentes antes da máquina ser ligada.

Objetivo 1.101.6: Configuração de Dispositivos de ComunicaçãoPeso: 1

ISDN

Há várias maneiras de se usar ISDN no GNU/Linux. A mais simples é empregar um dispositivo ISDN externo que disca, autentica e abre a sessão sozinho, disponibilizando a conexão pela interface ethernet. Se o computador está ligado diretamente à conexão ISDN, é necessário um dispositivo chamado Terminal Adapter (TA).

Em TAs conectados à porta serial e em alguns dispositivos USB, aparecerá uma interface de comandos AT exatamente como se o TA fosse um modem. É simples porém pouco eficiente.

Outra maneira mais eficiente de usar uma linha ISDN é usar um adaptador (PCI, ISA, PCCARD) conectado diretamente ao barramento da máquina. O utilitário isdn4linux incorpora muitos dos percalços de uma conexão ISDN e a estabelece com se fosse uma interface de rede convencional.

12

Page 13: Apostila LPI 101

Tópico 101: Hardware e Arquitetura

DSL

Como na conexão ISDN, o mais simples é que um dispositivo DSL externo estabeleça a conexão e aja como um roteador para a máquina. Se você possui um modem DSL e seu provedor usa PPPoE (Point to Point Protocol over Ethernet) você precisará de um cliente PPPoE. Neste caso, a ferramenta de conexão para DSL é o pppoe.

Objetivo 1.101.7: Configuração de Dispositivos USBPeso: 1

Dispositivos para interface USB (Universal Serial Bus) são divididos em classes:

✔ Display Devices

✔ Communication Devices

✔ Audio Devices

✔ Mass Storage Devices

✔ Human Interface Devices (HID)

A porta USB é operada por um controlador (Host Controller):

✔ OHCI (compaq)

✔ UHCI (intel)

✔ EHCI (USB v2.0)

Uma vez conectados, os dispositivos USB podem ser inspecionados com o comando lsusb.

# lsusb Bus 002 Device 003: ID 05a9:a511 OmniVision Technologies, Inc. OV511+ WebCamBus 002 Device 002: ID 0f2d:9308 ViPower, Inc. Bus 002 Device 001: ID 0000:0000 Bus 001 Device 001: ID 0000:0000

As informações detalhadas sobre os dispositivos USB conectadas são armazenadas no arquivo /proc/bus/usb/devices.

O controle dos dispositivos USB é feito pelo hotplug. Etapas executadas quando uma câmera USB é conectada ao computador:

1. Os módulos USB do kernel identificam o evento USB e a ID vendor:product

2. Esses dados são passados para /sbin/hotplug (ou outro, se o indicado em /proc/sys/kernel/hotplug não for o padrão)

3. O agente USB respectivo (/etc/hotplug/usb.agent) associa o dispositivo ao produto correspondente. A relação entre dispositivo e módulo consta no arquivo /etc/hotplug/usb.distmap.

O primeiro estágio envolve procedimentos do kernel, enquanto o segundo e terceiro estágio envolvem o mecanismo do hotplug. O mapa USB correto precisa estar disponível para iniciar corretamente o dispositivo.

13

Page 14: Apostila LPI 101

Tópico 102: Instalação do GNU/Linux e Administração de Pacotes

Objetivo 1.102.1: Criação de Esquemas de Partições de DiscoPeso: 5

Para acessar recursos em disco o sistema utiliza um mecanismo chamado montagem. Em sistemas UNIX, significa anexar um disco a um diretório, chamado ponto de montagem. Para o usuário, os recursos aparecem como uma árvore de diretórios e subdiretórios.

A raiz da árvore de diretórios é representada por uma barra “ / ”. É necessariamente o primeiro diretório a ter um dispositivo anexado. Depois de montada a raiz, os diretórios contidos neste dispositivo poderão ser pontos de montagem para outros dispositivos.

Processo de montagem:

1. O carregador de boot carrega o kernel e transmite as informações sobre a localização do dispositivo raiz.

2. Os demais dispositivos são montados conforme as instruções encontradas em /etc/fstab.

Etapas da criação do layout de disco:

✔ Criar partições de tamanho específico

✔ Escolher o sistema de arquivos

✔ Determinar um ponto de montagem para cada partição

Duas partições é o mínimo exigido em sistemas GNU/Linux, uma que será a raiz “ / ” e outra que será a partição de troca swap. Muitas vezes, pode haver um terceira partição pequena, no início do disco, apenas para armazenar o kernel e o carregador de boot secundário. Fora essas, não há regras inflexíveis quanto à criação de partições, devendo ser avaliado o melhor esquema para a função que o sistema desempenhará.

A partição raiz deve ser do tipo Linux Native, cujo código é 83 (0x83). Tudo no sistema poderá existir diretamente no dispositivo raiz. No entanto, certos tipos de arquivos são processados de formas bem distintas de outros arquivos. Em certos casos, é interessante criar uma partição distinta para certo diretório, principalmente em servidores que são muito exigidos. Essa estratégia também impede que os dados no disco se fragmentem muito.

Outra questão é o backup. Enquanto certos arquivos não necessitam de backup, outros exigem-no. Mesmo dentre os quais é realizado o backup, alguns são pouco alterados durante um determinado período enquanto que outros são constantemente alterados ou criados. A criação de partições diferentes para cada diretório que comporte um tipo distinto de arquivos facilita as operações de criação e recuperação de backup.

Sugestões de diretórios que podem estar em outros dispositivos/partições:

/var

Este diretório contém os as filas de email e impressão, que são muito manipuladas. Há também os arquivos de log, cujo conteúdo está em constante alteração e crescimento.

/usr

15

Page 15: Apostila LPI 101

Tópico 102: Instalação do GNU/Linux e Administração de Pacotes

Programas, códigos fonte e documentação. O ciclo de alteração desses arquivos é longo.

/tmp

Espaço temporário utilizado por programas. Uma partição distinta para /tmp impedirá que dados temporários ocupem todo o espaço no diretório raiz, causando travamento do sistema. Não necessita de backup.

/home

Diretórios pessoais do usuário. Uma partição distinta ajuda a limitar o espaço disponível para usuários comuns.

/boot

Ponto de montagem para a partição do kernel e do carregador de boot. Necessário apenas caso o sistema exija que o kernel esteja antes do cilindro 1024 do disco.

A Partição Swap

Uma partição é swap é identificada pelo código 82 (0x82), atribuído quando da sua criação. Geralmente, a partição swap é do mesmo tamanho que o montante de memória RAM no sistema. Para servidores, esses número pode ser maior. Uma partição swap muito maior que isso provavelmente não terá o espaço excedente utilizado. É possível haver mais de uma partição de swap.

É preferível criar partições de swap nos dispositivos mais rápidos, se possível em dispositivos distintos daqueles que têm seus dados muito acessados pelo sistema.

Também é possível criar grandes arquivos como área de swap, o que é geralmente feito em situações emergenciais, quando o sistema ameaça ficar sem memória disponível:# dd if=/dev/zero of=emerg.swp bs=1024k count=3232+0 registros de entrada32+0 registros de saída# mkswap emerg.swp Setting up swapspace version 1, size = 33550 kBno label, UUID=543baaad-d660-4a5d-881d-fb7f1485b992# swapon emerg.swp # cat /proc/swaps Filename Type Size Used Priority/dev/hda2 partition 160640 39760 -1/root/emerg.swp file 32760 0 -2

Objetivo 1.101.2: O Gerenciador de BootPeso: 1

A MBR (Master Boot Record) ocupa o primeiro setor do disco (512 bytes). Este primeiro setor contém a tabela de partições e o carregador de boot. Terminado os procedimentos da BIOS, o carregador de boot é disparado, que por sua vez procura na tabela de partições uma partição ativa e carrega o primeiro setor dessa partição.

LILO

O LILO (Linux Loader) é dividido em três componentes:

16

Page 16: Apostila LPI 101

Tópico 102: Instalação do GNU/Linux e Administração de Pacotes

✔ lilo – o carregador propriamente. É instalado na MBR e carrega o boot loader de segundo estágio, geralmente localizado em /boot/boot.b

✔ /etc/lilo.conf – arquivo de configuração para o lilo. Principais opções em /etc/lilo.conf:

➢ boot – Onde o lilo deve ser instalado. Geralmente na MBR, em /dev/hda.

➢ install – O carregador de segundo estágio (/boot/boot.b é o padrão).

➢ prompt – Oferece ao usuário a escolha do SO a iniciar.

➢ default – Rótulo do dispositivo iniciado por padrão. Se não houver, o primeiro listado em /etc/lilo.conf será escolhido.

➢ timeout – Associado a prompt, especifica a espera em décimos de segundo.

➢ image ou other – kernel ou dispositivo a ser carregado (usar “other” para outros sistemas). No início do processo de boot, apenas os primeiros 1024 cilindros do disco estarão acessíveis ao carregador de boot. Portanto, é importante certificar-se de que a partição contendo o kernel (geralmente pequena, montada em /boot) esteja abaixo deste limite de 1024 cilindros)

➢ label – Rótulo para a imagem de kernel

➢ root – localização do dispositivo contendo o sistema de arquivos raiz.

➢ read-only – monta a raiz como somente leitura, para o fsck agir apropriadamente

➢ append – passa parâmetros para componentes compilados estaticamente no kernel

➢ linear/lba32 – obriga o lilo a ler o disco usando endereçamento de bloco linear. A opção “linear” é geralmente usada para discos muito grandes e “lba32” para permitir que o lilo leia além dos primeiros 1024 cilindros do disco. Essas opções não são aconselháveis.

➢ message – especifica um arquivo contendo uma mensagem a ser mostrada no painel de boot do lilo.

➢ delay – tempo de espera para que o usuário invoque o prompt, caso este não for invocado automaticamente.

➢ vga – valor numérico especificando as preferências visuais do terminal

✔ /sbin/lilo – O utilitário que lê as configurações em /etc/lilo.conf e instala o carregador de boot. Deve ser executado toda vez que uma alteração for feita ao /etc/lilo.conf

Exemplo de /etc/lilo.conf:

boot = /dev/hdamessage = /boot/boot_message.txtdelay = 4timeout = 110vga = 788image = /boot/vmlinuz root = /dev/hda3 label = Linux read-onlyother = /dev/hda1 label = Windows table = /dev/hda

17

Page 17: Apostila LPI 101

Tópico 102: Instalação do GNU/Linux e Administração de Pacotes

GRUB

O grub (Grand Unified Bootloader) é uma alternativa ao lilo. Também é instalado na MBR; pelo comando /sbin/grub ou pelo /sbin/grub-install, que obtém as instruções de /boot/grub/grub.conf.

Principais seções de /boot/grub/grub.conf:

✔ global

➢ default – imagem de boot padrão (começa por 0)

➢ timeout – tempo de espera para iniciar o boot, em segundos

✔ imagem

➢ title – nome para a imagem

➢ root – localização do carregador de segundo estágio e do kernel (hd0,0 = /dev/hda)

➢ kernel – caminho para o kernel à partir de root

➢ ro – read-only

➢ initrd – caminho para a imagem initrd

Diferente do lilo, o comando grub-install não precisa ser executado toda vez que forem feitas alterações ao arquivo /boot/grup/grub.conf. Uma vez instalado, o carregador de boot do grub lê o arquivo /boot/grub/grub.conf diretamente.

Dispositivos de Boot Alternativos

Um disquete de boot será importante caso a MBR do disco tenha sido alterada e o sistema esteja inacessível. Mesmo com a maioria dos Kernels atuais não mais cabendo num disquete, ainda assim é possível criar um disquete de boot com o lilo.

Primeiro, o disquete deverá ser formatado e ter um sistema de arquivos:# fdformat /dev/fd0h1440

Usando o sistema de arquivos minix:# mkfs -t minix /dev/fd0

Montando o disquete:# mount /dev/fd0 /mnt/floppy

É necessário criar um arquivo de configuração do lilo alternativo, como /boot/lilo.floppy, contendo as informações necessárias para criação do disquete de boot:boot = /dev/fd0 # O dispositivo de disquetemap = /mnt/floppy/mapcompactimage = /boot/vmlinuz # Substituir para o kernel do sistema root = /dev/hda3 # Substituir para a partição raiz do sistema read-only

Agora o lilo pode ser instalado no disquete, usando o arquivo de configuração criado:# lilo -C /boot/lilo.floppy

Desmontar o disquete:

18

Page 18: Apostila LPI 101

Tópico 102: Instalação do GNU/Linux e Administração de Pacotes

# umount /mnt/floppy

O disquete de boot está pronto. É importante lembrar que disquetes de boot criados dessa forma só funcionaram na própria máquina onde foram feitos. Caso sejam feitas alterações no kernel ou localização da partição raiz, as configurações deverão ser adequadas e o lilo reinstalado no disquete.

A maioria das distribuições GNU/Linux fornece Cds de boot para instalação do sistema. Esses mesmos Cds podem ser usados para acessar e dar boot num sistema já instalado e que possa estar inacessível por uma falha do carregador de boot. Para iniciar um sistema já instalado, os seguintes parâmetros são passados no prompt de boot:boot: linux root=/dev/hda3 noinitrd ro

Onde “linux” é o nome do kernel e “/dev/hda3” é a partição raiz. Já dentro do sistema, é possível reinstalar o carregador de boot.

Geralmente será necessário alterar a seqüência dos dispositivos de boot no BIOS da máquina sempre que um dispositivo de boot alternativo for utilizado.

Para fazer o backup da MBR, basta copiar os primeiros 512kb do disco, o que pode ser feito usando o comando dd:

# dd if=/dev/hda of=mbr.backup bs=1k count=512

Este backup pode ser guardado num disquete e depois restaurado para a MBR:# dd if=mbr.backup of=/dev/hda

Objetivo 1.102.3: Compilar e Instalar Programas a partir do Código FontePeso: 5

Compressão e Descompressão de Arquivos

A maioria dos programas distribuídos em código fonte apresentam-se na forma de arquivos tar (tape archiver) comprimidos. Arquivos tar são vários arquivos aglutinados em um só, o que facilitaa distribuição.

Tipos de compactação:

Compressão Descompressão Descompressão “cat” Extensão

compress uncompress zcat .Z

gzip gunzip zcat .gz

gzip2 bunzip2 bzcat .bz2

Os comandos zcat e bzcat descomprimem para a saída padrão, ou seja, jogam o conteúdo descomprimido na tela do terminal. Detalhes sobre o que é a saída padrão e como utilizá-la no tópico 103, objetivo 1.103.4: Usar fluxos, canalização e redirecionamentos.

Essas ferramentas de compressão não concatenam arquivos, por isso são utilizadas junto com o comando tar. Para facilitar esse procedimento, a compressão e descompressão podem ser feitas diretamente pelo comando tar, através dos argumentos:

✔ Z → compress

19

Page 19: Apostila LPI 101

Tópico 102: Instalação do GNU/Linux e Administração de Pacotes

✔ z → gzip

✔ j → bzip2

Criar um arquivo tar “programa.tar.bz2” contendo o diretório ./programa/ e seu conteúdo, compactando com bzip2:

$ tar cjf programa.tar.bz2 ./programa/

Extrair esse arquivo:

$ tar xjf programa.tar.bz2

Como mostrado no exemplo, o argumento c indica criação de arquivo, x extração de arquivo e f o nome do arquivo.

Compilar e Instalar Programas

O primeiro passo para instalar um programa em código fonte distribuído no formato tar é extraí-lo:$ tar xjvf sylpheed-2.0.4.tar.bz2

Este comando criará o diretório ./sylpheed-2.0.4/, contendo o código fonte do programa e as ferramentas de configuração.

A configuração pré-compilação é feita dentro desse diretório, por um script chamado configure. Este script coleta informações sobre a arquitetura do sistema, caminhos de comandos, bibliotecas compartilhadas, características de funcionamento do programa, etc.

Em geral, o configure pode ser invocado sem argumentos na forma:$ ./configure

Uma opção bastante utilizada é --prefix , que informa em qual diretório base o programa deverá ser instalado. Por exemplo:$ ./configure --prefix=/opt

Indica que o diretório base da instalação será /opt. O script configure possui muitas opções de personalização da instalação. A lista descritiva completa das opções pode ser vista usando$ ./configure --help

As informações coletadas pelo script configure são armazenadas em um arquivo no mesmo diretório chamado makefile. Este arquivo pode ser editado para alterar as opções de instalação, como a variável prefix, que desempenha a mesma função do argumento --prefix do script configure, e outras variáveis que indicam a localização de bibliotecas, comandos, características do programa, etc.

Terminada a configuração, o programa pode ser compilado através do comando make. Make criará as bibliotecas e arquivos executáveis conforme as opções existentes no makefile. Após o término da compilação, que pode levar algum tempo dependendo do tamanho e tipo do programa, o programa está pronto para ser instalado# make install

Se o diretório base de instalação não estiver no diretório pessoal do usuário, esse comando deverá ser executado com permissões de super usuário (root). Mesmo estando o diretório base de instalação fora do diretório pessoal do usuário, é recomendado executar ./configure e make como usuário comum.

20

Page 20: Apostila LPI 101

Tópico 102: Instalação do GNU/Linux e Administração de Pacotes

Objetivo 1.102.4: Bibliotecas CompartilhadasPeso: 3

Funções comuns e compartilhadas por diferentes programas são armazenadas em bibliotecas. Durante a compilação de um programa, essas bibliotecas específicas são ligadas ao programa que as usará.

A ligação pode ser estática ou dinâmica, ou seja, as funções da biblioteca poderão estar embutidas no programa compilado ou apenas mapeadas para a biblioteca externa. Programas estáticos não dependem de arquivos externos e programas dinâmicos são menores e poupam recursos da máquina.

O programa encarregado de carregar a biblioteca e ligar ao programa que dela depende é o ld.so. Para que o ld.so possa localizar a biblioteca da qual um programa depende, esta deverá estar mapeada em /etc/ld.so.cache. As localidades comuns de bibliotecas de sistema são /lib e /usr/lib. Para acrescentar um diretório ao ld.so.cache, o arquivo /etc/ld.so.conf é usado:

Exemplo de /etc/ld.so.conf

/usr/local/lib/usr/X11R6/lib/usr/i486-slackware-linux/lib/usr/lib/qt/lib

Para atualizar o /etc/ld.so.cache após as alterações em /etc/ld.so.conf, é utilizado o comando ldconfig. A execução do ldconfig é fundamental para que as alterações em /etc/ld.so.conf repercutam no funcionamento do ld.so.

Outra maneira de deixar uma localidade de biblioteca ao alcance do ld.so é adicionar seu o respectivo caminho à variável de ambiente LD_LIBRARY_PATH

# export LD_LIBRARY_PATH=/usr/local/lib

Esse método, porém, garante apenas o acesso temporário do ld.so ao diretório em questão. Não funcionará fora do escopo da variável de ambiente e quando a variável deixar de existir, mas é um método útil para usuários sem permissão para atualizar o /etc/ld.so.cache ou para execução pontual de programas.

Objetivo 1.102.5: Administração de Pacotes Debian (.deb)Peso: 8

Objetivo ainda não abordado. Maiores detalhes sobre administração de pacotes debian em http://www.debian.org/doc/manuals/reference/ch-package.pt-br.html.

Objetivo 1.102.6: Administração de Pacotes RedHat (.rpm)Peso: 8

A maioria dos pacotes rpm é nomeada no formato:

nome-versão-release.arquitetura.rpm

21

Page 21: Apostila LPI 101

Tópico 102: Instalação do GNU/Linux e Administração de Pacotes

Modos Maior e Menor

Algumas abreviações de opções são parecidas mas realizam diferentes ações dependendo de sua posição na linha de comando. A distinção é feita a partir da primeira opção da esquerda para a direita. O primeiro argumento passado ao comando rpm é chamada argumento modo maior. As demais são as opções de modo menor.

Opções de modo maior para o rpm:

-i → Ou --install. Instala o pacote

-U → Ou --update. Atualiza ou instala o pacote

-F → Ou --freshen. Atualiza o pacote apenas se o mesmo estiver instalado

-V → Ou --verify. Verifica o tamanho, MDB, permissões, tipo,integridade, etc.

-q → Ou --query. Investiga pacotes e arquivos

-e → Ou --erase. Desinstala o pacote

Opções de modo menor para o rpm

a → Aplica em todos pacotes instalados

c → Com “q” lista arquivos de configuração

d → Com “q” lista arquivos de documentação

f → Com “q” verifica qual pacote instalou o arquivo referido

h → Mostra progresso visual da instalação

i → Com “q” lista informações sobre o pacote

l → Com “q” lista todos arquivos e diretórios do pacote

p → Com “q” indica que a investigação é realizada no arquivo .rpm

v → Modo descritivo

Outras opções

--nodeps

Instala o pacote sem checar as dependências

--force

Força a instalação/atualização

--test

Mostra como seria a instalação mas não instala

--requires

Com “q”, mostra as exigências para o pacote especificado

--whatrequires

Com “q”, mostra quais dependem do pacote especificado

22

Page 22: Apostila LPI 101

Tópico 102: Instalação do GNU/Linux e Administração de Pacotes

Assinaturas de Pacotes

É possível checar a assinatura de todo pacote distribuído como parte de um projeto. Se a distribuição for Fedora, por exemplo, as chaves são incorporadas ao banco de dados do rpm com o comando# rpm --import /usr/share/rhn/RPM-GPG-KEY-FEDORA

Assim, todo pacote copiado do servidor fedora pode ser checado:# rpm --checksig <nome do pacote>

Integridade do Pacote

A integridade do pacote é checada usando a opção -V. A opção -Va checa todos os pacotes. A análise é feita tendo como referência os arquivos originais do pacote.

Significado dos caracteres retornados pela verificação:

. → Teste bem sucedido

? → O teste não pôde ser realizado

S → O tamanho do arquivo mudou

M → A permissão ou o tipo do arquivo mudou

5 → A soma MD5 do arquivo é diferente

D → O dispositivo foi modificado

L → O link simbólico foi modificado

U → O dono do arquivo mudou

G → O grupo do arquivo mudou

T → A data do arquivo mudou

Arquivos e Diretórios Pertinentes ao rpm

/etc/rpmrc

É o arquivo de configuração do rpm e do rpmbuild. Contém informações sobre a arquitetura do sistema e os caminhos para macros e diretórios utilizados no manejo de pacotes. Este arquivo é também encontrado em /usr/lib/rpm/

/usr/lib/rpm/*

Diretório contendo as macros necessárias para o manejo de pacotes.

/var/lib/rpm/

Diretório onde se situam as bases de dados do rpm

Exemplos de uso do rpm

Instalar um pacote:

# rpm -ivh xyz.rpm

23

Page 23: Apostila LPI 101

Tópico 102: Instalação do GNU/Linux e Administração de Pacotes

Instalar todos pacotes iniciados por xyz

# rpm -ivh xyz*

Atualizar um pacote:

# rpm -Uvh xyz.rpm

Desinstalar pacote chamado xyz

# rpm -e xyz

Mostra os arquivos contidos no pacote

# rpm -qlp xyz.rpm

Mostra que pacote instalou o arquivo abc.efg

# rpm -qf abc.efg

24

Page 24: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

Objetivo 1.103.3: Trabalhando na Linha de ComandoPeso: 5

A maneira mais direta de interagir com o computador é usando a linha de comando. O prompt do shell (terminando em $ ou # para o usuário root) indica que está pronto para receber instruções.

O shell é o ambiente que faz o intermédio entre o usuário e os recursos do computador, como um ambiente de programação em tempo real para executar tarefas. O shell padrão no GNU/Linux é o bash (Born Again Shell). Os procedimentos aqui mostrados se referem ao bash.

As instruções do shell geralmente seguem o formato: comando [opções] {argumentos}

Alguns comandos embutidos do shell:

alias

Cria um codinome para um comando, no formato$ alias codinome='nome_do_programa --opções'

É útil para facilitar a entrada de comandos recorrentes que levam muitos argumentos. Usar alias sem argumentos mostra quais aliases existem e seus conteúdos.

exec

O comando iniciado através de exec não se torna um processo filho do shell, mas toma seu lugar. Dessa forma, o shell é finalizado quando o comando terminar.

O shell interpreta a primeira palavra na linha de comando como um comando. O caminho completo ou relativo para o comando precisa ser fornecido, a menos que o comando esteja localizado em um dos diretórios contidos na variável de ambiente PATH. Se o programa encontra-se no diretório de trabalho atual e fora dos diretório contidos em PATH, ele precisará ser invocado começando por ./ :$ ./programa_local

Variáveis

As variáveis usadas no shell são semelhantes às usadas em linguagens de programação. Nomes de variáveis são limitadas a caracteres alfanuméricos.

Criar/Modificar uma variável (espaços não devem ser usados):

$ nome_da_variável=valor_da_variável

O valor de uma variável é retornado acrescentando “$” ao seu nome:

$ echo $nome_da_variávelvalor_da_variável

Há dois tipos de variáveis: locais e exportadas

Locais

Acessível apenas no shell atual.

Exportadas

25

Page 25: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

Acessível no shell e pelos processos iniciados neste shell.

Todas as variáveis são listadas usando o comando set. Para ver apenas as variáveis exportadas, usa-se env.

Exemplo de set:

# set(...)OSTYPE=linux-gnuPATH=/usr/local/sbin:/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/binPIPESTATUS=([0]="0")PPID=16226PS1='\u@\h:\w\$ PS2='> 'PS4='+ 'PWD=/rootQTDIR=/usr/lib/qtSHELL=/bin/bash(..)

Exemplo de env:

# env(...)PATH=/usr/local/sbin:/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/binLC_COLLATE=CPWD=/rootINPUTRC=/etc/inputrcJAVA_HOME=/usr/lib/javaLANG=pt_BR(...)

Se uma variável pode ser acessada por qualquer processo ou shell, é chamada de variável global.

Variáveis pré-definidas

DISPLAY

Usado pelo X para saber onde executar os aplicativos clientes

HISTFILE

Caminho para o histórico de comandos do usuário (geralmente $HOME/.bash_history)

HOME

Caminho para o diretório pessoal do usuário

LOGNAME

O nome que o usuário usou para entrar no sistema

PATH

Lista de diretórios nos quais programas serão procurados caso tenham sido solicitados sem o caminho completo ou relativo

PWD

26

Page 26: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

O diretório atual

SHELL

O shell utilizado (neste caso, /bin/bash)

TERM

O tipo de emulador de terminal utilizado

Variáveis especiais

$! → PID do último processo filho

$$ → PID do shell atual

$? → Retorna 0 se o último comando foi bem sucedido, caso contrário retorna 1

~ → Corresponde ao diretório pessoal do usuário atual

~alaor → Corresponde ao diretório pessoal do usuário chamado “alaor”

Histórico de comandos

Para mostrar o histórico de comandos digitados pelo usuário atual, usa-se o comando history. History é um comando embutido do bash.

É possível usar atalhos no estilo do emacs para listar o histórico:

Ctrl+p → Linha anterior

Ctrl+n → Próxima linha

Ctrl+b → Volta um caracter

Ctrl+f → Avança um caracter

Ctrl+a → Começo da linha

Ctrl+e → Fim da linha

Outros atalhos:

!! → roda o último comando

!a → roda o último comando que começa pela letra “a”

!2 → roda o comando na 2ª posição do histórico

!-2 → roda o penúltimo comando

^termo1^termo2 → roda o último comando substituindo “termo1” por “termo2”

O arquivo ~/.profile contém personalizações do bash para o usuário, como aliases e variáveis particulares.

Exemplo de entrada em ~/.profile :

alias ls='ls --color'

Dessa forma, o alias para ls será permanente.

27

Page 27: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

Comandos Seqüenciais

Executar três comandos em seqüência, independente do resultado de cada um:$ Comando1 ; comando2 ; comando3

Executar o comando seguinte apenas se o anterior foi bem sucedido (se retornou 0):$ comando1 && comando2 && comando3

Executar o comando seguinte apenas se o anterior não foi bem sucedido (se retornou diferente de 0):$ comando1 || comando2 || comando3

Auto-Completar Comandos e Caminhos

Um recurso que agiliza a digitação de comando e caminhos existentes., utilizando a tecla TAB.

Exemplo: Comando whatis

$ wha<TAB>$ whatis

Exemplo: caminho /etc/X11/twm

$ ls /e<TAB>/X<TAB>/t<TAB>$ ls /etc/X11/twm/

Objetivo 1.103.2: Processar Fluxos de Texto Através de FiltrosPeso: 6

Este objetivo se relaciona principalmente ao uso das ferramentas do pacote GNU textutils. São comando Unix padrão, utilizados para modificar sequências de texto.

cat

É usado para mostrar o conteúdo de arquivos$ cat /etc/issueWelcome to \s \r (\l)

Também pode ser usado como um editor de texto rudimentar$ cat > texto_simplestexto simplescriado com cat<Ctrl+d> encerra a entrada de texto

Opções comuns do cat:

-n → Numera as linhas

-b → Numera apenas linhas que não estejam em branco

-A → Mostra quebra de linhas

tac

Tem a mesma função do cat, mas mostra o conteúdo de trás para frente:

28

Page 28: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

$ tac texto_simplescriado com cattexto simples

head

Mostra o começo de arquivos. Por padrão, as 10 primeiras linhas são mostradas. A quantidade de linhas a serem mostradas é indicada pela opção -n :

$ head -n 5 /etc/passwdroot:x:0:0::/root:/bin/bashbin:x:1:1:bin:/bin:daemon:x:2:2:daemon:/sbin:adm:x:3:4:adm:/var/log:lp:x:4:7:lp:/var/spool/lpd:

A opção -c especifica o número de caracteres (bytes) a serem mostrados no lugar de linhas:

$ head -c 5 /etc/passwdroot:

tail

Mostra o final de arquivos. Por padrão, as 10 últimas linhas são mostradas. A quantidade de linhas a serem mostradas é indicada pela opção -n :

$ tail -n 1 texto_simplescriado com cat

A opção -c especifica o número de caracteres (bytes) a serem mostrados no lugar de linhas. A para que o fim do arquivo seja mostrado continuamente, a medida que mais texto é adicionado au final do mesmo, usa-se a opção -f (de follow). O sinal “+” indica que a leitura deve ser feita a partir da linha de número especificado após o “+”:

$ tail +35 /etc/groupconsole::101:messagebus:x:102:haldaemon:x:103:haldaemon

wc

Conta linhas, palavras ou caracteres, com as opções -l, -w e -c respectivamente. Quando usado sem argumentos, mostra esses três valores na sequência.$ wc texto_simples 2 5 29 texto_simples$ wc -l texto_simples 2 texto_simples$ wc -w texto_simples 5 texto_simples$ wc -c texto_simples 29 texto_simples

nl

Numera linhas, como cat -b. O argumento -ba faz numerar todas as linhas. O argumento -bt apenas as que não estejam em branco$ nl texto_simples 1 texto simples 2 criado com cat

expand

29

Page 29: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

Substitui espaços de tabulação (TABs) por espaços simples, mantendo a mesma distância aparente.

Contar os caracteres de /etc/fstab e comparar ao mesmo arquivo filtrado por expand:

$ wc -c /etc/fstab 773 /etc/fstab$ expand /etc/fstab | wc -c 820

unexpand

Substitui dois ou mais espaços simples por espaços de tabulação (TABs).

hexdump

Mostra arquivos binários. A opção -C torna a saída mais legível, mostrando a coluna de endereço hexadecimal, seguida pela coluna dos dados do arquivo (valores hexadecimais sequenciais separados a cada dois bytes) e por último a coluna que mostra esses mesmos bytes no formato ASCII.

Examinando o começo do arquivo /bin/cat:

$ hexdump -C /bin/cat | head00000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|00000010 02 00 03 00 01 00 00 00 70 8b 04 08 34 00 00 00 |........p...4...|00000020 90 39 00 00 00 00 00 00 34 00 20 00 07 00 28 00 |.9......4. ...(.|00000030 19 00 18 00 06 00 00 00 34 00 00 00 34 80 04 08 |........4...4...|00000040 34 80 04 08 e0 00 00 00 e0 00 00 00 05 00 00 00 |4...à...à.......|00000050 04 00 00 00 03 00 00 00 14 01 00 00 14 81 04 08 |................|00000060 14 81 04 08 13 00 00 00 13 00 00 00 04 00 00 00 |................|00000070 01 00 00 00 01 00 00 00 00 00 00 00 00 80 04 08 |................|00000080 00 80 04 08 cd 35 00 00 cd 35 00 00 05 00 00 00 |....Í5..Í5......|00000090 00 10 00 00 01 00 00 00 d0 35 00 00 d0 c5 04 08 |........Ð5..ÐÅ..|

A palavra “ELF” no início da coluna ASCII indica que este é um arquivo executável no formato elf – Executable and Linkable Format.

split

Divide um arquivo em arquivos menores seguindo critérios como tamanho ou número de linhas. A opção -l indica o número de linhas de cada parte do arquivo dividido. A opção -b indica qual o tamanho de cada parte. Um prefixo para as partes pode ser indicado após o nome do arquivo a ser divido:

Dividir um arquivo em partes de 1024Kb usando o prefixo “parte_”:

$ split -b 1024k “arquivo original” parte_

Esse comando criará arquivos chamados parte_aa, parte_ab, parte_ac, etc. Para concatenar novamente o arquivo, usa-se cat:

$ cat parte_* > “nome do arquivo”

Será criado um arquivo de conteúdo idêntico ao do arquivo original.

uniq

Mostra o conteúdo de arquivos suprimindo linhas seqüenciais repetidas.

cut

Delimita um arquivo em colunas, em determinado número de caracteres ou por posição de campo.

30

Page 30: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

Mostrar caracteres da posição 1 à 5 de cada linha:

$ cut -c 1-5 /etc/grouproot:bin::daemosys::adm::(...)

Para separar por campo, usa-se a opção -d para especificar o caracter que delimita os campos e -f para informar a posição do campo.

Mostrar os campos da posição 1 e 3 do arquivo /etc/group, campos que estão separados por “:”:

$ cut -d ':' -f 1,3 /etc/grouproot:0bin:1daemon:2sys:3adm:4(...)

Para mostrar outro delimitador no lugar do original, usa-se a opção --output-delimiter:

$ cut -d ':' -f 1,3 /etc/group --output-delimiter ' = 'root = 0bin = 1daemon = 2sys = 3adm = 4(...)

paste

Concatena arquivos lado a lado.$ paste texto_simples texto_simples texto simples texto simplescriado com cat criado com cat

join

Similar ao paste, mas trabalha especificando campos, no formato join -1 CAMPO -2 CAMPO “arquivo um” “arquivo dois” Onde CAMPO é o número indicando qual campo nos respectivos arquivos (primeiro e segundo) deve ser correlacionado.

Exemplo: Relacionar as linhas de arq2 cujo primeiro campo (coluna 1) seja igual ao primeiro campo de arq2:

31

Page 31: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

arq1:1 a1 x12 b1 y13 c1 z1

arq2:1 a2 x22 b2 y23 c2 z2

$ join -1 1 -2 1 arq1 arq21 a1 x1 a2 x22 b1 y1 b2 y23 c1 z1 c2 z2

A primeira coluna do resultado é o campo que foi relacionado, seguido das linhas correspondentes. É possível delimitar quais campos mostrar, com a opção -o. Essa opção deve ser escrita no formato N.M, onde N é o número correspondente ao arquivo e M o número correspondente ao campo deste arquivo. O campo de relação também pode ser referido por 0.

Exemplo: Fazer a mesma relação do exemplo anterior, mostrando apenas o primeiro campo de arq1 e apenas o segundo de arq2:

$ join -1 1 -2 1 -o '1.2 2.3' arq1 arq2a1 x2b1 y2c1 z2

sort

Ordena alfabeticamente. Com a opção -n ordena numericamente e -r inverte o resultado.

$ sort texto_simples criado com cattexto simples

fmt

Formata para determinado número de caracteres por linha. O padrão é 75.

-w → indica o número de caracteres por linha

-s → quebra linhas grandes mas não as preenche

-u → um espaço entre palavras e dois espaços entre sentenças.

pr

Divide o arquivo para impressão. O padrão é 66 linhas por 72 caracteres de largura, modificados por -l e -w respectivamente.

tr

Converte caracteres. O comando tr lê apenas diretamente via stdin.

Conversão simples de um único caracter:

$ cat texto_simples | tr ' ' '.'texto.simplescriado.com.cat

Converter letras minúsculas para maiúsculas:

32

Page 32: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

$ cat texto_simples | tr 'a-z' 'A-Z'TEXTO SIMPLESCRIADO COM CAT

Objetivo 1.103.3: Gerenciamento Básico de ArquivosPeso: 3

Diretórios e Arquivos

Arquivos podem ser acessados tanto por seu caminho absoluto quanto seu caminho relativo. Caminhos absolutos são aqueles iniciados pela barra da raiz ( / ), e caminhos relativos são aqueles que tomam por referência o diretório atual. O ponto “.” refere-se ao diretório atual, e “..” refere-se ao diretório contendo o diretório atual.

O comando ls é usado para listar arquivos e conteúdo de um diretório. A opção -l exibe detalhes sobre o(s) arquivo(s), -s mostra o tamanho em kilobytes e -d mostra o diretório, e não seu conteúdo.

Exemplo de saída de ls -l:

$ ls -l /etc/X11/xinit/total 20-rw-r--r-- 1 root root 321 2006-01-14 17:33 README.Xmodmaplrwxrwxrwx 1 root root 15 2006-03-20 22:31 xinitrc -> xinitrc.fluxbox-rwxr-xr-x 1 root root 556 2003-03-16 19:59 xinitrc.blackbox-rwxr-xr-x 1 root root 560 2006-03-07 03:32 xinitrc.fluxbox-rwxr-xr-x 1 root root 799 2006-01-14 17:30 xinitrc.twm-rwxr-xr-x 1 root root 788 2005-07-21 15:27 xinitrc.wmaker

A primeira coluna mostra o tipo e as permissões do arquivo, a segunda coluna mostra o número de links físicos (hard links) para o arquivo, a terceira e a quarta mostram o dono e o grupo aos quais o arquivo pertence, a quinta mostra o tamanho em bytes, a sexta e a sétima mostram a data e a hora da última modificação do arquivo e a oitava coluna mostra o nome do arquivo. Se o arquivo for um link simbólico, uma seta mostra o arquivo para o qual ele aponta.

O comando cp é utilizado para copiar arquivos. Suas opções principais são:

-i → Modo interativo. Pergunta antes de sobrescrever um arquivo.

-p → Copia também os atributos do arquivo original.

-r → Copiar recursivamente o conteúdo do diretório de origem.

É importante saber que quando copiando um diretório recursivamente, o uso da barra “/” no final do diretório de origem fará com que apenas o conteúdo do diretório seja copiado/movido para o destino e o não uso da barra fará com que o diretório de origem e seu conteúdo sejam copiados no destino.

Exemplo de cp:

$ cp tux.xcf icons/

Copia o arquivo “tux.xcf” para o diretório “icons” no diretório atual.

O comando mv move e renomeia arquivos. Usado com a opção -i pede por confirmação antes de sobrescrever um arquivo de destino.

33

Page 33: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

Exemplo de mv:

$ mv imagem.jpg ../fotos/

Move o arquivo “imagem.jpg” para o diretório “fotos” que está no mesmo diretório onde está contido o diretório atual (um nível acima).

Para alterar a data de um arquivo, utiliza-se o comando touch. Usado sem argumentos, touch altera a data e a hora de criação e modificação de um arquivo para os valores atuais do sistema. Para alterar apenas a data de modificação, usa-se a opção -m, e para alterar apenas a data de acesso, usa-se a opção -a. O argumento passado com -t usa outro valor de tempo:

Mudar a data e hora para janeiro, 01 – 00:01

$ touch -t '01010001' texto_simples $ ls -l texto_simples -rw-r--r-- 1 luciano users 29 2006-01-01 00:01 texto_simples

No bash, o comando para retornar o diretório atual é o pwd. O comando cd muda para o diretório especificado ou vai para o diretório pessoal quando nenhum diretório for especificado.

O comando mkdir cria diretórios. Para criar uma árvore de diretórios recursivamente, usa-se a opção -p:

$ mkdir -p caminho/completo/para/dir

Para alterar as permissões do diretório no ato da criação, as mesmas são transmitidas ao mkdir com a opção -m.

Criar diretório sem qualquer tipo de acesso para o grupo ou outros:

$ mkdir -m 700 exclusivo$ ls -ld exclusivo/drwx------ 2 luciano users 48 2006-03-20 21:42 exclusivo/

Diretórios vazios podem ser apagados pelo comando rmdir. Para apagar uma árvore de diretórios vazios, usa-se a opção -p.

Para apagar diretórios com conteúdo, usa-se rm -r, e para forçar a remoção, a opção -f é utilizada.

Encontrando Arquivos com o Comando find

Sintaxe do find:

find diretório critério [-exec comando {} \;]

O argumento diretório indica onde o find deve iniciar a busca e critério pode ser o nome do arquivo /diretório a ser procurado e/ou uma regra para a busca.

Critérios comuns para o find:

-type

Tipo do arquivo (d para diretório, f para arquivo comum e l para link)

-name nome

Nome do arquivo

34

Page 34: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

-user usuário

Dono do arquivo

-atime -/+n

Data de último acesso ao arquivo, menor ou maior que n. n corresponde a n*24 horas.

-ctime -/+n

Data de criação do arquivo, menor ou maior que n. n corresponde a n*24 horas.

-mtime -/+n

Data de modificação do arquivo, menor ou maior que n. n corresponde a n*24 horas.

-amin -/+n

Data de último acesso ao arquivo, menor ou maior que n. n corresponde a minutos.

-cmin -/+n

Data de criação do arquivo, menor ou maior que n. n corresponde a minutos.

-mmin -/+n

Data de modificação do arquivo, menor ou maior que n. n corresponde a minutos.

-newer arquivo

O arquivo procurado foi criado/modificado mais recentemente que arquivo.

-perm modo

O arquivo procurado tem permissão mode

-perm -modo

O arquivo procurado tem todos as permissões listadas em mode

-perm +modo

O arquivo procurado tem qualquer das permissões listadas em mode

Exemplo: Encontrar todos os arquivos do tipo link em /usr/lib criados há menos de 24 horas:

$ find /usr/lib -type l -ctime -1/usr/lib/libssl.so/usr/lib/libcrypto.so/usr/lib/libssl.so.0/usr/lib/libcrypto.so.0

Caracteres Coringa (file globbing)

As operações com arquivos e diretórios permitem o uso de caracteres coringa, que são padrões de substituição de caracteres.

O caracter “ * ” substitui qualquer seqüência de caracteres:

35

Page 35: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

$ ls /etc/host*/etc/host.conf/etc/hosts/etc/hosts.allow/etc/hosts.deny/etc/hosts.equiv

O caracter “ ? ” substitui apenas um caractere:

$ ls /dev/fd?/dev/fd0 /dev/fd1 /dev/fd2 /dev/fd3

O uso de colchetes “[]” indica uma lista de caracteres:

$ ls /dev/hd[abc]/dev/hda /dev/hdb /dev/hdc

Chaves “{}” indicam uma lista de termos separados por vírgula:

$ ls /dev/{hda,fd0}/dev/fd0 /dev/hda

O uso de exclamação antes de um coringa o exclui da operação:$ ls /dev/fd[!01]/dev/fd2 /dev/fd3

Coringas precedidos de barra invertida “ \ ” não desempenham função substitutiva:

$ ls /dev/fd\[\!01\]ls: /dev/fd[!01]: Arquivo ou diretório não encontrado

Entre aspas duplas, apenas os caracteres especiais “|”, “/” e “$” têm efeito. Entre aspas simples apenas o caracter especial “\” tem efeito.

Objetivo 1.103.4: Fluxos, Canalização e Redirecionamentos de SaídaPeso: 5

Processos Unix geralmente abrem três descritores padrão de arquivos, que os permitem processar entrada e saída de dados. Estes descritores podem ser redirecionados de e para outros arquivos ou processos. Por padrão, o descritor de entrada (stdin) é o teclado e os descritores de saída padrão (stdout) e saída de erro (stderr) são a tela do computador. Os valores numéricos para esses descritores são 0 para stdin, 1 para stdout e 2 para stderr. Os descritores também podem ser acessados através dos dispositivos virtuais /dev/stdin, /dev/stdout e /dev/stderr.

O fluxo dos dados para redirecionamentos e canalizações numa linha de comando vai da esquerda para a direita.

Redirecionamento

Para redirecionar a saída padrão de um comando para um arquivo, utiliza-se o símbolo “>” após o mesmo, que deve indicar o arquivo a ser criado com os dados referidos:$ cat texto_simples > clone_texto_simples

Se o arquivo existir previamente, será sobrescrito. Para adicionar os valores sem apagar o conteúdo existente, usa-se “>>”.

36

Page 36: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

Para redirecionar o conteúdo de um arquivo para a entrada padrão de um comando, usa-se “<”. Neste caso, o fluxo dos dados segue da direita para a esquerda. É especialmente útil para utilizar com comandos como o tr que não lê arquivos diretamente:

$ tr ' ' '-' < clone_texto_simples texto-simplescriado-com-cat

O conteúdo redirecionado por padrão é o de stdout. Para especifar stderr usa-se 2>. Para redirecionar ambos simultaneamente, usa-se &>.

Canalização

É possível enviar a saída de um comando para a entrada de outro comando simultaneamente, utilizando o caracter de canalização “|”. É preciso que o programa de origem dos dados os direcione para a saída padrão. Isso varia para cada programa, e geralmente se dá passando o argumento de destino como um traço “-” ou simplesmente ocultando o argumento de saída. Da mesma forma, alguns programas precisam que seja especificada a origem dos dados através de stdin. Todas essas informações podem ser obtidas consultando o manual do programa.

Exemplo: Extrair a terceira música de um CD com o programa cdparanoia canalizando o áudio através do programa oggenc para armazenar a música no formato Ogg Vorbis.

$ cdparanoia -d /dev/cdrom 3 - | oggenc - -o 03.ogg

Por fim, é possível redirecionar simultaneamente a saída tanto para um arquivo quanto para stdout, através do comando tee. Para tal, canaliza-se a saída do comando para o comando tee e a este um nome de arquivo para armazenar a saída:$ cat /etc/passwd | tee cópia_passwd

O conteúdo de /etc/passwd será mostrado na tela e copiado no arquivo cópia_passwd.

É possível também usar a saída de um comando como argumento para outro, usando aspas invertidas:$ ls -dl `cat /etc/ld.so.conf`drwxr-xr-x 5 root root 7464 2006-01-14 17:35 /usr/X11R6/libdrwxr-xr-x 2 root root 712 2006-03-17 12:26 /usr/i486-slackware-linux/libdrwxr-xr-x 2 root root 688 2005-10-29 22:53 /usr/lib/qt/libdrwxr-xr-x 16 root root 7272 2006-03-21 02:49 /usr/local/lib

Resultado idêntico é conseguido usando $():

$ ls -dl $(cat /etc/ld.so.conf)drwxr-xr-x 5 root root 7464 2006-01-14 17:35 /usr/X11R6/libdrwxr-xr-x 2 root root 712 2006-03-17 12:26 /usr/i486-slackware-linux/libdrwxr-xr-x 2 root root 688 2005-10-29 22:53 /usr/lib/qt/libdrwxr-xr-x 16 root root 7272 2006-03-21 02:49 /usr/local/lib

O comando xargs desempenha função parecida, passando os dados que recebe via stdin como argumento para um segundo comando.

Exemplo do xargs acompanhando a execução do find:

37

Page 37: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

$ find /usr/X11R6/bin/ -name 'xt*' | xargs ls -l-rwxr-xr-x 1 root bin 268928 2006-01-14 17:35 /usr/X11R6/bin/xterm-rwxr-xr-x 1 root bin 13076 2006-01-14 17:35 /usr/X11R6/bin/xtrapchar-rwxr-xr-x 1 root bin 6536 2006-01-14 17:35 /usr/X11R6/bin/xtrapin-rwxr-xr-x 1 root bin 4320 2006-01-14 17:35 /usr/X11R6/bin/xtrapinfo-rwxr-xr-x 1 root bin 7704 2006-01-14 17:35 /usr/X11R6/bin/xtrapout-rwxr-xr-x 1 root bin 5880 2006-01-14 17:35 /usr/X11R6/bin/xtrapproto-rwxr-xr-x 1 root bin 4196 2006-01-14 17:35 /usr/X11R6/bin/xtrapreset-rwxr-xr-x 1 root bin 5856 2006-01-14 17:35 /usr/X11R6/bin/xtrapstats

Neste exemplo, xargs tomou cada caminho passado por find e repassou como argumento para o comando ls -l.

Objetivo 1.103.5: Criar, Monitorar e Finalizar ProcessosPeso: 5

Em linhas gerais, um processo é um programa em execução. Cada processo possui um número único de identificação chamado PID. Este número pode ser usado para mudar a prioridade de um processo ou para finalizá-lo. O processo que inicia um outro processo é chamado o processo pai (parent process) do segundo, assim como o segundo é chamado processo filho (child process) do primeiro.

pstree

Mostra processos ativos em formato de árvore genealógica (processos filhos ligados aos respectivos processos pais).

Opções comuns:

-p → Inclui PIDs dos processos.

-h → Lista apenas os processos do usuário atual.

ps

Mostra os processos de maneira detalhada.

Opções comuns:

ux → Mostra todos processos do usuário.

aux → Mostra todos processos no sistema.

-u → Mostra apenas processos cujo dono seja o indicado pela opção -u.

-g → Mostra apenas processos cujo grupo seja o indicado pela opção -g.

top

Monitora continuamente os processos, mostrando informações como uso de memória e CPU de cada processo. A tecla “h” fornece ajuda sobre o uso do programa. Pode ser usado para alterar a prioridade de um processo

pidof

Retorna o número PID para o programa solicitado, se o programa estiver em execução.

PID do daemon crond:

38

Page 38: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

# pidof crond2404

kill

Envia sinais de controle para processos. O sinal padrão quando nenhum sinal é informado é SIGTERM, de valor numérico 15, que pede ao programa em questão para finalizar. O processo não necessariamente obedece ao sinal, a menos que o sinal seja SIGKILL. Em alguns casos, o sinal SIGHUP pode ser interpretado como ordem para o processo reler seu(s) arquivo(s) de configuração.

Exemplo de kill:

# kill -SIGTERM 4902

Envia o sinal SIGTERM para o processo de PID 4902

Sinais comuns:

SIGHUP

Termina ou reinicia o processo. Valor numérico 1.

SIGINT

Interrompe o processo, igual a Ctrl+c. Valor numérico: 2.

SIGQUIT

Fecha o processo. Valor numérico: 3.

SIGKILL

Força a finalização o processo. Valor numérico: 9.

SIGTERM

Pede ao processo para finalizar. Valor numérico: 15.

killall

Tem função igual a de kill, porém usa o nome do processo no lugar do PID. Com a opção -l lista os sinais possíveis.# killall -SIGHUP cupsd

Neste exemplo, o daemon cupsd irá reler seus arquivos de configuração.

Tarefas em Primeiro e Segundo Plano

Após iniciado um programa no shell, este na maioria das vezes assumirá o controle de stdin e stdout, ou seja, ficará em primeiro plano. Para interromper o programa e voltar ao prompt do shell, usa-se a combinação de teclas Ctrl+z. Feito isso, para continuar a execução do programa em segundo plano, ou seja, mantendo o prompt do bash em primeiro plano, usa-se o comando bg (background). Para continuar a execução do programa em primeiro plano usa-se o comando fg (foreground).

39

Page 39: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

$ ogg123 -q 03-geraldo_vandré-fica_mal_com_deus.ogg

Ctrl+z pressionado

[1]+ Stopped ogg123 -q 03-geraldo_vandré-fica_mal_com_deus.ogg$ bg 1[1]+ ogg123 -q 03-geraldo_vandré-fica_mal_com_deus.ogg &$

O número mostrado antes do comando identifica a tarefa. Este número é passado para fg e bg para especificar a tarefa desejada. Se houver apenas uma tarefa na sessão atual, fg e bg podem ser usados sem argumentos. Para usar o nome do programa no lugar de seu número de tarefa, basta precedê-lo por %?:

$ bg %?ogg123

O comando jobs lista as tarefas existentes na sessão atual do bash. É especialmente útil quando há mais de uma tarefa em andamento.

É possível iniciar programas diretamente em segundo plano, adicionando o símbolo “&” ao seu final.$ ogg123 -q 10-geraldo_vandré-berimbau.ogg &[2] 5375

Os números mostrados correspondem ao número da tarefa e ao PID, respectivamente.

O número de uma tarefa pode ser usado como argumento do comando kill desde que precedido do símbolo “%”:

$ kill %2

Quando um usuário sai do sistema, um sinal SIGHUP é enviado a todos os processos à ele pertencentes. Para que esse sinal não interrompa o processo do usuário após este sair do sistema, o comando deve ser invocado através do nohup:

$ nohup wget ftp://transferência/muito/demorada.tar.bz2 &nohup: appending output to `nohup.out'

As saídas stdout e stderr serão redirecionadas para o arquivo nohup.out, criado no mesmo diretório em que o comando foi executado.

Objetivo 1.103.6: Modificar a Prioridade de Execução de um ProcessoPeso: 3

Números nice (NI) são usados para alterar a prioridade de CPU e balancear seu uso num ambiente multiusuário. Todo processo comum é iniciado com uma prioridade padrão (0). Números nice vão de 19 (menor prioridade) a -20 (prioridade maior). Apenas o super-usuário (root) pode diminuir um número nice de um processo para abaixo de zero.

É possível iniciar um comando com uma prioridade diferente da padrão através do comando nice. Por padrão, nice muda a prioridade para 10.$ nice -n 15 tar czf home_backup.tar.gz /home

Inicia o comando tar com número nice de prioridade 15.

Para alterar a prioridade de um processo em andamento, o renice é usado. A opção -p indica o

40

Page 40: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

PID do processo em questão.# renice -10 -p 29972997: prioridade antiga = 0; prioridade nova = -10

As opções -g e -u permitem alterar todos processos do grupo ou do usuário, respectivamente.

# renice +5 -g users

Neste exemplo, todos os processos de usuários do grupo users tiveram suas prioridades (número nice) alteradas para +5.

Prioridades podem ser modificadas interativamente através do programa top. Quando na tela de processos, basta apertar a tecla “r” e indicar o número PID do processo.

Objetivo 1.103.7: Procurar em Arquivos de Texto Usando Expressões RegularesPeso: 3

Expressões Regulares e grep

Expressões regulares são elementos de texto, palavras chave e modificadores que formam um padrão, usado para encontrar e opcionalmente alterar um padrão correspondente. Muitos programas suportam o uso de expressões regulares. O comando grep é o mais comum para realizar buscas por expressões regulares em textos.

Caracteres especiais em expressões regulares:

^ → Começo de linha

$ → Fim de linha

. → Qualquer caracter

* → Qualquer seqüência de zero ou mais caracteres

[] → Qualquer caracter que esteja presente nos colchetes

Exemplos - Mostra apenas as linhas que começam com o caracter “ #” do arquivo /etc/lilo.conf.

$ grep '^#' /etc/lilo.conf

Mostra linhas de /etc/lilo.conf que contenham o termo “hda” ou “hdb”:

$ grep 'hd[ab]' /etc/lilo.conf

Mais opções de grep:

-c → Conta as linhas contendo o padrão.

-i → Ignora a diferença entra maiúsculas ou minúsculas.

-f → Usa a expressão regular contida no arquivo indicado por essa opção.

-n → Procurar somente na linha indicada por essa opção.

-v → Mostra todas as linhas exceto a que corresponder ao padrão.

41

Page 41: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

Exemplo: Mostrar apenas linhas contendo caracteres (inverter a busca por linhas que não possuam caracteres

$ grep -v '^$' /etc/lilo.conf

sed

O comando sed é mais utilizado para procurar e substituir padrões em textos, mostrando o resultado em stdout. Sintaxe do sed:

sed [opções] ‘comando e expressão regular’ [arquivo original]

No sed, a expressão regular fica circunscrita entre barras “/”.

Exemplo:

$ sed -e '/^#/d' /etc/lilo.conf

Mostra o arquivo /etc/lilo.conf sem linhas começadas por “#” (linhas de comentário). A letra “d” ao lado da expressão regular é um comando sed que indica a exclusão de linhas contendo o respectivo padrão.

Exemplo: substituir o termo “hda” por “sdb”:

$ sed -e 's/hda/sdb/g' /etc/lilo.conf

Exemplo: Entre as linhas 14 e 21,substituir a palavra “runlevel” por “rl”:

$ sed -n -e '14,21s/runlevel/rl/p' /etc/inittab# These are the default rls in Slackware:# 2 = unused (but configured the same as rl 3)# 3 = multiuser mode (default Slackware rl)# 5 = unused (but configured the same as rl 3)

Devido a opção -n, as linhas que não contém a expressão regular não foram mostradas.

Opções comuns de sed:

-e → Executa a expressão e comando a seguir.

-f → Lê expressões e comandos do arquivo indicado pela opção.

-n → Não mostrar as linhas que não correspondam a expressão.

Comandos comuns do sed:

s → Substituir.

d → Apagar a linha.

r → Insere o conteúdo do arquivo indicado na ocorrência da expressão.

w → Escreve a saída no arquivo indicado.

g → Substitui todas ocorrências da expressão na linha atual.

Objetivo 1.103.8: Edição Básica de Arquivos com o viPeso: 1

42

Page 42: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

Na maioria das distribuições o vi é o editor de textos padrão. O vi localiza-se em /bin.

Há três modos básicos no vi:

Modo de comando

É o modo inicial do vi. Serve para navegação e edição. Geralmente, os comandos são letras únicas. Se precedido por número, o comando será repetido correspondentemente ao valor desse número.

Modo de última linha ou coluna

Acessível ao apertar a tecla “:” no modo de comando. Usado para fazer buscas, salvar, sair, executar comandos no shell, alterar configurações do vi, etc. Para retornar ao modo de comando, usa-se o comando “visual”.

Modo de inserção

A maneira mais comum de entrar no modo de inserção é apertando a tecla “i” ou “a”. É o modo mais intuitivo, usado para digitar texto no documento. A tecla ESC sai do modo de inserção e volta para o modo de comando.

Algumas teclas comuns usadas no modo de comando:

0 , $ → Início e fim de linha

1G , G → Início e fim de documento

b , e → Início e fim de palavra

( , ) → Início e fim de sentença

{ , } → Início e fim de parágrafo

w, W → Pular palavra e pular palavra contando com a pontuação

h,j,k,l → Esquerda, abaixo, acima, direita

/ , ? → Busca para frente e para trás

i → Entra no modo de inserção na posição atual do cursor

a, A → Entra no modo de inserção depois do cursor ou no fim da linha

o, O → Adiciona linha e entra no modo de inserção depois ou antes do cursor

s, S → Apaga item ou linha e entra no modo de inserção

c → Modifica um item através de inserção de texto

r → Substitui um único caracter

x → Apaga um único caracter

y, yy → Copia um item ou toda linha

p, P → Cola o conteúdo copiado depois ou antes do cursor

u → Desfazer

ZZ → Fecha e salva se necessário

ZQ → Fecha e não salva

Comandos do modo de última linha ou coluna

43

Page 43: Apostila LPI 101

Tópico 103: Comandos GNU e Unix

:! → Chama um comando do shell

:quit ou :q → Fecha

:quit! ou :q! → Fecha sem gravar

:wq → Salva e fecha

:exit ou :x ou :e → Fecha e grava se necessário

:visual → Volta para o modo de comando

44

Page 44: Apostila LPI 101

Tópico 104: Dispositivos, Sistemas de Arquivos GNU/Linux e Padrão FHS

Objetivo 1.104.1:Criação de Partições e Sistemas de ArquivosPeso: 3

Discos IDE podem conter até 4 partições físicas, das quais uma pode ser estendida. A partição estendida pode ser dividida em partições lógicas. Pode haver um máximo de 46 partições num disco IDE e 16 num disco SCSI.

fdisk

O fdisk é o programa padrão para manipular partições no GNU/Linux. Com a opção -l lista os dispositivos e as partições existentes:# fdisk -l

Disk /dev/hda: 10.0 GB, 10005037568 bytes255 heads, 63 sectors/track, 1216 cylindersUnits = cilindros of 16065 * 512 = 8225280 bytes

Dispositivo Boot Start End Blocks Id System/dev/hda1 * 1 153 1228941 b W95 FAT32/dev/hda2 154 173 160650 82 Linux swap/dev/hda3 174 782 4891792+ 83 Linux/dev/hda4 783 1216 3486105 83 Linux

Disk /dev/hdb: 2111 MB, 2111864832 bytes64 heads, 63 sectors/track, 1023 cylindersUnits = cilindros of 4032 * 512 = 2064384 bytes

Dispositivo Boot Start End Blocks Id System/dev/hdb1 1 1023 2062336+ c W95 FAT32 (LBA)

Para manipular partições, o fdisk deve ser inciado tendo como argumento o dispositivo em questão:# fdisk /dev/hda

Uma vez dentro do fdisk, certas letras corresponderão a comandos. Alguns comandos bastante utilizados:

p → Lista as partições

n → Cria uma nova partição interativamente

t → Muda a identificação da partição

d → Apaga uma partição

q → Sai do fdisk sem gravar as alterações

w → Sai do fdisk e grava as alterações

m → Mostra a ajuda de comandos

Por padrão, o fdisk cria novas partições identificadas como partições nativas de GNU/Linux, cujo

45

Page 45: Apostila LPI 101

Tópico 104: Dispositivos, Sistemas de Arquivos GNU/Linux e Padrão FHS

código hexadecimal é 83 (0x83). O código de identificação de partições do tipo swap é 82 (0x82).

Criação de Sistemas de Arquivos

Durante muito tempo o sistema de arquivos mais utilizado no GNU/Linux foi o ext2 (second extended). No entanto, hoje muito se usa sistemas de arquivos journalling, como o ext3 e o ReiserFS.

Por padrão, o ext2 consiste em blocos de 1024 bytes. Há três tipos de blocos.

Superblocks

Repetem-se a cada 8193 blocos. Contém informações sobre o tamanho dos blocos, inodes livres, data da última montagem, etc.

inodes

Indicadores para os blocos de dados. O 12 primeiros blocos de dados após o inode são acessados sequencialmente. Se os dados excederem 12 blocos, blocos inode indiretos agem como espelho. Cada inode tem 256 bytes e contém a informação de usuário, grupo, permissões e data referente aos dados associados.

Blocos de dados

Os blocos que contém os arquivos e diretórios propriamente ditos.

A diferença para um sistema de arquivos journalling é que um sistema com essa capacidade registra de antemão todas alterações que irá realizar no disco. Dessa forma, erros de gravação (normalmente ocasionados por queda de energia ou desligamento incorreto) podem ser mais facilmente diagnosticados e sanados. É possível fazer a conversão de ext2 para ext3 sem perda de dados.

O comando mkfs cria sistemas de arquivos em partições. A opção -t indica o tipo do sistema de arquivos:

Criar uma partição ext2 na partição /dev/hda3:

# mkfs -t ext2 /dev/hda3

Há também comandos específicos para cada sistema de arquivos: mkfs.ext2, mke2fs, mkfs.ext3, mkfs.xfs, mkreiserfs, mkdosfs e mkfs.vfat.

Partição Swap

Após a partição swap ser criada pelo fdisk, ela precisa ser formatada com o comando mkswap:

Formata como swap a partição /dev/hda2:

# mkswap /dev/hda2

Após criada e formatada, uma partição swap precisa ser ativada para ser usada como memória swap. O comando swapon -a ativa todas partições swap que constarem em /etc/fstab. As entradas referentes à partições swap em /etc/fstab não têm ponto de montagem.

Exemplo de entrada de partição swap em /etc/fstab:

/dev/hda2 swap swap defaults 0 0

Normalmente, todas as partições swap contidas em /ect/fstab são ativadas pelos scripts de inicialização do sistema. Para ativar ou desativar essa partição manual manualmente, usa-se

46

Page 46: Apostila LPI 101

Tópico 104: Dispositivos, Sistemas de Arquivos GNU/Linux e Padrão FHS

swapon /dev/hda2 ou swapoff /dev/hda2, respectivamente.

Informações sobre partições swap ativas são armazenadas em /proc/swaps.

Exemplo de /proc/swaps:

Filename Type Size Used Priority/dev/hda2 partition 160640 32632 -1

Objetivo 1.104.2: Manutenção da Integridade de Sistemas de ArquivosPeso: 3

Checando o Sistema de Arquivos

O comando fsck deve ser executado em partições que apresentarem erros ou em dispositivos que foram desligados incorretamente. A partição deverá estar desmontada ou montada como somente-leitura (ro) para a verificação.

Como o comando mkfs, o fsck possui a opção -t para especificar o tipo do sistema de arquivos e um comando específico para cada partição: fsck.ext2 ou e2fsck, fsck.ext3, fsck.xfs, reiserfsck e dosfsck.

Examinando e corrigindo o Sistema de Arquivos

debugfs

Depurador interativo de sistemas de arquivos. Examina sistemas ext2 e ext3. Muda diretórios, examina dados de inodes, apaga arquivos, cria links, mostra o log de journalling ext3, etc. É usado em casos extremos, geralmente após o fsck ter falhado.

dumpe2fs

Mostra informações de grupo de blocos e de superblocks.

tune2fs

Configura parâmetros ajustáveis em sistemas de arquivos ext2, como rótulo e limites de montagem antes de checar automaticamente.

Uso do Disco

df

Mostra o espaço disponível em cada dispositivo. A análise é feita diretamente no dispositivo. Por padrão, mostra o espaço em unidades de 1kb. A opção -h usa medidas apropriadas para tornar a saída mais inteligível.

du

Mostra o espaço ocupado. Sem argumentos, mostra o uso de cada diretório no sistema. Um diretório específico pode ser indicado através da opção -s. A opção -h usa medidas apropriadas para tornar a saída mais inteligível.

47

Page 47: Apostila LPI 101

Tópico 104: Dispositivos, Sistemas de Arquivos GNU/Linux e Padrão FHS

Objetivo 1.104.3: Controle da Montagem e Desmontagem dos Sistemas de ArquivosPeso: 3

/etc/fstab

Durante os procedimentos de carregamento do sistema, é o arquivo /etc/fstab que determina os pontos de montagem dos dispositivos. Cada linha corresponde a um dispositivo, contendo os seguintes termos separados por tabulações ou espaços:

1. Dispositvo

2. Ponto de montagem (“swap” se for uma partição de swap)

3. Tipo de sistema de arquivos

4. Opções

5. Dump (0 ou 1). Determina se dispositivo deverá ser considerado pelo comando dump. Se ausente, 0 é considerado.

6. fsck (1 ou 2). Determina a ordem da checagem feita pelo fsck durante o boot. Para a partição raiz (/), deve ser 1. Se ausente, 0 é presumido e a checagem não será feita no boot.

Para permitir que usuários comuns montem e desmontem dispositivos – geralmente, o caso de dispositivos removíveis – deve-se incluir a opção “users” para o respectivo dispositivo.

Exemplo:

/dev/cdrom /mnt/cdrom auto noauto,users,ro 0 0

A palavra “auto” na posição referente ao sistema de arquivos indica que o sistema de arquivos deve ser identificado automaticamente.

mount

O comando mount usado sem argumentos mostra os dispositivos montados e outros detalhes, como ponto de montagem e tipo do sistema de arquivos. Também é usado para montar dispositivos manualmente:# mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom

O comando do exemplo monta o dispositivo /dev/cdrom contendo mídia com sistema de arquivos iso9660 no diretório /mnt/cdrom, com permissão somente-leitura (ro).

Para montar manualmente um dispositivo que conste em /etc/fstab, basta fornecer para o comando mount a localização do dispositivo ou do diretório alvo. Para desmontar um dispositivo, o comando umount é utilizado tendo como argumento o dispositivo ou o diretório alvo a ser desmontado. Usado com a opção -a, mount monta todos os dispositivos em /etc/fstab (exceto os marcados com a opção noauto).

Opções de montagem

As opções de montagem são as mesmas para /etc/fstab e para mount diretamente. Se mais de uma opção for fornecida, deverão ser separadas por vírgula.

48

Page 48: Apostila LPI 101

Tópico 104: Dispositivos, Sistemas de Arquivos GNU/Linux e Padrão FHS

rw ou ro

Gravável ou somente leitura

noauto

Não é montado automaticamente

users

O dispositivo poderá ser montado e desmontado por usuários comuns

user

Apenas quem montou terá permissão de desmontar

owner

As permissões do dispositivo montado se adequarão ao usuário que o montou

usrquota

Habilita o uso de quotas de disco para usuário

grpquota

Habilita o uso de quotas de disco para grupo

remount

Remonta um dispositivo montado com outras opções. Útil para remontar um dispositivo como somente leitura, por exemplo.

Objetivo 1.104.4: Administração de Cotas de DiscoPeso: 3

Para habilitar o controle de cotas de disco, é necessário que o kernel suporte essa função e incluir a opção usrquota ou grpquota em /etc/fstab. Para que a opção recém adicionada tenha efeito, é necessário remontar o dispositivo.

Para gerar a tabela de estatísticas de uso do sistema de arquivos, deve ser executado o quotacheck -a, o que é normalmente feito pelos scripts de inicialização.

Para criar as configurações de cota para usuários e grupos, usa-se o comando edquota. A opção -u altera as configurações de cota para o usuário especificado da mesma forma que -g altera para o grupo especificado. O editor padrão do sistema (geralmente o vi) é usado para essa tarefa.

Essas configurações são armazenadas no diretório alvo onde a partição em questão foi montada, nos arquivos aquota.user e aquota.group. Nestes arquivos é possível especificar limites como espaço e inodes para o usuário ou grupo.

Para que as cotas passem a ser monitoradas e controladas, deve-se executar o comando quota -a. Assim a os limites para cada usuário serão comparados à tabela de estatísticas de cotas, até que um dos limites seja alcançado e o usuário não disponha de mais espaço.

É possível também estabelecer um período em que o usuário será avisado de que seu limite foi alcançado, através do comando edquota com a opção -ta, de uma maneira semelhante a forma de configurar os limites.

Para que o usuário acompanha o status de sua cota, basta executar o comando quota sem argumentos. O super-usuário pode gerar relatórios de cota dos sistemas de arquivos com o comando

49

Page 49: Apostila LPI 101

Tópico 104: Dispositivos, Sistemas de Arquivos GNU/Linux e Padrão FHS

repquota -a.

Objetivo 1.104.5: Controle de Permissões e Acesso à ArquivosPeso: 5

Há três níveis de permissão para arquivos e diretórios: usuário dono do arquivo (u), grupo dono do arquivo (g) e outros (o).

Exemplo de permissões de arquivos:

$ ls -l /etc/X11/xdm/total 80-rwxr-xr-x 1 root root 385 2006-01-14 17:30 GiveConsole-rwxr-xr-x 1 root root 244 2006-01-14 17:30 TakeConsole-r--r--r-- 1 root root 3618 2006-01-14 17:30 Xaccess-rwxr-xr-x 1 root root 191 2006-01-14 17:30 Xreset-r--r--r-- 1 root root 2559 2006-01-14 17:30 Xresources-r--r--r-- 1 root root 487 2005-09-12 02:56 Xservers-rwxr-xr-x 1 root root 4697 2006-01-14 17:33 Xsession-rwxr-xr-x 1 root root 4545 2005-09-12 03:01 Xsession.orig-rwxr-xr-x 1 root root 471 2006-01-14 17:33 Xsetup_0-rwxr-xr-x 1 root root 145 2006-01-14 17:30 Xsetup_0.orig-rwxr-xr-x 1 root root 189 2006-01-14 17:30 Xstartup-rwxr-xr-x 1 root root 303 2006-01-14 17:30 Xwillinglrwxrwxrwx 1 root root 20 2006-03-19 09:36 authdir -> ../../../var/lib/xdm-rwxr-xr-x 1 root root 14696 2006-01-14 17:35 chooserdrwxr-xr-x 2 root root 104 2006-01-14 17:30 pixmaps-r--r--r-- 1 root root 1533 2006-01-14 17:30 xdm-config

A primeira letra representa o tipo do arquivo, podendo ser:

d → diretório

l → link simbólico

c → dispositivo especial de caracteres

p → canal fifo

s → socket

- → arquivo convencional

As demais letras são divididas em grupos de três, determinando as permissões para o dono do arquivo, o grupo do arquivo e demais usuários, respectivamente.

As permissões são alteradas com o comando chmod, podendo ser leitura (r), escrita (w) e execução (x).

Exemplo: O grupo à que pertence o arquivo texto_simples terá apenas acesso de leitura ao mesmo e para os demais usuário será retirado a permissão de leitura:

$ chmod g=r,o-r texto_simples

Inclui permissão de escrita para o grupo do arquivo texto_simples:

$ chmod g+w texto_simples

Apesar de possuírem o mesmo modelo de permissões, arquivos e diretórios reagem de maneiras

50

Page 50: Apostila LPI 101

Tópico 104: Dispositivos, Sistemas de Arquivos GNU/Linux e Padrão FHS

diferentes. Em diretórios, a permissão “r” permite acessar o conteúdo do diretório, a permissão “w” permite criar arquivos dentro do diretório, e “x” permite listar o conteúdo do diretório.

Permissões Octais

Permissões podem ser manejadas mais eficientemente através de um formato numérico, chamado octal. O número octal consiste numa seqüência dígitos, cada um representando as permissões para o usuário, grupo e outros, nessa ordem.

Permissões octais (numéricas) e suas permissões correspondentes:

Dígito Leitura Escrita Execução

0 - - -

1 - - sim

2 - sim -

3 - sim sim

4 sim - -

5 sim - sim

6 sim sim -

7 sim sim sim

Assim, o comando:$ chmod 0664 texto_simples

Mudará as permissões do arquivo texto_simples para -rw-rw-r--, ou seja, leitura e escrita para o usuário, leitura e escrita para o grupo e somente leitura para outros.

Para mudar recursivamente todo os arquivos dentro de um diretório especificado, utiliza-se o chmod com a opção -R.

umask

umask é o filtro de permissões para criação de arquivos. As permissões para novos arquivos criados são aplicadas calculando as permissões padrão do sistema (0666 para arquivos e 0777 para diretórios) menos as permissões umask.

umask sem argumentos mostra a máscara atual de criação de arquivos. Para mudar, basta fornecer a nova máscara como argumento.

Em sistemas onde os grupos iniciais dos usuários são particulares, a máscara poderá ser 002, o que subtrairá das permissões padrão do sistema a permissão 2 (w – escrita), na categoria outros (o). Dessa forma, os arquivos serão criados com as permissões 0664.

Em sistemas onde o grupo inicial de todos os usuários é o grupo users, a máscara poderá ser 0022, o que subtrairá das permissões padrão do sistema a permissão 2 (w – escrita), nas categoria grupo (g) e outros (o). Dessa forma, os arquivos serão criados com as permissões 0644, limitando a permissão de escrita apenas ao usuário dono do arquivo.

51

Page 51: Apostila LPI 101

Tópico 104: Dispositivos, Sistemas de Arquivos GNU/Linux e Padrão FHS

suid e sgid

Todos processos são vinculados ao usuário que os iniciou. Dessa forma, um programa pode trabalhar com um arquivo apenas até onde as permissões deste arquivo permitem ao usuário. Algumas tarefas, no entanto, exigem que um usuário altere ou acesse arquivos aos quais não tem a permissão necessária. Por exemplo, alterar a própria senha exige que o arquivo /etc/passwd seja alterado e as permissões de /etc/passwd só permitem escrita ao usuário dono (root):

$ ls -l /etc/passwd-rw-r--r-- 1 root root 814 2006-03-15 14:04 /etc/passwd

Para contornar essa condição, existe um bit de permissão especial chamado suid. Arquivos executáveis que possuam a permissão suid serão executados em nome do dono do arquivo, e não em nome de quem os executou. A permissão suid é representada pela letra “s”, no campo referente ao dono do arquivo (u):

$ ls -l /usr/bin/passwd -rws--x--x 1 root bin 37880 2004-06-21 16:20 /usr/bin/passwd

Exemplo: Incluir o modo suid a um arquivo executável:

$ chmod u+s meu_programa

De maneira semelhante, a permissão sgid atua em diretórios. A permissão sgid é uma permissão de grupo, portanto aparece no campo de permissões referente ao grupo.

Num diretório com a permissão sgid, todos os arquivos criados pertencerão ao grupo do diretório em questão, o que é especialmente útil em diretórios com o qual trabalham um grupo de usuários pertencentes ao mesmo grupo.

Exemplo: Tornar um diretório sgid:

$ chmod g+s dir_do_grupo/

Quando habilitadas, as permissões suid e sgid fazem aparecer a letra “s” no lugar da letra “x” nas permissões de dono do arquivo e grupo do arquivo, respectivamente. Se a permissão de execução também existir, aparecerá a letra “s” em minúsculo. Se apenas as permissões suid e sgid existirem, aparecerá a letra “S” em maiúsculo.

A Permissão sticky

O inconveniente em usar diretórios compartilhados é que um usuário poderia apagar algum ou todo o conteúdo inadvertidamente. Para evitar que isso aconteça, existe o modo de permissão stick, que inibe usuários de apagarem arquivos que não tenham sido criados por eles mesmos. É o caso do diretório /tmp:

$ ls -ld /tmpdrwxrwxrwt 21 root root 1312 2006-03-23 22:51 /tmp

A letra “t” nas permissões para demais usuários demonstra o uso da permissão sticky. Se apenas a permissão sticky existir, aparecerá a letra “T” maiúscula.

Exemplo: Usar a permissão sticky no diretório “comunitario”

$ chmod o+t comunitario/

52

Page 52: Apostila LPI 101

Tópico 104: Dispositivos, Sistemas de Arquivos GNU/Linux e Padrão FHS

Permissões Especiais em Formato Octal

Como as opções convencionais, as permissões especiais também podem ser manipuladas em formato octal (numérico). A permissão especial é o primeiro dos quatro dígitos da opção no formato octal.

dígito suid sgid sticky

0 - - -

1 - - sim

2 - sim -

3 - sim sim

4 sim - -

5 sim - sim

6 sim sim -

7 sim sim sim

Atributos chattr

É possível estabelecer algumas regras para o tratamento de arquivos em sistemas do tipo ext2, os chamados atributos do arquivo. Para listar esses atributos, usa-se o comando lsattr. Para alterar esses atributos, usa-se o comando chattr. Cada atributo é especificado por uma letra precedida do sinal +, - ou =, que adiciona, retira ou torna exclusivo o atributo no arquivo/diretório especificado.

Atributo Descrição

A Não modifica a data de acesso

a O arquivo não poderá ter seu conteúdo sobregravado. Apenas o superusuário ou um programa capacitado por CAP_LINUX_IMMUTABLE poderão alterar essa opção.

c O kernel automaticamente comprime os dados para gravar e descomprime para ler

D Um diretório com essa função grava imediatamente os dados ao disco, como se a opção de montagem dirsync fosse aplicada a um subconjunto de arquivos

d Essa opção exclui o arquivo de um backup via dump

i Não poderá ser alterado, apagado ou renomeado. Nenhum link poderá tê-lo como alvo. Apenas o superusuário ou um programa capacitado por CAP_LINUX_IMMUTABLE poderão alterar essa opção.

j Todos os dados serão gravados ao jornal ext3 antes de serem propriamente gravados

s Se o arquivo for apagado, todos seus blocos são zerados no disco

S Alterações no arquivo são gravadas imediatamente no disco

u Após a remoção do arquivo, o conteúdo do arquivo é preservado,

53

Page 53: Apostila LPI 101

Tópico 104: Dispositivos, Sistemas de Arquivos GNU/Linux e Padrão FHS

Atributo Descrição

possibilitando recuperação.

Os atributos “c”, “s” e “u” não são de fato suportados.

Exemplo: Atribuir “i” ao arquivo “texto_simples”

$ chattr +i texto_simples

Listas de Controle de Acesso – ACL

Listas de controle de acesso (ACL) são usadas para obter maior controle sobre permissões de acesso à arquivos e diretórios. Uma ACL consiste em um conjunto de entradas, que determinam condições de acesso para um usuário em particular ou um grupo de usuários, permissões de leitura, escrita e execução/leitura.

Uma entrada ACL contém o tipo da entrada, opcionalmente um argumento para o tipo e as permissões.

Tipos de entrada:

OCL_USER_OBJ

Permissões para o dono do arquivo

ACL_USER

Permissões para os usuários especificados pelo argumento

ACL_GROUP_OBJ

Permissões de acesso para o grupo do arquivo

ACL_GROUP

Permissões para os grupos especificados pelo argumento

ACL_MASK

As maiores permissões possíveis para ACL_USER, ACL_GROUP_OBJ e ACL_GROUP

ACL_OTHER

Permissões para processos que não se encaixem em nenhum dos outros itens.

Exemplo de ACL textual:

user::rw-user:lisa:rw-group::r--group:toolies:rw-mask::r--other::r--

As permissões ACL tem correspondência com o modelo convencional de permissões. As permissões para o dono do arquivo correspondem à entrada ACL_USER_OBJ. As permissões para o grupo do arquivo correspondem à entrada ACL_GROUP_OBJ, somente se não houver ACL_MASK. Se a ACL contiver uma entrada ACL_MASK, as permissões para o grupo do arquivo corresponderão à entrada ACL_MASK. Permissões para demais usuários corresponde m à ACL_OTHER.

54

Page 54: Apostila LPI 101

Tópico 104: Dispositivos, Sistemas de Arquivos GNU/Linux e Padrão FHS

Objetivo 1.104.6: Modificar Donos e Grupos de ArquivosPeso: 1

Para alterar dono e grupo de arquivos e diretórios, usa-se chown e chgrp. O primeiro argumento é um nome válido de usuário ou grupo e o segundo é o arquivo/diretório para alterar. Apenas o superusuário pode usar o comando chown, mas qualquer usuário pode usar chgrp em seus arquivos/diretórios.

Mudar dono de arquivo:

# chown luciano texto_simples

Mudar grupo de arquivo:

$ chgrp users texto_simples

Para alterar usuário e grupo simultaneamente:

# chown luciano.users texto_simples

Tanto chown quanto chgrp possuem a opção -R, para alterar conteúdos de diretórios recursivamente.

Objetivo 1.104.7: Criar e Alterar Links Simbólicos e Links FísicosPeso: 1

Hardlinks (Links Físicos)

Hardlinks são um ou mais nomes que um inode do sistema de arquivos pode ter. Todo arquivo criado é, necessariamente, um hardlink para seu inode correspondente. O mesmo só será apagado após seu último hardlink remanescente ser apagado e nenhum programa estar mantendo o arquivo aberto. Novos hardlinks são criados usando o comando ln:

$ ln texto_simples outro_texto_simples

A opção -i do ls mostra o número inode dos arquivos:

$ ls -i texto_simples outro_texto_simples 55412 outro_texto_simples 55412 texto_simples

Ambos “texto_simples” e “outro_texto_simples” são hardlinks para o mesmo inode 55412. Hardlinks para o mesmo inode possuem mesma permissão, donos tamanho e data, pois essas permissões são registradas diretamente nos inodes.$ ls -l texto_simples -rw-r--r-- 2 luciano users 29 2006-01-01 00:01 texto_simples

O número “2” na segunda coluna de informações demonstra que há 2 hardlinks para o inode correspondente à texto_simples.

Hardlinks só podem ser criados dentro de um mesmo sistema de arquivos. Não é possível criar hardlinks para diretórios. Os arquivos especiais “.” e “..” são hardlinks para diretório criados exclusivamente pelo próprio sistema.

55

Page 55: Apostila LPI 101

Tópico 104: Dispositivos, Sistemas de Arquivos GNU/Linux e Padrão FHS

Softlinks (Links Simbólicos)

Links simbólicos apontam para um caminho, ou mais especificamente, para um hardlink. Links simbólicos podem apontar para qualquer alvo, inclusive em outros e diferentes sistemas de arquivos.

Para criar um link simbólico, usa-se ln com a opção -s.

$ ln -s texto_simples link_texto_simples

Detalhes do link:$ ls -l mais_texto_simples lrwxrwxrwx 1 luciano users 13 2006-03-24 05:11 mais_texto_simples -> texto_simples

Um link é indicado pela letra “l” no início das permissões, que neste caso são sempre rwxrwxrwx. O tamanho do arquivo de link é exatamente a quantidade de bytes (caracteres) do caminho alvo. A seta ao lado do nome do link simbólico indica o caminho alvo.

Um link simbólico para um caminho relativo será quebrado se o alvo ou o próprio link for movido. Um link simbólico para um caminho absoluto só será quebrado se o alvo for movido ou apagado.

Para atualizar a informação de alvo de um link simbólico existente, recria-se o link com a opção -f.

Funções comuns para links simbólicos são indicar caminhos longos freqüentemente usados, criar nomes mais simples para executáveis e nomes adicionais para bibliotecas de sistema.

Objetivo 1.104.8: Encontrar Arquivos de Sistema e Conhecer sua Localização CorretaPeso: 5

Hierarquia Padrão de Sistemas de Arquivos (FHS)

O FHS (do inglês: Filesystem Hierarchy Standard) é o padrão de diretórios base adotado pela maioria da distribuições GNU/Linux. Cada diretório serve a um propósito, sendo divididos entre os que devem existir no dispositivo/partição raiz e os que podem ser pontos de montagem para outras partições e/ou dispositivos.

Devem existir no dispositivo/partição raiz (/):

/bin e /sbin

Contém os programas necessários para carregar o sistema e comandos especiais.

/etc

Arquivos de configuração específicos da máquina.

/lib

Bibliotecas compartilhadas pelo programas em /bin e /sbin e módulos do kernel.

/mnt

Pontos de montagem para outras partições ou dispositivos

56

Page 56: Apostila LPI 101

Tópico 104: Dispositivos, Sistemas de Arquivos GNU/Linux e Padrão FHS

/proc

Armazena informações do kernel em tempo de execução

Podem ser pontos de montagem para outras partições e/ou dispositivos:

/boot

Kernel e mapas do sistema e os carregadores de boot de segundo estágio

/home

Os diretórios dos usuários

/root

Diretório do superusuário

/tmp

Arquivos temporários

/usr

Conteúdo para uso dos usuários. Programas, bibliotecas, documentos, etc.

/usr/local e /opt

Programa adicionais. Também podem conter as bibliotecas necessárias para os programas adicionais.

/var/www e /var/ftp

Páginas HTML e diretórios para FTP anônimo.

/var

Dados de programas como configurações variantes e logs. Contém diretório compartilhados (ex: /var/spool/mail) e não compartilhados (ex: /var/log)

Encontrando Arquivos

find

find diretório critério [-exec comando {} \;]

O argumento diretório indica onde o find deve iniciar a busca e critério pode ser o nome do arquivo /diretório a ser procurado e/ou uma regra para a busca.

Critérios comuns para o find:

-type

Tipo do arquivo (d para diretório, f para arquivo comum e l para link)

-name nome

Nome do arquivo

-user usuário

Dono do arquivo

-atime -/+n

57

Page 57: Apostila LPI 101

Tópico 104: Dispositivos, Sistemas de Arquivos GNU/Linux e Padrão FHS

Data de último acesso ao arquivo, menor ou maior que n. n corresponde a n*24 horas.

-ctime -/+n

Data de criação do arquivo, menor ou maior que n. n corresponde a n*24 horas.

-mtime -/+n

Data de modificação do arquivo, menor ou maior que n. n corresponde a n*24 horas.

-amin -/+n

Data de último acesso ao arquivo, menor ou maior que n. n corresponde a minutos.

-cmin -/+n

Data de criação do arquivo, menor ou maior que n. n corresponde a minutos.

-mmin -/+n

Data de modificação do arquivo, menor ou maior que n. n corresponde a minutos.

-newer arquivo

O arquivo procurado foi criado/modificado mais recentemente que arquivo.

-perm modo

O arquivo procurado tem permissão mode.

-perm -modo

O arquivo procurado tem todos as permissões listadas em mode.

-perm +modo

O arquivo procurado tem qualquer das permissões listadas em mode.

locate

Através do locate, todo caminho de arquivo ou diretório contendo a expressão fornecida como argumento será mostrado. A busca é significativamente mais rápida em relação ao find pois o locate realiza a busca no seu banco de dados - /var/lib/slocate/slocate.db – e não diretamente no disco. Esse banco de dados precisa ser sempre atualizado através do comando updatedb, o que é geralmente feito por um agendamento cron diário, mas que pode ser executado manualmente. O arquivo de configuração para o updatedb é o /etc/updatedb.conf. Nele constam informação como que diretórios e sistemas de arquivos ignorar na atualização do banco de dados.

Exemplo de /etc/updatedb.conf:

# /etc/updatedb.conf: slocate configuration file

PRUNEFS="devpts NFS nfs afs proc smbfs autofs iso9660 udf"PRUNEPATHS="/dev /proc /sys /tmp /usr/tmp /var/tmp /afs /net /mnt" export PRUNEFSexport PRUNEPATHS

prunefs indica quais tipos de sistemas de arquivos ignorar. prunepaths indica quais diretórios ignorar.

which

Usado para retornar o caminho completo para o programa fornecido. Realiza a busca apenas nos

58

Page 58: Apostila LPI 101

Tópico 104: Dispositivos, Sistemas de Arquivos GNU/Linux e Padrão FHS

diretórios definidos na variável de ambiente PATH.

whereis

Retorna os caminhos para o arquivo executável, código fonte e página manual referente ao comando solicitado, se houverem.

59

Page 59: Apostila LPI 101

Tópico 110: O Sistema de Janelas X

Objetivo 1.110.1: Instalar e Configurar o X11R6Peso: 5

Existem basicamente duas opções para o X11R6: Xfree86 e X.Org. Em termos práticos, não há diferença entre eles, apenas em alguns detalhes de arquitetura e configuração. O X11R6 é o ambiente gráfico de janelas no GNU/Linux.

Compatibilidade de Hardware

O primeiro passo antes de usar o X11R6 é verificar a compatibilidade de hardware. Em http://www.xfree86.org/4.1.0/Status.html pode ser encontrada a lista de dispositivos compatíveis. Ainda que o dispositivo não seja totalmente compatível, é possível utilizá-lo no modo VESA Framebuffer, se o mesmos suportar (a grande maioria dos dispositivos aceita esse modo).

Instalando o X11R6

O mais comum é que o X11R6 já venha instalado junto com a distribuição. Para instalar manualmente, os pacotes binários podem ser encontrados em ftp://ftp.xfree86.org/pub/XFree86/4.1.0/binaries/, em subdiretórios correspondentes a arquitetura desejada (axp=alpha, ix86=Intel 80x86) e versão da biblioteca Gnu C. Para auxiliar no processo de instalação, há o script Xinstall.sh, disponível no diretório common do servidor servidor FTP.

Verificar quais binários adequados:

$ sh Xinstall.sh -check

Os arquivos de instalação fundamentais são Xbin.tgz, Xlib.tgz, Xman.tgz, Xdoc.tgz, Xfnts.tgz, Xfenc.tgz, Xetc.tgz, Xvar.tgz, Xserv.tgz e Xmod.tgz.

Os arquivos devem ser descompactados em /usr/X11R6. O diretório /usr/X11R6/bin deve constar na variável PATH e o diretório /usr/X11R6/lib deve constar no cache de bibliotecas do ls.so.

Configurando o X11R6

Configurar o X11R6 significa criar um arquivo /etc/X11/XF86Config ou /etc/X11/xorg.conf, que deve conter informações sobre caminhos para arquivos de sistema, mouse, teclado, monitor e dispositivo de vídeo.

Ferramentas de configuração para o XFree86

XFree86 -autoconfig

Configura o servidor X automaticamente. Se bem sucedido, será possível mover o cursor do mouse na tela. Ctrl+Alt+backspace fecha a sessão do X. O arquivo de configuração ainda não foi escrito por essa ferramenta.

XFree86 -configure

Alternativa ao anterior

xf86cfg

61

Page 60: Apostila LPI 101

Tópico 110: O Sistema de Janelas X

Se não ocorrerem problemas, uma sessão X será iniciada com uma janela de configuração mostrando o diagrama de configuração do servidor X.

xf86config

Interface interativa de texto para entrar as informações de configuração manualmente.

Ferramentas de Configuração para o X.Org

X -configure

O servidor X carrega cada módulo de dispositivo, testa o driver e salva o resultado para o arquivo xorg.conf.new no diretório do usuário (provavelmente /root)

xorgcfg

Se não ocorrerem problemas, uma sessão X será iniciada com uma janela de configuração mostrando o diagrama de configuração do servidor X.

xorgconfig

Interface interativa de texto para entrar as informações de configuração manualmente.

Ajustes da Configuração

Após configurar o servidor X, pode ser necessário corrigir o posicionamento da tela. Para isso, existe o aplicativo xvidtune. Através de uma interface interativa, é possível reposicionar a tela. Encontrada a posição adequada, os valores retornados no terminal virtual devem ser incluídos como opção Modeline, na seção Monitor do arquivo /etc/X11/XF86Config ou /etc/X11/xorg.conf.

Outro item que pode precisar ser incluído manualmente é o funcionamento da roda do mouse. Na seção referente ao mouse em /etc/X11/XF86Config ou /etc/X11/xorg.conf. incluir a opção ZaxisMapping, como no exemplo:

Section "InputDevice" Driver "mouse" Option "Protocol" "IMPS/2" Option "Device" "/dev/mouse" Option "ZAxisMapping" "4 5"EndSection

Seções de XF86Config e xorg.conf

Os arquivos de configuração XF86Config e xorg.conf são divididos em seções no formato:

Section "nome da seção" Item_1 "Valor item 1" Item_2 "Valor item 2" ...EndSection

Nomes das seções:

Files

Caminhos para alguns arquivos necessários ao servidor X. Itens podem ser FontPath, RGBPath e ModulePath. O item mais importante é FontPath, que determina as localizações das fontes no sistema.

62

Page 61: Apostila LPI 101

Tópico 110: O Sistema de Janelas X

ServerFlags

Opções globais para o servidor X, no formato Option “Nome” “Valor”.

Module

Carregamento dinâmico de módulos. Load “nome do módulo”.

InputDevice

Dispositivos de entrada. Deve haver uma seção InputDevice para cada dispositivo. Os itens obrigatórios nessa seção são Identifier e Driver. Identifier é um nome único para identificação do dispositivo. Os valores mais comuns para Driver são “Keyboard” e “Mouse”. Outros itens são opcionais e são descritos com Option. Option “CorePointer” indica que o dispositivo é o apontador (mouse) primário. Option “CoreKeyboard” indica que o dispositivo é o teclado primário. O caminho para o dispositivo é indicado com Option “Device” “/dev/xxx”.

Device

Dispositivo de vídeo. Várias seções Device podem indicar vários dispositivos de vídeo, e deve haver ao menos um. Os itens obrigatórios nessa seção são Identifier e Driver. Identifier é um nome único para identificação do dispositivo. Driver especifica o drive do dispositivo de vídeo, disponíveis em /usr/X11R6/lib/modules/drivers/. Outros itens comuns são BusID (ex.: Option “BusID” “PCI:1:0:0”) e VideoRam (Ex.: Option “VideoRam” “8192”).

Monitor

O arquivo de configuração pode ter várias seções Monitor. Deveria haver pelo menos uma, mas se não houver uma padrão será criada. A única opção obrigatória é Identifier. Outras opções são UseModes, HorizSync, VertRefresh e ModeLine.

Modes

Modos de tela disponíveis para monitor. Não é obrigatória.

Screen

Agrega dispositivo e monitor. Pode haver mais de uma seção Screen. Apenas as opções Identifier e Device (indicando um dispositivo de vídeo de uma seção Device existente) são obrigatórias.

Display (Subseção de screen)

A subseção Display define, entre outras coisas, que resolução usar para cada profundidade de cor.

ServerLayout

Agrega as seções Screen e InputDevice para formar uma configuração completa do servidor X.

DRI

Seção opcional que fornece informação sobre a Infraestrutura de Renderização Direta (DRI). Para que usuários comuns possam utilizar o DRI, incluir o item Mode 0666 nesta seção.

63

Page 62: Apostila LPI 101

Tópico 110: O Sistema de Janelas X

Vendor

Informações e configurações personalizadas

Fontes

Há dois sistemas de fontes, Core e Xft. No sistema Core as fontes são manipuladas no servidor e no sistema Xft no cliente. O sistema Xft é mais avançado e permite usar fontes Type1, OpenType, TrueType, Speedo e CID, com suporte a anti-aliasing (cantos arredondados). O X.Org inclui suporte nativo ao sistema Xft.

Instalar fontes Xft

Para instalar fontes para o sistema Xft basta copiá-las para um dos diretórios de fontes padrão - /usr/X11R6/lib/X11/lib/fonts/*, /usr/share/fonts/* - ou para o diretório .fonts/ no diretório pessoal. O cache de fontes precisa ser atualizado para que a nova fonte possa ser usada, o que será feito automaticamente quando o X iniciar uma sessão. A atualização manual é feita através do comando fc-cache.

O alguns comportamento das funções do Xft pode ser alterado através do arquivos de configuração global /etc/fonts/fonts.conf ou no arquivo de configurações por usuário .fonts.conf, no diretório pessoal.

Para os programas que não usam fontes por Xft por padrão, o recurso *faceName em $HOME/.Xresources especifica um nome de fonte para usar através do Xft. Exemplo:

XTerm*faceName: Courier

O programa xterm usará a fonte Courier através de Xft.

Instalar fontes Core

Instalar fontes pelo sistema Core requer duas etapas: Criar o diretório com os arquivos das fontes e arquivos índice e em seguida incluir o diretório em questão caminho de fontes do sistema.

Para cada tipo de fonte, a instalação se dá de uma forma:

Fontes Bitmap (.bdf)

Esse tipo de fonte precisa primeiro ser convertido para o formato .pcf, através do comando bdftopcf. As fontes convertidas podem ser convertidas com o comando gzip. O diretório padrão para esse tipo de fonte é /usr/X11R6/lib/X11/fonts/75dpi. Após copiadas as fontes para o diretório, o comando mkfontdir deverá ser executado dentro do diretório.

Fontes escalonáveis (Type1, Speedo, TrueType, etc)

O procedimento é semelhante ao das fontes Bitmap, exceto pelo fato de que fontes escalonáveis não precisam ser convertidas e de que o comando mkfontscale precisa ser executado antes de mkfontdir. Os diretórios respectivos também se encontram em /usr/X11R6/lib/X11/fonts.

A segunda etapa é incluir cada diretório entre os diretórios de fontes de servidor X. Isso pode ser feito de maneira temporária, com o comando xset:

64

Page 63: Apostila LPI 101

Tópico 110: O Sistema de Janelas X

# xset fp+ /diretório/para/as/fontes# xset fp rehash

Os diretórios de fonte atualmente em uso podem ser listados com xset -q.

Para que os novos diretórios se tornem diretórios de fontes permanentes, devem ser incluídos na seção Files do arquivo de configuração /etc/X11/XF86Config ou /etc/X11/xorg.conf, como itens FontPath.

Servidor de Fontes xfs

O servidor de fontes xfs pode rodar como daemon ou tarefa comum, e fornece fontes através da rede ou mesmo no host local.

Iniciar o xfs como daemon:

# xfs -daemon

O arquivo de configuração padrão para o xfs é /usr/X11R6/lib/X11/fs/config, cujas opções mais comuns são:

client-limit

Limite de clientes conectados à esses servidor de fontes

alternate-servers

Outros servidores de fontes

catalogue

Caminhos dos diretórios contendo as fontes para serem fornecidas pelo xfs.

port

Porta tcp que o xfs usará para esperar por pedidos de conexão. Padrão: 7100.

Para que as fontes sejam solicitadas ao daemon do xfs, o endereço do host servidor de fontes precisa ser incluído como item FontPath da seção Files de /etc/X11/xorg.conf ou /etc/X11/XF86Config:

Se o servidor de fontes for o host local:FontPath “unix/:7100”

Se o servidor de fontes for o host chamado slackware, através de uma conexão TCP/IP:FontPath “tcp/slackware:7100”

Objetivo 1.110.2: Configurar o Gerenciador de DisplayPeso: 3

Muitas distribuições GNU/Linux já entram no login gráfico por padrão. Outras usam o login em texto. Esse comportamento pode ser modificado através do arquivo /etc/inittab, alterando runlevel inicial. O runlevel padrão para login em texto é 3 (multi-usuário). Para login gráfico é 5 (ou 4 para o slackware).

Login em texto:id:3:initdefault:

65

Page 64: Apostila LPI 101

Tópico 110: O Sistema de Janelas X

Login gráfico:id:5:initdefault:

O login gráfico passará então a ser controlado por um gerenciador de display.

Há três Gerenciadores de Display principais:

✔ xdm → Padrão do X

✔ gdm → Gnome

✔ kdm → Kde

Os respectivos arquivos de configuração encontram-se em:

✔ /etc/X11/xdm/*

✔ /etc/X11/gdm/*

✔ /etc/X11/kdm/*

xdm

O xdm faz parte dos programas do sistema de janelas X. O arquivo de configuração principal é o xdm-config. O caminho do programa é /usr/bin/xdm. Além de permitir o login local, também permite que o login seja realizado através da rede. Para tanto, é usado o protocolo XDMCP (é desativado por padrão). O xdm precisa estar rodando (o que já acontece caso o runlevel do sistema seja 5) e configurado adequadamente para responder à pedidos de login. O host remoto, através do comando X -query nome_do_servidor, solicitará o pedido de conexão.

Arquivos de configuração

/etc/X11/xdm/Xresources

A aparência do xdm pode ser modificada através deste arquivo. Fontes, cores e mensagens pode ser incluídas ou alteradas. Exemplo de conteúdo:xlogin*borderwidth:3xlogin*greeting:”Bem vindo ao login gráfico”xlogin*namePrompt:login:\040xlogin*greetColor:bluexlogin*foreground:blackxlogin*background:white

/etc/X11/xdm/Xsetup_0

Script executado antes do login, com permissão de super-usuário (root). Usado para definir cores/imagens de fundo e disparar aplicativos.

/etc/X11/xdm/Xservers

Mapeia um display para um host. Geralmente contém apenas a indicação para o display local::0 local /usr/X11R6/bin/X

Pode também ser usado para automaticamente enviar requerimento de login para hosts remotos rodando o X. O servidor X ocupará primeiro /dev/tty livre.

/etc/X11/xdm/Xaccess

Controla o acesso remoto via XDMCP. É possível estabelecer regras para pedidos de conexão remotos.

66

Page 65: Apostila LPI 101

Tópico 110: O Sistema de Janelas X

Trecho exemplo de Xaccess:

** CHOOSER BROADCAST

A primeira linha indica que qualquer host poderá requisitar login na máquina. A segunda linha indica que qualquer host (*) pode solicitar à máquina local uma lista de possíveis servidores (que estejam rodando o xdm) para conexão, que será obtida através de chamadas BROADCAST na rede.

/etc/X11/xdm/xdm-config

Arquivos que agrega os demais arquivos de configuração do xdm. Libera ou bloqueia o login remoto via XDMCP. Para bloquear, basta que exista a linha:DisplayManager.requestPort: 0

Assim, o xdm não esperará por pedidos de conexão diretos ou indiretos.

As condições e maneiras de usar o gdm e kdm são praticamentes iguais às do xdm, salvo alguns detalhes.

gdm

O executável do gdm encontra-se em /usr/bin/gdm. O arquivos de configuração são Sessions , gdm.conf e Init/Default, que corresponde ao Xresources. O arquivo gdm.conf controla a maioria das funções do xdm.

kdm

Os arquivos do kdm muitas vezes estão em /usr/share/config/kdm. O executável é /usr/bin/kdm. Sua configuração é em muito parecida com a do xdm, sendo o arquivo kdmrc o principal.

Objetivo 1.110.4: Instalar e Personalizar um Ambiente de Gerenciador de JanelasPeso: 5

O gerenciador de janelas é a interface entre o usuário e o servidor X. É praticamente impossível utilizar o ambiente gráfico sem um gerenciador de janelas. O procedimento mais comum para iniciar uma sessão do X é através do comando startx, que chama o script xinit. O script xinit tem dentre suas funções iniciar o servidor X e programas clientes. O gerenciador de janelas é o principal desses clientes. Há o script xinit padrão, localizado em /etc/X11/xinit/xinitrc, mas o mais comum é cada usuário ter seu script xinit personalizado, ~/.xinitrc.

Menus

Uma das funções de um gerenciador de janelas é fornecer menus de acesso à programas (menu root) e controle de janelas (menu window). O menu root é acessado clicando na área de trabalho, o menu window clicando na barra ou no botão do título da janela.

A configuração dos menus varia para cada gerenciador de janelas. De uma forma geral, arquivos de configuração de menus têm seu conteúdo disposto de forma hierárquica, discriminando o tipo do

67

Page 66: Apostila LPI 101

Tópico 110: O Sistema de Janelas X

item, o nome do item e o valor.

Exemplo do arquivo de menu do gerenciador de janelas Windowmaker, /etc/X11/WindowMaker/WMRootMenu:

("Applications", ("Info", ("Info Panel", INFO_PANEL), ("Legal", LEGAL_PANEL), ("System Console", EXEC, "xconsole"), ("System Load", SHEXEC, "xosview || xload"), ("Process List", EXEC, "xterm -e top"), ("Manual Browser", EXEC, "xman") ), ("Run...", SHEXEC, "%a(Run,Type command to run:)"), ("XTerm", EXEC, "xterm -sb"), ("Mozilla Firefox", EXEC, "firefox"),...

Emulador de Terminal

O emulador de terminal é um programa que permite interagir com o shell como num terminal de texto convencional. O emulador de terminal mais comum é o xterm. Há alternativas interessantes como o rxvt – que é mais leve que o xterm – e o aterm – que possui mais opções de configuração.

Os padrões de aparência e comportamento do xterm são determinados no arquivo /etc/X11/app-defaults/XTerm. Essas características podem ser alteradas através de argumentos para o xterm ou através dos arquivos ~/.Xresources ou ~/.Xdefaults.

Exemplo de ~/.Xresources:

XTerm*font: -misc-fixed-*-*-*-*-18-*-*-*-*-*-iso8859-1XTerm*foreground: grey70XTerm*background: blackXTerm*visualBell: true

Nesse exemplo é alterada a fonte, as cores de fundo e de letra e o bipe de sistema é inibido para dar lugar a uma sinalização visual. Para que essas alterações tenham efeito, é necessário aglutinar as configurações ao banco de dados de recursos do servidor X. Essa tarefa é realizada automaticamente (se houver alterações no arquivo) toda vez que o X inicia ou manualmente, com o comando:$ xrdb -merge ~/.Xresources

Há ferramentas que auxiliam a criação de arquivos de recursos, não só para o emulador de terminal, mas para uma variedade de outros programas:

xwininfo

Retorna informações sobre uma janela, inclusive informações de posição e tamanho.

editres

Permite testar as configurações e posteriormente salvá-las num arquivo.

Comportamento de Teclado e Mouse

A resposta para eventos de teclado e mouse pode ser alterada modificando o arquivo Xmodmap. O

68

Page 67: Apostila LPI 101

Tópico 110: O Sistema de Janelas X

arquivo global é /etc/X11/xinit/.Xmodmap (ultrapassado) e para o usuário é ~/.Xmodmap. Este arquivo deve ser passado ao programa xmodmap para alterar as respostas a eventos.

Exemplos de .Xmodmap:

Inverter os botões do mouse:

pointer = 3 2 1

Definir tecla Delete:

keycode 107 = Delete

O comando xev auxilia no entendimento e uso de eventos de mouse e teclado. xev abre uma janela que mostrará no emulador de terminal os códigos associados ao evento recebido na janela.

Bibliotecas Adicionais de Aplicativos

Muitos programas do ambiente gráfico exigem bibliotecas adicionais, como os programas criados com a biblioteca GTK (Gimp Tool Kit) ou QT. Essas dependências podem ser verificadas com o comando ldd, da mesma maneira usada em programas de terminal. Uma vez instaladas as dependências pendentes nos locais apropriados (localizáveis pelo ld.so), os programas funcionarão.

DISPLAY Remoto

Em ambientes de rede, é possível redirecionar a janela de um programa para ser mostrada e controlada em um outro host da rede. A variável de ambiente DISPLAY determina onde as janelas de programas serão mostradas e controladas.

A variável DISPLAY possui o seguinte formato:

hostname:displaynumber.screennumber

Em estações de trabalho convencionais onde o usuário está logado ao próprio host local e só há um conjunto de monitor e teclado/mouse, a variável DISPLAY é “:0.0”, o que significa que os programas serão mostrados e controlados no único display (entendido como o conjunto monitor/teclado/mouse) no host local. Displaynumber e screennumber são úteis, por exemplo, para operar com monitores adicionais instalados no host.

Se o usuário está logado no servidor por uma estação remota chamada “debian”, através de uma conexão XDMCP (login remoto via xdm), a variável DISPLAY para este usuário deverá ser “debian:0.0”, de forma que os programas executados por ele (programas oriundos do servidor) sejam mostrados e controlados na estação remota.

Por segurança, apenas o usuário e no mesmo host que iniciou a sessão X poderá abrir programas no respectivo display, a menos que outros usuários/hosts sejam autorizados a fazê-lo. Essa exclusividade é garantida através do MIT-MAGIC-COOKIE-1, um cookie que é gerado toda vez que uma sessão X inicia e armazenado em ~/.Xauthority.

A maneira mais convencional de se autorizar outros a acessar um mesmo display é usando o comando xhost, que libera/bloqueia o acesso para outros usuários/hosts ao display local:

Permitir a outros usuário no host local acessarem o display:

69

Page 68: Apostila LPI 101

Tópico 110: O Sistema de Janelas X

# xhost +local:

Permitir que usuários na estação remota “redhat” acessem o display local:

# xhost +redhat

Agora, basta mudar a variável DISPLAY na estação “redhat” para redirecionar a saída e o controle de programas para o display local. Supondo o host local chamar-se “slackware”, o seguinte comando poderia ser executado na estação “redhat”:# export DISPLAY=slackware:0.0

Para bloquear retirar a permissão da estação, substitui-se o sinal “+” por “-”:

xhost -redhat

Ao super-usuário (root) o acesso a um display no mesmo host estará garantido ao passo que existir a variável de ambiente XAUTHORITY apontando o caminho para o arquivo .Xauthority do usuário que iniciou a sessão do X.

70

Page 69: Apostila LPI 101

Apêndice 1

Objetivos detalhados para o exame 101Estes são os objetivos oficiais para o exame 101, disponíveis através do site http://www.lpi.org/. A opção por deixar os objetivos em inglês é para ater-se ao formato original, visto que os objetivos oficiais são publicados apenas nesse idioma.

Exam 101: Detailed ObjectivesThis is a required exam for LPI certification Level 1. It covers basic system administration skills that are common across all distributions of Linux.

IMPORTANT INFORMATION: These are the current 101 objectives, which are valid effective 2006-01-01. The 101 exams which are delivered through test centrers all over the world, will reflect these updated objectives for English in early 2006 and all other languages by late 2006/early 2007. Candidates should be prepared to take exams based upon these objectives after 1Q2006.

Each objective is assigned a weighting value. The weights range roughly from 1 to 10 and indicate the relative importance of each objective. Objectives with higher weights will be covered in the exam with more questions.

Maintainer: Dimitrios "Taki" Bogiatzoules, Product Developer Last modification: 2005-12-31

Topic 101: Hardware & Architecture

• 1.101.1 Configure Fundamental BIOS SettingsComment this objective!Weight: 1

Description: Candidates should be able to configure fundamental system hardware by making the correct settings in the system BIOS in x86 based hardware.

Key knowledge area(s):Enable and disable integrated peripherals.Configure systems with or without external peripherals such as keyboards.Correctly set IRQ, DMA and I/O addresses for all BIOS administrated ports and settings for error handling.

The following is a partial list of the used files, terms and utilities:/proc/ioports/proc/interrupts/proc/dma/proc/pci

• 1.101.3 Configure Modem and Sound cardsComment this objective!Weight: 1

Description: Candidates should be able to configure modem and soundcard settings.

Key knowledge area(s):Ensure devices meet compatibility requirements (particularly that the modem is not an

71

Page 70: Apostila LPI 101

Apêndice 1

unsupported win-modem).Verify that correct resources are used by the cards.Configure modem for outbound dial-up.Set serial port speeds.

The following is a partial list of the used files, terms and utilities:/proc/dma/proc/interrupts/proc/ioports/proc/pcilspcilsusb

• 1.101.4 Setup non-IDE DevicesComment this objective!Weight: 1

Description: Candidates should be able to configure non-IDE devices as SCSI, SATA, USB drives using the special BIOS as well as the necessary Linux tools.

Key knowledge area(s):Differentiate between the various types of non-IDE devices.Manipulate BIOS to detect used and available SCSI IDs.Set the correct hardware ID for different devices, especially the boot device.Configure BIOS settings to control the boot sequence when both non-IDE and IDE devices are present .

The following is a partial list of the used files, terms and utilities:SCSI ID/proc/scsi/scsi_info

• 1.101.5 Setup different PC expansion cardsComment this objective!Weight: 3

Description: Candidates should be able to configure various cards for the various expansion slots.

Key knowledge area(s):Know the differences between coldplug and hotplug devices.Determine hardware recources for devices.

The following is a partial list of the used files, terms and utilities:The appropriate subdirectories of /prochotplug configuration files, terms and utilitieslspcilsusb

• 1.101.6 Configure Communication DevicesComment this objective!Weight: 1

Description: Candidates should be able to install and configure different internal and

72

Page 71: Apostila LPI 101

Apêndice 1

external communication devices like modems, ISDN adapters and DSL modems.

Key knowledge area(s):Verification of compatibility requirements (such as the modem is not a winmodem).Correctly set IRQs, DMAs and I/O Ports of the cards to avoid conflicts between devices.Load and configure suitable device drivers.Set serial port speed.Setup modem for outbound PPP connections.

The following is a partial list of the used files, terms and utilities:/proc/dma/proc/interrupts/proc/ioportssetserial

• 1.101.7 Configure USB devicesComment this objective!Weight: 1

Description: Candidates should be able to activate USB support, use and configure different USB devices.

Key knowledge area(s):Identify and load the correct USB driver module.Demonstrate knowledge of the USB layer architecture and the modules used in the different layers.

The following is a partial list of the used files, terms and utilities:lspcixHCI moduleslsusb/etc/usbmgr/usbmodules/etc/hotplugudev configuration files, utilities and documentation

Topic 102: Linux Installation & Package Management

• 1.102.1 Design hard disk layoutComment this objective!Weight: 5

Description: Candidates should be able to design a disk partitioning scheme for a Linux system.

Key knowledge area(s): Allocate filesystems and swap space to separate partitions or disks.Tailor the design to the intended use of the system.Ensure the /boot partition conforms to the BIOS requirements for booting.

The following is a partial list of the used files, terms and utilities:/ (root) filesystem/var filesystem

73

Page 72: Apostila LPI 101

Apêndice 1

/home filesystemswap spacemount pointspartitions

• 1.102.2 Install a boot managerComment this objective!Weight: 1

Description: Candidates should be able to select, install and configure a boot manager.

Key knowledge area(s):Providing alternative boot locations and backup boot options (for example, using a boot floppy or a bootable CDROM).Install and configure a boot loader such as GRUB or LILO.Interact with the boot loader.

The following is a partial list of the used files, terms and utilities:/boot/grub/grub.conf/boot/grub/menu.lstgrub-installMBRsuperblockfirst stage boot loader/etc/lilo.conflilo

• 1.102.3 Make and install programs from sourceComment this objective!Weight: 5

Description: Candidates should be able to build and install an executable program from source. This objective includes being able to unpack a file of sources. Candidates should be able to make simple customizations to the Makefile, for example changing paths or adding extra include directories, either in the raw Makefile or using the configure tools.

Key knowledge area(s):Unpack a file of sources using typical compression utilities.Make simple customizations to Makefile such as changing paths or adding extra include directories.Apply parameters to a configure script.Know where sourses are stored by default.Compile a RPM oder DPKG software package using sources.

The following is a partial list of the used files, terms and utilities:RPM and DPKG commands/usr/src/gunzipgzipbzip2 tar configure

74

Page 73: Apostila LPI 101

Apêndice 1

make

• 1.102.4 Manage shared librariesComment this objective!Weight: 3

Description: Candidates should be able to determine the shared libraries that executable programs depend on and install them when necessary.

Key knowledge area(s):Identify shared libraries.Identify the typical locations of system libraries.Load shared libraries.

The following is a partial list of the used files, terms and utilities:lddldconfig/etc/ld.so.conf LD_LIBRARY_PATH

• 1.102.5 Use Debian package managementComment this objective!Weight: 8

Description: Candidates should be able to perform package management using the Debian package tools.

Key knowledge area(s):Install, upgrade and uninstall Debian binary packages.Find packages containing specific files or libraries which may or may not be installed.Obtain package information like version, content, dependencies, package integrity and installation status (whether or not the package is installed).

The following is a partial list of the used files, terms and utilities:unpackconfigure/etc/dpkg/dpkg.cfg/var/lib/dpkg/*/etc/apt/apt.conf/etc/apt/sources.listdpkgdselectdpkg-reconfigureapt-getalien

• 1.102.6 Use Red Hat Package Manager (RPM)Comment this objective!Weight: 8

Description: Candidates should be able to perform package management using RPM based tools.

Key knowledge area(s):

75

Page 74: Apostila LPI 101

Apêndice 1

Install, re-install, upgrade and remove RPM packages.Obtain information on RPM packages such as version, status, dependencies, integrity and signatures.Determine what files a package provides, as well as find which package a specific file comes from.

The following is a partial list of the used files, terms and utilities:/etc/rpmrc/usr/lib/rpm/*rpmgrep

Topic: 103 GNU & Unix Commands

• 1.103.1 Work on the command line Comment this objective!Weight: 5

Description: Candidates should be able to interact with shells and commands using the command line. The objective assumes the bash shell.

Key knowledge area(s):Use single shell commands and one line command sequences to perform basic tasks on the command line.Use and modify the shell environment including defining, referencing and exporting environment variables.Use and edit command history.Invoke commands inside and outside the defined path.Use commands recursively through a directory tree.

The following is a partial list of the used files, terms and utilities:. bashechoenvexecexportpwdsetunset~/.bash_history~/.profile

• 1.103.2 Process text streams using filtersComment this objective!Weight: 6

Description: Candidates should should be able to apply filters to text streams.

Key knowledge area(s):Send text files and output streams through text utility filters to modify the output using standard UNIX commands found in the GNU textutils package.

76

Page 75: Apostila LPI 101

Apêndice 1

The following is a partial list of the used files, terms and utilities:catcutexpandfmtheadhexdumpjoinnlpasteprsedsortsplittactailtrunexpanduniqwc

• 1.103.3 Perform basic file managementComment this objective!Weight: 3

Description: Candidates should be able to use the basic Linux commands to manage files and directories.

Key knowledge area(s):Copy, move and remove files and directories individually.Copy multiple files and directories recursively.Remove files and directories recursively.Use simple and advanced wildcard specifications in commands.Using find to locate and act on files based on type, size, or time.

The following is a partial list of the used files, terms and utilities:cpfind mkdir mv ls rm rmdir touch file globbing

• 1.103.4 Use streams, pipes and redirectsComment this objective!Weight: 5

Description: Candidates should be able to redirect streams and connect them in order to

77

Page 76: Apostila LPI 101

Apêndice 1

efficiently process textual data. Tasks include redirecting standard input, standard output and standard error, piping the output of one command to the input of another command, using the output of one command as arguments to another command and sending output to both stdout and a file.

Key knowledge area(s):Redirecting standard input, standard output and standard error.Pipe the output of one command to the input of another command.Use the output of one command as arguments to another command.Send output to both stdout and a file.

The following is a partial list of the used files, terms and utilities:tee xargs < << > >> | ` ` (back ticks)

• 1.103.5 Create, monitor and kill processesComment this objective!Weight: 5

Description: Candidates should be able to perform basic process management.

Key knowledge area(s):Run jobs in the foreground and background.Start a process that will run without being associated to a terminal.Signal a program to continue running after logout.Monitor active processes.Select and sort processes for display.Send signals to processes.Kill processes including processes that did not terminate correctly after an X session has closed

The following is a partial list of the used files, terms and utilities:& bg fg jobs kill nohup ps topkillall

• 1.103.6 Modify process execution prioritiesComment this objective!Weight: 3

Description: Candidates should should be able to manage process execution priorities.

78

Page 77: Apostila LPI 101

Apêndice 1

Key knowledge area(s):Know the default priority of a job that is created.Run a program with higher or lower priority than the default..Change the priority of a running process.

The following is a partial list of the used files, terms and utilities:nice ps renice top

• 1.103.7 Search text files using regular expressionsComment this objective!Weight: 3

Description: Candidates should be able to manipulate files and text data using regular expressions. This objective includes creating simple regular expressions containing several notational elements. It also includes using regular expression tools to perform searches through a filesystem or file content.

Key knowledge area(s):Create simple regular expressions containing several notational elements.Use regular expression tools to perform searches through a filesystem or file content.

The following is a partial list of the used files, terms and utilities:grepsed

• 1.103.8 Perform basic file editing operations using viComment this objective!Weight: 1

Description: Candidates should be able to edit text files using vi. This objective includes vi navigation, basic vi modes, inserting, editing, deleting, copying and finding text.

Key knowledge area(s):Navigate a document using vi.Use basic vi modes (Command, Insert, Replace).Insert, edit, delete, copy and find text.

The following is a partial list of the used files, terms and utilities:vi/, ?h,j,k,lG, H, Li, c, d, dd, p, o, aZZ, :w!, :q!, :e!:!

Topic 104: Devices, Linux Filesystems, Filesystem Hierarchy Standard

• 1.104.1 Create partitions and filesystemsComment this objective!

79

Page 78: Apostila LPI 101

Apêndice 1

Weight: 3

Description: Candidates should be able to configure disk partitions and then create filesystems on media such as hard disks. This includes the handling of swap partitions.

Key knowledge area(s):Use various mkfs commands to set up partitions and create various filesystems, including ext2, ext3, reiserfs, vfat and xfs.

The following is a partial list of the used files, terms and utilities:fdiskmkfsmkswap

• 1.104.2 Maintain the integrity of filesystemsComment this objective!Weight: 3

Description: Candidates should be able to maintain a standard filesystem, as well as the extra data associated with a journaling filesystem.

Key knowledge area(s):Verify the integrity of filesystems.Monitor free space and inodes.Repair simple filesystem problems.

The following is a partial list of the used files, terms and utilities:dudffscke2fsckmke2fsdebugfsdumpe2fstune2fs

• 1.104.3 Control mounting and unmounting filesystemsComment this objective!Weight: 3

Description: Candidates should be able to configure the mounting of a filesystem.

Key knowledge area(s):Manually mount and unmount filesystems.Configure filesystem mounting on bootup.Configure user mountable removeable filesystems such as tape drives, floppies and CDROMs.

The following is a partial list of the used files, terms and utilities:/etc/fstabmountumount

• 1.104.4 Managing disk quota

80

Page 79: Apostila LPI 101

Apêndice 1

Comment this objective!Weight: 3

Description: Candidates should be able to manage disk quotas for users.

Key knowledge area(s):Set up a disk quota for a filesystem.Edit, check and generate user quota reports.

The following is a partial list of the used files, terms and utilities:quotaedquotarepquotaquotaon

• 1.104.5 Use file permissions to control access to filesComment this objective!Weight: 5

Description: Candidates should be able to control file access through the proper use of permissions.

Key knowledge area(s):Manage access permissions on regular and special files as well as directories.Use access modes such as suid, sgid and the sticky bit to maintain security.Use the group field to grant file access to workgroups.Basic knowledge of ACL.Know how to change the default file creation mode of the shell.

The following is a partial list of the used files, terms and utilities:chmodumaskchattr (where applicable)

• 1.104.6 Manage file ownershipComment this objective!Weight: 1

Description: Candidates should be able to control user and group ownership of files. This objective includes the ability to change the user and group owner of a file as well as the default group owner for new files.

Key knowledge area(s):Manage access permissions on regular and special files as well as directories.Use the group field to grant file access to workgroups.

The following is a partial list of the used files, terms and utilities:chmodchownchgrp

• 1.104.7 Create and change hard and symbolic linksComment this objective!Weight: 1

81

Page 80: Apostila LPI 101

Apêndice 1

Description: Candidates should be able to create and manage hard and symbolic links to a file.

Key knowledge area(s):Create links.Identify hard and/or softlinks.Copying versus linking files.Use links to support system administration tasks.

The following is a partial list of the used files, terms and utilities:ln

• 1.104.8 Find system files and place files in the correct locationComment this objective!Weight: 5

Description: Candidates should be thouroughly familiar with the Filesystem Hierarchy Standard (FHS), including typical file locations and directory classifications.

Key knowledge area(s):Understand the correct locations of files under the FHS.Find files and commands on a Linux system.Know the location and propose of impotant file and directories as defind in the FHS.

The following is a partial list of the used files, terms and utilities:findlocateslocateupdatedbwhereiswhich/etc/updatedb.conf

Topic 110: The X Window System

• 1.110.1 Install & Configure X11Comment this objective!Weight: 5

Description: Candidates should be able to install and configure X and an X font server.

Key knowledge area(s):Verify that the video card and monitor are supported by an X server.Customize and tune X for the videocard and monitor.Install and configure an X font server.Install fonts.Manually edit the X Window configuration file.

The following is a partial list of the used files, terms and utilities:xorgcfgxorgconfig/etc/X11/xorg.conf XF86Setupxf86config

82

Page 81: Apostila LPI 101

Apêndice 1

xvidtune /etc/X11/XF86Config.Xresources

• 1.110.2 Setup a display managerComment this objective!Weight: 3

Description: Candidates should be able setup and customize a display manager. This objective covers the display managers XDM (X Display Manger), GDM (Gnome Display Manager) and KDM (KDE Display Manager).

Key knowledge area(s):Turn the display manager on or off.Change the display manager greeting.Change default color depth for the display manager.Configure display managers for use by X-stations.

The following is a partial list of the used files, terms and utilities:/etc/inittab /etc/X11/xdm/* /etc/X11/kdm/* /etc/X11/gdm/*

• 1.110.4 Install & Customize a Window Manager EnvironmentComment this objective!Weight: 5

Description: Candidates should be able to customize a system-wide desktop environment and/or window manager.

Key knowledge area(s):Demonstrate an understanding of customization procedures for window manager menus and/or desktop panel menus.Select and configuring the desired x-terminal (xterm, rxvt, aterm etc.).Verify and resolve library dependency issues for X applications.Export the X-display to a client workstation.

The following is a partial list of the used files, terms and utilities:.xinitrc .Xdefaults xhostDISPLAY environment variable

83

Page 82: Apostila LPI 101

Apêndice 2

GNU Free Documentation License

GNU Free Documentation License Version 1.2, November 2002

Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

0. PREAMBLE

The purpose of this License is to make a manual, textbook, or otherfunctional and useful document "free" in the sense of freedom: toassure everyone the effective freedom to copy and redistribute it,with or without modifying it, either commercially or noncommercially.Secondarily, this License preserves for the author and publisher a wayto get credit for their work, while not being considered responsiblefor modifications made by others.

This License is a kind of "copyleft", which means that derivativeworks of the document must themselves be free in the same sense. Itcomplements the GNU General Public License, which is a copyleftlicense designed for free software.

We have designed this License in order to use it for manuals for freesoftware, because free software needs free documentation: a freeprogram should come with manuals providing the same freedoms that thesoftware does. But this License is not limited to software manuals;it can be used for any textual work, regardless of subject matter orwhether it is published as a printed book. We recommend this Licenseprincipally for works whose purpose is instruction or reference.

1. APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work, in any medium, thatcontains a notice placed by the copyright holder saying it can bedistributed under the terms of this License. Such a notice grants aworld-wide, royalty-free license, unlimited in duration, to use thatwork under the conditions stated herein. The "Document", below,refers to any such manual or work. Any member of the public is alicensee, and is addressed as "you". You accept the license if youcopy, modify or distribute the work in a way requiring permissionunder copyright law.

A "Modified Version" of the Document means any work containing theDocument or a portion of it, either copied verbatim, or withmodifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section ofthe Document that deals exclusively with the relationship of thepublishers or authors of the Document to the Document's overall subject

85

Page 83: Apostila LPI 101

Apêndice 2

(or to related matters) and contains nothing that could fall directlywithin that overall subject. (Thus, if the Document is in part atextbook of mathematics, a Secondary Section may not explain anymathematics.) The relationship could be a matter of historicalconnection with the subject or with related matters, or of legal,commercial, philosophical, ethical or political position regardingthem.

The "Invariant Sections" are certain Secondary Sections whose titlesare designated, as being those of Invariant Sections, in the noticethat says that the Document is released under this License. If asection does not fit the above definition of Secondary then it is notallowed to be designated as Invariant. The Document may contain zeroInvariant Sections. If the Document does not identify any InvariantSections then there are none.

The "Cover Texts" are certain short passages of text that are listed,as Front-Cover Texts or Back-Cover Texts, in the notice that says thatthe Document is released under this License. A Front-Cover Text maybe at most 5 words, and a Back-Cover Text may be at most 25 words.

A "Transparent" copy of the Document means a machine-readable copy,represented in a format whose specification is available to thegeneral public, that is suitable for revising the documentstraightforwardly with generic text editors or (for images composed ofpixels) generic paint programs or (for drawings) some widely availabledrawing editor, and that is suitable for input to text formatters orfor automatic translation to a variety of formats suitable for inputto text formatters. A copy made in an otherwise Transparent fileformat whose markup, or absence of markup, has been arranged to thwartor discourage subsequent modification by readers is not Transparent.An image format is not Transparent if used for any substantial amountof text. A copy that is not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plainASCII without markup, Texinfo input format, LaTeX input format, SGMLor XML using a publicly available DTD, and standard-conforming simpleHTML, PostScript or PDF designed for human modification. Examples oftransparent image formats include PNG, XCF and JPG. Opaque formatsinclude proprietary formats that can be read and edited only byproprietary word processors, SGML or XML for which the DTD and/orprocessing tools are not generally available, and themachine-generated HTML, PostScript or PDF produced by some wordprocessors for output purposes only.

The "Title Page" means, for a printed book, the title page itself,plus such following pages as are needed to hold, legibly, the materialthis License requires to appear in the title page. For works informats which do not have any title page as such, "Title Page" meansthe text near the most prominent appearance of the work's title,preceding the beginning of the body of the text.

A section "Entitled XYZ" means a named subunit of the Document whosetitle either is precisely XYZ or contains XYZ in parentheses followingtext that translates XYZ in another language. (Here XYZ stands for aspecific section name mentioned below, such as "Acknowledgements","Dedications", "Endorsements", or "History".) To "Preserve the Title"of such a section when you modify the Document means that it remains asection "Entitled XYZ" according to this definition.

86

Page 84: Apostila LPI 101

Apêndice 2

The Document may include Warranty Disclaimers next to the notice whichstates that this License applies to the Document. These WarrantyDisclaimers are considered to be included by reference in thisLicense, but only as regards disclaiming warranties: any otherimplication that these Warranty Disclaimers may have is void and hasno effect on the meaning of this License.

2. VERBATIM COPYING

You may copy and distribute the Document in any medium, eithercommercially or noncommercially, provided that this License, thecopyright notices, and the license notice saying this License appliesto the Document are reproduced in all copies, and that you add no otherconditions whatsoever to those of this License. You may not usetechnical measures to obstruct or control the reading or furthercopying of the copies you make or distribute. However, you may acceptcompensation in exchange for copies. If you distribute a large enoughnumber of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, andyou may publicly display copies.

3. COPYING IN QUANTITY

If you publish printed copies (or copies in media that commonly haveprinted covers) of the Document, numbering more than 100, and theDocument's license notice requires Cover Texts, you must enclose thecopies in covers that carry, clearly and legibly, all these CoverTexts: Front-Cover Texts on the front cover, and Back-Cover Texts onthe back cover. Both covers must also clearly and legibly identifyyou as the publisher of these copies. The front cover must presentthe full title with all words of the title equally prominent andvisible. You may add other material on the covers in addition.Copying with changes limited to the covers, as long as they preservethe title of the Document and satisfy these conditions, can be treatedas verbatim copying in other respects.

If the required texts for either cover are too voluminous to fitlegibly, you should put the first ones listed (as many as fitreasonably) on the actual cover, and continue the rest onto adjacentpages.

If you publish or distribute Opaque copies of the Document numberingmore than 100, you must either include a machine-readable Transparentcopy along with each Opaque copy, or state in or with each Opaque copya computer-network location from which the general network-usingpublic has access to download using public-standard network protocolsa complete Transparent copy of the Document, free of added material.If you use the latter option, you must take reasonably prudent steps,when you begin distribution of Opaque copies in quantity, to ensurethat this Transparent copy will remain thus accessible at the statedlocation until at least one year after the last time you distribute anOpaque copy (directly or through your agents or retailers) of thatedition to the public.

It is requested, but not required, that you contact the authors of the

87

Page 85: Apostila LPI 101

Apêndice 2

Document well before redistributing any large number of copies, to givethem a chance to provide you with an updated version of the Document.

4. MODIFICATIONS

You may copy and distribute a Modified Version of the Document underthe conditions of sections 2 and 3 above, provided that you releasethe Modified Version under precisely this License, with the ModifiedVersion filling the role of the Document, thus licensing distributionand modification of the Modified Version to whoever possesses a copyof it. In addition, you must do these things in the Modified Version:

A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.C. State on the Title page the name of the publisher of the Modified Version, as the publisher.D. Preserve all the copyright notices of the Document.E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.H. Include an unaltered copy of this License.I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.

88

Page 86: Apostila LPI 101

Apêndice 2

O. Preserve any Warranty Disclaimers.

If the Modified Version includes new front-matter sections orappendices that qualify as Secondary Sections and contain no materialcopied from the Document, you may at your option designate some or allof these sections as invariant. To do this, add their titles to thelist of Invariant Sections in the Modified Version's license notice.These titles must be distinct from any other section titles.

You may add a section Entitled "Endorsements", provided it containsnothing but endorsements of your Modified Version by variousparties--for example, statements of peer review or that the text hasbeen approved by an organization as the authoritative definition of astandard.

You may add a passage of up to five words as a Front-Cover Text, and apassage of up to 25 words as a Back-Cover Text, to the end of the listof Cover Texts in the Modified Version. Only one passage ofFront-Cover Text and one of Back-Cover Text may be added by (orthrough arrangements made by) any one entity. If the Document alreadyincludes a cover text for the same cover, previously added by you orby arrangement made by the same entity you are acting on behalf of,you may not add another; but you may replace the old one, on explicitpermission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this Licensegive permission to use their names for publicity for or to assert orimply endorsement of any Modified Version.

5. COMBINING DOCUMENTS

You may combine the Document with other documents released under thisLicense, under the terms defined in section 4 above for modifiedversions, provided that you include in the combination all of theInvariant Sections of all of the original documents, unmodified, andlist them all as Invariant Sections of your combined work in itslicense notice, and that you preserve all their Warranty Disclaimers.

The combined work need only contain one copy of this License, andmultiple identical Invariant Sections may be replaced with a singlecopy. If there are multiple Invariant Sections with the same name butdifferent contents, make the title of each such section unique byadding at the end of it, in parentheses, the name of the originalauthor or publisher of that section if known, or else a unique number.Make the same adjustment to the section titles in the list ofInvariant Sections in the license notice of the combined work.

In the combination, you must combine any sections Entitled "History"in the various original documents, forming one section Entitled"History"; likewise combine any sections Entitled "Acknowledgements",and any sections Entitled "Dedications". You must delete all sectionsEntitled "Endorsements".

6. COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and other documentsreleased under this License, and replace the individual copies of this

89

Page 87: Apostila LPI 101

Apêndice 2

License in the various documents with a single copy that is included inthe collection, provided that you follow the rules of this License forverbatim copying of each of the documents in all other respects.

You may extract a single document from such a collection, and distributeit individually under this License, provided you insert a copy of thisLicense into the extracted document, and follow this License in allother respects regarding verbatim copying of that document.

7. AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separateand independent documents or works, in or on a volume of a storage ordistribution medium, is called an "aggregate" if the copyrightresulting from the compilation is not used to limit the legal rightsof the compilation's users beyond what the individual works permit.When the Document is included in an aggregate, this License does notapply to the other works in the aggregate which are not themselvesderivative works of the Document.

If the Cover Text requirement of section 3 is applicable to thesecopies of the Document, then if the Document is less than one half ofthe entire aggregate, the Document's Cover Texts may be placed oncovers that bracket the Document within the aggregate, or theelectronic equivalent of covers if the Document is in electronic form.Otherwise they must appear on printed covers that bracket the wholeaggregate.

8. TRANSLATION

Translation is considered a kind of modification, so you maydistribute translations of the Document under the terms of section 4.Replacing Invariant Sections with translations requires specialpermission from their copyright holders, but you may includetranslations of some or all Invariant Sections in addition to theoriginal versions of these Invariant Sections. You may include atranslation of this License, and all the license notices in theDocument, and any Warranty Disclaimers, provided that you also includethe original English version of this License and the original versionsof those notices and disclaimers. In case of a disagreement betweenthe translation and the original version of this License or a noticeor disclaimer, the original version will prevail.

If a section in the Document is Entitled "Acknowledgements","Dedications", or "History", the requirement (section 4) to Preserveits Title (section 1) will typically require changing the actualtitle.

9. TERMINATION

You may not copy, modify, sublicense, or distribute the Document exceptas expressly provided for under this License. Any other attempt tocopy, modify, sublicense or distribute the Document is void, and willautomatically terminate your rights under this License. However,parties who have received copies, or rights, from you under thisLicense will not have their licenses terminated so long as such

90

Page 88: Apostila LPI 101

Apêndice 2

parties remain in full compliance.

10. FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versionsof the GNU Free Documentation License from time to time. Such newversions will be similar in spirit to the present version, but maydiffer in detail to address new problems or concerns. Seehttp://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing version number.If the Document specifies that a particular numbered version of thisLicense "or any later version" applies to it, you have the option offollowing the terms and conditions either of that specified version orof any later version that has been published (not as a draft) by theFree Software Foundation. If the Document does not specify a versionnumber of this License, you may choose any version ever published (notas a draft) by the Free Software Foundation.

ADDENDUM: How to use this License for your documents

To use this License in a document you have written, include a copy ofthe License in the document and put the following copyright andlicense notices just after the title page:

Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,replace the "with...Texts." line with this:

with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.

If you have Invariant Sections without Cover Texts, or some othercombination of the three, merge those two alternatives to suit thesituation.

If your document contains nontrivial examples of program code, werecommend releasing these examples in parallel under your choice offree software license, such as the GNU General Public License,to permit their use in free software.

91