Apostila completa linux

Transcrição

Apostila completa linux
PROGRAMA
TÉCNICO CIDADÃO
Índice
GNU/LINUX BÁSICO
Introdução ao Linux......................................................................................... 14
Origem do Linux................................................................................................................ 14
Licenciamento e Versões do kernel do Linux...................................................................15
Distribuições Linux............................................................................................................ 16
Linux Standard Base (LSB)................................................................................................ 17
Visão geral do Sistema Operacional Linux.........................................................................17
Vantagens do Linux...........................................................................................................17
Conceitos Unix...................................................................................................................18
Tudo é Arquivo..................................................................................................................... 18
Case Sensitive...................................................................................................................... 18
Comandos............................................................................................................................ 19
Primeiros Passos................................................................................................................19
Prompt de Login...................................................................................................................
bash.....................................................................................................................................
logout...................................................................................................................................
shutdown.............................................................................................................................
reboot..................................................................................................................................
19
19
21
22
23
Instalação do Debian GNU/Linux....................................................................... 24
Um pouco sobre o Debian................................................................................................. 24
Curiosidades......................................................................................................................... 24
De onde surgiu o nome “Debian”?................................................................................................... 24
Como se pronuncia “Debian”?..........................................................................................................25
Estrutura do sistema Debian................................................................................................ 25
Qual o significado dos codinomes das distribuições Debian?...........................................................25
Como funciona o sistema de versões do Debian?............................................................................ 25
A distribuição stable......................................................................................................................................25
A distribuição testing.....................................................................................................................................26
A distribuição unstable..................................................................................................................................26
Iniciando a Instalação........................................................................................................27
Inicializando o instalador...................................................................................................... 27
Gerenciamento de Pacotes...............................................................................42
O gerenciador de pacotes do Debian................................................................................ 42
dpkg..................................................................................................................................... 43
Listando os pacotes instalados no sistema.......................................................................................44
Obtendo detalhes sobre um pacote Debian..................................................................................... 45
Exibindo status dos pacotes do sistema........................................................................................................48
Instalando e atualizando pacotes binários do Debian...................................................................... 49
Padrão de nomes dos arquivos binários do Debian.......................................................................................50
Removendo pacotes binários Debian............................................................................................... 50
O Advanced Package Tool (APT)........................................................................................... 51
Repositórios de pacotes do Debian.................................................................................................. 52
1
PROGRAMA
TÉCNICO CIDADÃO
O arquivos /etc/apt/sources.list.....................................................................................................................52
Adicionando um cdrom no sources.list..........................................................................................................53
Adicionando repositórios web no sources.list................................................................................................54
Utilizando o apt-get para gerenciar pacotes.....................................................................................54
Programas auxiliares........................................................................................................................ 57
aptitude.........................................................................................................................................................57
apt-show-versions..........................................................................................................................................58
apt-cache.......................................................................................................................................................58
O gerenciador de pacotes RedHat (RPM)...........................................................................60
Consulta de pacotes RPM..................................................................................................... 61
Instalação, desinstalação e atualização de pacotes RPM...................................................... 63
Instalação/Atualização...................................................................................................................... 64
Desinstalação................................................................................................................................... 65
Estrutura de Diretórios.....................................................................................66
Hierarquia..........................................................................................................................66
Caminho Absoluto................................................................................................................ 66
Caminho Relativo................................................................................................................. 67
Localização na Estrutura de Diretórios................................................................................. 67
pwd...................................................................................................................................................67
ls.......................................................................................................................................................68
cd......................................................................................................................................................69
$PATH............................................................................................................................................... 71
Histórico de Comandos.....................................................................................................................72
Teclas de Atalho............................................................................................................................... 74
Tecla [TAB]....................................................................................................................................................75
Filesystem Hierarchy Standard............................................................................................. 75
/bin................................................................................................................................................... 76
/boot................................................................................................................................................. 77
/dev...................................................................................................................................................77
Portas Seriais e Paralelas...............................................................................................................................78
/etc....................................................................................................................................................78
/home............................................................................................................................................... 79
/root.................................................................................................................................................. 79
/lib.....................................................................................................................................................79
/mnt.................................................................................................................................................. 79
/opt................................................................................................................................................... 80
/sbin..................................................................................................................................................80
/tmp.................................................................................................................................................. 80
/usr................................................................................................................................................... 80
/var................................................................................................................................................... 81
/proc................................................................................................................................................. 81
Manipulação de arquivos e diretórios................................................................85
mkdir................................................................................................................................. 85
tree....................................................................................................................................86
rmdir..................................................................................................................................87
rm......................................................................................................................................88
2
PROGRAMA
TÉCNICO CIDADÃO
touch................................................................................................................................. 89
cp.......................................................................................................................................90
mv..................................................................................................................................... 93
cat..................................................................................................................................... 94
tac..................................................................................................................................... 95
ln....................................................................................................................................... 96
Inodes.................................................................................................................................. 96
Links Simbólicos................................................................................................................... 97
Hardlinks.............................................................................................................................. 98
Gerenciamento de usuários e grupos.............................................................. 100
Identificadores de Usuários e Grupos (UID e GID)........................................................... 100
/etc/passwd........................................................................................................................
/etc/shadow........................................................................................................................
/etc/group...........................................................................................................................
/etc/gshadow......................................................................................................................
100
101
102
102
Gerenciamento de usuários.............................................................................................103
Adicionando usuários com useradd.................................................................................... 103
Definindo senhas com passwd........................................................................................... 105
Troca de Senhas................................................................................................................. 106
Removendo usuários com userdel...................................................................................... 108
Aumentando a segurança com o comando chage.............................................................. 109
Gerenciando informações de usuários com chfn e finger................................................... 111
Modificando o shell do usuário com chsh........................................................................... 113
Verificando integridade dos arquivos de senhas com pwck................................................ 114
Convertendo/Revertendo o sistema de senhas shadow..................................................... 115
Modificando contas de usuários com usermod................................................................... 115
Gerenciamento de grupos............................................................................................... 117
Obtendo Informações com o comando id........................................................................... 117
Adicionando grupos com groupadd.................................................................................... 118
Removendo grupos com groupdel...................................................................................... 119
Adicionando usuários aos grupos....................................................................................... 119
Removendo usuários dos grupos........................................................................................ 120
Modificando informações sobre grupos.............................................................................. 120
Definindo administradores de grupos com gpasswd.......................................................... 121
Trocando o grupo principal temporariamente com newgrp................................................ 122
Verificando Integridade dos arquivos de grupos com grpck............................................... 123
Permissões de arquivos e diretórios................................................................125
Entendendo as permissões..............................................................................................125
Definindo Permissões com chmod...................................................................................127
Modo Simbólico de Permissões........................................................................................... 128
Modo octal de permissões.................................................................................................. 130
Máscara de usuário (umask)............................................................................................... 132
3
PROGRAMA
TÉCNICO CIDADÃO
O shell bash (Bourne Again Shell)................................................................... 135
Redirecionamento........................................................................................................... 135
Entrada de dados padrão (/dev/stdin)................................................................................ 136
Saída de dados padrão (/dev/stdout).................................................................................. 136
Saída de erros padrão (/dev/stderr).................................................................................... 137
Operadores de Redirecionamento...................................................................................... 137
Operadores de Saída de dados padrão (stdout): “>” e “>>” ....................................................... 137
Operadores de entrada de dados padrão: “<” e “<<”.................................................................. 140
Redirecionando a saída de erros padrão (stderr)........................................................................... 141
Redirecionamento com pipes: “|”...................................................................................................142
Diferenças entre o “|” e o “>”........................................................................................................ 144
Comando tee.................................................................................................................................. 144
Tabela de Redirecionamentos........................................................................................................ 146
Paginadores....................................................................................................................................147
Caracteres especiais do bash (Metacaracteres).............................................................. 147
Executando múltiplos comandos em ordem determinada ................................................. 150
Operadores de controle lógico: && e || (AND e OR)........................................................................152
Configuração do shell bash..............................................................................................153
Arquivo /etc/profile.............................................................................................................
Arquivo ~/.bash_profile......................................................................................................
Arquivo /etc/bash.bashrc ou /etc/bashrc............................................................................
Arquivo ~/.bashrc...............................................................................................................
Arquivo ~/.bash_logout......................................................................................................
Arquivo ~/.bash_history.....................................................................................................
Aliases de shell...................................................................................................................
Escape de Comandos no bash............................................................................................
155
155
156
157
158
159
159
160
Documentação .............................................................................................. 162
Páginas de manual.......................................................................................................... 162
Man pages.......................................................................................................................... 162
Info Pages........................................................................................................................... 165
Sistema de buscas na documentação do sistema.......................................................................... 166
Criando a base de dados.............................................................................................................................166
Efetuando pesquisas na documentação......................................................................................................166
Localizando arquivos no sistema.....................................................................168
Comando find.................................................................................................................. 168
Comando whereis............................................................................................................172
Comando locate...............................................................................................................173
Editores de Texto...........................................................................................174
Vi..................................................................................................................................... 174
Modo
Modo
Modo
Dicas
de comando..............................................................................................................
de Edição..................................................................................................................
de linha.....................................................................................................................
preciosas do Vim......................................................................................................
175
179
180
181
4
PROGRAMA
TÉCNICO CIDADÃO
Arquitetura de hardware................................................................................ 183
setserial...........................................................................................................................185
Particionamento e sistemas de arquivos......................................................... 188
Particionamento.............................................................................................................. 188
A tabela de partições......................................................................................................... 188
Partições primárias......................................................................................................................... 189
A partição extendida...................................................................................................................... 189
As partições lógicas........................................................................................................................ 189
Endereçamento e geometria dos discos rígidos................................................................. 190
Modo LBA de endereçamento.........................................................................................................191
Modo CHS de geometria................................................................................................................. 191
Particionando o disco rígido com fdisk............................................................................... 192
Sistemas de arquivos......................................................................................................... 196
O sistema de arquivos ext2: O início de tudo................................................................................. 197
O sistema de arquivos ext3: A revolução....................................................................................... 197
Funcionamento do journaling......................................................................................................................197
O sistema de arquivos reiserfs: Nascido para ser rápido............................................................... 198
Criando um sistema de arquivos........................................................................................ 198
Definindo um ponto de montagem..................................................................................... 199
O arquivo /etc/fstab........................................................................................................................ 201
Verificando a integridade de sistemas de arquivos............................................................ 202
Gerenciando quotas de sistemas de arquivos.................................................................... 202
Habilitando as quotas..................................................................................................................... 203
Configurando quotas p/ usuários e grupos.....................................................................................204
Verificando as quotas..................................................................................................................... 204
Adicionando uma nova swap.............................................................................................. 205
Compactadores e arquivadores.......................................................................207
Compactadores............................................................................................................... 207
A ferramenta gzip............................................................................................................... 207
A ferramenta bzip2............................................................................................................. 209
Arquivadores................................................................................................................... 211
A ferramenta tar................................................................................................................. 211
As famosas tarballs.........................................................................................................................213
Processo de Inicialização................................................................................215
Gerenciadores de boot.................................................................................................... 215
LILO.................................................................................................................................... 216
Configurando o lilo..........................................................................................................................216
Restaurando o setor de boot.......................................................................................................... 218
GRUB.................................................................................................................................. 218
Instalando o GRUB no MBR.............................................................................................................221
O processo de init............................................................................................................221
O que são runlevels (Níveis de execução)?......................................................................... 222
O arquivo /etc/inittab......................................................................................................... 223
Estrutura de inicialização de serviços................................................................................. 225
5
PROGRAMA
TÉCNICO CIDADÃO
O script /etc/init.d/rc....................................................................................................................... 225
Os diretórios de inicialização de serviços....................................................................................... 225
Servidor Gráfico X-Window............................................................................. 227
Funcionamento................................................................................................................227
Configurando o XFree86..................................................................................................... 227
Inicializando o XFree86...................................................................................................... 230
Acessando o XFree86 através da rede............................................................................... 230
Agendamento de Tarefas................................................................................232
Cron.................................................................................................................................232
O arquivo /etc/crontab........................................................................................................ 232
Diretórios de agendamento do cron................................................................................... 233
O diretório /etc/cron.d.................................................................................................................... 234
Agendamentos definidos pelos usuários............................................................................ 234
Controle de acesso ao cron................................................................................................ 235
Bibliotecas Compartilhadas.............................................................................237
Trabalhando com bibliotecas compartilhadas.................................................................... 237
Listando Bibliotecas disponíveis..................................................................................................... 237
Descobrindo quais bibliotecas um binário utiliza........................................................................... 238
Adicionando novas bibliotecas ao sistema..................................................................................... 239
Gerenciamento de processos.......................................................................... 240
Lidando com processos................................................................................................... 240
Listando processos............................................................................................................. 240
O comando ps.................................................................................................................................240
Significado das colunas na saída do comando ps........................................................................................243
O comando top............................................................................................................................... 244
Níveis de processos............................................................................................................ 245
Sinalizando processos........................................................................................................ 247
O comando kill................................................................................................................................247
O comando killall............................................................................................................................ 248
O comando killall5.......................................................................................................................... 249
Gerenciando prioridades dos processos............................................................................. 249
Definindo prioridades com o comando nice................................................................................... 249
Modificando prioridades com o comando renice............................................................................ 250
GNU/LINUX AVANÇADO
Os serviços de rede no Linux.......................................................................... 254
Instalando um Servidor DNS no Linux............................................................................. 254
Servidor de nomes somente para cache............................................................................ 255
Configuração de um servidor de nomes autoritativo.......................................................... 255
Definição de zonas para o domínio................................................................................................ 256
Criação dos mapas de zonas.......................................................................................................... 257
Criação de mapas de resolução reversa.........................................................................................261
Encaminhando requisições de pesquisas........................................................................... 264
Como testar a configuração............................................................................................... 265
Validando a configuração do bind.................................................................................................. 265
6
PROGRAMA
TÉCNICO CIDADÃO
Validando mapas de zonas.............................................................................................................266
Testando a resolução de nomes..................................................................................................... 267
Sistemas de Resolução de Nomes................................................................... 271
Sistema de resolução hosts.............................................................................................271
Problemas do sistema de hosts...................................................................................................... 271
Sistema de resolução DNS...............................................................................................272
Nomes e Domínios.............................................................................................................. 272
Processo de resolução DNS................................................................................................ 273
Sistemas de e-mail.........................................................................................276
Transações de e-mail.......................................................................................................276
MUA - Mail User Agent........................................................................................................
SMTP – Simple Mail Transfer Protocol.................................................................................
MTA – Mail Transfer Agent..................................................................................................
POP3 e IMAP.......................................................................................................................
277
278
278
278
Sendmail..........................................................................................................................279
Instalando o sendmail no Debian.......................................................................................
Configurando o Sendmail no Debian..................................................................................
Testando sua configuração................................................................................................
Fila de mensagens no Sendmail.........................................................................................
Aliases de e-mail................................................................................................................
279
281
284
288
290
O arquivo ~/.forward...................................................................................................................... 291
Listas de destinatários....................................................................................................................291
Domínios virtuais no Sendmail........................................................................................... 292
Configuração.................................................................................................................................. 292
Enviando emails com telnet............................................................................................... 294
Postfix..............................................................................................................................295
Instalação e configuração básica do Postfix....................................................................... 296
Controlando o daemon do Postfix....................................................................................... 299
Configurações específicas do Postfix.................................................................................. 299
Gerenciamento das configurações................................................................................................. 299
Consultando parâmetros.............................................................................................................................300
Modificando parâmetros..............................................................................................................................301
Para quais endereços IP ou redes permitir RELAY?........................................................................ 302
O hostname totalmente qualificado (FQDN) do servidor Postfix.................................................... 302
Em quais interfaces de rede permitir conexões SMTP....................................................................304
Configuração para caixas-postais no estilo Maildir.........................................................................305
Encaminhando mensagens para outro MTA................................................................................... 306
Definindo aliases............................................................................................................................ 306
Definindo um alias para o postmaster.........................................................................................................307
Definindo um alias para o root....................................................................................................................308
Domínios Virtuais no Postfix............................................................................................... 309
Servidores POP3 e IMAP...................................................................................................310
Instalando o Courier....................................................................................................................... 311
Configurando o Courier...................................................................................................................311
7
PROGRAMA
TÉCNICO CIDADÃO
Testando o funcionamento............................................................................................................. 314
Network Information Services (NIS)................................................................ 318
Autenticação centralizada com NIS................................................................................. 318
Instalação dos serviços NIS................................................................................................ 319
Configuração do servidor NIS............................................................................................. 320
Configuração do cliente NIS............................................................................................... 323
Entidades do Sistema..................................................................................................................... 324
O arquivo /etc/nsswitch.conf........................................................................................................................325
Testando suas configurações............................................................................................. 326
Modificando as senhas dos usuários................................................................................... 326
Servidores de Arquivos...................................................................................328
Network File System – NFS.............................................................................................. 328
Instalando o NFS no Debian............................................................................................... 328
Configurando o servidor NFS.............................................................................................. 329
Montando compartilhamentos remotos.............................................................................. 331
SAMBA............................................................................................................................. 332
Curiosidade........................................................................................................................ 332
Instalação do Samba no Debian......................................................................................... 332
Caminhos de instalação..................................................................................................................334
Configuração do Samba..................................................................................................... 335
O Samba como PDC da rede...........................................................................................................335
Domínio padrão.............................................................................................................................. 335
Nome NetBIOS do servidor Samba................................................................................................. 335
Nível de segurança......................................................................................................................... 336
Encriptação de senhas....................................................................................................................340
Habilitar logons em domínio...........................................................................................................340
Definindo um Master Browser........................................................................................................ 341
Precedência na eleição de Master Browsers...................................................................................342
Configuração do Samba como "domain master"............................................................................342
Forçando uma eleição de "Master Browser" local...........................................................................342
Configuração para um servidor de horas....................................................................................... 343
Corrigindo problemas com caracteres estranhos........................................................................... 344
Usuários inválidos para login..........................................................................................................345
Definindo usuários administradores............................................................................................... 345
Liberação/Restrição de acesso por hosts........................................................................................346
Arquivos de logs do Samba............................................................................................................ 347
Tamanho máximo dos arquivos de logs......................................................................................................348
Não enviar logs para o syslog......................................................................................................................348
Suporte a WINS...............................................................................................................................349
Habilitando o servidor WINS no Samba.......................................................................................................349
Indicando ao Samba qual o servidor WINS da rede.....................................................................................349
Encaminhar pesquisas de nomes não satisfeitas no WINS para o DNS....................................................... 350
Performance................................................................................................................................... 350
Melhorando a performance com opções de sockets....................................................................................350
Suporte a impressão.......................................................................................................................352
Carregar as filas de impressão configuradas...............................................................................................352
8
PROGRAMA
TÉCNICO CIDADÃO
Onde encontrar as configurações das filas de impressão............................................................................352
Qual sistema de impressão utilizar?............................................................................................................353
Perfis ambulantes, scripts de logon e contas de máquinas............................................................353
Habilitando suporte a perfis ambulantes.....................................................................................................353
Habilitando o suporte a scripts de logon.....................................................................................................354
Criação automática de contas de máquinas................................................................................................357
Compartilhamentos............................................................................................................ 359
Compartilhamentos públicos.......................................................................................................... 359
Compartilhamentos de grupos (departamentais)...........................................................................361
Compartilhamento para perfis ambulantes.................................................................................... 362
Compartilhamento Netlogon...........................................................................................................363
Compartilhamento homes.............................................................................................................. 364
Compartilhamento para impressoras............................................................................................. 365
Usuários e grupos no Samba.............................................................................................. 366
Criação de grupo comum entre os usuários Samba....................................................................... 367
Verificando a configuração a procura de erros................................................................... 368
Segurança do Sistema....................................................................................370
Suíte de aplicativos OpenSSH..........................................................................................370
ssh..................................................................................................................................... 371
scp..................................................................................................................................... 371
Enviando Arquivos.......................................................................................................................... 372
Recebendo arquivos....................................................................................................................... 372
sftp..................................................................................................................................... 373
O arquivo /etc/ssh/sshd_config........................................................................................... 374
Controle de acesso a serviços......................................................................................... 375
TCP Wrappers..................................................................................................................... 376
Como ocorre o controle de acesso................................................................................................. 377
Formato das Regras de acesso.......................................................................................................378
inetd e xinetd..................................................................................................................... 379
Funcionamento...............................................................................................................................379
Instalação e Configuração do inetd................................................................................................ 380
Instalação e configuração do xinetd...............................................................................................381
O arquivo /etc/xinetd.conf...........................................................................................................................381
Definindo controle de acesso no xinetd..........................................................................................382
Definições globais...........................................................................................................................383
Firewalls no Linux............................................................................................................383
ipchains.......................................................................................................................................... 384
Habilitando o ipchains em Kernels 2.4 e 2.6................................................................................................385
Listando regras no ipchains.........................................................................................................................385
Definindo a política padrão do ipchains.......................................................................................................385
Adicionando regras no ipchains...................................................................................................................386
Removendo regras no ipchains...................................................................................................................387
iptables...........................................................................................................................................388
listando regras no iptables..........................................................................................................................389
Definindo a política padrão do iptables.......................................................................................................390
Adicionando regras no iptables...................................................................................................................390
Removendo regras no iptables....................................................................................................................391
9
PROGRAMA
TÉCNICO CIDADÃO
Compartilhando uma conexão com a internet............................................................................... 391
Funcionamento do NAT................................................................................................................................393
OpenOffice.org
Introdução ao openoffice................................................................................396
O que é o OpenOffice?.....................................................................................................396
Histórico.......................................................................................................................... 396
OpenOffice texto............................................................................................398
Abrindo, salvando e imprimindo......................................................................................... 398
Tabulação e parágrafos...................................................................................................... 404
Formatando o texto............................................................................................................ 409
Configuração da página..................................................................................................... 413
Como funcionam os estilos do OpenOffice......................................................................... 416
O navegador....................................................................................................................... 418
Localizando e substituindo................................................................................................. 422
Como utilizar a auto correção e a auto-formatação............................................................ 425
Como utilizar o auto texto.................................................................................................. 428
Molduras e letras especiais................................................................................................ 433
Uso de tabela e formatação............................................................................................... 435
Corrigir erros datilográficos................................................................................................ 438
Utilizando Objetos de Desenho........................................................................................... 439
Fonte de Dados: como elaborar consultas a um banco de dados e como gerar relatórios a
partir de consultas a bancos de dados............................................................................... 440
Avaliação dos tópicos aplicados......................................................................................... 443
OpenOffice planilha........................................................................................445
Utilizando Fórmulas............................................................................................................ 446
Trabalhando com células, textos, números, data e hora.................................................... 450
Anotações.......................................................................................................................... 456
Referências relativas e referências absolutas..................................................................... 457
Preenchimento automático................................................................................................ 457
Formatando células, números e planilhas.......................................................................... 458
Imprimir planilhas.............................................................................................................. 467
Base de dados com o OpenOffice Planilha.......................................................................... 471
Definindo e classificando uma área de banco de dados..................................................... 471
Filtrar, agrupar dados e calcular sub totais........................................................................ 473
Importando dados de um banco de dados para uma planilha ........................................... 475
Gráficos.............................................................................................................................. 476
Estruturando uma planilha................................................................................................. 478
Inserindo tabelas em documentos de texto........................................................................ 480
Avaliação dos tópicos aplicados......................................................................................... 482
OpenOffice apresentação............................................................................... 484
O que é uma Apresentação?.............................................................................................. 484
Cuidados a serem tomados................................................................................................ 485
10
PROGRAMA
TÉCNICO CIDADÃO
Criando uma apresentação simples.................................................................................... 485
Criando uma apresentação a partir do modelo.................................................................. 488
Mesa de slides.................................................................................................................... 489
Introduzindo efeitos na exibição de slides.......................................................................... 491
Projeção da apresentação.................................................................................................. 494
Personalizando a apresentação.......................................................................................... 501
Modificar o estilo da página................................................................................................ 503
Estilos de objetos de apresentação.................................................................................... 506
Transição de slides, efeitos e animação............................................................................. 510
Apresentação – exportando e imprimindo.......................................................................... 516
Avaliação dos tópicos aplicados......................................................................................... 520
Navegador Internet
Conhecendo o navegador Mozilla Firefox.........................................................523
Abas.................................................................................................................................523
Utilizando as abas ..........................................................................................................................523
Métodos para abrir uma aba.......................................................................................................... 523
Adicione o botão “Nova aba” na barra de ferramentas..................................................................524
Como abrir links sempre em abas em vez de abrir janelas?.......................................................... 524
Troque de aba utilizando o teclado................................................................................................ 525
Navegação.......................................................................................................................525
Palavras acentuadas.......................................................................................................................525
Navegue por páginas web usando o teclado.................................................................................. 526
Endereços que não possuem links................................................................................................. 526
Utilize Ctrl para selecionar células de tabelas................................................................................ 526
Congelando imagens...................................................................................................................... 527
Favoritos..........................................................................................................................527
Conheça o sistema de favoritos do Firefox.....................................................................................527
Adicionando uma página ao menu Favoritos..................................................................................528
Outras dicas....................................................................................................................................529
Arrastando pastas no menu Favoritos........................................................................................... 529
Faça um backup dos seus favoritos................................................................................................529
O que são os favoritos dinâmicos?................................................................................................. 530
Crie favoritos dinâmicos manualmente.......................................................................................... 531
Interface.......................................................................................................................... 531
Impeça que páginas web mexam na barra de status.....................................................................531
Como excluir um mecanismo do campo de pesquisa?................................................................... 532
Remoção manual............................................................................................................................532
Ganhe espaço ocultando os menus que você não usa................................................................... 533
Coloque o botão “Pesquisar” no campo de pesquisa..................................................................... 533
Use imagens da web como papel de parede.................................................................................. 533
Extensões e Plugins.........................................................................................................534
O que são “plugins”?...................................................................................................................... 534
Dúvidas freqüentes........................................................................................................................ 534
Qual é a diferença entre plugin e extensão?.................................................................................. 535
11
PROGRAMA
TÉCNICO CIDADÃO
Como
Como
Como
Como
Como
instalar uma extensão?........................................................................................................ 535
salvar uma extensão?...........................................................................................................535
acelerar o abertura de páginas PDF?................................................................................... 536
instalar um tema salvo no computador?.............................................................................. 536
salvar um tema?...................................................................................................................537
12
PROGRAMA
TÉCNICO CIDADÃO
GNU/LINUX BÁSICO
Os profissionais envolvidos em TI, que queiram
conhecer
o
ambiente
linux
e
aprofundar
seus
conhecimentos técnicos e também aos profissionais que
desejam iniciar carreira em segurança de TI.
O sistema operacional Linux está crescendo a cada dia
e conseqüentemente cresce também a demanda por
profissionais
especializados
para
este
mercado.
As
empresas estão conhecendo a importância do Linux não
somente como redutor de custo, mas também, por
estabilidade e segurança. O aluno que fizer o curso ganha
conhecimento de administração do sistema Linux. O aluno
terá noções de como atuar com as duas distribuições
matrizes do mundo ( Debian e Red Hat) podendo após o
treinamento optar com qual delas trabalhar.
13
PROGRAMA
TÉCNICO CIDADÃO
INTRODUÇÃO AO LINUX
Origem do Linux
Linux é um sistema operacional clone do Unix, viabilizando uma alternativa barata e funcional
de se rodar um sistema operacional amplamente compatível com Unix sem ter que pagar os
altos custos de licenciamento.
No ano de 1983, Richard Stallman fundou uma organização chamada Free Software Fundation
(Fundação de Software Livre), cujo projeto denominado “projeto GNU” (GNU Is not Unix) tinha
por finalidade criar um clone melhorado do sistema operacional Unix, mas que fosse
desenvolvido a partir do zero, sem utilizar o código-fonte do Unix.
Para alcançar tal objetivo, era necessário desenvolver o kernel (coração do sistema operacional)
e os aplicativos (comandos) que compôe um sistema operacional completo. Porém, no final da
década de 80, o projeto havia fracassado, pois os programadores não haviam conseguido criar
o kernel do sistema, somente os aplicativos essenciais estavam prontos.
Na mesma época, vários esforços alternativos para se atingir o mesmo objetivo proposto pelo
projeto GNU estavam em andamento. Um desses projetos foi o projeto Minix, liderado pelo Dr.
Andrew Tenenbaum desenvolveu o minix como instrumento de ensino, que na verdade era um
sistema operacional Unix portado para arquitetura x86 (até 80386 na época), o que
possibilitava que os universitários pudessem dar continuidade aos seus estudos no PC de casa.
Nessa mesma época, um aluno da Universidade de Helsinque, na Finlândia, chamado Linus
Benedict Torvalds percebeu que o 80386 era o único processador na época capaz de executar
um clone de Unix, mesmo não sendo uma alternativa barata p/ a época.
Linus então se dispôs a criar um kernel clone do Unix que fosse capaz de lidar com memória
virtual, multitarefa e multiusuário. Era um trabalho gigantesco para apenas uma pessoa. Na
primavera de 1991, Linus iniciou seu projeto particular inspirado no Minix. Ele limitou-se a criar
14
PROGRAMA
TÉCNICO CIDADÃO
um “Minix melhor que o Minix”. Após algum tempo de trabalho, Linus conseguiu criar um kernel
capaz de executar utilitários de programação e comandos padrão do Unix já previamente
clonados pelo projeto GNU. Percebendo a grandiosidade do projeto, e que não conseguiria dar
continuidade
sozinho,
ele
enviou
a
seguinte
mensagem
para
a
lista
de
discussão
comp.os.minix:
“Você suspira por melhores dias do Minix-1.1, quando homens serão homens e escreverão seus
próprios drivers de dispositivos? Você está sem um bom projeto e está morrendo para colocar
as mãos em um S.O. no qual você possa modificar de acordo com suas necessidades? Você está
achando frustrante quando tudo trabalha em Minix? Chega de atravessar noites para obter
programas que trabalhem correto? Então essa mensagem pode ser exatamente para você.
Como eu mencionei há um mês, estou trabalhando em um sistema operacional similar ao Minix
para computadores AT-386. Ele está, finalmente, próximo do estágio em que poderá ser
utilizado (embora não possa ser o que você esteja esperando), e eu estou disposto a colocar os
fontes para ampla distribuição. Ele está na versão 0.02... contudo, obtive êxito rodando bash,
gcc, gnu-make, gnu-sed, compress, etc nele”.
A primeira versão oficial do Linux foi lançada em 5 de outubro de 1991 (versão 0.02). A partir
daí, diversos programadores ao redor do mundo têm colaborado com esse sistema operacional
de código aberto até chegar no que é hoje.
Curiosidade: O nome Linux foi escolhido por seu criador através de uma mistura de seu próprio
nome com Unix (Linus + Unix = Linux).
Licenciamento e Versões do kernel do Linux
O Linux não é um software de domínio público, mas licenciado sob uma licença chamada GPL
(General Public License – Licença Pública Geral). Essa licença diz que o código-fonte deve
permanecer livremente disponível, nada pode impedir a distribuição do software. As pessoas
15
PROGRAMA
TÉCNICO CIDADÃO
podem cobrar por uma cópia do Linux, se assim desejarem, desde que, com isso, não limitem
sua distribuição.
Na época do desenvolvimento deste material, a versão mais atual do Kernel do Linux disponível
era a 2.6.8. O versionamento é dividido em 2 partes, no exemplo da versão 2.6.8, o número 2.6
é a versão principal do kernel, já a versão 2.6.8 é o patch level do kernel, ou seja, sempre que
há alguma mudança do código não muito significativa, é elevado o número do patch level. Se
ocorrerem mudanças significativas, o número da versão principal é elevado, e patch level
retorna a 0 (zero).
Outra característica importante sobre versionamento do Kernel é que sempre que a versão
principal termina com um número par, trata-se de uma versão considerada estável pelo time de
desenvolvimento. Quando este número é ímpar, o kernel ainda está em estágio instável, em
desenvolvimento.
Distribuições Linux
No início da década de 90, começaram a surgir as primeiras distribuições Linux. A Idéia de
distribuições se tornou necessária devido as dificuldades na época em se obter todas as partes
que compunham o sistema operacional completo (Kernel e aplicativos), pois as partes em
questão ficavam espelhadas pelo mundo, e diversos downloads e compilações eram
necessários para que fosse possível utilizar o sistema operacional. Essas dificuldades
contribuíram para dar a fama de “Sistema Operacional de Hackers” ao Linux, pois somente
quem detinha um bom conhecimento conseguia instalar o sistema. A “Distribuição”
simplesmente faz todo esse “trabalho sujo” e empacota tudo em um meio comum de
distribuição, que pode ser um cdrom já gravado, um disquete, um arquivo compactado, etc.
Atualmente existem mais de 300 distribuições diferentes, dentre elas se destacam algumas
como: Debian, RedHat, Conectiva, Slackware, Mandrake, Suse, Gentoo e Fedora.
16
PROGRAMA
TÉCNICO CIDADÃO
Linux Standard Base (LSB)
O Linux Standard Base (LSB) viabiliza a compatibilizar e padronizar as distribuições Linux, de
modo que os softwares desenvolvidos para “Linux em Geral” possam rodar em qualquer
distribuição. Para que tal fato seja possível, é necessário que a distribuição e o aplicativo sejam
compatíveis com o LSB.
Nos dias de hoje, a esmagadora maioria dos aplicativos disponíveis para Linux é compatível
com LSB.
Visão geral do Sistema Operacional Linux
Linux é um sistema operacional multi-camadas, como podemos ver no gráfico seguinte:
Usuário
Interpretador de Comandos
Kernel
Hardware
Nesse arranjo, o kernel desempenha a função principal de intermediar acessos ao hardware e
interfacear com o usuário através do interpretador de comandos.
Vantagens do Linux
O Linux é um sistema operacional que se destaca por diversos fatores como Multiplataforma,
Multiusuário, Multitarefa, Portabilidade e Escalabilidade. Multiplataforma é a capacidade do
17
PROGRAMA
TÉCNICO CIDADÃO
mesmo sistema rodar em diferentes plataformas de hardware, geralmente mantendo os
softwares inalterados, com pouca mudança nos fontes do kernel. Multiusuário e Multitarefa
denota, respectivamente, a capacidade do sistema de Lidar com múltiplos usuários rodando
múltiplos aplicativos simultaneamente. Portabilidade e Escalabilidade é a capacidade do
sistema de ser facilmente portável e compatível com diversas plataformas de Hardware
existentes.
Conceitos Unix
Existem algumas características do sistema operacional Linux que foram herdadas do Unix. AS
principais características são listadas adiante:
Tudo é Arquivo
Um arquivo no UNIX é uma seqüência de 0 ou mais bytes contendo qualquer tipo de
informação. Não existe nenhuma distinção entre um arquivo texto em ASCII, arquivos binários
ou qualquer outro tipo de arquivo.
Um diretório é um arquivo que contém informações a respeito de um conjunto de arquivos.
Essas informações consistem basicamente em nome e localização do mesmo. Um dos arquivos
“contidos” em um diretório pode ser também um diretório, permitindo que estes se organizem
de forma hierárquica.
Case Sensitive
O Linux difere letras maiúsculas e minúsculas, portanto ROOT, Root e root, são três formas
diferentes de se escrever, e o Linux entende que são três comandos diferentes. Portanto, para
que sejam compreendidos pelo Interpretador de Comandos (shell), todos os comandos devem
ser digitados exatamente da forma que são, distinguindo maiúsculas de minúsculas.
18
PROGRAMA
TÉCNICO CIDADÃO
Comandos
A maioria dos comandos são geralmente seguido de um parâmetro e pode se utilizado de três
maneiras diferentes:
# comando -parâmetro
# comando --parâmetro
# comando parâmetro
Primeiros Passos
Precisamos nos familiarizar com o ambiente de linhas de comando. Portanto, iremos conhecer
cada uma das partes envolvidas.
Prompt de Login
Como já visto anteriormente, o bash é um dos shells disponíveis no Linux. É no ambiente do
shell que passaremos a maior parte do curso. Para que o sistema nos libera acesso a um shell
texto, antes é preciso autenticar-se no prompt de login, como abaixo:
host login: root
password:
Essa é a tela de login texto, onde host é o nome da máquina. Por ser de uma hierarquia Unix, ao
digitar a senha, nenhum caractere aparece e o cursor não se move mas as informações do
teclado estão sendo enviadas.
bash
O bash é apenas um dentre os diversos interpretadores de comandos (shell's) disponíveis no
Linux, tais como csh, zsh, sh, tcsh, etc. Futuramente faremos um estudo mais profundo sobre o
19
PROGRAMA
TÉCNICO CIDADÃO
shell bash, mas agora iremos apenas nos familiarizar com esse componente tão importante do
sistema.
[root@host root]#
Este é o prompt do Shell, que aparece depois que você esta logado. Este formato de prompt é
geralmente utilizado nas distribuições RedHat e Conectiva. A linha acima significa o seguinte:
root é o nome do usuário
@ significa at (em), ou seja, onde o usuário esta logado
host nome da máquina
root é o diretório corrente
Portanto essa linha significa: usuário root logado na máquina host no diretório root.
O # é o símbolo de que o root está logado, caso fosse um usuário comum, o símbolo seria $.
No caso do Debian, por exemplo, a linha do prompt costuma se parecer com o seguinte:
host:/var/tmp#
Nesse caso, é mostrado o nome da máquinas, seguido de “:” (dois-pontos), o
caminho
completo do diretório atual mais o símbolo de quem está logado.
O prompt de login pode facilmente ser configurado através da variável de ambiente $PS1.
Exemplo:
host:/var/tmp# echo $PS1
\h:\w$
host:/var/tmp# PS1="[\u@\h \W]\$ "
[root@host tmp]# echo $PS1
[\u@\h \W]\$
[root@host tmp]#
No exemplo acima, primeiro foi mostrado o conteúdo da variável $PS1 (comando “echo $PS1”);
logo depois o conteúdo dessa variável foi modificada com base nos valores especiais descritos
20
PROGRAMA
TÉCNICO CIDADÃO
na tabela abaixo, tornando o prompt padrão do debian parecido com o prompt padrão do
RedHat.
Caracteres de escape para customização do shell usando $PS1:
\e
Quebra de linha.
\h
Nome curto do Host (Exemplo: host).
\H
Nome longo do Host (Exemplo: host.utah.com.br).
\j
O número de trabalhos atualmente sob controle do shell.
\t
Hora atual no formato de 24horas.
\u
Usuário logado atualmente.
\W
Nome do diretório de trabalho atual.
\w
Caminho completo do diretório atual.
\$
Símbolo de Usuário. Para qualquer usuário com UID=0 (root por exemplo) aparecerá
um sinal de #, ou um sinal de $ para os outros usuários do sistema.
DICAS + MAIS
Você pode ter mais de um terminal ao mesmo tempo, sendo possível manter terminais texto e gráficos. Para alternar entre os terminais texto, pressione [ALT]+[F1](F1
até o F6). O próximo terminal logo após o último terminal texto (Geralmente o F6) é
o terminal gráfico, se estiver em uso; Nesse caso, para acessar o terminal gráfico,
pressione [ALT]+[F7]. Para sair do terminal gráfico e voltar a um terminal texto,
pressione [CONTROL]+[ALT]+[F1] (Até o [F6] nesse caso).
logout
Para sair do shell atual, digite o seguinte comando:
$ logout
21
PROGRAMA
TÉCNICO CIDADÃO
shutdown
Utilizamos o comando shutdown para interromper de alguma forma o funcionamento do
sistema (Desligar ou reiniciar, por exemplo).
Sintaxe:
shutdown [-akrhfnc] [-t secs] tempo [mensagem]
Tabela de Parâmetros
-a
Utiliza o arquivo /etc/shutdown.allow para definir quem tem permissão para
desligar/reiniciar o sistema.
-k
Somente “testa” o desligamento.
-r
Reinicia o sistema.
-h
Desliga o sistema.
-f
Reinicia o sistema em modo rápido (Não executa o fsck durante o boot).
-F
Força a execução do fsck durante a inicialização.
-n
Força desligamento rápido (sem terminar os programas em execução).
-c
Cancela um shutdown agendado.
-t
Especifica o tempo, em segundos, entre a notificação e a finalização dos processos.
Exemplos:
# shutdown -h now “O sistema será reinicializado agora”
Reinicia o sistema Imediatamente e exibe a mensagem “O sistema será reinicializado agora” p/
os usuários conectados atualmente.
# shutdown -r -t secs 20 10 “Reboot em 10 minutos”
halt
22
PROGRAMA
TÉCNICO CIDADÃO
O comando halt tem o mesmo efeito que o comando “shutdown -h now”.
reboot
Tem o mesmo efeito que o comando “shutdown -r now”.
23
PROGRAMA
TÉCNICO CIDADÃO
INSTALAÇÃO DO DEBIAN GNU/LINUX
Abranger de uma forma geral a instalação “do Sistema Operacional Linux” é redundante, pois
existem diversas distribuições, e cada uma delas utiliza um método próprio ou parecido para fazer a mesma coisa: Instalar o sistema.
A instalação do sistema consiste em ter um espaço particionado, com no mínimo 1 partição de
dados e 1 swap + 1 kernel com um gestor de boot + utilitários que tornam o sistema operacional
útil (pacotes). É justamente esse o objetivo dos programas de instalação presentes nas distribuições, os instaladores.
Um ótimo documento referente ao mesmo assunto pode ser encontrado em:
http://www.nl.debian.org/releases/stable/i386/install
Um pouco sobre o Debian
Debian é atualmente a maior distribuição Linux “não comercial” do mundo. Não existe
nenhuma empresa por trás do projeto Debian, que é mantido por cerca de 1000 voluntários ao
redor do mundo.
Além de ser uma das mais antigas distribuições Linux do mundo (Das “famosas” ela é a mais
antiga, seguida de perto pelo Slackware), o Debian possui toda uma estrutura colaborativa de
desenvolvimento e manutenção que torna o software muito robusto e estável.
Curiosidades
De onde surgiu o nome “Debian”?
O nome Debian teve origem de uma junção entre os nomes dos fundadores do sistema
operacional, em 1993: Debra e Ian Murdock,
24
PROGRAMA
TÉCNICO CIDADÃO
Como se pronuncia “Debian”?
Pena eu não conseguir expressar com texto as formas que já ouvi pronunciarem o nome desta
distribuição...
O formato correto seria “Deb'-ee-en”, mas eu mesmo não o chamo assim, e conheço poucos
que o fazem.
Estrutura do sistema Debian
Qual o significado dos codinomes das distribuições Debian?
Essa é bem simples. Os nomes dados as distribuições Debian Até hoje são baseados nos
personagens do desenho animado Toy Story®, da Pixar©. Woody é o cowboy, potato é o
homem-batata, buzz (o nome da primeira versão) é o nome do “homem do espaço”.
Como funciona o sistema de versões do Debian?
O Debian possui um robusto sistema de controle de versões, que não há a necessidade de
entrar em detalhes, apenas de compreender seu funcionamento básico.
No geral, o Debian sempre disponibiliza 3 versões simultâneas, cada uma delas seguindo um
caminho no desenvolvimento do projeto.
A distribuição stable
Um dos “sabores” que o Debian costuma ser disponibilizado é o stable. A distribuição stable é a
versão do Debian considerada mais estável no momento. Os pacotes têm que passar pelas
outras distribuições, unstable e testing, antes de chegar aqui. Esse processo é necessário para
garantir que os softwares disponibilizados nessa distribuição são estáveis, pois foram testados
por um longo período.
25
PROGRAMA
TÉCNICO CIDADÃO
Atualmente a versão stable recebe o nome de woody, e numericamente é a versão 3.0.
É a distribuição mais recomendada para servidores de produção e estações de trabalho de alta
disponibilidade. O problema é que se paga um preço um tanto amargo pela estabilidade dos
pacotes, a versão dos mesmos. Devido ao fato que cada pacote passa por um processo que
pode levar até 2 anos para ir da distribuição unstable até a stable, a distribuição stable sempre
contará com softwares antigos para a época.
A distribuição testing
Essa distribuição existe para que testes possam ser efetuados nos pacotes que já passaram
pela distribuição unstable mas ainda não são considerados maduros o suficiente para fazerem
parte da distribuição stable.
A testing é sempre uma distribuição indicada para desktop's e workstations que não sejam de
missão crítica, pois trazem softwares mais recentes.
A versão atual da testing tem o codinome sarge, e a versão é 3.1. Quando o sarge se tornar
maduro o bastante, ele passará a ser a distribuição stable, entrará uma outra no lugar dele e o
woody estará obsoleto.
A distribuição unstable
Essa distribuição serve de porta de entrada para novas tecnologias no Debian. Tudo que é novo
é considerado instável pelo Debian, e com razão, pois é justamente isso que cria um grande
diferencial entre o Debian e outras distribuições.
Tudo que há de mais novo para Debian está nessa distribuição, inclusive aquele desktop
“bonitinho” que todos adoram. Geralmente essa distribuição só é utilizada por entusiastas e
malucos de plantão, que gostam de viver emoções fortes por ter o seu sistema quebrado a
qualquer momento.
26
PROGRAMA
TÉCNICO CIDADÃO
Seu codinome é e sempre será sid e ela não conta com uma versão numérica. Sid é o nome da
“criança da casa ao lado” que destruía os brinquedos no desenho animado Toy Story®.
Iniciando a Instalação
O primeiro passo para iniciar a instalação do Debian é verificar se o seu Hardware ao menos
“aparenta” ser compatível com ele. procure saber com o fabricante do equipamento (que nem
sempre vê com bons olhos a utilização de Linux...) ou pesquisar na Internet. Esse passo evita
dores de cabeça que degradam a reputação do sistema Debian GNU/Linux.
Inicializando o instalador
É preciso definir qual será o método utilizado para se inicializar o instalador do sistema, o
debian-installer. A maneira mais simples, e utilizada em mais de 95% das instalações, é através
de um cdrom inicializável de instalação do Debian. Nesse método, basta inserir o cd na unidade
de cdrom, configurar a BIOS para inicializar a partir do cd e iniciar o computador. Você deverá
ser presenteado com uma tela como com essa:
27
PROGRAMA
TÉCNICO CIDADÃO
Essa é a tela de boas vindas do cd de instalação do Debian Sarge.
O sistema utiliza o kernel 2.4.27 por padrão para a instalação, mas caso queira (E é
recomendado) é possível iniciar a instalação utilizando um kernel da série 2.6, com o parâmetro
“linux26”. Isso irá aumentar suas chances de funcionamento do hardware.
Diversos parâmetros de inicialização podem ser passados nessa tela. Você pode pressionar a
tecla [F3] para ver uma lista dos kernels disponíveis nesse cd de instalação. prosseguiremos
nessa tela com o seguinte parâmetro a ser passado para o prompt de inicialização:
boot : linux26
28
PROGRAMA
TÉCNICO CIDADÃO
Pressione [ENTER] para prosseguir.
Assim que o sistema terminar de inicializar, surgirá a tela de configuração do idioma da
instalação.
Selecione o idioma e prossiga. A próxima tela leva a configuração do teclado.
29
PROGRAMA
TÉCNICO CIDADÃO
Com base no idioma selecionado na tela anterior, temos uma lista para os tipos de teclados
disponíveis.
30
PROGRAMA
TÉCNICO CIDADÃO
Se pelo menos uma interface de rede tenha sido detectada ou seu módulo tenha sido carregado
significa que nesse momento o kernel já possui suporte completo para comunicação em rede, e
podemos configurá-la agora, a instalação tentara resolver a conexão automaticamente por
DHCP mas Iremos configurar a rede manualmente,
nesta tela selecione “Configurar a rede
manualmente”.
31
PROGRAMA
TÉCNICO CIDADÃO
O endereço IP é baseado na sala de aula. O terceiro octeto define qual sala de aula o aluno se
encontra (10 para sala 1, 20 para sala 2 e assim por diante). O quarto octeto é o número da
máquina.
Exemplos:
Sala 1 – 192.168.10.XX
Sala 2 – 192.168.20.XX
32
PROGRAMA
TÉCNICO CIDADÃO
Sala 3 – 192.168.30.XX
Sala 4 – 192.168.40.XX
O valor padrão de máscara de rede é satisfatório.
33
PROGRAMA
TÉCNICO CIDADÃO
O gateway para cada sala de aula é o host que termina com 254, o terceiro o octeto é o número
referente a sala de aula.
Exemplos:
Sala 1 – 192.168.10.254
Sala 2 – 192.168.20.254
34
PROGRAMA
TÉCNICO CIDADÃO
Sala 3 – 192.168.30.254
Sala 4 – 192.168.40.254
Configuração dos servidores DNS. Em sala de aula, utilize o mesmo IP do gateway.
35
PROGRAMA
TÉCNICO CIDADÃO
O nome dado a cada máquina baseia-se em numeração definida pelo instrutor.
36
PROGRAMA
TÉCNICO CIDADÃO
Aqui configuramos o domínio a qual o computador irá pertencer. Em sala de aula, o domínio
será o que o instrutor definir.
37
PROGRAMA
TÉCNICO CIDADÃO
Iremos editar manualmente a tabela de partições.
38
PROGRAMA
TÉCNICO CIDADÃO
Aqui você escolhe o disco a ser instalado seu sistema. Por razões de segurança você pode criar
partições separadas para seu /home /tmp /usr /home /var.
39
PROGRAMA
TÉCNICO CIDADÃO
O espaço para memória swap vai de acordo com a necessidade ou uso da mesma.
Sugerimos a mesma quantidade de memória RAM(levando em conta que me um micro com
3Gb de RAM não necessitaria de 3Gb de swap)
O sistema Debian estará sendo instalado.
40
PROGRAMA
TÉCNICO CIDADÃO
Em versões anteriores (Woody) o Inicializador padrão era o LILO, na nova versão (Sarge) temos
o GRUB como padrão, ele é bem mais simples e sua interface bem mais amigável.
Responda sim para que seu sistema posso iniciar normalmente.
41
PROGRAMA
TÉCNICO CIDADÃO
GERENCIAMENTO DE PACOTES
Um dos assuntos mais relevantes na administração de sistemas Linux é justamente o gerenciamento de pacotes, que resumidamente é o gerenciamento dos programas instalador no sistema.
É possível instalar programas de diversas formas no Linux, seja através da compilação códigofonte, da cópia de alguns arquivos ou instalação de pacotes.
No mundo Linux, um pacote de software nada mais é do que um programa (ou um conjunto deles) já compilado e pronto para funcionar, que está “empacotado” em um único arquivo, denominado pacote. É como agrupar objetos (programas) em uma caixa (pacote). Cabe ao administrador
instalar esse pacote de software para disponibilizar o(s) programa(s) contidos nele para o sistema.
Manter o conjunto de softwares de um servidor ou estação de trabalho Linux em pacotes facilita e
muito o gerenciamento desses sistemas. As atualizações, por exemplo, são facilitadas, pois basta
atualizar o(s) pacote(s) afetado(s) para que o sistema fique em dia. Se os softwares compilados
diretamente no sistema, o gerenciamento de atualizações poderia se tornar um caos.
Para saber, por exemplo, quais softwares estão ou não instalados no computador, instalar programas sem temer as dependências (nem sempre é tão fácil assim), com um gerenciador de pacotes
é muito mais fácil e prático.
CURIOSIDADE: O QUE SÃO DEPENDÊNCIAS?
As dependências são o calcanhar de acquiles para um gerenciados de pacotes.
Quando um pacote precisa que já exista um ou mais pacotes específicos instalados
no sistema, ele “depende” desses pacotes e não pode ser instalado sem que esses
pacotes já estejam antes instalados no sistema.
Existem dois gerenciadores de pacotes principais em uso nas distribuições Linux. O RPM
(RedHat Package Manager) e o DPKG (Debian Packager). Outras distribuições, como
Slackware e Gentoo, utilizam seus próprios gerenciadores de pacotes, não abordados nesse material.
O gerenciador de pacotes do Debian
O Debian possui seu próprio gerenciador de pacotes, o dpkg (Debian Packager). O dpkg é
amplamente utilizado por distribuições baseadas em Debian, como Knoppix e ubuntu.
42
PROGRAMA
TÉCNICO CIDADÃO
Os pacotes debian geralmente recebem a extensão .deb, e contém os arquivos e
documentação já compilados, assim como informações e scripts que auxiliam no correto
dimensionamento do pacote no sistema.
dpkg
Utilizamos o comando dpkg para o gerenciamento direto dos pacotes no debian. Suas principais
funções em relação aos pacotes são: Instalação, Listagem, Remoção e Status. Apesar de ser um
comando para lidar com pacotes binários no debian, o dpkg serve como base para outros
comandos como o APT e dselect, que servem para “realmente” gerenciar os pacotes, facilitando
e arrojando todo o trabalho. Estudaremos o APT logo mais, mas primeiro precisamos conhecer o
dpkg.
Sintaxe:
dpkg parâmetro [pacote[.deb]]
43
PROGRAMA
TÉCNICO CIDADÃO
Tabela de Parâmetros
-i pacote.deb
-r pacote
-P pacote
-s pacote
-l [pacote]
-S /arquivo/no/sistema
Instala pacote(s)
Desinstalar pacote(s) do sistema, mas mantém arquivos de
configuração.
Desinstalar pacote(s) do sistema e remove os arquivos de
configuração.
Mostra o status do pacote.
Mostra informações (lista) do(s) pacote(s). Se for utilizado
sem um nome de pacote como parâmetro, lista todos os
pacotes instalados no sistema.
Verifica a qual pacote determinado arquivo no sistema
pertence
Estas são os principais parâmetros do dpkg.
Listando os pacotes instalados no sistema
Para obter uma lista dos pacotes instalados no sistema, utilizamos a opção -l do comando
dpkg, obtendo a lista dos pacotes instalados, um por linha, conforme a linha abaixo:
ii base-config
2.61
Debian base system configurator
A primeira coluna existem 2 letras que denotam o estado do respectivo pacote (Estado e erro,
respectivamente), cujo nome, versão e descrição abreviada estão nas colunas adjacentes.
É possível obter informações para determinado(s) pacote(s) também, utilizando o nome
completo ou parcial do pacote. Também é possível utilizar coringas (iguais os do shell, * e ?
basicamente). Mas lembre-se de enquadrar o nome do pacote entre aspas para que não sejam
44
PROGRAMA
TÉCNICO CIDADÃO
confundidos com nomes de arquivos no diretório atual, caso utilize coringas, conforme exemplo
abaixo:
Exemplo:
#
#
#
#
dpkg
dpkg
dpkg
dpkg
-l
-l locales
-l "locale*"
-l “locale-??”
Utilizamos 4 formas diferentes para listar pacotes no sistema. A primeira lista todos os pacotes
instalados, a segunda lista somente o pacote locales, as 2 seguintes são listagens com
coringas.
Obtendo detalhes sobre um pacote Debian
Mesmo que determinado pacote não esteja instalado no sistema, é possível obter informações
muito importantes sobre o mesmo com a opção -p do comando dpkg. Essa opção mostra na
tela o arquivo de controle do pacote. Esse arquivo segue o mesmo padrão para todos os
pacotes Debian, e fornece informações muito importantes.
# dpkg -l dpkg-doc
# dpkg -p dpkg-doc
Package: dpkg-doc
Priority: optional
Section: doc
Installed-Size: 44
Origin: debian
Maintainer: Dpkg Development <[email protected]>
Bugs: debbugs://bugs.debian.org
Architecture: all
Source: dpkg
Version: 1.9.21
Replaces: dpkg-dev (<< 1.4.1.19)
Filename: pool/main/d/dpkg/dpkg-doc_1.9.21_all.deb
Size: 10724
MD5sum: 130615337b08082c13de3c99b32cd8cc
45
PROGRAMA
TÉCNICO CIDADÃO
Description: Dpkg Internals Documentation
This document describes the internal operations of the dpkg program. It
covers building aswell as the internals functions. If you are interested
in creating your own packages, then you may be more interested in the
packaging-manual documentation package.
Utilizamos a opção -l para verificar se o pacote dpkg-doc está instalado no sistema (Não se
esqueça que a saída desse comando foi omitida na apostila). Em seguida, a opção -p, que
mostrou na tela o conteúdo do arquivo de controle do pacote dpkg-doc. Cada campo que inicia
uma linha no arquivo é um respectivo campo de controle. Veja os significados a seguir:
46
PROGRAMA
TÉCNICO CIDADÃO
Significado dos campos de controle
Package
Priority
Section
Installed-Size
Mantainer
Architeture
Source
Version
Depends
Recommends
Nome do pacote.
Prioridade de Instalação. Pode valer required, important, standard,
optional e extra. Que denotam, decrescivamente a importância do
pacote no sistema.
Os pacote são separados por seções devido ao grande número (Algo
como o que é feito com os nomes de municípios, por exemplo). Este é
o nome da seção a qual o pacote pertence.
Tamanho ocupado pelo pacote após instalado. Exibido em KB.
Nome e email do Mantenedor (Empacotador, geralmente também é o
criador do pacote).
Qual a arquitetura do pacote.
Nome do pacote que traz o código-fonte para este pacote binário.
Versão do pacote.
Qual(is) pacote(s) depende(m) deste, e deve(m) estar instalado(s)
antes da instalação do pacote atual.
Qual(is) pacote(s) o Mantenedor recomenda serem instalados junto
com o pacote atual.
Suggests
Quase o mesmo que Recommends, porém lista pacotes que
costumam agregar funcionalidades ao pacote atual.
Pre-Depends
Praticamente o mesmo significado que Depends, porém não é
necessário que a(s) dependência(s) esteja(m) completamente
instalada(s)
quando
da
instalação,
basta
que
esteja(s)
descompactada(s) no sistema.
Este campo possui 2 propósitos distintos: Qual(is) arquivo(s) ou
pacote(s) será(ão) sobrescrito(s) quando da instalação do pacote.
Lista qual(is) pacote(s) não podem existir ao instalar o pacote atual,
pois um ou mais arquivos podem entrar em conflito.
Hash de verificação da integridade do pacote. Execute md5sum
pacote.deb e compare o resultado com o mostrado nesse campo. Isso
garante que o pacote não tenha sido alterado propositalmente ou
corrompido por algum motivo.
Caminho completo do pacote no repositório Debian.
Replaces
Conflicts
MD5sum
Filename
Description
Descrição detalhada do pacote.
47
PROGRAMA
TÉCNICO CIDADÃO
Exibindo status dos pacotes do sistema
É possível obter o status de algum pacote com a opção -s do dpkg. A saída é ligeiramente
parecida com a opção -p, porém nem todos os campos são baseados no arquivo de controle. É
importante observar o campo “Status”, que exibe em palavras simples um ou mais estados em
que o pacote se encontra. (Instalado, não-instalado, com ou sem erros de instalação, etc....).
Exemplo:
# dpkg -s dpkg-doc
Package: dpkg-doc
Status: purge ok not-installed
Priority: optional
Section: doc
Origin: debian
Bugs: debbugs://bugs.debian.org
Architecture: all
# dpkg -i dpkg-doc_1.10.25_all.deb
Selecionando pacote previamente não selecionado dpkg-doc.
(Lendo banco de dados ... 107104 arquivos e diretórios atualmente instalados.)
Descompactando dpkg-doc (de dpkg-doc_1.10.25_all.deb) ...
Instalando dpkg-doc (1.10.25) ...
# dpkg -l dpkg-doc
# dpkg -s dpkg-doc
Package: dpkg-doc
Status: install ok installed
Priority: optional
Section: doc
Installed-Size: 72
Origin: debian
Maintainer: Dpkg Development <[email protected]>
Bugs: debbugs://bugs.debian.org
Architecture: all
Source: dpkg
Version: 1.10.25
Replaces: dpkg-dev (<< 1.4.1.19)
Description: Dpkg Internals Documentation
This document describes the internal operations of the dpkg program. It
48
PROGRAMA
TÉCNICO CIDADÃO
covers building as well as the internals functions. If you are interested
in creating your own packages, then you may be more interested in the
debian-policy package.
Repare na saída do comando dpkg -s antes e depois da instalação do pacote.
Instalando e atualizando pacotes binários do Debian
Embora este não seja a melhor maneira de se instalar pacotes Debian, é preciso ter
conhecimento sobre isso, visto que utilitários de gerenciamento de pacotes como o APT
internamente utilizam esses comandos.
Instalar e Atualizar pacotes Debian é muito simples, basta utilizar a opção -i do dpkg, caso o
pacote que esteja tentando instalar já exista no sistema, porém com uma versão anterior, o
dpkg cuida de efetuar a atualização do mesmo, substituindo o antecessor. Caso algum pacote
necessite de configuração para que venha a funcionar no sistema, logo após a sua instalação,
será lançado um programa que ajudará na configuração do mesmo. Para chamar novamente a
tela de configuração do pacote, utiliza o comando “dpkg-reconfigure pacote” com o pacote
desejado.
Antes de prosseguir, para que possamos executar o exercício, é preciso obter pelo menos um
pacote Debian (um arquivo .deb, geralmente). Podemos obter o pacote utilizando a ferramenta
APT, que será estudada adiante:
# dpkg -l dpkg-doc
# dpkg -p dpkg-doc
# apt-get clean
# apt-get -d install dpkg-doc
# cd /var/cache/APT/archives/
# ls
dpkg-doc_1.10.25_all.deb lock partial
# dpkg -i dpkg-doc_1.10.25_all.deb
49
PROGRAMA
TÉCNICO CIDADÃO
Utilizamos as opções -l e -p para verificar, respectivamente, se o pacote já estava instalado e se
possui dependências. O pacote em questão não possui dependências (pelo menos na versão
utilizada durante a confecção do material). O comando apt-get clean serve para remover
pacotes recentemente baixados no diretório /var/cache/apt/archives, no qual encontraremos
o arquivo dpkg-doc_1.10.25_all.deb, que é um pacote binário debian.
Padrão de nomes dos arquivos binários do Debian
Os arquivos binários do Debian seguem um padrão de nomenclatura para o nome do arquivo
que o divide em 3 campos, separados por “_” (underline). O primeiro campo é o nome do
pacote, o segundo, a versão do mesmo, e o terceiro é a arquitetura para qual o pacote foi
compilado. Quando a arquitetura representa “all”, significa que o pacote pode ser utilizado em
qualquer arquitetura de hardware sem problemas.
Removendo pacotes binários Debian
É possível remover pacotes binários instalados no sistema de duas maneiras: Mantendo
arquivos de configuração e outros arquivos modificados pelo usuário no sistema ou apagando
quaisquer arquivos pertencentes ao pacote. A opção -r do comando dpkg cuida apenas de
desinstalar o pacote em questão, já a opção -P (Significa “Purge”) remove todos os arquivos
relacionados ao pacote.
É importante compreender como o dpkg lida com dependências nessas situações. Nestes dois
casos de remoção de pacotes, caso você tente remover um pacote que possua dependências
(Lembre-se que são outros pacotes que também estão instalados no sistema, e precisam deste
para funcionar), o dpkg interromperá imediatamente a operação e emitirá um aviso sobre a
anormalidade, e qual(is) é(são) o(s) pacote(s) dependente(s). tentar removê-los não costuma
ser uma boa prática. Uma boa analogia para isso é o seguinte: Imagine que o seu sistema é um
carro na estrada, em plenos 120Km/h, O pacote que está pretendendo remover é um pneu
50
PROGRAMA
TÉCNICO CIDADÃO
dianteiro..... Todo o resto do carro depende dele para se locomover, e para oferecer segurança
aos ocupantes.
DICAS
Para compreender melhor, procure por pacotes que possuem dependências no sistema e tente removê-los. Analise os resultados.
O Advanced Package Tool (APT)
No início da era de “pacotes” nas distribuições Linux, só existia o dpkg do Debian, logo depois a
RedHat criou o seu próprio gerenciador de pacotes. Mas faltava algo, pois o gerenciamento de
pacotes não estava tão fácil assim... Problemas como as dependências e locais onde se
encontrar os pacotes precisavam ser resolvidos manualmente.
Estes e outros problemas foram solucionados com o Advanced Package Tool, vulgo APT daqui
em diante. O APT é uma ferramenta criada por desenvolvedores do Debian para ser a
ferramenta oficial de gerenciamento de pacotes, completando as funcionalidades do dpkg, que
apesar de ser brilhante, não é fácil de se utilizar e tem os problemas já citados, que o APT
soluciona.
O APT na verdade é um programa que cuida de solucionar automaticamente as dependências
na mesma hora da instalação do(s) pacote(s). O funcionamento é bem simples, devido ao fato
do APT manter uma lista de repositórios de pacotes (estudados adiante), o resto ele faz com as
informações contidas nos próprios pacotes mantendo-as em cache na máquina local.
A mágica ocorre na seguinte situação: Imagine ter que instalar um determinado pacote
chamado xyz, que depende dos pacotes abc e 123 para funcionar (malditas dependências...).
O APT verifica tal situação, baixa os pacotes do(s) repositório(s) adequado(s), e os instala na
ordem que satisfaça as dependências, até conseguir instalar o pacote xyz. Isso tudo pode
ocorrer sob confirmação do usuário, de forma interativa.
51
PROGRAMA
TÉCNICO CIDADÃO
É importante afirmar que atualmente o APT não é uma ferramenta exclusiva do Debian, pois
existem algumas versões de APT que foram portadas para outras distribuições Linux que
utilizam o gerenciador de pacotes RPM. A brasileira Conectiva® foi a pioneira nesse sentido,
criando o apt-rpm (Nome do projeto, apesar dos principais comandos serem praticamente
idênticos).
Repositórios de pacotes do Debian
Para permitir que o APT funcione, é preciso que o sistema conheça ao menos um repositório de
pacotes. Um repositório de pacotes dispensa muitas explicações, pois trata-se de uma fonte
comum que contenha um ou mais pacotes (geralmente milhares...), o que pode ser um cdrom,
um diretório em um servidor http ou ftp, etc.
Os repositórios mais utilizados são os que ficam disponíveis pela web (ftp e http), pois isso
facilita e muito o gerenciamento de pacotes. Basta, por exemplo, pedir ao apt para que instale
determinado pacote que ele irá automaticamente buscá-lo no repositório adequado (graças ao
cache de informações que ele mantém localmente), assim como todas as suas dependências.
O arquivos /etc/apt/sources.list
A lista de repositórios é armazenada no arquivo de configuração /etc/apt/sources.list. As
entradas nesse arquivo seguem este padrão:
deb http://site.http.org/debian distribuição seção1 seção2 seção3
deb-src http://site.http.org/debian distribuição seção1 seção2 seção3
A primeira palavra das linhas (“deb” e “deb-src”) indicam o tipo de repositório: se guarda
pacotes binários (“deb”), ou seja, os pré-compilados que normalmente usamos ou se guarda
pacotes fonte (“deb-src”), que contém o código-fonte original do programa mais o arquivo de
controle Debian (“.dsc”) e o “diff.gz”, que contém as modificações efetuadas no pacotes que só
existem no Debian, não no código-fonte original do programa.
52
PROGRAMA
TÉCNICO CIDADÃO
Segue um exemplo de um sources.list “real”:
deb http://ftp.debian.org/debian/ stable main
deb-src http://ftp.debian.org/debian/ stable main
deb http://security.debian.org/ stable/updates main
O segundo campo de cada linha configura o endereço do repositório (repare nos http://, são
repositórios web);
Em seguida, temos a versão da distribuição, que segue, basicamente 3 nomes: “stable” para a
última distribuição estável, “testing” para a distribuição “intermediária”, que um dia será a
“stable”, e unstable, que é a versão mais instável disponível. As distribuições são apenas
“versões” disponíveis atualmente do Debian, sempre existem 3 (stable, testing e unstable). No
momento em que desenvolvo este material, as versões stable, testing e unstable eram,
respectivamente chamadas de: Woody (3.0), Sarge (3.1) e Sid (Esse não tem versão, e também
nunca troca de nome, pois sempre contém os pacotes mais instáveis disponíveis).
Os últimos campos são as seções (deve haver pelo menos um deles), que ajuda a dividir os
pacotes em categorias. No exemplo, main é a categoria principal.
Adicionando um cdrom no sources.list
Para adicionar um cdrom que contenha pacotes debian já organizados na forma de repositórios
(cdroms oficiais do debian, por exemplo), utilizamos o comando apt-cdrom.
Sintaxe:
apt-cdrom [opções] [comando]
53
PROGRAMA
TÉCNICO CIDADÃO
Tabela de Parâmetros
-h
-d diretório
-r
-m
-f
-a
Exibe a ajuda do programa
Especifica o ponto de montagem do cdrom
Renomeia um cdrom reconhecido previamente
Não monta o cdrom
Modo rápido. Não atualiza a lista de pacotes
Modo Minucioso
Os comandos podem ser “add”, para adicionar um cdrom ao sources.list, ou “ident”, para
apenas identificar um cdrom na unidade.
Exemplos:
# apt-cdrom add
# apt-cdrom -d /cdrom1 add
# apt-cdrom ident
Adicionando repositórios web no sources.list
Para adicionar repositórios web (http ou ftp) no sources.list, basta adicionar linhas
correspondentes para eles no arquivo. Mas para os repositórios oficiais, o Debian conta com um
utilitário capaz de configurar corretamente o sources.list através de uma interface amigável. É
o apt-setup.
Basta digitar apt-setup no shell e seguir as instruções para selecionar o mirror mais
apropriado.
Utilizando o apt-get para gerenciar pacotes
Após configurar o arquivo sources.list com os repositórios desejados, temos tudo preparado
para utilizar a principal ferramenta do apt: o apt-get.
54
PROGRAMA
TÉCNICO CIDADÃO
Ele é o gerenciador de pacotes em si, pois cuida de atualizar a lista de pacotes disponíveis nos
repositórios, instalar, atualizar, remover e verificar (entre outros) pacotes debian.
Sintaxe:
apt-get [opções] comando
apt-get [opções] install|remove pacote1 [pacote2 ...]
apt-get [opções] source pacote1 [pacote2 ...]
Tabela de Opções
-h
-q
-qq
-d
-s
-y
-m
-u
-b
-c=arquivo
-o=opção
Exibe texto de ajuda
Saída “logavel”, exceto para erros
Nenhuma saída, somente erros
Instrui o apt-get para apenas efetuar o download do(s) pacote(s). Os
arquivos são baixados no diretório /var/cache/apt/archives
Não executa “de verdade” nenhum comando, somente simula.
Assume “Yes” como resposta para todas as perguntas e não pede
confirmação
Tenta continuar mesmo se os arquivos não puderem ser localizados.
Mostra uma lista de pacotes atualizados
Constrói um pacote-fonte após baixá-lo.
Especifica um arquivo de configuração p/ o apt.
Define uma opção arbitrária de configuração.
55
PROGRAMA
TÉCNICO CIDADÃO
Tabela de Comandos do apt-get
update
upgrade
install
remove
source
build-dep
dist-upgrade
clean
autoclean
Atualiza a lista de pacotes disponíveis
Atualiza todos os pacotes desatualizados do sistema
Instala novos pacotes no sistema. (indicar o(s) pacote(s), ex: apt-get
install xpdf)
Remove pacotes do sistema. Mesma sintaxe utilizada para instalar
baixa o código fonte de pacotes
Constrói a árvore de dependências
compilação de um pacote
necessária
para
permitir
a
O mesmo que “upgrade”, porém utiliza um mecanismo mais inteligente
para lidar com dependências, categorizando as mais importantes.
Apaga todos os arquivos de pacotes temporários (em /
var/cache/apt/archives, basicamente).
Faz o mesmo que “clean”, porém não apaga pacotes que porventura
serão utilizados em breve (Um conjunto de dependências de um pacote,
por exemplo.)
Exemplo A:
# apt-get update
# apt-get upgrade
Esses dois comandos irão, respectivamente, atualizar a lista de pacotes disponíveis nos
repositórios listados no arquivo /etc/apt/sources.list e atualizar todos os que não estiverem
atualizados. Da forma que o comando foi digitado, o apt irá pedir confirmação do usuário antes
de prosseguir com a instalação de algum pacote, se houver.
Exemplo B:
# apt-get remove nvi
# apt-get install vim
Removemos o pseudo-vi que costuma vir com o Debian no lugar do vim, e em seguida
instalamos o vim, que é o editor VIM “de verdade”.
56
PROGRAMA
TÉCNICO CIDADÃO
DICA
Quando for remover um pacote com o apt-get e quiser remover todos os arquivos
pertencentes aquele pacote, utilize a opção --purge, ficando assim:
apt-get --purge remove pacote
Programas auxiliares
Existem alguns programas que completam o super-esquema de gerenciamento de pacotes do
Debian. Esses programas geralmente adicionam funcionalidades e/ou facilitam outras ações de
outros programas. Os principais são:
aptitude
Este fantástico gerenciador de pacotes é considerado um apt-get “turbinado”, pios sua sintaxe
á praticamente a mesma, além de adicionar outras características únicas, como uma interface
amigável para o gerenciamento de pacotes.
Para utilizá-lo, instale da seguinte forma:
# apt-get install aptitude
Após instalado, já podemos contar com o comando aptitude, que aceita os comandos como
install, update e upgrade do apt-get, ou abre a interface “gráfica” de gerenciamento se
digitarmos aptitude sem nenhum parâmetro.
O aptitude é notavelmente mais inteligente que o apt-get. Um exemplo é como ele lida com
pacotes obsoletos do sistema (órfãos). Imagine que você instalou o pacote xyz, que de quebra
trouxe os pacote abc e 123 como dependências. Só que se removermos o pacote xyz com o
apt-get, os pacotes que só serviram de dependência para ele (o abc e o 123) ficarão ocupando
espaço no sistema, sem oferecer mais nenhuma dependência para nenhum outro pacote. Já o
57
PROGRAMA
TÉCNICO CIDADÃO
aptitude é capaz de desinstalar automaticamente esses pacotes ao removermos o “pacote-pai”
xyz.
O modo “gráfico” do aptitude inicialmente pode parecer confuso, mas logo pegamos a manha.
Para atualizar a lista de pacotes (tal como um aptitude update), pressione [U]. Utilize as setas
do teclado para navegar pela lista de pacotes categorizada. A tecla [+] marca o pacote para
instalação/atualização, a tecla [-] remove. As teclas do teclado numérico não costumam
funcionar bem nesses casos. A tecla [G] avança na seleção (Após selecionar os pacotes
necessários, por exemplo, vai para a tela de confirmação de instalação) e a tecla [Q] retrocede,
e se pressionada na tela inicial do programa, sai dele.
apt-show-versions
Este é um programa simples, porém direto e funcional. Sua principal função é mostrar as
versões dos pacotes disponíveis, mas é amplamente utilizado para mostrar quais pacotes estão
pendentes de atualização atualmente no sistema. Ele faz isso comparando as versões dos
pacotes instalados com as versões dos pacotes na lista dos repositórios.
Instale-o com o comando:
# apt-get install apt-show-versions
Depois utilize-o com a opção “-u” para descobrir quais pacotes estão desatualizados no
sistema:
# apt-show-versions -u
apt-cache
Utilitário da família apt. Serve para buscar informações na lista de pacotes dos repositórios. Ele
é muito utilizado para procurar por pacotes cujo nome ou descrição contenha determinada
palavra (Útil para encontrar um pacote que lide com determinada funcionalidade) e para exibir
58
PROGRAMA
TÉCNICO CIDADÃO
informações sobre pacotes que ainda não estejam instalados no sistema, mostrando seu
respectivo arquivo de controle.
Sintaxe:
apt-cache comando pacote [pacote...]
Tabela de comandos do apt-cache
gencaches
showpkg
showsrc
stats
dump
dumpavail
unmet
search
show
depends
pkgnames
policy
Gera os caches de informações.
Mostra informações gerais do pacote
Mostra registros fontes
Mostra estatísticas básicas
Mostra o arquivo inteiro de forma concisa
Mostra arquivo de disponíveis
Mostra dependências não satisfeitas
Procura por pacotes que casem com algum padrão
Mostra informações sobre determinado pacote
Mostra as dependências de determinado pacote
Mostra nomes dos pacotes
Mostra configurações de políticas
Exemplos:
# apt-cache search xpdf
# apt-cache show xpdf-utils
# apt-cache depends xpdf-utils
EXERCÍCIO PROPOSTO:
Verifique com o comando dpkg quais desses pacotes não estão instalados e instale
os que faltarem: less, discover, read-edid, locales, console-data e mdetect.
Verifique também na descrição dos pacotes para que eles servem.
59
PROGRAMA
TÉCNICO CIDADÃO
O gerenciador de pacotes RedHat (RPM)
O RPM é um gerenciador de pacotes criado pela RedHat (Inclusive leva seu nome) e é o
gerenciador de pacotes mais amplamente aceito entre as distribuições Linux. As chamadas
distribuições “RedHat Like” (como Conectiva, Mandrake, TurboLinux e Suse) são principalmente
conhecidas assim porque levam consigo o gerenciador de pacotes RPM. Portanto, conhecer o
gerenciador de pacotes RPM automaticamente qualifica o administrador a estar gerenciando
softwares em todas essas distribuições que utilizem RPM como o Gerenciador de Pacotes
padrão.
Mas o RPM não está disponível somente para estas distribuições. Existem distribuições (Debian
por exemplo) que por padrão utilizam outro gerenciador de pacotes, mas também podem
utilizar o RPM “em segundo plano”. Mas isso não é uma boa prática, pois existirá mais de uma
base de dados contendo a lista dos softwares instalados no sistemas isso é péssimo para a
administração (Seria como ter conta-corrente em dois bancos).
O formato do “nome” de um arquivo RPM segue o padrão: foobar-1.0-1.i386.rpm
Onde fica dividido em 4 partes. A primeira parte (foobar) é o nome do pacote (Não confunda
com o nome do arquivo!); A segunda (1.0-1) é a versão do pacote; A terceira (i386)
representa a arquitetura para qual aquele pacote foi compilado. Alguns pacotes vem com a
arquitetura “all”, que é compatível com qualquer arquitetura; A quarta parte é a extensão do
arquivo (.rpm).
O RPM é relativamente simples de gerenciar. Suas funções básicas são: instalação,
desinstalação, atualização e consulta de pacotes. Gerenciamos esses modos através do
comando rpm.
Sintaxe:
rpm -opções [pacote] [pacote...]
60
PROGRAMA
TÉCNICO CIDADÃO
Consulta de pacotes RPM
O modo de consulta do permite fazermos consultas sobre os pacotes instalados no sistema
(através da base de dados mantida pelo RPM) ou sobre pacotes que ainda não estão instalados
no sistema, consultando diretamente o “arquivo” do pacote.
Tabela de Parâmetros
Opção obrigatória no modo de consulta. Diz ao rpm que estamos
efetuando uma consulta. Todas as outra opções abaixo funcionam em
conjunto com essa opção.
-qa pacote
Refere-se a todos os pacotes instalados.
-qc pacote
Mostra os arquivos de configuração contidos no(s) pacote(s).
-qd pacote
Mostra os arquivos de documentação contidos no(s) pacote(s).
-ql pacote
Lista todos os arquivos contidos no(s) pacote(s).
-qlv pacote
Mostra mais informações sobre os arquivos contidos nos pacotes.
-qi pacote
Mostra um cabeçalho de informações sobre o(s) pacote(s)
-qf arquivo
Verifica qual é o pacote que provê determinado arquivo ao sistema.
-qip
Diz ao RPM para efetuar a busca diretamente no arquivo RPM e não na
arquivo.rpm
base de dados do RPM. Funciona também com as opções -c, -d e -l.
--whatrequires Mostra qual(is) pacote(s) requer alguma dependência.
--whatprovides Mostra qual(is) pacote(s) provê alguma dependência.
-q pacote
Exemplo A:
# rpm -qa
mailcap-2.1.9-2
filesystem-2.1.6-2
bzip2-libs-1.0.2-2
...
O exemplo mostra como listar todos os pacotes instalados no sistema. A saída do exemplo foi
suprimida por ser muito grande. Repare que o formato da saída é similar ao formato do nome
do pacote rpm, porém mostra somente os 2 primeiros campos (Nome do pacote e versão).
Exemplo B:
61
PROGRAMA
TÉCNICO CIDADÃO
# rpm -q kernel
kernel-2.4.18-3
Como podem ver, é possível direcionar a consulta para um pacote específico, para isso, basta
especificar seu nome na consulta. (A opção -a não é necessária aqui).
ATENÇÃO
Uma consulta como essa diz que o pacote não está instalado mesmo que o pacote
não exista, levando a conclusões erradas sobre a existências de tal pacote. Portanto, um nome de pacote qualquer que o rpm diga não estar instalado não significa
que ele exista em algum lugar. Encare a resposta como “Não encontrado na base
de dados interna do RPM”.
Exemplo C:
# rpm -qa "vim-*"
vim-common-6.1-2
vim-enhanced-6.1-2
vim-minimal-6.1-2
Podemos efetuar pesquisas utilizando curingas. Nesse caso, lembre-se sempre de enquadrar os
argumentos de pesquisa entre aspas duplas.
Exemplo D:
# rpm -qi kernel
Name
: kernel
Relocations: (not relocateable)
Version
: 2.4.18
Vendor: Red Hat, Inc.
Release
:3
Build Date: Qui 18 Abr 2002 09:03:07 GMT+3
Install date: Sex 26 Abr 2002 06:28:03 GMT+3
Build Host: porky.devel.redhat.com
Group
: System Environment/Kernel
Source RPM: kernel-2.4.18-3.src.rpm
Size
: 30243536
License: GPL
Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Summary
: The Linux kernel (the core of the Linux operating system)
Description :
The kernel package contains the Linux kernel (vmlinuz), the core of your
62
PROGRAMA
TÉCNICO CIDADÃO
Red Hat Linux operating system. The kernel handles the basic functions
of the operating system: memory allocation, process allocation, device
input and output, etc.
Utilizamos o argumento -i para mostrar mais informações sobre o pacote “kernel”. Da mesma
forma, os parâmetros -c, -d, -v e -l são utilizados para listar os arquivos contidos no pacote
(Vide tabela de parâmetros anterior).
Instalação, desinstalação e atualização de pacotes RPM
Com alguns comandos simples podemos instalar, desinstalar e atualizar pacotes no sistema
utilizando o rpm. Antes de instalar um pacote rpm, precisamos “obter” o pacote rpm, baixando
da internet, copiando de algum cd, disquete, rede, etc. Consulte seu instrutor sobre como
conseguir algum pacote para esta aula. Na apostila, partiremos do princípio de que já existe um
pacote rpm chamado zebra no diretório atual (zebra-0.92a-3.i386.rpm), mas os exemplos
podem ser seguidos para outros pacotes.
63
PROGRAMA
TÉCNICO CIDADÃO
Tabela de Parâmetros
Instala determinado pacote no sistema. Caso ele já esteja instalado, o
sistema emitirá um alerta.
-U arquivo.rpm Atualiza a versão de um pacote cuja versão antiga já esteja instalada no
sistema, ou instala o pacote caso nenhuma versão anterior esteja
instalada.
--oldpackage
Utilizado em conjunto com o -U. Diz ao rpm para substituir o pacote por
uma versão mais antiga.
--force
Força alguma operação que o rpm não esteja permitindo.
-e pacote
Remove um pacote do sistema.
-h
Mostra andamento da instalação do(s) pacote(s). Necessita da opção -i.
-i arquivo.rpm
-v
--nodeps
Mostra mais informações na saída do comando. (O(s) nome(s) do(s)
pacote(s) durante uma instalação, por exemplo)
Diz ao RPM para ignorar as dependências (Perigoso !!!). Seria como tentar
trocar o pneu de um carro em movimento.
Instalação/Atualização
Com os dados da tabela acima, podemos concluir que é possível instalar pacotes de duas
formas. Com o parâmetro -i ou com o parâmetro -U. Como o parâmetro -U (que serve para
atualização) também faz instalação, utilizaremos ele no exemplo, e recomendamos que seja
utilizado no dia-a-dia. Outros parâmetros bem-vindos para a instalação são o -h e o -v, que
adicionarão mais “verbosidade” a nossa instalação.
Exemplo:
# rpm -q zebra
o pacote zebra não está instalado
# rpm -Uvh zebra-0.92a-3.i386.rpm
A preparar...
####################################### [100%]
1:zebra
####################################### [100%]
# rpm -q zebra
zebra-0.92a-3
64
PROGRAMA
TÉCNICO CIDADÃO
Geralmente é dessa forma que instalamos pacotes rpm no sistema. O mesmo exemplo serviria
para atualização caso já existisse um pacote zebra de uma versão inferior instalado.
Desinstalação
Desinstalar pacotes rpm é ainda mais simples do que instalá-los. basta Utilizar a opção -e
seguida do “nome do pacote”.
Exemplo:
# rpm -q zebra
zebra-0.92a-3
# rpm -e zebra
# rpm -q zebra
erro: o pacote zebra não está instalado
65
PROGRAMA
TÉCNICO CIDADÃO
ESTRUTURA DE DIRETÓRIOS
Hierarquia
O Linux tem como principais elementos estruturais arquivos e diretórios, onde arquivos
guardam informações e diretórios são os compartimentos que podem conter arquivos e/ou
subdiretórios.
Estes arquivos e diretórios estão organizados numa estrutura hierárquica na forma de uma
árvore invertida, ou seja, possui estrutura hierárquica porque alguns elementos têm
ascendência sobre outros.
A forma da estrutura de árvore invertida, que assim se chama porque o elemento no topo é
raiz, de onde saem o “tronco” e os “galhos” que atingem os demais elementos. De cada
diretório partem outros “galhos” que podem atingir os demais elementos.
Os nomes de arquivos e diretórios devem ser usados lembrando-se que o Linux é case sensitive,
ou seja, diferencia maiúsculas de minúsculas.
O diretório no topo da hierarquia é o diretório raiz que é representado por “/”. Aqueles diretórios
logo abaixo deles são seus filhos; estes filhos, por sua vez, podem ter outros diretórios filhos e
também arquivos.
Sempre que um diretório contiver um segundo diretório que vem logo abaixo dele na
hierarquia diz-se que este segundo diretório é um subdiretório.
Caminho Absoluto
Para localizar, de maneira absoluta, um elemento qualquer no sistema de arquivos, deve-se
exprimir o seu caminho absoluto, ou seja, seu caminho completo. O caminho absoluto localiza,
de maneira inequívoca, um arquivo ou diretório no sistema de arquivos.
66
PROGRAMA
TÉCNICO CIDADÃO
Exemplo de caminho absoluto: /usr/local/bin
Caminho Relativo
É possível utilizar caminhos relativos para localizarmos arquivos ou diretórios. O caminho é
relativo ao nosso diretório corrente (ou seja, a partir de diretórios diferentes, podemos chegar a
lugares diferentes usando um mesmo caminho relativo).
Exemplo de caminho relativo: ../spool/mail
Podemos utilizar os comandos pwd, ls e cd para auxiliar-nos com a localização na estrutura de
diretórios, conforme vemos a seguir.
Localização na Estrutura de Diretórios
A seguir estudaremos alguns comandos que são essenciais para a nossa localização na
estrutura de diretórios.
pwd
Este comando vai mostrar na tela o seu diretório corrente, ou seja, em que diretório você está
no momento. Sempre que um comando necessitar de um nome de arquivo, caso não
especifiquemos seu caminho, o comando assumirá que estamos nos referindo a arquivos do
nosso diretório corrente.
Sintaxe:
pwd
Exemplo:
# pwd
/root
67
PROGRAMA
TÉCNICO CIDADÃO
O comando acima mostra que o diretório atual é “/root”.
ls
Exibe o conteúdo do diretório ou informações sobre um arquivo.
Tabela de Parâmetros
Mostra o conteúdo e as informações dos arquivos do diretório corrente de
maneira detalhada.
-a
Mostra o conteúdo do diretório corrente, incluindo os arquivos ocultos (Que
iniciam com “.”).
-F
Adiciona Indicadores.
-G
Oculta a coluna de grupo dono do arquivo. (Só funciona junto com a opção -l)
-h
Mostra o tamanho dos arquivos de forma legível para “humanos” (humanreadable).
-n
Mostra Identificação de Usuários (UID's) e grupos (GID's) ao invés de nomes.
-o
Listagem longa sem o grupo dono dos arquivos (o mesmo que -lG).
-R
Lista diretórios e sub-diretórios recursivamente.
--full-time Lista datas e horas no formato completo.
--color
Ativa exibição colorida de arquivos para ajudar na identificação dos mesmos. Por
padrão,
azul=diretório,
verde=executável,
azul-claro=link
simbólico,
vermelho=arquivo compactado, etc.
-r
Inverte a ordem de classificação.
-c
Classifica por data de alteração.
-X
Classifica pela extensão.
-l
Sintaxe:
ls [parâmetro] <arquivo>
Exemplo:
[root@host root] # ls
diversos
68
PROGRAMA
TÉCNICO CIDADÃO
evolution
latex
listamp3
material
projetolc
teste
tlm-4.doc.gz.doc
O comando acima simplesmente mostra o conteúdo (arquivos) do diretório corrente. É possível
mostrar o conteúdo de um ou vários diretórios ao mesmo tempo, basta acrescentar o caminho
do(s) diretório(s) a frente do comando, conforme abaixo:
# ls /mnt /tmp
mnt/:
cdrom
floppy
tmp/:
DOCUMENTO
cd
Significa “Change Directory” (troca de diretório), este comando é usado para trocar de diretório
corrente.
Sintaxe:
cd diretorio
Exemplo A:
# cd /var/tmp
Sai do diretório atual e vai para /var/tmp.
Exemplo B:
69
PROGRAMA
TÉCNICO CIDADÃO
# cd ../
Sai do diretório atual (/var/tmp) e vai para o diretório /var, que fica um diretório acima (antes)
do atual. Isso é possível graças a duas entradas especiais que existem em todos os diretórios:
“.” e “..”. A entrada “.” refere-se ao próprio diretório, já a entrada “..” refere-se ao diretório logo
“acima” do atual, exatamente como no MS-DOS.
Exemplo C:
# /etc/init.d/networking restart
Reconfiguring network interfaces...done.
# cd /etc/init.d
# ls -l networking
-rwxr-xr-x 1 root root 2607 Jun 13 2004 networking
# ./networking restart
Reconfiguring network interfaces...done.
Esse exemplo mostra como executar um comando que esteja no diretório /etc/init.d de duas
formas. A primeira utiliza o caminho absoluto (/etc/init.d/networking), o segundo utiliza o
caminho relativo (./networking). Ambos levam ao mesmo resultado.
Outro caminho relativo especial na estrutura de diretórios é o “~”; Ele refere-se ao diretório
HOME do usuário atualmente logado no sistema. Observe o seguinte exemplo, levando em
consideração que o diretório home do usuário root é a pasta /root:
Exemplo D:
# pwd
/tmp
# cd ~
# pwd
/root
Outro caminho
especial utilizado com freqüência é o “-”. Ele leva de volta para o último
diretório visitado. Veja o exemplo.
70
PROGRAMA
TÉCNICO CIDADÃO
Exemplo E:
# pwd
/tmp
# cd /usr/local
# pwd
/usr/local
# cd # pwd
/tmp
$PATH
A variável $PATH armazena o caminho dos arquivos executáveis, ou seja, diretórios que contém
comandos e scripts no sistema. O seguinte comando mostra o conteúdo da variável $PATH.
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11
Nesse exemplo, existem 7 diretórios do sistema cadastrados na variável $PATH (separados por
“:”). Quando um comando qualquer é digitado sem o caminho absoluto (o comando ls, por
exemplo), o sistema procura o arquivo ls dentro do diretório /usr/local/sbin, e caso não
encontre, continua a busca no diretório /usr/local/bin... seguindo assim até chegar no último
diretório (/usr/bin/X11), se não encontrar nesse o sistema avisa que o comando não pode ser
localizado.
O caminho dos diretórios que contém executáveis costumam já vir configurados após a
instalação do Linux (verifique a variável $PATH). Caso seja necessário alterar o conteúdo dessa
variável, é recomendável fazer isso editando o campo correspondente no arquivo /etc/profile,
que é lido por todos os usuários no sistema no momento do Login. Se quiser alterar somente
para um usuário específico, adicione a entrada correspondente no arquivo ~/.bashrc do(s)
usuário(s) em questão. Esses e outros arquivos relacionados a configuração do shell bash serão
estudados mais a fundo ainda neste treinamento.
71
PROGRAMA
TÉCNICO CIDADÃO
DICA
Para exibir o conteúdo de uma variável no console, execute o comando echo
$NOME_DA_VARIAVEL, lembrando que o nome da variável faz distinção entre maiúsculas e minúsculas. Tente um echo $PATH.
Histórico de Comandos
Você pode executar comandos já digitados pressionando as teclas [Seta para cima] e [Seta
para baixo]. Devemos isso ao histórico de comandos, pois conforme digitamos comandos no
bash, ele os armazena no chamado “histórico de comandos”, que fica em memória enquanto
utilizamos o console, e quando terminamos a sessão normalmente (logout), o bash salva esse
histórico no arquivo ~/.bash_history. Para fazer isso manualmente, utilizamos o comando:
# history -w ~/.bash_history
No próximo login, o bash carrega o arquivo ~/.bash_history para a memória, restaurando o
último histórico salvo. O procedimento manual para fazer isso seria:
# history -r ~/.bash_history
O bash limita o tamanho máximo de comandos que podem ficar no histórico de comandos
através da variável de ambiente $HISTSIZE.
Tabela de Parâmetros
-w
-r
-c
Grava o histórico em um arquivo especificado.
Lê o histórico a partir de um arquivo previamente salvo.
Limpa o histórico da memória (mas não apaga o ~/.bash_history).
Exemplo A:
# history
...
530 echo PATH
531 echo $PATH
532 cd ~
72
PROGRAMA
TÉCNICO CIDADÃO
533
534
535
536
537
ls -lA
ls -la
vi .bashrc
vi /etc/profile
history
O comando history, quando chamado sem argumentos, mostra todas as entradas no histórico.
Exemplo B:
# history 10
531 echo $PATH
532 cd ~
533 ls -lA
534 ls -la
535 vi .bashrc
536 vi /etc/profile
537 history
538 history |head
539 history -10
540 history 10
Nesse caso, ele mostra os últimos 10 comandos no histórico. Repare que cada comando no
histórico possui um identificador numérico. Podemos utilizar desse identificador para executar
novamente o comando em questão. Por exemplo, digamos que seja preciso repetir o comando
“echo $PATH” (Número 531 no histórico):
Exemplo C:
# !531
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11
Outros comandos como esse podem ser verificados na tabela abaixo:
73
PROGRAMA
TÉCNICO CIDADÃO
Expansões para o Histórico de Comandos
!n
!!
!-n
!exemplo
Refere-se a entrada n do histórico.
Repete o último comando digitado.
Refere-se ao comando atual “menos” n no histórico.
Repete o último comando digitado que comece com “exemplo”
DICAS MAIS
É possível fazer uma pesquisa reversa no histórico de comandos com a seqüência
de teclas [CONTROL]+[R]. Nesse modo, basta começar a digitar um comando desejado que o bash preenche com o mais provável conforme digita-se.
Teclas de Atalho
A tela do console em modo texto pode ser rolada para cima utilizando [SHIFT]+[PAGE UP], ou
[SHIFT]+[PAGE DOWN] para rolar a tela para baixo (a tela já deve ter sido rolada p/ cima nesse
momento). Isto é útil para visualizar saídas de comandos que ocupam mais de uma tela no
console (O Linux tem bastante deles... ).
Outra forma de navegar através dos comandos no histórico é com a ajuda de teclas como [SETA
P/ CIMA] (volta recursivamente os comandos do histórico, um por um), e [SETA P/ BAIXO]
(avança através dos comandos no histórico). As setas são muito utilizadas no dia-a-dia de um
administrador de sistemas Linux, pois se tornam muito necessárias conforme digitamos
comandos.
74
PROGRAMA
TÉCNICO CIDADÃO
Tecla [TAB]
A tecla [TAB] nos permite completar nomes de arquivos, diretórios, executáveis no $PATH, etc.
Exemplo A:
# ls /u[TAB]/sh[TAB]/do[TAB]
No exemplo, acionamos o comando ls /usr/share/doc utilizando a tecla tab 3 vezes para
completar o caminho.
Exemplo B:
# ifco[TAB]
O exemplo acima completa o comando ifconfig logo após digitarmos “ifco” (somente as 4
primeiras letras) seguido da tecla [TAB].
Filesystem Hierarchy Standard
O Linux usa um padrão para a estrutura de diretórios, denominado FHS (Filesystem Hierarchy
Standard), que visa padronizar o nome e a localização de diretórios e arquivos principais do
sistema. Esse padrão tem algumas características muito importantes, como a compatibilidade
com outros sistemas e a habilidade na montagem de algumas partições no modo somente de
leitura.
Quando uma distribuição Linux segue a risca os padrões da FHS, ela está homologada nos
padrões FHS, o que proporciona um alto nível de compatibilidade entre aplicativos criados
inclusive para outras distribuições, desde que esses aplicativos também sigam o padrão da FHS.
Um sistema FHS divide os diretórios em 2 categorias principais:
1) Compartilháveis e Não Compartilháveis:
75
PROGRAMA
TÉCNICO CIDADÃO
A distinção entre dados Compartilháveis e Não-Compartilháveis é necessária pelos seguintes motivos: A) Em um ambiente de rede com várias máquinas, é uma muito útil
poder compartilhar dados entre diferentes hosts para economizar espaço em disco e
facilitar as tarefas de manutenção; B) em um mesmo ambiente, certos arquivos contém informações específicas para cada host, portanto, esses dados não podem ser
compartilhados para os outros micros da rede;
2) Variáveis e Estáticos.
Já a distinção entre os dados Variáveis e Estáticos se torna necessária pelos motivos:
A) Devido ao diretório / (raiz) conter tanto dados variáveis quanto estáticos, alguns
dados nele contidos precisam ter permissões de leitura e escrita; B) Existem
diretórios que recebem modificações constantemente (variáveis), como o /var por
exemplo.
A correlação entre esses tipos de diretórios forma a FHS, como mostrado na tabela abaixo:
Estáticos
Variáveis
Compartilháveis
Não-Compartilháveis
/usr
/etc
/opt
/boot
/var/mail
/var/run
/var/spool/news
/var/lock
Os diretórios contemplados pela FHS são:
/bin
Contém os comandos que podem ser usados pelo administrador de sistema e pelos usuários,
isso o torna necessário durante uma tarefa de manutenção do sistema, e portanto não pode
76
PROGRAMA
TÉCNICO CIDADÃO
ficar em uma partição separada da partição que contém o / (raiz). Scripts de Inicialização
também fazem uso desses comandos aqui presentes, como por exemplo:
cat
Utilizado para mostrar arquivos na saída padrão.
chmod
Utilizado para alterar permissões de arquivos e diretórios.
chown
Utilizado para modificar dono/grupo de arquivos e diretórios.
cp
Utilizado para copiar arquivos e diretórios.
ls
Utilizado para listar conteúdo de diretórios e informações
sobre arquivos.
/boot
Este diretório contém arquivos importantes para a Inicialização e carregamento do kernel. É
neste diretório que se encontra o Kernel. Também é nesse diretório que ficam localizados os
arquivos do Gerenciador de Boot (bootloader).
/dev
Contém os arquivos de dispositivos suportados pelo Linux, como floppy disk, cdrom, unidades
de disco, mouse, portas paralelas e serias, etc...
Conforme visto anteriormente, tudo no linux é tido como arquivo, e isso inclui os dispositivos do
sistema, como hds, modems, portas, etc. Isso é possível pois o kernel conta com esses
“Arquivos Especiais” que ficam no diretório /dev. Esses arquivos especiais podem ser de dois
tipos: Dispositivos de Bloco e Dispositivos de Caractere.
A diferença entre esses dois tipos de dispositivos é que os dispositivos de bloco são dispositivos
geralmente associados “armazenamento de dados” (blocos de dados), pois tratam os dados em
formato binário próprio para armazenagem e leitura posterior. Assim, os dados enviados a
esses dispositivos são armazenados em dispositivos de armazenamento, como discos-rígidos e
77
PROGRAMA
TÉCNICO CIDADÃO
disquetes, possibilitando posterior leitura desses dispositivos. Já os dispositivos de caractere
tratam o fluxo de dados em um formato de caracteres texto. O próprio terminal texto, por
exemplo, utiliza um dispositivo de caractere para interfacear com o kernel.
Exemplos de Dispositivos
/dev/hda
Bloco
/dev/fd0
/dev/sdd11
/dev/tty1
Caractere
/dev/ttyS0
/dev/zero
Portas Seriais e Paralelas
No linux, as portas seriais e paralelas tem uma nomenclatura diferente do MSDOS®. Essas
diferenças são mostradas na tabela abaixo:
DOS
LINUX
COM1
/dev/ttyS0
COM2
/dev/ttyS1
LPT1
/dev/lp0
LPT2
/dev/lp1
/etc
Contém os arquivos e os diretórios de configuração que são específicos ao sistema atual. É
nesse diretório que passaremos a maior parte do curso.
78
PROGRAMA
TÉCNICO CIDADÃO
/home
Contém os diretórios de trabalho de todos os usuários do sistema. Neste diretório ficam
informações como personalização de desktop, configuração de clientes de e-mail, etc...
O propósito principal dessa estrutura é facilitar as tarefas de backup, por exemplo.
/root
Este é diretório home do administrador de sistema (Usuário root). Segundo a FHS, o root é o
único usuário interagível com o sistema (que digita comandos nele) que deve ter seu diretório
de trabalho fora da pasta /home. Isso torna possível que o usuário root acesse seus arquivos
durante uma tarefa de manutenção no sistema, onde o sistema “deve” ser capaz de funcionar
somente com a partição raiz acessível (montada).
/lib
Contêm as biblioteca compartilhadas necessárias ao carregar o sistema e para executar os
comandos localizados na raiz do sistema de arquivos. Os módulos do Kernel também se
localizam neste diretório, mais especificamente em /lib/modules/<versão do kernel>/.
/mnt
Este diretório é fornecido de modo que o administrador de sistema possa temporariamente
montar um disquete, cdrom, ou sistema de arquivos quando necessário. Algumas distribuições
Linux como a RedHat, Mandrake e Conectiva criam os subdiretórios floppy e cdrom aqui dentro
para servir como ponto de montagem para esses tipos de mídias. Outras distribuições como o
Debian e Knoppix criam esses diretórios (cdrom e floppy) diretamente na raiz, e os utilizam
como padrão para servir como ponto de montagem à essas mídias.
79
PROGRAMA
TÉCNICO CIDADÃO
/opt
É reservado para a instalação de pacotes que estão fora da distribuição utilizada.
Estes pacotes fornecidos por terceiros devem ser instalados em diretórios separados. Ex.: /
opt/pacote – onde o pacote deve descrever o nome do software a ser instalado.
/sbin
Contém os binários essenciais para o inicialização, na recuperação e restauração do sistema.
Estes binários são usados pelo próprio sistema ou pelo administrador(root).
/tmp
O diretório tmp é utilizado por alguns programas que requerem arquivos temporários.
Recomenda-se que ao inicializar o sistema os arquivos contidos neste diretório sejam apagados.
Distribuições como o Debian fazem isso automaticamente.
/usr
O diretório /usr é a segunda maior seção do sistema de arquivos, nele estão os dados
compartilháveis apenas para leitura. Isso significa que não se deve gravar nada “manualmente”
neste diretório, toda a informação que for gerada com o tempo deve ser armazenada em outra
parte (existem os diretórios apropriados para isso).
Encontram-se neste diretório o gerenciador de janelas X, programas de usuários, jogos, etc...
Os subdiretórios mais importantes dentro da estrutura /usr são::
bin
Binários não inerentes ao sistema.
80
PROGRAMA
TÉCNICO CIDADÃO
include
Arquivos de cabeçalho incluídos por programas em C.
lib
Bibliotecas do sistema.
local
Arquivos Não-compartilháveis (Sim, /usr é compartilhável, mas /
usr/local não é).
sbin
Binários Inerentes ao sistema.
share
Dados compartilháveis entre os programas.
DICAS MAIS
Repare que a maioria desses diretórios dentro de /usr também existem na raiz do
sistema. A diferença entre eles é que os que ficam na raiz contém dados que não
podem ser compartilhados pela rede, já os que ficam em /usr sim.
/var
Contém arquivos de dados de variáveis. Isto inclui diretórios e arquivos de spool, dados
administrativos e logs do sistema.
Devido a provável grande quantidade de dados e acessos que esse diretório receberá, uma boa
prática do administrador é alocar uma partição em um disco separado para receber o diretório /
var. Isso garante mais velocidade (menos acessos no mesmo disco que contém o sistema) e
facilita as tarefas de backup.
/proc
O diretório /proc é ligeiramente diferente dos diretórios comuns, pois os dados nele contidos
não estão fisicamente em nenhum disco rígido do sistema, mas sim na memória ram. Trata-se
de um sistema de arquivos virtual que é criado e gerenciado pelo Kernel em tempo real, e é a
forma mais direta que o usuário tem de interagir com o kernel.
81
PROGRAMA
TÉCNICO CIDADÃO
Os arquivos nele contidos contém basicamente valores de variáveis do kernel. Acompanhe os
exemplos:
Exemplo A:
# cat /proc/cpuinfo
processor
:0
vendor_id
: AuthenticAMD
cpu family
:6
model
:4
model name : AMD Athlon(tm) processor
stepping
:2
cpu MHz
: 950.066
cache size
: 256 KB
fdiv_bug
: no
hlt_bug
: no
f00f_bug
: no
coma_bug
: no
fpu
: yes
fpu_exception : yes
cpuid level
:1
wp
: yes
flags
: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx
fxsr syscall mmxext 3dnowext 3dnow
bogomips
: 1893.99
Repare que foi mostrado o conteúdo do arquivo /proc/cpuinfo com o comando cat, e que nesse
arquivo estão contidas informações sobre o processador em uso na máquina.
O /proc está repleto de arquivos como esses, a existência ou não da maioria deles depende de
opções específicas da versão do kernel em uso no sistema. Os arquivos que costumam existir
em sistemas atuais com kernel's 2.4 e 2.6 e nos trazem informações importantes, como na
tabela a seguir:
/proc/cpuinfo
Informações sobre a(s) CPU(s) do sistema.
/proc/meminfo
Informações sobre a memória do sistema.
82
PROGRAMA
TÉCNICO CIDADÃO
/proc/pci
Mostra Informações sobre os dispositivos conectados ao barramento
PCI da placa mãe. (Obs.: esse arquivo mostra “todos” os dispositivos
que estão interconectados no barramento PCI, não somente as
placas plugadas nos slots PCI da placa mãe. A maioria dos
dispositivos on-board, como placas de som, usb e modem, aparecem
na listagem).
A saída desse comando é semelhante ao comando: lspci -v
/proc/interrupts
Mostra quais dispositivos estão
Interrupções do Sistema (IRQs).
/proc/ioports
Mostra quais portas de entrada e saída (Portas de IO) os dispositivos
estão utilizando.
/proc/cmdline
Mostra a linha de parâmetros que foi passada ao kernel durante a
inicialização.
/proc/kcore
Esse arquivo é exatamente o conteúdo da memória ram em binário,
portanto, não é um arquivo legível por nós humanos.
utilizando
as
respectivas
Além desses, o diretório /proc contém alguns subdiretórios com funções especiais, começando
por diretórios “numéricos” que contém informações sobre os processos rodando na máquina. O
diretório /proc/sys contém uma hierarquia de arquivos e diretórios que servem para
interagirmos diretamente com o kernel. Geralmente esses arquivos contém um valor de lógica
boleano (verdadeiro/falso), valendo 0 (falso) ou 1(verdadeiro). Alguns desses arquivos contém
strings que são valores de variáveis passadas diretamente ao kernel. A modificação desses
arquivos repercute imediatamente.
Exemplo A:
# cat /proc/sys/net/ipv4/ip_forward
0
# echo 1 > /proc/sys/net/ipv4/ip_forward
# cat /proc/sys/net/ipv4/ip_forward
1
Nesse exemplo, primeiro foi mostrado o conteúdo do arquivo /proc/sys/net/ipv4/ip_forward,
que retornou 0 (desabilitado). Esse arquivo habilita/desabilita a repassagem de pacotes ip no
83
PROGRAMA
TÉCNICO CIDADÃO
kernel, e vem desabilitado por padrão. No próximo comando, o conteúdo do arquivo foi
substituído pelo valor 1, o que instantaneamente ativa a repassagem de pacotes ip no kernel.
Todas as alterações feitas dessa forma na estrutura do /proc serão perdidas na próxima
reinicialização. Para salvá-las, devemos adicionar as entradas no arquivo /etc/sysctl.conf. Para
salvar a modificação feita no exemplo acima, adicionaríamos a seguinte linha no arquivo /
etc/sysctl.conf (verifique se a linha já não existe):
net/ipv4/ip_forward=1
O comando sysctl -p confirma a alteração.
84
PROGRAMA
TÉCNICO CIDADÃO
MANIPULAÇÃO DE ARQUIVOS E DIRETÓRIOS
A seguir veremos alguns comandos utilizados para manipular arquivos e diretórios, tarefa
comum no dia-a-dia de um administrador de sistemas Linux.
mkdir
Utilizamos o comando mkdir com a única finalidade de criar diretórios no sistema. Um diretório
nada mais é do que um arquivo especial contendo a lista de outros diretórios e arquivos nele
contidos. Ele pode ser entendido como uma pasta onde você guarda seus papéis (arquivos).
Como uma pessoa organizada, você utilizará uma pasta para guardar cada tipo de documento,
da mesma forma você pode criar um diretório vendas para guardar seus arquivos relacionados
com vendas naquele local.
Sintaxe:
mkdir [parâmetro] <diretorio> [<outro diretorio>] [...]
Exemplo A:
# mkdir dir1
Cria um diretório chamado dir1 dentro do diretório atual.
Exemplo B:
# pwd
/root
# mkdir dir2
# mkdir dir2/gama/beta
mkdir: cannot create directory `dir2/gama/beta/teste': No such file or directory
# mkdir -p dir2/gama/beta/teste
# ls dir2/gama/beta/
teste
85
PROGRAMA
TÉCNICO CIDADÃO
Primeiro criamos o diretório dir2 dentro da pasta atual (/root). Em seguida tentamos criar o
diretório dir2/gama/beta, sem sucesso, pois o mkdir por padrão só cria um diretório se o
anterior já existir. Para mudar esse comportamento, utilizamos a opção -p (parentes), que cria
os diretórios pais caso eles não existam.
DICA
Podem ser criados mais de um diretório com um único comando.
Exemplo: mkdir /tmp/teste /tmp/teste2 /tmp/teste3
tree
Exibe a árvore de diretórios e seu conteúdo em um formato hierárquico. É um comando
simplório, porém de grande ajuda. Não possui argumentos
Sintaxe:
tree [opções] <diretório>
Tabela de Parâmetros
-a
-d
-f
-i
-C
-p
-u
-g
Lista todos os arquivos, inclusive ocultos.
Lista somente diretórios.
Mostra caminho completo dos diretórios e arquivos.
Desabilita a Indentação.
Habilita saída colorida.
Mostra permissões dos arquivos/diretórios.
Mostra usuário dono dos arquivos/diretórios.
Mostra grupo dono dos arquivos/diretórios.
Exemplo:
86
PROGRAMA
TÉCNICO CIDADÃO
# tree -f
.
|-- ./Desktop
| `-- ./Desktop/starthere.desktop
|-- ./dead.letter
|-- ./dir2
| `-- ./dir2/gama
|
`-- ./dir2/gama/beta
|
`-- ./dir2/gama/beta/teste
|-- ./fedora2
| |-- ./fedora2/disc1
| | `-- ./fedora2/disc1/FC2-i386-disc1.iso
| |-- ./fedora2/disc2
| | `-- ./fedora2/disc2/FC2-i386-disc2.iso
| |-- ./fedora2/disc3
| | `-- ./fedora2/disc3/FC2-i386-disc3.iso
| `-- ./fedora2/disc4
|
`-- ./fedora2/disc4/FC2-i386-disc4.iso
|-- ./historico
`-- ./iptraf.log
10 directories, 8 files
rmdir
Remove um diretório do sistema. O diretório a ser removido deve estar vazio.
Sintaxe:
rmdir <diretorio> [<outro diretorio>] [...]
É necessário estar um nível acima do(s) diretório(s) que será(ão) removido(s).
Por exemplo, para remover o diretório /tmp/teste você deve estar fora deste
diretório e
executar o comando, como no exemplo abaixo:
Exemplo:
87
PROGRAMA
TÉCNICO CIDADÃO
# rmdir /tmp/teste
rm
Apaga arquivos. Também pode ser usado para apagar diretórios e sub-diretórios.
Sintaxe:
rm [parâmetro] <arquivo ou diretorio> [<outro arquivo ou diretório> [...]
Tabela de Parâmetros
-r
-i
-v
-u
-f
Remove Arquivos e Diretórios recursivamente. Necessário quando se quer remover
algum diretório não-vazio.
Pergunta antes de remover.
Mostra os nomes dos arquivos que estão sendo movidos.
Copia somente se o arquivo de origem é mais novo que o arquivo de destino ou
quando o arquivo de destino não existe.
Força a remoção. Remove arquivo(s) e/ou diretório(s) sem perguntar. (Perigoso se
associado com o comando
Exemplo A:
$ mkdir -p ~/exercicios/rm; cd ~/exercicios/rm
$ touch teste.txt
$ rm -iv teste.txt
rm: remove arquivo comum vazio `teste.txt'? s
removed `teste.txt'
Apaga o arquivo teste.txt no diretório atual.
Exemplo B:
$ cd /
$ rm -rfv ~/exercicios/rm
removed directory: `/home/usuario/exercicios/rm'
88
PROGRAMA
TÉCNICO CIDADÃO
Remove o diretório rm, criado no Exemplo A.
touch
Muda a data e hora que um arquivo foi criado. Também pode ser usado para criar arquivos
vazios.
Sintaxe:
touch [parâmetros] <arquivo[s]>
Tabela de Parâmetros
-t [AA]MMDDhhmm
-a
-c
-m
-r arquivo_de_referencia
Utiliza a hora especificada (MM=mês, DD=dia, hh=hora,
mm=minuto). Os ano com dois dígitos no começo são
opcionais (AA).
Modifica a data de acesso do arquivo.
Não cria um arquivo vazio, caso o arquivo não exista.
Modifica a data de modificação do arquivo.
Utiliza um arquivo de referencia de data para o arquivo alvo.
Exemplo A:
# ls
# touch arquivo1 arquivo2 arquivo3
# ls -l
total 3
-rw-r--r-- 1 emartins utah 0 2004-10-27 17:22 arquivo1
-rw-r--r-- 1 emartins utah 0 2004-10-27 17:22 arquivo2
-rw-r--r-- 1 emartins utah 0 2004-10-27 17:22 arquivo3
Criados 3 arquivos vazios. Observe a data de criação dos arquivos.
Exemplo B:
# ls -l arquivo1
-rw-r--r-- 1 emartins utah 0 2004-10-27 17:22 arquivo1
# touch -t 0311201245 arquivo1
89
PROGRAMA
TÉCNICO CIDADÃO
# ls -l arquivo1
-rw-r--r-- 1 emartins utah
0 2003-11-20 12:45 arquivo1
Continuando o exemplo anterior, modificamos a data de criação de arquivo1 para dia 20 de
novembro de 2003, às 12:45.
Exemplo C:
# ls -l
-rw-r--r-- 1 emartins utah
-rw-r--r-- 1 emartins utah
-rw-r--r-- 1 emartins utah
# touch -r arquivo1 arquivo3
# ls -l
-rw-r--r-- 1 emartins utah
-rw-r--r-- 1 emartins utah
-rw-r--r-- 1 emartins utah
0 2003-11-20 12:45 arquivo1
0 2004-10-27 17:22 arquivo2
0 2004-10-27 17:22 arquivo3
0 2003-11-20 12:45 arquivo1
0 2004-10-27 17:22 arquivo2
0 2003-11-20 12:45 arquivo3
Agora utilizamos o touch para modificar a data de criação de arquivo3 com base em arquivo1.
cp
Copia arquivos.
Sintaxe:
cp [OPÇÃO]... ORIGEM DESTINO
cp [OPÇÃO]... ORIGEM... <DIRETÓRIO>
cp [OPÇÃO]... --target-directory=DIRETÓRIO ORIGEM...
Copia ORIGEM para DESTINO, ou múltiplas ORIGENS para DIRETÓRIO.
ORIGEM é o arquivo que será copiado. Podem ser especificados mais de um arquivo para ser
copiado e também pode-se usar “Coringas” como ? e *. DESTINO é o caminho ou nome de
arquivo onde será copiado. Mesmo que o DESTINO seja a pasta atual, ele deve ser especificado
(Lembrete: “.” significa o diretório atual). Se o destino for um diretório, os arquivos de origem
serão copiados para dentro do diretório.
90
PROGRAMA
TÉCNICO CIDADÃO
Tabela de Parâmetros
-i
-r
-v
-a
-s
-l
-p
-u
-x
Pergunta antes de substituir um arquivo existente.
Faz cópia recursiva dos arquivos.
Mostra nomes dos arquivos enquanto copia.
Copia todos os tipos de arquivos, inclusive links simbólicos. O cp não copia links
simbólicos por padrão.
Cria link simbólico no destino ao invés copiar o arquivo em si.
Cria link (hardlink) no destino ao invés copiar o arquivo em si.
Mantém os atributos do arquivo, se possível.
Copia somente se o arquivo de origem é mais novo que o arquivo de destino ou
quando o arquivo de destino não existe. Cópia de atualização, na verdade.
Não copia arquivos que estejam localizados em partições (Pontos de Montagem)
diferentes.
Antes de prosseguir, vamos criar o ambiente p/ os exercícios:
Ambiente:
$ mkdir -p ~/exercicios/cp
$ cd ~/exercicios/cp
$ mkdir /tmp/arquivos
$ touch /tmp/arquivos/arquivo{1,2,3}
$ ls /tmp/arquivos
arquivo1 arquivo2 arquivo3
Exemplo A:
$ ls
$ cp /tmp/arquivos/arquivo1 .
$ ls
arquivo1
Efetuada uma simples cópia do arquivo arquivo1 p/ o diretório atual (~/exercicios/cp).
Exemplo B:
$ mkdir subdir
91
PROGRAMA
TÉCNICO CIDADÃO
$ cp -var /tmp/arquivos subdir/
`/tmp/arquivos' -> `subdir/arquivos'
`/tmp/arquivos/arquivo1' -> `subdir/arquivos/arquivo1'
`/tmp/arquivos/arquivo2' -> `subdir/arquivos/arquivo2'
`/tmp/arquivos/arquivo3' -> `subdir/arquivos/arquivo3'
$ cp -var /tmp/arquivos .
`/tmp/arquivos' -> `./arquivos'
`/tmp/arquivos/arquivo1' -> `./arquivos/arquivo1'
`/tmp/arquivos/arquivo2' -> `./arquivos/arquivo2'
`/tmp/arquivos/arquivo3' -> `./arquivos/arquivo3'
$ tree
.
|-- arquivo1
|-- arquivos
| |-- arquivo1
| |-- arquivo2
| `-- arquivo3
`-- subdir
`-- arquivos
|-- arquivo1
|-- arquivo2
`-- arquivo3
3 directories, 7 files
Copia recursivamente todo o conteúdo de /tmp/arquivos para subdir/ (recém-criado). Depois
faz a mesma cópia, porém com o destino sendo o diretório atual, mas como estamos copiando
uma estrutura completa de um diretório, esse diretório também é criado, assim como toda a
estrutura anterior, como pode ser visto na saída do comando tree.
Exemplo C:
$ ls
arquivo1 arquivos subdir
erika@martins:~/exercicios/cp$ cp -i /tmp/arquivos/arquivo1 .
cp: sobrescrever `./arquivo1'? s
$ cp /tmp/arquivos/arquivo? .
$ ls
arquivo1 arquivo2 arquivo3 arquivos subdir
92
PROGRAMA
TÉCNICO CIDADÃO
$
Copiado o arquivo arquivo1 para o diretório local, porém já existia um arquivo de mesmo
nome. A opção -i garante confirmação antes de sobrescrever um arquivo. Depois foi utilizado
um coringa (?) para copiar 3 arquivos de uma só vez para o diretório atual, e dessa vez, como
não foi especificada a opção -i, o arquivo arquivo1 foi sobrescrito sem pedir confirmação.
mv
Move ou renomeia arquivos e diretórios. O processo é semelhante ao do comando cp mas o
arquivo de origem é movido de seu local original para o novo local.
Sintaxe:
mv [parâmetro] [origem] [destino]
Tabela de Parâmetros
-f
-i
-v
-u
Substitui o arquivo de destino sem perguntar.
Pergunta antes de substituir (padrão).
Mostra os nomes dos arquivos que estão sendo movidos.
Copia somente se o arquivo de origem é mais novo que o arquivo de destino ou
quando o arquivo de destino não existe.
Exemplo A:
$ mkdir -p ~/exercicios/mv; cd ~/exercicios/mv
$ touch teste.txt
$ mv teste.txt utah.txt
$ ls
utah.txt
Muda o nome do arquivo teste.txt para utah.txt.
Exemplo B:
93
PROGRAMA
TÉCNICO CIDADÃO
$ mv -v utah.txt /tmp
`utah.txt' -> `/tmp/utah.txt'
removed `utah.txt'
Move arquivo utah.txt para dentro do diretório /tmp. Repare que o comando mv age de forma
idêntica ao cp, porém ele remove o arquivo logo após a cópia.
cat
Concatena e exibe arquivos.
Sintaxe:
cat [parâmetro] <diretorio ou arquivo>
Tabela de Parâmetros
-A
-b
-n
-v
-t
Exibe todos os caracteres especiais.
Numera apenas as linhas não-vazias da saída.
Numera todas as linhas da saída.
Exibe caracteres não-imprimíveis.
Exibe caracteres de tabulação.
Exemplo:
$ mkdir -p ~/exercicios/cat; cd ~/exercicios/cat
$ cat > teste1.txt
teste1
$ cat > teste2.txt
teste2
$ ls
teste1.txt teste2.txt
$ cat teste1.txt
teste1
94
PROGRAMA
TÉCNICO CIDADÃO
$ cat
1
$ cat
1
2
$ cat
1
2
-n teste1.txt
teste1
-n teste1.txt teste2.txt
teste1
teste2
-n test*
teste1
teste2
O primeiro comando cat redireciona a palavra digitada teste1 para o arquivo teste1.txt. Para
que o texto digitado vá definitivamente p/ o arquivo, devemos teclar [CONTROL]+[D] em uma
linha abaixo da última contendo texto. O mesmo é feito com teste2.txt. Depois utilizamos o
comando cat para visualizar o conteúdo do arquivo teste1.txt. Repare na utilização do
parâmetro -n.
tac
Mostra o conteúdo de um arquivo (como o cat) em ordem inversa, ou seja, as últimas linhas
primeiro.
Sintaxe:
tac [parâmetro] <diretorio ou arquivo>
Exemplo:
$ mkdir -p ~/exercicios/tac; cd ~/exercicios/tac
$ cat > teste.txt
linha1
linha2
linha3
$ tac teste.txt
linha3
linha2
linha1
95
PROGRAMA
TÉCNICO CIDADÃO
ln
Cria links para arquivos e diretórios no sistema. O link é um mecanismo que faz referência a
outro arquivo ou diretório em outra localização (Como os atalhos no Microsoft Windows®).
Sintaxe:
ln [parâmetro] [origem] [link]
ln [parâmetro]... <destino> [link]
ln [parâmetro]... <destino>... <diretório>
Tabela de Parâmetros
-s
-v
-d
Cria Link simbólico.
Mostra o nome de cada arquivo ao fazer o link.
Cria Hardlink para diretórios. Somente o root pode usar essa opção.
Antes de entender os links, devemos compreender um termo sobre os sistemas de arquivos:
Inodes.
Inodes
Todo arquivo criado no sistema de arquivos recebe um número que o identifica unicamente dos
demais “no mesmo sistema de arquivos (partição). A esse número damos o nome de inode.
É possível saber o inode de um arquivo específico com a opção -i do comando ls.
Exemplo:
$ ls -i teste1.txt
554844 teste1.txt
Nesse exemplo, o inode do arquivo teste1.txt é 554844.
96
PROGRAMA
TÉCNICO CIDADÃO
Existem 2 tipos de links: Links Simbólicos e Hardlinks.
Links Simbólicos
O link simbólico cria um arquivo especial no disco (do tipo link) cujo conteúdo é o caminho para
chegar até o arquivo alvo (isto pode ser verificado pelo tamanho do arquivo do link, bem menor
do que o arquivo de destino). Use a opção -s para criar links simbólicos.
Ambiente:
$ mkdir ~/exercicios/ln; cd ~/exercicios/ln
$ touch arquivo1
$ mkdir -p dir1/sub1/sub2 dir2/
Esses comandos criarão o ambiente necessário para aprendermos sobre links.
Exemplo A:
$ ln -s arquivo1 link1
$ ls -li
total 8
554848 -rw-r--r-- 1 emartins utah 0 2004-10-28 17:29 arquivo1
439830 drwxr-xr-x 3 emartins utah 4096 2004-10-28 17:30 dir1
439833 drwxr-xr-x 2 emartins utah 4096 2004-10-28 17:30 dir2
554850 lrwxrwxrwx 1 emartins utah 8 2004-10-28 17:41 link1 -> arquivo1
Utilizamos o ln para criar um link simbólico (opção -s) do arquivo arquivo1 para link1. Repare
que ele aparece referenciado na saída do comando ls -li. Constate também que o número dos
inodes dos arquivos “linkados” diferem, o que confirma que são realmente arquivos diferentes.
Exemplo B:
$ cd dir1/sub1/sub2/
$ ln -s ../../../dir2
$ ls -l
total 0
lrwxrwxrwx 1 emartins utah 13 2004-10-29 09:42 dir2 -> ../../../dir2
97
PROGRAMA
TÉCNICO CIDADÃO
Repare a possibilidade de se criar links utilizando caminhos relativos, inclusive para diretórios.
Se movermos o link de lugar, o link pode perder referência (apontar para um arquivo
inexistente) e se tornar um “link quebrado”.
Hardlinks
A grande diferença entre os Links Simbólicos e os Hardlinks é a forma como eles referenciam o
arquivo “linkado”. No caso dos Hardlinks, não é criado um arquivo novo no sistema de arquivos
como nos links simbólicos, e sim adicionada uma nova referência no diretório atual que aponte
o link para o “mesmo inode” do arquivo original. Dessa forma, se fizermos um hardlink de um
arquivo, não teremos dois arquivos “diferentes” no sistema, e sim uma nova referência ao
mesmo inode do arquivo linkado, o que torna o link exatamente o mesmo arquivo que o
original, pois o arquivo só será excluído do sistema de arquivos quando o último link também
for. Não é possível criar HardLinks para arquivos que não se encontrem no mesmo sistema de
arquivos (partição).
Exemplo:
$ cd ~/exercicios/ln/
$ ls -li
total 8
554848 -rw-r--r-- 1 emartins utah 0 2004-10-28 17:29 arquivo1
439830 drwxr-xr-x 3 emartins utah 4096 2004-10-28 17:30 dir1
439833 drwxr-xr-x 2 emartins utah 4096 2004-10-28 17:30 dir2
554850 lrwxrwxrwx 1 emartins utah 8 2004-10-28 17:41 link1 -> arquivo1
$ ln arquivo1 hardlink1
$ ls -li
total 8
554848 -rw-r--r-- 2 emartins utah 0 2004-10-28 17:29 arquivo1
439830 drwxr-xr-x 3 emartins utah 4096 2004-10-28 17:30 dir1
439833 drwxr-xr-x 2 emartins utah 4096 2004-10-28 17:30 dir2
554848 -rw-r--r-- 2 emartins utah 0 2004-10-28 17:29 hardlink1
554850 lrwxrwxrwx 1 emartins utah 8 2004-10-28 17:41 link1 -> arquivo1
98
PROGRAMA
TÉCNICO CIDADÃO
Criado um link do arquivo arquivo1 para hardlink1. Repare que o inode deles são idênticos
(destacados em negrito). Isso significa que são exatamente os mesmos arquivos.
99
PROGRAMA
TÉCNICO CIDADÃO
GERENCIAMENTO DE USUÁRIOS E GRUPOS
Neste capítulo aprenderemos a utilizar as ferramentas para gerenciar usuários e grupos do sistema. Tarefa crucial em um ambiente de administração Linux.
Identificadores de Usuários e Grupos (UID e GID)
No GNU/Linux, assim como no Unix, os usuários e grupos do sistema possuem um identificador
numérico que os diferenciam dos demais. No caso dos usuários, esse número é chamado de
UID (User Identificator); No caso dos grupos, esse número recebe o nome de GID (Group
Identificator). Esses sistemas utilizam arquivos texto para “traduzir” o UID e GID para um nome
inteligével para humanos, além de fornecer outras informações. Para que um usuário seja
válido no sistema, é preciso que hajam registros p/ eles nesses arquivos.
Esses arquivos são mostrados a seguir.
/etc/passwd
Esse arquivo contém uma lista em modo texto de todos os usuários cadastrados no sistema, um
por linha, onde cada linha se divide em sete campos. O caractere “:” divide os campos de cada
linha. Segue um exemplo de uma linha do arquivo /etc/passwd :
erika:x:1000:1000:Erika V. Martins,,,:/home/erika:/bin/bash
O primeiro campo (erika) é o nome do usuário.
O segundo campo (x) é a senha criptografada do usuário. Sempre quando esse campo contiver
apenas a letra x, significa que o sistema está utilizando senhas sombreadas (Shadow
Passwords), ou seja, não está armazenando as senhas nesse arquivo, e sim no /etc/shadow,
visto mais adiante.
Os campos 3 e 4 Mostram o UID e GID do usuário, respectivamente.
100
PROGRAMA
TÉCNICO CIDADÃO
O quinto campo é chamado GECOS, e armazena informações adicionais sobre o usuário,
divididas com “,” dentro do campo. Informações que podem ser o Nome Completo do Usuário,
telefones, número da sala, etc.
O sexto campo define qual será o diretório base do usuário (diretório home). No exemplo, o
diretório base do usuário é /home/erika.
E finalmente, o sétimo e último campo define qual será o interpretador de comandos (shell) do
usuário. Nesse caso o shell do usuário é /bin/bash. Quando o usuário erika efetuar login no
sistema, será executado o comando /bin/bash, devido a isso que é aberto um bash logo após o
login.
/etc/shadow
Esse arquivo somente é utilizado quando Senhas Sombreadas (Shadow Passwords) estão um
uso no sistema. Senhas Sombreadas são usadas nas distribuições atuais e a muito tempo, pois
oferecem mais segurança guardando a senha em um arquivo que não pode ser lido por
usuários comuns no sistema (o /etc/passwd pode ser lido por todos).
O /etc/shadow segue o mesmo formato de divisão do /etc/passwd, porém contém 9 campos.
erika:$1$cTdn0tUz$Ck447Zu3nMzo1bPXWQq3g.:12708:0:99999:7:::
Os campos estão divididos da seguinte forma:
1 – Nome do usuário:
2 – Senha criptografada.
3 – Data da última troca de senha (Contada em dias corridos desde 01/01/1970).
4 – Tempo mínimo de dias que a senha deve permanecer inalterada.
5 – Tempo máximo de dias que o usuário pode ficar com a mesma senha.
101
PROGRAMA
TÉCNICO CIDADÃO
6 – Com quantos dias de antecedência o sistema deve avisar que a senha irá expirar.
7 – Número de dias de inatividade em que o sistema deve considerar o usuário bloqueado.
8 – Uma data para a expiração automática da conta. Utiliza o mesmo formato do campo 3.
9 – Esse último campo está reservado para uso futuro.
/etc/group
É neste arquivo que são armazenados todos os grupos armazenados no sistema. Esse arquivo
também segue o mesmo formato que o /etc/passwd, mas cada linha contém apenas 4
campos. Conforme abaixo:
utah:x:1410:erika,fulano,beltrano
O primeiro campo é o nome do grupo, o segundo a senha do grupo, seguido do GID do grupo. O
último campo, quase sempre vazio, é a lista, separada por vírgula, dos usuários que também
pertencem a esse grupo.
/etc/gshadow
O arquivo gshadow armazena informações de administradores e senhas de grupos.
games:*::
O primeiro campo é o nome do grupo; O segundo é a senha do grupo, como não está definida,
recebe o valor de *; O terceiro campo armazena os nomes dos administradores desse grupo
(Administradores de grupos serão explicados adiante), separados por vírgula; O último campo
te a mesma função do último campo do arquivo /etc/group.
102
PROGRAMA
TÉCNICO CIDADÃO
Gerenciamento de usuários
Existem diversas formas de gerenciarmos usuários do sistema. Em qualquer uma delas, o
objetivo é gerenciar as entradas adequadas dos arquivos /etc/passwd, /etc/shadow, /
etc/group e /etc/gshadow. Adicionar as entradas manualmente editando esses arquivos é
uma tarefa difícil e perigosa, pois está mais propensa a erros. Por isso existem alguns
comandos especificamente designados para gerenciar essas entradas dos respectivos arquivos.
Veremos esses comandos a seguir.
Adicionando usuários com useradd
Utilizamos o comando useradd para criar um novo usuário no sistema.
Sintaxe:
useradd [-u uid [-o]] [-g grupo] [-G grupo-secundario,...]
[-d home] [-s shell] [-c comentario] [-m [-k template]]
[-f inativo] [-e expiração ] [-p senha] usuário
useradd -D [-g grupo] [-b base] [-s shell]
[-f inativo] [-e expiração ]
O useradd trabalha de dois modos. O primeiro modo adiciona o usuário com as opções
específicas. O segundo modo é ativado quando a opção -D (Defaults) é habilitada, e serve para
visualizar e definir os padrões para criação dos usuários.
103
PROGRAMA
TÉCNICO CIDADÃO
Tabela de Parâmetros
-u uid
-o
-g grupo
Informa qual deve ser o UID do usuário. Se omitido, o sistema utiliza o
próximo disponível.
Permite criar usuário com UID duplicado (Usuário Clonado)
Especifica qual será o grupo principal do Usuário. Algumas distribuições
aderem ao sistema criado pela RedHat, chamado UPG (Unix Private
Group), que cria um grupo com o mesmo nome do usuário, no qual
somente determinado usuário pertence ao grupo. Informando esse
parâmetro estamos evitando que o sistema crie um grupo no esquema
UPG, mas o grupo no qual informarmos já deve previamente existir.
grupo- Especifica a quais grupos secundários esse usuário deve pertencer.
-G
secundario
-d home
-s shell
-c comentario
-m
-k template
-f inativo
-e expiração
-p senha
-D
Especifica qual será o diretório base do usuário.
Especifica qual será o shell do usuário.
Adiciona informações no campo GECOS do arquivo /etc/passwd.
O sistema criará um diretório base para o usuário caso ele não exista
(comportamento padrão). O conteúdo do novo diretório será
exatamente o mesmo que o diretório /etc/skel, que, por sua vez, serve
como um diretório de perfil para novos usuários criados no sistema.
Especifica uma pasta de template (perfil) alternativa ao /etc/skel para o
usuário a ser criado. Essa opção só é válida junto com a opção -m.
Especifica o número de dias em que a senha expire até que a conta seja
permanentemente desabilitada. O valor 0 expira a senha assim que a
conta houver expirado. O valor -1 desabilita essa característica
(padrão).
Especifica uma data na qual a conta irá expirar. o Formato deve ser
AAAA-MM-DD, por exemplo: 2004-11-01 seria 01 de novembro de 2004.
Especifica a senha criptografada. Inútil nos dias de hoje, pois existem
comandos específicos para gerenciar as senhas.
Se utilizada sem nenhum outro parâmetro serve para visualizar os
padrões atuais para criação dos usuários. Se ativada em conjunto com
as opções -g, -b, -s, -f ou -e é possível modificar o valor padrão de
grupo,
diretório
base
(home),
shell,
inativo
e
expiração,
respectivamente.
104
PROGRAMA
TÉCNICO CIDADÃO
Exemplo A:
# useradd -G users,audio -d /home/utah -m -c "Utah LinuxCenter" aluno
O comando acima adicionou o usuário “aluno” ao sistema, pertencendo aos grupos users e
audio (esses grupos já existiam). A linha no arquivo /etc/passwd ficou assim:
aluno:x:10092:100:Utah LinuxCenter:/home/utah:/bin/bash
Exemplo B:
# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
shell=
SKEL=/etc/skel
# useradd -D -s /bin/sh
# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
shell=/bin/sh
SKEL=/etc/skel
Modificamos o grupo padrão para novos usuários para o UID 29, que em nosso sistema referese ao grupo audio.
Definindo senhas com passwd
O comando passwd modifica senhas para contas de usuários e grupos. Um usuário normal
somente pode trocar sua própria senha. Somente o superusuário root pode trocar a senha de
qualquer usuário no sistema. O passwd também é utilizado para modificar informações sobre a
conta de usuário, tais como o nome completo, o shell inicial, data de expiração de senha, etc.
105
PROGRAMA
TÉCNICO CIDADÃO
Sintaxe:
passwd [-f|-s] [usuario]
passwd [-x maximo] [-n minimo] [-w aviso] [-i inativo] usuario
passwd {-l|-u|-d|-S|-e} usuario
Tabela de Parâmetros
-f
-s
-l
-u
-d
-S
-e
Serve para trocar o nome do usuário (campo de comentário no arquivo /
etc/passwd). Age como o comando chfn, visto adiante.
Age como o comando chsh, viso adiante. Serve para modificar o shell do usuário.
Trava a conta do usuário. (lock)
Destrava a conta do usuário. (unlock)
Deleta a senha do usuário (Deixa em Branco).
Mostra o status da conta de usuário. (Data de expiração, etc...)
Expira imediatamente a senha do usuário.
Troca de Senhas
Quando um usuário aciona o comando passwd para trocar a senha, o usuário é questionado a
si mesmo quanto a senha atual (caso exista). A senha digitada é então criptografada e
comparada com a senha criptografada já existente no sistema.
O usuário só tem uma chance de inserir a senha correta. Somente o superusuário root pode
trocar senhas sem antes confirmar a anterior, pois isso permite que ele possa redefinir senhas
“esquecidas”, por exemplo.
Logo após a senha antiga ser validada, informações sobre a idade da senha são verificadas no
sistema para definir se o usuário tem permissão de trocar a senha naquele momento. Em caso
negativo, o passwd se recusa a trocar a senha. Em caso positivo, o usuário é então questionado
sobre a nova senha, que após digitada, é verificada quanto a complexibilidade. No geral, senhas
devem consistir em 6 a 8 caracteres incluindo um ou mais do seguinte:
106
PROGRAMA
TÉCNICO CIDADÃO
–
Letras maiúsculas;
–
Letras minúsculas;
–
Números de 0 a 9;
–
Caracteres de pontuação (Ex.: ~,. !”)
O passwd irá rejeitar qualquer senha que não atender aos requisitos.
Se a senha for aceita, o usuário é então questionado para repetir a mesma senha, que é então
comparada com a senha nova para evitar que erros de digitação possam impedir que
determinado usuário acesse o sistema.
Cabe ressaltar que o passwd pode modificar a ordem de verificação em alguns sistemas, mas
os passos são os mesmos.
Exemplo A:
# passwd aluno
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Primeiramente definimos uma senha para o usuário “aluno”. Como é o usuário root que está
definindo a senha para o usuário “aluno”, a checagem de complexibilidade da senha não é
feita. No exemplo definimos a senha 123 (não aparece enquanto digitamos, é normal).
Exemplo B:
$ passwd
Changing password for aluno
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
107
PROGRAMA
TÉCNICO CIDADÃO
Agora, após logarmos como o usuário aluno, tentamos trocar sua senha. repare que foi
necessário digitar a senha atual (123). Na nova senha, escolhemos uma com boa
complexibilidade: “zxasQW12”, sem as aspas.
Exemplo C:
# passwd -de aluno
Password changed.
Deletamos e expiramos a senha para o usuário aluno, isso irá requerer que o usuário cadastre
uma nova senha na próxima tentativa de login. Muito cuidado com isso, utilize somente em
casos extremos em que não exista outra alternativa, pois caracteriza uma grande falha de
segurança.
Removendo usuários com userdel
Utilizamos o comando userdel para remover usuários do sistema.
Sintaxe:
userdel [-r] usuario
O único parâmetro disponível para o userdel é o -r, que instrui ao userdel para remover
também todos os arquivos do usuário (na verdade o comando remove a pasta home do
usuário). Por padrão (sem a opção -r), o userdel mantém os arquivos do usuário.
Exemplo:
# ls -ld /home/aluno/
drwxr-xr-x 2 aluno users 136 Nov 3 11:43 /home/aluno/
# userdel -r aluno
userdel: user aluno is currently logged in
O sistema apresentou um erro ao tentar remover o usuário aluno, que estava logado em outro
terminal. Não é possível remover usuários que estejam logados no momento.
108
PROGRAMA
TÉCNICO CIDADÃO
# userdel -r aluno
# ls -ld /home/aluno/
ls: /home/aluno/: No such file or directory
Após o usuário efetuar logoff do terminal em que estava já é possível removê-lo. Repare que
foram removidos também seus arquivos pessoais.
Aumentando a segurança com o comando chage
O comando chage serve para gerenciar as entradas de expiração de senha encontradas no
arquivo /etc/shadow. É muito importante definir informações de expiração de senha para um
sistema linux, pois isso agrega mais segurança, impedindo que usuários permaneçam muito
tempo com a mesma senha, ou até mesmo que contas de usuários inexistentes permaneçam
válidas.
Sintaxe:
chage [-m min_dias] [-M max_dias] [-d ultimo_dia] [-I inativo]
[-E data_expira] [-W dias_aviso] usuário
chage -l usuário
O comando chage age de duas formas. Da primeira forma ele define as opções de expiração de
senha do usuário, da segunda forma (com a opção -l) ele mostra as opções atualmente
definidas para determinado usuário.
109
PROGRAMA
TÉCNICO CIDADÃO
Tabela de Parâmetros
-m min_dias
Intervalo mínimo de dias que o usuário pode trocar a senha.
-M max_dias
Número máximo de dias que o usuário pode permanecer com a
mesma senha.
-d ultimo_dia
Especifica qual a data da última alteração de senha do usuário. O
valor a ser especificado para ultimo_dia é o número de dias desde
01/01/1970, ou uma data no formato AAAA-MM-DD (Ex: 2004-1215 significa dia 15 de dezembro de 2004).
-I inativo
Número de dias de inatividade (Sem efetuar Login no sistema) que a
senha é automaticamente bloqueada.
-E data_expira
Especifica até qual data a conta do usuário será válida. Útil para
usuários de funcionários temporários. O valor para data_expira
segue o mesmo padrão que a opção -d.
-W dias_aviso
Configura com quantos dias de antecedência determinado usuário
será avisado sobre a expiração de sua senha.
-l
Lista as opções atuais de expiração de senha.
Exemplo A:
# chage -l huguinho
Minimum:
0
Maximum:
99999
Warning:
7
Inactive:
-1
Last Change:
Nov 10, 2004
Password Expires:
Never
Password Inactive:
Never
Account Expires:
Never
# chage huguinho
Changing the aging information for huguinho
Enter the new value, or press ENTER for the default
Minimum Password Age [0]: 2
Maximum Password Age [99999]: 90
Last Password Change (YYYY-MM-DD) [2004-11-10]:
Password Expiration Warning [7]: 5
Password Inactive [-1]: 30
110
PROGRAMA
TÉCNICO CIDADÃO
Account Expiration Date (YYYY-MM-DD) [1969-12-31]: 2004-12-15
# chage -l huguinho
Minimum:
2
Maximum:
90
Warning:
5
Inactive:
30
Last Change:
Nov 10, 2004
Password Expires:
Feb 08, 2005
Password Inactive:
Mar 10, 2005
Account Expires:
Dec 15, 2004
Repare em como ficaram os valores de expiração de senha após as modificações e associe aos
campos adequados.
Exemplo B:
# chage -m2 -M90 -W5 -I30 -E2004-12-15 huguinho
Uma outra forma de se chegar no mesmo resultado do exemplo anterior.
DICA
Quando uma conta é bloqueada por motivo de expiração de senha, somente o administrador (root) é capaz de desbloqueá-la utilizando novos valores para o chage e,
quando necessário, desbloqueando a conta com o comando “passwd -u usuario”.
Gerenciando informações de usuários com chfn e finger
Podemos utilizar o comando chfn para editar informações típicas dos usuários, como seu nome
completo, telefone, departamento, etc. Essas informações ficam armazenadas em cada uma
das entradas do arquivo /etc/passwd, mais especificamente no quinto campo de cada entrada.
É bastante útil ter essas informações, pois é a forma mais fácil de obter informações sobre os
usuários cadastrados no sistema.
Sintaxe:
111
PROGRAMA
TÉCNICO CIDADÃO
chfn [-f nome_completo] [-r sala]
[-w fone_trabalho] [-h fone_casa] [-o outros] [usuario]
Tabela de Parâmetros
-f nome_completo
Configura o Nome completo do Usuário (Ex: João da Silva)
-r sala
Número da sala em que ele trabalha
-w fone_trabalho
Telefone Comercial
-h fone_casa
Telefone Residencial
-o outros
Outras Informações e Observações
Exemplo A:
# chfn huguinho
Changing the user information for huguinho
Enter the new value, or press ENTER for the default
Full Name []: Hugo da Silva Sauro
Room Number []: 5
Work Phone []: 5555555
Home Phone []: 6666666
Other []: Usuário de testes da Utah
# finger huguinho
Login: huguinho
Name: Hugo da Silva Sauro
Directory: /home/huguinho
Shell: /bin/sh
Office: 5, 555-5555
Home Phone: 666-6666
Last login Thu Nov 11 14:35 (BRST) on tty2
No mail.
No Plan.
As informações definidas com chfn podem ser consultadas com o comando finger, conforme o
exemplo.
112
PROGRAMA
TÉCNICO CIDADÃO
NOTA
O comando finger não vem instalado por padrão em algumas distribuições Linux. No
Debian, para instalá-lo, digite como usuário root: apt-get install finger
Exemplo B:
chfn -f "Hugo da Silva Sauro" -r 5 -w 5555555 -h 6666666 -o "Usuário de testes da Utah" huguinho
A linha de comando acima leva ao mesmo resultado que o exemplo anterior.
Modificando o shell do usuário com chsh
O comando chsh lida com o último campo do arquivo /etc/passwd, o shell inicial do usuário. Um
usuário normal somente pode trocar o shell principal para sua própria conta. Somente o root
tem permissão para trocar o shell de outros usuários.
Sintaxe:
chsh [-s login_shell] [user]
Quando o comando é invocado por um usuário normal, o novo shell informado deve estar
listado no arquivo /etc/shells. Se for invocado pelo root e o comando não existir nesse arquivo,
o comando é automaticamente adicionado no arquivo.
Exemplo A:
# chsh huguinho
Changing the login shell for huguinho
Enter the new value, or press return for the default
Login Shell [/bin/sh]: /bin/bash
Modificado o shell inicial do usuário para /bin/bash.
Exemplo B:
113
PROGRAMA
TÉCNICO CIDADÃO
# chsh -s /bin/bash huguinho
Mesmo que o exemplo anterior, de forma direta.
Verificando integridade dos arquivos de senhas com pwck
O comando pwck verifica a integridade de informações de autenticação dos usuários no
sistema nos arquivos /etc/passwd e /etc/shadow em busca de erros de formato.
O comando verifica o seguinte:
–
O número correto de campos;
–
Nomes de usuários duplicados;
–
UID's e GID's órfãos;
–
Grupo válido;
–
Diretório home válido;
–
Shell inicial válido.
Sintaxe:
pwck [-sr] [passwd shadow]
A opção -s serve para ordenar os usuários nos arquivos /etc/passwd e /etc/shadow com base
em seu UID. A outra opção (-r) não pode ser utilizada junto com -s, e serve para ativar o modo
somente-leitura do pwck, que apenas mostra o que está errado mas nunca modifica nenhum
arquivo. Se especificarmos uma das opções passwd ou shadow, o pwck somente agirá nos
respectivos arquivos.
Exemplo:
# pwck
114
PROGRAMA
TÉCNICO CIDADÃO
user lp: directory /var/spool/lpd does not exist
user news: directory /var/spool/news does not exist
user uucp: directory /var/spool/uucp does not exist
user postgres: directory /var/lib/postgres does not exist
user list: directory /var/list does not exist
user irc: directory /var/run/ircd does not exist
user gnats: directory /var/lib/gnats does not exist
user grpadm: directory /home/grpadm does not exist
user huguinho: directory /home/huguinho does not exist
user zezinho: directory /home/zezinho does not exist
user nobody: directory /nonexistent does not exist
pwck: no changes
O comando pwck detectou que os diretórios home de alguns usuários não existiam, mas não
efetuou nenhuma modificação no sistema, somente alertou.
Convertendo/Revertendo o sistema de senhas shadow
O linux disponibiliza dois comandos que nos permitem converter e reverter o sistema de senhas
shadow. Para migrar um sistema que ainda não utiliza senhas shadow, utilizamos o comando
pwconv. Já para reverter um sistema já com shadow ativado, utilizamos o comando pwunconv.
DICA
Para migrar também as informações de grupos para shadow (Tirar as senhas do /
etc/group e migrar para o /etc/gshadow, basicamente) utilizamos grpconv. Para reverter, grpunconv. Tem o mesmo efeito que pwconv e pwunconv, porém atua nos
arquivos de grupos.
Modificando contas de usuários com usermod
Todos os dados que podem ser fornecidos ao comando useradd durante a criação de um
usuário no sistema podem ser alterados, no caso de usuários já existentes, com o comando
usermod.
115
PROGRAMA
TÉCNICO CIDADÃO
Sintaxe:
usermod [-u uid [-o]] [-g grupo] [-G grupo,...]
[-d home [-m]] [-s shell] [-c comentario] [-l novo_nome]
[-f inativo] [-e expira ] [-p senha] [-L|-U] nome
Exemplo A:
# id huguinho
uid=10095(huguinho) gid=100(users) groups=100(users),1521(grupo)
# usermod -l donald huguinho
# id huguinho
id: huguinho: No such user
# id donald
uid=10095(donald) gid=100(users) groups=100(users),1521(grupo)
# usermod -l huguinho donald
# id huguinho
uid=10095(huguinho) gid=100(users) groups=100(users),1521(grupo)
Utilizamos o usermod para renomear o usuário huguinho para donald; Verificado que somente
o nome do usuário mudou, em seguida renomeamos novamente o usuário para o nome original.
Exemplo B:
# id huguinho
uid=10095(huguinho) gid=100(users) groups=100(users),1521(grupo)
# usermod -u 10094 huguinho
# id huguinho
uid=10094(huguinho) gid=100(users) groups=100(users),1521(grupo)
Modificado o uid do usuário huguinho de 10095 para 10094. Lembrando que o novo uid não
pode estar atribuído a nenhum usuário já existente.
116
PROGRAMA
TÉCNICO CIDADÃO
DICA
Uma boa forma de memorizar comandos como esses é associando sua utilização.
Por exemplo: useradd = user + add (Adicionar Usuário), usermod = user + mod
(Modificar usuário).
Gerenciamento de grupos
Gerenciar grupos de usuários é uma tarefa imprescindível no dia a dia de um administrador
Linux. Tarefas como adicionar e remover grupos, definir a quais grupos determinados usuários
devem participar, determinar administradores de grupos, etc.
É essencial uma boa compreensão sobre o funcionamento dos grupos de usuários no Linux, pois
o correto funcionamento do sistema depende de grande coerência no que tange gerenciamento
de grupos e usuários.
Obtendo Informações com o comando id
Uma das principais ferramentas que auxiliam no gerenciamento de usuários e grupos é o
comando id. Com ele é possível saber, por exemplo, a quais grupos um determinado usuário
pertence, com seus respectivos gids.
Sintaxe:
id [parâmetro]... [usuário]
117
PROGRAMA
TÉCNICO CIDADÃO
Tabela de Parâmetros
-g
Mostra somente o GID. Se utilizado em conjunto com o parâmetro -n, mostra o nome
do grupo.
-G
Mostra todos os grupos (GIDs) que o usuário pertence. Se utilizado em conjunto com o
parâmetro -n, mostra os nomes dos grupos. O primeiro grupo na listagem é o grupo
principal, os demais são os secundários.
-n
Mostra “nomes” ao invés de números (UIDs e GIDs) na saída do comando.
-u
Mostra somente o UID. Se utilizado em conjunto com o parâmetro -n, mostra o nome
do usuário.
Exemplos:
$ id
uid=1052(emartins) gid=1001(utah) grupos=6(disk),24(cdrom),25(floppy),29(audio),1001(utah),
1006(suporte),1507(apostilas)
$ id -G
1001 6 24 25 29 1006 1507
$ id -Gn
utah disk cdrom floppy audio suporte apostilas
$ id root
uid=0(root) gid=0(root) grupos=0(root)
Adicionando grupos com groupadd
Cria novos grupos no sistema.
Sintaxe:
groupadd [-g gid [-o]] grupo
Exemplo:
$ groupadd -g 1037 utah
118
PROGRAMA
TÉCNICO CIDADÃO
O comando acima cria um novo grupo no sistema, com GID 1037. Caso o UID (-g) seja omitido,
o sistema escolhe automaticamente o próximo disponível. A opção “-o” serve para forçar a
utilização daquele gid, mesmo que ele já esteja atribuido a outro grupo.
Removendo grupos com groupdel
Para remover um grupo do sistema utilizamos o comando groupdel. Se removermos um grupo
que contenha usuários, os usuários são mantidos no sistema, porém não terão mais vínculo
com o grupo removido (ainda bem...).
Sintaxe:
groupdel grupo
Adicionando usuários aos grupos
Utilizamos o comando gpasswd para, dentre outras coisas, adicionar usuários em grupos já
existentes.
Sintaxe:
gpasswd -a usuario grupos
Exemplo:
# useradd -m aluno
# id aluno
uid=10092(aluno) gid=100(users) groups=100(users)
# groupadd utah
# gpasswd -a aluno utah
Adding user aluno to group utah
# id aluno
uid=10092(aluno) gid=100(users) groups=100(users),1001(utah)
119
PROGRAMA
TÉCNICO CIDADÃO
Após adicionado o usuário aluno e o grupo utah, utilizamos o comando gpasswd para adicionar
o usuário recém-criado ao grupo.
Removendo usuários dos grupos
Para remover usuários dos grupos também fazemos uso do gpasswd, da seguinte forma:
gpasswd -d usuario grupo
Exemplo:
# id aluno
uid=10092(aluno) gid=100(users) groups=100(users),1001(utah)
# gpasswd -d aluno utah
Removing user aluno from group utah
Modificando informações sobre grupos
Através do comando groupmod é possível renomear um grupo ou trocar o GID.
Sintaxe:
groupmod [-g gid [-o]] [-n novo_nome ] grupo
Exemplo:
# groupadd linux
# gpasswd -a aluno linux
Adding user aluno to group linux
# id aluno
uid=10092(aluno) gid=100(users) groups=100(users),1511(linux)
# groupmod -g 1520 -n pinguim linux
# id aluno
uid=10092(aluno) gid=100(users) groups=100(users),1520(pinguim)
120
PROGRAMA
TÉCNICO CIDADÃO
No exemplo, primeiro criamos o grupo linux e adicionamos o usuário aluno nele. O sistema
automaticamente atribuiu um GID para o grupo (1511, no exemplo). Utilizamos o comando
groupmod para trocar o GID e o nome do grupo linux.
Definindo administradores de grupos com gpasswd
Todos os grupos no sistema podem ter administradores, membros e uma senha. Podemos
utilizar o comando gpasswd para definir administradores e senha de grupos. Administradores
de grupos são usuários que tem permissão (previamente concedida pelo usuário root) para
adicionar usuários do sistema aos grupos que eles administram. É importante lembrar que o
usuário a ser adicionado ao grupo já deve existir no sistema.
Sintaxe:
gpasswd [-A usuário,...] [-M usuário,...] grupo
A opção -A serve para “nomear” um usuário do sistema como administrador do grupo. A opção
-M faz o mesmo, porém adiciona o usuário como membro do grupo também.
Exemplo:
# useradd -m admgrupo
# id admgrupo
uid=10094(admgrupo) gid=100(users) groups=100(users)
# groupadd grupo
# gpasswd -A admgrupo grupo
# useradd -m huguinho
# su - admgrupo
$ gpasswd -a huguinho grupo
Adding user huguinho to group grupo
$ id huguinho
uid=10095(huguinho) gid=100(users) groups=100(users),1521(grupo)
$ gpasswd -d huguinho grupo
Removing user huguinho from group grupo
$ id huguinho
uid=10095(huguinho) gid=100(users) groups=100(users)
121
PROGRAMA
TÉCNICO CIDADÃO
No exemplo foi definido que o usuário admgrupo é administrador do grupo grupo. Para
remover esse privilégio do usuário, é preciso remover o nome do usuário em questão do
terceiro campo do arquivo /etc/gshadow.
Trocando o grupo principal temporariamente com newgrp
É possível trocar o grupo principal do usuário somente para a sessão atual (tudo volta ao
normal ao término da sessão). Isso pode ser útil quando precisamos ter privilégios específicos
de determinado grupo por alguns instantes.
Utilizamos o comando newgrp para essa finalidade.
Sintaxe:
newgrp [-] grupo
O parâmetro “-” instrui ao comando para carregar todas as variáveis de ambiente do shell
atual.
Exemplo A:
$ id
uid=10096(admgrupo) gid=100(users) groups=100(users)
$ gpasswd grupo
Changing the password for group grupo
New Password:
Re-enter new password:
$ su - huguinho
Password:
$ id
uid=10095(huguinho) gid=100(users) groups=100(users),1521(grupo)
$ newgrp grupo
$ id
uid=10095(huguinho) gid=1521(grupo) groups=100(users),1521(grupo)
$ exit
122
PROGRAMA
TÉCNICO CIDADÃO
Nesse exemplo, foi definida uma senha para o grupo; Como o usuário huguinho pertence ao
grupo “grupo”, não foi necessário digitar uma senha para o grupo. Quando acionamos o
comando “newgrp grupo”, foi aberto um novo shell atrelado ao shell atual.
Exemplo B:
# useradd -m zezinho
# id zezinho
uid=10097(zezinho) gid=100(users) groups=100(users)
# su - zezinho
$ newgrp - grupo
Password:
$ id
uid=10097(zezinho) gid=1521(grupo) groups=100(users),1521(grupo)
$ exit
Adicionamos o usuário zezinho, que por padrão pertence somente ao grupo users. Como foi
definida uma senha para o grupo “grupo” antes, o usuário zezinho pode utilizar o comando
newgrp para temporariamente fazer parte do grupo. Para isso lhe foi requisitada a senha do
grupo, que foi cadastrada no exemplo anterior com o comando “gpasswd grupo”.
Verificando Integridade dos arquivos de grupos com grpck
O comando grpck verifica a integridade das informações de autenticação do sistema. Todas as
entradas dos arquivos /etc/group e /etc/gshadow são verificadas quanto ao formato correto
em cada campo. O usuário é questionado a deletar uma entrada defeituosa que esteja
comprometendo a segurança do sistema.
O comando verifica o seguinte nos arquivos:
–
O número correto de campos;
–
Nomes de grupos duplicados;
–
Uma lista válida de membros e administradores.
123
PROGRAMA
TÉCNICO CIDADÃO
Sintaxe:
grpck [-r] [group shadow]
A opção -r diz para o grpck efetuar os testes em modo somente-leitura, ou seja, não altera
nenhum arquivo, somente mostra os problemas na tela. O padrão do comando é verificar
ambos os arquivos /etc/group e /etc/shadow; Para forçar ele verificar somente um deles,
basta especificar somente o nome de um dos arquivos como parâmetro.
Para o Exemplo abaixo, partimos do princípio de que exista um problema de nome de grupo
duplicado no arquivo /etc/group, conforme abaixo:
grupo:!:1521:huguinho
grupo:!:1522:
Exemplo:
# grpck
duplicate group entry
delete line `grupo:!:1521:huguinho'? No
duplicate group entry
delete line `grupo:!:1522:'? Yes
grpck: the files have been updated
Respondemos “No” para a primeira pergunta e “Yes” para a segunda porque a primeira
pergunta referenciava a linha correta (que não devemos apagar).
124
PROGRAMA
TÉCNICO CIDADÃO
PERMISSÕES DE ARQUIVOS E DIRETÓRIOS
As permissões são um dos aspectos mais importantes do Linux (na verdade, de todos os sistemas
baseados em Unix). Elas são usadas para vários fins, mas servem principalmente para proteger o
sistema e os arquivos dos usuários. Manipular as permissões é algo muito essencial. Mas tal complexidade não deve ser interpretada como dificuldade e sim como grande variedade de configurações, o que permite criar vários tipos de proteção de arquivos e diretórios.
Como você deve saber, somente o super-usuário (root) tem ações irrestritas no sistema, justamente por ser o usuário responsável pela configuração, administração e manutenção do Linux.
Cabe a ele por exemplo, determinar o que cada usuário pode executar, criar, modificar, etc. Naturalmente, a forma usada para determinar o que o usuário pode fazer é a determinação de permissões.
Entendendo as permissões
$ ls -l ~/exercicios/ln
total 8
-rw-r--r-- 2 emartins utah 0 2004-10-28 17:29 arquivo1
drwxr-xr-x 3 emartins utah 4096 2004-10-28 17:30 dir1
drwxr-xr-x 2 emartins utah 4096 2004-10-29 10:44 dir2
-rw-r--r-- 2 emartins utah 0 2004-10-28 17:29 hardlink1
Repare na saída do comando ls -l, que mostra as permissões dos arquivos na primeira coluna.
Esses primeiros 10 caracteres que aparecem (-rw-r—r-- por exemplo.) são os caracteres que
demonstram as permissões atuais de cada arquivo/diretório.
Observe a Linha abaixo, onde as permissões aparecem em destaque:
-rwxrwxrwx
2 emartins
utah
0 2004-10-28 17:29 arquivo1
Grupo Dono
Usuário Dono
Permissões de outros
Permissões de grupo
Permissões de usuário
Tipo de Arquivo
125
PROGRAMA
TÉCNICO CIDADÃO
O primeiro caractere define qual é o tipo de arquivo. Os tipos de arquivos mais conhecidos são
mostrados na tabela abaixo:
l
Link simbólico
b
Dispositivo de Bloco
d
Diretório
s
Socket de Comunicação
c
Dispositivo de Caractere
-
Arquivo Comum
Cada uma das letras r, w e x dentro das permissões tem um significado diferente, conforme a
tabela abaixo:
r
Leitura
w Escrita
x
Execução
Como o permissionamento está dividido em 3 seções (usuário, grupo e outros), a presença ou
ausência dessas letras determina quais permissões cada um terá.
Exemplo A:
$ ls -l apostila.sxw
-rwxrw-r-- 1 erika office 183627 2004-11-01 13:09 apostila.sxw
O arquivo apostila.sxw é um arquivo comum, pertence ao usuário erika e ao grupo office. O
usuário erika pode ler, gravar e executar o arquivo ( rwx ); quaisquer outros usuários que
pertençam ao grupo office podem ler e gravar no arquivo ( rw- ); Portanto, qualquer outro
usuário que não seja o dono do arquivo (erika) nem pertença ao grupo office só terá permissões
de ler o arquivo ( r ).
Exemplo B:
126
PROGRAMA
TÉCNICO CIDADÃO
$ ls -ld /etc
drwxr-xr-x 96 root root 5384 2004-11-01 11:01 /etc
Podemos verificar que o arquivo etc na verdade é um diretório ( d ); Pertence ao usuário e
grupo root; Tem permissões de leitura, gravação e execução ( rwx )para o usuário dono;
Leitura e execução ( r-x ) para o grupo dono e quaisquer outros usuários.
Nota:
Mesmo que as permissões de arquivos restrinjam o usuário root, elas não têm efeito p/ ele.
Definindo Permissões com chmod
Utilizamos o comando chmod (Change Mode) para configurar as permissões no Linux.
Sintaxe:
chmod [OPÇÃO]... MODO[,MODO]... ARQUIVO...
chmod [OPÇÃO]... MODO-OCTAL ARQUIVO...
chmod [OPÇÃO]... --reference=ARQUIVOREF ARQUIVO...
Tabela de Parâmetros
-v
Verbose. Mostra informações sobre as modificações efetuadas. Mesmo que as
permissões tenham se mantido.
-c
Changes. Mesmo que a opção -v, porém só mostra informações se as permissões
tiverem sido modificadas.
-R
Recursive. Aplica as permissões recursivamente.
O chmod trabalha com dois modos de permissões: simbólico e octal. Esses dois modos não
mudam a Sintaxe do comando mostrada anteriormente, pois só agem no MODO (MODO e
MODO-OCTAL) das permissões.
Antes de estudar os dois modos separadamente, criaremos o ambiente de testes.
Ambiente:
127
PROGRAMA
TÉCNICO CIDADÃO
$ mkdir -p ~/exercicios/chmod; cd ~/exercicios/chmod
$ mkdir -p dir1/dir2
$ touch arq1 dir1/dir2/arq2
Modo Simbólico de Permissões
O modo simbólico do chmod define as permissões com base em suas letras (r, w e x...) de
significado. Nesse modo, as permissões cabíveis a cada uma das partes envolvidas são
representadas por letras, conforme tabela abaixo:
u
usuário
g
grupo
o
outros
a
todos (all)
Com base nisso, basta unir as permissões com as partes afetadas. Para estabelecer essa união,
utilizamos os sinais de +, - e = (adiciona, remove ou iguala permissões, respectivamente).
Exemplo A:
$ ls -l arq1
-rw-r--r-- 1 erika erika 0 2004-11-01 15:40 arq1
$ chmod u-w arq1
$ ls -l arq1
-r--r--r-- 1 erika erika 0 2004-11-01 15:40 arq1
O arquivo arq1 teve a permissão de escrita ( w ) removida para o usuário ( u ) dono do arquivo,
ou seja: o “u” indica que estamos alterando permissões para o usuário, o sinal de “-” indica que
estamos removendo permissões, e em seguida, o “w” significa permissão de escrita.
Exemplo B:
$ ls -l arq1
-r--r--r-- 1 erika erika 0 2004-11-01 15:40 arq1
$ chmod +x arq1
$ ls -l arq1
128
PROGRAMA
TÉCNICO CIDADÃO
-r-xr-xr-x 1 erika erika 0 2004-11-01 15:40 arq1
Adicionada permissão de execução para todos os campos (usuário, grupo e outros), pois não foi
especificada qual parte seria afetada pelo comando.
Exemplo C:
$ ls -l arq1
-r-xr-xr-x 1 erika erika 0 2004-11-01 15:40 arq1
$ chmod go-x,ug+w arq1
$ ls -l arq1
-rwxrw-r-- 1 erika erika 0 2004-11-01 15:40 arq1
Na mesma linha de comando, foi removida a permissão de execução para grupo e outros e
também foi adicionada a permissão de escrita para o usuário e grupo.
Exemplo D:
$ ls -ld dir1
drwxr-xr-x 3 erika erika 72 2004-11-01 16:03 dir1
$ ls -l dir1/dir2/arq2
-rw-r--r-- 1 erika erika 0 2004-11-01 15:40 dir1/dir2/arq2
$ chmod -R a=rx dir1
$ ls -ld dir1
dr-xr-xr-x 3 erika erika 72 2004-11-01 16:03 dir1
$ ls -l dir1/dir2/arq2
-r-xr-xr-x 1 erika erika 0 2004-11-01 15:40 dir1/dir2/arq2
Modificamos recursivamente (opção -R) as opções de usuário, grupo e outros ( a ) do diretório
dir1 para leitura e execução ( rx ). Repare que, devido ao fato das permissões terem sido
aplicadas recursivamente, o arquivo arq2, que fica em um subdiretório abaixo de dir1 também
recebeu as permissões.
Exemplo E:
$ ls -l
total 0
-rwxrw-r-- 1 erika erika 0 2004-11-01 15:40 arq1
dr-xr-xr-x 3 erika erika 72 2004-11-01 16:03 dir1
129
PROGRAMA
TÉCNICO CIDADÃO
$ ls -l dir1
total 0
dr-xr-xr-x 2 erika erika 72 2004-11-01 16:03 dir2
$ chmod -x dir1
$ ls -l dir1
ls: dir1/dir2: Permissão negada
total 0
$ cd dir1
bash: cd: dir1: Permissão negada
$ chmod +x dir1
$ ls -l dir1
total 0
dr-xr-xr-x 2 erika erika 72 2004-11-01 16:03 dir2
$ cd dir1
O exemplo mostra que é necessário ter permissões de execução para entrar ou listar o
conteúdo de um diretório. Isso acontece porque quando entramos em um diretório, na verdade
estamos “executando” o arquivo especial que é o diretório, que contém a lista de todos os
arquivos e diretórios dentro dele. Sem a permissão de execução não podemos entrar em um
diretório, somente o root rompe essas barreiras.
Modo octal de permissões
Nesse modo, lidamos diretamente com o número de bits que compõem as permissões,
conforme tabela abaixo:
Bits
Permissão
4
Leitura ( r )
2
Gravação ( w )
1
Execução ( x )
Dessa forma, se quisermos obter resultados específicos, basta somar o número de bits
correspondente as permissões, conforme tabela a seguir:
130
PROGRAMA
TÉCNICO CIDADÃO
Permissão
Soma de bits
rwx
4+2+1=7
rw-
4+2+0=6
r-x
4+0+1=5
r--
4+0+0=4
-wx
0+2+1=3
-w-
0+2+0=2
--x
0+0+1=1
---
0+0+0=0
Por exemplo, para chegar ao resultado rwxr-xr--, utilizamos o modo 754 no chmod.
Exemplo A:
$ chmod 750 arq1
$ ls -l arq1
-rwxr-x--- 1 erika erika 0 2004-11-01 15:40 arq1
Exemplo B:
$ chmod 644 arq1
$ ls -l arq1
-rw-r--r-- 1 erika erika 0 2004-11-01 15:40 arq1
DICA
Pratique bastante permissões de acesso, pois são extremamente essenciais no dia a
dia de um administrador de sistema e seu bom compreendimento evita algumas falhas de segurança.
131
PROGRAMA
TÉCNICO CIDADÃO
Máscara de usuário (umask)
A umask (user mask) são 3 números que definem as permissões iniciais do dono, grupo e outros
usuários que o arquivo ou diretório receberá quando for criado ou copiado pelo usuário atual. A
principal função da umask é impedir que arquivos pessoais criados pelos usuários do sistema
sejam legíveis por outros usuários assim que criados. Ela consegue esse resultado subtraindo
um número de bits (o valor da umask) das permissões do arquivo que for criado.
Por padrão, qualquer arquivo criado por um usuário no sistema não recebe permissões de
execução, com exceção dos diretórios. Por exemplo, para todos os arquivos recém-criados, as
permissões iniciais seriam 666 (tudo ativado, sem execução).
Para chegar as permissões iniciais do arquivo criado após a influência do umask, basta subtrair
o valor da umask da permissão padrão (666). Por exemplo, se o valor da umask for 22, os
arquivos novos teriam permissão 644 ar a permissão padrão de arquivos recém-criados (666 –
22 = 644).
É importante frizar que para arquivos copiados, o umask só modifica as permissões do arquivo
de destino se o valor partindo de 777 e subtraído do valor da umask for menor, conforme o
Exemplo B.
A umask fica armazenada na memória durante o shell atual. Se modificarmos o valor da umask
ela será redefinida para o padrão ao abrirmos um novo shell, e o valor modificado em um shell
não influencia em outro.
Sintaxe:
umask [-p] [-S] [modo]
132
PROGRAMA
TÉCNICO CIDADÃO
Tabela de Parâmetros
-p
-S
Mostra a palavra umask antes do modo (sem muito sentido...)
Utiliza o modo simbólico de permissões (Igual no comando chmod)
Ambiente:
$ mkdir ~/exercicios/umask; cd ~/exercicios/umask
Exemplo A:
$ umask
0022
$ touch arq1
$ ls -l
total 0
-rw-r--r-- 1 erika erika 0 2004-11-01 18:42 arq1
$ umask 000
$ touch arq2
$ ls -l
total 0
-rw-r--r-- 1 erika erika 0 2004-11-01 18:42 arq1
-rw-rw-rw- 1 erika erika 0 2004-11-01 18:42 arq2
Com o umask padrão, o arquivo criado (arq1) recebeu permissões 644. Após modificarmos o
umask para 000 (anulando sua influência), o arquivo criado (arq2) recebeu permissões 666.
Exemplo B:
$ touch arq3
$ chmod -v 775 arq3
modo de `arq3' mudado para 0775 (rwxrwxr-x)
$ umask
0022
$ cp arq3 arq4
$ ls -l
total 0
-rw-r--r-- 1 erika erika 0 2004-11-01 18:42 arq1
-rw-rw-rw- 1 erika erika 0 2004-11-01 18:42 arq2
-rwxrwxr-x 1 erika erika 0 2004-11-01 19:12 arq3
-rwxr-xr-x 1 erika erika 0 2004-11-01 19:13 arq4
133
PROGRAMA
TÉCNICO CIDADÃO
Repare que o umask (22) agiu na permissão do arquivo original (arq3 = 775) e o arquivo arq4
foi criado com permissões 755.
É preciso um pouco de atenção antes de escolher a umask, um valor mal escolhido pode causar
problemas de acesso a arquivos, diretórios ou programas não sendo executados.
O valor
padrão da umask na maioria das distribuições atuais é 022.
A umask é de grande utilidade para programas que criam arquivos/diretórios temporários, desta
forma pode-se bloquear o acesso de outros usuários desde a criação do arquivo, evitando
recorrer ao chmod.
134
PROGRAMA
TÉCNICO CIDADÃO
O SHELL BASH (BOURNE AGAIN SHELL)
Conforme visto anteriormente, existe uma camada entre o sistema operacional (kernel) e o
usuário, que “interpreta” os comandos digitados e os passa para o kernel, e vice-versa. Essa
camada recebe o nome de interpretador de comandos, ou shell. Um shell no Linux utiliza-se de
dispositivos especiais de entrada e saída (Vistos na tabela adiante) para se comunicar com o
usuário. Dessa mesma forma, programas também utilizam desse método para interação com o
usuário.
Tecnicamente, o shell do Linux utiliza algum dispositivo de caracteres (/dev/tty*, /dev/pts/*,
etc...) associado a 3 dispositivos especiais (stdin, stdout e stderr) estudados adiante para
conseguir essa interação com o usuário.
O linux conta com diversos interpretadores de comandos (shells), porém o mais utilizado nas
distribuições é o shell bash. O bash é um “relançamento” de um antigo shell de UNIX, o sh.
Bash significa Bourne Again Shell (Algo como “O shell que nasceu novamente”).
Vale a pena lembrar que podem existir diversos interpretadores de comandos instalados no
sistema operacional (Que tal uma olhada no arquivo /etc/shells?), e que podemos escolher qual
shell será o padrão para determinado usuário com o comando chsh, visto anteriormente.
Devido ao fato do shell bash ser o padrão na grande maioria das distribuições, é ele que
estudaremos a seguir. Mesmo assim, muitas das características do bash existem em outros
shells.
Redirecionamento
Tudo que é visto no terminal é formado com caracteres (por isso dispositivos de caracteres).
Esses caracteres são resultado da saída de dados padrão dos comandos executados ou do
próprio shell. Mas os comandos não se limitam a enviar caracteres para a tela do terminal
135
PROGRAMA
TÉCNICO CIDADÃO
(Saída de dados padrão), mas também podem (e devem) receber dados do terminal. Esse fluxo
de caracteres pode fluir em 3 direções, conforme tabela abaixo:
Descritor de Arquivo
Nome do Dispositivo
Abreviação
0 Entrada de dados padrão
stdin
1 Saída de dados padrão
stdout
2 Saída de erros padrão
stderr
O descritor de arquivo é utilizado para identificar “em qual direção” os caracteres irão fluir.
Entrada de dados padrão (/dev/stdin)
Dispositivo que cuida do fluxo de entrada para os dados que podem ser enviados para os
programas em execução. A maior parte do tempo é o teclado que fica fica encarregado de
“gerar” os dados que acabam sendo enviados para esse dispositivo. Porém, através de
comandos de redirecionamento de shell (visto adiante) podem associar um arquivo como a
entrada de dados padrão.
Saída de dados padrão (/dev/stdout)
Dispositivo pelo qual os programas normalmente enviam seus resultados de execução. Quando
listamos arquivos com o comando ls, por exemplo, o resultado que o comando nos mostra é
justamente a saída padrão, que visualizamos no monitor. Semelhante a entrada de dados
padrão, podemos utilizar de comandos de redirecionamento para enviar a saída de um
comando para um arquivo ou outro comando, conforme veremos em breve.
136
PROGRAMA
TÉCNICO CIDADÃO
Saída de erros padrão (/dev/stderr)
Esse é um dispositivo bastante parecido com a saída de dados padrão, porém atua em um
“canal” diferente, e serve para os programas enviarem qualquer mensagem de erro durante a
execução. Assim como a saída de dados padrão, podemos redirecionar a saída de erros padrão
para um arquivo.
Operadores de Redirecionamento
Para controlar a direção em que os dados devem fluir, o bash conta com operadores de
redirecionamento. Esses operadores dizem basicamente para onde os caracteres tem que ir
(stdin, stdout, stderr, arquivo, comando, etc...) e podem estar antes ou depois de um comando.
São 3 os operadores de redirecionamento:
Operadores de Saída de dados padrão (stdout): “>” e “>>”
Sua função é redirecionar o fluxo de caracteres da stdout (que pode ser a saída de um
comando, por exemplo) para algum arquivo ou dispositivo, lembrando que no Linux “tudo é
arquivo”.
Exemplo A:
$ mkdir -p ~/exercicios/redirecionamento
$ cd ~/exercicios/redirecionamento
$ touch arq1 arq2 arq3
$ ls > listagem
$ ls
arq1 arq2 arq3 listagem
$ cat listagem
arq1 arq2 arq3
137
PROGRAMA
TÉCNICO CIDADÃO
Nesse exemplo, após criar nosso ambiente de testes, redirecionamos a saída do comando ls
para um arquivo chamado listagem. Esse arquivo não existia anteriormente, mas foi criado
devido ao redirecionamento. Repare que o conteúdo do arquivo é exatamente a saída do
comando ls.
Exemplo B:
$ cd ~/exercicios/redirecionamento/
$ cat > arquivo.txt
Um simples arquivo de texto.
Pressione [Enter]
Pressione [CTRL]+[D]
$ cat arquivo.txt
Um simples arquivo de texto.
Acionamos o comando cat, sem nenhum argumento, e instruímos o bash para redirecionar a
saída de dados padrão para um arquivo chamado arquivo.txt.
Exemplo C:
$ cat arquivo.txt
Um simples arquivo de texto.
$ echo "Novo conteúdo" > arquivo.txt
$ cat arquivo.txt
Novo conteúdo
Ainda com o mesmo arquivo de testes, efetuamos outro redirecionamento, dessa vez com a
saída do comando echo. Repare que o conteúdo do arquivo foi sobrescrito com o
redirecionamento efetuado.
Para concatenar o arquivo de saída ao invés de sobrescrever o seu conteúdo, utilizamos “dois”
operadores de redirecionamento da stdout (>>), como no exemplo abaixo:
Exemplo D:
$ cat arquivo.txt
Um simples arquivo de texto.
138
PROGRAMA
TÉCNICO CIDADÃO
$ echo "Novo conteúdo" >> arquivo.txt
$ cat arquivo.txt
Um simples arquivo de texto.
Novo conteúdo
Compare com o exemplo anterior.
Exemplo E:
$ echo "algum texto" > arquivo.txt
$ cat arquivo.txt
algum texto
$ echo "algum texto novo" 0> arquivo.txt
algum texto novo
$ cat arquivo.txt
$ echo "algum texto novo" 0> arquivo.txt > arquivo-novo.txt
$ cat arquivo.txt
$ cat arquivo-novo.txt
algum texto novo
Primeiro sobrescrevemos o conteúdo do arquivo arquivo.txt e constatamos isso com o comando
cat. Logo depois, enviamos o redirecionamento da saída padrão “de volta” para a entrada
padrão. Na verdade, o redirecionamento “0>” diz para o fluxo de caracteres ser enviado de
volta para a entrada padrão (Descritor de arquivo 0, conforme tabela anterior), e não para o
arquivo de destino. É por isso que o arquivo arquivo.txt ficou vazio após o redirecionamento
com “0>”. Como o fluxo retorna para o shell, podemos redirecionar novamente ele, mas agora
para um “novo arquivo”, chamado arquivo-novo.txt, que agora sim recebe o conteúdo do
redirecionamento.
O intuito de mostrar redirecionamentos como esses, não muito comuns no dia-a-dia do
administrador, é familiarizar o administrador com o fluxo correto das informações no shell bash,
assunto que tem peso muito alto em uma prova de certificação Linux como a Linux Professional
Institute 1 (LPIC-1), que é o foco deste curso.
139
PROGRAMA
TÉCNICO CIDADÃO
Operadores de entrada de dados padrão: “<” e “<<”
Não são amplamente utilizados quanto os operadores de saída de dados padrão. Sua função é
redirecionar o fluxo de caracteres da stdin (que pode ser um arquivo contendo argumentos a
serem tratados por um comando, por exemplo) para algum comando.
Ainda no mesmo ambiente de testes dos exemplos anteriores (~/exercicios/redirecionamento),
vamos aos exemplos:
Exemplo A:
$ cat arquivo.txt
Um simples arquivo de texto.
Novo conteudo
$ cat < arquivo.txt
Um simples arquivo de texto.
Novo conteudo
Digitamos dois comandos no exemplo. O primeiro é um simples “cat” no arquivo; O segundo
tem o mesmo resultado, só que utiliza o redirecionamento do arquivo arquivo.txt como
argumento para o comando cat. Como a função do comando cat é enviar para a stdout o
conteúdo que lhe for passado (geralmente um arquivo), o mesmo pode ser feito com um fluxo
de dados (caracteres) vindo de um redirecionamento da stdin.
Da mesma forma que o redirecionamento de saída de dados padrão, podemos concatenar o
fluxo de caracteres utilizando dois operadores p/ o mesmo sentido, nesse caso “<<”.
Este redirecionamento serve principalmente para marcar o fim de exibição de um bloco. Este é
especialmente usado em conjunto com o comando cat, mas também tem outras aplicações.
Exemplo B:
$ cat << final
> este texto
> sera mostrado
> ate que a palavra final
140
PROGRAMA
TÉCNICO CIDADÃO
> seja encontrada
> sozinha na linha
> final
este texto
sera mostrado
ate que a palavra final
seja encontrada
sozinha na linha
Redirecionando a saída de erros padrão (stderr)
Em quaisquer dos redirecionamentos aprendidos até agora, podemos utilizar para redirecionar
a saída de erros padrão (stderr) ao invés da saída de dados padrão (stdout) utilizando o
descritor de arquivo 2. Recapitulando, os comandos e scripts utilizam-se da saída de dados
padrão para enviar o fluxo de caracteres a fim de notificar o usuário sobre o que está havendo
no comando (a saída de uma listagem de arquivos com o comando ls, por exemplo. Esses
mesmos comandos e scripts utilizam-se de um “canal” diferente para enviar informações sobre
erros em sua execução para o shell. O “canal”, nesse caso, é o descritor de arquivo.
Para enviar informações (caracteres) sobre erros provenientes dos comandos e scripts em
execução, estes utilizam o descritor de arquivo 2.
Exemplo A:
$ ls
$ ls inexistente.txt > arquivo.txt
ls: inexistente.txt: Arquivo ou diretório não encontrado
$ cat arquivo.txt
$ ls inexistente.txt 2> erros.txt
$ cat erros.txt
ls: inexistente.txt: Arquivo ou diretório não encontrado
Tentamos propositadamente listar um arquivo inexistente (inexistente.txt) com o comando ls,
causando um erro no programa. O comando ls utilizou-se da saída de erros padrão (stderr)
para enviar um fluxo de caracteres a fim de notificar que não encontrou o arquivo especificado.
141
PROGRAMA
TÉCNICO CIDADÃO
Como o redirecionamento inicial que fizemos apenas redireciona a saída de dados padrão para
o arquivo arquivo.txt, a stderr é mostrada na tela, e visualizamos assim a mensagem de erro.
No redirecionamento seguinte, redirecionamos a stderr para um arquivo chamado erros.txt
(redirecionamento 2>).
Exemplo B:
$ rm arquivo.txt erros.txt
$ lss > stdout.txt 2>stderr.txt
$ ls
stderr.txt stdout.txt
$ cat stderr.txt
bash: lss: command not found
$ ls stderr.txt inexistente.txt >stdout.txt 2>>stderr.txt
$ ls
stderr.txt stdout.txt
$ cat stderr.txt
bash: lss: command not found
ls: inexistente.txt: Arquivo ou diretório não encontrado
Após digitar um comando inexistente (lss), causamos um erro no shell, que nos notifica através
da stderr. A saída de nosso comando “inexistente” (vazia) foi redirecionada para o arquivo
stdout.txt e a saída de erros padrão (stderr) foi redirecionada para o arquivo stderr.txt. No
redirecionamento do comando ls, que procurava listar 2 arquivos (stderr.txt e inexistente.txt),
foram gerados dois fluxos de saída: Um deles envia para a stdout o nome do arquivo
stderr.txt, que foi encontrado na listagem. O segundo fluxo envia para a stderr uma notificação
de que não foi possível encontrar o arquivo inexistente.txt. Repare que concatenamos a saída
da stderr, e assim não sobrescrevemos o conteúdo do arquivo stderr.txt.
Redirecionamento com pipes: “|”
O pipping é um recurso que permite conectar a saída de um comando na entrada de outro
comando subseqüente, sem limitações quanto ao número de comandos a serem conectados,
142
PROGRAMA
TÉCNICO CIDADÃO
desde que cada um deles leia dados da saída padrão do comando anterior e escreva sua saída
na entrada de dados do próximo comando. Isso mantém o fluxo entre os comandos.
Encare o pipe como um encanamento (E realmente “pipe” significa “cano” em inglês.), onde
interconectamos os canos uns aos outros (comandos), formando um encanamento, onde a água
(fluxo de caracteres) irá passar.
Ambiente:
$ mkdir ~/redirecionamento/pipe -p
$ cd ~/redirecionamento/pipe/
$ touch arq1 arq2 arq3
Primeiro criamos o nosso ambiente de exercícios.
Exemplo A:
$ ls
arq1 arq2 arq3
$ ls |grep 2
arq2
$ ls |grep [23]
arq2
arq3
No diretório atual existem 3 arquivos (arq1, arq2 e arq3). Utilizamos o comando ls unido ao
comando grep através de um pipe para filtrar nossa saída de texto (stdout) duas vezes. Na
primeira vez, o comando ls envia a lista dos 3 arquivos para a stdin do comando grep, que por
sua vez, só mostra na tela o nome do arquivo que contém o número 2, nesse caso, arq2.
Depois, a única coisa que muda é a filtragem do grep, que passa a mostrar os nomes dos
arquivos que contém o número 2 ou 3, nesse caso são 2 arquivos, arq2 e arq3.
Exemplo B:
$ ls /bin |grep mount
mount
mountpoint
143
PROGRAMA
TÉCNICO CIDADÃO
umount
Listamos o conteudo do diretório /bin e utilizamos um pipe para “filtrar” a saída da listagem
com o comando grep, mostrando somente os comandos que contém a palavra mount.
No dia-a-dia de um administrador de sistemas Linux, torna-se necessária a utilização de muitos
pipes em uma mesma linha de comando para chegar em algum resultado em comum. No
decorrer do curso iremos nos deparar com diversas situações assim, mas por enquanto, observe
(e teste) alguns exemplos:
$ ps aux |grep ^root |more
$ ls -lR /usr/local |grep lib |grep rwxrwxr-x |more
Diferenças entre o “|” e o “>”
A principal diferença entre o “|” e o “>”, é que o pipe envolve processamento entre comandos,
ou seja, a saída de um comando é enviado a entrada do próximo comando e o “>” redireciona a
saída de um comando para um arquivo ou dispositivo (lembrando que dispositivos também não
passam de arquivos especiais).
Em qualquer dos exemplos anteriores com pipe, um resultado diferente seria obtido usando um
“>” no lugar do “|”; No “Exemplo B”. se o comando “ls /bin |grep mount” fosse substituído
por “ls /bin >grep mount” (o pipe trocado por >), teria um resultado completamente
diferente, pois iria redirecionar a saída do comando ls para um arquivo chamado grep.
Comando tee
É importante saber do comando tee nesse ponto do estudo, pois sua função é redirecionar o
fluxo de caracteres que lhe foi passado (por um pipe, por exemplo) para um arquivo (tal como
um simples redirecionamento “>”) e ao mesmo tempo mostra na tela (stdout) o mesmo
144
PROGRAMA
TÉCNICO CIDADÃO
conteúdo que foi redirecionado. Em miúdos, seria como redirecionar a saída de um comando p/
um arquivo e continuar vendo a saída na tela normalmente.
Sintaxe:
comando| tee [-a] [arquivo]
Exemplo A:
$ ls -la ~/exercicios | tee /tmp/listagem.txt
total 1
drwxr-xr-x 5 erika erika 128 2004-11-30 21:15 .
drwxr-xr-x 27 erika erika 1144 2004-12-01 16:56 ..
drwxr-xr-x 3 erika erika 96 2004-11-01 15:40 chmod
drwxr-xr-x 2 erika erika 112 2004-12-01 13:36 redirecionamento
drwxr-xr-x 2 erika erika 144 2004-11-01 19:19 umask
$ cat /tmp/listagem.txt
total 1
drwxr-xr-x 5 erika erika 128 2004-11-30 21:15 .
drwxr-xr-x 27 erika erika 1144 2004-12-01 16:56 ..
drwxr-xr-x 3 erika erika 96 2004-11-01 15:40 chmod
drwxr-xr-x 2 erika erika 112 2004-12-01 13:36 redirecionamento
drwxr-xr-x 2 erika erika 144 2004-11-01 19:19 umask
A saída do comando foi mostrada normalmente na tela e ao mesmo tempo gravada no arquivo
listagem.txt.
Exemplo B:
$ cat /etc/fstab |tee /tmp/listagem.txt
/dev/hda2
/
reiserfs
defaults
0
0
/dev/hda5
none
swap sw
0
0
proc
/proc
proc defaults
0
0
/dev/fd0
/floppy
auto user,noauto
0
0
/dev/cdrom
/cdrom
iso9660 ro,user,noauto
0
/dev/hda1
/boot ext3 defaults
0
2
$ ls ~/exercicios |tee -a /tmp/listagem.txt
chmod
redirecionamento
umask
0
145
PROGRAMA
TÉCNICO CIDADÃO
$ cat /tmp/listagem.txt
/dev/hda2
/
reiserfs
defaults
0
/dev/hda5
none
swap sw
0
0
proc
/proc
proc defaults
0
0
/dev/fd0
/floppy
auto user,noauto
0
0
/dev/cdrom
/cdrom
iso9660 ro,user,noauto
0
/dev/hda1
/boot ext3 defaults
0
2
chmod
redirecionamento
umask
0
0
Utilizando a opção -a, o conteúdo do arquivo de destino será concatenado, ao invés de
sobrescrito.
Tabela de Redirecionamentos
A tabela abaixo mostra um resumo das funções de cada operador de redirecionamento.
Redirecionador
Função
comando > arquivo
Redireciona a saída de dados padrão (stdout)
comando < arquivo
Redireciona a entrada de dados padrão (stdin)
comando >> arquivo
Concatena a saída de dados padrão (stdout)
comando << arquivo
Concatena a entrada de dados padrão (stdin)
comando 2> arquivo
Redireciona a saída de erros padrão (stderr)
comando 2>> arquivo
Concatena a saída de erros padrão (stderr)
comando1 | comando2
Utiliza a stdout do comando1 como stdin do comando2
146
PROGRAMA
TÉCNICO CIDADÃO
Paginadores
O comando more pode ser utilizado para leitura de arquivos que ocupem mais de uma tela.
Quando toda a tela é ocupada, o more efetua uma pausa e permite que você pressione [Enter]
ou [espaço] para continuar avançando no arquivo. Para sair do more pressione [q]. O comando
less também segue o mesmo propósito geral, porém permite recuarmos o texto que já rolou a
tela, sendo um “paginador” mais eficiente que o more.
Os páginadores são amplamente utilizados para paginar fluxos de texto.
Exemplos:
ps ax |more
ps ax |less
ls /etc |less
Caracteres especiais do bash (Metacaracteres)
Também conhecidos como metacaracteres (ou wildcards), esses caracteres especiais são assim
entitulados porque desempenham funções que vão além de simples caracteres. Os principais
deles são “?” e “*”.
O metacaractere “?” substitui um caractere qualquer no nome de um arquivo.
O “*” é antigo conhecido até mesmo dos tempos de DOS, onde era utilizado da seguinte forma
para referenciar todos os arquivos do diretório: *.*. No Linux, para obter o mesmo resultado,
basta um único asterisco: *.
Um bom conhecimento sobre metacaracteres é determinante durante uma prova para
certificação em Linux.
Ambiente:
$ mkdir -p ~/exercicios/metacaracteres
147
PROGRAMA
TÉCNICO CIDADÃO
$ cd ~/exercicios/metacaracteres/
$ touch brasil brazil Brasil Brazil BRASIL BRAZIL
$ ls
brasil Brasil brazil Brazil BRASIL BRAZIL
Antes de começar com os exercícios, devemos criar o ambiente de testes.
Exemplo A:
$ ls bra?il
brasil brazil
$ ls ?ra?il
brasil Brasil brazil Brazil
No primeiro comando, o ls listou os arquivos que contivessem bra, seguidos de qualquer
caractere, e terminavam com il. Como haviam dois arquivos que casavam com os critérios,
somente esses foram mostrados. No segundo comando foi utilizado dois metacaracteres, um
para o primeiro e outro para o quarto caractere do arquivo.
Exemplo B:
$ $ ls bra*
brasil brazil
$ ls *rasil
brasil Brasil
O metacaractere * é muito mais fácil de entender, pois casa com qualquer coisa, quantas vezes
for necessário. O que o diferencia do metacaractere “?” é que este casa com qualquer coisa
somente uma vez.
Para casar uma pesquisa com um determinado número de caracteres, podemos agrupar o
metacaractere “?”.
Exemplo C:
$ touch casa casas casais casinhas
$ ls casa??
casais
148
PROGRAMA
TÉCNICO CIDADÃO
$ ls casa*
casa casais casas
$ rm -fv cas*
removed `casa'
removed `casais'
removed `casas'
removed `casinhas'
Os critérios do comando ls era basicamente qualquer arquivo que comece com “casa” e
contenha mais dois caracteres quaisquer (casa??), diferente do segundo ls, que listaria arquivos
que iniciem com casa e possam ou não conter quaisquer outros caracteres depois (casa*). Não
esqueça de remover os arquivos conforme o exemplo, para que não atrapalhe nos outros
exemplos.
Alternativamente, podemos utilizar outros metacaracteres como “[“ e “]” para melhor filtrar os
critérios a serem passados a linha de comando. Conforme exemplo abaixo.
Exemplo D:
$ ls
brasil Brasil BRASIL brazil Brazil BRAZIL
$ ls [Bb]rasil
brasil Brasil
$ ls ?ra[sz]il
Brasil Brazil
Repare em todos os arquivos que existem atualmente no diretório e quais arquivos foram
selecionados pelo comando ls. Pratique isso bastante, pois é de extrema importância em um
exame de certificação como o Linux Professional Institute 101 (LPI-101).
Também é possível especificar um range de letras ou números dentre os metacaracteres “[“ e
“]” para facilitar nossas buscas.
Exemplo E:
$ touch 1brasil 2brasil 11brasil 22brasil
$ ls [a-z]rasil
149
PROGRAMA
TÉCNICO CIDADÃO
brasil Brasil
$ ls [c-z]rasil
ls: [c-z]rasil: Arquivo ou diretório não encontrado
$ ls [0-9]brasil
1brasil 2brasil
$ ls [0-9][0-9]brasil
11brasil 22brasil
Listamos primeiramente todos os arquivos cujo primeiro caractere é alguma letra entre a e z (O
ls, nesse caso, não faz distinção de maiúsculas e minúsculas) e o restante da palavra seja
“rasil”. Quando tentamos listar os arquivos cujo primeiro caractere seja alguma letra entre c e
z e o restante da palavra seja “rasil”, nenhum é encontrado. O próximo ls mostra os arquivos
cujo primeiro caractere é um número somente seguido da palavra “brasil”. Repare em como
utilizamos os metacaracteres para listar os arquivos que contenham dois números no início do
nome, seguidos pela palavra “brasil”.
O mesmo resultado de [a-k], por exemplo, pode ser conseguido com [abcdefghijk]. É apenas
uma forma mais fácil de se expressar a mesma coisa.
Executando múltiplos comandos em ordem determinada
Podemos desencadear a execução de diversos comandos em ordem, como apenas uma linha de
comando. Para tal, utilizamos o metacaractere “;”.
Exemplo A:
$ ls ?rasil ; echo “Outro Comando”
brasil Brasil
Outro Comando
A primeira linha da saída é resultado do comando ls, já a segunda refere-se ao comando echo,
que foi executado assim que o ls executou. Esse sistema não deve ser novidade para nós, pois
já utilizamos por diversas vezes até agora no decorrer do curso.
150
PROGRAMA
TÉCNICO CIDADÃO
Exemplo B:
$ numero=2
$ (numero=1; echo "Dentro: $numero" ); echo "Fora: $numero"
Dentro: 1
Fora: 2
Podemos “agrupar” comandos entre parênteses para “proteger” o conteúdo de variáveis,
permitindo que o valor de alguma variável de shell seja diferente para os comandos entre
parênteses, sem interferir no valor das variáveis fora. A princípio é um pouco confuso entender,
mas depois se torna simples. Foi definido o valor 2 para a variável $numero. Repare que dentro
dos parênteses essa variável tem o valor 1, mas fora continua tendo o valor 2, pois a “clausura”
imposta pelos parênteses impede que qualquer variável ali criada altere as já existentes.
FIQUE LIGADO
Este é um outro tópico de grande peso em provas para certificações Linux de nível
básico. É imprescindível um bom domínio sobre esse tipo de metacaracteres, pois
questões assim costumam ter um baixo nível de acertos.
Também é possível simplificar parâmetros dos comandos. Para tal façanha, o bash nos dispõe
dos metacaracteres “{“ e “}” (chaves). Analise os exemplos.
Exemplo C:
$ cd ~/exercicios/metacaracteres; rm *
$ touch arquivo{1,2,3}-{a,b,c}.{txt,doc}
$ ls
arquivo1-a.doc arquivo1-c.doc arquivo2-b.doc arquivo3-a.doc arquivo3-c.doc
arquivo1-a.txt arquivo1-c.txt arquivo2-b.txt arquivo3-a.txt arquivo3-c.txt
arquivo1-b.doc arquivo2-a.doc arquivo2-c.doc arquivo3-b.doc
arquivo1-b.txt arquivo2-a.txt arquivo2-c.txt arquivo3-b.txt
151
PROGRAMA
TÉCNICO CIDADÃO
Com apenas um comando touch, agrupamos diversas instâncias do mesmo comando, mais
precisamente 18 vezes. Graças aos 3 blocos de chaves, o bash interpretou o seguinte: Primeiro
formou-se o parâmetro arquivo1-a.txt, depois arquivo1-a.doc, em seguida arquivo1-b.txt, e
assim por diante. A ordem completa pode ser constatada apenas trocando o comando touch
pelo comando echo, deixando o comando com a seguinte aparência:
$ echo arquivo{1,2,3}-{a,b,c}.{txt,doc}
arquivo1-a.txt arquivo1-a.doc arquivo1-b.txt arquivo1-b.doc arquivo1-c.txt arquivo1-c.doc arquivo2-a.txt arquivo2-a.doc arquivo2-b.txt arquivo2-b.doc arquivo2-c.txt arquivo2-c.doc arquivo3-a.txt arquivo3-a.doc arquivo3-b.txt arquivo3-b.doc arquivo3-c.txt arquivo3-c.doc
Agora não esqueça de limpar a bagunça:
$ rm *
Operadores de controle lógico: && e || (AND e OR)
O shell bash também dispõe de metacaracteres operadores de controle lógico, os conhecidos
AND e OR de diversas linguagens de programação. Mas aqui eles até que são bem simples de
compreender.
O operador de controle AND é representado por dois sinais de “&”, serve para agrupar
comandos e somente executar o próximo comando caso o primeiro tenha obtido sucesso.
Exemplo A:
$ ls
$ ls arquivo.txt 2>/dev/null && echo "Arquivo Encontrado"
$ touch arquivo.txt
$ ls arquivo.txt 2>/dev/null && echo "Arquivo Encontrado"
arquivo.txt
Arquivo Encontrado
$ rm arquivo.txt
Causamos um erro no comando ls, pois o arquivo arquivo.txt não existia no diretório (Repare
que direcionamos a stderr para uma saída nula). Devido ao comando ls não ter obtido êxito, o
152
PROGRAMA
TÉCNICO CIDADÃO
comando echo não foi executado. Após a criação do arquivo arquivo.txt, o comando echo foi
executado.
Esse tipo de agrupamento é muito importante para criar condicionais para rotinas de
administração do sistema. Só ejetar a fita DAT se o backup for concluído com êxito, por
exemplo.
Temos também o operador de controle OR, que é representado por dois sinais de pipe “||”;
Ele age basicamente da seguinte forma: O comando após o operador de controle OR somente
será executado caso o primeiro falhe. Algo como um comando reserva, muito utilizado em
scripts para notificação caso algum comando falhe.
Exemplo B:
$ ls arquivo.txt 2>/dev/null || echo "Arquivo Nao existe"
Arquivo Nao existe
$ touch arquivo.txt
$ ls arquivo.txt 2>/dev/null || echo "Arquivo Nao existe"
arquivo.txt
Repare que o comando echo entrou em ação devido ao comando ls ter falhado, o que não
ocorreu mais após criarmos o arquivo arquivo.txt.
DICA
Caso o nome de um arquivo ou o argumento de um comando contenha um caractere que porventura seja igual a um metacaractere, esse deve ser “escapado” pelo
shell; Para tal, basta preceder o caractere com uma barra invertida “\”.
Configuração do shell bash
O shell bash, apesar de ser um interpretador de comandos, também é um programa instalado
no sistema, que conta com seus arquivos de configuração. Esses arquivos são lidos quando o
bash é invocado, e isto geralmente é feito quando determinado usuário efetua login no sistema.
153
PROGRAMA
TÉCNICO CIDADÃO
As distribuições Linux já costumam disponibilizar estes arquivos com prévias configurações
funcionais do bash. Estudaremos a seguir cada um desses arquivos, e quais suas respectivas
funções.
O shell bash pode ser iniciado de forma interativa e não interativa. Um shell interativo, é o shell
que conhecemos, onde digitamos comandos “interativamente”. Este tipo de shell se divide em
duas formas, shell interativo de login, que é o shell carregado quando efetuamos o login, e o
shell interativo comum, que é o shell carregado manualmente após um login. É possível
carregar um shell desse tipo invocando-se o comando bash.
Um shell não-interativo é um shell pouco usado, que não recebe comandos diretamente e só
serve para executar um comando ou script (“bash -c comando”, por exemplo).
Quando o bash é invocado como um shell interativo de login, primeiro ele verifica a existência
do arquivo /etc/profile, caso ele exista, os comandos nele contidos serão lidos e executados.
Após ler e executar esse arquivo, o bash faz o mesmo com o arquivo ~/.bash_profile,
~/.bash_login e ~/.profile, nessa mesma ordem, lendo e executando os comandos presentes
nesses arquivos.
Quando um shell interativo de login é finalizado, o bash lê e executa os comandos contidos no
arquivo ~/.bash_logout, caso exista.
Se o shell bash for invocado de forma interativa comum (Não é um shell de login), o bash
somente lê e executa os comandos contidos nos arquivos /etc/bash.bashrc (ou /etc/bashrc em
algumas distribuições), em seguida no arquivo ~/.bashrc.
IMPORTANTE
Os arquivos /etc/bashrc e ~/.bashrc não são lidos pelo bash quando invocamos um
shell interativo de login, porém alguns scripts como o /etc/profile ou ~/.bash_profile podem “chamar” alguns desses arquivos e executá-los. O importante a saber é
que o bash não procura por esses arquivos nestas circunstâncias.
154
PROGRAMA
TÉCNICO CIDADÃO
A seguir veremos exemplos dos arquivos comentados nessa seção.
Arquivo /etc/profile
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games"
fi
if [ "$PS1" ]; then
if [ "$BASH" ]; then
PS1='\u@\h:\w\$ '
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
export PATH
umask 022
Repare que este arquivo configura o PATH dos comandos, a aparência do prompt (Variável
$PS1) e configura a umask padrão.
Arquivo ~/.bash_profile
# ~/.bash_profile: executed by bash(1) for login shells.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.
# the default umask is set in /etc/login.defs
155
PROGRAMA
TÉCNICO CIDADÃO
#umask 022
# include .bashrc if it exists
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# the rest of this file is commented out.
# set PATH so it includes user's private bin if it exists
#if [ -d ~/bin ] ; then
# PATH=~/bin:"${PATH}"
#fi
# do the same with MANPATH
#if [ -d ~/man ]; then
# MANPATH=~/man:
# export MANPATH
#fi
Este arquivo possui uma rotina que verifica a existência de um outro arquivo chamado
~/.bashrc, e caso este arquivo exista, será executado pelo bash.
Arquivo /etc/bash.bashrc ou /etc/bashrc
# System-wide .bashrc file for interactive bash(1) shells.
# To enable the settings / commands in this file for login shells as well,
# this file has to be sourced in /etc/profile.
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" -a -r /etc/debian_chroot ]; then
156
PROGRAMA
TÉCNICO CIDADÃO
fi
debian_chroot=$(cat /etc/debian_chroot)
# set a fancy prompt (non-color)
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
# enable bash completion in interactive shells
#if [ -f /etc/bash_completion ]; then
# . /etc/bash_completion
#fi
Arquivo /etc/bash.bashrc de uma distribuição Debian.
Arquivo ~/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything:
[ -z "$PS1" ] && return
# don't put duplicate lines in the history. See bash(1) for more options
#export HISTCONTROL=ignoredups
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
#shopt -s checkwinsize
# enable color support of ls and also add handy aliases
if [ "$TERM" != "dumb" ]; then
eval `dircolors -b`
alias ls='ls --color=auto'
#alias dir='ls --color=auto --format=vertical'
#alias vdir='ls --color=auto --format=long'
fi
# some more ls aliases
#alias ll='ls -l'
#alias la='ls -A'
157
PROGRAMA
TÉCNICO CIDADÃO
#alias l='ls -CF'
# set variable identifying the chroot you work in (used in the prompt below)
#if [ -z "$debian_chroot" -a -r /etc/debian_chroot ]; then
# debian_chroot=$(cat /etc/debian_chroot)
#fi
# set a fancy prompt (non-color)
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
# Comment in the above and uncomment this below for a color prompt
#PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]
\w\[\033[00m\]\$ '
# If this is an xterm set the title to user@host:dir
case $TERM in
xterm*|rxvt*)
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
;;
*)
;;
esac
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc).
#if [ -f /etc/bash_completion ]; then
# . /etc/bash_completion
#fi
Repare na existência de opções que podem ser habilitadas apenas descomentando as linhas
corretas. Este arquivo também foi retirado de um sistema Debian.
Arquivo ~/.bash_logout
Este arquivo não costuma existir por padrão em algumas distribuições Linux. Como dito
anteriormente, a função desse arquivo é executar alguma(s) tarefa(s) ao sairmos do sistema,
que podem se tornar necessárias com o tempo. É importante frisar que este arquivo somente
será executado ao sairmos de um shell bash interativo de login.
158
PROGRAMA
TÉCNICO CIDADÃO
Execute o comando abaixo para criar um novo ~/.bash_logout:
$ echo “echo Ate Logo... ; read” > ~/.bash_logout
Em seguida, efetue logout do terminal de login (Faça em um terminal texto, como tty1, por
exemplo). Ao sairmos, será mostrada a mensagem “Ate Logo...” na tela, que desaparecerá ao
pressionarmos qualquer outra tecla.
Arquivo ~/.bash_history
Arquivo já estudado anteriormente, armazena os últimos comandos digitados pelo usuário.
Aliases de shell
Aliases de shell são formas de se “apelidar” comandos, criando comandos intermediários de
atalho para eles. Aliases são definidos com o comando alias, que é um dos comandos
integrados ao shell bash. Como o comando alias (sem nenhum argumento) podemos listar os
alias atualmente configurados no shell atual. Caso deseje apagar um alias, utilize o comando
unalias.
Sintaxe:
alias nome=”qualquer comando valido do shell”
Exemplo A:
$ alias
alias ls='ls --color=auto'
$ alias cls="clear"
$ alias
alias cls='clear'
alias ls='ls --color=auto'
$ cls
159
PROGRAMA
TÉCNICO CIDADÃO
Definimos um alias para o comando cls (velho conhecido do DOS), que não existe no Linux.
Como o comando clear tem o mesmo efeito em sistemas Linux, criamos um alias para que
quando o usuário digitar o comando cls, o sistema execute clear.
Exemplo B:
alias
alias
alias
alias
alias
alias
alias
desligar=’shutdown -h now’
reiniciar=’shutdown -r now’
ls=’ls –-color’
cd-on=’mount /dev/cdrom’
cd-off=‘umount /dev/cdrom’
x=’startx’
limpa="clear ; date"
Este atalho deve ser escrito no arquivo /etc/bashrc. Se não existir esse arquivo, crie o arquivo
com vi e salve-o no diretório /etc com o nome bashrc.
DICA
Os alias definidos na linha de comando manualmente se perdem ao saírmos do shell
atual. Para tornar os aliases permanentes, basta adicioná-los ao arquivo /etc/bash.bashrc ou ~/.bashrc caso queira restringir os novos aliases somente para algum(ns)
usuário(s) do sistema. O próprio ~/.bashrc costuma ter alguns aliases já pré-definidos ou comentados.
Escape de Comandos no bash
É importante que o administrador de sistemas Linux esteja habituado com o escape de
comandos no shell, sem contar que é um tópico de peso para um exame de certificação Linux
do nível proposto pelo treinamento.
Os principais caracteres de escape são: ' (aspas simples), “ (aspas duplas), e \ (barra invertida).
Qualquer string adequada entre aspas simples será interpretada literalmente pelo shell; O
mesmo acontece com as aspas duplas. A diferença entre as aspas é que no caso das simples,
160
PROGRAMA
TÉCNICO CIDADÃO
não é permitida a substituição de comandos (visto adiante), já entre as aspas duplas isso é
permitido. Qualquer caractere logo após a \ é considerado literalmente. Colocar uma \ no final
da linha diz ao bash para não interpretar a quebra de linha, e continuar o comando na linha de
baixo (vide exemplos).
A substituição de comandos é uma característica do bash (herdada de outros shells) que
permite a um comando utilizar como parâmetro ou parte de um parâmetro a saída de outro
comando que esteja enquadrado entre ` (crases) ou no formato $(comando), conforme
exemplo abaixo:
Exemplo A:
$ echo "Existem `ls -l |wc -l` arquivos em $(pwd)"
Existem 8 arquivos em /home/erika
Ocorreram 2 substituições e 1 escape de comandos na linha acima. As duas substituições
referem-se a saída do comando “ls -l |wc -l”, que listou os arquivos no diretório e em seguida
usou o comando “wc -l“para “contar” quantas linhas haviam na saída, que resultou em 8. A
segunda substituição refere-se a saída do comando pwd, que mostra o caminho do diretório
atual. Repare que as duas substituições de comandos foram efetuadas de formas diferentes. O
escape de comandos refere-se a tudo que está compreendido entre as aspas duplas no
comando.
Exemplo B:
$ echo "Um teste 'simples' demais"
Um teste 'simples' demais
$ echo 'Um teste 'simples' demais'
Um teste simples demais
$ echo 'Um teste "simples" demais'
Um teste "simples" demais
Repare em como o escape de comandos atua. Quando as aspas são iguais dentro e fora, o
escape de comandos é anulado.
161
PROGRAMA
TÉCNICO CIDADÃO
DOCUMENTAÇÃO
Documentação é essencial no que tange o sistema operacional Linux, com seus diversos comandos e termos. É de grande importância que o administrador, por mais experiente que seja, saiba
consultar a documentação do sistema.
No Linux, existem alguns padrões de documentação que servem como repositório de informações
sobre os comandos e termos relacionados ao sistema. Essas informações podem ser acessadas
pelo próprio sistema. Os comandos e termos costumam estar documentados nas chamadas páginas de manual e diretório de documentação.
O diretório de documentação de um sistema Linux costuma ser /usr/share/doc. Dentro desse diretório existem diversos subdiretórios que hospedam documentação sobre os comandos e termos
relacionados. Por exemplo, para obter mais informações sobre o bash, basta analisar os arquivos
dentro do diretório /usr/share/doc/bash. É bem simples.
As páginas de manual são ligeiramente mais complexas, mas iremos estudá-las em seguida.
DICA
Geralmente os comandos contam com parâmetros de ajuda no formato: “comando
–help” ou “comando -h”. Isso facilita bastante a busca por informações sobre determinado parâmetro de comando.
Páginas de manual
As páginas de manual definem um padrão com que os programas instalados devem dispor a
documentação. Atualmente, existem dois tipos de páginas de manual: As mais antigas, porém
ainda amplamente utilizadas são as “man pages” e o formato mais recente de documentação
que são as “info pages”. Estudaremos com mais cautela cada uma delas.
Man pages
As páginas de manual no formato de “man pages” acompanham quase todos os programas
GNU/Linux. Elas trazem uma descrição da funcionalidade de cada comando ou programa e
detalhes sobre o funcionamento dos parâmetros. Uma página de manual é visualizada na forma
162
PROGRAMA
TÉCNICO CIDADÃO
de texto com rolagem vertical. Também é comum encontrar documentação para arquivos de
configuração do sistema, e não somente para comandos.
Para “acessar” as man pages, utilizamos o comando man.
Sintaxe:
man [seção] termo
Sua utilização é bem simples. Para ler a página de manual do comando ls, por exemplo,
utilizamos “man ls”.
Para facilitar a organização das man pages, foram definidas seções para as páginas de manual
deste formato. Estas seções estão descritas na tabela a seguir.
Seção
Descrição
1
Programas executáveis ou programas do
shell
2
Chamadas do sistema (Funções providas pelo
Kernel)
3
Chamadas de biblioteca (Funções providas
por bibliotecas do sistema)
4
Arquivos especiais (Geralmente
dentro do diretório /dev)
5
Arquivos de configuração
6
Jogos
7
Miscelânea (Qualquer coisa
enquadrar nas demais)
8
Comandos de administração do sistema
(Geralmente os que ficam em /sbin)
9
Rotinas do Kernel (Ainda não é o padrão,
talvez mude)
que
arquivos
não
se
163
PROGRAMA
TÉCNICO CIDADÃO
Dessa forma, podemos direcionar nossa busca por documentação para uma página de manual
específica, pois é possível que a documentação de um programa exista em 2 ou mais
categorias, como é o caso do comando crontab que é documentado na seção 1 (sobre o próprio
comando) e 5 (formato do arquivo de configuração para o comando). Sendo assim, como as
seções são numeradas e estão em ordem crescente, o man irá mostrar a primeira seção sobre
o comando encontrada.
Nesse caso do crontab, ao digitarmos ”man crontab”, o man irá nos mostrar a primeira página
de manual sobre o comando crontab que ele encontrar, nesse caso a seção 1. Caso queira
acessar a página de manual do crontab da seção 5 ao qual ele também pertence, utilizamos o
comando da seguinte forma:
man 5 crontab
Uma man page segue um formato padrão para dispor as informações na página. A primeira
linha da saída é o cabeçalho, que costuma mostrar nas duas extremidades o nome da página
de manual seguida do número da seção entre parênteses. No caso da seção 5 do comando
crontab, a primeira linha seria assim:
CRONTAB(1)
CRONTAB(1)
Para navegar na página de manual, utilizamos as setas do teclado, [PGUP] e [PGDOWN]. Para
Atualizar a tela, tecla [r], para sair [q].
Os arquivos de man pages ficam armazenados no diretório /usr/share/man. Lá existem
diversos subdiretórios que referenciam as respectivas seções em diversos idiomas disponíveis,
muitas vezes organizadas por links simbólicos.
DICA
Utilize o comando man -w manpage para descobrir em que seções das páginas de
manual o termo pesquisado reside.
164
PROGRAMA
TÉCNICO CIDADÃO
Info Pages
É considerada a evolução das man pages. Sua principal diferença é a inclusão de um novo
sistema de navegação através das páginas, que agora permitem links umas entre as outras,
lembrando muito o conceito de páginas web. Se pressionarmos [Enter] em cima de uma palavra
destacada, a info page nos levará a seção correspondente. É um pouco mais simples do que as
man pages, pois não está dividida em seções (ainda).
Se o nome do comando ou programa não for digitado, a info pages mostra a lista de todos os
manuais de comandos e programas disponíveis. A navegação da info pages é feita através de
nomes marcados com um“*” (hipertextos) que se pressionarmos [Enter], nos levará até a seção
correspondente.
Sintaxe:
info [comando ou programa]
Tabela de Navegação
Tecla
q
?
n
p
u
m
d
Função
Sai da info page
Mostra a tela de ajuda de navegação
Avança uma página
Volta uma página
Sobe um nível de página
Abre mecanismo de busca para localizar uma página dentro das info pages
Volta ao índice de documentos
Exemplo:
$ info ls
165
PROGRAMA
TÉCNICO CIDADÃO
Sistema de buscas na documentação do sistema
Algumas vezes nos deparamos com alguma situação em que precisamos obter informações
sobre “algo”, que pode ser um comando ou termo relacionado, que não sabemos exatamente
para que serve. (Sempre aparece aquele comando inusitado).
É possível efetuar buscas por determinados critérios na documentação do sistema, a fim de
encontrar a página de manual (manpages ou infopages) correta para o comando ou termo
pesquisado.
Criando a base de dados
Antes de efetuarmos qualquer pesquisa, é preciso criar (ou atualizar, se necessário) a base de
dados das páginas de manual com o comando makewhatis, portanto, é necessário rodar esse
comando sempre que uma nova página de manual for adicionada ao sistema (ao instalarmos
programas, por exemplo) ou antes da primeira utilização, quando a base de dados ainda não
existe.
IMPORTANTE
Algumas distribuições Linux (como o Debian, por exemplo), utilizam o comando
mandb -c para criar a base de dados ao invés do comando makewhatis.
Efetuando pesquisas na documentação
Após a base já estar criada, podemos efetuar pesquisas de duas maneiras na base de dados das
páginas de manual. A primeira delas é com o comando whatis, que efetua a busca com base no
166
PROGRAMA
TÉCNICO CIDADÃO
“nome do comando”. É muito utilizada quando já sabemos o nome do comando e queremos
obter mais informações sobre ele diretamente. Já a outra forma é com o comando apropos, que
efetua a pesquisa com base em “parte do nome do comando ou sua descrição”. Isso
permite efetuarmos buscas com base em termos de pesquisa, o que se torna útil quando não
sabemos exatamente o nome do comando, por exemplo.
Exemplo A:
$ whatis cron
cron (8)
- daemon to execute scheduled commands (Vixie Cron)
$ apropos cron
cron (8)
- daemon to execute scheduled commands (Vixie Cron)
crontab (1)
- maintain crontab files for individual users (V3)
crontab (5)
- tables for driving cron
$ whatis scheduled
scheduled: nada apropriado.
$ apropos scheduled
cron (8)
- daemon to execute scheduled commands (Vixie Cron)
167
PROGRAMA
TÉCNICO CIDADÃO
LOCALIZANDO ARQUIVOS NO SISTEMA
Existem alguns utilitários no Linux que nos auxiliam a localizar arquivos na estrutura de
diretórios com base em critérios. A ferramenta mais utilizada para essa tarefa é o comando
find, que permite localizarmos arquivos no sistema como base em critérios como o nome do
arquivo, datas, tamanho, etc. Gerando assim uma grande flexibilidade na busca de
determinados arquivos no sistema.
Comando find
O find é uma das mais importantes ferramentas GNU disponíveis. Ele trabalha basicamente
com critérios, que podem ser combinados a fim de se encontrar um ou mais arquivos
específicos. Essa característica permite, por exemplo, utilizarmos o find para selecionar quais
arquivos farão ou não parte de uma rotina de backup no Linux.
O find também permite executarmos um determinada ação para cada um dos arquivos
resultantes da busca.
Sintaxe:
find [caminho...] [expressão]
O caminho padrão é o diretório atual; a expressão padrão é -print.
As principais expressões estão descritas na tabela abaixo:
168
PROGRAMA
TÉCNICO CIDADÃO
Tabela de Parâmetros
-name arquivo
Procura por algum arquivo chamado “arquivo”.
-mindepth nível
Especifica um nível mínimo de subdiretórios para a pesquisa.
-maxdepth nível
Expecifica um nível máximo de subdiretórios para a pesquisa.
-amin n
Procura arquivos que tenham sido acessados “n” minutos atrás.
-atime n
Procura arquivos que tenham sido acessados “n” dias atrás.
-cmin n
Procura arquivos que tenham sido modificados “n” minutos atrás.
-ctime n
Procura arquivos que tenham sido modificados “n” dias atrás.
-user usuário
Procura arquivos cujo dono seja o usuário determinado.
-group grupo
Procura arquivos cujo dono seja o grupo determinado.
-size tamanho
Procura arquivos de um tamanho específico. O tamanho pode ser
especificado em b (blocos de 512 bytes, padrão), c (bytes), k
(Kilobytes) e w (Palavras de 2 bytes, ou 16 bits)
-type tipo
Procura por arquivos que sejam de um tipo específico. Os tipos
podem ser: b (dispositivo de bloco), c (dispositivo de caractere), d
(diretório), f (arquivo comum), l (link simbólico), entre outros.
-perm permissão
Procura arquivos que possuam determinada permissão, que pode ser
especificada em formato de letras ou em formato octal.
-exec comando \;
Executa determinado comando para cada arquivo encontrado na
busca. Para referenciar o arquivo no comando utilize {} no lugar do
nome de um arquivo. (Veja exemplos a seguir).
O comando find ainda possui outros diversos parâmetros não mostrados nessa tabela, porém
são parâmetros dificilmente utilizados, que podem ser encontrados na man page do comando
quando necessário.
Exemplo A:
$ find /bin -name ls
/bin/ls
$ find /bin -name “ls*”
/bin/ls
169
PROGRAMA
TÉCNICO CIDADÃO
/bin/lsmod
/bin/lspci
/bin/lsmod.modutils
Procura por um arquivo chamado “ls” dentro do diretório /bin, em seguida procura por qualquer
arquivo que inicie com ls (ls*) no mesmo diretório.
DICA
Sempre que for especificar algum coringa como ls* utilize-o entre aspas, como o exemplo acima.
Exemplo B:
# find / -name grep -maxdepth 3
Procura no diretório raiz e sub-diretórios até o terceiro nível um arquivo ou diretório cujo nome
seja grep.
Exemplo C:
# find /usr -size +10000k
Procura por arquivos com mais de 10MB a partir do diretório /usr.
Exemplo D:
# find /etc -size -1000k -name host* -type f
/etc/hosts
/etc/hosts.allow
/etc/init.d/hostname.sh
/etc/hostname
/etc/hosts.deny
/etc/host.conf
# find /etc -size -1000k -name host??????? -type f
/etc/hosts.allow
/etc/init.d/hostname.sh
170
PROGRAMA
TÉCNICO CIDADÃO
Agora algumas pesquisas mais complexas que envolvem coringas, onde buscamos arquivos a
partir do diretório /etc cujo tamanho seja inferior a 1MB, o nome comece com host (host*) e
deve ser um arquivo comum. Depois refinamos nossa pesquisa dizendo que somente queremos
encontrar arquivos cujo nome comece com host e contenha mais 7 caracteres.
Exemplo E:
# touch /tmp/arq1
# touch -t 11201204 /tmp/arq2
# ls -l /tmp/arq*
-rw-r--r-- 1 root root 0 Dec 20 12:04 /tmp/arq1
-rw-r--r-- 1 root root 0 Nov 20 12:04 /tmp/arq2
# find /tmp -name "arq*" -atime -10
/tmp/arq1
# find /tmp -name "arq*" -atime +10
/tmp/arq2
# find /tmp -name "arq*" -atime -32
/tmp/arq1
/tmp/arq2
Repare que foram criados dois arquivos, um com a data atual (arq1) e outro com a data de
acesso propositalmente modificada para 30 dias atrás (arq2). A primeira busca do find procura
por arquivos cujo nome inicie com “arq” (arq*) e que tenha sido acessado nos últimos 10 dias
(De dez dias para cá geralmente é mais fácil de memorizar). A segunda busca é parecida, o que
a diferencia é que buscamos por um arquivo que não tenha sido acessado nos últimos 10 dias
(Tente lembrar “de dez dias pra lá”). Por último, Pesquisamos pelos mesmos arquivos que
iniciem com arq, mas que tenham sido acessados nos últimos 32 dias, o que resultou nos dois
arquivos.
Exemplo F:
# find /dev -group disk -name hd[abc]2 -type b
/dev/hda2
/dev/hdb2
/dev/hdc2
# find /dev -group disk -name hd[abc]2 -type b -exec echo "Arquivo {}" \;
171
PROGRAMA
TÉCNICO CIDADÃO
Arquivo /dev/hda2
Arquivo /dev/hdb2
Arquivo /dev/hdc2
Tentamos localizar arquivos dentro de /dev que pertençam ao grupo disk, cujo nome comece
com hd, o terceiro caractere do nome seja a, b ou c e seja do tipo b (Dispositivo de blocos). Isso
retornou 3 resultados. Depois utilizamos a mesma busca como base para o argumento -exec,
que executou o comando echo para cada um dos arquivos resultantes, exemplificando como é
possível executar comandos para cada resultado individual da pesquisa.
Comando whereis
Localiza os binários e as páginas de manual para algum binário (comando ou biblioteca) do
sistema. A pesquisa é efetuada com base nos caminhos configurados na variável $PATH do
shell e em caminhos que comumente abrigam binários do sistema.
Sintaxe:
whereis [opção] arquivo
Onde arquivo é o binário a ser pesquisado.
Tabela de Parâmetros
-b
Procura por binários.
-m
Procura por páginas de manual.
-s
Procura por código-fonte.
Exemplo A:
# whereis crontab
172
PROGRAMA
TÉCNICO CIDADÃO
crontab:
/usr/bin/crontab
/etc/crontab
/usr/share/man/man1/crontab.1.gz
usr/share/man/man5/crontab.5.gz
# whereis -b crontab
crontab: /usr/bin/crontab /etc/crontab
# whereis -m crontab
crontab: /usr/share/man/man1/crontab.1.gz /usr/share/man/man5/crontab.5.gz
/
Comando locate
Localiza uma palavra da estrutura de arquivos ou diretórios do sistema a partir de uma base de
dados própria previamente indexada. É útil quando queremos localizar de forma rápida um
arquivo qualquer. Como a pesquisa é efetuada em um banco de dados próprio do comando,
antes precisamos criar o banco de dados com o comando updatedb.
Sintaxe:
locate [arquivo]
Exemplo:
# touch /tmp/meunovoarquivo
# locate meunovoarquivo
# updatedb
# locate meunovoarquivo
/tmp/meunovoarquivo
Repare que antes de atualização da base de dados do locate com o comando updatedb não era
possível encontrar o arquivo meunovoarquivo. Isso torna o locate muito útil para buscas
rápidas, sem ter que varrer todo ou parte do sistema de arquivos a cada busca, por exemplo.
173
PROGRAMA
TÉCNICO CIDADÃO
EDITORES DE TEXTO
O Linux conta com diversos editores de texto que são peça chave no dia a dia de um
administrador de sistemas. O mais utilizado entre eles é o VI, pois está presente em 99% das
distribuições Linux além de também estar presente em sistemas Unix. Devido a isso, o VI será o
foco de nossos estudos.
Vi
O nome Vi vem de visual, pois é o que os usuários consideravam como sendo um editor visual a
mais de 3 décadas atrás. O Vi é o editor atualmente utilizado que possui mais tempo de vida
(mais de 3 décadas). Na verdade, o que encontramos na maioria das distribuições Linux atuais
é uma reencarnação do Vi original denominado Vim (Vi Improved), que foi escrito desde o início
por programadores voluntários com base no VI já existente. O objetivo desses programadores
era criar um editor de textos melhor que o Vi original, mas que mantivesse as mesmas
características.
As principais características do Vi original são na verdade soluções para as necessidades da
época. A utilização do Vi é bastante baseada em teclas de atalho para executar tarefas de
rolagem e edição de texto, devido ao fato de que na época em que o original foi desenvolvido
as redes eram muito lentas, e quanto menos informações (Teclas, comandos...) pudessem
trafegar pela rede ao se editar um arquivo melhor. Essas características são bem vindas até
hoje, pois permite efetuarmos edições de arquivos remotamente (Através de uma conexão
remota já estabelecida, como Telnet e SSH, por exemplo) através de um link de banda estreita.
Sintaxe:
vim [arquivo]
O Vi possui 3 modos básicos de operação: comando, linha e edição.
174
PROGRAMA
TÉCNICO CIDADÃO
OBSERVAÇÃO
Em sistemas que possuem o Vim IMproved (vim) instalado, geralmente é criado um
alias do comando vi para vim.
Modo de comando
É o modo de operação padrão do Vi. Neste modo o editor interpreta os caracteres digitados
como comandos internos do editor e não como texto a ser inserido no arquivo. A falta de
compreensão deste modo geralmente causa maior frustração ao utilizar este editor. Os
comandos do Vi se dividem em 4 sub-categorias: movimentação, pesquisa, texto e edição,
vistos na tabela abaixo:
175
PROGRAMA
TÉCNICO CIDADÃO
Comandos de Movimentação
Comando
Descrição
k
Movimenta o cursor para cima.
j
Movimenta o cursor para baixo.
l
Movimenta o cursor para a direita.
h
Movimenta o cursor para a esquerda.
0 (zero)
Posiciona o cursor no início da linha.
$
Posiciona o cursor no final da linha.
G
Posiciona o cursor na Última linha do arquivo.
[CTRL]+[F]
Avança uma tela na rolagem de texto.
[CTRL]+[B]
Retroscede uma tela na rolagem de texto.
H
Posiciona o cursor na primeira linha da tela.
M
Posiciona o cursor na linha do meio da tela.
L
Posiciona o cursor na última linha da tela.
w
Posiciona o cursor no início da próxima palavra (ignora pontuação).
W
Posiciona o cursor no início da próxima palavra sem ignorar a pontuação.
b
Posiciona o cursos no início da palavra anterior (ignora pontuação)
B
Posiciona o cursor no início da palavra anterior sem ignorar a pontuação.
nG
Posiciona o cursor no início da linha n (Substituir “n” pelo número da linha
desejada).
176
PROGRAMA
TÉCNICO CIDADÃO
Comandos de Pesquisa
Comando
Descrição
f+c
Posiciona o cursor no próximo caractere “c” encontrado na linha. (Ex.: fp
posiciona o cursor sobre o próximo caractere p encontrado na linha.)
/palavra
Posiciona o cursor na próxima ocorrência da palavra pesquisada abaixo do
cursor.
?palavra
Posiciona o cursor na próxima ocorrência da palavra pesquisada acima do
cursor.
n
Prossegue a busca do último comando “/” ou “?” na próxima ocorrência.
Caso chegue ao final do arquivo, a pesquisa terá continuidade no início do
arquivo.
N
A mesma função que o comando N, porém faz a pesquisa na ordem inversa
da última pesquisa efetuada com “/” ou “?”.
[CTRL]+[G]
Mostra o nome, o número da linha atual e o total de linhas do arquivo.
177
PROGRAMA
TÉCNICO CIDADÃO
Comandos de Texto e Substituição
Comando
Descrição
x
Exclui o caractere que esteja abaixo do cursos.
dw
Exclui todo o texto da posição atual do cursor até o final da palavra.
yw
Copia todo o texto da posição atual do cursor até o final da palavra.
cw
Exclui todo o texto da posição atual do cursor até o final da palavra
e coloca o editor no modo de de edição.
dd
Exclui toda a linha atual. (Recorta)
yy
Copia toda a linha atual. (Recorta)
D
Exclui todo o texto da posição atual do cursor até o final da linha.
(Recorta)
Y
Copia todo o texto da posição atual do cursor até o final da linha.
rx
Substitui o caractere abaixo do cursor pelo caractere “x”. (Obs.:
Qualquer caractere pode ser utilizado, x é somente um exemplo).
cc
Limpa toda a linha em que o cursor se encontra e coloca o editor no
modo de edição.
R
Inicia o modo de “substituição de texto”. Para sair, pressione [ESC].
J
Une a linha atual à próxima linha.
p
Cola o texto que esteja em buffer após o cursor. (Obs.: Qualquer
comando de texto que exclua caracteres os envia para o buffer.)
v
Inicia o modo visual para seleção do texto a partir da posição atual
do cursor. Após selecionar o texto desejado. Utilize uma das teclas
como [y], [c] e [d] para copiar, substituir e recortar,
respectivamente, ou a tecla [v] novamente para fechar o modo
visual.
u
Desfaz o último comando.
[CTRL]+[R]
Refaz o último comando.
O modo de texto é uma forma prática de substituir, organizar e inserir texto sem utilizar o modo
de edição (sem precisar digitar texto). Uma característica importante desse modo é que todo o
178
PROGRAMA
TÉCNICO CIDADÃO
texto manipulado por esses comandos fica armazenado no buffer. Isso permite, por exemplo,
recortar uma linha inteira com o comando “dd” e colar na linha logo abaixo do cursor com o
comando “p”.
Modo de Edição
Ao entrarmos no modo de edição, tudo que digitarmos no teclado será enviado como texto para
o arquivo (O mais parecido possível com outros editores de texto). Para sair do modo de edição
e voltar ao modo de comando, utilizamos a tecla [ESC], até 2 vezes se assim for necessário.
Quando estamos no modo de edição, a string “--
INSERT --” é mostrada no canto inferior
esquerdo da tela. No modo de comando, nada é mostrado.
A partir do modo de comando, podemos utilizar quaisquer dos comandos da tabela abaixo para
iniciar o modo de edição:
Comandos para entrar no modo de edição
Comando
Descrição
o
Insere no início da linha abaixo do cursor.
cl
Apaga o caractere sob o cursor e inicia o modo de edição.
a
Insere após o cursor.
A
Insere no final da linha.
i
Insere na posição atual do cursor.
179
PROGRAMA
TÉCNICO CIDADÃO
Modo de linha
O Modo de linha é um modo onde se tem acesso a comandos especiais do vi. Para entrar em
modo de linha deve-se estar em modo de comando e pressionar “:” (Dois-pontos).
Principais comandos do modo de linha
Comando
Descrição
:e arquivo
Instrui o vi para abrir um arquivo para edição.
:w[!] [arquivo]
Salva o arquivo atual. Opcionalmente podemos colocar o nome
de outro arquivo para instruir o via salva o arquivo atual como
outro nome (Salvar Como...). Adicionar a exclamação “!” em
frente do comando (w!) força a operação.
:q[!]
Sai do arquivo sem salvar. Caso tenha feito alguma alteração o
Vi não deixará sair sem salvar, somente se utilizarmos a
exclamação (q!) para forçar a saída sem salvar o arquivo.
:r arquivo
Insere o conteúdo de outro arquivo a partir do cursor.
:x[!]
Sai do Vi e salva o arquivo atual. Também é possível utilizar a
exclamação para forçar a operação.
:s/antiga/nova/g
Substitui a string “antiga” pela string “nova” na linha atual. O
parâmetro “g” no final é opcional, e diz para o Vi continuar em
busca de substituições na mesma linha mesmo após a primeira
ocorrência.
:%s/antiga/nova/g
Substitui a string “antiga” pela string “nova” em todo o
documento atual. O parâmetro “g” no final é opcional, e diz
para o Vi continuar em busca de substituições na mesma linha
mesmo após a primeira ocorrência. O comportamento padrão
do Vi (sem o “g”) é proceder para a próxima linha caso substitui
alguma palavra)
:set number e :set no Ativa e desativa, respectivamente, a numeração de linhas do
arquivo.
number
:nohl
Desabilita o highlight que marca as palavras de alguma busca
efetuada anteriormente.
180
PROGRAMA
TÉCNICO CIDADÃO
Para voltar do modo de linha para o modo de comando basta pressionar ESC.
Dicas preciosas do Vim
Existem alguns “macetes” de sobrevivência do Vim, que devem estar na ponta da língua de um
administrador Linux. Uma dica importante é lembrar que sempre é possível desfazer as
alterações efetuadas em um arquivo, até um certo limite, com a tecla [u] no modo de comando.
Outra dica importante: Para os comandos de linha que interagem com o texto (substituição por
exemplo) é possível especificar um intervalo de linhas onde o comando terá efeito.
Digamos que você precise substituir a palavra gato pela palavra cachorro no arquivo em que
esteja editando, mas somente entre as linhas 100 e 154. A solução seria o seguinte comando de
linha:
:100,154s/gato/cachorro/g
Uma outra ocasião mais utilizada: Digamos que você precise comentar com o caractere “#” um
grande intervalo de linhas em um arquivo (pode ser maçante ficar fazendo isso linha por linha).
O comando de linha do vi abaixo resolveria facilmente o problema, nesse caso, das linhas 10
até 25 (faça com um arquivo grande para testar.
:10,25s/^/# /
O intervalo “10,25” dia para o comando atuar somente entre as linhas 10 e 25. O comando de
substituição irá substituir o início da linha (Representado pelo caractere “^”) pelo sinal de “#”
acrescido de um espaço. Pronto.
Também é possível editar dois ou mais arquivos na mesma tela. Tal proeza se torna verdadeira
com o comando :split. Por exemplo, digamos que você já esteja editando um arquivo e queira
abrir outro na mesma tela, dividindo a mesma ao meio. Basta utilizar o comando abaixo dentro
do Vim.
:split novoarquivo
181
PROGRAMA
TÉCNICO CIDADÃO
Para alternar entre as telas utilize a sequência de teclas [CONTROL]+[W]+[W].
182
PROGRAMA
TÉCNICO CIDADÃO
ARQUITETURA DE HARDWARE
Quando falamos de hardware, também falamos no nome que o software atribui ao seu
hardware.
O nome dos seus dispositivos por exemplo são diferentes, abaixo uma comparação entre Linux
e DOS
Dispositivo
Dispositivo
Linux
DOS
ttyS0
COM1
ttyS1
COM2
ttyS2
COM3
ttyS3
COM4
lp0
LPT1
lp1
LPT2
/dev/hda1
C:
/dev/hda2
D:*
/dev/hdb1
D: *
Os parâmetros usados para configurar o hardware no linux são a IRQ, I/O e DMA, porém há
dispositivos que só usem dois desses parâmetros.
As interrupções podem ser visualizadas através do arquivo /prov/interrupts
# cat /proc/interrupts
183
PROGRAMA
TÉCNICO CIDADÃO
CPU0
0:
824407
XT-PIC timer
1:
20276
XT-PIC keyboard
2:
0
XT-PIC cascade
4:
141947
XT-PIC serial
5:
86091
XT-PIC SiS 7018 PCI Audio
8:
3
XT-PIC rtc
11:
9485
XT-PIC usb-ohci, usb-ohci, eth0
14:
69121
XT-PIC ide0
15:
4
XT-PIC ide1
NMI:
0
LOC:
824417
ERR:
128
MIS:
0
Estas são as interrupções que se estão utilizando em minha maquina.
Abaixo uma breve explicação sobre as interrupções.
IRQ 0 - saída do temporizador (8254)
IRQ 1 - controlador usado para teclado
IRQ 2 - cascata para IRQ8–IRQ15 no PC-AT
IRQ 3 - porta serial secundária, geralmente/dev/ttyS1
IRQ 4 - porta serial primária, geralmente /dev/ttyS0
IRQ 5 - livre (era a interrupção do HD no XT)
IRQ 6 - controlador de disquetes /dev/fd0
IRQ 7 - porta paralela (para impressora, /dev/lp0)
IRQ 8 - rtc
IRQ 9 - interrupção de software (int 0x0A), redireciona para IRQ2
IRQ 10 - livre
IRQ 11 - livre
184
PROGRAMA
TÉCNICO CIDADÃO
IRQ 12 - Mouse PS/2
IRQ 13 - livre
IRQ 14 - controlador IDE primário (/dev/hda, /dev/hdb)
IRQ 15 - controlador IDE secundário (/dev/hdc, /dev/hdd)
setserial
Esta é uma ferramenta para relatar e reportar as configurações das portas seriais do
computador, isso inclui numero de IRQ, I/O.
Com ela você também pode mudar as configurações de IRQ, portas e etc.
Por exemplo:
Para ver as configurações de uma das portas seriais, digite:
# setserial /dev/ttyS1
/dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3
Você pode mudar o numero de irq a ser usado apenas digitando o comando.
# setserial /dev/ttyS1 irq <numero> port <numero>
Agora vamos ver as configurações da porta serial /dev/ttyS1 e mudar o irq e a porta dela
# setserial /dev/ttyS1
/dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3
Vimos que a irq dela é 3 e a porta 0x02f8, agora vamos mudar para irq 4 e porta 0x03e8.
185
PROGRAMA
TÉCNICO CIDADÃO
# setserial /dev/ttyS1 irq 4 port 0x3e8
# setserial /dev/ttyS1
/dev/ttyS1, UART: unknown, Port: 0x03e8, IRQ: 4
Isto pode ser muito útil em relação a conflito de hardware, dispositivos que estejam por exemplo usando o
mesmo irq.
A opção -a imprime na tela todas as informações do dispositivo
Os endereços de I/O porem ser visualizados através do arquivo /proc/ioports
# cat /proc/ioports
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : ide1
01f0-01f7 : ide0
0376-0376 : ide1
0378-037a : parport0
03c0-03df : vga+
03f6-03f6 : ide0
03f8-03ff : serial(set)
0cf8-0cff : PCI conf1
4000-400f : Silicon Integrated Systems [SiS] 5513 [IDE]
4000-4007 : ide0
4008-400f : ide1
186
PROGRAMA
TÉCNICO CIDADÃO
d000-dfff : PCI Bus #01
d000-d07f : Silicon Integrated Systems [SiS] SiS630 GUI Accelerator+3D
e000-e0ff : PCI device 1039:7013 (Silicon Integrated Systems [SiS])
e400-e47f : PCI device 1039:7013 (Silicon Integrated Systems [SiS])
e800-e8ff : Silicon Integrated Systems [SiS] SiS PCI Audio Accelerator
e800-e8ff : SiS 7018 PCI Audio
ec00-ecff : Realtek Semiconductor Co., Ltd. RTL-8139
ec00-ecff : 8139too
187
PROGRAMA
TÉCNICO CIDADÃO
PARTICIONAMENTO E SISTEMAS DE ARQUIVOS
Neste capítulo aprenderemos como lidar com a tabela de partições, definir um correto esquema
de particionamento e aplicar o sistema de arquivos mais adequado a cada situação.
Particionamento
Antigamente, quando o conceito de particionamento ainda não existia, um sistema era disposto
em todo o disco rígido (isso não significa que ele ocupava todo o espaço), não permitindo
utilizarmos melhor o espaço disponível na mídia de armazenamento.
A tabela de partições
Com o advento dos discos rígidos, também surgiu o particionamento, que é a capacidade de se
“repartir” um disco rígido em diversas fatias de dados, chamadas partições. Essa divisão dos
dados é possível “até hoje” devido a tabela de partições.
Imagine o disco rígido como um grande repositório de dados binários (e é realmente o que ele
é). A tabela de partições tem a função de dizer onde começa, onde termina e qual o tipo de
sistema de arquivos de determinada partição. Ela fica localizada em uma área específica no
início do disco rígido, onde o sistema operacional pode ler e saber a localização de todas as
partições.
Inicialmente, só era possível criar 4 partições em um disco rígido. Onde cada uma delas poderia
receber seu próprio sistema de arquivos diferente.
Exemplo:
+---------------+----------------+---------------+---------------+
|
Partição 1
|
Partição 2
|
Partição 3
| Partição 4
|
+---------------+----------------+---------------+---------------+
188
PROGRAMA
TÉCNICO CIDADÃO
Com o tempo, tornou-se necessário um número maior de partições, e foi aí que definiram os
tipos de partições: primárias, extendida e lógicas.
Partições primárias
As partições primárias são as partições que geralmente recebem um sistema operacional, e
costumam ficar situadas no início de um disco particionado. Foram os primeiros tipos de
partições “inventadas”, no tempo em que só poderiam existir apenas 4 partições. Essa
limitação existe até hoje com esse tipo de partição, pois só podem haver 4 partições primárias
em um disco rígido. Caso haja necessidade de ter mais partições em um sistema, é necessário
conhecer os outros 2 tipos de partições: extendida e lógicas.
Uma partição primária pode receber dados (sistemas de arquivos), mas não outras partições
diretamente.
A partição extendida
Para sanar o problema de limitação de até 4 partições no disco, foi desenvolvida a partição
primária, que não pode receber dados (sistemas de arquivos) diretamente, mas sua finalidade é
alojar “sub-partições”, as chamadas partições lógicas.
Não pode existir mais de uma partição extendida no mesmo disco rígido.
As partições lógicas
Como complemento à partição extendida, foram desenvolvidas as partições lógicas, que não
passam de simples partições alojadas dentro de uma partição extendida. Uma partição lógica
pode receber sistemas de arquivos normalmente, assim como uma partição primária, e seu
principal motivo de existência é a necessidade de se ter mais do que 4 partições num disco
rígido.
189
PROGRAMA
TÉCNICO CIDADÃO
Por exemplo, se precisarmos ter 6 partições em um disco rígido, criaríamos: 3 primárias, 1
extendida e mais 3 lógicas dentro da extendida.
Repare que não se deve considerar a partição extendida como uma partição válida, visto que
ela não recebe dados diretamente, somente por intermédio de partições lógicas.
Vejamos como isso ficaria:
+---------+---------+---------+----------------------------------------+
|
|
|
| Primária1 | Primária2|
|
|
|
|
Extendida
|
Primária3|----------------------------------------+
| Lógica1
|
Lógica2
| Lógica3
|
+---------+---------+---------+----------------------------------------+
Conseguimos ter 6 partições de dados no mesmo disco rígido. O limite de partições lógicas no
disco rígido é de 12 partições, o que limita um disco à ter no máximo 15 partições de dados
mais uma extendida.
Endereçamento e geometria dos discos rígidos
Um assunto que deve ser de bom conhecimento de qualquer administrador de sistemas. É
preciso compreender como a BIOS do computador e o sistema operacional efetuam o
mapeamento dos dados em um disco rígido. É com base no endereçamento ou na geometria do
disco que o sistema operacional sabe onde estão os arquivos nas partições arquivos.
Existem duas formas de mapeamento de dados: LBA e CHS.
190
PROGRAMA
TÉCNICO CIDADÃO
Modo LBA de endereçamento
É o método plano (de 1 dimensão) mais simples, moderno e funcional que um sistema tem para
mapear os dados em um disco rígido. O que ocorre basicamente é o seguinte: a BIOS do
computador endereça todo o disco rígido em vários “pedacinhos” que costumam ter 512bytes
de tamanho cada um. Cada pedacinho desse recebe um número de identificação, e é chamado
de bloco.
Dessa forma, quando um sistema operacional compatível com LBA (O Linux é) precisa escrever
ou ler dados em determinada parte do disco rígido, ele se localiza pelo respectivo bloco LBA.
Modo CHS de geometria
Este é o modo mais antigo, complexo e limitado de mapeamento de dados dos discos rígidos. O
método CHS baseia-se num fator de 3 dimensões para mapear os dados no disco rígido. As 3
dimensões são: cilindros (cylinders), cabeças (heads) e setores (sectors).
Esse modo impõe algumas limitações que devem ser observadas, como o limite dos 1024
cilindros que assola computadores antigos, onde a bios não consegue mapear mais do que
1024 cilindros, 256 cabeças e 63 setores, o que impõe a limitação de 8.4gb ao disco, que
mesmo sendo maior do que isso, a BIOS só conseguirá “enxergar” essa quantidade de dados.
Algumas BIOS mais antigas ainda possuem uma limitação ainda maior, que é de 1024 cilindros,
16 cabeças e 63 setores, o que totaliza um limite de 528mb para discos rígidos.
É importante conhecer esses limites pois o kernel do linux deve estar disposto em uma
partição /boot separada de todo o restante e no início do disco, para garantir que essa partição
seja visível pela BIOS, e conseqüentemente pelo gestor de boot.
A única barreira que devemos nos importar em romper é a de permitir que o gerenciador de
boot consiga carregar o kernel, pois uma vez que o controle é dado ao sistema operacional
Linux, ele consegue “enxergar” toda a capacidade do disco rígido, independente do tamanho
191
PROGRAMA
TÉCNICO CIDADÃO
observado na BIOS. Isso permite, por exemplo, utilizarmos discos maiores do que 8.4gb em
micros Intel 586, como os Pentium MMX.
Particionando o disco rígido com fdisk
O fdisk é o utilitário do Linux responsável por gerenciar a tabela de partições. Existem outras
“encarnações” de fdisk em sistemas operacionais como o MS DOS®, por exemplo, mas são
completamente diferentes do nosso fdisk do Linux.
No linux o utilitário fdisk somente lida com a tabela de partições, e não é capaz de criar
sistemas de arquivos. Este é um procedimento que veremos adiante.
Sintaxe:
fdisk [opção] [dispositivo de bloco]
Onde “dispositivo de bloco” é um disco rígido (como /dev/hda ou /dev/sdc, por exemplo), na
maioria das vezes.
O comando suporta poucas opções (pelo menos “do lado de fora”). Uma delas é a opção -l, que
exibe a tabela de partições de determinado dispositivo dado como argumento, ou de todos os
dispositivos conhecidos. A opção -s mostra o tamanho, em blocos, de determinado dispositivo
ou partição.
Para entrarmos no modo interativo do utilitário fdisk, basta especificar um dispositivo de blocos
válido.
Exemplo:
# fdisk /dev/hda
O número de cilindros para este disco está configurado para 238216.
Não existe nada de errado, mas isto é maior que 1024,
e pode em certas configurações causar problemas com:
192
PROGRAMA
TÉCNICO CIDADÃO
1) programas que executam em tempo de inicialização (versões velhas do lilo)
2) inicialização e programas de particionamento de outros OSs
(p.ex., DOS FDISK, OS/2 FDISK)
Comando (m para ajuda):
Na tela inicial do fdisk, caso o disco possua mais do que 1024 cilindros, seremos presenteados
com a mensagem de alerta acima.
O fdisk funciona com base em letras especiais que definem comandos. Digite [M] (seguido de
enter...) para visualizar a tela de ajuda.
A tela de ajuda mostra os comandos possíveis com o fdisk.
Comando - ação
a alterna a opção "inicializável"
b edita rótulo BSD no disco
c alterna a opção "compatibilidade"
d exclui uma partição
l lista os tipos de partição conhecidos
m mostra este menu
n cria uma nova partição
o cria uma nova tabela de partições DOS vazia
p mostra a tabela de partições
q sai sem salvar as alterações
s cria um novo rótulo de disco Sun vazio
t altera a identificação da partição para o sistema
u altera as unidades das entradas mostradas
v verifica a tabela de partições
w grava a tabela no disco e sai
x funcionalidade adicional (somente para usuários avançados)
Vamos agora seguir um passo a passo para excluir, adicionar e modificar o tipo de uma
partição.
NOTA
Somente o usuário root pode utilizar o fdisk.
193
PROGRAMA
TÉCNICO CIDADÃO
No prompt do fdisk, utilize a opção [p] para mostrara tabela de partições, que no meu sistema,
tem o seguinte aspecto:
Comando (m para ajuda): p
Disk /dev/hda: 122.9 GB, 122942324736 bytes
16 heads, 63 sectors/track, 238216 cylinders
Units = cilindros of 1008 * 512 = 516096 bytes
Dispositivo Boot
Start
End
Blocks Id System
/dev/hda1 *
1
40640 20482528+ 83 Linux
/dev/hda2
40641
238216 99578304 f W95 Ext'd (LBA)
/dev/hda5
40641
237214 99072823+ 8e Linux LVM
/dev/hda6
237215
238216
504976+ 82 Linux swap
Repare na coluna “Id”, que mostra o código que identifica o tipo de sistema de arquivos
presente na partição. O Linux conta com diversos tipos, dos quais os principais são: 83 para
partições de dados e 82 para partições swap.
É importante lembrar que todas as alterações feitas na tabela de partições só terão efeito se
utilizarmos a opção [w] do fdisk, que salva as alterações.
Antes de criar uma partição, é preciso ter espaço “não particionado” no disco e não infringir as
regras dos tipos de partições (Tentar criar 5 partições primárias, por exemplo). No exemplo,
vamos excluir uma partição antes de criar uma outra.
Comando (m para ajuda): d
Número da partição (1-6): 6
Comando (m para ajuda): p
Disk /dev/hda: 122.9 GB, 122942324736 bytes
16 heads, 63 sectors/track, 238216 cylinders
Units = cilindros of 1008 * 512 = 516096 bytes
Dispositivo Boot
Start
End
Blocks Id System
194
PROGRAMA
TÉCNICO CIDADÃO
/dev/hda1 *
/dev/hda2
/dev/hda5
1
40641
40641
40640 20482528+ 83 Linux
238216 99578304 f W95 Ext'd (LBA)
237214 99072823+ 8e Linux LVM
Utilizamos a opção [d] para apagar a partição 6 do dispositivo /dev/hda.
Agora vamos criar uma nova partição no espaço não particionado, logo depois vamos modificar
seu tipo para 82 (Partição SWAP).
Comando (m para ajuda): n
Comando - ação
l lógica (5 ou superior)
p partição primária (1-4)
l
Primeiro cilindro (237214-238216, default 237214):
Using default value 237214
Último cilindro ou +tamanho ou +tamanho M ou +tamanho K (237214-238216, default 238216):
Using default value 238216
Comando (m para ajuda): p
Disk /dev/hda: 122.9 GB, 122942324736 bytes
16 heads, 63 sectors/track, 238216 cylinders
Units = cilindros of 1008 * 512 = 516096 bytes
Dispositivo Boot
Start
End
Blocks Id System
/dev/hda1 *
1
40640 20482528+ 83 Linux
/dev/hda2
40641
238216 99578304 f W95 Ext'd (LBA)
/dev/hda5
40641
237214 99072823+ 8e Linux LVM
/dev/hda6
237214
238216
505102+ 83 Linux
Comando (m para ajuda): t
Número da partição (1-6): 6
Código hexadecimal (digite L para listar os códigos): 82
O tipo da partição 6 foi alterado para 82 (Linux swap / Solaris)
Comando (m para ajuda): p
Disk /dev/hda: 122.9 GB, 122942324736 bytes
16 heads, 63 sectors/track, 238216 cylinders
195
PROGRAMA
TÉCNICO CIDADÃO
Units = cilindros of 1008 * 512 = 516096 bytes
Dispositivo Boot
Start
End
Blocks Id System
/dev/hda1 *
1
40640 20482528+ 83 Linux
/dev/hda2
40641
238216 99578304 f W95 Ext'd (LBA)
/dev/hda5
40641
237214 99072823+ 8e Linux LVM
/dev/hda6
237214
238216
505102+ 82 Linux swap / Solaris
Comando (m para ajuda): q
Ao criarmos uma nova partição, o fdisk nos questiona, se possível, sobre qual será o tipo de
partição (primária, extendida ou lógica), ou não pergunta quando a única alternativa for
“lógica”. Também somos questionados sobre o tamanho desejado da partição, com base em
qual setor do disco ela começa e qual ela termina. Geralmente o setor de início não é
preocupação, pois o fdisk assume o primeiro livre, o último, caso não queiramos ocupar todo o
espaço disponível, pode ser especificado em megabytes, por exemplo, no formato +XXXM,
onde “XXX” é o tamanho desejado em MB para a partição.
Sistemas de arquivos
Quando já se tem um espaço particionado, ele ainda não está pronto para receber dados, pois
precisa de um sistema de arquivos.
Um sistema de arquivos “prepara o terreno” da partição para que ela possa receber dados
(arquivos e diretórios), pois é o sistema de arquivos que gerencia a localização dos arquivos na
partição. Ele faz isso subdividindo a determinada partição em blocos menores denominados
clusters.
No Linux, os sistemas de arquivos são, na sua maioria, baseados em inodes. Inodes são uma
espécie de índice numérico para os arquivos no sistema, e já foram estudados na primeira
apostila.
196
PROGRAMA
TÉCNICO CIDADÃO
O Linux é compatível com uma vasta gama de sistemas de arquivos, até mesmo de outros
sistemas, como FAT32 ou NTFS. Mas os principais sistemas de arquivos nativos do Linux são:
ext2, ext3 e reiserfs.
Antes de prosseguir, é preciso conhecer um pouco sobre cada um desses sistemas de arquivos
para que possamos selecionar qual melhor se encaixa em determinada situação.
O sistema de arquivos ext2: O início de tudo
Esta é a segunda versão do sistema de arquivos extendido do Linux. A primeira que fez
sucesso.
É o sistema de arquivos básico para Linux, suporta quotas, acl's, etc. Mas tem um grande
problema que mais tarde foi suprido pelo ext3: O sistema de arquivos precisava ser verificado
sempre que havia uma queda de energia.
Esse problema se torna crítico e serviu como obstáculo para o Linux em grandes corporações e
data centers, pois o sistema perdia muito tempo durante a inicialização para a verificação. E
quanto maior eram as partições, mais tempo era perdido.
O sistema de arquivos ext3: A revolução
Funciona de forma semelhante ao ext2. Internamente, são até muito parecidos, até compatíveis
entre si. A grande diferença é que o ext3 corrige o maior problema do ext2 com um recurso
chamado journaling.
Funcionamento do journaling
O journaling é um recurso presente em diversos sistemas de arquivos, não só no ext3. Quando
um sistema de arquivos conta com journaling, todos os dados que entram na fila de escrita são
“anotados” no journaling antes da operação (alguns sistemas adicionam outros diferenciais
197
PROGRAMA
TÉCNICO CIDADÃO
mais complicados, mas isso não vem ao caso agora). Quando a operação de cada um deles é
concluída, os dados são removidos do journaling. Resumidamente, o journaling armazena
informações sobre o as operações de escrita que estão para ocorrer.
Caso ocorra uma queda de energia ou qualquer outra coisa que venha a parar o sistema no
meio de uma operação de escrita, ao ser reiniciado, o sistema de arquivos verifica as
informações que “ficaram” no journaling e então somente as áreas afetadas por essas
operações marcadas no journaling que serão verificadas pelo utilitário fsck (estudado adiante).
O journaling não torna as operações de escrita mais lentas a ponto de causar perca de
performance que justifique o ganho de confiabilidade.
É importante lembrar que o journaling desses sistemas de arquivos por padrão convive na
mesma partição que os dados, e ocupa um determinado espaço para isso.
O sistema de arquivos reiserfs: Nascido para ser rápido
Esse sistema de arquivos só se assemelha com o ext2/3 pelo fato de serem ambos sistemas de
arquivos, pois internamente eles são bem distintos.
O reiserfs utiliza um algoritmo interno (que geralmente é o chamado r5, r6 ou o rupasov.) para
ordenar os nomes de arquivos pelo sistema. O que o torna muito rápido com arquivos pequenos
e uma grande quantidade de arquivos no mesmo sistema.
Ele também conta com journaling, como o ext3.
Criando um sistema de arquivos
Utilizamos o comando mkfs para criar sistemas de arquivos em partições ou outros dispositivos
de blocos (como um disquete, por exemplo).
198
PROGRAMA
TÉCNICO CIDADÃO
O mkfs possui um sub-comando para cada sistema de arquivos suportado pela distribuição. Por
exemplo, para criar sistemas de arquivos ext3, utilizamos o comando mkfs.ext3, já para
reiserfs, utilizamos mkfs.reiserfs.
Vamos utilizar um disquete de 1.44” para nosso exemplo.
Antes de se criar um sistema de arquivos num disquete, é preciso formatá-lo com o comando
fdformat. Levando em consideração que queremos formatar a unidade /dev/fd0, utilizamos:
# fdformat -n /dev/fd0
A opção -n instrui ao utilitário para não verificar por bad-blocks no disquete.
Agora, para formatar o disquete com o sistema de arquivos ext21, utilizamos:
# mkfs.ext2 /dev/fd0
Esse passo é exatamente igual para partições, basta apontar para a partição que deseja
formatar, como /dev/hda6, por exemplo.
Definindo um ponto de montagem
O termo “ponto de montagem” precisa ser muito bem compreendido por todos que pretendem
seguir carreira com sistemas Linux. O conceito é bem simples de compreender, trata-se de
associar algum diretório (geralmente vazio) no sistema com um dispositivo de blocos, dessa
forma, os dados enviados para este diretório serão gravados no respectivo dispositivo de
blocos. É o tamanho do dispositivo que irá definir a quantidade máxima de dados que
determinado diretório (ponto de montagem) irá comportar.
1 Não é possível ter um sistema de arquivos com journaling em um disquete, devido ao pouco espaço disponível.
199
PROGRAMA
TÉCNICO CIDADÃO
DICA
Saber definir corretamente pontos de montagem para partições de tamanhos corretos em áreas críticas do sistema ajuda a diminuir possíveis falhas no sistema, tornando-o mais seguro.
Essa associação entre um diretório e um dispositivo de blocos recebe o nome de montagem.
Para cumprir essa tarefa, utilizamos o comando mount (consulte a man page para maiores
detalhes sobre sistemas de arquivos).
Sintaxe:
mount [opção] [dispositivo] [ponto de montagem]
Portanto, vamos utilizar o comando mount para montar o disquete recém-formatado no
diretório /floppy (ou /mnt/floppy em sistemas RedHat like)
# mount /dev/fd0 /floppy
# df -h
# mount
O comando df -h exibe informações sobre os sistemas de arquivos montados, assim como a
utilização de cada um. O comando mount, sem nenhum argumento, mostra uma lista com
detalhes dos sistemas de arquivos montados.
Para
desmontar
um
sistema
de
arquivos,
basta
executar
o
comando
umount
/
ponto/de/montagem ou umount dispositivo, conforme abaixo:
# umount /floppy
O umount não permite desmontarmos dispositivos que estejam em uso. Portanto, não tente
desmontar caso esteja no ponto de montagem do dispositivo desejado.
200
PROGRAMA
TÉCNICO CIDADÃO
Só se pode remover o disquete da unidade quando ele estiver “desmontado”. Contrariar essa
regra pode causar perda de dados. Isso ocorre porque os dados enviados para um ponto de
montagem de um disquete ou alguns tipos de unidades de rede não são gravados
imediatamente na mídia. Para forçar um “sincronismo” momentâneo e gravar os dados
pendentes no disquete, utilize o comando sync, sem parâmetros.
O arquivo /etc/fstab
Este arquivo serve de configuração para os pontos de montagem fixos do sistema. Toda vez
que adicionarmos uma nova partição de dados no sistema, esse arquivo deve ser editado para
as novas necessidades.
Os pontos de montagem são definidos um por linha nesse arquivo, da seguinte forma:
/dev/hda1
/
reiserfs defaults
0
1
São 6 colunas que “devem” estar preenchidas para que a entrada funcione. Da primeira para a
última, os significados das colunas são: Dispositivo de bloco, ponto de montagem, sistema de
arquivos, opções de montagem (consulte a man page para as opções disponíveis para cada
sistema de arquivos), dump (Se o dispositivo pode ou não ter backup através do dump) e o
nível de passagem.
Nível de passagem define em que ordem os sistemas de arquivos devem ser verificados pela
ferramenta fsck durante a inicialização, do menos para o maior. O valor 0 desabilita a
checagem.
Todo ponto de montagem presente nesse arquivo pode ser montado com menos opções, pois o
mount automaticamente busca as outras opções no arquivo.
201
PROGRAMA
TÉCNICO CIDADÃO
Verificando a integridade de sistemas de arquivos
Para verificar a integridade de um sistema de arquivos no Linux, utilizamos a ferramenta fsck.
ATENÇÃO
O fsck não deve ser utilizado em sistemas de arquivos montados em modo de leitura e escrita. Isso pode causar danos irreversíveis à eles.
Sintaxe:
fsck [opções] dispositivos
Tabela de opções
-C
-A
-R
Exibe progresso da verificação.
Verifica todos os dispositivos encontrados em /etc/fstab.
-V
Utilizado junto à opção -A. Diz ao fsck para ignorar a verificação do dispositivo que
contenha o sistema de arquivos raiz.
Modo “verbose”. Exibe mais informações sobre os comandos sendo executados.
-r
-y
Força o fsck a rodar interativamente. Pedindo confirmações para todas as questões.
Responde yes (Sim) para todas as questões automaticamente. Utilize com cuidado.
Exemplo:
# fsck -y /dev/fd0
Gerenciando quotas de sistemas de arquivos
As quotas de sistemas de arquivos existem para que o administrador possa limitar a utilização
do recurso mais difícil de se prever em um ambiente computacional: o armazenamento.
202
PROGRAMA
TÉCNICO CIDADÃO
Elas não vêm habilitadas por padrão, só o que precisamos é possuir um kernel, um sistema de
arquivos que suporte quotas e um utilitário para gerenciar quotas. O ext2 e 3 suportam quotas.
O suporte a quotas do reiserfs ainda não está adicionado nos kernel's padrão do Linux, mas
existem patches na internet que possibilitam isso.
Partindo do princípio que o o sistema já possuam uma partição com suporte a quotas e um
kernel também com suporte, basta instalar o utilitário que permite gerenciarmos as quotas.
No Debian, o pacote que provê esse suporte chama-se quota, portanto, um apt-get install
quota deve resolver o problema.
Habilitando as quotas
O primeiro passo é habilitar as quotas, que podem ser por usuários ou por grupos, no respectivo
ponto de montagem em /etc/fstab.
Para habilitar quotas para usuários, adicione a opção usrquota ao ponto de montagem. Para
grupos, a opção é grpquota.
Abaixo adicionamos as duas opções à uma entrada do arquivo /etc/fstab:
/dev/sdb1
/home ext3
defaults,usrquota,grpquota
0
1
Agora basta montar e habilitar finalmente as quotas para o ponto de montagem.
# mount /home
# quotacheck -acvug
quotacheck: Scanning /dev/sdb1 [/home] done
quotacheck: Checked 3 directories and 20 files
quotacheck: Old file not found.
quotacheck: Old file not found.
Este último comando deve ser rodado periodicamente para garantir a integridade das quotas.
203
PROGRAMA
TÉCNICO CIDADÃO
Configurando quotas p/ usuários e grupos
Contamos com o utilitário edquota para configurar as quotas. Para editar as quotas de um
usuário, utilizamos:
# edquota -u fulano
Disk quotas for user fulano (uid 1000):
Filesystem
blocks
soft
hard inodes soft hard
/dev/sdb1
84
0
0
21
0
0
Ao executar o comando, entramos em uma espécie de edição de arquivo, onde podemos
visualizar o quanto em blocos (múltiplo de 1024bytes, ou 1KB) e inodes o usuário está
consumindo e definir dois limites para ambos: O “soft limit” e o “hard limit”.
O soft limit costuma ser um limite inferior e próximo ao limite máximo de utilização de espaço
de armazenamento. Quando um usuário atinge seu soft-limit, desde que ainda esteja abaixo do
hard-limit, ele entra em um período chamado “grace time”, que por padrão é 7 dias, mas pode
ser modificado com o comando edquota -t.
O hard-limit é o limite máximo de utilização de armazenamento.
os limites soft e hard existem tanto para a utilização de espaço em disco quanto para a
utilização de inodes, como podem ver no arquivo de quota do usuário.
Para editar as quotas para um grupo, utilizamos: edquota -g grupo
Verificando as quotas
Para listar a utilização das quotas, utilizamos o comando repquota -a (Mostra de todos os
pontos de montagem com quotas habilitadas).
Para garantir a correta integridade das quotas, sempre execute o comando quotacheck -av.
204
PROGRAMA
TÉCNICO CIDADÃO
Adicionando uma nova swap
É necessário aprender a adicionar uma nova swap no sistema. Mas antes de mais nada, você
sabe o que é uma swap?
Uma partição swap é um espaço de troca que completa o sistema de memória virtual do Linux,
junto com a memória ram e as memórias cache do(s) processador(es). A soma de todas essas
memórias é o que forma a “memória virtual”, que é o que fica visível para os processos em
execução, e o sistema operacional cuida de definir onde escrever “fisicamente” os dados, na
memória ram ou na swap.
No Linux, isso funciona da seguinte forma: Os dados que os programas requerem da memória
virtual são sempre providos da memória ram ou cache. Caso algum programa requisite dados
que estejam numa partição swap, esses dados são “trocados” por dados ociosos na memória
ram. Por isso que o tamanho da swap deve ser no mínimo igual a memória ram.
Algumas vezes, pode ser necessário adicionar mais espaço de swap a um sistema a fim de
aumentar sua memória virtual, se bem que isso não é uma boa prática, o melhor mesmo é
adicionar mais memória ram ao sistema.
Existem duas maneiras de adicionarmos swap no sistema: através de 1 nova partição swap (o
que geralmente é difícil, pois nem sempre há espaço em disco disponível) ou através de um
arquivo de swap, que trata-se de um arquivo especial situado em um sistema de arquivos (ext3
por exemplo) montado.
Como os procedimentos são praticamente os mesmos para os dois casos, iremos optar pelo
modo de arquivo.
Primeiro precisamos criar um arquivo “vazio” que seja do tamanho desejado para a swap
(confuso não?), veja como é fácil:
# dd if=/dev/zero of=/swap bs=1024 count=128000
128000+0 registros de entrada
128000+0 registros de saída
205
PROGRAMA
TÉCNICO CIDADÃO
A função do comando dd é “copiar bits de um lado (if) para outro (of). Estamos tirando bits de /
dev/zero (que é um dispositivo especial que serve à esse propósito) e os enviando para o
arquivo /swap, com 128000 blocos de 1024 (1KB) de tamanho cada um. Faça as contas e
descubra o tamanho de nosso futuro arquivo de swap.
# mkswap /swap
Setting up swapspace version 1, size = 131067904 bytes
# cat /proc/swaps
Filename
Type
Size Used Priority
/dev/sda1
partition
64256 2244 -1
Utilizamos o comando mkswap para “formatar” o arquivo /swap no formato de swap. O
arquivo /proc/swaps nos dá informações sobre quais dispositivos de swap estão ativos no
momento. Repare que o arquivo ainda não está listado.
# swapon /swap
# cat /proc/swaps
Filename
/dev/sda1
/swap
Type
Size Used Priority
partition
64256 2244 -1
file
127992 0
-2
Agora sim, após utilizar o comando swapon finalmente ativamos nosso arquivo de swap.
Vejamos abaixo como desabilitar uma swap:
# swapoff /swap
# cat /proc/swaps
Filename
/dev/sda1
Type
partition
Size Used Priority
64256 2244 -1
Pronto. É muito simples: swapon “liga a swap” e swapoff “desliga”.
DICA
Para ativar uma swap na inicialização, configure-a no arquivo /etc/fstab.
206
PROGRAMA
TÉCNICO CIDADÃO
COMPACTADORES E ARQUIVADORES
Um termo muito comum no mundo GNU/Linux é “compactadores”.São um grupo de ferramentas
especializadas em “compactar” arquivos, tal como o Winzip2 faz no Windows®.
Iremos aprender a distinção entre essas ferramentas e as características de cada algoritmo de
compressão que eles utilizam.
Os principais compactadores existentes no GNU/Linux são: gzip e bzip2
Veremos também o que significa o termo “arquivadores” e porque a ferramenta GNU “tar” é um
deles, e como ela se relaciona com os compactadores, possibilitando a execução de backups do
sistema.
Compactadores
Compactadores são os programas que “apenas” compactam os arquivos. A grande diferença
entre compactadores e arquivadores deve ser bem observada: “Os compactadores não
agrupam diversos arquivos em um; Somente compactam separadamente”.
A ferramenta gzip
O gzip é uma das principais ferramentas GNU. Ele surgiu para ser o “zip do Linux”, porém, seu
algoritmo de compressão não é compatível com o algoritmo do zip, originalmente desenvolvido
p/ DOS e é utilizado até hoje em sistemas de 32 bits Microsoft® (Winzip, por exemplo).
Gzip significa “GNU zip”, e seu algoritmo de compressão já é bem superior ao do zip.
Sintaxe:
gzip [opção] [-S sufixo] [arquivo...]
O sufixo, nesse caso, é o texto que será agregado ao final do nome do arquivo após
compactado. O padrão (se ignorarmos o sufixo) é “.gz”, uma espécie de extensão que
identificaria o arquivo como sendo compactado pelo gzip.
2 O Winzip é um compactador e arquivador.
207
PROGRAMA
TÉCNICO CIDADÃO
ATENÇÃO
Após compactado, o arquivo original é sobrescrito, não restando uma cópia compactada no sistema. Somente depois de descompactar é que o arquivo volta e o compactado desaparece.
Tabela de Parâmetros
-c --stdout
-d --decompress
-f --force
-h --help
-l --list
-L --license
-n --no-name
-N --name
-q --quiet
-r --recursive
-t --test
-v --verbose
-V --version
-1 --fast
-9 --best
--rsyncable
Escreve na saída padrão, não altera o arquivo original.
Descompacta o arquivo.
Força a operação.
Exibe a ajuda.
Lista o conteúdo de um arquivo compactado.
Mostra a Licença do programa.
Não salva ou restaura o nome original e tempos de acesso do arquivo.
Salva ou restaura o nome original e tempos de acesso do arquivo.
Exibe menos informações na tela.
Age recursivamente em diretórios (Não compacta diretórios, somente
os arquivos contidos nele recursivamente).
Testa a integridade de um arquivo compactado.
Exibe mais informações na tela.
Mostra a versão do programa.
Utiliza algoritmo de compressão simples. É mais rápido, porém
compacta menos.
Utiliza algoritmo de compressão avançado. É mais demorado, porém
compacta melhor.
Cria arquivos compatíveis com o utilitário rsync.
Exemplo A:
$ mkdir /tmp/teste-gzip ; cp -var /etc/*.conf /tmp/teste-gzip
$ gzip -v -5 /tmp/teste-gzip/*.conf
$ ls /tmp/teste-gzip
$ gzip -v -d /tmp/teste-gzip/*.gz
208
PROGRAMA
TÉCNICO CIDADÃO
Exemplo B:
$ cat /etc/passwd |gzip > ~/passwd.gz
$ file ~/passwd.gz
~/passwd.gz: gzip compressed data, from Unix
Exemplo muito interessante sobre como trabalhar com fluxos. Enviamos o fluxo de texto do
arquivo /etc/passwd para a stdout e emendamos com o gzip através de um pipe. O gzip gera
os dados em formato binário para a saída padrão dele, a qual redirecionamos para um arquivo
de saída.
DICA
É possível utilizar o comando gunzip para descompactar arquivos gzip também. Ele
funciona como um “gzip -d”.
A ferramenta bzip2
Surgiu para ser o substituto do gzip. Serve ao mesmo propósito, porém possui um algoritmo de
compressão muito mais eficiente, pois comprime muito mais. A diferença “interna” é que o
bzip2 trabalha com blocos de dados, por isso o “b” no início do nome.
Na verdade o bzip2 é uma suíte de ferramentas, que consiste em 4 programas: bzip2,
bunzip2, bzcat e bzip2recover.
O bzip2 é o compactador em si, assim como o bunzip2 é o descompactador. bzcat exibe o
conteúdo de arquivos compactados pelo bzip2 e também serve para descompactar. o
bzip2recover serve para recuperar arquivos bzip2 corrompidos.
Sintaxe:
bzip2 [opções] [arquivos...]
bunzip2 [-fkvsVL] [arquivos...]
bzcat [-s] [arquivo...]
209
PROGRAMA
TÉCNICO CIDADÃO
bzip2recover arquivo
Tabela de Parâmetros
-c --stdout
-d --decompress
-f --force
-k --keep
-s --small
-L --license
-z --compress
-q --quiet
-r --recursive
-t --test
-v --verbose
-V --version
-1 --fast
-9 --best
Escreve na saída padrão, não altera o arquivo original.
Descompacta o arquivo.
Força a operação.
Mantém arquivos de entrada.
Utiliza menos memória.
Mostra a Licença do programa.
Força compressão.
Exibe menos informações na tela.
Age recursivamente em diretórios (Não compacta diretórios, somente
os arquivos contidos nele recursivamente).
Testa a integridade de um arquivo compactado.
Exibe mais informações na tela.
Mostra a versão do programa.
Utiliza algoritmo de compressão simples. É mais rápido, porém
compacta menos.
Utiliza algoritmo de compressão avançado. É mais demorado, porém
compacta melhor.
Exemplo:
$ mkdir /tmp/teste-bzip2 ; cp -var /etc/*.conf /tmp/teste-bzip2
$ bzip2 -v -5 /tmp/teste-bzip2/*.conf
$ ls /tmp/teste-bzip2
$ bzip2 -v -d /tmp/teste-bzip2/*.bz2
210
PROGRAMA
TÉCNICO CIDADÃO
Arquivadores
Arquivadores são programas capazes de “juntar” diversos arquivos e diretórios em um só
arquivo. Os mais conhecidos para linux são as ferramentas GNU cpio e tar. Estudaremos aqui o
tar.
A ferramenta tar
O tar é a ferramenta de backup mais conhecida no mundo Linux. Ele é capaz de arquivar
diversos arquivos em um só, onde o arquivo de destino pode ser um simples arquivo no disco
rígido ou uma unidade de fita, formando uma ótima ferramenta de backup.
Sintaxe:
tar [opções] [arquivos...]
211
PROGRAMA
TÉCNICO CIDADÃO
Tabela de Parâmetros
-c
-x
-t
-v
-f arquivo.tar
-p
-P
-z
-j
-r
-u
-A
--help
Diz ao tar para “criar” um arquivo de backup, que deve ser especificado
na opção -f.
Instrui ao tar para extrair um arquivo tar, que também deve ser
especificado pela opção -f.
Testa arquivo tar, especificado pela opção -f.
Modo “verbose”. Mostra mais informações sobre a operação atual.
Especifica qual o arquivo o tar irá trabalhar. No caso da opção -c, caso
não exista, o arquivo será criado.
Diz ao tar para preservar as permissões dos arquivos dentro do arquivo
tar. Geralmente não é necessário, pois o tar costuma ter esse
comportamento por padrão.
Instrui o tar a “preservar” a barra “/” no início do nome dos arquivos. Por
padrão, o tar “remove” a “/” no início dos nomes de arquivos que
populem um arquivo tar, tornando-os todos os caminhos relativos.
Ativa o algoritmo de compressão gzip no arquivo especificado pela opção
-f. Não pode ser utilizado em conjunto com a opção -j (algoritmo bzip2).
Ativa o algoritmo de compressão bzip2 no arquivo especificado pela
opção -f. Não pode ser utilizado em conjunto com a opção -z (algoritmo
gzip).
Anexa arquivos no final de um arquivo tar.
Atualiza o conteúdo de arquivos tar.
Concatena outros arquivos tar em um arquivo tar.
Exibe ajuda.
Exemplo:
# tar -cvf /tmp/backup.tar /etc
# mkdir /tmp/restore
# cd /tmp/restore/
# tar -tvf /tmp/backup.tar
# tar -xpvf /tmp/backup.tar
Efetuamos o backup de todo o diretório /etc no arquivo /tmp/backup.tar. Basta que o arquivo de
destino seja um dispositivo de fita, como /dev/st0 por exemplo, para efetuarmos um backup em
212
PROGRAMA
TÉCNICO CIDADÃO
uma unidade de fita. Ao extrairmos o backup, foi criado o diretório etc dentro do diretório atual
(/tmp/restore).
As famosas tarballs
Muita gente já deve ter ouvido falar de tarballs mas não sabe ao certo o que vem a ser uma
delas, ou pelo menos não sabe como criá-las. As tarballs são simples de entender e de lidar,
pois são arquivos normais do tar (Um arquivador....), compactados com algum algoritmo de
compactação como gzip ou bzip2. Para lidar com tarballs, basta ativar a opção -z (gzip) ou -j
(bzip2) do tar.
No exemplo abaixo, vamos fazer praticamente o mesmo que o exemplo anterior, porém
ativando um algoritmo de compactação.
Exemplo A:
#
#
#
#
#
tar -cvzf /tmp/backup.tar.gz /etc
mkdir /tmp/restore
cd /tmp/restore/
tar -tvzf /tmp/backup.tar.gz
tar -xpvzf /tmp/backup.tar.gz
Repare que todas as operações do tar somente foram acrescidas da opção -z, que ativa o
algoritmo de compressão gzip, e é utilizado inclusive junto da opção -t, que testa o arquivo tar.
Quanto ao nome dos arquivos, é de costume associar a extensão .tar.gz ou .tgz para arquivos
“arquivados “ pelo tar e compactados pelo algoritmo do gzip, e a extensão .tar.bz2 ou .tbz
para arquivos “arquivados” pelo tar e compactados pelo algoritmo do bzip2.
Exemplo B:
#
#
#
#
tar -cvjf /tmp/backup.tar.bz2 /etc
mkdir /tmp/restore
cd /tmp/restore/
tar -tvjf /tmp/backup.tar.bz2
213
PROGRAMA
TÉCNICO CIDADÃO
# tar -xpvjf /tmp/backup.tar.bz2
214
PROGRAMA
TÉCNICO CIDADÃO
PROCESSO DE INICIALIZAÇÃO
É importante compreender tudo que envolve o processo de inicialização de um sistema Linux.
Isso ajuda muito quando for preciso diagnosticar algum problema durante a inicialização, por exemplo.
O processo de inicialização consiste basicamente em 3 Etapas: Inicialização do hardware pela
BIOS, carregamento do gestor de boot (responsável por carregar o kernel) e os processos de init.
A inicialização do hardware feita pela bios consiste no POST (Power On Self Test) e na busca de
informações de boot no MBR (Master Boot Record) do dispositivo que estiver configurado como
inicializável na BIOS.
+-----------+
|
BIOS
+-----------+
|------->|
+-----------+
MBR
+---------------------+
|-------->|
+-----------+
Processos de init |
+---------------------+
|
+----------------+
| Gestor de Boot
|
+----------------+
Gerenciadores de boot
Um gerenciador é um software que geralmente fica instalado no MBR de um disco rígido e tem
a finalidade de gerenciar a carga de sistemas operacionais. No caso do Linux, o gestor de boot
tem a missão de carregar o kernel do para a memória e entregar o comando para o sistema
operacional. Essa etapa do processo exige que o administrador tenha conhecimento sobre um
gestor de boot no Linux. Existem 2 gestores de boot mais famosos para Linux: o lilo e o grub.
215
PROGRAMA
TÉCNICO CIDADÃO
LILO
Esse gestor de boot é bem maduro e oferece configuração simples. A maioria das distribuições
já optou ou ainda opta por ele, pois algumas já estão definindo o grub como gestor de boot
padrão.
Abordaremos uma configuração básica do lilo, que permita o sistema inicializar e cumprir seu
dever.
Configurando o lilo
A configuração do lilo consiste em apenas 1 arquivo, o /etc/lilo.conf. É nesse arquivo que
definimos as opções que desejamos para o boot. Seguem um exemplo de um típico lilo.conf:
lba32
boot=/dev/sda
root=/dev/sda2
install=/boot/boot-menu.b
map=/boot/map
delay=20
vga=normal
append=”pci=bios”
default=Linux
image=/vmlinuz
label=Linux
read-only
A opção lba32 diz ao lilo que o sistema está utilizando o modo de endereçamento de disco LBA.
A opção boot especifica em qual dispositivo instalar o gestor de boot.
A opção root configura qual o dispositivo que contém o sistema de arquivos raiz do sistema. O
gestor de boot precisa saber disso para que seja possível localizar o programa /sbin/init,
necessário para dar continuidade ao processo de inicialização.
216
PROGRAMA
TÉCNICO CIDADÃO
A opção install especifica qual será o arquivo binário do gestor de boot que deverá ser
instalado. O lilo costuma contar com 3, todos dentro do diretório /boot: boot-menu.b, boot-
text.b e boot.b. A diferença entre eles é o menu que aparece na inicialização. Se essa opção
for omitida, o lilo assume /boot/boot.b.
A opção map especifica o caminho para o arquivo de mapa de dos dispositivos. Esse arquivo já
acompanha o lilo e não deve ser preocupação.
A opção delay especifica o tempo, em “décimos de segundos” que o lilo aguardará até carregar
a imagem padrão.
A opção vga configura qual será a resolução do console após carregar o kernel. Se o seu kernel
suportar framebuffer, tente valores como vga=771 (800x600), ou vga=773 (1024x768).
A opção append permite passarmos parâmetros de inicialização para o kernel.
A opção default indica qual será a imagem padrão.
Podem existir mais de uma entrada do tipo “image” no arquivo. Cada uma delas refere-se a um
sistema operacional (podem ser vários kernel's para o mesmo sistema). Essa opção aponta para
o arquivo de kernel do Linux, que nesse caso aponta para um link simbólico presente em todos
os sistemas Debian (/vmlinuz).
Após editar o arquivo conforme suas necessidades, podemos testá-lo, antes de mais nada, com
o comando:
# lilo -t
Added Linux *
The boot sector and the map file have *NOT* been altered.
Uma vez que o comando não tenha apresentado nenhum erro, podemos prosseguir com a
instalação do gestor de boot, basta digitar o comando:
# lilo
217
PROGRAMA
TÉCNICO CIDADÃO
Added Linux *
Nesse momento, o lilo leu as configurações do arquivo /etc/lilo.conf e gravou no dispositivo
especificado na opção boot.
Agora basta reiniciar o sistema e testar.
Restaurando o setor de boot
Sempre que o lilo altera o setor de boot do disco (O MBR por exemplo), é feita uma cópia do
original no arquivo /boot/boot.0300. Basta retornar esse arquivo para a MBR que tudo estará
resolvido.
Lembrando que a MBR fica localizada no início do HD, mais especificamente nos primeiros
512bytes. Podemos utilizar o comando dd para tal façanha:
dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1
GRUB
GRUB é um gestor de boot mais recente com mais recursos que o lilo. A principal diferença
entre o lilo e o grub, além dos arquivos de configuração, é que o grub não requer que o setor de
boot seja regravado sempre que modifique alguma configuração. Os arquivos de configuração
do grub ficam localizados no diretório /boot/grub por padrão.
ATENÇÃO
O grub não costuma vir instalado por padrão em algumas distribuições. Se for esse
o caso, instale o pacote que provém o grub para sua distribuição. No Debian, o pacote se chama “grub”.
218
PROGRAMA
TÉCNICO CIDADÃO
O principal arquivo de configuração é o /boot/grub/menu.lst, onde definimos a aparência e as
opções disponíveis no gestor de boot.
Segue um exemplo de um arquivo /boot/grub/menu.lst:
default=0
timeout=10
splashimage=(hd1,0)/grub/splash.xpm.gz
title Primeira Opção
root (hd1,0)
kernel /arquivo_do_kernel ro vga=771 root=/dev/hda2
initrd /arquivo_da_initrd.img
title Segunda Opção
root (hd1,0)
kernel /arquivo_do_kernel2 ro vga=771 root=/dev/hda2
initrd /arquivo_da_initrd-2.img
As 3 primeiras linhas contemplam a seção global do arquivo, e definem, respectivamente, qual
será a opção padrão de inicialização (Conta-se a partir do 0), quanto tempo (em segundos)
deve-se esperar por interação do usuário até que seja carregada a opção padrão, e qual o
arquivo de imagem que será mostrado na tela do grub.
As outras entradas do arquivo são as entradas de boot, que definem as opções que ficam
selecionáveis no menu do grub. Cada uma dessas entradas consiste em um “bloco de
configuração” que começa com a diretiva “image”. O exemplo acima possui 2 dessas entradas.
Vamos analisar as opções presente nesse tipo de entrada:
title Primeira Opção
root (hd0,0)
kernel /arquivo_do_kernel ro vga=771 root=/dev/hda2
initrd /arquivo_da_initrd.img
Todo o texto localizado após a opção “title” é o texto que será exibido no menu de seleção do
grub.
219
PROGRAMA
TÉCNICO CIDADÃO
Para que possamos especificar caminhos de arquivos nas próximas opções do grub, precisamos
definir qual será a partição que o grub irá procurar os dados; fazemos isso com a opção “root”.
Repare que a partição foi especificada de uma maneira proprietária do grub: (hd0,0). Isso
acontece porque o grub utiliza uma nomenclatura própria de dispositivos para facilitar sua
configuração.
Vejamos na tabela abaixo como o grub se comporta nesse aspecto:
Sistema de dispositivos do GRUB
(hd0)
(hd0,0)
(fd0)
(hd3,2)
Primeiro disco rígido disponível (hda ou sda)
Primeira partição do primeiro disco disponível (hda1 ou sda1)
/dev/fd0
Terceira partição do quarto disco rígido (hdd3 ou sdd3)
DICA
Caso o sistema possua discos de tecnologia diferentes associados, como SCSI e IDE,
pode ser necessário editar o arquivo /boot/grub/device.map para definir quais serão os
respectivos dispositivos no grub.
O parâmetro “kernel” especifica qual será o arquivo do kernel associado com aquela entrada de
boot, lembrando que a principal finalidade de um gestor de boot no Linux é carregar um Kernel
e entregar o restante do processo de inicialização ao sistema operacional recém-carregado.
Repare que são passados alguns parâmetros de inicialização para o kernel (todos esses na
mesma linha). O mais importante desses parâmetros é o parâmetro root, que especifica qual
será a partição que contém o sistema de arquivos raiz, pois é lá onde o kernel irá procurar pelo
programa /sbin/init, que é o próximo passo do processo de inicialização.
Ás vezes é necessário especificar a opção “initrd”, que aponta para um arquivo de initrd para o
respectivo kernel. Uma initrd é um arquivo que contém módulos necessários para que o kernel
220
PROGRAMA
TÉCNICO CIDADÃO
consiga “enxergar” o restante do sistema de arquivos e dar procedência ao processo de
inicialização. Exemplos desses módulos são “controladoras de disco” e “sistemas de arquivos”.
Instalando o GRUB no MBR
Para gravar o sistema do grub no MBR, contamos com o utilitário grub-install, que é bem
simples de utilizar, basta especificar o dispositivo em que será gravado o grub, dessa forma:
# grub-install /dev/hda
Isso instalará o grub no MBR do disco rígido.
Com o grub instalado e tudo configurado corretamente, o usuário deve ser presenteado com
um menu para a seleção das entradas de boot configuradas no arquivo /boot/grub/menu.lst.
Neste menu, podemos editar “temporariamente” as opções das entradas de inicialização
pressionando a tecla [E] sobre uma delas. As outras teclas de navegação são mostradas no
rodapé da tela.
O processo de init
A terceira etapa de inicialização se dá início assim que o gestor de boot consegue carregar o
kernel e passa o controle ao sistema operacional (O kernel...) do restante do processo.
A missão agora é configurar os dispositivos do sistema e inicializar os programas que estiverem
marcados para tal.
Logo após o kernel ser carregado, ele tenta montar “como somente leitura” a partição raiz do
sistema, que foi especificada através do parâmetro “root” durante a inicialização pelo gestor de
boot.
221
PROGRAMA
TÉCNICO CIDADÃO
Assim que a partição raiz estiver montada, o kernel procura e executa o programa /sbin/init,
com base nas opções encontradas no arquivo /etc/inittab, para inicialmente definir o “Nível
de execução” do Kernel.
O que são runlevels (Níveis de execução)?
O Kernel do Linux trabalha com os chamados níveis de execução, ou runlevels, que é uma
maneira organizada e robusta de definir que tipo de trabalho será exercido com o sistema.
O Linux conta com 7 níveis de execução, contados de 0 a 6. Cada nível instrui o Kernel a agir de
uma forma diferente, conforme tabela abaixo:
Níveis de execução
0
Modo “shutdown”. Envia um sinal para o Kernel finalizar e desligar o sistema.
1
2a5
6
Modo “Monousuário”. Desabilita a habilidade multiusuário do Kernel; muito
utilizado em manutenções do sistema, pois só permite que um usuário utilize o
sistema de cada vez (o root). note que isso também impossibilita que certos
programas entrem em execução.
Modos multiusuário. São os níveis padrão de execução do Linux, onde o Kernel
não desabilita nenhuma característica importante.
Modo “reboot”. Envia um sinal para o Kernel finalizar e reiniciar o sistema.
É de extrema importância que o administrador conheça bem quais são e para que serve os
níveis de execução.
DICAS
Podemos, a qualquer momento, utilizar o comando runlevel para descobrir que o nível de execução atual e também utilizar o comando init <nível desejado> para instruir o kernel a trocar o nível de execução atual.
222
PROGRAMA
TÉCNICO CIDADÃO
O arquivo /etc/inittab
Este é, logo após o próprio kernel, o arquivo mais importante dessa etapa da inicialização. É
nele que se encontram os parâmetros que guiam o sistema por todo o restante do processo.
Cada entrada nesse arquivo tem o seguinte aspecto:
identificação:runlevels:ação:comando
Identificação é uma string qualquer, geralmente pequena (1 ou 2 caracteres) e que não se deve
repetir para nenhuma outra entrada no arquivo. Sua finalidade é identificar a entrada no
arquivo.
O campo “runlevels” especifica em que níveis de execução a linha deve ser analisada.
Já o campo “ação” especifica como deve ser o comportamento do comando executado no
último campo. O campo “ação” aceita palavras-chave que determinam essa característica.
Exemplos de palavras-chave são: “respawn” diz ao init para reiniciar o comando quando ele for
finalizado; “boot” instrui o init a inicializar o processo durante o boot, ignorando o campo
“runlevels”.
Vejamos um exemplo do /etc/inittab em um sistema Debian típico:
# grep ^[^#] /etc/inittab |nl
1 id:2:initdefault:
2 si::sysinit:/etc/init.d/rcS
3 ~~:S:wait:/sbin/sulogin
4 l0:0:wait:/etc/init.d/rc 0
5 l1:1:wait:/etc/init.d/rc 1
6 l2:2:wait:/etc/init.d/rc 2
7 l3:3:wait:/etc/init.d/rc 3
8 l4:4:wait:/etc/init.d/rc 4
9 l5:5:wait:/etc/init.d/rc 5
10 l6:6:wait:/etc/init.d/rc 6
11 z6:6:respawn:/sbin/sulogin
12 ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
223
PROGRAMA
TÉCNICO CIDADÃO
13
14
15
16
17
18
19
20
21
pf::powerwait:/etc/init.d/powerfail start
pn::powerfailnow:/etc/init.d/powerfail now
po::powerokwait:/etc/init.d/powerfail stop
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6
As linhas foram numeradas e os comentários foram suprimidos para facilitar a leitura.
O programa init lê uma por uma as entradas e executa as operações adequadas. Na linha 1 é
definido o nível de execução padrão do sistema, na segunda linha é invocado o script /
etc/init.d/rcS, que desencadeia a estrutura de inicialização dos scripts cujo nome inicie com
“S” no diretório /etc/rcS.d; A linha 3 é um adicional de segurança que impede acesso ao
sistema no modo monousuário (O runlevel S é igual 1) sem autenticação como root.
As linhas 4 à 10 dão procedimento a inicialização dos serviços do sistema para cada runlevel
(Repare que comente um desses será executado, pois cada um equivale a um runlevel). Mais
detalhes sobre esse processo em seguida.
Na linha 12 é configurado um “trap” para a seqüência de teclas [CONTROL]+[ALT]+[DEL],
onde o comando shutdown será invocado para reiniciar o PC. Essa linha pode ser comentada ou
editada para as necessidades do administrador.
As linhas 13, 14 e 15 configuram como o sistema deve agir no caso de falta de energia3.
As últimas linhas do arquivo configuram os terminais que estarão disponíveis após a
inicialização. Repare a palavra-chave “respawn” nessas linhas... ela é responsável por
disponibilizar novamente outro terminal quando saímos de um.
3 É necessário um sistema de UPS (No-break) gerenciado para que isso possa funcionar.
224
PROGRAMA
TÉCNICO CIDADÃO
Estrutura de inicialização de serviços
Essa parte do processo de inicialização que requer mais atenção tem algumas diferenças
principais
entre
algumas
distribuições
Linux.
Basicamente,
existem
dois
modelos
de
inicialização de serviços: SysV e BSD.
A maioria das distribuições utilizam o sistema SYSV como padrão (RedHat, Debian, Suse,
Mandrake, Conectiva, etc...), e são poucos os que utilizam o sistema BSD de inicialização
(Somente o Slackware até onde conheço). Portanto, estudaremos o sistema SYSV nesse tópico.
Nesse sistema de inicialização, após ser definido o nível de execução através do arquivo /
etc/inittab e o os scripts de configuração terem entrado em ação (Linhas 1 e 2 do arquivo), a
entrada específica do /etc/inittab cuidará de chamar o script /etc/init.d/rc.
O script /etc/init.d/rc
Esse script é responsável por executar, na ordem correta, os scripts contidos no diretório de
inicialização de serviços do runlevel atual.
É simples saber qual é esse diretório. Existe 1 diretório para cada nível de execução, onde
devem estar contidos links para os “reais” scripts de inicialização para cada serviço em /
etc/init.d.
Os diretórios de inicialização de serviços
Esses diretórios são, geralmente, /etc/rc?.d, onde “?” é o número do nível de execução. Por
exemplo, para o nível 2 de execução, o diretório é /etc/rc2.d.
O script executa, em ordem alfabética, todos os arquivos que iniciam com “S” dentro do
diretório do respectivo nível de execução. Vejamos o conteúdo desse diretório em um sistema
real:
225
PROGRAMA
TÉCNICO CIDADÃO
# cd /etc/rc2.d
# ls -l
lrwxrwxrwx 1 root
lrwxrwxrwx 1 root
lrwxrwxrwx 1 root
lrwxrwxrwx 1 root
lrwxrwxrwx 1 root
lrwxrwxrwx 1 root
lrwxrwxrwx 1 root
lrwxrwxrwx 1 root
lrwxrwxrwx 1 root
lrwxrwxrwx 1 root
lrwxrwxrwx 1 root
lrwxrwxrwx 1 root
lrwxrwxrwx 1 root
lrwxrwxrwx 1 root
lrwxrwxrwx 1 root
lrwxrwxrwx 1 root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
18
15
26
15
14
14
18
16
16
20
17
21
14
13
19
23
2004-12-03 19:46 S10sysklogd -> ../init.d/sysklogd
2004-12-03 19:46 S11klogd -> ../init.d/klogd
2004-12-04 10:34 S19progress.service -> ../init.d/progress.service
2004-12-04 10:34 S20acpid -> ../init.d/acpid
2004-12-04 10:34 S20alsa -> ../init.d/alsa
2004-12-04 10:34 S20apmd -> ../init.d/apmd
2005-01-06 14:45 S20cpufreqd -> ../init.d/cpufreqd
2004-12-21 22:47 S20cupsys -> ../init.d/cupsys
2004-12-04 10:34 S20dbus-1 -> ../init.d/dbus-1
2004-12-04 10:37 S20irqbalance -> ../init.d/irqbalance
2004-12-03 19:46 S20makedev -> ../init.d/makedev
2004-12-04 10:34 S25progress.up -> ../init.d/progress.up
2004-12-03 19:46 S89cron -> ../init.d/cron
2004-12-04 10:36 S99gdm -> ../init.d/gdm
2004-12-03 19:46 S99rmnologin -> ../init.d/rmnologin
2004-12-03 19:46 S99stop-bootlogd -> ../init.d/stop-bootlogd
O comando “ls -l” já mostra a lista na mesma ordem de execução, e podemos ter uma base
sobre o que ocorre nessa parte da inicialização. Repare que todas as entradas são links
simbólicos para os scripts contidos em /etc/init.d.
DICA
O número contido no nome dado aos links para cada serviço é conhecido como número de prioridade do serviço, pois por estar em ordem alfabética, os serviços com
número de prioridade menor executarão primeiro.
226
PROGRAMA
TÉCNICO CIDADÃO
SERVIDOR GRÁFICO X-WINDOW
Comumente referenciado como “Interface Gráfica do Linux”, o servidor gráfico é um componente
muito complexo e importante do sistema.
Atualmente existem 2 versões de servidor gráfico para Linux: XFree86 e X.org.
Ambos são configurados da mesma forma, e pelo menos até agora, não existem diferenças drásticas de configuração entre eles.
Funcionamento
A primeira coisa realmente importante nesse assunto é saber distinguir o que vem a ser
“servidor gráfico” e “gerenciador de janelas”.
O sistema X-WINDOW é considerado um sistema cliente-servidor porque realmente ele é. A
função do servidor gráfico é ter configurados ao menos os 4 dispositivos essenciais para gestão
gráfica (teclado, mouse, monitor e placa de vídeo) e disponibilizar acesso a esses recursos
através de uma conexão de rede.
Inclusive os processos gráficos locais utilizam uma conexão de rede para que as aplicações
gráficas (clientes do X-WINDOW) obtenham acesso aos 4 dispositivos.
Configurando o XFree86
O arquivo de configuração do XFree86 é /etc/X11/XF86Config-4. É nele que definimos a
resolução, profundidade de cores e monitor, por exemplo.
Vejamos um exemplo desse arquivo:
Section "Files"
FontPath
# if the local
FontPath
FontPath
FontPath
"unix/:7100"
# local font server
font server has problems, we can fall back on these
"/usr/lib/X11/fonts/misc"
"/usr/lib/X11/fonts/cyrillic"
"/usr/lib/X11/fonts/100dpi/:unscaled"
227
PROGRAMA
TÉCNICO CIDADÃO
FontPath
FontPath
FontPath
FontPath
FontPath
FontPath
EndSection
"/usr/lib/X11/fonts/75dpi/:unscaled"
"/usr/lib/X11/fonts/Type1"
"/usr/lib/X11/fonts/CID"
"/usr/lib/X11/fonts/Speedo"
"/usr/lib/X11/fonts/100dpi"
"/usr/lib/X11/fonts/75dpi"
Section "Module"
#
Load "GLcore"
Load "bitmap"
Load "dbe"
Load "ddc"
#
Load "dri"
Load "extmod"
Load "freetype"
#
Load "glx"
Load "int10"
Load "record"
Load "speedo"
Load "type1"
Load "vbe"
EndSection
Section "InputDevice"
Identifier
"Generic Keyboard"
Driver
"keyboard"
Option
"CoreKeyboard"
Option
"XkbRules"
"xfree86"
Option
"XkbModel"
"abnt2"
Option
"XkbLayout"
"br"
Option
"XkbVariant" "abnt2"
EndSection
Section "InputDevice"
Identifier
"Configured Mouse"
Driver
"mouse"
Option
"CorePointer"
Option
"Device"
"/dev/psaux"
Option
"Protocol"
"PS/2"
Option
"Emulate3Buttons"
"true"
228
PROGRAMA
TÉCNICO CIDADÃO
Option
EndSection
"ZAxisMapping"
"4 5"
Section "Device"
Identifier
"NVIDIA"
Driver
"nv"
EndSection
Section "Monitor"
Identifier
"Monitor Genérico"
HorizSync
31.5-70
VertRefresh
50-120
Option
"DPMS"
EndSection
Section "Screen"
Identifier
"Default Screen"
Device
"NVIDIA"
Monitor
"Monitor Genérico"
DefaultDepth 24
SubSection "Display"
Depth
24
Modes
"1152x864"
EndSubSection
EndSection
Section "ServerLayout"
Identifier
"Default Layout"
Screen
"Default Screen"
InputDevice
"Generic Keyboard"
InputDevice
"Configured Mouse"
EndSection
A configuração é definida em seções, como InputDevice para teclado e mouse, Monitor para o
monitor, Device para placa de vídeo e Screen para a aparência da tela.
A seção ServerLayout define quais seções fazem parte da estrutura de configuração.
229
PROGRAMA
TÉCNICO CIDADÃO
DICA
Para configurar esse arquivo no Debian, o dpkg disponibiliza um ótimo helper. Digite
“dpkg-reconfigure xserver-xfree86” para acioná-lo.
Inicializando o XFree86
Após configurado, já podemos utilizar o comando startx (nenhum outro servidor gráfico deve
estar rodando no momento) para inicializar o servidor gráfico.
Para se ter algo mais funcional, precisamos de um ambiente desktop completo (gerenciador de
janelas) e um gerenciador de login. Para instalar os pacotes necessários no Debian, utilize:
dselect install gnome-desktop-environment
Isso instalará os componentes principais do gnome junto com seu gerenciador de login, o gdm.
Após os pacotes instalados e configurados, basta iniciar o serviço gdm para ter acesso a um
ambiente gráfico completo e funcional.
Acessando o XFree86 através da rede
Devido a natureza “network” do servidor gráfico XFree86, é possível efetuar uma conexão a
outro servidor gráfico, permitindo que um aplicativo executado localmente utilize dos recursos
gráficos de outra máquina.
Para habilitar tal característica, é preciso que o ip do host que tentará a conexão seja liberado
no host de destino, com o comando:
# xhost +192.168.X.X
Onde 192.168.X.X é o endereço IP do host que tentará a conexão com esta máquina.
Agora, no host que originará a conexão, é preciso exportar a variável DISPLAY para que
redirecione as chamadas gráficas para o outro host. Vejamos:
230
PROGRAMA
TÉCNICO CIDADÃO
$ echo $DISPLAY
:0.0
$ export DISPLAY=”192.168.Y.Y:0.0”
Onde 192.168.Y.Y é o ip do servidor ao qual pretende se conectar.
A partir de agora, todo cliente gráfico que for inicializado nesse host será executado pelo
servidor gráfico no computador de destino. Faça o teste.
231
PROGRAMA
TÉCNICO CIDADÃO
AGENDAMENTO DE TAREFAS
Na gama de conhecimento de um administrador de sistemas GNU/Linux é essencial constar
“Agendamento de Tarefas”, uma atividade muito importante que facilita bastante a vida de qualquer administrador.
No Linux, contamos com diversos programas que lidam com agendamento de tarefas, mas o principal deles é o cron.
Cron
O cron é um programa que roda em background (um daemon) e cuida de executar tarefas préagendadas por usuários do sistema periodicamente através das chamadas crontabs.
Existem, basicamente, 3 maneiras diferentes de se agendar uma tarefa utilizando o cron. Podese editar diretamente o arquivo de configuração /etc/crontab, adicionar um script em um dos
diretórios de agendamento do cron (/etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly e /
etc/cron.d) ou através do comando crontab. Veremos as diferenças.
O arquivo /etc/crontab
Esse é o arquivo principal de configuração do cron. Somente o usuário root tem permissão para
editar esse arquivo diretamente. Esse arquivo pode receber 2 tipos de entradas: Variáveis de
ambiente que serão válidas para os comandos agendados no CRON e entradas de
agendamento, que devem seguir o padrão abaixo:
m h d M s usuario comando
No exemplo acima, cada um dos 5 primeiros campos tem um significado que influencia
diretamente na periodicidade do agendamento. Vejamos o significado de cada um desses
campos:
232
PROGRAMA
TÉCNICO CIDADÃO
Significado dos campos
m
h
d
M
s
Minuto (0 a 60)
Hora (0 a 23)
Dia do mês (1 a 31)
Mês do ano (1 a 12)
Dia da semana (0 a 7, sendo que 0 e 7 é domingo)
Dessa forma, basta agendar uma linha de agendamento para cada evento desejado.
Vamos verificar alguns exemplos de agendamentos:
35 0 * * *
Diariamente, às 0:35.
*/5 8-18 * * 1-5
De segunda a sexta, a cada 5 minutos durante o horário comercial.
10,50 */2 1 3 *
A cada 2 horas, nos minutos 10 e 50, sempre no dia 1 de março.
ATENÇÃO
Para que qualquer tipo de agendamento funcione, é preciso que o daemon do cron
(crond) esteja em execução.
Diretórios de agendamento do cron
O cron possui agendamentos pré-configurados no arquivo /etc/crontab, cada um deles com
uma periodicidade diferente. Cada uma dessas entradas também está associada a um diretório
diferente.
233
PROGRAMA
TÉCNICO CIDADÃO
Os diretórios são: /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly e /etc/cron.monthly,
que executam, respectivamente, de hora em hora, diariamente, semanalmente e mensalmente
os scripts lá postos.
Por exemplo. Para se ter um script de backup sendo executado diariamente pelo cron, é
possível colocá-lo (ou até mesmo um link simbólico) no diretório /etc/cron.daily.
O diretório /etc/cron.d
Também é possível agendar tarefas no cron criando-se arquivos de agendamento no diretório /
etc/cron.d. Estes arquivos devem seguir o mesmo formato que as entradas de agendamento
do arquivo /etc/crontab.
Agendamentos definidos pelos usuários
Através do comando crontab, é possível que usuários comuns do sistema (Isso inclui o root)
consigam agendar tarefas. As tarefas agendadas pelos usuários comuns do sistema só podem
ser agendadas e visualizadas por eles mesmos e o root, sempre.
Sintaxe:
crontab [-u usuário] arquivo
crontab [-u usuário] { -e | -l | -r }
A opção -u permite que o root gerencie crontabs de outros usuários. A opção -e (edit) abre o
modo de edição da crontab para o usuário. A opção -l (list) mostra a crontab do usuário na tela
e a opção -r (release) limpa a respectiva crontab.
Ao invocar o crontab com a opção -e, é aberto o editor padrão (geralmente o vim) para permitir
editar o arquivo de crontab do usuário, que só pode ser editado dessa forma.
234
PROGRAMA
TÉCNICO CIDADÃO
A grande diferença de se agendar tarefas dessa forma é que não precisamos especificar a qual
usuário o agendamento se refere na linha de configuração, pois a crontab inteira pertence a
determinado usuário.
Vejamos um exemplo:
$ crontab -e
0 0 * * * /home/usuario/bin/script.sh
:wq
crontab: installing new crontab
$ crontab -l
0 0 * * * /home/apostila/bin/script.sh
$ crontab -r
$ crontab -l
no crontab for usuario
Controle de acesso ao cron
O cron conta com um sistema de controle de acesso, que permite restringir quem tem
permissões para agendar tarefas no sistema.
Esse controle é feito através de dois arquivos: /etc/cron.allow e /etc/cron.deny.
Nenhum destes arquivos existe por padrão. Caso o arquivo /etc/cron.allow exista, somente os
usuários que estejam listados nele (um por linha) poderão agendar tarefas com o cron.
(inclusive o root !!!). Caso esse arquivo não exista, mas existe o arquivo /etc/cron.deny, este
servirá de lista negra dos usuários que não terão acesso ao cron.
DICAS
É uma boa prática de segurança criar um arquivo /etc/cron.allow para limitar e ter
mior controle sobre quem terá acesso ao cron.
235
PROGRAMA
TÉCNICO CIDADÃO
236
PROGRAMA
TÉCNICO CIDADÃO
BIBLIOTECAS COMPARTILHADAS
O sistema GNU/Linux é estruturado de forma que bibliotecas de funções de código presentes em
determinados programas possam ser compartilhadas para utilização em qualquer outro programa
que saiba fazer uso delas, criando um repositório de funções de código.
Imagine o programa A, que possui bibliotecas com funções de criação de objetos gráficos na tela,
como janelas, por exemplo. Agora imagine o programa B, que “Oferece uma interface gráfica”
para determinadas tarefas administrativas do sistema. Nesse caso, o programa A compartilha
suas bibliotecas com o restante do sistema, e o programa B utiliza algumas delas para prover as
funções de acesso a interface gráfica.
As bibliotecas compartilhadas são uma das maiores responsáveis pelo sucesso das ferramentas
Linux hoje em dia, pois permite que um programador junte características já existentes de outros
programas à suas criações.
Trabalhando com bibliotecas compartilhadas
Apesar de parecer um termo complicado, trabalhar com bibliotecas compartilhadas é
extremamente simples. É preciso saber em quais diretórios elas costumam estar, quais
bibliotecas determinado binário utilizam e saber adicionar novas bibliotecas no sistema.
Localização das bibliotecas compartilhadas
Por padrão, os programas instalados já adicionam as bibliotecas em seus devidos diretórios, que
geralmente são: /lib, /usr/lib e /var/lib.
Listando Bibliotecas disponíveis
Para listar todas as bibliotecas disponíveis e a localização de cada uma, utilize o comando:
# ldconfig -p
Esse comando mostrará uma lista gigante das bibliotecas.
237
PROGRAMA
TÉCNICO CIDADÃO
Descobrindo quais bibliotecas um binário utiliza
É possível saber quais bibliotecas compartilhadas determinado binário necessita para funcionar.
Basta utilizar o comando ldd, da seguinte forma:
# ldd /bin/tar
librt.so.1 => /lib/tls/librt.so.1 (0xb7fd4000)
libc.so.6 => /lib/tls/libc.so.6 (0xb7e9f000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0xb7e90000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xb7fea000)
Para uma listagem mais completa, adicione o parâmetro -v ao comando ldd, veja:
# ldd -v /bin/tar
librt.so.1 => /lib/tls/librt.so.1 (0xb7fd4000)
libc.so.6 => /lib/tls/libc.so.6 (0xb7e9f000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0xb7e90000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xb7fea000)
Version information:
/bin/tar:
librt.so.1 (GLIBC_2.2) => /lib/tls/librt.so.1
libc.so.6 (GLIBC_2.3) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.2.3) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.2) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.1) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/tls/libc.so.6
/lib/tls/librt.so.1:
libpthread.so.0 (GLIBC_2.0) => /lib/tls/libpthread.so.0
libpthread.so.0 (GLIBC_2.1) => /lib/tls/libpthread.so.0
libpthread.so.0 (GLIBC_PRIVATE) => /lib/tls/libpthread.so.0
libc.so.6 (GLIBC_2.1.3) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.2) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.1) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.3.2) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_PRIVATE) => /lib/tls/libc.so.6
/lib/tls/libc.so.6:
ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2
238
PROGRAMA
TÉCNICO CIDADÃO
ld-linux.so.2 (GLIBC_2.0) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
/lib/tls/libpthread.so.0:
ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
libc.so.6 (GLIBC_2.1.3) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.1) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.3.2) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.2) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.1.2) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_PRIVATE) => /lib/tls/libc.so.6
Adicionando novas bibliotecas ao sistema
Caso você tenho criado ou baixado alguma biblioteca nova, adicione o caminho completo do
diretório em que essa biblioteca se encontra no arquivo /etc/ld.so.conf e digite o comando
ldconfig (sem parâmetros). Isso irá gerar o arquivo /etc/ld.so.cache, que contém informações
sobre as bibliotecas disponíveis no sistema.
Após a operação, confira o resultado com o comando “ldconfig -p” e veja se sua nova
biblioteca consta na lista.
239
PROGRAMA
TÉCNICO CIDADÃO
GERENCIAMENTO DE PROCESSOS
No Linux, ou mais especificamente em todos os sistemas operacionais que seguem o padrão POSIX de desenvolvimento (todos os Unix, Linux e BSDs), utilizam um sistema de gerenciamento de
processos. É esse sistema que permite a execução simultânea de programas no mesmo computador, e isso transcorre de maneira simples de se entender. Basicamente, cada programa em execução pode desencadear a execução de outros sub-programas, mas todos no geral são denominados um a como com sendo processos. Cada processo recebe um identificador numérico crescente que o diferencia dos demais; Esse identificador numérico recebe o nome de PID, e significa
Process Identification.
O PID é nosso termo-chave para gerenciarmos os processos, conforme veremos adiante.
Lidando com processos
É essencial que um administrador de sistemas Linux saiba como lidar com processos, isso inclui
iniciar, listar, terminar e modificar a prioridade de execução deles.
Listando processos
Para ter uma visão geral ou em algumas ocasiões, específica sobre quais processos estão em
execução em um computador sob o sistema operacional Linux, contamos com diversas
ferramentas, das quais as mais importantes são: ps e top.
O comando ps
A ferramenta ps é utilizada para mostrar os processos em execução no sistema, permitindo
listar processos que coincidam com determinados argumentos como o usuário que originou o
processo ou o PID.
Sintaxe:
ps [opçoes]
240
PROGRAMA
TÉCNICO CIDADÃO
O comando, apesar de ter um nome pequeno, possui uma grande gama de opções, divididas
em 3 grupos: UNIX, BSD e GNU. Isso existe “no Linux” para manter compatibilidade com o
comando ps de outros sistemas, permitindo que administradores experientes em UNIX não
encontrem dificuldades em manipulas o ps no Linux, pois as mesmas opções do UNIX também
são aceitas.
Isso complica um pouco a vida de quem está aprendendo o ps agora. Portanto, fique atento nos
parâmetros para saber a quais grupos eles pertencem.
As opções do UNIX são precedidas por hífem, e podem ser agrupadas, desde que a primeira
opção do grupo possua o hífem (Ex.: ps -ax).
As opções do BSD não são precedidas por nada e podem ser agrupadas facilmente (EX.: ps
axef).
Já as opções GNU, que são exclusivas do Linux e têm um formato característico bem diferente,
pois são todas precedidas por dois hífens e não podem ser agrupadas (Ex.: ps –user usuario).
Confundir as opções pode trazer resultados também confusos. Por exemplo, o comando ps aux,
não tem a mesma interpretação que o comando ps -aux, que sob os padrões POSIX do UNIX,
mostraria todos os processos (opção -a) que pertençam ao usuário “x” (a opção -u especifica
um usuário. graças a “astutez” do Linux, os dois comandos teriam o mesmo resultado, desde
que o usuário x não exista no sistema, pois o ps verifica isso, e caso o usuário não existe, ele
trata a sequência como se fosse aux (sem hífem).
241
PROGRAMA
TÉCNICO CIDADÃO
Tabela de opções
UNIX
-A ou -e
-a
-u usuario(s)
-t
-p pid
-C comando
-g grupo(s)
GNU
BSD
t
a
r
e
x
f
--user usuario(s)
--group grupo(s)
--pid pid
--tty tty
Seleciona todos os processos.
Seleciona todos os processos que estejam ligados a algum
terminal, exceto líderes de seção (Geralmente o próprio
interpretador de comandos do terminal)
Mostra processos iniciados por determinado(s) usuário(s). Para
especificar mais de um usuário, separe-os por vírgula.
Mostra processos vinculados com determinado terminal.
Mostra processo com determinado pid
Mostra processos cujo nome do executável coincida com
“comando”
Mostra processos iniciados por determinado(s) grupo(s). Para
especificar mais de um grupo, separe-os por vírgula.
Mostra todos os processos associados com o terminal atual.
Mostra todos os processos associados com algum terminal,
inclusive líderes de seção.
Seleciona somente os processos em execução (que estejam
consumindo recursos de processamento)
Mostra variáveis de ambiente associadas com cada processo.
Lista todos os processos pertencentes ao usuário atual. Bastante
utilizado em conjunto com a opção “a” para mostrar todos os
processos.
Mostra os processos em hierarquia (Floresta).
Idem a opção -u
Idem a opção -g
Idem a opção -p
Idem a opção -t
Exemplo A:
# ps ax
242
PROGRAMA
TÉCNICO CIDADÃO
Forma mais comum de se listar todos os processos. Nota: a saída do comando foi suprimida
pois ocuparia muito espaço desnecessário.
Exemplo B:
# ps axef
Isso mostrará uma lista completa dos processos em execução no sistema, de forma hierárquica
e com informações de variáveis de ambiente para cada processo.
Exemplo C:
# ps -p 6613
# ps -u apostila
Mostra informações sobre o processo cujo pid seja 6613 (Não esqueça de mudar esse número e
escolher um pid válido no seu sistema no momento em que for testar). Em seguida, mostramos
os processos pertencentes ao usuário “apostila”.
Significado das colunas na saída do comando ps
O comando ps exibe diversas colunas diferentes dependendo das opções passadas à ele. Para
conhecer o significado de cada coluna (que muitas vezes é óbvio, como PID por exemplo),
consulte a man page do comando).
Mostraremos aqui os significados das letras na coluna STAT, que mostra o estado de cada
processo na lista através de letras, cujo significado veremos na tabela abaixo:
243
PROGRAMA
TÉCNICO CIDADÃO
Significados das siglas da coluna STAT
D
R
S
T
W
X
Z
<
N
L
s
l
+
O processo se encontra em “sono profundo” (Não morreu mas está em coma)
“Running” - O processo está rodando, consumindo recursos de processamento
“Sleeping” - Processo “Dormindo”. A maioria dos processos fica nesse estado
O processo está parado
Paginando. (Não é válido em kernels 2.6)
Morto. Você provavelmente não o verá mais
Processo Zumbi. Quando um processo entra nesse estado, ele já foi finalizado, mas
ainda ocupa memória por descuido de seu processo pai
O processo tem alta prioridade
O processo tem baixa prioridade
Possui páginas abertas na memória
É um líder de sessão
é um processo capaz de multi-tarefa
O processo está rodando em primeiro plano
O comando top
De forma parecida com o ps, o top também mostra informações sobre os processos em
execução, só que de uma forma diferente. Primeiro que ele ordena os processos com base em
algum critério (Utilização de CPU, memória, etc....); Segundo que ele só mostra na tela a lista de
processos que nela couber.
Basta digitar o comando top para “entrar” no utilitário. A saída do top é dividida em 2 partes,
um cabeçalho como o abaixo e a lista dos processos em si:
top - 01:51:03 up 12:21, 5 users, load average: 1.08, 1.18, 1.12
Tasks: 118 total, 1 running, 117 sleeping, 0 stopped, 0 zombie
Cpu0: 11.7% us, 1.3% sy, 0.0% ni, 86.0% id, 0.0% wa, 1.0% hi, 0.0% si
Cpu1: 11.0% us, 1.3% sy, 0.0% ni, 87.7% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 515232k total, 513008k used,
2224k free, 36144k buffers
Swap: 504968k total,
0k used, 504968k free,
0k cached
244
PROGRAMA
TÉCNICO CIDADÃO
Este cabeçalho exibe informações importantes sobre a utilização de recursos do sistema.
Podemos observar nesse exemplo, que trata-se de um sistema multiprocessado e que a carga
de CPU está em média 11% para cada CPU atualmente, que o sistema possui 512mb de ram e
que existe pouco mais de 2mb livres (Obs.: É perfeitamente normal existir pouca memória ram
disponível num sistema em execução à algum tempo).
Importante ressaltar que o top se atualiza automaticamente a cada x segundos (3 por padrão).
Para forçar uma atualização imediatamente, pressione a barra de [espaço]. Para Modificar o
tempo de atualização automática do top, pressione a tecla [d] e digite o novo valor em
segundos.
Para obter uma lista dos possíveis comandos do top, pressione a tecla [h]. Para sair do top, use
a tecla [q].
Níveis de processos
Os processos são executados no sistema em diferentes camadas ao ponto de vista do usuário.
Isso permite que o sistema seja realmente multitarefa e multiusuário. Os níveis de processos
são: Foreground (Primeiro plano) e Background (Segundo plano).
A maioria dos processos em execução fica em background, mas algumas vezes iniciamos
processos em foreground, como o top ou o editor vim, por exemplo. Um processo em
foreground não permite utilizarmos o terminal para outras finalidades.
Para iniciar um processo já em background, proceda o comando com o sinal de &, conforme
abaixo:
# vi &
[1] 19872
Isso inicializou um processo do vi, cujo pid é 19872 e o identificador do trabalho é 1 (veja mais
sobre isso adiante).
245
PROGRAMA
TÉCNICO CIDADÃO
Para visualizar os processos em background, utilizamos o comando jobs:
# jobs
[1]+ Stopped
vi
# jobs -l
[1]+ 19872 Stopped (tty output)
vi
Repare que a opção -l do comando mostra também o pid do processo. O status “Stopped”
significa que o trabalho está parado, apesar de estar em segundo plano (Nem todo processo
suporte ser executado em segundo plano, pois depende de interação do usuário).
Para compreendermos melhor o gerenciamento de trabalhos, vamos iniciar mais um em
background:
# updatedb &
[2] 20002
Agora iniciamos um processo que suporta execução em background, caso ele termine antes de
passarmos pelos exemplos, execute o comando novamente e prossiga. Vejamos como ficou a
lista de trabalhos:
# jobs
[1]+ Stopped
[2]- Running
vi
updatedb &
Para enviar o trabalho para foreground, utilizamos o comando fg (foreground), seguido do
número do trabalho:
# fg 2
updatedb
Pressione [CONTROL]+[Z]
[2]+ Stopped
updatedb
# jobs
[1]- Stopped
vi
[2]+ Stopped
updatedb
Pressionando [CONTROL]+[Z] enviamos o processo que está em foreground para background,
mas ele fica com o status Stopped (Parado).
246
PROGRAMA
TÉCNICO CIDADÃO
Para instruir um trabalho nessa situação a continuar a rodar em segundo plano, digite bg
(background) seguido do número do trabalho:
# bg 2
[2]+ updatedb &
# jobs
[1]+ Stopped
[2]- Running
vi
updatedb &
É possível cancelar a execução de um trabalho em foreground com a sequência de teclas
[CONTROL]+[C]. Experimente fazer isso com o trabalho 2 do exemplo.
Sinalizando processos
É possível enviar sinais para os processos em execução. Os sinais de processos foram criados
com a finalidade de enviar instruções para os processos, ordenando-os a finalizar ou reiniciar
por exemplo.
Um comando capaz de enviar esses sinais para os processos é o kill. Na página de manual é
possível obter uma lista completa dos sinais disponíveis. Os sinais mais conhecidos são: TERM,
que diz ao processo para finalizar todos os seus subprocessos e fechar, KILL, que “mata” o
processo sem esperar nenhuma finalização e HUP, que diz ao processo para reiniciar.
O comando kill
Sintaxe:
kill [ -sinal | -s sinal ] pid ...
kill -l [ sinal ]
Os principais sinais possuem um número associado: 15 é TERM, 9 é KILL. A lista completa pode
ser vista na man-page do comando kill.
247
PROGRAMA
TÉCNICO CIDADÃO
Utilizamos o “kill -l sinal” para “traduzir” o sinal em seu respectivo número de sinal, e vice
versa.
O sinal padrão do kill é o 15 (TERM). Para finalizar um processo som este sinal, basta digitar “kill
pid”, onde pid é o número do processo que deseja finalizar.
Exemplos:
# kill -HUP 16384
# kill -9 14446 14447 15896 17894
Não esqueça que esses pids do exemplo são fictícios.
O comando killall
De forma semelhante ao comando kill, o comando killall serve ao mesmo propósito: enviar
sinais aos processos. Só que o killall não recebe como argumentos os pids dos processos que
deseja enviar o sinal, e sim o nome dos processos diretamente. Resumindo, ele envia sinais
para os processos pelo nome.
Sua sintaxe é semelhante ao comando kill. O sinal padrão também é 15.
Sintaxe:
killall [opções] [processo] [processo...]
Exemplo:
# killall -v -HUP cron
Isso enviará o sinal HUP para todos os processos de nome “cron” (que geralmente é executado
em todos os sistema). Note a utilização da opção -v, que mostra na saída quais processos estão
sendo sinalizados.
248
PROGRAMA
TÉCNICO CIDADÃO
O comando killall5
A finalidade desse comando é propagar um sinal (15 por padrão) para todos os processos em
execução, com exceção dos iniciados pelo kernel e ele mesmo.
Sintaxe:
killall5 [-sinal]
Exemplo:
# killall5 -HUP
# killall5 -9
O primeiro reinicia todos os processos, o segundo causa um “holocausto” nos processos,
matando-os sem esperar por respostas.
DICA
Caso queira executar um comando que permaneça ativo mesmo depois de fechar o
terminal atual, preceda-o com o comando nohup. Ex.: nohup updatedb &
Gerenciando prioridades dos processos
Todo processo em execução possui um valor de prioridade, que é utilizado para o kernel
ordenar os processos na fila de processamento. Esse valor de prioridade, chamado de “nice”,
varia do mais alto “-20” até o mais baixo “19”. O nice padrão para processos iniciados é “0”,
mas somente um usuário root consegue executar processos com prioridade maior que 0 (O que
confunde um pouco, pois essas prioridades “maiores” que zero vão de -1 até -20, que é a maior
de todas.).
Definindo prioridades com o comando nice
É possível iniciar um programa com prioridade alterada utilizando-se o comando nice.
249
PROGRAMA
TÉCNICO CIDADÃO
Sintaxe:
nice [-n prioridade] comando
Se não definirmos a prioridade desejada (de 19 à -20), o nice assume a prioridade 10, mais
baixa que o normal 0.
Exemplo:
# nice -n 19 updatedb &
Modificando prioridades com o comando renice
Para modificar a prioridade de execução de um processo que já esteja sendo executado, utilize
o renice. É possível fazer isso com base no pid ou usuário que tenha iniciado o processo, por
exemplo. Repare que a sintaxe é um pouco diferente em relação ao comando nice.
Sintaxe:
renice prioridade [ [ -p ] pids ] [ [ -g ] pgrps ] [ [ -u ] usuários ]
Vamos iniciar um processo, tomar nota de seu pid, e utilizá-lo para modificar sua prioridade de
execução.
Exemplo:
# updatedb &
[1] 7243
# renice 15 -p 7243
7243: prioridade antiga = 0; prioridade nova = 15
# renice -10 -p 7243
7243: prioridade antiga = 15; prioridade nova = -10
Modificamos por duas vezes a prioridade de execução do processo.
250
PROGRAMA
TÉCNICO CIDADÃO
251
PROGRAMA
TÉCNICO CIDADÃO
GNU/LINUX AVANÇADO
Este curso visa proporcionar aos alunos o conhecimento
avançado
em
redes
baseadas
no
sistema
operacional
para
configuração de redes e integração de seu sistema com um ambiente
heterogênio, além de objetivar os seguintes itens:
·
Ganhar experiência com tarefas de administração intermediárias;
·
Controlar os processos de Boot;
·
Configurar serviços do sistema;
·
Gerenciar a segurança do sistema e de usuário;
·
Criar e editar Shell Scripts.
Este
material
de
apoio
foi
desenvolvido
pela
equipe
de
treinamento Utah, sendo resultado de uma preocupação constante da
empresa em oferecer treinamentos diferenciados, com a máxima
qualidade para capacitar você . Esperamos que este material possa
auxiliá-lo, não somente durante o treinamento, mas também como um
material de consulta e apoio técnico.
252
PROGRAMA
TÉCNICO CIDADÃO
253
PROGRAMA
TÉCNICO CIDADÃO
OS SERVIÇOS DE REDE NO LINUX
Instalando um Servidor DNS no Linux
No Linux, o software chamado “Bind” provê os servidor de resolução de nomes DNS. O Bind é
amplamente utilizado em servidores Linux, Unix e BSD.
A configuração do bind no Linux é praticamente idêntica em qualquer distribuição Linux,
mudando somente os nomes dos pacotes e o caminho para os arquivos, mas a sintaxe costuma
ser conservada.
Como utilizamos a distribuição Debian como padrão em nossa apostila (lembrando que o
treinamento é independente de distribuição...), nos basearemos no Debian para prosseguir com
a configuração;
Resumo das características do Bind no Debian:
Pacote(s):
bind9
Serviço:
bind9
Porta(s):
53(udp)
Configurações:
/etc/bind/named.conf, /var/cache/bind/*
A instalação do servidor de nomes deverá ser feita através do comando a seguir :
# aptitude install bind9
IMPORTANTE
Como pode ser visto no comando acima, no Debian, o nome do pacote que implementa o servidor de nomes bind da série 9 é o pacote de nome bind9. Um pacote
de nome bind também existe, mas o mesmo contém o servidor de nomes bind da
série 8 e NÃO deve ser utilzado.
254
PROGRAMA
TÉCNICO CIDADÃO
Após a instalação do pacote bind9, o daemon de nome named será iniciado e o bind já entrará
em funcionamento. Os arquivos de configuração do servidor de nomes bind estarão localizados
sob o diretório /etc/bind e os arquivos de zonas a serem criados deverão ser colocados sob o
diretório /var/cache/bind, de acordo com o valor do parâmetro directory da seção options no
arquivo de configuração principal do servidor de nomes bind, o arquivo /etc/bind/named.conf.
Servidor de nomes somente para cache
A idéia de um servidor de nomes somente para cache, como o próprio nome sugere, é somente
aproveitar o cache de resolução de nomes do servidor. Em um servidor de nomes desse tipo,
não é necessário criar mapas de zonas e lidar com nenhum tipo adicional de configuração, uma
vez que o pacote bind9 do Debian já é iniciado com um funcionamento adequado para atuar
como um servidor de nomes somente para cache logo após sua instalação.
Configuração de um servidor de nomes autoritativo
Um servidor de nomes autoritativo é um servidor de nomes que possui autoridade para um ou
mais domínios e, sendo assim, responde as pesquisas de resoluções de nomes para hosts que
fazem parte dos domínios em questão. Ao contrário do caso do servidor de nomes somente
para cache, a criação de um servidor de nomes autoritativo para um domínio requer
configuração do bind e, adicionalmente, a criação dos mapas de zonas para resolução comum e
reversa para o domínio.
Para configurar o bind de forma que o mesmo responda com autoridade para um domínio, os
seguintes passos das seções a seguir deverão ser seguidos.
255
PROGRAMA
TÉCNICO CIDADÃO
Definição de zonas para o domínio
O domínio para o qual desejamos que o bind responda pesquisas de resolução de nomes deverá
ser cadastrado no arquivo de configuração principal do bind, o arquivo /etc/bind/named.conf,
como uma zona, utilizando a seguinte sintaxe :
zone "dominio.com.br" {
type master;
file "db.dominio.com.br";
allow-transfer { 200.1.2.4; };
notify yes;
};
A estrofe acima declara uma nova zona, de nome dominio.com.br, a qual será utilizada para
definir a estrutura do domínio de mesmo nome, ou seja, o domínio dominio.com.br onde :
● O parâmetro
type especifica o tipo de servidor de nomes que nossa instalação do bind
será para essa zona específica : master ou slave. master indica que nosso servidor
de nomes será o servidor principal (master) do domínio em questão e slave indica que
nosso servidor de nomes será um servidor escravo (slave), que somente receberá
atualizações de mudanças feitas na zona diretamente na configuração do servidor
master.
● O parâmetro file indica o nome do arquivo onde a zona será definida, relativo ao
diretório padrão de mapas de zonas, definido pelo parâmetro directory no início do
arquivo /etc/bind/named.conf, ou seja, o diretório /var/cache/bind.
● O parâmetro
allow-transfer especifica os endereços IPs dos servidor de nomes que
estão autorizados a transferir a zona em questão. É interessante listar, separados por
dois pontos - ; - os endereços IPs dos servidor de nomes escravos aqui.
● O parâmetro
notify especifica se o bind deverá enviar notificações de mudanças nos
dados da zone para seus servidores de nomes escravos. Habilitar esta opção é uma boa
256
PROGRAMA
TÉCNICO CIDADÃO
idéia, uma vez que, dessa forma, os servidores de nomes escravos serão avisados
automaticamente caso mudanças sejam feitas nos mapas de zonas do servidor de
nomes principal e iniciarão uma transferência de zona para ficarem com seus mapas de
zonas atualizados em relação ao servidor de nomes principal.
IMPORTANTE
É importante notar que a sintaxe utilizada na estrofe de exemplo acima deve ser seguida. As chaves de abertura e fechamento do trecho que define a zona, os dois
pontos após a definição do valor de cada um dos parâmetros da zona e a definição
dos valores entre aspas duplas devem realmente ser feitos dessa forma ou erros de
sintaxe ocorrerão.
Criação dos mapas de zonas
Após a definição da zona no arquivo /etc/bind/named.conf é necessário criar o mapa da zona,
ou seja, o arquivo contendo a zona toda a configuração da zona, com o mapeamento entre
endereços IPs e nomes de hosts. O arquivo deverá ser criado sob o diretório /var/cache/bind,
com o nome definido no parâmetro file da zona cadastrada no arquivo /etc/bind/named.conf.
Tecnicamente, qualquer nome pode ser definido para os arquivos dos mapas de zonas. Vamos
adotar um padrão bem conhecido, ficando: db.dominio.com.br, onde dominio.com.br é o
domínio gerenciado pela zona em questão. Um exemplo de arquivo de mapa de zona seria :
$TTL 43200
$ORIGIN dominio.com.br.
@ IN SOA servidor.dominio.com.br. hostmaster.servidor.dominio.com.br. (
2004101801; serial
3600 ; refresh
900 ; retry
1209600 ; expire
43200 ; default_ttl
)
@
IN MX 5 mx01
257
PROGRAMA
TÉCNICO CIDADÃO
@
@
@
@
servidor
ns2
mx01
mx02
www
ftp
webmail
pop
smtp
IN MX 10 mx02
IN NS
servidor
IN NS
ns2
IN A
200.1.2.3
IN A
200.1.2.3
IN A
200.1.2.4
IN A
200.1.2.5
IN A
200.1.2.6
IN A
200.1.2.7
IN A
200.1.2.8
IN CNAME servidor
IN CNAME servidor
IN CNAME servidor
O mapa de zona de exemplo acima, que gerencia o domínio de exemplo dominio.com.br,
define diversos registros :
● Os dois registros do tipo MX,
mx01 e mx02, definem os dois servidores de e-mail
responsáveis pelas mensagens do domínio dominio.com.br. Porém, os nomes desses
hosts são definidos mais abaixo, onde ao host com o endereço IP 200.200.1.2.5 é
atribuído o nome mx01.dominio.com.br e ao host com o endereço IP é atribuído o nome
mx02.dominio.com.br. É aconselhável, por motivos de segurança, definir o(s) registro
(s) MX da zona apontando para o nome de um registro do tipo A e não para um registro
do tipo CNAME.
● Os registros de exemplo do tipo NS,
servidor e ns2, definem que nossa zona terá dois
servidores de nomes que poderão responder com autoridade. Um exemplo é criar um
segundo servidor de nomes no host de endereço IP apontando pelo registro NS ns2 e
configurá-lo como um servidor de nomes escravo para que o mesmo transfira
automaticamente os mapas de zona do domínio de exemplo dominio.com.br,
eliminando a necessidade de criar o mapa de zonas no servidor escravo uma segunda
vez.
258
PROGRAMA
TÉCNICO CIDADÃO
● Os registros de exemplo do tipo A,
servidor, ns2, mx01, mx02, www e ftp apenas
indicam os nomes de exemplo dos hosts com os endereços IPs 200.1.2.3, 200.1.2.4,
200.1.2.5, 200.1.2.6, 200.1.2.7 e 200.1.2.8, respectivamente.
● Os registros de exemplo do tipo CNAME indicam nomes alternativos (apelidos) através
dos
quais
alguns
hosts
webmail.dominio.com.br,
também
são
conhecidos,
pop.dominio.com.br
e
como,
por
exemplo,
smtp.dominio.com.br
serem
apelidos para o host de nome servidor.dominio.com.br.
Em adição, o cabeçalho da zona é formado pelos seguintes elementos :
● $TTL
Cada registro em uma zona é conhecido também como um RR, ou Registro de Recurso
(do inglês Resource Record). Cada RR pode possuir um "tempo de vida", definido como
um registro inteiro de 32 bits representado em unidades de segundos. Um TTL define um
limite de tempo que o registro deve ser mantido em cache. É usado principalmente por
resolvers (programas que buscam informações em servidores de nomes em resposta a
requisições de clientes) quando os mesmos fazem caches de RRs. Esse "tempo de vida"
é obtido do $TTL geral da zona na primeira linha do arquivo de zona caso os RRs listados
no arquivo de zona não especifiquem cada um seu próprio TTL.
● Registro SOA
O registro SOA indica o início de uma zona com autoridade. Esse registro é composto de
vários campos, como pode ser visto no exemplo de zona anterior. Segue abaixo o
registro SOA do exemplo anterior para melhor visualização e uma explicação posterior :
@ IN SOA servidor.dominio.com.br. hostmaster.servidor.dominio.com.br. (
2004101801; serial
3600 ; refresh
900 ; retry
1209600 ; expire
43200 ; default_ttl
259
PROGRAMA
TÉCNICO CIDADÃO
)
Na primeira linha indicamos, após o nome totalmente qualificado do servidor de nomes,
hostmaster.servidor.dominio.com.br que, na verdade, seria o endereço de e-mail (com o
símbolo de @ substituído por um ponto) do contato responsável pela zona.
Devido a isso é importante existir uma conta de e-mail hostmaster (ou um alias hostmaster
apontando para a caixa-postal do administrador responsável) que possa ser contactada em
caso de problemas relacionados a resolução de nomes em sua zona.
Após a abertura do parênteses, temos cinco campos diferentes. A seguir, uma explicação da
utilidade de cada um deles :
● Serial
O primeiro campo é conhecido como serial. O campo serial deve conter um número
inteiro que deve ser incrementado a cada modificação feita na zona. Quando os servidores
de nomes escravos checam a zona em busca de modificações, o campo serial é o campo
checado. Se o mesmo possui um valor maior que o valor da cópia que possuem
localmente, os servidores de nomes escravos entendem que a zona foi modificada e que
uma nova transferência de zona é necessária.
Um bom padrão para o serial costuma ser:
AAAAMMDDXX
Onde AAAA é o ano no qual o modificação foi feita, com quatro dígitos. MM é o mês em
que a modificação foi feita, com dois dígitos, DD é o dia em que a modificação foi feita,
com dois dígitos e, por último, XX informa a quantidade de vezes que a zona foi
modificada dentro de um mesmo dia, também com dois dígitos (01 até 99).
● Refresh, Retry e Expire
260
PROGRAMA
TÉCNICO CIDADÃO
O segundo, terceiro e quarto campos são conhecidos como refresh, retry e expire,
respectivamente. Esses campos controlam o período de tempo em que os servidores de
nomes secundários irão buscar por informações atualizadas sobre a zona no servidor de
nomes principal.
Sempre que uma zona é carregada em um servidor secundário, o servidor de nomes
secundário espera a quantidade de segundos especificada no campo refresh antes de
checar a existência de um novo serial no servidor de nomes principal.
Caso a checagem, por qualquer motivo, não possa ser completada, novas checagens
serão iniciadas a cada retry segundos. Por exemplo : se o campo retry contém um valor
de 3600, novas tentativas de checagem ocorrerão de 1 em 1 hora, pois 3600 segundos
equivalem a 1 hora. A checagem é, na verdade, uma simples pesquisa pelo campo SOA da
zona no servidor de nomes primário.
Caso o campo serial na cópia da zona existente no servidor de nomes secundário for igual
ao serial da zona existente no servidor principal, nenhuma mudança ocorreu e a espera
pelo intervalo de refresh segundos é reiniciada. Caso o servidor de nomes secundário não
consiga executar uma checagem pelo serial do servidor de nomes principal por todo o
tempo especificado no campo expiry, o mesmo assume que sua cópia da zona é obsoleta
e a descarta.
Criação de mapas de resolução reversa
Em alguns casos, além da criação dos mapas de zonas, é necessária a criação de mapas de
resolução reversa, ou seja, mapas que possibilitem que o nome de um host seja encontrado
dado o endereço IP do mesmo. Isso é conseguido através do uso de um domínio especial, o
domínio in-addr.arpa, e de registros do tipo PTR no mapa de resolução reversa.
261
PROGRAMA
TÉCNICO CIDADÃO
Porém, ao contrário dos mapas de zonas, mapas de resolução reversa são criados para uma
rede específica e não para cada domínio. Sendo assim, apesar de um servidor de nomes poder
possuir mapas de zonas de diversos domínios, o mesmo poderá possuir um mapa de resolução
reversa somente para a rede (interna ou externa) para a qual o mesmo possui autoridade.
As entradas do tipo PTR no domínio in-addr.arpa são feitas especificando somente o último
octeto de um endereço IP, relacionando o mesmo ao nome do host correspondente. Um
exemplo de mapa de resolução reversa para a rede interna (inválida na Internet) de exemplo
192.168.1.0 seria :
$TTL 43200
@ IN SOA servidor.dominio.com.br. hostmaster.servidor.dominio.com.br. (
2004101901 ; serial
3600 ; refresh
900 ; retry
1209600 ; expire
43200 ; default_ttl
)
@
3
4
5
6
7
8
IN
IN
IN
IN
IN
IN
IN
NS
PTR
PTR
PTR
PTR
PTR
PTR
servidor.dominio.com.br.
servidor.dominio.com.br.
ns2.dominio.com.br.
mx01.dominio.com.br.
mx02.dominio.com.br.
www.dominio.com.br.
ftp.dominio.com.br.
O mapa de resolução reversa acima é um mapa de exemplo para a rede de exemplo utilizada
no exemplo da seção anterior.
262
PROGRAMA
TÉCNICO CIDADÃO
IMPORTANTE
Mapas de resolução reversa são comumente criados para resolução reversa em ambientes de redes internas inválidas (ou seja, as redes definidas pela RFC1819) ou
por grandes provedores e/ou organizações detentores de uma grande classe de endereços IP, uma vez que a entidade responsável pela classe de endereços IP no qual
sua faixa de endereços IP se encaixa é a responsável pela criação e pela manutenção dos mapas de resolução reversa.
IMPORTANTE 2
Caso você não seja o detentor de sua classe de endereços IP, mas sim somente de
uma faixa de endereços pertencentes a essa classe, entre em contato com o fornecedor de sua faixa de endereços IP e peça para o mesmo acrescentar seus endereços IPs ao mapa de resolução reversa de nomes da rede em questão.
Assim como no caso do mapa de zonas, o mapa de resolução reversa de nomes de uma rede
deve ser definido no arquivo de configuração principal do bind, em /etc/bind/named.conf. Um
exemplo de como o mapa da rede de exemplo que utilizamos pode ser definido é:
zone "2.1.200.in-addr.arpa" {
type master;
file "db.200.1.2";
};
No exemplo acima, podemos ver que a zona especial in-addr.arpa é utilizada. Para definir o
mapa reverso de nossa rede de exemplo, informamos essa zona especial, in-addr.arpa, após
os três primeiros octetos de nossa rede de exemplo invertidos (ou seja, como nossa rede de
exemplo é 200.1.2.0, os três primeiros octetos invertidos são 2.1.200).
Como especificamos os octetos que definem a rede junto ao nome da zona para definí-la no
arquivo /etc/bind/named.conf, (em nosso caso, os três primeiros octetos) agora precisamos
informar somente o o último octeto de cada endereço IP para definir um registro do tipo PTR,
263
PROGRAMA
TÉCNICO CIDADÃO
como pode ser visto acima no arquivo de mapas de resolução reversa para nossa rede de
exemplo.
Encaminhando requisições de pesquisas
Quando um servidor de nomes não consegue resolver o nome de um host para um endereço IP
utilizando informações existentes em seu cache de resolução de nomes, o mesmo pode
repassar a requisição de pesquisa a outros servidores de nomes tentar encontrar a resposta em
seu cache.
Em algumas situações, não é desejável que todos os servidores de nomes internos façam
requisições de resolução de nomes diretamente a outros servidores de nomes na Internet, mas
sim encaminhem tais requisições a um outro servidor de nomes interno, que por sua vez terá
permissão de consultar servidores de nomes externos na Internet.
Além de facilitar a manutenção de regras de firewalls, uma vez que regras para liberação de
pesquisas DNS deverão ser acrescentadas somente para um servidor de nomes, o recurso de
encaminhamento de requisições é interessante porque o servidor de nomes para o qual todos
os outros servidores de nomes encaminharão suas requisições irá desenvolver um cache muito
mais completo de informações de resolução de nomes, o qual poderá ser utilizado por todos os
outros servidores de nomes e por todos os clientes.
O parâmetro de configuração que possibilita o encaminhamento de requisições de resolução de
nomes é o parâmetro forwarders. Um exemplo de configuração utilizando o parâmetro
forwarders seria :
forwarders { 1.2.3.4; };
Onde 1.2.3.4 é o endereço IP do servidor de nomes para onde as requisições de pesquisa de
nomes não satisfeitas pelo cache local de nosso servidor de nomes serão enviadas. É possível
também especificar uma lista de servidores de nomes para os quais as requisições devem ser
264
PROGRAMA
TÉCNICO CIDADÃO
encaminhadas. Cada um dos servidores de nomes da lista especificada será contactado em
sequência, até que um deles consiga resolver a requisição. Quando uma resposta for recebida,
a requisição em questão não será encaminhada para o restante dos servidores de nomes
listados, uma vez que uma resposta já foi recebida.
Um exemplo de configuração do parâmetro forwarders utilizando uma lista de servidores de
nomes para os quais as requisições de resolução de nomes devem ser encaminhadas seria :
forwarders { 1.2.3.4; 2.3.4.5; }
Onde 1.2.3.4 e 2.3.4.5 são os endereços IPs dos servidores de nomes para os quais as
requisições de pesquisas de nomes não satisfeitas pelo cache local de nosso servidor de nomes
devem ser encaminhadas.
Como testar a configuração
É imprescindível que sejam efetuados testes nos arquivos de configuração alterados antes de
reiniciar os serviços relacionados.
Validando a configuração do bind
Uma maneira de testar facilmente se a configuração do servidor de nomes está correta é
utilizar as ferramentas fornecidas pelo próprio pacote bind9 para essa finalidade.
Para testar a validade das configurações feitas no arquivo de configuração principal do servidor
de nomes no arquivo /etc/bind/named.conf, utilize a ferramenta de nome named-checkconf.
Essa ferramenta deve ser utilizada da seguinte forma:
# named-checkconf /etc/bind/named.conf
265
PROGRAMA
TÉCNICO CIDADÃO
Caso nenhuma erro seja apresentado, o arquivo de configuração /etc/bind/named.conf estará
configurado sintaticamente correto. Caso exista algum erro de sintaxe no arquivo, o mesmo
será exibido. Por exemplo, considere o erro a seguir :
$ named-checkconf /etc/bind/named.conf
/etc/bind/named.conf:84: missing ';' before 'zone'
O erro acima indica que o caracter de ponto e vírgula (;) está faltando antes da declaração de
uma nova zona, além de indicar em qual linha do arquivo /etc/bind/named.conf pode ser
encontrado. Após corrigir o erro (no caso, inserir o caracter de ponto e vírgula após a finalização
de declaração de uma zona e o início de outra), é importante executar o utilitário named-
checkconf novamente para se certificar de que não existam mais erros.
Validando mapas de zonas
Similarmente ao utilitário named-checkconf, visto na seção anterior, outra ferramenta de
grande ajuda na detecção e resolução de problemas relacionados a mapas de zonas é o
utilitário de nome named-checkzone, também fornecido junto com o pacote bind9.
A maneira correta de utilizá-lo e executando-o da seguinte forma :
# named-checkzone <nome_da_zona> <arquivo_de_zona>
Onde
<nome_da_zona> é o nome da zona, conforme configurada no arquivo /
etc/bind/named.conf e <arquivo_de_zona> é o arquivo de mapas onde a zona em questão
foi definida. Veja a seguir um exemplo de saída do utilitário named-checkzone verificando a
sintaxe do mapa da zona de exemplo dominio.com.br :
$ named-checkzone dominio.com.br /var/cache/bind/db.dominio.com.br
zone dominio.com.br/IN: loaded serial 2004101801
OK
$
266
PROGRAMA
TÉCNICO CIDADÃO
Repare que a saída do comando simula o carregamento da zona dominio.com.br, indica o
serial atual da mesma e exibe um sinal de OK caso nenhum erro de sintaxe seja detectado no
mapa de zona.
Assim como no caso do utilitário named-checkconf, o utilitário named-checkzone auxilia a
encontrar problemas em um arquivo de mapa de zonas caso erros de sintaxe sejam
encontrados. Veja o exemplo a seguir onde um erro de sintaxe foi intencionalmente inserido :
# named-checkzone dominio.com.br /var/cache/bind/db.dominio.com.br
dns_rdata_fromtext: /var/cache/bind/db.dominio.com.br:40: near '.dominio.com.br.': empty label
zone dominio.com.br/IN: loading master file /var/cache/bind/db.dominio.com.br: empty label
O erro encontrado, bem como a linha onde o mesmo foi detectado são exibidos. Após corrigir o
erro, execute novamente o utlitário named-checkzone para se certificar de que nenhum outro
erro ainda exista.
ATENÇÃO
Apesar do utilitátio named-checkzone ser de grande valia, nem todos os erros podem ser identificados. Tenha cuidado na criação de seus mapas de zonas !
Testando a resolução de nomes
Existem diversas ferramentas dedicadas ao teste de funcionamento de resposta a requisições
de resolução de nomes de servidores de nomes. Porém, a ferramenta mais utilizada é o
utilitário dig. No Debian, esse utilitário é fornecido pelo pacote dnsutils. Para instalá-lo, utilize o
comando a seguir :
# aptitude install dnsutils
Após instalado, o utilitário dig pode ser utilizado da seguinte forma :
dig <tipo_registro> <dominio>
267
PROGRAMA
TÉCNICO CIDADÃO
Onde <tipo_registro> deve ser substituído pelo tipo de registro do domínio que se deseja
pesquisar (por exemplo, o(s) registro(s) MX do domínio) e <dominio> deve ser substituído pelo
próprio nome do domínio. Um exemplo de consulta aos registros MX do domínio uol.com.br
seria :
$ dig MX uol.com.br
; <<>> DiG 9.2.4 <<>> MX uol.com.br
;; global options: printcmd
;; Got answer:
;; ->>;HEADER<<- opcode: QUERY, status: NOERROR, id: 29998
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;uol.com.br.
IN
MX
;; ANSWER SECTION:
uol.com.br.
2995
IN
MX
10 mx.uol.com.br.
;; AUTHORITY SECTION:
uol.com.br.
3575
uol.com.br.
3575
IN
IN
NS
NS
eliot.uol.com.br.
borges.uol.com.br.
;; ADDITIONAL SECTION:
eliot.uol.com.br.
2044 IN
A
borges.uol.com.br.
2044 IN
A
;;
;;
;;
;;
200.221.11.98
200.147.255.105
Query time: 2 msec
SERVER: 192.168.1.2#53(192.168.1.2)
WHEN: Wed Oct 20 14:32:04 2004
MSG SIZE rcvd: 120
Como pode ser visto no exemplo de pesquisa acima, a seção QUESTION SECTION indica que a
pequisa pelo registro MX do domínio uol.com.br foi feita. Na seção ANSWER SECTION, podemos
ver que a resposta foi apenas um registro MX, apontando para o host mx.uol.com.br, com
prioridade 10.
268
PROGRAMA
TÉCNICO CIDADÃO
Adicionalmente, podemos notar que maiores informações foram trazidas, como, por exemplo,
dois registros que indicam dois servidores de nomes responsáveis pelo domínio uol.com.br,
eliot.uol.com.br e borges.uol.com.br. Mais abaixo, podemos ver também que esses dois
servidores
de
nomes
possuem
os
endereços
IP
200.221.11.98
e
200.147.255.105,
respectivamente.
Perceba também que algumas informações sobre a pesquisa são exibidas a seguir, como o
tempo de pesquisa (2 milisegundos), o nome do servidor de nomes para o qual a pesquisa foi
feita (192.168.1.2), quando a pesquisa foi requisitada e o tamanho da mensagem recebida do
servidor de noms contendo a resposta da pequisa.
Devemos lembrar que, por padrão, o servidor de nomes para o qual a pesquisa será enviada é o
servidor de nomes para o qual o sistema operacional onde a pesquisa está sendo feita aponta.
Isso pode ser conferido no arquivo /etc/resolv.conf.
Para especificar a qual servidor de nomes a requisição de pesquisa deve ser enviada,
acrescente um parâmetro adicional a linha de comando que execute o utilitário dig, contendo o
caracter @ seguido do endereço IP do servidor de nomes desejado. Um exemplo de pesquisa
especificando o servidor de nomes para o qual enviar a requisição de pesquisa seria :
$ dig MX uol.com.br @1.2.3.4
Ou seja, pesquise pelo registro MX do domínio uol.com.br no servidor de nomes que possui o
endereço IP 1.2.3.4. Além dos testes de registros específicos, outra recomendação é utilizar o
ping para testar o funciomento da resolução de nomes tentando pingar os hosts cadastrados
na zona.
IMPORTANTE
Caso os testes com o ping sejam feitos a partir de um servidor ou estação que não
seja o servidor de nomes onde a zona foi implementada, não se esqueça de configurar a estação ou servidor para apontar para o servidor de nomes onde a zona foi recém-configurada antes de iniciar os testes.
269
PROGRAMA
TÉCNICO CIDADÃO
270
PROGRAMA
TÉCNICO CIDADÃO
SISTEMAS DE RESOLUÇÃO DE NOMES
Com o passar dos anos, aliado ao crescimento da Internet. tornou-se inviável que os usuários tivessem que saber o endereço IP para cada recurso que pretendiam acessar. Essa é uma característica que consta estampada nos seres humanos.... Todos concordam que é muito mais difícil referenciar a uma pessoa pelo seu CPF do que pelo seu nome.
É justamente esse problema que um sistema de resolução de nomes resolve: Ele traduz nomes
para endereços IP.
O primeiro sistema de resolução de nomes criado foi o hosts.
Sistema de resolução hosts
Esse sistema de resolução que desencadeou a criação de todos os outros sistemas de resolução
posteriores.
Seu funcionamento é muito simples, e provavelmente por isso que ele ainda popula sistemas
atuais, ao lado de outros sistemas de resolução.
O sistema se baseia em um arquivo de “hosts”, que contém entradas desse tipo:
192.168.1.1
meuhost.meudominio meuhost
No Linux, esse arquivo é o /etc/hosts, e no meu sistema ele se assemelha com:
# cat /etc/hosts
127.0.0.1
localhost
192.168.1.57 ws-57.utah.net.br ws-57
Podemos testar a resolução de nomes com o comando ping, por exemplo.
# ping ws-57.utah.net.br
# ping ws-57
Problemas do sistema de hosts
Com o passar do tempo, o aumento no número de hosts automaticamente gerou um grande
problema: Os computadores que se conectavam à Internet (se é que ela poderia ser chamada
271
PROGRAMA
TÉCNICO CIDADÃO
assim naquela época....) precisavam baixar um arquivo de hosts para poder utilizar a resolução
de nomes oferecida pelo sistema, mas com o crescimento exponencial do número de hosts
nesse arquivo, tornou-se impraticável ter que baixar esse arquivo com a velocidade de conexão
da época.
Para solucionar tal problema foi criado o sistema de resolução de nomes DNS, que estudaremos
a seguir.
Sistema de resolução DNS
O DNS é um sistema de resolução de nomes cuja característica marcante é sua capacidade de
hierarquia e flexibilidade.
Toda a Internet hoje em dia utiliza o DNS. Quando estamos utilizando um browser para navegar,
por exemplo, ao digitarmos um endereço na barra de endereços, é desencadeado um processo
de resolução DNS.
O DNS consegue a façanha de distribuir a carga da resolução de nomes (solucionando o antigo
problema do sistema de hosts) porque implementa uma hierarquia especial na resolução. Para
entender essa hierarquia, devemos comprender o que são nomes de domínios.
Nomes e Domínios...
Os nomes de domínios são o coração do sistema DNS. Um nome de domínio é dividido em
zonas através do “.' (ponto). Cada zona equivale a um nível na hierarquia, cujo ponto mais alto
é topo da mesma, chamado de domínio de primeiro nível.
No nome www.terra.com.br, por exemplo, o domínio de primeiro nível é “br”. Ainda sob o
mesmo exemplo, a segunda parte (lembre-se: da direita para a esquerda) é o domínio de
segundo nível. A última parte (Nesse caso, o “www”) é o nome do host sob aquele domínio, e
272
PROGRAMA
TÉCNICO CIDADÃO
tudo que estiver entre o nome do host e o domínio de segundo nível são sub-domínios de seu
precedente na hierarquia.
O conjunto completo de um nome DNS é chamado FQDN (Fully Qualified Domain Name). Um
FQDN é um nome único em toda a hierarquia da Internet, pois ele se refere a um objeto único
em toda a estrutura.
Uma boa analogia aos FQDNs são nosso nomes completos, onde nosso primeiro nome seria o
nome do host e o nosso sobrenome seria o domínio ao qual pertencemos.
Exemplos de nomes FQDN são: www.terra.com.br, www.uol.com.br e www.yahoo.com.
Processo de resolução DNS
Esta é provavelmente a parte mais almejada deste treinamento, pois compreender como o
processo de resolução DNS ocorre nos mínimos detalhes é de suma importância para dar
continuidade ao treinamento, sendo requisito para a maioria dos capítulos que estão por vir.
Vamos analizar aqui como ocorre um processo completo de resolução DNS, conforme a figura
abaixo.
273
PROGRAMA
TÉCNICO CIDADÃO
1) O cliente DNS pergunta ao servidor qual é o IP do host www.usp.br;
2) O servidor DNS não sabe, e inicia o processo de resolução do FQDN a partir do
rootserver, perguntando à ele qual é o IP do servidor DNS responsável pela zona “br”;
3) O rootserver responde.
274
PROGRAMA
TÉCNICO CIDADÃO
4) O servidor DNS então pergunta para o servidor que é autoridade para a zona “br” qual
é o IP do servidor que é autoridade para a zona “usp.br”.
5) O servidor DNS da zona “br” então responde.
6) O servidor DNS agora pergunta para o servidor DNS da zona “usp.br” qual é o ip do
host www que consta em seu domínio (www.usp.br).
7) O DNS da zona “usp.br” responde a solicitação com o endereço IP do host www.usp.br.
8) Finalizando o processo de resolução, o servidor DNS responde a pergunta inicial do
cliente DNS com o IP do host www.usp.br. Agora então o cliente pode efetuar uma
conexão ao site www.usp.br (por exemplo), pois tem o seu endereço IP.
É importante frisar que após uma resolução DNS bem sucedida efetuada por um servidor DNS,
a mesma fica armazenada por um tempo determinado no cache do servidor. Assim,
posteriores consultas iguais serão respondidas de prontidão, enquanto durar o “Tempo de
Vida” definido no servidor DNS que é autoridade para a zona.
275
PROGRAMA
TÉCNICO CIDADÃO
SISTEMAS DE E-MAIL
O conteúdo abrangido neste capítulo visa capacitar os profissionais a exercer tarefas básicas e intermediárias nos sistemas de e-mail no Linux.
Existem diversos “Servidores de e-mail” no Linux, mas focalizaremos nossos estudos no Sendmail e no Postfix. Estudaremos o Sendmail porque é um requisito para a prova 102 do LPI, onde
são abrangidas tarefas de configuração básicas desse sistema.
Como um adendo, aprenderemos como configurar similarmente o Postfix, que é um Servidor de
e-mail mais atual e amplamente utilizado em relação ao Sendmail.
Transações de e-mail
Antes de entrar em tópicos específicos de configuração dos servidores de e-mail, precisamos
compreender minuciosamente quais as etapas envolvidas no processo de envio e recebimento
de mensagens.
De uma forma geral, estes processos não são específicos do Linux, sendo cabíveis
independente de sistema operacional ou software de e-mail cliente e/ou servidor.
Existem diversos termos envolvidos nas transações de e-mail, conforme ilustração à seguir:
276
PROGRAMA
TÉCNICO CIDADÃO
MUA - Mail User Agent
Ao enviarmos um e-mail para alguém, utilizamos um cliente de e-mail, que é chamado de MUA
(Mail User Agente) no processo. Esse cliente de e-mail pode ser um Webmail ou um software
como o Microsoft Outlook Express® ou o Novell Evolution® por exemplo.
277
PROGRAMA
TÉCNICO CIDADÃO
SMTP – Simple Mail Transfer Protocol
O MUA utiliza o protocolo SMTP para entregar os emails para o servidor de mensagens
responsável pelo nosso domínio (Geralmente o provedor de acesso ou o servidor interno da
empresa).
O protocolo SMTP utiliza a porta 25/tcp para comunicação.
MTA – Mail Transfer Agent
Todo servidor de emails envolvido no processo é chamado de MTA (Mail Transfer Agent). A
função de um MTA é basicamente determinar para onde devem ser encaminhados os emails
que chegam até ele. Se o MTA determinar que é o responsável para o envio de mensagens do
domínio que consta no campo do destinatário, ele geralmente armazena a mensagem em um
recipiente (Arquivo ou diretório) denominado caixa postal, que pode ser consultada
remotamente pelos MUA através dos protocolos POP3 e SMTP, explicados adiante.
Caso o MTA determine que o destino da mensagem não seja local, ele faz uma pesquisa DNS
em busca do registro MX do respectivo domínio do e-mail do destinatário (Tudo que vem depois
do arroba), que no exemplo é “uol.com.br”, e utiliza o protocolo SMTP para fazer a entrega da
mensagem ao servidor de destino. Essa entrega entre servidores é chamada RELAY de
mensagens.
POP3 e IMAP
Para ler os emails situados em um servidor remoto, um MUA utiliza o protocolo POP3 (PostOffice Protocol) ou o protocolo IMAP (Internet Message Access Protocol).
Cada um desses protocolos tem uma forma diferente de “trazer” as mensagens para o MUA.
278
PROGRAMA
TÉCNICO CIDADÃO
O POP3 é bem simples: utiliza a porta 110/tcp, e o MUA se conecta no servidor POP3 para
efetuar o download das mensagens após autenticação do usuário dono da caixa postal.
Geralmente, a única opção que o protocolo tem é deixar ou não uma cópia das mensagens no
servidor.
O IMAP na verdade é um protocolo desenvolvido para “acesso remoto à caixa postal”,
permitindo o usuário ler os emails através de um MUA sem que seja necessário efetuar o
download dos mesmos. Ele utiliza a porta 143/tcp para comunicação.
Sendmail
Muito comum em sistemas UNIX, o sendmail é um MTA utilizado durante cerca de 3 décadas
atrás até os dias de hoje, onde é também amplamente utilizado.
Por ter tanto tempo de vida, o sendmail se tornou amplamente conhecido por administradores
UNIX ao redor do mundo, sendo muito utilizado no Linux também. Graças ao seu tempo de vida,
o sendmail também foi herdando uma complexa interface de configuração agregada ao arquivo
sendmail.cf, que geralmente fica localizado no diretório /etc.
O sendmail.cf é o arquivo principal de configuração do sendmail.
Instalando o sendmail no Debian
Seguindo o padrão da apostila, estamos nos baseando na distribuição Debian Woody 3.0 para
instalações, mas o resultado final não deve ser muito diferente em outras distribuições. Basta
instalar os pacotes necessários, e este passo vale para todas as distribuições, o que diferencia
são os nomes dos pacotes e os gerenciadores de pacotes, geralmente.
Basta utilizar o apt-get para instalar o pacote sendmail, da seguinte forma:
# apt-get install sendmail
Reading Package Lists... Done
279
PROGRAMA
TÉCNICO CIDADÃO
Building Dependency Tree... Done
The following extra packages will be installed:
m4 perl perl-modules
The following packages will be REMOVED:
exim
The following NEW packages will be installed:
m4 perl perl-modules sendmail
0 packages upgraded, 4 newly installed, 1 to remove and 0 not upgraded.
Need to get 3453kB of archives. After unpacking 12.9MB will be used.
Do you want to continue? [Y/n]
Repare que o Debian remove automaticamente o pacote exim, que é outro MTA que provê o
pacote virtual “mail-transport-agent”, e agora está sendo subsidiado pelo pacote sendmail.
Também serão instalados pacotes extra que auxiliarão na configuração do sendmail (m4 perl e
perl-modules).
Assim que o pacote do sendmail for instalado, será lançado seu assistente de configuração
(conforme abaixo), caso não queira consigurar o sendmail agora, poderá fazêlo mais tarde
através do utilitário sendmailconf ou criando-se “na unha” o arquivo de configuração do
sendmail, mas como nós somos meros mortais, faremos uso do utilitário de configuração do
Debian para o sendmail:
You are doing a new install, or have erased /etc/mail/sendmail.mc.
If you've accidentaly erased /etc/mail/sendmail.mc, check /var/backups.
Sendmail will not start until it is configured.
Do you wish to configure sendmail now, or wait until later?
Configure now ? (y/N) Y
To configure sendmail later, type sendmailconfig
After configuring sendmail, you can start it via /etc/init.d/sendmail start
Press [ENTER]
Ao pressionar a tecla [ENTER] nesse ponto, será lançado o utilitário sendmailconf, que nos
guiará através de perguntas para a criação de um novo arquivo sendmail.cf.
280
PROGRAMA
TÉCNICO CIDADÃO
Configurando o Sendmail no Debian
Comentaremos somente os passos importantes para a configuração do servidor de e-mail,
descartando alguns passos para diminuir a complexidade também.
Mail Name
--------Your `mail name' is the hostname portion of the address to be shown on
outgoing news and mail messages (following the username and @ sign). This
name will be used by other programs besides sendmail; it should be the single,
full domain name (FQDN) from which mail will appear to originate.
Mail name? [apostilas.utah.net.br]
Nessa parte devemos configurar o “Mail Name” do sistema, que é a parte que aparecerá após o
“@” (arroba) nos emails gerados neste servidor.
Smart Host
---------A "Smart Host" is one that can deliver mail to external machines. By using
a "Smart Host", we don't need DNS, or good connectivity ourselves. This is
most likely what you want if you have a dialup link, or sit behind a firewall.
To enable this option, give the name of the host to which all non-local mail
should be forwarded. Otherwise leave the option empty.
To remove a prior name, use `NONE'.
Smart Host:? []
podemos configurar aqui uma “Smart Host”, que num sistema de e-mail refere-se a outro
servidor de e-mail que serviria como um distribuidor de emails para nosso servidor. Um bom
exemplo disso seria nosso servidor interno de e-mail no trabalho utilizar o servidor de e-mail do
provedor de acesso a internet como Smart Host, assim, todos os emails que precisem ser
enviados para “fora” serão repassados para o servidor de e-mail do provedor.
Deixe a opção em branco para desativar essa característica.
SMTP Mailer
281
PROGRAMA
TÉCNICO CIDADÃO
----------If you plan to exchange mail with other computers, you should enable the
SMTP mailer. Even if you don't plan to exchange mail with other computers,
it is still a good idea to enable this so local programs can use it.
Enable the SMTP mailer? [Y]
Esta opção habilita o suporte a conexões SMTP do sendmail, pois ele não precisa do SMTP para
lidar com emails locais ou com Smart Hosts (Nesse caso, ele seria um cliente SMTP e não um
servidor).
Mail Acceptance
--------------Sendmail is usually configured to accept mail for your mail name
(apostilas.utah.net.br). However, under special circumstances you
may not wish sendmail to do this, particularly if (and disabling this option
generally requires that) mail for `apostilas.utah.net.br' is MXed
to another host. If in doubt, it is safe to leave this option enabled.
Accept mail for `apostilas.utah.net.br'? [Y]
Nesta opção configuramos se o sendmail aceitará entregar emails cujo destino seja nosso nome
FQDN, que no exemplo é apostilas.utah.net.br. Em uma configuração normal isso é necessário
e pode evitar muitos problemas de configuração.
Alternate Names
--------------In addition to the canonical mail name `apostilas.utah.net.br', you can
add any number of additional alternate names to recognize for receiving mail.
If other hosts are MXed to you for local mail, this is where you should list
them. This list is saved into the file /etc/mail/local-host-names
so it can be changed later as needed.
To answer this question, separate each alternate name with a space, or answer
`NONE' to eliminate all alternate names.
Alternate names? []
282
PROGRAMA
TÉCNICO CIDADÃO
Nesse ponto podemos configurar a lista de domínios que nosso servidor de e-mail aceitará
mensagens. Essa lista de domínios será salva no arquivo /etc/mail/local-host-names, e
qualquer domínio que quisermos delegar o controle dos emails para nosso sendmail deve ser
adicionado nessa lista.
Best MX is Local
---------------If enabled, this option will cause sendmail to accept mail as though locally
addressed for any host that lists this machine as the best possible MX record.
This generates additional DNS traffic, but should be OK for low-to-medium
traffic hosts. N.B.: This feature is fundamentally incompatible with wildcard
MX records. If you have a wildcard MX record that matches your domain, you
cannot use this feature.
Assume best MX is local? [N]
Ativar esta opção costuma ser uma boa prática pois diminui um pouco a administração dizendo
ao sendmail para aceitar emails de domínios cuja pesquisa DNS informe que ele mesmo é o MX
para aquele domínio. Isso também gera uma “pequena” falha de segurança, pois um agressor
pode forjar uma pesquisa DNS (Talvez invadindo o servidor DNS que na maioria dos casos não é
a mesma máquina...) apontando o MX para nosso servidor de e-mail, fazendo-o aceitar emails e
inclusive fazer RELAY para estes domínios e dependendo da configuração isso pode deixar
nosso servidor como RELAY aberto, estado impraticável na internet, pois permite que utilizem
nosso servidor para envio de SPAMs, por exemplo.
Sendmail Restricted Shell
------------------------If enabled, this option causes sendmail to use the sendmail restricted shell
program (smrsh) instead of /bin/sh for mailing to programs. This improves your
ability to control what gets run via e-mail; only those programs which appear
in a special directory can be run. If you enable this option, please carefully
read the smrsh(8) man page for further information.
Use the Sendmail Restricted Shell (smrsh)? [Y]
283
PROGRAMA
TÉCNICO CIDADÃO
Esta opção “deve” ser ativada por padrão no sendmail (Apesar de não estar disponível em
versões mais antigas do software), pois evita algumas falhas de segurança que permitem ao
atacante executar comandos arbitrários no sistema através de falhas no sendmail.
Habilitando esta opção, estaremos forçando o sendmail a utilizar um shell restrito (shrsh) para
seu funcionamento ao invés de um shell válido para usuários que costumam “interagir” com o
sistema, como o sh ou o bash.
Reload the running sendmail now with the new configuration? [Y]
Ao terminar a configuração do sendmail com o utilitário sendmailconf, respondemos “Y” para
essa questão (caso ela apareça) para instruir ao sistema para reiniciar os daemons do serviço
sendmail.
Para fazer isso manualmente, podemos utilizar o comando:
# killall -HUP sendmail
Testando sua configuração
Nesse momento, nosso sendmail já deve estar em pleno funcionamento (repare nos arquivos
criados no diretório /etc/mail). Vamos utilizar o comando mail como MUA para testar o envio
local de mensagens do sendmail. Isso geralmente é o suficiente para comprovar o
funcionamento básico do sendmail.
Caso não exista, vamos criar um usuário de testes que será nosso destinatário das mensagens
“por enquanto”:
# useradd -m aluno
# passwd aluno
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
284
PROGRAMA
TÉCNICO CIDADÃO
O comando abaixo acionará o MTA padrão do sistema (No nosso caso, o sendmail, antes que
esqueçam) para enviar nossa mensagem gerada com o comando mail para a caixa postal
correspondente (repare que não especificamos um e-mail no formato usuario@domínio).
# mail aluno
Subject: Assunto da Mensagem
Digite toda a mensagem...
....
Quando terminar, digite uma linha contendo
somente o sinal de ".", conforme abaixo.
.
Cc:
Uma boa forma de de acompanhar o funcionamento do servidor de emails e estar alerta para
algum erro de configuração é analizando os logs de e-mail, que no caso do Debian ficam no
arquivo /var/log/mail.log e podem ser acompanhados com o comando:
# tail -f /var/log/mail.log
Entradas corretas para o envio de nossa mensagem de testes se assemelham com o seguinte:
A)
Feb 7 22:50:21 apostilas sendmail[1374]: j180oKRV001374: from=root, size=159, class=0,
nrcpts=1, msgid=<[email protected]>, RELAY=root@localhost
B)
Feb 7 22:50:27 apostilas sm-mta[1376]: j180oL7e001376: from=<[email protected]>,
size=455, class=0, nrcpts=1, msgid=<[email protected]>,
proto=ESMTP, daemon=MSA, RELAY=localhost [127.0.0.1]
C)
Feb
7 22:50:27 apostilas sendmail[1374]: j180oKRV001374: to=aluno, ctladdr=root (0/0),
delay=00:00:07, xdelay=00:00:06, mailer=RELAY, pri=30043, RELAY=[127.0.0.1] [127.0.0.1],
dsn=2.0.0, stat=Sent (j180oL7e001376 Message accepted for delivery)
285
PROGRAMA
TÉCNICO CIDADÃO
D)
Feb 7 22:50:27 apostilas sm-mta[1378]: j180oL7e001376: to=<[email protected]>,
ctladdr=<[email protected]> (0/0), delay=00:00:00, xdelay=00:00:00, mailer=local,
pri=30682, dsn=2.0.0, stat=Sent
Dividimos as entradas para facilitar a compreensão do aluno, mas elas aparecem em seqüência
no arquivo de log.
A primeira entrada (A) mostra que tudo ocorreu bem na entrada da mensagem na fila. A
segunda entrada (B) demonstra que o sendmail determinou que o melhor transporte para a
mensagem é local (Não é necessário efetuar uma pesquisa DNS para descobrir o registro MX
correspondente ao domínio), e que para isso foi aberta uma conexão SMTP com o host local
(127.0.0.1, vejam a importância da interface loopback). O item C diz que a mensagem foi aceita
com sucesso para entrega e o item D diz que a mensagem foi entregue com sucesso para a
caixa postal do usuário.
Nesse ponto, o sendmail adicionou a mensagem a caixa postal do usuário (caso ela exista) que
fica em /var/spool/mail/<usuário>, que em nosso caso é: /var/spool/mail/aluno.
Este “estilo” de caixa postal é chamado de mbox e é muito conhecido em ambientes UNIX, além
de ser o formato mais simples de caixa postal.
Um arquivo mbox nada mais é do que um arquivo de texto normal que contém todas as
mensagens de e-mail da “caixa” escritas seqüencialmente. Vejamos como ficou nosso arquivo
mbox do usuário aluno (/var/spool/mail/aluno) que contém uma mensagem:
# cat /var/mail/aluno
From [email protected] Mon Feb 7 23:08:59 2005
Return-Path: <[email protected]>
Received: from apostilas.utah.net.br (localhost [127.0.0.1])
by apostilas.utah.net.br (8.12.3/8.12.3/Debian-7.1) with ESMTP id j1818w7e001413
for <[email protected]>; Mon, 7 Feb 2005 23:08:58 -0200
Received: (from root@localhost)
by apostilas.utah.net.br (8.12.3/8.12.3/Debian-7.1) id j1818vNW001411
for aluno; Mon, 7 Feb 2005 23:08:57 -0200
Date: Mon, 7 Feb 2005 23:08:57 -0200
286
PROGRAMA
TÉCNICO CIDADÃO
From: root <[email protected]>
Message-Id: <[email protected]>
To: [email protected]
Subject: Assunto da Mensagem
Content-Length: 116
Digite toda a mensagem...
....
Quando terminar, digite uma linha contendo
somente o sinal de ".", conforme abaixo.
Cada mensagem é dividida em duas partes. A primeira (colocada propositadamente em
negrito para facilitar a leitura) é o cabeçalho da mensagem, que contém informações sobre a
mensagem, como o assunto, remetente, destinatário, etc. Todo o restante do e-mail, a contar
da primeira linha em branco, é o corpo da mensagem.
Vamos agora verificar se o usuário aluno realmente consegue “ler” a mensagem enviada. Para
isso, vamos primeiro escolher outro terminal e logar nele com o usuário aluno.
Linux apostilas 2.4.18-bf2.4 #1 Son Apr 14 09:53:28 CEST 2002 i686 unknown
Most of the programs included with the Debian GNU/Linux system are
freely redistributable; the exact distribution terms for each program
are described in the individual files in /usr/share/doc/*/copyright
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
You have mail.
$
Repare que o o sistema avisa automaticamente que o usuário têm novas mensagems. Para ler,
utilize o comando mail e em seguida escolha o número associado a mensagem que deseja ler,
conforme abaixo:
$ mail
287
PROGRAMA
TÉCNICO CIDADÃO
Mail version 8.1.2 01/15/2001. Type ? for help.
"/var/mail/aluno": 1 message 1 new
>N 1 [email protected] Mon Feb 7 23:08 22/768 Assunto da Mensagem
&1
Isso exibirá a mensagem “1” na tela. Para sair, utilize a tecla [Q]:
&q
Saved 1 message in /home/aluno/mbox
$
Repare que o usuário foi notificado que 1 (uma) mensagem foi salva no arquivo mbox dentro
do diretório $HOME do usuário. Isso “remove” os emails lidos do arquivo global de caixa postal,
adicionando-o em um arquivo mbox local do usuário. Dessa forma, para ler os emails da caixa
postal local, utilizamos a opção -f do comando mail, conforme abaixo:
$ mail
No mail for aluno
$ mail -f
Mail version 8.1.2 01/15/2001. Type ? for help.
"/home/aluno/mbox": 1 message
> 1 [email protected] Mon Feb 7 23:08 23/779 Assunto da Mensagem
&q
$
Repare no nome do arquivo que aparece no início do comando.
Fila de mensagens no Sendmail
O sendmail possui um sistema simples de gerenciamento da fila de mensagens, que possui um
lado bom e outro ruim.
O lado bom é que é simples gerenciar pois cada mensagem na fila cria um arquivo respectivo
no diretório /var/spool/mqueue, o que torna simples apagar uma ou mais mensagens na fila.
288
PROGRAMA
TÉCNICO CIDADÃO
O lado ruim é que isso torna o sendmail muito mais lento que outros MTA que utilizam sistemas
mais complexos (Ou completos?) para gerenciamento da fila de mensagens, como o Qmail e o
Postfix. Parte da culpa pela lentidão está no sistema operacional, que não consegue lidar com
um número excessivo (alguns milhares) de arquivos num mesmo diretório.
Para visualizar as mensagens na fila do sendmail, utilizamos o comando:
# sendmail -bp
/var/spool/mqueue is empty
Total requests: 0
ATENÇÃO
O comando mailq também serve ao mesmo propósito, mas é bom se acostumar
com a sintaxe oferecida pela apostila, pois reflete o que realmente é requisitado
pela Linux Professional Institute® e outras entidades certificadoras.
A fila de mensagens é atualizada automaticamente pelo daemon do sendmail a cada 4 horas
por padrão, para mudar esse intervalo, utilize o comando:
# sendmail -q1h45m
No exemplo, modificamos o tempo de atualização para 1 hora e 45 minutos.
Para forçar uma atualização neste mesmo instante, utilize:
# sendmail -q
Também é importante que o administrador do sistema saiba gerenciar a fila de mensagens com
base em alguns critérios, como o remetente ou o destinatário, por exemplo.
Digamos que você possua cerca de 500 emails na fila de mensagens e seu chefe precisa enviar
um e-mail urgente para um fornecedor e precisa garantir que este e-mail chegue logo. É
possível permitir que o e-mail do seu chefe “fure a fila” e seja processado imediatamente pelo
sendmail com o comando:
289
PROGRAMA
TÉCNICO CIDADÃO
# sendmail -qSchefe
Onde “chefe” é o e-mail do seu chefe, que consta como remetente da mensagem importante.
Para fazer o mesmo com base no destinatário, basta trocar a letra “S” (Sender) por “R”
(Recipient), ficando assim:
# sendmail -qRdestinatario
Aliases de e-mail
Uma das características mais importantes de um sistema de e-mail é sua capacidade de
“apelidar” um ou mais usuários do sistema, permitindo criar caixas postais “virtuais” (Embora
este não seja o termo mais correto hoje em dia) apontando para um ou mais usuários reais do
sistema.
Um exemplo clássico disso é o e-mail “webmaster”. No sistema de aliases, adicionamos uma
entrada como a abaixo no arquivo de aliases (geralmente o arquivo /etc/aliases):
webmaster:
aluno
Isso criará uma caixa postal virtual chamada “webmaster”, e todo e-mail que enviarmos para
webmaster (que tal [email protected] ?) será entregue na caixa postal do usuário aluno.
Caso necessite criar redirecionamentos para mais de um usuário (aluno e fulano, por exemplo),
basta separá-los por vírgula que as mensagens enviadas para o alias será redirecionada para
todas as caixas postais listadas na mesma linha (separadas por vírgula).
Adicione esta entrada (caso já não exista) no arquivo /etc/aliases e digite o comando a seguir
para “atualizar” a lista de aliases:
# sendmail -bi
/etc/mail/aliases: 5 aliases, longest 10 bytes, 83 bytes total
290
PROGRAMA
TÉCNICO CIDADÃO
Envie um e-mail de testes para “webmaster” e verifique a caixa postal do usuário aluno para
constatar o funcionamento do redirecionamento da caixa postal. Não se esqueça de dar uma
olhada no arquivo de log (/var/log/mail.log).
ATENÇÃO
O comando “newaliases” tem o mesmo efeito que o comando “sendmail -bi”, porém, é importante saber das duas formas, pois o formato mostrado na apostila é requisito de provas de certificação como as do Linux Professional Institute®.
O arquivo ~/.forward
Caso um usuário do sistema queira redirecionar os emails seus emails para outra(s) conta(s),
basta que ele adicione os respectivos nomes de usuários no arquivo ~/.forward que o sendmail
cuida do resto.
Isso é muito útil quando determinado funcionário da empresa saiu de férias e durante um
período os emails dele deverão ser redirecionados para outro usuário.
Atualmente
já
existem
técnicas
mais
avançadas
para
redirecionamento
de
emails,
principalmente com outros MTA, mas essa não deixa de ser uma forma simples de
redirecionamento.
Listas de destinatários
É possível criar um alias que referencie um arquivo contendo diversos emails, e todo e-mail
enviado para aquele determinado alias será encaminhado para cada um dos destinatários
listados no e-mail.
Por exemplo, digamos que seja necessário criar um e-mail [email protected], e
que quando enviarmos um e-mail para este endereço, todos os membros do grupo de vendas
receberão uma cópia. Para isso, basta criar um arquivo (/etc/mail/vendas.aliases, por
291
PROGRAMA
TÉCNICO CIDADÃO
exemplo) contendo a lista, um por linha, dos destinatários e incluir uma entrada como a seguir
no arquivo /etc/aliases:
vendas:
:include:/etc/mail/vendas.aliases
Não se esqueça de atualizar a lista de aliases com o comando “sendmail -bi”.
Domínios virtuais no Sendmail
Caso seja necessário que nosso servidor de e-mail sendmail tenha que lidar com mais de um
domínio, será necessário utilizar domínios virtuais para garantir que as mensagens enviadas
para [email protected] não sejam confundidas com as mensagens enviadas para
[email protected].
Os domínios virtuais existem nos servidores de e-mail para separar os domínios assim como
também existem nos servidores web para permitir hospedarmos mais de uma página no
mesmo servidor.
Configuração
Para configurar os domínios virtuais no sendmail, precisamos nos certificar de possuir
pelo
menos duas zonas “diferentes” configuradas num servidor DNS. No exemplo utilizaremos
utah.net.br e sun.com.br. As zonas devem ter seus registros MX apontando para o IP do
servidor sendmail a ser configurado, no exemplo este IP será 192.168.1.12, verifique o seu.
Faça testes com o comando dig para garantir que o registro MX existe para cada zona e estão
apontando para o IP correto. Testes de ping também costumam ajudar.
Todos os domínios virtuais (2 no meu caso) devem constar, um por linha, no arquivo /
etc/mail/local-host-names. Este costuma ser o erro mais comum dos administradores menos
experientes com sendmail
292
PROGRAMA
TÉCNICO CIDADÃO
Vamos adicionar mais alguns usuários no sistema para que possamos ter opções de
redirecionamento. Em nosso exemplo, adicionei os usuários: aluno, huguinho, zezinho e
luizinho, além de seus respectivos aluno2, huguinho2, zezinho2 e huguinho2.
Para ativar os domínios virtuais no sendmail, é preciso adicionar uma linha conforme abaixo no
arquivo sendmail.cf, logo após a ocorrência da Linha “Cwseu.hostname.fqdn” (no meu caso é
apostilas.utah.net.br), que define seu hostname para o sendmail. Esta linha costuma ficar por
volta da 152. Utilize a busca do vim para facilitar.
Kvirtuser hash /etc/mail/virtusertable
A partir de agora, devemos adicionar as informações de domínios virtuais no arquivo /
etc/mail/virtusertable. Segue um exemplo de como fica este arquivo em nosso exemplo:
[email protected] aluno
[email protected] huguinho
[email protected] zezinho
[email protected]
luizinho
@utah.net.br aluno
[email protected] aluno2
[email protected] huguinho2
[email protected] zezinho2
[email protected] luizinho2
@sun.com.br aluno2
Dessa forma, os emails enviados para [email protected] irão para a caixa postal do usuário
aluno, já os emails enviados para o e-mail [email protected] serão encaminhados para a caixa
postal do usuário aluno2, e assim por diante.
Adicionamos também duas contas “pega-tudo”, uma para cada domínio. Na última linha do
arquivo consta a conta pega-tudo para o domínio sun.com.br, e todo e-mail que não casar com
nenhum usuário”virtual” deste domínio será enviado para a conta aluno2. Não é uma boa
prática criar contas pega-tudo, pois costumam ser alvos fáceis de spammers.
293
PROGRAMA
TÉCNICO CIDADÃO
Para finalizar a configuração, precisamos compilar o mapa de hosts virtuais num formato legível
pelo sendmail (O formato hash) com o comando:
# cd /etc/mail
# makemap hash virusertable < virtusertable
Isso criará um arquivo .db do respectivo mapa, que no caso será /etc/mail/virtusertable.db.
Não se esqueça de repetir este passo a cada modificação no arquivo virtusertable.
Reinicie o daemon do sendmail e faça os testes. Caso algo dê errado, não se esqueça de
verificar os logs do sistema.
Enviando emails com telnet
Uma forma prática (e em alguns casos divertida) de isolar possíveis problemas no MUA e utilizar
uma interface direta com o MTA para enviar mensagens de e-mail para testes é através do
telnet.
O conceito é simples, basta utilizar o telnet (se não estiver instalado, instale) para se conectar à
porta 25 do servidor de emails e digitar os comandos conforme o exemplo abaixo, que enviará
um e-mail para o usuário [email protected].
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 apostilas.utah.net.br ESMTP Sendmail 8.12.3/8.12.3/Debian-7.1; Tue, 8 Feb 2005 01:28:10
-0200; (No UCE/UBE) logging access from: localhost(OK)-localhost [127.0.0.1]
EHLO localhost
250-apostilas.utah.net.br Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
294
PROGRAMA
TÉCNICO CIDADÃO
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
MAIL FROM: [email protected]
250 2.1.0 [email protected]... Sender ok
RCPT TO: [email protected]
250 2.1.5 [email protected]... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Digito o e-mail
e termino com ".",
conforme abaixo...
.
250 2.0.0 j183SALC002231 Message accepted for delivery
quit
221 2.0.0 apostilas.utah.net.br closing connection
Connection closed by foreign host.
Todos os comandos digitados manualmente estão destacados em negrito. O primeiro (EHLO)
diz ao MTA quem é você (repare que ele responde). Especificamos o remetente com o comando
“MAIL FROM:” e o destinatário com o comando “RCPT TO:”. O comando DATA inicia a edição
do corpo da mensagem. Para sair do telnet após o envio, utilize o comando quit.
DICA
Caso fique “aparentemente” preso no telnet, é possível forçar uma saída pressionando a seqüência de teclas [CONTROL]+[]] (fecha colchetes...). Aparecerá um
prompt Telnet>, basta utilizar o comando quit nele para sair.
Postfix
Estudaremos agora um dos mais revolucionários servidores de e-mail já desenvolvidos: o
Postfix. Ele é um robusto sistema de e-mail que possui algumas “raízes” do sendmail, mas é um
295
PROGRAMA
TÉCNICO CIDADÃO
produto completamente reformulado para as necessidades atuais da Internet, pois foi criado
com preocupação em segurança, velocidade e facilidade de integração.
A forma com que o Postfix é configurado permite fácil integração com outros produtos que o
adicionam funcionalidades, como filtros de e-mail (Antivírus e AntiSpam) e gerenciadores de
entrega.
O Postfix possui centenas de parâmetros de configuração controlados através de seu arquivo de
configuração principal, o arquivo main.cf. Felizmente, a configuração padrão do Postfix já utiliza
valores padrão corretos para a maioria dos cenários de utilização do Postfix. Sendo assim,
poucos parâmetros precisam ser realmente modificados para que o Postfix possa oferecer sua
funcionalidade básica.
O restante desse treinamento irá tratar dos parâmetros de configuração que devem ser
alterados em um arquivo de configuração padrão fornecido pela instalação do pacote Debian do
postfix encontrado nos CDs de instalação e/ou nos respositórios de pacotes oficiais Debian.
Instalação e configuração básica do Postfix
Basicamente esta parte se resume em instalar o pacote que provê o Postfix para s distribuição
Linux utilizada. Para instalar o pacote Debian do Postfix, use o comando a seguir:
# aptitude install postfix
Ao instalar o pacote postfix, o pacote do que estiver provendo “mail-transport-agent”
(Pode ser o exim ou o sendmail, por exemplo) será removido. Uma particularidade do
pacote Debian do Postfix é que o mesmo utiliza o debconf para sua configuração inicial básica.
Devido a isso, logo após instalar o pacote postfix, o script de pós-instalação do pacote irá
executar a etapa de configuração básica inicial do pacote.
296
PROGRAMA
TÉCNICO CIDADÃO
A primeira tela a ser exibida é a tela que lhe questiona que tipo de configuração você deseja
para o Postfix. Diversas configurações são possíveis, como Internet com smarthost, Internet Site,
Sistema satélite, Somente local e a opção Sem configuração.
Como o processo de configuração básica inicial do Postfix baseada em debconf ainda não pode
gerenciar todos os parâmetros geralmente necessários, o procedimento a ser usado é
selecionar a opção Local only, de modo que somente algumas perguntas serão feitas e, ao
terminar de respondê-las, você terá um Postfix com uma configuração que lhe permitirá enviar
e receber mensagens de e para usuários locais. A maioria das distribuições Linux já provêm
pacotes do Postfix com este nível de configuração.
Configurações adicionais para modificar o comportamento do Postfix devem ser feitas
diretamente no arquivo de configuração principal, /etc/postfix/main.cf.
Após escolher a opção Local only, surgirá uma pergunta lhe questionando sobre qual será o
Mail name padrão. O Mail name é a porção logo após o símbolo de arroba (@) dos endereços
de e-mail, e será usado para compor o endereço exibido no campo From: das mensagens
enviadas a partir do servidor Postfix. Por exemplo, caso uma mensagem seja enviada do
console do servidor pelo usuário joao e o Mail name esteja definido como utah.net.br, o
destinatário
da
mensagem
irá
recebê-la
e
visualizar
no
campo
From: da mesma
[email protected].
Responda No para a próxima pergunta, que questiona se o Postfix deverá acrescentar o sufixo .
dominio (na verdade, o que será acrescentado será .$mydomain, ou seja, ponto mais o valor
da variável $mydomain) em mensagens que contém somente um componente na porção
hostname.
A próxima pergunta questiona quais os domínios que o servidor Postfix deve considerar ele
mesmo como sendo o destino final. Ou seja, se você acrescentar o domínio uol.com.br nessa
listagem, o Postfix irá tentar entregar localmente todas as mensagens enviadas para endereços
297
PROGRAMA
TÉCNICO CIDADÃO
que contenham @uol.com.br no campo To:. Sendo assim, somente acrescente nesta listagem
os domínios que realmente serão hospedados no servidor Postfix sendo instalado. Este
parâmetro é equivalente ao arquivo /etc/mail/local-host-names do sendmail.
O padrão sugerido é o hostname totalmente qualificado (FQDN) do servidor onde o Postfix está
sendo instalado, localhost.utah.net.br e localhost. Acrescente a essa lista o(s) domínio(s) para
o(s) qual(is) você deseja que o Postfix seja o destino final. Por exemplo, caso o Postfix sendo
instalado tenha que ser o destino final para os domínios utah.net.br e sun.com.br, a listagem
informada como resposta a essa pergunta ficaria como:
apostilas.utah.net.br, localhost.utah.net.br, localhost, utah.net.br, sun.com.br
Essa lista pode ser modificada posteriormente no parâmetro mydestination do arquivo /
etc/postfix/main.cf.
A próxima pergunta questiona para qual endereço de e-mail as mensagens enviadas para o
usuário root deverão ser redirecionadas. O Postfix não entrega mensagens diretamente na
caixa do usuário root, pois precisaria ser executado com privilégios de root para fazê-lo. Como
isso pode ser uma falha de segurança, o padrão é definir uma conta de usuário comum para
onde as mensagens destinadas ao usuário root serão enviadas.
Ao definir essa conta, um entrada será acrescentada no arquivo de aliases padrão do Postfix, o
arquivo /etc/aliases, criando um alias de root para o usuário definido. O sistema de aliases
funciona exatamente como no sendmail.
Pronto. A etapa de configuração será finalizada e o Postfix será iniciado, já funcionando para o
envio e recebimento de mensagens de e para usuários locais.
298
PROGRAMA
TÉCNICO CIDADÃO
Controlando o daemon do Postfix
Após a definição ou modificação da maioria dos parâmetros do Postfix, não é necessário
reiniciá-lo por completo. Apenas um reload é necessário, o que já fará com que quaisquer
modificações nos arquivos de configuração do Postfix passem a ser válidas.
Somente alguns parâmetros requerem que o Postfix seja reiniciado por completo (com o
comando postfix restart, por exemplo) para que passem a ser válidos. O parâmetro
inet_interfaces, do qual trataremos adiante, é um exemplo.
Ao longo desse treinamento, será assumido que sempre que a definição ou modificação de um
parâmetro do Postfix seja requisitada, um reload do mesmo seja executado. Quando existir a
necessidade de um restart completo do Postfix, isso será explicitamente informado.
Para referência, um reload do Postfix é equivalente a executar o comando a seguir :
# postfix reload
Um restart do Postfix, por sua vez, é equivalente a executar o comando a seguir :
# postfix restart
Configurações específicas do Postfix
Veremos agora a função de alguns parâmetros do Postfix no arquivo /etc/postfix/main.cf.
Gerenciamento das configurações
Existem duas formas básicas de gerenciar as configurações do Postfix. A primeira é a mais
óbvia, editando diretamente o arquivo main.cf. A segunda é através do comando postconf
(Consulte a man page para maiores detalhes).
299
PROGRAMA
TÉCNICO CIDADÃO
O postconf permite basicamente visualizar e editar as configurações do postfix a partir da linha
de comando, sem a necessidade de utilizar um editor de texto para edição do main.cf.
Consultando parâmetros
O funcionamento é bem simples. Para exibir todos os parâmetros que o Postfix suporta, assim
como seus respectivos parâmetros configurados atualmente, digite:
# postconf
Isso resultará em umas 300 linhas possíveis, cada uma contando um parâmetro de
configuração do Postfix. Os valores padrão para cada parâmetro podem ser visualizados com a
opção -d do postconf, assim:
# postconf -d
Para direcionar sua pesquisa a um parâmetro específico, basta especificar o parâmetro na
frente do comando. Por exemplo, digamos que seja você queira visualizar o parâmetro
myhostname, utilize:
# postconf myhostname
myhostname = apostilas.utah.net.br
Este é o valor atual do parâmetro myhostname. Para exibir o valor “padrão”, utilize:
# postconf -d myhostname
myhostname = apostilas
Para exibir somente os parâmetros diferentes do padrão, utilize:
# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
command_directory = /usr/sbin
config_directory = /etc/postfix
300
PROGRAMA
TÉCNICO CIDADÃO
daemon_directory = /usr/lib/postfix
mailbox_command =
mailbox_size_limit = 0
mydestination = apostilas.utah.net.br, apostilas.utah.net.br, localhost.utah.net.br, localhost,
utah.net.br
myhostname = apostilas.utah.net.br
mynetworks = 127.0.0.0/8
myorigin = /etc/mailname
program_directory = /usr/lib/postfix
recipient_delimiter = +
relayhost =
setgid_group = postdrop
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
Estes são geralmente os parâmetros que foram definidos no arquivo main.cf, mesmo que
através do postconf.
Modificando parâmetros
Agora vamos aprender a utilizar o postconf para modificar parâmetros de configuração sem
“tocar” no arquivo main.cf.
A sintaxe também é bem simples, baste acionar a opção -e do postconf e especificar (entre
aspas, geralmente) o valor desejado para a opção, conforme exemplo abaixo:
# postconf mydomain
mydomain = utah.net.br
# postconf myhostname
myhostname = apostilas.utah.net.br
# postconf -e myhostname="apostilas.\$mydomain"
# postconf myhostname
myhostname = apostilas.$mydomain
Não se esqueça que o caractere “$” deve ser escapado com barra invertida “\” para que o shell
não interprete como uma variável de ambiente.
Agora verifique as mudanças no arquivo /etc/postfix/main.cf.
301
PROGRAMA
TÉCNICO CIDADÃO
Para quais endereços IP ou redes permitir RELAY?
O parâmetro mynetworks controla para quais endereços IPs e/ou redes o Postfix irá fazer
RELAY (oferecer o serviço de envio de mensagens). Segue um exemplo de configuração do
parâmetro mynetworks:
mynetworks = 127.0.0.0/8, 192.168.1.0/24, 200.1.2.3/32
No exemplo acima, o RELAY está sendo liberado para as redes 127.0.0.0/8 (rede da interface
de loopback), 192.168.1.0/24 (rede de classe C inválida de exemplo) e para o endereço IP (e
não rede) 200.1.2.3/32 (endereço hipotético usado como exemplo).
Utilize o exemplo acima como base para sua configuração e substitua os endereços IPs/redes
usados no exemplo pelos endereços IP/redes para os quais o Postfix terá que oferecer seus
serviços.
IMPORTANTE
O RELAY deve ser sempre liberado para a rede da interface de loopback,
127.0.0.0/8. Caso contrário, o Postfix não conseguira entregar nenhum tipo de mensagem localmente.
O hostname totalmente qualificado (FQDN) do servidor Postfix
O parâmetro myhostname indica ao Postfix qual o hostname totalmente qualificado (FQDN) da
máquina onde o Postfix está sendo implantado. O padrão é obter esse valor do hostname
padrão do servidor. É importante ter o hostname corretamente definido no arquivo /etc/hosts
para que o Postfix de forma geral funcione satisfatoriamente. Um exemplo de arquivo /
etc/hosts segue abaixo:
302
PROGRAMA
TÉCNICO CIDADÃO
127.0.0.1
localhost.localdomain localhost
192.168.1.12 apostilas.utah.net.br apostilas
Certifique-se de que o “nome curto” do servidor seja o único conteúdo do arquivo /
etc/hostname (isto é específico do Debian) e que a saída dos comandos abaixo seja
semelhante:
# cat /etc/hostname
apostilas
# hostname
apostilas
# hostname -f
apostilas.utah.net.br
# grep `hostname -f` /etc/hosts
192.168.1.12 apostilas.utah.net.br apostilas
Isso garante que a configuração de nomes do servidor esteja correta.
Como estamos revisando a configuração e vamos precisar utilizar o DNS, verifique também se
exite uma entrada de nameserver apontando para seu próprio IP (pode ser o loopback
também) no arquivo /etc/resolv.conf.
# cat /etc/resolv.conf
search utah.net.br
nameserver 127.0.0.1
Agora voltemos ao Postfix. Um exemplo de configuração do parâmetro myhostname seria :
# postconf myhostname
myhostname = apostilas.$mydomain
Constate também que o parâmetro mydomain comporta realmente o seu domínio, que deve
ser a mesma saída do comando dnsdomainname.
# dnsdomainname
utah.net.br
# postconf -e mydomain="`dnsdomainname`"
# postconf mydomain
mydomain = utah.net.br
303
PROGRAMA
TÉCNICO CIDADÃO
Dessa forma, é garantido que o Postfix esteja configurado corretamente com seu FQDN.
Em quais interfaces de rede permitir conexões SMTP
O parâmetro inet_interfaces controla em quais interfaces de rede o Postfix deverá aguardar por
conexões SMTP. Caso seja necessário oferecer os serviços do daemon SMTP para todas as redes
nas quais o servidor Postfix tenha uma interface de rede, defina o valor do parâmetro
inet_interfaces como a seguir:
inet_interfaces = all
Logicamente, as restrições do parâmetro mynetworks ainda são válidas para controle de quais
endereços IP e/ou redes podem fazer RELAY utilizando o Postfix, uma vez que o parâmetro
inet_interfaces somente controla em quais interfaces de rede o Postfix vai ouvir.
Somente no caso do servidor possuir mais de uma interface de rede é que este parâmetro
começa a se tornar útil. Conforme dito, se o valor de inet_interfaces estiver definido para “all”,
o postfix deixará a porta SMTP (25/tcp) aberta em todas as interfaces de rede, isso inclui a
interface loopback.
Digamos que seu servidor possua2 interfaces de rede (além da loopback, é claro), onde uma
fica com o IP 192.168.1.12 e a outra fica com o IP 200.1.2.3, e não queremos oferecer os
serviços do postfix para a interface de rede com o IP 200.1.2.3. A configuração ficaria assim:
inet_interfaces = 127.0.0.1, 192.168.1.12
A modificação do parâmetro inet_interfaces requer um restart do Postfix e não simplesmente
um reload.
DICA
Podemos constatar os resultados com o comando: “netstat -nl |grep :25”
304
PROGRAMA
TÉCNICO CIDADÃO
Serão mostradas as interfaces que possuem a porta 25 aberta. Isto é uma boa prática para todos os serviços de rede e deve se tornar hábito para administradores que
se preocupam com a segurança.
Configuração para caixas-postais no estilo Maildir
O padrão do Postfix é utilizar o formato de caixas-postais mbox (igual o sendmail). Mas o
Postfix pode lidar com diversos formatos de caixas-postais, e dentre elas, uma boa alternativa é
o formato Maildir, que organiza em uma estrutura de diretórios as mensagens da caixa-postal,
tornando a varredura da caixa postal muito mais rápida. Porém, para que isso seja possível,
precisamos configurar o Postfix para entregar as mensagens dos usuários locais nesse formato
de caixa-postal.
O parâmetro necessário é o home_mailbox, que não possui um padrão definido (O que leva ao
Postfix optar pelo formato mbox). Vejamos:
# postconf home_mailbox
home_mailbox =
# postconf -e home_mailbox="Maildir/"
# postconf home_mailbox
home_mailbox = Maildir/
# postfix reload
postfix/postfix-script: refreshing the Postfix mail system
Por padrão, o Postfix entrega mensagens no formato mbox sob o diretório /var/mail
(/var/spool/mail é um link simbólico para /var/mail). A configuração acima instrui o Postfix a
entregar as mensagens dos usuário em um diretório de nome Maildir, sob o diretório pessoal
de cada usuário.
Não é necessário a existência prévia de um diretório de nome Maildir sob o diretório pessoal de
cada usuário uma vez que o próprio Postfix se encarregará de criar tal diretório caso o mesmo
305
PROGRAMA
TÉCNICO CIDADÃO
ainda não exista, bem como criar a estrutura de subdiretórios necessária para a entrega das
mensagens e acertar quaisquer permissões necessárias.
Encaminhando mensagens para outro MTA
Por vezes, é necesário encaminhar mensagens geradas localmente no servidor de mensagens
ou através da rede para que sejam entregues em outro servidor de mensagens e não
localmente, assim como um SmartHost do sendmail.
Para habilitar o suporte a esse recurso, o parâmetro relayhost pode ser utilizado, configurado
da seguinte forma:
relayhost = [1.2.3.4]:25
Onde 1.2.3.4 é o endereço IP do servidor de mensagens para o qual as mensagens devem ser
encaminhadas. O endereço IP deve ser especificado entre colchetes para evitar pesquisas DNS
e agilizar o envio. Após os dois pontos, 25 representa no exemplo acima o número da porta TCP
onde o servidor de mensagens remoto está ouvindo por conexões SMTP (geralmente 25).
IMPORTANTE
O encaminhamento só será feito para mensagens com destino a usuários de domínios que não estejam listados no parâmetro mydestination. As mensagens que tenham como destino usuários de domínios listados no parâmetro mydestination serão entregues localmente, independente da configuração do parâmetro relayhost.
Definindo aliases
O arquivo de aliases do Postfix é definido pelo parâmetro alias_maps. O valor padrão desse
parâmetro no pacote Debian do Postfix é:
alias_maps = hash:/etc/aliases
Modifique somente no caso de querer especificar um arquivo de aliases alternativo.
306
PROGRAMA
TÉCNICO CIDADÃO
Outro ponto importante a ser lembrando é que o Postfix possui um comando próprio para gerar
a base de dados de aliases a partir do arquivo de aliases definido no parâmetro alias_maps. O
comando usado para geração dessa base de dados é o postalias. Segue abaixo um exemplo de
utilização do comando postalias para geração da base de dados de aliases:
# postalias /etc/aliases
O parâmetro alias_database define qual arquivo de aliases será lido pelo postfix para obter a
lista de aliases. Em uma configuração comum o valor desse parâmetro é idêntico ao parâmetro
alias_maps, que apontam para arquivos de mapa do tipo hash.
Ao utilizarmos o comando postalias em um arquivo de mapa (/etc/aliases, por exemplo), será
criado um arquivo binário no formato hash de mapa, e este arquivo terá o mesmo nome do
arquivo de entrada, mais a extensão “.db”. No nosso exemplo (e na maioria dos casos) o
arquivo binário criado pelo comando “postalias /etc/aliases” será “/etc/aliases.db”.
Definindo um alias para o postmaster
É de extrema importância definir um alias para o postmaster, uma vez que as mensagens de
erro enviadas pelo Postfix recomendam relatar o problema sendo reportado para o postmaster
do domínio em questão. O destino desse alias costuma ser a conta do usuário encarregado de
administrar o servidor de email.
Adicionalmente, é um padrão estabelecido em sistemas de controle de mensagens manter um
endereço no formato postmaster@dominio para receber mensagens administrativas e de
usuários que desejam relatar problemas ao responsável pelo gerenciamento de mensagens,
inclusive de usuários de outros domínios que precisem relatar um problema que possam
eventualmente estar enfrentando na tentativa de se comunicar com um usuário do domínio
atendido pelo Postfix.
307
PROGRAMA
TÉCNICO CIDADÃO
A sintaxe da definição do alias é exatamente a mesma usada na definição de um alias no MTA
sendmail. Segue abaixo um exemplo definindo um alias do postmaster para o usuário local
aluno:
postmaster:
aluno
Definindo um alias para o root
Da mesma forma que o alias para o postmaster, definir um alias para o root também é
extremamente importante. Até mesmo mais importante do que o caso do postmaster, uma vez
o Postfix, por razões de segurança, não entrega mensagens diretamente na caixa postal do
usuário. Para que a entrega direta para o usuário root funcionasse seria necessário que o
usuário Postfix pudesse gravar na caixa de mensagens do usuário root ou que o processo do
Postfix fosse executado com privilégios de root. Como um dos focos do Postfix é segurança, isso
não é permitido.
Sendo assim, é obrigatório ter definido um alias do usuário root para um usuário comum. Esta
configuração deve ser modificada e as mensagens com destino ao usuário root deverão ser
entregues na conta de um usuário comum encarregado da administração do servidor ou até
mesmo um grupo de usuários encarregados.
Como exemplo, a seguir veremos uma linha do arquivo de aliases do Postfix que define que as
mensagens destinadas ao usuário root serão entregues para o usuário aluno (o qual,
logicamente, já deve existir):
root:
aluno
IMPORTANTE
Não se esqueça de recriar os mapas de aliases com o comando “postalias /etc/aliases”.
308
PROGRAMA
TÉCNICO CIDADÃO
Domínios Virtuais no Postfix
O suporte a domínios virtuais no Postfix, assim como muitos outros de seus recursos, é
implementado utilizando mapas de lookup. Simplificando para nossos propósitos, um mapa de
lookup é onde o Postfix busca informações de equivalência de endereços de e-mail para
usuários.
O Postfix suporta domínios virtuais no estilo do sendmail e em seu próprio estilo. O suporte ao
estilo do sendmail só está disponível para compatibilidade com instalações que estão sendo
migradas do MTA sendmail para o Postfix. Em novas instalações, o melhor é utilizar o formato
do Postfix.
Para configurar o Postfix para buscar informações de domínios virtuais no mapa de lookup
correto, especifique-o na opção virtual_maps, conforme abaixo:
# postconf virtual_maps
virtual_maps =
# postconf -e virtual_maps="hash:/etc/postfix/virtual"
O arquivo /etc/postfix/virtual deve seguir o seguinte formato (Utilizaremos os mesmos
redirecionamentos da aula de sendmail):
utah.net.br Um comentário qualquer aqui
[email protected] aluno
[email protected] huguinho
[email protected] zezinho
[email protected]
luizinho
sun.com.br Um comentário qualquer aqui
[email protected] aluno2
[email protected] huguinho2
[email protected] zezinho2
[email protected] luizinho2
No exemplo acima, os redirecionamentos são os mesmos existentes no exemplo dado com os
domínios virtuais do sendmail.
309
PROGRAMA
TÉCNICO CIDADÃO
A principal diferença de formato do Postfix é que os domínios devem ser separados e deve
existir um cabeçalho com um comentário antes da primeira entrada para cada domínio.
Para ativar as configurações, execute:
# postmap /etc/postfix/virtual
# postfix reload
O primeiro comando cria o mapa em formato binário /etc/postfix/virtual.db. O segundo ativa
as configurações efetuadas no Postfix.
O conteúdo do arquivo /etc/postfix/virtual.db, ao contrário do arquivo /etc/postfix/virtual,
não pode ser lido normalmente (trata-se de um arquivo binário). O Postfix sabe como ler o
arquivo binário /etc/postfix/virtual.db, o que é feito em detrimento da leitura do arquivo /
etc/postfix/virtual, devido a leitura do arquivo binário ser extremamente mais rápida do que
interpretar todo o arquivo, /etc/postfix/virtual, em texto puro.
IMPORTANTE
NUNCA liste os domínios que serão tratados como virtuais no parâmetro mydestination. Nesse caso, simplesmente remova-os do parâmetro mydestination e trateos dentro do arquivo /etc/postfix/virtual, como exemplificado anteriormente.
Agora basta efetuar os testes da mesma forma que foram efetuados na aula de sendmail.
Servidores POP3 e IMAP
Agora que já implementamos o protocolo SMTP no servidor de email, pode ser necessário
disponibilizar acesso remoto às caixas postais através dos protocolos POP3 e IMAP, explicados
anteriormente.
É importante compreender que os protocolos POP3 e IMAP não são responsabilidade do MTA
instalado no sistema, como o Sendmail ou o Postfix. O suporte a esses protocolos é dados
310
PROGRAMA
TÉCNICO CIDADÃO
através de servidores específicos para cada um. Geralmente o serviço que provê suporte ao
POP3 é o mesmo que provê suporte à IMAP.
No Debian existem diversas alternativas, mas a mais simples, funcional e com boa interação
com o formato de caixas postais Maildir é o courier. Outras distribuições como a Conectiva por
exemplo utilizam o courier por padrão.
Instalando o Courier
Para instalar o courier com suporte a POP3 e IMAP no Debian, utilize o comando a seguir :
aptitude install courier-pop courier-imap
Após o download, descompactação e instalação dos pacotes courier-pop, courier-imap e suas
dependências, uma nota debconf será exibida, informando que o empacotamento do Courier
foi totalmente revisado. Simplemente tecle [Enter] para continuar. A instalação dos pacotes
será finalizada e os daemons POP (pop3d), IMAP (imapd) e de autenticação (authdaemon)
serão iniciados.
Verifique se o sistema já está aguardando por conexões nas portas adequadas:
# netstat -nl
tcp
0
# netstat -nl
tcp
0
|grep :110
0 0.0.0.0:110
|grep :143
0 0.0.0.0:143
0.0.0.0:*
LISTEN
0.0.0.0:*
LISTEN
Configurando o Courier
Após a instalação dos servidores POP e IMAP, o próximo passo é configurá-los. Os arquivos de
configuração de ambos os daemons, bem como todos os arquivos de configuração relacionados
a qualquer componente do Courier, estão localizados sob o diretório /etc/courier.
311
PROGRAMA
TÉCNICO CIDADÃO
A configuração do servidor POP é feita no arquivo /etc/courier/pop3d e a configuração do
servidor IMAP é feita no arquivo /etc/courier/imapd. O arquivo /etc/courier/authdaemonrc
não precisará ser modificado a menos que seja necessário aumentar a quantidade de daemons
de autenticação iniciados por padrão (ou seja, cinco instância do daemon) ou que outros
métodos de autenticação sejam usados.
Os valores padrões fornecidos pelos pacotes courier-pop e courier-imap já são adequados
para a grande maioria das instalações, mas caso seja necessário, seguem abaixo alguns
parâmetros que podem ser modificados para melhor adaptar os daemons de POP e IMAP ao
ambiente onde os mesmos estão sendo implementados :
● ADDRESS (POP e IMAP)
Esse parâmetro especifica em quais endereços IP o daemon IMAP irá ouvir por
requisições de clientes IMAP. O padrão é 0 (zero), que singifica que o daemon IMAP irá
ouvir por requisições de clientes IMAP em todos os endereços IP existentes no servidor
onde o mesmo foi instalado. Esse parâmetro é útil caso desejemos restringir o acesso
IMAP somente a um possível Webmail instalado localmente no servidor. Para isso,
simplesmente definiríamos o valor do parâmetro ADDRESS para o endereço da interface
de loopback, ou seja, 127.0.0.1.
● MAXDAEMONS (POP e IMAP)
Esse parâmetro controla a quantidade máxima de instâncias do daemon de IMAP que
poderão ser iniciadas. Por padrão, um máximo de 40 instâncias serão iniciadas. Ajuste
esse valor de acordo com a demanda do ambiente onde o Courier-IMAP está sendo
implantado.
● MAXPERIP POP e IMAP
Esse parâmetro controla o número máximo de conexões originadas de um mesmo
endereço IP a serem aceitas. Por padrão, no máximo 4 conexões originadas de um
312
PROGRAMA
TÉCNICO CIDADÃO
mesmo endereço IP serão aceitas. É interessante manter esse valor para um valor baixo
para que usuários mal-intencionados não consigam gerar um situação de negação de
serviços no servidor POP/IMAP devido a enviarem inúmeras requisições POP/IMAP ao
mesmo tempo.
Por outro lado, caso esteja enfrentando problemas de desconexão dos usuários,
aumentar a quantidade de conexões simultâneas originadas de um mesmo endereço IP
pode ajudar a resolver o problema, principalmente se o(s) usuário(s) enfrentando o
problema possui diversas pastas em sua caixa-postal POP/IMAP.
● IMAP_CAPABILITY (somente IMAP)
Esse parâmetro especifica uma lista de capabilities (capacidades) que o daemon IMAP
suporta. Repare que o Courier-IMAP deve ter sido compilado com o suporte a todas as
capalilities a serem especificadas como parâmetros para a lista de capabilities definida
por IMAP_CAPABILITY.
Por padrão, lista de capabilities especificada em IMAP_CAPABILITY é IMAP4rev1
UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES
SORT QUOTA IDLE. A lista de capabilities deve ser modificada para o valor IMAP4rev1
UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES
SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 IDLE.
Repare no acréscimo das capabilities AUTH=CRAM-MD5 e AUTH=CRAM-SHA1. Esses
métodos de autenticação adicionais poderão ser usados caso a autenticação com senhas
em texto puro seja usada, mas não com a autenticação utilizando senhas criptografadas.
313
PROGRAMA
TÉCNICO CIDADÃO
Testando o funcionamento
Para testar o funcionamento dos daemons POP e IMAP, precisamos de uma conta válida no
sistema. vamos utiliza a conta “aluno”.
Envie uma mensagem para o usuário utilizando o comando a seguir:
# echo "teste" | mail -s "Mensagem de testes" aluno
Após o envio da mensagem, consulte o log de mensagens do Postfix, localizado no arquivo /
var/log/mail.log e procure no final do arquivo por uma linha indicando a entrega da
mensagem na caixa-postal do usuário teste. Como exemplo, a mensagem se parecerá com a
linha a seguir:
Feb
8 17:30:51 apostilas postfix/local[994]: 7E1879D6E: to=<[email protected]>,
relay=local, delay=0, status=sent (maildir)
Após verificar o funcionamento da entrega da mensagem, utilize o comando telnet para testar
o funcionamento dos daemons de POP e IMAP.
Para testar o funcionamento do POP3, utilize:
# telnet 127.0.0.1 110
Isso abrirá uma conexão na porta 110/tcp, e deverá transcorrer o seguinte:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.
USER aluno
+OK Password required.
PASS 123
+OK logged in.
LIST
+OK POP3 clients that break here, they violate STD53.
1 406
314
PROGRAMA
TÉCNICO CIDADÃO
.
RETR 1
+OK 406 octets follow.
Return-Path: <[email protected]>
Delivered-To: [email protected]
Received: by apostilas.utah.net.br (Postfix, from userid 0)
id 7E1879D6E; Tue, 8 Feb 2005 17:30:51 -0200 (BRST)
To: [email protected]
Subject: Mensagem de testes
Message-Id: <[email protected]>
Date: Tue, 8 Feb 2005 17:30:51 -0200 (BRST)
From: [email protected] (root)
teste
.
QUIT
+OK Bye-bye.
Connection closed by foreign host.
#
Os comandos digitados foram destacados em negrito.
Uma explicação da sessão de testes acima seria:
Após executar o comando de conexão à porta 110/tcp (POP3) , o servidor POP respondeu com
algumas linhas informativas e, logo após a linha iniciada por +OK, o comando USER aluno foi
informado, com o intuito de indicar ao servidor POP qual usuário estamos tentando autenticar.
Após isso, o servidor POP requisitou a senha do usuário informado. Sendo assim, informamos a
mesma através do comando PASS 123. A autenticação então ocorreu com sucesso.
Após isso, o comando LIST foi utilizado para listar as mensagens na caixa-postal do usuário com
o qual completamos a autenticação. O servidor POP então respondeu com uma listagem das
mensagens, contendo seu ID interno e o tamanho de cada uma em octetos. Como em nosso
exemplo temos somente uma mensagem, o servidor POP exibiu somente os dados referentes a
mesma.
315
PROGRAMA
TÉCNICO CIDADÃO
Logo após, o comando RETR, seguido do ID da mensagem, foi usado para recuperar a
mensgem em questão. A mensagem foi então exibida completamente e, após a leitura da
mesma, o comando QUIT foi usado para desconexão do servidor POP.
Similarmente, um exemplo de uma sessão de testes do servidor IMAP seria :
# telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK Courier-IMAP ready. Copyright 1998-2002 Double Precision, Inc. See COPYING for distribution information.
001 LOGIN aluno 123
001 OK LOGIN Ok.
002 SELECT INBOX
* FLAGS (\Draft \Answered \Flagged \Deleted \Seen \Recent)
* OK [PERMANENTFLAGS (\Draft \Answered \Flagged \Deleted \Seen)] Limited
* 1 EXISTS
* 1 RECENT
* OK [UIDVALIDITY 1107891731] Ok
002 OK [READ-WRITE] Ok
003 FETCH 1 BODY[TEXT]
* 1 FETCH (BODY[TEXT] {7}
teste
)
003 OK FETCH completed.
004 LOGOUT
* BYE Courier-IMAP server shutting down
004 OK LOGOUT completed
Connection closed by foreign host.
#
Mais uma vez, os comandos digitados foram destacados em negrito.
Uma explicação da sessão de testes IMAP seria :
Após executar o comando de conexão à porta 143/tcp (IMAP) , o servidor IMAP respondeu com
algumas linhas informativas. Logo após, o comando 001 LOGIN aluno 123 foi informado, com
o intuito de indicar ao servidor IMAP qual usuário e senha iremos utilizar para autenticação.
316
PROGRAMA
TÉCNICO CIDADÃO
O servidor IMAP autenticou o usuário corretamente, sendo assim, informamos ao servidor IMAP
que desejamos ter acesso a pasta principal, INBOX, do usuário, através do comando 002
SELECT INBOX. O servidor IMAP respondeu informando que existe uma mensagem na caixa
INBOX e que o acesso de leitura e gravação foi cencedido.
Após isso, o comando 003 FETCH 1 BODY[TEXT] foi utilizado para ler o conteúdo do corpo da
mensagem existente na caixa. O conteúdo do corpo da mensagem foi exibido. Após isso, o
comando 004 LOGOUT foi usando para a desconexão do servidor IMAP.
A partir de agora, basta apontar a configuração dos MUA para nosso servidor que os protocolos
POP3 e IMAP estão funcionando corretamente.
317
PROGRAMA
TÉCNICO CIDADÃO
NETWORK INFORMATION SERVICES (NIS)
Muito comum em ambientes UNIX, os “Serviços de Informação da Rede”, ou simplesmente NIS
(Network Information Services) são serviços de centralização de informações que facilitam muito
a vida dos administradores e agregam flexibilidade para serviços como Autenticação e Resolução
de nomes.
O grande foco do NIS no Linux é prover uma interface transparente para busca de informações às
aplicações locais. Por exemplo, o Linux pode obter a lista de usuários e senhas de diversas formas. A mais simples é através dos arquivos planos locais (/etc/passwd, /etc/shadow e /
etc/group). Mas, dentre outras formas, um sistema Linux pode obter essas informações através
dos serviços NIS, consultando o servidor NIS em busca de informações de autenticação de usuários, por exemplo.
Esse arranjo entre usuários e NIS é denominado Autenticação Centralizada. Atualmente existem
outras formas de se prover autenticação centralizada ao Linux, como LDAP e SMB, por exemplo,
mas por enquanto focaremos nossos estudos no NIS, que é um tópico bem requisitado em provas
de Certificação Profissional Linux.
Autenticação centralizada com NIS
O conceito por detrás da autenticação centralizada com NIS é bem simples de compreender.
Consiste basicamente em se ter um servidor NIS com todos os usuários e senhas cadastrados e
disponibilizados para a rede através dos serviços NIS (Também conhecidos como serviços de
páginas amarelas, Yellow Pages). As outras estações ou servidores da rede podem obter
informações de autenticação diretamente do servidor NIS, criando um ambiente centralizado de
informações para autenticação de usuários, facilitando bastante a administração, pois basta
cadastrar usuários no servidor NIS e configurar as estações ou outros servidores para serem
clientes de nosso servidor NIS. Dessa forma, qualquer usuário válido no servidor NIS pode se
autenticar normalmente em qualquer cliente NIS da rede.
318
PROGRAMA
TÉCNICO CIDADÃO
A ilustração acima nos ajuda a compreender quais as partes envolvidas num arranjo de autenticação centralizada NIS. Como podem ver, o conjunto formado pelo servidor e os clientes NIS recebe o nome de “Domínio NIS”. O domínio NIS deve ser o mesmo entre os membros, veremos mais
adiante como configurar corretamente o domínio NIS.
Instalação dos serviços NIS
Para instalar o servidor NIS no Debian é muito simples, basta instalar o pacote nis que todas as
dependências (Como o portmap) virão naturalmente. Este pacote já provê os arquivos
necessários tanto para o servidor quanto para os clientes.
# aptitude install nis
Assim que o pacote for instalado, será lançado um script de configuração do debconf.
A primeira pergunta que ele faz é referente ao nome de nosso domínio NIS. Utilizaremos
“Utah.NIS” (Lembre-se: para o servidor e para os clientes). É importante saber que o nome do
319
PROGRAMA
TÉCNICO CIDADÃO
domínio NIS faz distinção entre maiúsculas e minúsculas, e este é um erro comum para
administradores iniciantes.
Em seguida o script do debconf nos mostra um aviso de que a configuração não está completa
(Ainda bem, pois não fizemos nada ainda...).
Ao término do script, o sistema iniciará os serviços portmap (requisito tanto para o cliente
quanto para o servidor NIS) e ypbind, que é o daemon cliente do NIS. Mas a inicialização do
ypbind não terá sucesso, pois como o próprio debconf nos avisou, a configuração não está
completa.
Configuração do servidor NIS
Na verdade, tudo que o debconf fez foi colocar o nome de domínio NIS desejado no arquivo /
etc/defaultdomain, que é lido pelos scripts de inicialização do Debian para definir que será
nosso domínio NIS.
Para verificar qual é o domínio NIS configurado atualmente, digite:
# nisdomainname
Utah.NIS
Este deve ser o mesmo do arquivo /etc/defaultdomain. Caso não seja, edite o arquivo /
etc/defaultdomain, modifique o domínio NIS (É a única coisa contida neste arquivo). e digite:
# nisdomainname `cat /etc/defaultdomain`
# nisdomainname
Utah.NIS
# cat /etc/defaultdomain
Utah.NIS
Perfeito, se chegamos a esse ponto, as coisa estão caminhando bem.
320
PROGRAMA
TÉCNICO CIDADÃO
Por padrão, o para que o NIS em nosso sistema se comporte como um servidor, “no Debian”, é
preciso editar o arquivo /etc/default/nis e modificar a variável NISSERVER para “master”. Isso
diz ao NIS que somos um servidor e não um cliente NIS.
Na verdade, a parte de configuração de cliente NIS também deve ser feita no servidor,
conforme veremos posteriormente. Isso significa que o servidor NIS também é um cliente.
Devemos agora iniciar os serviços NIS com o comando:
# /etc/init.d/nis start
Starting NIS services: ypserv yppasswdd ypxfrd ypbind [binding to YP server .......... backgrounded]
Agora o sistema inicia dois serviços: ypserv, que é o daemon responsável pelo servidor NIS, e o
ypbind, que, como já foi dito, é o daemon responsável pelo cliente NIS. Os daemons
yppasswdd e ypxfrd são responsáveis, respectivamente, pelo gerenciamento remoto de
senhas e replicação da base de dados.
Repare que a inicialização do ypbind é enviada para segundo plano, pois ainda não funciona
corretamente.
Nosso servidor NIS já está no ar, só falta “popularmos” sua base de dados com informações,
neste caso, usuários, senhas e grupos.
Para “CRIAR” a base de dados, já migrando informações sobre usuários existentes naquele
momento, utilize:
# /usr/lib/yp/ypinit -m
Isto inicializará nosso servidor NIS como principal (Configuração de servidores NIS escravos está
fora do escopo desse treinamento).
A primeira pergunta que surge diz respeito aos servidores NIS que devem ser conhecidos pelo
nosso. Para uma configuração com somente um servidor (nosso caso), basta pressionar
[CONTROL]+[D] e confirmar com “y” que o script irá prosseguir.
321
PROGRAMA
TÉCNICO CIDADÃO
Após a confirmação, a saída na tela deve ser algo parecido com isso:
We need some minutes to build the databases...
Building /var/yp/Utah.NIS/ypservers...
Running /var/yp/Makefile...
make[1]: Entering directory `/var/yp/Utah.NIS'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
Updating hosts.byname...
Updating hosts.byaddr...
Updating rpc.byname...
Updating rpc.bynumber...
Updating services.byname...
Updating services.byservicename...
Updating netid.byname...
Updating protocols.bynumber...
Updating protocols.byname...
Updating netgroup...
Updating netgroup.byhost...
Updating netgroup.byuser...
Updating networks.byaddr...
Updating networks.byname...
Updating shadow.byname...
make[1]: Leaving directory `/var/yp/Utah.NIS'
Esses nomes que aparecem nas linhas “Updating...”, como passwd.byname, group.byname,
hosts.byname, etc... são os mapas do NIS disponíveis nesse servidor. Cada um desses mapas é
construído com base nas informações obtidas nos arquivos de texto plano. Por exemplo, o
mapa passwd.byname é construído com base no arquivo /etc/passwd, e o mapa
hosts.byname é construído com base no arquivo /etc/hosts.
Os mapas ficam armazenados no diretório /var/yp/<domínio NIS>, que em nosso exemplo é
/var/yp/Utah.NIS.
322
PROGRAMA
TÉCNICO CIDADÃO
São as informações contidas nos mapas que ficam disponíveis para os clientes NIS. Portanto,
qualquer modificação nos arquivos planos, como a adição de um novo usuário, por exemplo,
demanda uma atualização nos respectivos mapas do servidor NIS.
Para atualizar os mapas do NIS após uma alteração nos arquivos planos, basta utilizar:
# cd /var/yp
# make
Por exemplo, se modificarmos a senha do usuário aluno:
# passwd aluno
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
# cd /var/yp
# make
make[1]: Entering directory `/var/yp/Utah.NIS'
Updating passwd.byname...
Updating passwd.byuid...
Updating netid.byname...
Updating shadow.byname...
make[1]: Leaving directory `/var/yp/Utah.NIS'
Repare nos mapas que foram modificados.
Configuração do cliente NIS
Para configurar o cliente NIS, devemos compreender como o Linux busca por informações sobre
algumas “entidades” do sistema.
O daemon responsável pelas pesquisas do cliente NIS, como já foi dito, é o ypbind. Seu arquivo
de configuração é o /etc/yp.conf.
Por padrão, o ypbind tenta encontrar o servidor NIS na rede através de broadcasting, mas para
facilitar a configuração e diminuir o tráfego excessivo gerado na redepor essas pesquisas,
323
PROGRAMA
TÉCNICO CIDADÃO
adicionamos a seguinte linha ao arquivo /etc/yp.conf para especificar o endereço IP (ou o
hostname, caso seja visível através de hosts ou DNS) do servidor NIS:
ypserver 192.168.1.12
Modifique o IP conforme sua configuração, desde que aponte para o IP do servido NIS na rede.
Efetuada a alteração, basta reiniciar os serviços NIS e dar continuidade com a configuração.
# /etc/init.d/nis restart
Starting NIS services: ypserv ypbind
Agora repare que o serviço ypbind não apresentou problemas. Caso isso não tenha ocorrido,
reveja os passos de configuração.
Entidades do Sistema
Entidades são velhas conhecidas de alguns programadores da linguagem C, e é justamente
assim que ela é vista no Linux. A melhor maneira de explicar o que vem a ser uma entidade
para o Linux é através de exemplos.
Por exemplo, a entidade passwd, por padrão, é obtida a partir de arquivos planos, mas para
que um cliente NIS possa obter informações sobre essa entidade a partir de um servidor NIS,
devemos modificar isso no arquivo /etc/nsswitch.conf, visto em breve.
Para visualisar uma entidade no Linux (Não, você não verá fantasmas ou outras coisas do
além...), basta utilizar o comando getent, seguido do nome da respectiva entidade. Tente
alguns dos exemplos abaixo para compreender melhor:
# getent hosts
# getent passwd
# getent shadow
Alternativamente, podemos especificar uma chave para a procura, pois o getent funciona como
um banco de dados. Por exemplo, o comando getent passwd nos mostra todas as entradas da
324
PROGRAMA
TÉCNICO CIDADÃO
entidade passwd. Se adicionarmos o nome de um usuário válido no sistema, somente será
mostrada a entrada relativa à ele, conforme exemplo abaixo:
# getent passwd aluno
aluno:x:1002:100::/home/aluno:/bin/bash
Neste outro exemplo, pesquisamos a entrada da entidade hosts que se refere ao IP
192.168.1.12:
# getent hosts 192.168.1.12
192.168.1.12 apostilas.utah.net.br apostilas
É exatamente dessa forma que os programas buscam por informações através das entidades.
O arquivo /etc/nsswitch.conf
Este é o arquivo de configuração do serviço de espaço de nomes no Linux (Não confunda com o
/etc/resolv.conf do DNS). É nele que especificamos onde o sistema irá procurar por
informações sobre entidades. O conceito é muito simples, pois baseia-se em entradas do tipo:
entidade:
método1 método2 método3 ...
Por exemplo, as linhas para as entidades passwd, shadow e group nos clientes NIS devem ser:
passwd:
group:
shadow:
files nis
files nis
files nis
Isso configura o mecanismo de busca das entidades passwd, shadow e group para tentar
localizar o item pesquisado primeiro nos arquivos planos locais (files), e caso não encontre, será
efetuada a pesquisa na base de dados NIS (nis).
Uma alteração nesse arquivo não requer que seja reinicializado nenhum serviço, pois são as
bibliotecas C do sistema (libc, presente na maioria dos binários) que lêem este arquivo.
325
PROGRAMA
TÉCNICO CIDADÃO
ATENÇÃO
NUNCA deixe de especificar o método “files” para as entidades passwd, shadow e group, pois isso pode impedir que usuários do sistema sejam validados, e
isso inclui o root, que por padrão não é adicionado nos mapas NIS.
Testando suas configurações
Para verificar se as configurações estão funcionando corretamente, basta consultar as
entidades passwd, group e shadow no cliente NIS. Estas devem apresentar os usuários que
somente estão cadastrados no servidor NIS e não existem no sistema local.
Caso esse teste ocorra sem problemas, podemos tentar efetuar login no cliente NIS como um
dos usuários cadastrados no servidor.
Após um login efetuado com sucesso, o usuário será notificado que não existe um diretório
$HOME para ele naquela máquina, e que estará utilizando a raiz “/” como seu $HOME
temporariamente.
Este aviso é normal, pois o diretório $HOME do usuário recém-autenticado na verdade só existe
no servidor onde ele foi cadastrado. Para solucionar esse problema e incrementar nossa solução
de autenticação centralizada partiremos para os serviços NFS, vistos no próximo capítulo.
Modificando as senhas dos usuários
Um usuário autenticado em um cliente NIS pode modificar sua senha através do comando
yppasswd. O comando yppasswd se comunica diretamente com o daemon yppasswdd que
roda no servidor NIS para permitir a troca da senha diretamente na base de dados NIS.
Vejamos um exemplo:
$ yppasswd
Changing NIS account information for aluno on apostilas.
326
PROGRAMA
TÉCNICO CIDADÃO
Please enter old password:
Changing NIS password for aluno on apostilas.
Please enter new password:
Please retype new password:
The NIS password has been changed on apostilas.
$
ATENÇÃO
Lembre-se de que um usuário normal não pode definir senhas muito simples (com
menos de 6 caracteres, por exemplo).
327
PROGRAMA
TÉCNICO CIDADÃO
SERVIDORES DE ARQUIVOS
Estudaremos agora os serviços de rede capazes de disponibilizar arquivos para seus clientes de
rede. Estes serviços são os chamados servidores de arquivos.
Os principais servidores de arquivos disponíveis no Linux atualmente são: NFS e SAMBA.
O NFS é o serviço de compartilhamento de arquivos padrão no UNIX e Linux, e será o primeiro
que estudaremos. Já o SAMBA é um serviço de compartilhamento de arquivos que roda sob
Linux ou UNIX para permitir interoperatibilidade dos serviços de compartilhamento de arquivos
entre máquinas Linux e Windows.
Network File System – NFS
O NFS (Network File System) é um sistema de compartilhamento de arquivos muito difundido
no mundo UNIX, e que naturalmente segue a mesma tendência no Linux.
Sua instalação e configuração é muito simples, conforme veremos adiante, e também completa
a solução de autenticação centralizada com NIS.
Instalando o NFS no Debian
Instalar um servidor NFS consiste em instalar os pacotes necessários e configurar um arquivo,
que veremos adiante.
No debian, existem 3 pacotes relacionados aos serviços NFS.
nfs-common: Traz binários e documentação necessários tanto para o cliente quanto para o
servidor NFS. É dependência para os outros 2 pacotes apresentados a seguir.
nfs-kernel-server: Implementação do servidor NFS diretamente no kernel do Linux. É muito
mais rápido que o nfs-user-server, porém possui menos características de configuração.
328
PROGRAMA
TÉCNICO CIDADÃO
nfs-user-server: Esta é a versão do servidor NFS que roda em espaço de usuário (não está
diretamente no código do Kernel) no Linux. É mais lento e menos maduro que o nfskernel-server.
Para servidores de produção, optaremos pelo nfs-kernel-server por suas características
óbvias. Portanto, para instalar um servidor NFS, basta utilizar:
# apt-get install nfs-kernel-server
Isso instalará também o pacote nfs-common, por ser uma dependência.
O script de pós-instalação do pacote emitirá uma notificação dizendo que o statd é o nome do
serviço que deve ser utilizado para controle de acesso através de tcp_wrappers (Visto em outro
Capítulo). Serão inicializados os serviços portmap (caso já não esteja) e nfs-kernel-server. O
portmap é necessário para mapear as conexões remotas.
Configurando o servidor NFS
Esta etapa é idêntica em qualquer sistema. O arquivo /etc/exports é o arquivo principal de
configuração do servidor NFS. É nele que definimos quais diretórios serão compartilhados,
assim como quais hosts terão que tipos de acesso à esses compartilhamentos.
Segue um exemplo de uma entrada do arquivo /etc/exports:
/home
192.168.1.0/255.255.255.0(rw,sync) 192.168.30.137(ro)
Essa
especifica
linha
que
qualquer
host
na
rede
192.168.1.0/24 tem acesso ao
compartilhamento /home com permissões de leitura e escrita (rw, read/write) e que as
operações de escrita serão tratadas de forma síncrona. Também foi configurado que o host
192.168.30.137 possui acesso somente-leitura (ro, read-only) ao compartilhamento.
329
PROGRAMA
TÉCNICO CIDADÃO
IMPORTANTE
Nunca deixe um espaço em branco entre o host e as opções entre parênteses neste
arquivo. Isso configuraria o host como acesso somente leitura e qualquer outro host
com acesso TOTAL ao compartilhamento.
Segue mais algumas opções que podem ser utilizadas nos compartilhamentos:
async: Todas as operações de escrita serão primeiro armazenadas na memória do
servidor para somente serem gravadas no disco em períodos de ociosidade. Torna o
servidor muito mais rápido e menos seguro em relação a opção sync.
root_squash: Mapeia todas as requisições dos clientes originadas do UID 0 (root) para um
usuário anônimo. Isso impede que o root dos clientes tenha os mesmos poderes que o
root do servidor sobre os arquivos. Esse é o comportamento padrão do servidor NFS. Para
desabilitar isso, utilize a opção no_root_squash.
nohide: Esta opção existe para impedir que um compartilhamento montado sobre a
mesma estrutura de outro compartilhamento fique invisível para o cliente NFS.
O arquivo /etc/exports será lido quando o serviço NFS iniciar (/etc/init.d/nfs-kernel-server
em nosso exemplo). Sempre que fizer alguma alteração no arquivo e o servidor já estiver
rodando, utilize o comando abaixo para atualizar a lista de compartilhamentos disponíveis no
servidor:
# exportfs -ar
Para verificar quais os compartilhamentos disponíveis em um servidor NFS, execute:
# showmount -e 192.168.1.12
Export list for 192.168.1.12:
/home 192.168.1.0/255.255.255.0,192.168.30.137
330
PROGRAMA
TÉCNICO CIDADÃO
Aponte a pesquisa para o endereço IP de outro servidor NFS para verificar a lista de
compartilhamentos NFS disponíveis nele.
DICA
utilize o comando rpcinfo -p <ip do servidor> para saber quais serviços remotos
estão disponíveis no servidor. Todos os serviços que dependem do portmap para
funcionar podem ser listados dessa forma.
Montando compartilhamentos remotos
Após ter o servidor configurado, podemos montar os compartilhamentos NFS nos clientes da
rede. Para isso, utilizamos o comando mount (estudado anteriormente). Por exemplo, para
montar o compartilhamento /home do servidor na estação cliente utilizamos:
# mount 192.168.1.12:/home /home
# mount
/dev/hda1 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda2 on /tmp type ext3 (rw)
192.168.1.12:/home on /home type nfs (rw,addr=192.168.1.12)
# df -h
Filesystem
Size Used Avail Use% Mounted on
/dev/hda1
372M 155M 198M 44% /
/dev/hda2
372M 8.1M 344M 3% /tmp
192.168.1.12:/home 372M 155M 198M 44% /home
O formato do caminho da origem (<ip>:<compartilhamento>) é peculiar do NFS, e portanto
não é necessário especificar o tipo do sistema de arquivos aqui.
Caso queira tornar este ponto de montagem fixo no cliente da rede, adicione a seguinte linha
ao fstab:
192.168.1.12:/home
/home nfs
defaults,rw
0
0
331
PROGRAMA
TÉCNICO CIDADÃO
Não se esqueça de substituir o IP do servidor pelo valor adequado em sua implantação.
SAMBA
Este é sem dúvida um dos serviços de rede mais importantes do Linux, pois oferece
interoperatibilidade no compartilhamento de arquivos entre Linux e Windows®. O samba
permite implementarmos o protocolo SMB no Linux. Este protocolo é a base para o
compartilhamento de arquivos em redes Microsoft®.
Curiosidade
Muitos devem se perguntar qual é a origem do nome SAMBA. A história se resume no seguinte:
Um programador certo dia precisou que o compartilhamento de arquivos entre Windows e Linux
funcionasse de forma transparente para ois dois sistemas. Com base no protocolo SMB, foi
criado um programa que mais tarde receberia o nome de SAMBA, pois é a palavra do dicionário
que mais se assemelha com a sigla do protocolo, SMB.
Instalação do Samba no Debian
No Debian woody (3.0), a versão disponível do software segue os padrões da série 2.2.x.
Atualmente já existem distribuições Linux que disponibilizam versões da série 3 do samba. Na
série 3 do samba, várias melhorias foram adicionadas,mas pouca coisa foi removida, portanto,
praticamente tudo que for absorvido aqui pode ser utilizado para implementar um servidor
samba da série 3.
Em Debian, o pacote fonte de nome samba fornece diversos pacotes binários diferentes. Tais
pacotes são :
samba - A LanManager like file and printer server for Unix.
samba-common - Samba common files used by both the server and the client.
smbclient - A LanManager like simple client for Unix.
332
PROGRAMA
TÉCNICO CIDADÃO
swat - Samba Web Administration Tool
samba-doc - Samba documentation.
smbfs - Mount and umount commands for the smbfs (kernels 2.0.x and above).
libpam-smbpass - pluggable authentication module for SMB password database
libsmbclient - Shared library that allows applications to talk to SMB servers
libsmbclient-dev - libsmbclient shared libraries
winbind: Service to resolve user and group information from Windows NT servers
Dependendo do uso a ser dado ao servidor Samba, combinações diferentes dos pacotes listados
acima serão necessários. No caso da instalação de um servidor de arquivos Samba comum,
utilizaríamos somente o pacote samba, que o apt cuida de instalar as dependências
necessárias:
# aptitude install samba
Após o download, descompactação e instalação dos pacotes que compõem o Samba e suas
dependências, o processo debconf de configuração Samba será iniciado e uma pergunta lhe
questionará se você deseja configurar o Samba utilizando o processo de configuração debconf.
Responda Sim e tecle [Enter] para continuar.
A próxima pergunta questiona qual o nome do domínio padrão a ser usado pelo servidor Samba
sendo instalado. Informe o nome do domínio (Ou grupo de trabalho) na caixa de texto e tecle
[Enter] para continuar. Esta pergunta define o parâmetro workgroup no arquivo de
configuração principal do Samba, o arquivo /etc/samba/smb.conf.
A próxima pergunta questiona se a criptografia de senhas deve ser utilizada e atenta para o
fato de que, caso senhas em texto puro sejam utilizadas, será necessário a mudança de
parâmetros no registro das estações Windows®. Responda Sim (ou seja, a criptografia de
senhas deverá ser utilizada) para a pergunta e tecle [Enter] para continuar. Esta pergunta
define o parâmetro encript passwords no arquivo de configuração principal do Samba.
Uma nota do debconf será exibida, informando que, nesta versão dos pacotes Debian do
Samba, os arquivos de log dos daemons smbd e nmbd estão localizados sob o diretório /
333
PROGRAMA
TÉCNICO CIDADÃO
var/log/samba e que, caso versões anteriores do Samba tenham instalado arquivos de log sob
o diretório padrão anterior, o diretório /var/log, esses arquivos serão automaticamente
movidos para /var/log/samba. Basta teclar [Enter] para continuar.
Uma nova pergunta debconf será feita, questionando se o arquivo de senhas criptografadas, o
arquivo /etc/samba/smbpasswd, deve ser criado. Selecione a opção Sim e tecle [Enter] para
continuar.
A instalação dos pacotes será finalizada e os daemons do Samba, smbd e nmbd, serão
iniciados.
Caminhos de instalação
O layout dos diretório que compõem os pacotes do Samba, da forma como é empacotado pelo
projeto Debian, é o seguinte :
● Diretório de configuração principal do Samba : /etc/samba
● Diretório de logs do Samba (smbd e nmbd) : /var/log/samba
● Binários do Samba : /usr/sbin/smbd e /usr/sbin/nmbd
● Binários do smbstatus : /usr/bin/smbstatus
● Binários do testparm : /usr/bin/testparm
Adicionalmente, um trabalho do cron, localizado em /etc/cron.daily/samba, é executado
diariamente, fazendo uma cópia do arquivos de senhas criptografadas dos usuários do Samba,
o arquivo /etc/samba/smbpasswd, para o diretório /var/backups.
334
PROGRAMA
TÉCNICO CIDADÃO
Configuração do Samba
Existem literalmente dezenas de cenários diferentes de uso do Samba e, devido a isso, vamos
nos ater ao cenário de utilização do mesmo como um servidor de arquivos de uma rede
contendo estações Windows, incluíndo estações Windows 2000 e Windows XP, funcionando
como um PDC (Controlador de Domínio Primário).
Todos os parâmetros de configuração citados poderão ser encontrados (ou acrescentados, caso
não existam) no arquivo de configuração principal do Samba, o arquivo /etc/samba/smb.conf.
O Samba como PDC da rede
Aqui veremos como configurar o Samba como um Primary Domain Controller para os clientes
Windows® da rede. Um PDC é responsável pela autenticação centralizada dos usuários da rede.
Veremos as partes envolvidas no processo adiante.
Domínio padrão
O domínio padrão a ser usado pela rede Windows é definido pelo parâmetro workgroup.
Porém, em nossa instalação básico, o nome do domínio já foi definido devido a pergunta
debconf relacionada a essa configuração já ter sido respondida.
Nome NetBIOS do servidor Samba
O nome NetBIOS (e não DNS) do servidor Samba pode ser definido pelo parâmetro netbios
name. Este será o nome através do qual o servidor de arquivos Samba será conhecido na rede
o nome através do qual poderemos identificá-lo navegando pelo domínio usando, por exemplo,
a janela de Ambiente de Rede das estações Windows.
335
PROGRAMA
TÉCNICO CIDADÃO
Por padrão, esse parâmetro não existe no arquivo de configuração padrão dos pacotes Debian
do Samba. Simplesmente inclua este parâmetro na seção global (ou seja, antes das definições
de compartilhamentos) do arquivo de configuração principal do Samba.
IMPORTANTE
Não use o nome DNS do servidor, definido em sistemas Debian no arquivo /
etc/hostname, como valor para esse parâmetro.
Nível de segurança
Este é, sem dúvida alguma, o parâmetro de configuração mais importante de toda a
configuração de um servidor Samba. O parâmetro security define o nível de segurança sob o
qual um servidor Samba irá operar.
Existem vários níveis de segurança possíveis. O que segue abaixo é uma tradução (com
pequenas modificações) da seção da página de manual do arquivo smb.conf, explicando os
níveis de segurança existentes no Samba :
●
security = user
Essa é a configuração de segurança padrão no Samba versão 2.2. Com a segurança em
nível de usuário (security = user), um cliente Samba deve primeiro se autenticar com
um nome de usuário e uma senha válidos (os quais podem ser mapeados utilizando-se o
parâmetro username map). Senhas encriptadas também podem ser utilizadas nesse
modo de segurança. Parâmetros como o user e o guest only, caso definidos, são
aplicados e modificar o usuário UNIX a ser usado na conexão, mas somente após o
usuário ter sido autenticado com sucesso.
Note
que
o
nome
do
recurso
(diretório
ou
impressora
compartilhada)
sendo
compartilhado não é enviado para o servidor até que o servidor tenha autenticado o
336
PROGRAMA
TÉCNICO CIDADÃO
cliente com sucesso. Esta é a razão de compartilhamentos convidados (guest) não
funcionarem nesse nível de segurança sem que seja permitido ao servidor mapear
automaticamente usuários para a conta de convidado. Consulte o parâmetro map to
guest para detalhes de como fazer isso.
Veja também a seção Nota sobre validação de usuários/senhas.
●
security = server
Neste modo o Samba irá tentar validar o usuário/senha passando os mesmos para um
outro servidor SMB, como um máquina Windows NT, por exemplo. Caso isso falhe, o
Samba reverterá seu modo de funcionamento para o nível de segurança security =
user. Mas note que caso senhas encriptadas tenham sido negociadas o Samba não
poderá reverter novamente para checar o arquivo de senhas UNIX, ele precisará ter
acesso um arquivo smbpasswd válido no qual poderá checar usuários. Consulte a
documentação de nome ENCRYPTION.txt no diretório docs/ para maiores detalhes
sobre como configurar isso.
Note que do ponto de vista do cliente o nível de segurança security = server é o mesmo
do nível de segurança security = user. Ele somente afeta como o servidor lida com a
autenticação e de modo algum afeta o que o cliente vê.
Note também que o nome do recurso sendo requisitado não é enviado para o servidor
até que o servidor tenha autenticado o cliente com sucesso. Esta é a razão de
compartilhamentos convidados (guest) não funcionarem nesse nível de segurança sem
que seja permitido ao servidor mapear automaticamente usuários para a conta de
convidado. Consulte o parâmetro map to guest para detalhes de como fazer isso.
Veja também a seção Nota sobre validação de usuários/senhas.
●
security = domain
337
PROGRAMA
TÉCNICO CIDADÃO
Este modo funcionará corretamente somente caso o utilitário smbpasswd tenha sido
utilizado para adicionar o servidor Samba em um domínio Windows NT. Esse modo
espera que o parâmetro encrypt passwords esteja definido como true. Neste modo, o
Samba tentará validar usuários/senhas passando os mesmos para um Controlador de
Domínio Primário (PDC) Windows NT ou para um Controlador de Domínio Secundário
(BDC), exatamente da mesma forma que um servidor Windows NT faria.
Note que um usuário UNIX válido deve existir, bem como a conta no Controlador de
Domínio, para permitir que o Samba possua uma conta UNIX válida para qual mapear
acessos de arquivos.
Note que do ponto de vista do cliente o nível de segurança security = domain é o
mesmo que o nível de segurança security = user. Ele somente afeta como o servidor
lida com a autenticação e de modo algum afeta o que o cliente vê.
Note também que o nome do recurso sendo requisitado não é enviado para o servidor
até que o servidor tenha autenticado o cliente com sucesso. Esta é a razão de
compartilhamentos convidados (guest) não funcionarem nesse nível de segurança sem
que seja permitido ao servidor mapear automaticamente usuários para a conta de
convidado. Consulte o parâmetro map to guest para detalhes de como fazer isso.
BUG
Existe atualmente um bug na implementação (a nível de código fonte) no que
diz respeito a nomes de usuários que utilizam conjuntos de caracteres de multi-bytes. A comunicação com um Controlador de Domínio deve ser feita em
UNICODE (UTF-8) mas o Samba no momento não expande nomes de usuários
multi-byte para UNICODE corretamente e, por isso, um nome de usuário multibyte não será reconhecido corretamente no Controlador de Domínio. Este problema será resolvido em uma versão futura do Samba (Note do tradutor : aparentemente, este problema foi solucionado na série 3.x do Samba).
338
PROGRAMA
TÉCNICO CIDADÃO
Para melhor compreensão das explicações anteriores, a tradução da seção Nota sobre
validação de usuários/senhas seria :
Nota sobe validação de usuários/senhas
Existem diversas maneiras através das quais um usuário pode se conectar a um serviço. O
servidor utiliza os seguintes passos para determina se a conexão a um serviço especificado será
permitida. Caso todos os passos falhem, a requisição de conexão é negada. Porém, caso um dos
passos tenha sucesso, os passos seguintes não são checados.
Caso o serviço esteja marcado como guest only = yes e o servidor esteja sendo executado com
segurança a nível de compartilhamento (security = share) os passos de 1 até 5 são pulados.
● 1 Caso o cliente tenha fornecido um par usuário/senha e esse par usuário/senha seja
validado pelos programas de senhas de sistema do UNIX a conexão é feita usando esse
nome de usuário fornecido. Note que isto inclui o método de passar um nome de usuário
\\servidor\serviço%nomeusuário.
● 2 Caso o cliente tenha previamente registrado um nome de usuário com o sistema e
agora forneça uma senha correta para esse nome de usuário a conexão é permitida.
● 3 O nome NetBIOS do cliente e quaisquer nomes de usuários usados previamente são
checados contra a senha fornecida e, caso casem, a conexão como o usuário
correspondente é permitida.
● 4 Caso o cliente tenha previamente validado um par usuário/senha com o servidor e o
cliente tenha passado o token de validação então esse nome de usuário é utilizado.
● 5 Caso o campo user = seja usado no arquivo smb.conf para o serviço sendo acessado e
o cliente tenha fornecido uma senha que case (de acordo com a checagem de senhas de
sistema UNIX) com um dos nomes de usuários do campo user = a conexão é feita como
o usuário na linha user =. Caso um dos nomes de usuários na linha user = inicie com um
339
PROGRAMA
TÉCNICO CIDADÃO
caracter @ (arroba) então esse nome é expandido para uma lista de nomes de usuários
no grupo de mesmo nome.
● 6 Caso o serviço sendo requisitado seja um serviço convidado então a conexão é feita
como o usuário informado no parâmetro guest account = para este serviço,
independente da senha informada.
Como podemos ver, o Samba é extremamente flexível e pode ser introduzido em diversos
cenários de rede diferenciados. Como padrão, esta documentação básica tratará do cenário
onde o servidor Samba será implantado como servidor de arquivos para uma rede Microsoft,
atuando como Controlador de Domínio Primário (PDC).
Nesse caso, utilizaremos como valor para o parâmetro security o valor user.
Encriptação de senhas
É possível optar pela utilização de senhas encriptadas ao invés de senhas em texto puro.
Porém, cada versão do Microsft Windows possui um problema e/ou detalhe que deve ser
observado caso senhas encriptadas sejam utilizadas. Sistemas operacionais anteriores ao
Microsoft Windows 95 OSR2 funcionam por padrão com senhas em texto-puro e versões
posteriores utilizam senhas encriptadas por padrão.
Caso somente estações de trabalho com versões mais atuais que o Microsoft Windows 95 OSR2
sejam usadas no ambiente de rede que o Samba irá servir, habilite a encriptação de senhas
definindo o valor do parâmetro encrypt passwords para o valor yes.
Habilitar logons em domínio
Como a idéia desta documentação básica é configurar um servidor Samba para agir como
Controlador de Domínio Primário (PDC) para um rede que contenha estações Windows, é
preciso dizer ao Samba para habilitar o suporte a logons em domínio.
340
PROGRAMA
TÉCNICO CIDADÃO
Para fazê-lo, o parâmetro domain logons pode ser usado. Defina o valor do parâmetro domain
logons para yes para habilitar o suporte a logon em domínio.
Definindo um Master Browser
Redes SMB fornecem um mecanismo através do qual clientes podem acessar uma lista de
máquinas na rede. Essa lista é conhecida como browse list. Tal lista contém máquinas que
estão prontas para oferecer serviços de arquivo e/ou impressão para outras máquinas na rede.
Essa lista não inclui máquinas que não são capazes de executar tarefas de servidores. Esta lista
é altamente utilizada por todos os clientes de redes SMB.
Caso o servidor Samba esteja sendo instalado em um ambiente de rede onde nenhum outro
servidor Windows NT e/ou Windows 2000 execute a função de master browser, armazenando a
lista que contém informações sobre quais máquinas da rede estão prontas para oferecerem
serviços de arquivo e/ou impressão, é desejável que o Samba possa se comportar como um
master browser.
É possível que existam diversos master browsers na rede e, inclusive, é necessário que exista
pelo menos um master browser para cada subrede, de forma que as informações de servidores
prontos para fornecer serviços de arquivo e/ou impressão possam ser disponibilizadas para
clientes de diferentes subredes, através da utilização do protocolo WINS, que servirá como uma
espécie de DNS para nomes NetBIOS, permitindo que resoluções de nomes NetBIOS para
endereços IPs sejam feitas através de consultas diretas ao servidor WINS. O próprio Samba
pode ser configurado para se comportar como um servidor WINS.
Para fazer com que o Samba se comporte como o master browser da subnet local na qual ele
está inserido, defina o valor do parâmetro local master para o valor yes.
341
PROGRAMA
TÉCNICO CIDADÃO
Precedência na eleição de Master Browsers
Como podemos ter diversos master browsers em cada subrede, é importante que possamos
definir que nosso servidor Samba tenha precedência na eleição de master browsers na rede.
O parâmetro os level permite que um valor de precedência seja especificado para definir a
precedência que será dada ao nosso servidor Samba na eleição de master browsers. O valor
padrão desse parâmetro, conforme a configuração fornecida pelos pacotes Debian do Samba, é
de 20 (vinte). Este valor é suficente caso não exista mais nenhum servidor Samba, Windows NT
ou Windows 2000 na rede.
Caso existam outros servidores, é interessante utilizar um valor maior para o parâmetro os
level. Em documentações do Samba sobre o assunto, o valor 65 (sessenta e cinco) é sugerido
como um valor que poderia garantir a eleição do Samba como master browser da subrede local
caso o mesmo esteja operando em uma rede complexa com outros servidores SMB.
Configuração do Samba como "domain master"
Caso o ambiente de rede possua subredes que devem ser atendidas pelos serviços de arquivo
e/ou impressão do Samba, o parâmetro domain master pode ser utilizado. Quando definido com
o valor de yes, o parâmetro domain master permite que o Samba combine browse lists através
de subnets diferentes.
Porém, caso exista um servidor Windows NT que já execute este tipo de serviço na rede, não
use esse recurso do Samba e simplesmente defina o valor do mesmo como no. O valor padrão
desse parâmetro, da forma como é fornecido pelos pacotes Debian do Samba, é o valor auto.
Forçando uma eleição de "Master Browser" local
Caso a idéia seja realmente garantir que o servidor Samba seja o master browser local em de
uma subrede, o parâmetro preferred master pode ser usado para esse fim.
342
PROGRAMA
TÉCNICO CIDADÃO
O parâmetro preferred master, quando definido como tendo o valor yes, faz com que o daemon
nmbd do Samba force uma eleição de browser na inicialização. Em conjunto com o parâmetro
os level explicado anteriormente definido para um valor alto como 65 (sessenta e cinco), a
probabilidade de eleição do Samba como master browser local será alta o bastante para que o
mesmo ganhe qualquer eleição.
Configuração para um servidor de horas
Outro recurso interessante do Samba é a possibilidade do mesmo funcionar como um servidor
de horas para as estações da rede, acertando automaticamente o horário das mesmas, no
momento em que os usuários efetuam o logon no domínio.
Para habilitar esse suporte, na seção de configuração global do Samba configure o parâmetro
time server. Na configuração padrão fornecida pelos pacotes Samba do Debian esse parâmetro
não é citado, portanto, insira uma linha como a linha a seguir no arquivo de configuração
principal do Samba :
time server = yes
Esse parâmetro, em conjunto com um script de logon que utilize o comando net time, possibilita
que o horário das estações da rede sejam acertadas com base no horário do servidor Samba
assim que os usuários das estações efetuem logon no domínio. Veremos com mais detalhes os
procedimentos para habilitar e configurar scripts de logon em breve.
DICA
Caso o recurso de servidor de horas do Samba seja utilizado, é importante que o horário do servidor seja mantido sempre correto. Para auxiliar nesta tarefa, o pacote
Debian de nome ntpdate poderá ser instalado no servidor Samba.
Esse pacote configura o servidor Samba como um cliente NTP, possibilitando o acerto das horas
do mesmo com base em um dos diversos servidores de horas públicos. O servidor de nome
343
PROGRAMA
TÉCNICO CIDADÃO
ntp.usp.br pode ser informado durante a etapa de configuração do pacote ntpdate, que
questionará qual servidor NTP deverá ser usado.
IMPORTANTE
Algo importante a ser observado é que, para que o servidor Samba possa atualizar
seu horário corretamente com base em um servidor NTP público externo, o acesso
do servidor Samba ao servidor NTP externo, porta NTP padrão (porta 123 TCP e
UDP) deverá ser liberado no firewall.
Corrigindo problemas com caracteres estranhos
Às
vezes
é
comum
nos
depararmos
com
problemas
de
exibição
caracteres
em
compartilhamentos Samba, principalmente com arquivos e/ou diretórios que contém caracteres
acentuados. Para corrigir isso, o parâmetro client code page pode ser usado.
Esse parâmetro aceita como valor um código de página DOS válido. Geralmente, o código de
página 850 é utilizado, uma vez que esse código de página é o padrão usado em nosso idioma
e permite que os arquivos sejam gravados e exibidos corretamente nas estações clientes.
Caso ainda tenha problemas definindo o parâmetro client code page, utilize também o
parâmetro character set, para definir o conjunto de caracteres exibidos pelo servidor Samba.
Como utilizamos um idioma latino, devemos definir como valor do parâmetro character set o
valor iso8859-1.
Por último, para garantir que arquivos possam se criados e visualizados com caracteres
especiais, utilize o parâmetro valid chars, informando como valor para esse parâmetro uma lista
de caracteres especiais válidos, como no exemplo a seguir :
valid chars = á:Á é:É í:Í ó:Ó ú:Ú â:Â ê:Ê ô:Ô ã:Ã õ:Õ à:À ò:Ò
344
PROGRAMA
TÉCNICO CIDADÃO
IMPORTANTE
É importante notar que o parâmetro valid chars deverá ser informado logo após o
parâmetro client code page para que funciona da maneira desejada.
Usuários inválidos para login
O parâmetro invalid users permite que especifiquemos um usuário, uma lista de usuários
(separados por espaços) ou grupos (usando a sintaxe @nome_do_grupo) de usuários que serão
considerados usuários inválidos para o Samba, ou seja, esses usuários não poderão fazer login
no domínio nem utilizar nenhum recurso do mesmo, como diretórios e impressoras
compartilhadas.
Por padrão, nas instalações feitas com base nos pacotes Debian do Samba, esse parâmetro é
fornecido habilitado e seu valor é definido como root, o que significa que o usuário root não será
capaz de utilizar nenhum recurso do domínio. Essa é uma boa prática de segurança.
Afinal, porque seria necessário liberar acesso a algum recurso do domínio para o usuário root e,
na verdade, porque seria necessário até mesmo inserir o usuário root como um usuário
Samba ? Não há necessidade.
Definindo usuários administradores
Existem alguns casos em que um usuário com poderes de administrador é necessário, como no
caso da necessidade de um usuário que tenha poderes de inserir contas de máquinas no
domínio.
Como utilizar diretamente o usuário root para essas situações não é uma boa idéia devido a
problemas de segurança, vejamos uma alternativa.
345
PROGRAMA
TÉCNICO CIDADÃO
Costuma ser uma boa prática criar um usuário de nome admin no sistema (GNU/Linux) e no
Samba. Após a criação desse usuário, o parâmetro admin users deverá ser definido, tendo como
valor o nome do usuário recém-criado, o usuário admin, conforme a seguir :
admin users = admin
Com o parâmetro admin users definido dessa forma, o usuário admin poderá ser usado para
inserir máquinas no domínio.
Liberação/Restrição de acesso por hosts
É possível utilizar o parâmetro hosts allow para especificar quais hosts terão acesso aos
serviços de arquivo e/ou impressão fornecidos pelo servidor Samba.
Quando usado globalmente, ou seja, fora de uma definição de compartilhamento, o parâmetro
hosts allow aplica restrições a nível global, ou seja, a todos os recursos compartihados pelo
servidor Samba. Porém, é possível utilizar o parâmetro hosts allow em compartilhamentos
específicos, de forma a ter maior flexibilidade no controle de liberação de acesso a
compartilhamentos individualmente.
O parâmetro hosts allow aceita como valor uma lista de separada por vírgula, espaço ou
delimitada por tabs de hosts que têm permissão de acessar um recurso compartilhado pelo
servidor Samba (ou todos os recursos caso seja usado globalmente). Os hosts podem ser
especificados por endereço IP ou por nome.
É possível especificar uma rede inteira. Por exemplo, para especificar toda a rede 192.168.1.0
com máscara de rede 254.255.255.0 usaríamos :
hosts allow = 192.168.1.0/255.255.255.0
Ou ainda :
hosts allow = 192.168.1.
346
PROGRAMA
TÉCNICO CIDADÃO
Repare o ponto (.) final após o terceiro octeto da rede especificada acima. É possível também
especificar a liberação para uma rede toda exceto para uma estação específica, usando a
sintaxe:
hosts allow = 192.168.1. EXCEPT 192.168.1.10
Semelhante ao parâmetro hosts allow, mas com resultados inversos, temos o parâmetro hosts
deny, que permite a especificação de quais redes e/ou hosts não terão acesso aos recursos
disponibilizados pelo servidor Samba ou, caso o parâmetro seja usado dentro da definição de
um compartilhamento específico, não terão acesso a esse compartilhamento específico.
IMPORTANTE
A especificação de uma rede e/ou host no parâmetro hosts allow de forma global,
ou seja, fora da definição de um compartilhamento específico, não significa que as
configurações relacionadas a permissões de acesso individuais e específicas de
cada compartilhamento não terão validade. Todas as restrições específicas de cada
compartilhamento ainda serão checadas mesmo caso o parâmetro hosts allow global permita o acesso da rede e/ou host em questão.
DICA
Para testar o acesso de um host e/ou rede a um compartilhamento específico, utilize
o utilitário testparm, conforme o exemplo a seguir :
# testparm /etc/samba/smb.conf <host_ou_rede>
Onde <host_ou_rede> seria substituído pelo endereço IP do host o da rede que se
deseja checar.
Arquivos de logs do Samba
Por padrão, na configuração padrão fornecida pelos pacotes Debian do Samba, os arquivos de
logs do Samba são armazenados sob o diretório /var/log/samba. O parâmetro que define esse
diretório é o parâmetro log file e o mesmo é fornecido definido para o valor de /
var/log/samba/log.%m.
347
PROGRAMA
TÉCNICO CIDADÃO
A variável %m é substituída pelo nome NetBIOS da estação que o log representa. Sendo assim,
serão criados sob esse diretório vários arquivos, um para cada estação utilizada por usuários
para autenticação no domínio Samba.
Esse tipo de log facilita a resolução de problemas, uma vez que permite a verificação individual
de logs de cada estação.
Tamanho máximo dos arquivos de logs
É possível controlar o tamanho máximo dos arquivos de logs gerados pelo Samba. Por padrão,
em instalações feitas a partir dos pacotes Debian do Samba, os arquivos de logs terão um
tamanho máximo de aproximadamente 1MB (aproximadamente porque o tamanho máximo é
definido como 1000KB e não 1024KB). O parâmetro que controla essa opção é o parâmetro
max log size.
O Samba irá checar periodicamente o tamanho dos arquivos de logs e, caso os mesmos tenham
excedido o limite definido pelo parâmetro max log size, irá renomeá-los com a extensão .old e
criar novos arquivos para armazenar os novos logs.
Definir um valor de 0 (zero) para esse parâmetro significa que os arquivos de log não terão
limites e isso poderá causar problemas com arquivos de logs maiores do que 2GB.
Mantenha o valor padrão dos pacotes Debian do Samba.
Não enviar logs para o syslog
Devido ao suporte a logging via syslog do Samba ainda ser experimental, é importante que
possamos configurá-lo para que os logs sejam gerados diretamente nos arquivos de logs
próprios do Samba, os arquivos /var/log/samba/log.smb e /var/log/samba/log.nmb, e não
enviados para o syslog.
348
PROGRAMA
TÉCNICO CIDADÃO
O parâmetro que controla esse comportamento é o parâmetro do Samba de nome syslog. A
configuração padrão dos pacotes Debian do Samba já faz isso por padrão, definindo o valor
desse parâmetro para 0 (zero).
Suporte a WINS
Habilitando o servidor WINS no Samba
O Samba suporta ser configurado para funcionar como um servidor WINS (Windows Internet
Name Service), de forma que seja possível implementar um serviço de resolução de nomes
NetBIOS para endereços IP, similarmente ao funcionamento de resolução de nomes DNS.
O parâmetro que controla a habilitação desse suporte é o parâmetro wins support. Caso
configurado com o valor yes, o parâmetro wins support instruirá o o daemon nmbd do Samba a
habilitar seu suporta a WINS e se tornar um servidor WINS.
Deve existir somente um servidor WINS na rede. Caso já exista um servidor Windows NT, por
exemplo, atuando como o servidor WINS da rede não habilite a suporte a WINS do Samba.
Indicando ao Samba qual o servidor WINS da rede
Caso já exista um servidor WINS atuando na rede, por exemplo, um servidor Windows NT
fazendo esse serviço, o Samba não deve ser configurado como um servidor WINS, ou seja, o
parâmetro wins support deverá ser configurado com o valor no.
Adicionalmente, caso o suporte a WINS seja necessário mas não seja o próprio servidor Samba
quem fará o papel de servidor WINS da rede, o parâmetro wins server pode ser utilizado para
informar ao servidor Samba qual o endereço IP do servidor WINS da rede.
349
PROGRAMA
TÉCNICO CIDADÃO
IMPORTANTE
Caso o parâmetro wins support esteja habilitado e o parâmetro wins server também
seja definido, o daemon mnbd do Samba não conseguirá iniciar. Sendo assim, decida se o Samba atuará como um servidor WINS, usando o parâmetro wins support,
ou como um cliente WINS, usando o parâmetro wins server.
Encaminhar pesquisas de nomes não satisfeitas no WINS para o DNS
Caso o daemon nmbd do Samba, quando agindo como um servidor WINS, verifique que um
determinado nome NetBIOS não foi registrado em sua base de nomes, poderá tratar o nome
NetBIOS palavra-por-palavra como um nome DNS e fazer uma pesquisa no servidor DNS por
esse nome em nome do cliente que fez a pesquisa, atuando assim como um proxy DNS.
Porém, para habilitar esse comportamento, o parâmetro dns proxy deverá ser definido com o
valor yes na configuração do Samba. Por padrão, o Samba deixar esse parâmetro definido como
yes, mas a configuração padrão dos pacotes Debian do Samba fornecem o Samba com o valor
padrão no, desabilitando esse recurso.
Caso esse recurso seja interessante para o ambiente de rede do cliente, habilite-o definindo o
valor do parâmetro dns proxy para yes.
Performance
Melhorando a performance com opções de sockets
Para melhorar a performance de comunicação em rede dos clientes SMB com o servidor Samba,
é possível definir opções de sockets a serem usadas na comunicação com os clientes. Opções
de sockets são controles exercidos na camada de rede do sistema operacional que permitem
que as conexões sejam melhoradas através de tunning.
Não existe uma maneira do Samba conhecer as opções corretas a serem utilizadas no ambiente
de rede específico do cliente, portanto, é necessário experimentar com os vários parâmetros
350
PROGRAMA
TÉCNICO CIDADÃO
disponíveis para verificar qual a combinação deles que melhor atende ao ambiente de rede
específico.
Para habilitar as opções de sockets no Samba, o parâmetro socket options pode ser usado. As
opões de socket suportadas são as seguintes :
● SO_KEEPALIVE
● SO_REUSEADDR
● SO_BROADCAST
● TCP_NODELAY
● IPTOS_LOWDELAY
● IPTOS_THROUGHPUT
● SO_SNDBUF (*)
● SO_RCVBUF (*)
● SO_SNDLOWAT (*)
● SO_RCVLOWAT (*)
Das opções citadas, as marcadas com (*) recebem com valor de configuração um número
inteiro. As outras podem receber como valor de de configuração valores booleanos 0 ou 1, para
habilitar ou desabilitar a opção, respectivamente. Caso somente o nome da opção seja
especificado e nem um valor de 0 nem um valor de 1 seja especificado, a opção será habilitada.
As opções são definidas no formato:
NOME_DA_OPÇÃO = VALOR
351
PROGRAMA
TÉCNICO CIDADÃO
Note que não devem existir espaços antes ou depois do sinal de =. O padrão do Samba e
também dos pacotes Debian do Samba é definir o valor do parâmetro socket options como a
seguir :
socket options = TCP_NODELAY
Uma boa combinação de opções a ser testada (e mantida, caso não cause efeitos colaterais) é a
seguinte :
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RECVBUF=8129
A combinação de opções acima geralmente resulta em um grande aumento de performance de
acesso e transferência de dados entre clientes SMB e o servidor Samba.
Suporte a impressão
Carregar as filas de impressão configuradas
Caso existam filas de impressão configuradas localmente no servidor Samba, sejam elas filas de
impressoras conectadas fisicamente no servidor Samba ou filas de impressoras remotas, é
possível que o Samba reconhece todas elas e as disponibilize para uso dos usuários do domínio.
O parâmetro load printers controla esse comportamento. Na configuração padrão dos pacotes
Debian do Samba, esse parâmetro já vem com o valor yes, que habilita esse comportamento,
mas é fornecido comentado. Simplesmente descomente este parâmetro caso o cliente tenha
filas de impressão que precisem ser utilizadas pelos usuários do domínio.
Onde encontrar as configurações das filas de impressão
Para que o parâmetro anterior funcione corretamente, o Samba precisa saber onde encontrar o
arquivo que contém a configuração das filas de impressão existentes. Geralmente, esse arquivo
352
PROGRAMA
TÉCNICO CIDADÃO
é o /etc/printcap e o parâmetro que o configura é o parâmetro printcap name caso o sistema
de impressão usado seja o lpr ou o LPRng.
A configuração padrão dos pacotes Debian do Samba já fornece esse parâmetro configurado
corretamente, mas comentado. Simplesmente descomente o parâmetro para habilitar o
funcionamento caso o cliente utilize como sistema de impressão o lpr ou o LPRng.
Qual sistema de impressão utilizar?
Além de indicar em qual arquivo fica localizada a configuração das filas de impressão, é preciso
dizer ao Samba qual o sistema de impressão utilizado.
O parâmetro que diz isso ao Samba é o printing. Caso o sistema de impressão do cliente seja o
lpd, use como valor para esse parâmetro o valor bsd. Caso o sistema de impressão seja LPRng,
use como valor para esse parâmetro o valor lprng. Caso o sistema de impressão seja o CUPS,
use como valor para esse parâmetro o valor cups.
Perfis ambulantes, scripts de logon e contas de máquinas
Habilitando suporte a perfis ambulantes
O Samba oferece suporte a perfis ambulantes. Esse suporte permite que o perfil de um usuário
(configurações pessoais de programas e preferências, geralmente armazenadas localmente na
estação de trabalho de cada usuário) seja armazenado no servidor Samba.
Esse suporte é interessante pois permite que o usuário possa mudar de estação de trabalho
sem precisar reconfigurar toda a nova estação novamente. Ao fazer o logon no domínio, todas
as configurações de seu perfil serão trazidas do servidor e utilizadas na nova estação de
trabalho.
353
PROGRAMA
TÉCNICO CIDADÃO
Para habilitar o suporte a perfis ambulantes no servidor Samba, além de habilitar a criação de
um compartilhamento específico para o armazenamento dos perfis, é necessário utilizar o
parâmetro logon path do Samba.
O parâmetro logon path especifica onde as estações Windows devem procurar pelo perfil dos
usuários que fizerem o logon na rede. Existem diversas formas de configurar esse parâmetro,
uma delas é:
logon path = \\%L\Profiles\%U
A variável %L será expandida para o nome NetBIOS do servidor Samba e a variável %U será
expandida para o nome do usuário que iniciou a sessão com o servidor Samba fazendo o logon
no domínio.
Por exemplo, caso tenhamos um servidor Samba cujo nome NetBIOS seja “servidor” e o usuário
que esteja fazendo o logon no domínio seja o usuário joao, a estação de trabalho desse usuário
irá procurar pelo perfil do usuário em \\servidor\Profiles\joao.
IMPORTANTE
Dependendo da quantidade de usuários do domínio, da velocidade da rede e do tamanho dos perfis dos usuários do domínio, habilitar o suporte a perfis ambulantes
pode não ser uma boa idéia. A transferência dos perfis dos usuários do servidor
Samba para suas estações pode ser um processo bastante demorado e consumir
muita banda da rede caso não seja planejado antecipadamente e a rede não esteja
preparada para a implantação desse recurso. Em termos de consumo de recursos
do servidor Samba, um segundo servidor Samba pode ser utilizado e os perfis podem ser armazenados no mesmo ao invés de no servidor Samba atuando como o
PDC do domínio.
Habilitando o suporte a scripts de logon
Um recurso interessante e útil do Samba é o suporte a scripts de logon dos usuários. Scripts de
logon podem ser usados para executar tarefas específicas na estação do usuário após a
354
PROGRAMA
TÉCNICO CIDADÃO
validação e logon do mesmo no domínio. Basicamente, é possível executar qualquer tarefa
passível de ser descrita em um arquivo em lote DOS, um arquivo .BAT.
Exemplos de tarefas interessantes seriam o mapeamento de compartilhamentos do servidor
Samba ou de outros servidores SMB para unidades locais na estação do usuário, acerto do hora
da estação com base na hora do servidor Samba, execução de um possível utilitário específico
na estação do usuário, como um antivírus, por exemplo, e diversas outras.
O parâmetro que controla o habilitação dos scripts de logon é o parâmetro logon script. É
possível utilizar um script de logon genérico para todos os usuários do domínio ou, caso seja
necessário, utilizar um script de logon individual para cada usuário.
A configuração padrão dos pacotes Debian do Samba não contém nenhum parâmetro logon
script definido, por isso, é necessário definí-lo conforme a necessidade do cliente. Na maioria
das vezes, um único script de logon para todos os usuários será o suficiente. Para definir o
parâmetro logon script para um único script de logon para todos os usuários do domínio, definao como a seguir :
logon script = startup.bat
O script de logon de nome startup.bat será executado para todos os usuários que fizerem o
logon no domínio. Caso seja necessário especificar um script diferenciado para cada usuário,
defina o parâmetro logon script como a seguir :
logon script = %U.bat
A variável %U será expandida para o nome do usuário que fez o logon no domínio. Por exemplo,
caso o usuário joao tivesse feito o logon no domínio, o script de logon de nome joao.bat seria
executado.
Logicamente, em ambos os casos, o(s) script(s) de logon indicado(s) pelo parâmetro logon
script devem ter sido previamente criados.
355
PROGRAMA
TÉCNICO CIDADÃO
IMPORTANTE 1
Os scripts de logon devem estar localizados fisicamente no compartilhamento de
nome netlogon no servidor Samba.
IMPORTANTE 2
Um detalhe a ser observado é que os scripts de logon devem ser criados com o esquema de terminação de linhas padrão DOS ao invés do esquema de terminação de
linhas padrão UNIX. A ação que determina isso no vim é, em modo de linha: set
ff=dos
Devido a isso, ou os scripts precisarão ser criados anteriormente em uma estação DOS/Windows
e transferidos posteriormente para o servidor Samba ou um utilitário que faça a conversão
entre os dois esquemas de terminação de linha deverá ser usado para converter os scripts
antes que os mesmos possam ser utilizados.
Um exemplo de script de logon segue abaixo :
net
net
net
net
use f: \\servidor\compartilhamento1 /yes
use g: \\servidor\compartilhamento2 /yes
use h: \\servidor\Profiles /yes
time \\servidor /set /yes
No script de logon de exemplo acima, os compartilhamentos de nome compartilhamento1 e
compartilhamento2 estão serão mapeados na estação cliente como as unidade F: e G:,
respectivamente. Adicionalmente, o compartilhamento Profiles será mapeado como a unidade
H:. es.
Por último, a hora do servidor será utilizada como base para acertar a hora da estação cliente
através do comando net time, na última linha do script de logon de exemplo.
356
PROGRAMA
TÉCNICO CIDADÃO
Criação automática de contas de máquinas
Para todos os sistemas operacionais da Microsoft que tem como base a tecnologia NT, ou seja,
as famílias de sistemas operacionais Windows NT, Windows 2000 e Windows XP, além da
criação da necessidade de existência de uma conta de usuário Linux/Samba no servidor Samba,
é necessária a criação de uma conta de máquina para cada estação.
Esta conta é necessária para permitir que a estação ingresse no domínio Samba e passe a fazer
parte do mesmo. Existem dois modos de criar as contas de máquinas para as essas estações :
manualmente no servidor Samba, utilizando o utilitário smbpasswd, ou automaticamente,
através do uso de um parâmetro específico inserido no arquivo de configuração principal do
servidor Samba, o parâmetro add user script.
Com o uso desse parâmetro, as contas de máquinas serão automaticamente criadas no
momento em que as máquinas forem inseridas no domínio, processo executado localmente na
própria estação. Pelo modo manual, a inserção da estação no domínio através de configuração
na própria estação também é necessária, mas a desvantagem é que, antes de cada estação ser
inserida no domínio, uma conta de máquina para cada uma delas deve ser criada manualmente
no servidor Samba.
Por padrão, o modo de criação automática de contas de máquinas deverá ser utilizado. Para
fazê-lo, defina o valor do parâmetro add user script conforme a seguir :
add user script = /usr/sbin/useradd -d /dev/null -M -g maquinas -s /bin/false %u
O parâmetro acima deverá ocupar somente uma única linha, apesar de aparecer em duas
linhas. Adicionalmente, um grupo de nome maquinas deve ser previamente criado no servidor
Samba para que o comando funcione corretamente.
Com o parâmetro add user script definido dessa forma, a cada vez que ocorrer uma tentativa de
inserções (join) no domínio de uma estação Windows NT, Windows 2000 ou Windows XP, uma
conta de máquina para a estação será criada automaticamente no servidor Samba. As contas
357
PROGRAMA
TÉCNICO CIDADÃO
de máquinas serão criadas utilizando o nome NetBIOS da estação acrescido de um símbolo de
cifrão ($).
IMPORTANTE 1
O nome da estação que será adicionado ao domínio não pode ser o mesmo nome
de uma estação que já faz parte do domínio ou de um usuário do domínio. Isso é
muito importante e é um motivo comum de impossibilidade de inserção de estações
no domínio. Fique atento a esse detalhe !
IMPORTANTE 2
No momento da inserção de uma estação no domínio, uma caixa de diálogo surgirá
na estação, requisitando o nome e a senha de um usuário que tenha permissão de
inserir contas de máquinas no domínio. Por padrão, o único usuário que pode inserir
contas de máquinas no domínio é o usuário root.
IMPORTANTE 3
Para estações Windows XP, além da necessidade de criação de contas de máquina,
ainda existe a necessidade de modificar uma chave de registro para que o logon em
domínio seja possível. Após inserir a estação no domínio (criar a conta de máquina
da mesma), autentique-se como administrador local da estação e mude a seguinte
chave de registro do Windows XP :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\netlogon\parameters
Opção : RequireSignOrSeal
Valor dword: 00000000
Para simplificar, um arquivo .reg é distribuído junto com pacote Debian de nome
samba-doc. O arquivo fica localizado fisicamente em /usr/share/doc/sambadoc/Registry/WinXP_SignOrSeal.reg. Transfira esse arquivo para a estação WindowsXP e dê um duplo clique no mesmo para que a chave de registro necessária
seja modificada.
358
PROGRAMA
TÉCNICO CIDADÃO
Compartilhamentos
Devido a importância do tópico, reservamos um espaço para falar exclusivamente sobre as
definições de compartilhamentos no samba.
Compartilhamentos públicos
É comum existir a necessidade de criação de pelo menos um compartilhamento público em
uma implantação Samba. O compartilhamento público é um compartilhamento que fornece
acesso irrestrito (leitura e gravação) a todos os documentos que armazena. O mesmo é útil
para armazenamento de documentos não confidenciais e de interesse comum a todos os
usuários da rede.
Porém, independente do conteúdo do compartilhamento público não ser confidencial, é
importante liberar o acesso ao mesmo somente para os usuários Samba da rede e não para
todos os usuários de forma geral. Pense em um cliente ou parceiro que chega a empresa do
cliente, conecte seu notebook na rede para ter acesso a Internet e ler suas mensagens e, com
isso, passa também a ter acesso aos documentos existentes no compartilhamento público.
O compartilhamento público é público somente para os funcionários da empresa do cliente e
não para clientes e/ou colaboradores que conectam suas estações em sua rede. Para restringir
o acesso ao compartilhamento público somente aos funcionários da empresa, os quais já
possuem uma conta válida devidamente criada e possuem como grupo primário o grupo
comum, podemos usar a técnica de liberar o acesso ao mesmo somente para os usuários de
nosso grupo comum.
Isso
simplifica
enormemente
o
trabalho
de
atribuir
permissões
corretas
a
esse
compartilhamento, pois simplesmente liberamos o acesso ao compartilhamento para o grupo
comum ao invés de liberar acesso a cada um dos usuários Samba. Um exemplo de
compartilhamento público configurado dessa forma seria :
359
PROGRAMA
TÉCNICO CIDADÃO
[publico]
comment = Compartilhamento publico
path = /home/samba/publico
valid users = @grupo
public = no
writeable = yes
printable = no
directory security mask = 0770
create mask = 0770
force create mode = 0770
directory mask = 0770
force group = @grupo
No compartilhamento público de exemplo acima, o parâmetro valid users garante que o acesso
ao compartilhamento só será liberado para os usuários do grupo grupo. Simplesmente substitua
@grupo por @ seguido do nome do grupo comum a todos os usuários Samba.
Repare também que, propositalmente, o parâmetro public não não está definido com o valor
yes. A razão é que, apesar do compartilhamento ser público, a intenção é que o mesmo seja
público para todos os usuários Samba e não realmente público para todos. Isso é importante
porque o parâmetro public é um sinônimo para o parâmetro guest ok, o qual, caso definido com
o valor yes, libera acesso ao compartilhamento em questão sem necessidade de fornecimento
de senhas. O acesso, nesse caso, seria feito com as permissões do usuário indicado pelo
parâmetro guest account, geralmente o usuário nobody. No mínimo, o acesso de leitura seria
liberado
para
todos,
independente
do
fornecimento
de
senhas
para
acesso
ao
compartilhamento.
O parâmetro force group , com o valor definido para o mesmo nome do grupo comum definido
no parâmetro valid users, garante que todos os arquivo e diretórios criados sob o diretório físico
compartilhado serão criados tendo como grupo o grupo comum a todos os usuários Samba.
360
PROGRAMA
TÉCNICO CIDADÃO
Compartilhamentos de grupos (departamentais)
A maneira mais comum de organizar o acesso aos dados armazenados em um servidor Samba
é criar grupos que representam os diversos departamentos de uma empresa, incluir os usuários
nesses grupos de acordo com o departamento do qual fazem parte (por exemplo, grupo
financeiro para usuários do departamento financeiro) e criar compartilhamentos para cada
grupo, atribuíndo as permissões desejadas para o grupo e não para cada usuário individual.
Existem várias formas de fazê-lo, mas, como exemplo, a seguir temos um exemplo de um
compartilhamento para um grupo que pode auxiliar no entendimento de como funciona a
organização do acesso aos dados por grupos :
[financeiro]
comment = Dados do Departamento Financeiro
path = /home/samba/financeiro
valid users = @financeiro
write list = @financeiro
public = no
writeable = yes
directory security mask = 0770
create mask = 0770
force create mode = 0770
directory mask = 0770
force group = @financeiro
No
compartilhamento
de
exemplo
acima,
o
acesso
aos
dados
armazenados
no
compartilhamento só será liberado aos usuários do grupo financeiro, devido ao uso do
parâmetro valid users tendo como valor o grupo financeiro.
IMPORTANTE
É importante notar que, independente dos usuários fazerem parte do grupo financeiro, é importante que os mesmos tenham como grupo primário o grupo comum
do qual todos os usuários Samba fazem parte. O grupo financeiro é somente mais
um grupo secundário do qual os usuários do departamento financeiro fazem parte.
361
PROGRAMA
TÉCNICO CIDADÃO
O parâmetro write list também garante que o acesso a gravação no compartilhamentos
financeiro só será liberado aos usuários do grupo financeiro. O parâmetro public, com o valor
no, garante que o compartilhamento em questão não seja um compartilhamento público.
O parâmetro force group garante que os arquivos e diretórios criados sob o diretório físico
compartilhado sejam criados tendo como grupo o grupo financeiro.
Compartilhamento para perfis ambulantes
Um dos compartilhamentos especiais que podem ser criados no Samba é o compartilhamento
que armazenará os perfis ambulantes dos usuários do domínio. Tal compartilhamento deve ter
o nome de Profiles e ser usado em conjunto com o parâmetro logon path, este último definido
na seção global de configuração do Samba.
A configuração fornecida por padrão pelos pacotes Debian do Samba não possui nenhuma
menção ao compartilhamento especial Profiles, por isso, é necessário criá-lo seguindo os
padrões a seguir :
[Profiles]
path = /home/profiles
writeable= yes
valid users = @grupo
browseable = yes
guest ok = no
security mask = 0700
directory security mask = 0700
directory mask = 0700
create mask = 0700
Na configuração do compartilhamento Profiles acima, mais especificamente no parâmetro valid
users, substitua @grupo por um caracter @ (arroba) seguido do nome do grupo comum a todos
os usuários do domínio.
Logicamente, crie também o diretório /home/profiles no servidor Samba. Após um usuário
executar o logout do domínio, todas as configurações personalizadas que o mesmo fez em seu
362
PROGRAMA
TÉCNICO CIDADÃO
desktop e/ou aplicativos que gravam informações no perfil do usuário serão transferidas para o
compartilhamento Profiles do servidor Samba, mais especificamente, sob um diretório com o
nome do usuário, criada automaticamente sob o compartilhamento Profiles.
Segue abaixo um exemplo da estrutura de diretórios criada sob o o diretório pessoal de perfil do
usuário aluno:
# pwd
/home/profiles/aluno
# ls -lah
total 668k
drwx------ 14 aluno
drwxrwx--- 48 root
drwx------ 6 aluno
drwx------ 2 aluno
drwx------ 2 aluno
drwx------ 5 aluno
drwx------ 3 aluno
drwx------ 11 aluno
-rwx------ 1 aluno
-rwx------ 1 aluno
-rwx------ 1 aluno
drwx------ 2 aluno
drwx------ 2 aluno
drwx------ 4 aluno
drwx------ 2 aluno
drwx------ 3 aluno
drwx------ 2 aluno
users
users
users
users
users
users
users
users
users
users
users
users
users
users
users
users
users
4.0k Mar 8 16:39 .
4.0k Ago 19 15:31 ..
4.0k Abr 16 2003 Application Data
4.0k Mar 8 16:39 Cookies
4.0k Out 9 2003 Desktop
4.0k Mar 8 16:39 Favorites
4.0k Out 15 2002 My Documents
4.0k Mar 4 14:37 NetHood
600k Mar 8 19:37 NTUSER.DAT
1.0k Mar 8 19:37 ntuser.dat.LOG
180 Mar 8 16:39 ntuser.ini
4.0k Abr 16 2003 pnlinks
4.0k Out 15 2002 PrintHood
4.0k Mar 8 16:39 Recent
4.0k Mar 8 16:39 SendTo
4.0k Out 15 2002 Start Menu
4.0k Out 15 2002 Templates
Compartilhamento Netlogon
Um outro compartilhamento Samba especial é o compartilhamento de nome netlogon. Esse
compartilhamento é onde os scripts de logon dos usuários do domínio ficam armazenados.
A configuração padrão dos pacotes Debian do Samba fornece um exemplo de configuração para
um compartilhamento netlogon. Devido a isso, é necessário somente descomentar esse
exemplo e criar o diretório apontado pelo compartilhamento netlogon para habilitá-lo.
363
PROGRAMA
TÉCNICO CIDADÃO
Segue abaixo uma cópia do exemplo de compartilhamento netlogon fornecido no arquivo de
configuração do Samba dos pacotes Debian :
[netlogon]
comment = Network Logon Service
path = /home/samba/netlogon
guest ok = yes
writable = no
share modes = no
Após descomentar o trecho acima no arquivo de configuração principal do Samba, crie o
diretório /home/samba/netlogon no servidor Samba. O compartilhamento netlogon deve existir
para possibilitar o funcionamento dos scripts de logon, executados no momento do logon dos
usuários no domínio.
Compartilhamento homes
Outro compartilhamento especial do Samba é o compartilhamento de nome homes. Esse
compartilhamento, quando criado e habilitado, compartilha o diretório pessoal de cada usuário
UNIX/Samba existente para seu respectivo dono. Por exemplo, caso o compartilhamento homes
esteja habilitado, e o usuário de nome joao efetue logon no domínio, o diretório pessoal do
mesmo (geralmente localizado fisicamente no servidor Samba em /home/joao) ficará acessível,
somente ao usuário joao, como \\servidor\joao.
A
configuração
padrão
fornecida
pelos
pacotes
Samba
do
Debian
já
possui
um
compartilhamento homes funcional e habilitado por padrão. Porém, é necessário modificar o
parâmetro writable para o valor yes, uma vez que esse parâmetro é definido com o valor de no
na configuração padrão dos pacotes Samba do Debian. Assim, os usuários poderão gravar
dentro de seus diretórios pessoais.
Segue abaixo uma cópia da configuração que define o compartilhamento homes padrão do
Debian, já com o parâmetro writable definido para o valor yes :
[homes]
364
PROGRAMA
TÉCNICO CIDADÃO
comment = Home Directories
browseable = no
writable = yes
create mask = 0700
directory mask = 0700
Com a configuração acima, os arquivos e diretórios criados sob o diretório pessoal dos usuários
somente poderão ser lidos e gravados pelos próprios usuários que os criaram.
Compartilhamento para impressoras
Um outro compartilhamento especial do Samba é o compartilhamento de nome printers. É
possível definir um compartilhamento para cada fila de impressão que se deseja compartilhar
através do Samba, mas o compartilhamento especial printers, caso seja definido, simplifica essa
tarefa, compartilhando todas as filas de impressão configuradas no servidor Samba.
A configuração padrão dos pacotes Samba do Debian já fornece uma configuração funcional e
habilitada para o compartilhamento printers. Sendo assim, não é necessário modificar e/ou
acrescentar nenhuma configuração relacionada ao compartilhamento printers para que o
mesmo funcione sob o Debian.
Abaixo segue um exemplo de compartilhamento printers funcional, da forma como é distribuído
na configuração padrão dos pacotes Samba do Debian :
[printers]
comment = All Printers
browseable = no
path = /tmp
printable = yes
public = no
writable = no
create mode = 0700
No exemplo acima, é importante notar que o diretório apontado pelo parâmetro path tem que,
obrigatoriamente, ser um diretório com o stick bit ligado, como é o caso do diretório /tmp.
365
PROGRAMA
TÉCNICO CIDADÃO
Usuários e grupos no Samba
A criação de usuários para o Samba no Debian difere ligeiramente da maneira como esse
procedimento é feito em outras distribuições GNU/Linux. Na grande maioria das distribuições, é
comum utilizarmos o utilitário smbadduser para cadastrar usuários Samba correspondentes aos
usuários UNIX locais previamente cadastrados.
No Debian, o utilitário smbadduser é fornecido somente como um utilitário de exemplo, que
pode ser utilizado opcionalmente para cadastrar usuários do Samba. Por isso, o mesmo
encontra-se em um diretório de exemplos fornecido com o pacote Debian que fornece
documentação relacionada ao Samba, o pacote samba-doc. Esse utilitário pode ser encontrado
sob o diretório /usr/share/doc/samba-doc/examples.
Assim como também é possível fazer em outras distribuições, no Debian a maneira comum de
cadastrar usuários do Samba é utilizar o utilitário smbpassw, o mesmo utilitário geralmente
utilizado somente para troca de senhas dos usuários Samba em outras distribuições.
A maneira padrão de criação de um usuário Samba no Debian é a seguinte :
● Cria-se o usuário UNIX local usando o comando adduser como de costume, conforme
podemos ver a seguir :
# adduser usuario
Uma senha para o usuário UNIX local será requisitada e deverá ser informada.
Informações adicionais como nome completo do usuário, número da sala de trabalho,
telefone do local de trabalho, telefone doméstico, etc, também serão requisitadas. Fica a
cargo do cliente informá-las caso julgue necessário.
Esse usuário será cadastrado no arquivo de senhas padrão UNIX do sistema operacional,
o arquivo /etc/passwd e a senha do mesmos será cadastrada, encriptada, no arquivo de
senhas shadow padrão do sistema, o arquivo /etc/shadow.
366
PROGRAMA
TÉCNICO CIDADÃO
● Após isso, cria-se o usuário Samba correspondente ao usuário UNIX local criado no passo
anterior, conforme a seguir :
# smbpasswd -a usuario
A senha do usuário Samba será requisitada. Geralmente, a senha informada para o
usuário Samba é a mesma senha do usuário UNIX local correspondente. Esse usuário
será cadastrado no arquivo de usuários e senhas padrão de usuários Samba, o arquiv /
etc/samba/smbpasswd. Nesse arquivo, podemos notar que, na entrada correspondente
ao usuário recém-cadastrado, no segundo campo, temos o UID do usuário, que é o
mesmo UID do usuário UNIX local cadastrado no passo anterior.
Uma prática importante e que deve ser seguida por todas as implantações feitas pela Utah
Consultores é a inserção dos usuários do Samba em um grupo comum a todos esses usuários.
Como veremos posteriormente, essa prática simplificará muito o tratamento de atribuições de
permissões para compartilhamentos Samba.
Devido a isso, no passo de cadastro do usuário UNIX local no sistema, o comando adduser
deverá informar também o grupo comum do qual o usuário fará parte. O comando usado
deverá ser o comando :
adduser --ingroup grupo usuario
Onde grupo é o nome do grupo comum pré-existente, criado exclusivamente para os usuários
Samba, e usuario é o nome do usuário sendo cadastrado.
Criação de grupo comum entre os usuários Samba
É importante que utilizemos um grupo comum a todos os usuários Samba, para facilitar
distinguí-los de todos os demais usuários existentes no sistema e para simplificar o
gerenciamento de permissões de acesso aos compartilhamentos configurados no servidor
Samba.
367
PROGRAMA
TÉCNICO CIDADÃO
Logicamente, poderão existir grupos adicionais para identificar usuários que fazem parte de um
departamento específico da empresa, como, por exemplo, um grupo de nome financeiro, do
qual fariam parte todos os usuários do departamento financeiro. Porém, o grupo comum é o
grupo primário de todos os usuários do Samba e, devido a isso, todos os usuários Samba
deverão fazer parte desse grupo. Os grupos adicionais dos quais os mesmos farão parte serão
grupos secundários dos usuários, variando de acordo com cada usuário.
Por padrão, o grupo comum deverá ser criado com o nome da empresa do cliente onde o
servidor Samba está sendo implantado. Por exemplo, no caso hipotético de um cliente chamado
TecnoVendas Comércio de Calçados Ltda., o nome do grupo comum poderia ser tecnovendas.
Esse grupo seria o grupo primário de todos os usuários do Samba e deveria ser o grupo ao qual
todos os usuários seriam inseridos no momento do cadastramento dos mesmos.
Verificando a configuração a procura de erros
Devido a existência de inúmeros parâmetros de configuração passíveis de serem utilizados na
configuração de um servidor Samba, é importante que a validade da configuração
implementada seja checada para facilitar a tarefa de resolução de possíveis problemas que
possam surgir.
Uma maneira fácil de checar se toda a configuração utilizada no arquivo de configuração
principal do Samba está sintaticamente correta é utilizar o utilitário testparm. Esse utilitário é
capaz de checar o arquivo de configuração do Samba a procure de erros de sintaxe e, caso os
encontre, exibí-los no terminal.
A utilização do mesmo é bastante simples : basta executar o comando testparm no terminal e a
saída do utilitário irá exibir a análise do arquivo de configuração, apontando quaisquer erros de
sintaxe que tenham sido encontrados.
Outra maneira realmente útil de utilização do utilitário testparm é na análise do motivo de um
compartilhamento não permitir o acesso de uma estação da rede específica. Caso você esteja
368
PROGRAMA
TÉCNICO CIDADÃO
tentando entender o motivo de uma estação não conseguir ter acesso a um compartilhamento,
uma maneira rápida de checar se o motivo é devido a configuração de acesso do
compartilhamento é utilizando utilitário testparm da seguinte maneira :
testparm /etc/samba/smb.conf 192.168.1.3
Onde 192.168.1.3 seria o endereço IP da estação para a qual desejamos verificar a
possibilidade de acesso. Essa forma de execução do utilitário testparm, além de exibir as
informações de checagem de sintaxe também exibidas na utilização da forma convencional,
também indica, ao final uma listagem dos compartilhamentos existentes, se o acesso da
estação com o endereço IP indicado a cada um dos compartilhamentos é permitido ou não.
369
PROGRAMA
TÉCNICO CIDADÃO
SEGURANÇA DO SISTEMA
Ainda mais importante do que a correta instalação e configuração de um sistema Linux, é a segurança dos serviços.
Tarefas simples como a remoção de pacotes desnecessários ou o bloqueio de acesso a serviços
em determinadas ocasiões são fundamentais para manter a segurança do sistema em níveis
aceitáveis.
Suíte de aplicativos OpenSSH
OpenSSH é uma
suíte
de
aplicativos
de
código
aberto
(open-source) baseada
nas
implementações do protocolo “Secure Shell”, conforme especificado pelo grupo “secsh”,
regulamentado pela IETF (Internet Engineering and Task Force).
A suíte de aplicativos OpenSSH contempla diversos aplicativos cuja principal característica é o
fato da comunicação entre a parte servidor e a parte cliente ser criptografada.
Para instalar a suíte OpenSSH no Debian Woody 3.0, instale o pacote ssh, que já contempla os
binários para o servidor e os clientes do protocolo.
Características do OpenSSH no Debian
pacote(s)
ssh
serviço(s)
ssh
porta(s)
22/tcp
Configurações /etc/ssh/sshd_config
Vejamos agora cada um dos aplicativos cliente que completam a suíte OpenSSH.
370
PROGRAMA
TÉCNICO CIDADÃO
ssh
O principal aplicativo da suíte OpenSSH é o ssh, que nos permite, assim como o telnet, executar
comandos remotamente em um servidor, com a diferença de que os dados digitados trafegam
em um canal criptografado através da rede, tornando a comunicação segura o bastante para
impedir que usuários “mal intencionados” interceptem a comunicação e capturem dados
importantes (como senhas...).
Sintaxe:
ssh [opções] [usuario@]host [comando]
Para a lista de opções suportadas, consulte o “--help” do comando.
Por exemplo, para se conectar como usuário root ao host remoto 192.168.1.12 que esteja
executando o servidor OpenSSH e “escutando” na porta padrão 22/tcp, utilize:
# ssh [email protected]
The authenticity of host '192.168.1.12 (192.168.1.12)' can't be established.
RSA key fingerprint is 58:4c:d7:fb:19:84:5c:b0:31:66:0b:22:9c:e0:24:4f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.12' (RSA) to the list of known hosts.
[email protected]'s password:
Na primeira vez que nos conectamos a um servidor OpenSSH, é exibida a confirmação de
recepção da chave de criptografia remota. Digite “yes” (completo) para prosseguir. Ao fazer
isso, será adicionada o “Fingerprint” da chave remota no arquivo ~/.ssh/know_hosts.
Em seguida será requisitada a senha do usuário, que nesse caso é a senha do usuário root no
host 192.168.1.12.
scp
SCP (Secure Copy) é o utilitário que nos permite copiar arquivos entre hosts remotos através de
um canal criptografado de dados.
371
PROGRAMA
TÉCNICO CIDADÃO
Podemos utilizar o scp de duas maneiras basicamente: Para copiar arquivos de nosso sistema
para um sistema remoto, ou vice-versa.
Enviando Arquivos
Para copiar arquivos locais para um sistema remoto (Um servidor OpenSSH), utilizamos:
scp /caminho/para/arquivo/local usuario@host:/pasta/remota
Um exemplo prático seria copiar nosso /etc/hosts para o diretório /tmp do host 192.168.1.12,
conforme abaixo:
# scp /etc/hosts [email protected]:/tmp
[email protected]'s password:
hosts
100% 289
0.3KB/s 00:00
Um outro exemplo interessante mostra como copiar o conteúdo de um diretório recursivamente
para um host remoto, neste caso é o diretório /etc na máquina local que será enviado para o
diretório /tmp do host 192.168.1.12:
# scp -rp /etc [email protected]:/tmp
Recebendo arquivos
Agora faremos a operação inversa, conectando ao servidor remoto 192.168.1.12 e trazendo
arquivos para nosso sistema local.
Para copiar arquivos de um sistema remoto (Um servidor OpenSSH) para o host local,
utilizamos:
scp usuario@host:/caminho/para/arquivo/remoto /destino/local
Podemos, por exemplo, obter de volta o arquivo hosts que se encontra no diretório /tmp do
host 192.168.1.12 com o comando:
# scp [email protected]:/tmp/hosts /tmp
372
PROGRAMA
TÉCNICO CIDADÃO
[email protected]'s password:
hosts
100% 289
0.3KB/s 00:00
sftp
O sftp é uma implementação “segura” do protocolo FTP, e possui as mesmas características de
um típico servidor ftp, assim como os comandos cliente (PWD, GET, PUT, etc...).
A sintaxe de conexão do sftp é praticamente igual a do ssh:
sftp [opções] [usuario@]host
Após se conectar, o usuário estará num prompt como o abaixo e poderá executar comandos
conhecidos do protocolo FTP.
sftp>
Para obter uma lista dos comandos aceitos, execute o comando “help” nesse prompt.
Uma implementação interessante que não está presente em todos os clientes FTP é a
possibilidade de baixar um arquivo com o comando GET e já escolher, no mesmo comando, em
qual pasta no sistema local o arquivo será alocado, conforme exemplo abaixo:
# sftp 192.168.1.12
Connecting to 192.168.1.12...
[email protected]'s password:
sftp> pwd
Remote working directory: /root
sftp> cd /tmp
sftp> ls
.
..
etc
hosts
lost+found
sftp> get hosts /var/tmp
Fetching /tmp/hosts to /var/tmp/hosts
/tmp/hosts
100% 289
sftp> quit
0.3KB/s 00:00
373
PROGRAMA
TÉCNICO CIDADÃO
DICA
Nos utilitários OpenSSH, caso omitirmos o usuário remoto, o sistema levará em consideração que estamos tentando nos conectar com o nome de usuário igual ao local.
O arquivo /etc/ssh/sshd_config
Neste arquivo são definidos todos os parâmetros de configuração do servidor OpenSSH.
Algumas das principais opções desse arquivo são:
Port <num_porta>: Define em qual porta tcp o servidor escutará por conexões. O padrão é 22.
ServerKeyBits <bits>: Quantidade de bits utilizada na criptografia do servidor. O Padrão
“costuma ser” 768 bits.
LoginGraceTime <segundos>: O tempo máximo (em segundos) que o servidor OpenSSH
aguardará por um usuário autenticar-se após conectar.
PermitRootLogin <yes/no>: Permite ou não que o usuário root se conecte diretamente ao
servidor.
AllowUsers <usuario1,usuario2>: Lista dos usuários com permissão para se autenticar no
servidor. O mesmo vale para grupos com a opção AllowGroups.
DenyUsers <usuario1,usuario2>: Lista dos usuários sem permissão para se autenticar no servidor.
O mesmo vale para grupos com a opção DenyGroups.
374
PROGRAMA
TÉCNICO CIDADÃO
Controle de acesso a serviços
Um item importante em qualquer nível de segurança de sistemas é definir corretamente o
controle de acesso aos serviços de rede. Questões básicas como “Quais hosts devem ter acesso
a tais serviços?” fazem parte de um administrador prevenido.
O Linux dispões diversas ferramentas que nos auxiliam nessa tarefa, como os TCP Wrappers e o
daemon inetd (xinetd em implementações mais recentes). A interação entre essas ferramentas
pode ser observada no diagrama abaixo:
375
PROGRAMA
TÉCNICO CIDADÃO
TCP Wrappers
É bem simples compreender o contexto por detrás do funcionamento do s TCP Wrappers. Esta é
a implementação da biblioteca host_access nos binários dos serviços de rede.
Quando uma conexão a um serviço com suporte a TCP Wrappers é requisitada, o binário verifica
os arquivos /etc/hosts.allow e /etc/hosts.deny em busca de registros que definam o acesso
376
PROGRAMA
TÉCNICO CIDADÃO
ao serviço. Assim que encontrar a primeira ocorrência, o sistema não verificará o restante do(s)
arquivo(s) em busca de novas ocorrências.
DICA
Para descobrir se determinado binário da rede suporta TCP Wrappers, verifique se
ele reguisita a biblioteca libwrap com o comando: “ldd <binário do serviço>” ou
através do comando: “strings -f <binário do serviço> | grep hosts_access”
Como ocorre o controle de acesso...
Os arquivos /etc/hosts.allow e /etc/hosts.deny definem regras que liberam e bloqueiam
(respectivamente) acesso aos serviços através dos TCP Wrappers. Esses arquivos são
verificados na seguinte ordem:
1) É verificado o arquivo /etc/hosts.allow, e caso haja uma referência que case com os
aspectos da conexão atual (serviço, Host de origem, etc...) a conexão é liberada, caso
contrário será verificado o arquivo /etc/hosts.deny (próximo passo).
2) Chegando aqui, o arquivo /etc/hosts.deny será lido, e caso encontre uma ocorrência
que case com os aspectos da conexão a mesma será negada, caso contrário ela será
liberada normalmente.
Os seguintes pontos devem ser levados em consideração nas implementações de TCP Wrappers
nos serviços de rede:
● As regras inseridas em
/etc/hosts.allow têm precedência sobre as definidas em /
etc/hosts.deny. Portanto, mesmo que o acesso a determinado serviço seja negado no
hosts.deny, caso ele esteja liberado em /etc/hosts.allow a conexão será liberada e a
entrada em hosts.deny nunca será lida.
377
PROGRAMA
TÉCNICO CIDADÃO
● A ordem de definição das regras através dos arquivos é muito importante, e o
administrador deve estar atento que o sistema lê os arquivos da primeira para a última
linha.
● Caso nenhuma regra seja encontrada em nenhum dos arquivos (ou caso eles não
existam), o acesso aos serviços de rede serão liberados sem interferências.
● Quaisquer alterações nos arquivos de configuração terão efeito imediatamente, não
sendo necessário a reinicialização de nenhum serviço.
Formato das Regras de acesso
O formato das regras de acesso é o mesmo para ambos os arquivos de configuração
(/etc/hosts.allow e /etc/hosts.deny). Qualquer linha em branco ou comentada com o
caractere “#” será ignorada. Ar regras devem ser definidas “uma por linha”, no seguinte
formato:
<daemon(s)> : <cliente(s)> [: opções...]
Os daemons podem ser o nome de um ou mais binários (que suportem TCP Wrappers)
separados por vírgula ou então a palavra chave “ALL”, que refere-se a todos.
Os clientes podem ser o IP ou hostname de um ou mais clientes de rede separados por vírgula.
Podemos utilizar palavras-chave como: ALL (todos os hosts), LOCAL (somente hosts cujo
hostname presente em /etc/hosts não contenha um “.”), KNOWN (Hosts conhecidos, listados
em /etc/hosts), UNKNOWN (O contrário de KNOWN) e PARANOID (Qualquer host cujo
hostname não “bata” com o IP do mesmo). Também é permitido utilizar o operados EXCEPT
para criar regras de exceção.
O campo de opções é opcional, e depende das opções aceitas pelo binário a ser controlado.
Vejamos um exemplo das regras de acesso:
378
PROGRAMA
TÉCNICO CIDADÃO
# cat /etc/hosts.deny
ALL: ALL
# cat /etc/hosts.allow
sshd: KNOWN
Este geralmente é o arranjo mais comum, onde, antes de mais nada, todos os serviços são
negados no arquivo /etc/hosts.deny, e os serviços são liberados conforme necessidade no
arquivo /etc/hosts.allow. Nesse caso, somente o serviço sshd (sshd é o nome do binário em /
usr/sbin para o serviço de OpenSSH) será aceito, e somente para hosts conhecidos (listados
em /etc/hosts).
ATENÇÃO
A última linha dos arquivos /etc/hosts.allow e /etc/hosts.deny deve ser uma linha
em branco. Caso contrário, a última regra não será analisada.
inetd e xinetd
Inetd é um daemon capaz de controlar acesso a serviços populares de rede (como FTP, IMAP,
POP3, etc...)que sejam inicializados sob demanda (Ao contrário dos serviços standalone, que
não dependem de outros serviços para serem inicializados).
Já o xinetd é uma implementação extendida do inetd, também visto como a evolução do inetd,
pois dispõe de mais opções para o controle de acesso do que o inetd, portanto, concentraremos
nossos estudos no xinetd. Independente disso, a forma de ambos trabalharem é semelhante.
Funcionamento
Quando uma tentativa de conexão passa pelos TCP Wrappers, esta será encaminhada para a
camada do xinetd. Caso o determinado serviços seja controlado pelo xinetd, as regras de
acesso serão aplicadas.
379
PROGRAMA
TÉCNICO CIDADÃO
Instalação e Configuração do inetd
Em muitas distribuições o xinetd é o “super-server” padrão do sistema, e inclusive já vem
instalado. No Debian e no Conectiva a história é diferente, pois o “super-server” padrão é o
inetd.
Características do inetd no Debian
serviço(s)
inetd
Configurações /etc/inetd.conf
O inetd basicamente se limita em disponibilizar ou não determinados serviços de rede sob seu
controle, portanto, sua sintaxe de configuração é simples. Cada serviço sob seu controle deve
ser configurado e descomentado (sem o “#” no início da linha) um por linha, no formato:
<serviço> <tipo_de_socket> <protocolo> <flags> <usuario> <binário> <args>
Onde, serviço é o nome do serviço em relação a porta de conexão (conforme descrito no
arquivo /etc/services); Tipo de socket pode ser stream (geralmente usado em conexões TCP)
ou dgram (equivalente para UDP); Os protocolos podem ser quaisquer um dos listados no
arquivo /etc/protocols, mas costumamos utilizar somente tcp ou udp.
Consulte a man page do arquivo inetd.conf para maiores detalhes.
DICA
O Debian disponibiliza o comando update-inetd para gerenciamento do arquivo /
etc/inetd.conf.
380
PROGRAMA
TÉCNICO CIDADÃO
Por exemplo, após instalar o servidor telnet (Pacote telnetd no Debian), a seguinte linha será
adicionada no arquivo /etc/inetd.conf:
telnet
stream tcp
nowait telnetd.telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd
Instalação e configuração do xinetd
Caso precise “migrar” o inetd para xinetd no Debian, basta instalar o pacote “xinetd”, e os
scripts do debconf ajudarão na migração da configuração antiga (no arquivo /etc/inetd.conf)
para a nova (/etc/xinetd.conf). Caso precise fazer isso manualmente, execute o comando
“dpkg-reconfigure xinetd”.
O arquivo /etc/xinetd.conf
Esse é o arquivo principal de configuração do xinetd. As entradas de configuração são divididas
em “blocos” delimitados por chaves (“{“ e “}”), conforme o exemplo abaixo, que mostra o
bloco de configurações padrão o serviço telnet:
service telnet
{
socket_type
= stream
protocol
= tcp
wait
= no
user
= telnetd
group
= telnetd
server
= /usr/sbin/in.telnetd
}
Na primeira linha é definido o nome do serviço, que deve constar no arquivo /etc/services (Pois
é assim que o xinetd associa uma porta de comunicação).
381
PROGRAMA
TÉCNICO CIDADÃO
Já dentro do bloco de configuração é que devem ser definidas as opções. A página de manual
do arquivo xinetd.conf mostra todos os parâmetros possíveis,mas veremos os mais
importantes.
Os parâmetros socket_type, protocol, wait e server tem o mesmo significado que no
inetd.conf (“wait = no” aqui é o mesmo que nowait no inetd.conf). Já os parâmetros user e
group definem com quais permissões de usuário o serviço será iniciado.
Um parâmetro de configuração que não costuma vir definido no xinetd do Debian é o “disable”.
Quando ele não está definido explicitamente no bloco de configuração do serviço, o padrão é
“no”, ou seja, o serviço em questão está habilitado no xinetd. Caso precise desabilitar um
serviço no xinetd, adicione no bloco de configuração do respectivo serviço a linha:
disable = yes
Não se esqueça de que o daemon do xinetd deverá ser reiniciado para que as alterações
entrem em vigor.
Definindo controle de acesso no xinetd
Existem uma série de opções possíveis que podem ser adicionadas nos blocos de configuração
de cada serviço controlado pelo xinetd para definir regras de acesso aos mesmos.
Uma lista completa dessas opções pode ser vista na man page do arquivo xinetd.conf, mas
veremos as mais utilizadas:
only_from – Uma lista dos hosts e/ou redes que possuem acesso ao serviço.
no_access – O inverso do parâmetro only_from, pois lista os hosts e/ou redes que não possuem
acesso ao serviço.
382
PROGRAMA
TÉCNICO CIDADÃO
access_times – especifica um espaço de tempo em que o serviço ficará disponível, no formato
HH:MM-HH:MM.
Definições globais
Todas as opções que adicionarmos no bloco de configuração “defaults” (Inexistente por padrão
em algumas versões do Debian) do arquivo de configuração /etc/xinetd.conf serão válidas para
todos os serviços controlados pelo xinetd, dispensando ter que definir as mesmas diretrivas
para todos.
Por exemplo, digamos que seja necessário definir que somente o host local e a rede
192.168.1.0/24 deverá ter acesso aos serviços controlados pelo xinetd, e no período de 9 da
manhã até às 23 horas. Nesse caso, basta adicionar o seguinte bloco de configuração* no início
do arquivo /etc/xinetd.conf:
defaults
{
only_from
= 127.0.0.1 192.168.0.0/24
access_times = 09:00-22:00
}
Reinicie o daemon do xinetd e refaça os testes.
Firewalls no Linux
Outro ponto muito importante no que tange a segurança de sistemas Linux é a correta
configuração do Firewall. Logicamente, o escopo desse treinamento está longe de demonstrar
todas as entranhas e infinitas possibilidades de um firewall, mas trataremos da estrutura e
configuração de regras simples de firewall em sistemas Linux com ipchains e iptables.
* Em algumas distribuições o bloco “defaults” já existe no arquivo /etc/xinetd.conf.
383
PROGRAMA
TÉCNICO CIDADÃO
ipchains
Este é o mecanismo de firewall padrão dos Kernels 2.2 do Linux. (Os kernels de versão anterior,
2.0, utilizavam o ipfwadm).
A estrutura do ipchains é bem simples, se comparada com o seu substituto posterior (iptables,
visto adiante), conforme mostra a figura abaixo:
O ipchains analiza o tráfego de pacotes com base em três cadeias (chains): input, forward e
output. São nas cadeias que cadastramos as regras do firewall.
É de suma importância que o administrador de um firewall ipchains conheça como o ipchains
analisa os pacotes no fluxo de dados através das chains.
Todos os pacotes cujo host de destino seja o firewall ou precise passar através do firewall para
completar a comunicação passarão por todas as cadeias de regras do ipchains, na seguinte
ordem: input, forward e output.
Já os pacotes gerados localmente no firewall só passam pelas cadeias input e output. Nesse
caso, as regras contidas na cadeia input serão analisadas quando o host de destino seja o
firewall, e as regras da output serão analisadas quando o host de origem seja o firewall.
384
PROGRAMA
TÉCNICO CIDADÃO
Habilitando o ipchains em Kernels 2.4 e 2.6
O ipchains, apesar de ser o “firewall” dos kernels 2.2, também pode ser utilizado em kernels
mais recentes, como os da versão 2.4 e 2.6. Para isso, basta carregar o módulo ipchains em
sistemas que possuam este suporte, com o comando:
# modprobe ipchains
Listando regras no ipchains
A opção -L instrui o ipchains a listar as regras de firewall. Essa opção é geralmente
acompanhada da opção -n, que diz para o ipchains não efetuar resolução de nomes para hosts
e portas nas regras, mostrando IPs e números de portas ao invés de nomes.
Veja um exemplo:
# ipchains -nL
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):
Nesse caso, as 3 cadeias de regras do ipchains estão vazias. Mas aguarde que a história irá
mudar...
Definindo a política padrão do ipchains
Cada uma das 3 cadeias do ipchains possui uma política padrão associada, que é mostrada
entre parênteses na saída da listagem de regras, no cabeçalho de cada cadeia de regras. Por
padrão, a política das cadeias de regras é ACCEPT, que instrui o firewall a aceitar o pacote
analisado caso o mesmo não tenha “casado” com nenhuma regra anterior na mesma cadeia.
385
PROGRAMA
TÉCNICO CIDADÃO
Para definir uma política diferenciada para cada uma das cadeias, utilizamos a opção -P,
seguida do nome da cadeia e a política desejada, que pode ser um dos alvos como ACCEPT ou
DENY.
No exemplo abaixo, definiremos a política padrão da cadeia input como DENY:
# ipchains -Pinput DENY
# ipchains -nL
Chain input (policy DENY):
target
prot opt
source
destination
ports
ACCEPT
tcp ------ 192.168.1.0/24 192.168.1.12
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):
* -> 22
Adicionando regras no ipchains
Para adicionar regras no ipchains, utilizamos a opção -A, (ou -I para inserir a regra em uma
posição específica na cadeia) seguida do nome da cadeia que a regra será alocada, a definição
da regra e o “alvo” da regra. O alvo é justamente o que o ipchains deverá fazer com o pacote
caso o mesmo “case” com as definições estabelecidas na regra. Alvos comuns (e autoexplicativos) no ipchains são: DENY, ACCEPT, REJECT, MASQ e REDIRECT (veja a lista
completa na man page do comando).
Vejamos um exemplo:
# ipchains -Ainput -p tcp --dport 22 -i eth0 -s 192.168.1.0/24 \
-d 192.168.1.12 -j ACCEPT
# ipchains -nL
Chain input (policy ACCEPT):
target
prot opt
source
destination
ports
ACCEPT
tcp ------ 192.168.1.0/24 192.168.1.12
* -> 22
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):
Definimos que serão aceitas conexões vindas da rede 192.168.1.0/24, com destino ao ip local
192.168.1.12, interface de entrada eth0 e porta 22/tcp.
386
PROGRAMA
TÉCNICO CIDADÃO
Outro exemplo:
# ipchains -Ainput -i lo -j ACCEPT
# ipchains -Ainput -p icmp --icmp-type echo-reply -i eth0 -j ACCEPT
# ipchains -nL
Chain input (policy DENY):
target
prot opt
source
destination
ports
ACCEPT
tcp ------ 192.168.1.0/24 192.168.1.12
* -> 22
ACCEPT
all ------ 0.0.0.0/0
0.0.0.0/0
n/a
ACCEPT
icmp ------ 0.0.0.0/0
0.0.0.0/0
0 -> *
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):
Liberamos todo tipo de conexão de entrada na interface loopback (claro, sem isso diversos
sistemas internos de rede não funcionarão) e todos as “respostas” de ping da interface eth0.
Removendo regras no ipchains
Utilizamos a opção -D, seguida do nome da cadeia de regras e o número da regra, que pode ser
obtido com a opção --line-numbers ao listar as regras no ipchains. Veja o exemplo:
# ipchains -nL --line-numbers
Chain input (policy DENY):
num target prot opt
source
destination
ports
1 ACCEPT tcp ------ 192.168.1.0/24 192.168.1.12
* -> 22
2 ACCEPT all ------ 0.0.0.0/0
0.0.0.0/0
n/a
3 ACCEPT icmp ------ 0.0.0.0/0
0.0.0.0/0
0 -> *
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):
# ipchains -Dinput 3
# ipchains -nL --line-numbers
Chain input (policy DENY):
num target
prot opt
source
destination
ports
1 ACCEPT tcp ------ 192.168.1.0/24 192.168.1.12
* -> 22
2 ACCEPT all ------ 0.0.0.0/0
0.0.0.0/0
n/a
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):
Caso seja necessário remover todas as regras do firewall de uma só vez, utilize:
387
PROGRAMA
TÉCNICO CIDADÃO
# ipchains -F
iptables
O iptables é o manipulador das regras de firewall padrão dos kernels 2.4 e 2.6. Ele utiliza o
mecanismo Netfilter do kernel, apresentando muito mais flexibilidade que o ipchains para a
mesma tarefa, permitindo melhores resultados com um número menos de regras.
A grande diferença do iptables em relação ao ipchains é sua modularidade apresentada,
graças ao sistema de “Tabelas”. No iptables também existem cadeias, regras e alvos, como no
ipchains, mas o grande diferencial é que o iptables organiza as cadeias em tabelas, onde cada
tabela possui um conjunto de cadeias.
Por exemplo, no iptables existe a tabela filter, que contém as cadeias INPUT, FORWARD e
OUTPUT. Já a tabela nat do iptables contém as cadeias PREROUTING, POSTROUTING e
OUTPUT.
A tabela filter é a principal do iptables, e pode ser considerada como equivalente a toda a
funcionalidade oferecida pelo ipchains. Porém, a forma como que os dados são analisados
através das cadeias de regras é ligeiramente diferente do ipchains, como pode ser observado
na figura abaixo:
Cada uma das cadeias se relaciona de forma diferente com o tráfego de rede, dependendo da
tabela em que ela se encontra. A inserção de tabelas no sistema de firewall permite que novas
funcionalidades sejam adicionadas ao software de firewall (o iptables, no caso) sem que as
regras de outras tabelas sejam afetadas, por exemplo.
388
PROGRAMA
TÉCNICO CIDADÃO
ATENÇÃO
Caso o módulo do ipchains esteja carregado, é preciso remover todas as regras e
em seguida o módulo ipchains, com o comando “rmmod ipchains”. Só assim será
possível utilizar o iptables.
listando regras no iptables
A opção -L instrui o iptables a listar as regras de firewall. Essa opção é geralmente
acompanhada da opção -n, que diz para o iptables não efetuar resolução de nomes para hosts
e portas nas regras, mostrando IPs e números de portas ao invés de nomes. O funcionamento
389
PROGRAMA
TÉCNICO CIDADÃO
dessas opções é essencialmente parecido com o ipchains, mas no iptables podemos
especificar qual tabela listar as regras, com a opção -t seguida do nome da tabela desejada.
Acompanhe o exemplo abaixo:
# iptables -nL
# iptables -t nat -nL
Definindo a política padrão do iptables
Essa etapa funciona exatamente igual ao ipchains, com exceção de que os alvos possíveis são
diferentes, podendo ser DROP (no lugar de DENY) e ACCEPT, basicamente.
No exemplo abaixo, definiremos a política padrão da cadeia INPUT da tabela filter como DROP:
# iptables -PINPUT DROP
ATENÇÃO
Nunca faça isso remotamente sem que sua conexão esteja explicitamente liberada
no firewall.
Adicionando regras no iptables
Assim como no ipchains, as opções -A ou -I servem para adicionar regras no firewall, com a
diferença que a opção -A sempre adiciona as regras no final da lista, e a opção -I seguida do
número de posição permite inserir regras na ordem desejada dentro da cadeia de regras
especificada.
Vejamos um exemplo, onde adicionaremos as mesmas regras que foram adicionadas no
exemplo do ipchains, porém agora com o iptables:
# iptables -AINPUT -p tcp --dport 22 -i eth0 -s 192.168.1.0/24 \
-d 192.168.1.12 -j ACCEPT
# iptables -AINPUT -i lo -j ACCEPT
# iptables -AINPUT -p icmp --icmp-type echo-reply -i eth0 -j ACCEPT
390
PROGRAMA
TÉCNICO CIDADÃO
A sintaxe é praticamente igual, com pouquíssimas diferenças. Agora vejamos os resultados, e
aproveitamos para conhecer a opção “-v” da listagem de regras (também existe no ipchains),
que mostra mais informações na listagem de regras, como o número de pacotes que passaram
por cada regra, interfaces de rede, etc:
# iptables -vnLINPUT –line-numbers
Removendo regras no iptables
Funciona exatamente como no ipchains. Vejamos um exemplo, onde removeremos uma das
regras:
# iptables -DINPUT 3
Compartilhando uma conexão com a internet
Uma comum utilização para qualquer tipo de firewall no Linux é compartilhar uma conexão com
a Internet, permitindo que máquinas com endereços IP inválidos na internet (reservados para
redes locais) possam navegar na internet. Isso é possível graças ao NAT (Network Address
Translation). Considera a figura a seguir, que mostra uma pequena rede de exemplo:
391
PROGRAMA
TÉCNICO CIDADÃO
Esse é um arranjo muito comum em redes de pequeno porte. Nesse exemplo, temos uma rede
interna 192.168.0.0/24, e um firewall com duas interfaces de rede, uma delas (eth1 por
exemplo) está diretamente conectada a rede local e possui o endereço IP 192.168.0.1, a outra
interface (eth0) está conectada na Internet e possui um IP válido qualquer, 200.1.2.3 por
exemplo.
Para compartilhar essa conexão de Internet, é preciso habilitar duas coisas no firewall:
392
PROGRAMA
TÉCNICO CIDADÃO
1) Repassagem de pacotes: Essa parte é facilmente resolvida com o comando “echo 1 > /
proc/sys/net/ipv4/ip_forward”. Mas podemos adicionar a linha “net.ipv4.ip_forward=1”
no arquivo /etc/sysctl.conf e executar o comando sysctl -p para ativar as mudanças. De
qualquer forma, isso permitirá a repassagem de pacotes entre as redes conectadas através
do firewall.
2) Criar uma regra no firewall que faça o NAT dos pacotes: No ipchains, a regra para nossa rede
de exemplo seria:
# ipchains -A forward -s 192.168.0.0/24 -d 0.0.0.0 -j MASQ
No iptables, a mesma regra teria a sintaxe:
# iptables -t nat -A PREROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
Funcionamento do NAT
O NAT, como já foi dito, permite que hosts com IPs reservados para redes locais possam
navegar na Internet. Isso é possível porque as implementações do NAT trocam o campo do
cabeçalho de origem de conexão quando os pacotes enviados por um host “interno” passam
pela regra do firewall. Sendo assim, o firewall coloca o seu próprio IP no campo do endereço de
origem no cabeçalho IP e mantém isso em um cache na memória. Assim, quando um host na
internet responde a requisição, ele enviará a resposta para o IP do firewall, que por sua vez irá
desfazer a troca do endereço no cabeçalho IP e entregar o pacote de resposta ao host interno
que originou a comunicação.
393
PROGRAMA
TÉCNICO CIDADÃO
394
PROGRAMA
TÉCNICO CIDADÃO
OpenOffice.org
Este curso é uma introdução ao ambiente Open Office, suíte de
aplicativos para escritório desenvolvido pelo próprio Open Office.
Entre os inúmeros recursos oferecidos pelo Open Office, o curso
apresenta aos alunos o OpenWriter (editor de textos), o OpenCalc (folha
de cálculos), e os demais componentes da suíte. Nas aulas, os alunos
aprenderão a salvar arquivos em diferentes formatos, usar o corretor de
texto, formatar dados em planilhas, alterar as características das fontes,
além de incluir folhas de cálculos em documentos do OpenWriter, entre
outras tarefas.
395
PROGRAMA
TÉCNICO CIDADÃO
INTRODUÇÃO AO OPENOFFICE
O que é o OpenOffice?
OpenOffice.org é uma comunidade que desenvolve um conjunto de aplicativos de
produtividade para escritórios, livre e multiplatafoma. Este conjunto inclui aplicativos essenciais
como processador de texto, planilha eletrônica, gerador de apresentações e um programa de
desenhos. Tudo com uma interface muito similar a outros produtos do gênero.
Além de ser sofisticado e flexível o OpenOffice.org trabalha com diversos formatos de
arquivos de forma transparente, inclusive com o Microsoft Office.
O OpenOffice.org está disponível em 27 línguas diferentes, e a comunidade de
desenvolvimento está constantemente acrescentando novos idiomas. O OpenOffice.org é
estável e roda nativamente sob Solaris, Linux (inclusive PPC Linux) e Windows. Versões para
FreeBSD, Irix e Mac Os X estão a caminho e encontram-se em diferentes estágios de
desenvolvimento.
Escrito em C++ e com as APIs documentadas e licenciadas sob as licenças de software
livre LGPL e SISSL, o OpenOffice.org permite a qualquer desenvolvedor com os conhecimentos
necessários tirar proveito do código fonte. Além disso, o formato de arquivos do OpenOffice.org
é o XML, o que possibilita intercâmbio e interoperabilidade com outros aplicativos, facilitando
assim a aceitação do produto.
Histórico
O OpenOffice é uma suíte de aplicativos, ou conjunto de programas, desenvolvidos para o uso
em escritório. Nele são encontrados programas para edição de textos, cálculos em planilhas,
396
PROGRAMA
TÉCNICO CIDADÃO
criação de apresentações, entre outros. A grande vantagem da suíte OpenOffice está na sua
gratuidade. Pode ser encontrada e baixada da internet e pode ser usada, copiada, distribuída e
modificada, segundo as necessidades de cada empresa. Tudo isso com custo zero.
Originalmente, a Sun Microsystems desenvolveu uma suíte de aplicativos gratuita
chamada StarOffice, que rapidamente popularizou-se mundialmente. Com o lançamento da
versão 6.0 do StarOffice, a Sun optou por comercializá-lo. Entretanto, liberou o código da versão
anterior, 5.2, permitindo que a comunidade Open-Source desse continuidade ao trabalho
gratuito. OpenOffice.org é o projeto de código aberto pelo qual a Sun Microsystems está
liberando a tecnologia que move a mundialmente popular suíte de produtividade StarOffice.
O projeto OpenOffice.org estabelece as facilidades necessárias para fazer esta
tecnologia de código aberto disponível para as comunidades de desenvolvedores por todo o
mundo.
Além disso, o site do projeto é construído para prover um centro de informações
completo e abrangente, reunindo todos os aspectos do projeto e sua tecnologia. Isso inclui
detalhes da tecnologia e como ela pode ser utilizada, por exemplo, como base para futuras
inovações, de API e documentação arquitetural até planejamento, notícias e informações
promocionais.
A comunidade OpenOffice.org pode ser encontrada em www.openoffice.org e a
comunidade OpenOffice brasileira, em www.openoffice.org.br. A versão do OpenOffice utilizada
neste curso é a versão em 1.1.3, em Português.
397
PROGRAMA
TÉCNICO CIDADÃO
OPENOFFICE TEXTO
O OpenOffice Texto é um programa que possibilita a edição de textos e criação de páginas web,
pois permite:
- aplicação de uma grande variedade de formatações (tipo, tamanho e coloração
das letras, impressão em colunas, alinhamento automático etc),
- utilização de figuras, gráficos, símbolos e sons no texto,
- movimentação de trechos de um texto dentro dele ou para outros textos,
- duplicação de partes ou do texto todo, facilitando correções,
- armazenamento de textos em arquivos, o que permite usá-los ou modificá-los
no futuro.
Através desse programa é possível abrir, editar, salvar e imprimir arquivos do MS Word e do
StarOffice.
Abrindo, salvando e imprimindo
O Writer (ou qualquer aplicativo do OpenOffice) pode ser aberto clicando-se em
1. Menu K – Escritório – OpenOffice (Aplicativo).
Com o OpenOffice Texto aberto, podemos abrir arquivos já salvos, clicando em “Arquivo” “Abrir”, ou pressionando as teclas “Ctrl + O”. Basta encontrar o diretório do arquivo e clicar
duas vezes nele para que seja aberto.
Quando o computador é desligado todo o conteúdo da memória RAM é apagado, portanto
o texto precisa ser gravado (salvo):
398
PROGRAMA
TÉCNICO CIDADÃO
- de vez em quando (por segurança, para não perder todo o trabalho, como é
freqüente acontecer durante uma falta momentânea de energia ) e
- sempre que se for fechar o programa.
Definição do formato, orientação e margens do papel
O OpenOffice Texto permite usar papel de diferentes tamanhos, sendo necessário configurar o
seu tamanho corretamente. Para isso:
- Abra o menu Formatar e clicar em "Página"
- Clique na aba "Página", na seta do campo "Formato" e escolher o formato do
papel
- Assinalar a "Orientação" em um dos 2 campos inferiores a orientação do papel
(retrato ou paisagem)
- Na parte inferior esquerda escolher o tamanho das 4 margens do papel
(superior, inferior, esquerda e direita)
Salvando um documento de texto
1. Se não desejar mudar o nome, a localização ou o formato do arquivo:
- clicar sobre o botão "Salvar" na barra de funções
2. Se desejar mudar o nome, a localização ou a extensão do arquivo:
- clicar no menu Arquivo e em "Salvar como". Aparece a janela "Salvar como"
No campo superior, "Salvar em" selecionar o drive e a pasta onde se deseja salvar o arquivo
- No campo "Nome do arquivo" digitar o nome desejado para o arquivo
- No campo "Salvar como tipo" selecionar o tipo do arquivo, ou seja, determinar
qual programa o poderá ler.
399
PROGRAMA
TÉCNICO CIDADÃO
Se houver vários documentos abertos, para salvar todos deve-se clicar no menu Arquivo e em
Salvar Tudo.
Salvando em diferentes formatos
Note-se que clicando em Arquivo e em "Salvar como" o documento poderá ser salvo em
diversos formatos, podendo ser lidos por diferentes programas: o próprio Open Office.org,
Microsoft Word 97 / 2000 / XP, Microsoft Word 95, Microsoft Word 6.0, diferentes versões do
Star Writer: 5.0, 4.0 e 3.0 e seus modelos, Texto, Texto codificado, "Rich Text Format" e Página
Web.
Salvamento automático (ou Gravação Automática)
O Writer tem um recurso que permite o salvamento automático de documentos em um
intervalo especificado de tempo, o que é muito interessante para evitar perda de dados em
caso de travamento do computador ou de falta de energia súbita. Para isso basta:
- Clicar no menu Ferramentas - Opções
- Em "Abrir - Salvar" clicar em "Geral"
- Em "Salvar" marcar o campo antes de "Salvar automaticamente a cada" e, ao
lado, digitar ou selecionar o intervalo de tempo em que deseja salvar os
documentos. Clicar em Ok.
Se deixar marcado o campo "Avisar para salvar" aparecerá um aviso perguntando se deseja
salvar ou não.
(Evidentemente, quanto menor for o período de tempo - ou maior for a freqüência de
salvamentos - com que o Writer salve arquivos, mais informações serão recuperadas se ocorrer
algum problema).
400
PROGRAMA
TÉCNICO CIDADÃO
Como trocar o padrão de salvamento do Writer
Quando se salva um documento no Writer clicando sobre o botão "Salvar" na barra de funções
o formato padrão de salvamento é o nativo, ou seja, "Open Office.org 1.0 Texto" que é
evidenciado pela extensão sxw.
Mas se sempre for necessário salvar os arquivos com outra extensão e, para facilitar, não usar
"Salvar como", pode-se alterar o padrão da extensão do arquivo criado no OpenOffice:
- Clicar em Ferramentas - Opções
- Abrir a opção "Abrir / Salvar"
- Clicar em "Geral"
- Selecionar "Texto" em "Formato de arquivo padrão" e
- ao lado, em "Sempre salvar como" selecionar qual a extensão em que deseja
salvar os arquivos.
Notar que:
1. Dependendo do documento pode-se perder formatação pois algumas funções
simplesmente desaparecem quando salvas em formatos MS Office.
2. É possível formatar a extensão tanto do Writer como dos outros programas do
OpenOffice.org.
Proteção de textos
O Writer oferece várias maneiras de impedir alterações em documentos. Pode-se
proteger um documento com uma senha:
- abrir o texto a ser protegido
401
PROGRAMA
TÉCNICO CIDADÃO
- clicar no menu "Arquivo" e em "Salvar Como"
- marcar o campo antes de "Salvar com senha" e clicar em "Salvar"
Aparecerá a janela "Digitar senha"
Digitar uma senha no campo após "Senha"
Redigitar a senha, no campo após "Confirmar" e clicar em "OK".
Para alterar esta senha, no campo "Senha", selecionar a linha de asteriscos que
representa a senha existente e digitar a nova senha. Para excluir a senha pressionar Delete.
Impressão de textos
Para imprimir um arquivo rapidamente, em que o texto inteiro será impresso uma única
vez.
- clicar sobre o botão "Imprimir"
Mas, para escolher a impressora, a área de impressão e o número de cópias deve-se
definir opções de impressão.
Como definir opções de impressão
- Clicar no menu Arquivo e em Imprimir ou clicar em <Ctrl>P
402
PROGRAMA
TÉCNICO CIDADÃO
Algumas dicas de impressão:
Imprimir múltiplas cópias de um documento:
- digitar ou selecionar o número de cópias desejadas no campo
"Cópias".
Imprimir somente uma página:
- em "Intervalo de impressão" digitar o número daquela página.
Imprimir uma parte do texto:
403
PROGRAMA
TÉCNICO CIDADÃO
- antes selecionar o texto desejado. Em "Intervalo de impressão"
selecionar a opção "Seleção".
os
Imprimir um intervalo contínuo de páginas:
- selecionar a opção "Páginas" e digitar o intervalo com um hífen entre
números.
Imprimir páginas não contínuas:
- selecionar a opção "Páginas" e digitar os números separados por
vírgulas.
Tabulação e parágrafos
Pode-se alterar a aparência de blocos de texto, como o espaçamento entre as linhas ou o
alinhamento do texto. Para modificar a formatação de um ou mais parágrafos:
- Selecionar os parágrafos desejados
- Clicar em “Formatar” - “Parágrafo”
404
PROGRAMA
TÉCNICO CIDADÃO
Aba Recuar espaçamento
Campo Avanços de parágrafo
Selecionar o parágrafo que deseja recuar e, também, o valor do recuo:
Em "Avanços de parágrafo" especificar o recuo em centímetros a partir
- da esquerda
- da direita
- nas "Primeiras Linhas" (refere-se ao avanço em todas as
primeiras linhas dos parágrafos).
405
PROGRAMA
TÉCNICO CIDADÃO
- automático (refere-se apenas à primeira linha do parágrafo, com
um espaço pré-determinado).
Campo Distância
Pode-se definir um espaçamento maior entre os parágrafos, acima deles e/ou abaixo deles
- Superior: Espaçamento em centímetros antes do parágrafo onde se
encontra o cursor.
- Inferior: Espaçamento em centímetros depois do parágrafo onde se
encontra o cursor.
Campo Entrelinhas
O espaçamento entre linhas determina a quantidade de espaço vertical entre as linhas do texto. Há algumas opções:
- Simples: é o espaçamento entre linhas que possa acomodar a
maior fonte possível nessa linha e um pequeno espaço adicional.
- 1,5 linha: é um espaçamento uma vez e meia maior que o
espaçamento simples entre linhas.
- Duplo: é um espaçamento duas vezes maior que o simples.
E pode-se especificar o tamanho do espaçamento em Proporcional - Mínimo - Entrelinha – Fixo:
- Proporcional: o espaçamento entre linhas é aumentado ou
diminuído de acordo com uma porcentagem especificada. (Por
exemplo, se for um múltiplo de 1,2, aumentará o espaçamento em
20%, e se for um múltiplo de 0,8, diminuirá o espaçamento em
20%).
- Mínimo: é o espaçamento entre linhas mínimo para acomodar
tamanhos de fonte grandes ou elementos gráficos que, de outro
modo, não se ajustariam ao espaçamento especificado.
- Fixo: é um espaçamento fixo entre linhas que é ajustado pelo
usuário. Todas as linhas ficam espaçadas uniformemente.
Aba Alinhamento
406
PROGRAMA
TÉCNICO CIDADÃO
Alinhamento é a posição do texto em relação às margens. O Writer é pré definido para alinhar o
texto pela margem esquerda deixando a borda direita desalinhada.
Pode-se mudar o alinhamento, selecionando os parágrafos que se deseja alinhar e clicando
sobre um dos botões de alinhamento na barra de ferramentas padrão ou
clicando em
Formatar/ Parágrafo e escolhendo a opção de alinhamento desejada (Centralizado, Esquerdo,
Direito ou Justificado ).
No alinhamento Justificado o parágrafo é alinhado tanto à direita quanto à esquerda da linha.
Para tal aparecem espaçamentos entre as palavras. Notar que o Writer apresenta a
possibilidade de definir o alinhamento da última linha do parágrafo justificado.
Aba Fluxo do Texto
No campo "Divisão silábica" pode-se configurar a hifenização.
Se o campo "Automaticamente" for marcado será ativada a hifenização do parágrafo podendose definir quantos caracteres devem permanecer no final da linha e no início da linha.
No último campo pode-se definir o número máximo de linhas que ´podem apresentar as
hifenizações.
No campo "Opções" pode-se definir as quebras, ou seja, se um grupo de linhas ou parágrafos
será quebrado ficando uma parte em uma página e outra parte em outra página.
Aqui é necessário entender o conceito de linhas viúvas e órfãs:
- Isolada (ou viúva) é a última linha de um parágrafo que fica sozinha na
parte superior de uma página.
–
Órfã é a primeira linha de um parágrafo que fica sozinha na parte
inferior de uma página.
Para evitar a quebra de linhas deve-se selecionar o campo
407
PROGRAMA
TÉCNICO CIDADÃO
- "Manter linhas juntas"
Para evitar a quebra de parágrafos deve-se selecionar o campo
- "Manter parágrafos juntos"
Nos 2 últimos campos "Controle de linhas órfãs" e "Controle de linhas isoladas" define-se o
número de linhas que poderão ficar nessas condições.
Aba Numeração
Aqui pode-se escolher o estilo da numeração
Aba Tabulação
Aqui pode-se definir quanto e qual o tipo de tabulação (direita, esquerda, centro, ou
decimal)
Aba Capitular
Letra capitulada: é a primeira letra de um parágrafo realçada por tamanho e formato
diferente do restante do texto.
Aqui pode-se capitular uma letra, uma palavra ou um conjunto de texto.
O campo "Exibir Iniciais" deve ser marcado para permitir visualizar o efeito.
O campo "Palavra Inteira" permite que toda a palavra seja capitulada.
As outras opções referem-se a
- números de caracteres que se deseja capitular,
- número de linhas reservado para as letras capituladas e
- distância das letras capituladas do restante do texto.
408
PROGRAMA
TÉCNICO CIDADÃO
O campo "Conteúdos" permite digitar o texto a ser capitulado e definir o estilo de
caracteres.
Formatando o texto
Depois de digitado pode-se desejar alterar a aparência do texto produzido. Como no
OpenOffice Texto estão disponíveis muitos tipos de letra, diferentes tamanhos e várias cores, o
texto pode ter a aparência desejada, possibilitando que se realce adequadamente cada parte
do documento.
A aplicação desses formatos pode ser feita de modo personalizado.
Seleção do texto
Porém deve-se lembrar, antes de fazer qualquer modificação deve-se indicar ao programa
onde ela será feita, ou seja, é necessário selecionar o texto que se deseja alterar.
A aplicação dos formatos exige que o texto desejado já esteja
selecionado
O texto pode ser selecionado, utilizando:
- o Mouse
Para selecionar uma palavra basta clicar duplo sobre ela. Para selecionar uma
linha basta dar um clique triplo sobre qualquer palavra da linha.
- o Teclado
Por meio do teclado, pode-se acessar diferentes partes do texto:
Pressionar
SHIFT seta para direita
Será selecionado
Um caracter para a direita
409
PROGRAMA
TÉCNICO CIDADÃO
SHIFT seta para esquerda
Um caracter para a esquerda
SHIFT CTRL seta para direita
Palavras inteiras para frente
SHIF CTRL seta para esquerda
Palavras inteiras para trás
SHIFT END
Posição do cursor até o fim da linha
SHIFT HOME
Posição do cursor até o início da linha
SHIFT seta para baixo
Posição do cursor e uma linha para baixo
SHIFT seta para cima
Posição do cursor e uma linha para cima
SHIFT CTRL END
Posição do cursor até a última linha da página final
SHIFT CTRL HOME
Posição do cursor até a primeira linha da página
inicial
CTRL A
Todo o texto
Page Down
Uma tela para baixo
Page Up
Uma tela para cima
CTRL A (com o cursor na célula)
Uma célula preenchida de uma tabela
CTRL A A (com o cursor na tabela)
Tabela inteira
Formatação personalizada
Para mudar a aparência dos caracteres é necessário selecionar o texto e aplicar um ou
mais atributos ou formatos de caracteres, que podem ser letras, números, símbolos, marcas de
pontuação ou espaços.
Os tipos diferentes de letras (fontes) que o Writer disponibiliza são os mesmos instalados
no Windows e podem ter vários tamanhos.
Primeiramente seleciona-se o que se deseja formatar e depois formata-se. Os formatos
podem ser aplicados por meio de diferentes maneiras:
1. Usar os atalhos existentes na barra de ferramentas Objetos
410
PROGRAMA
TÉCNICO CIDADÃO
Há botões para alterar estilo, tipo de fonte, tamanho da fonte, negritar, aplicar o formato
itálico, sublinhar simples, alinhar à esquerda, centralizar, alinhar à direita, justificar, aplicar
marcadores (numerados ou não), colorir a fonte ou o parágrafo... ou
2. Clicar em algum lugar vazio do texto com o botão direito do mouse. No menu
de contexto, clicar em "Caractere" ou
3. Clicando-se em “Formatar” e em “Caractere”.
A seguinte janela é aberta:
Aparecerá a janela “Caractere” com diversas abas: Fonte, Efeitos de Fonte, Posição
Hiperligação e Plano de Fundo.
411
PROGRAMA
TÉCNICO CIDADÃO
Aba Fonte
Clicando-se sobre a aba "Fonte" pode-se escolher a fonte, estilo, tamanho, cor e língua.
- Fonte: dá acesso a vários tipos de letras já disponíveis
- Estilo: refere-se aos efeitos Normal, Negrito, Itálico ou os 2 últimos.
- Tamanho: Aqui aparece a lista de possíveis tamanhos para a fonte
selecionada. Pode-se selecionar um tamanho entre as opções existentes
ou digitar o valor no campo apropriado.
- Cor: Permite alterar a cor da fonte.
- Língua: idioma.
Escolher o que desejar (dando duplo clique) e observar o resultado no "Campo de
visualização", na parte inferior da janela.
Depois de escolher os formatos, clicar no botão "Ok". Os novos parágrafos acrescentados
posteriormente, já serão formatados.
Aba Efeitos de Fonte
Clicando-se sobre a aba "Efeitos de fonte" pode-se selecionar efeitos sobre a fonte. Eles
incluem:
- Sublinhar: em formas diferentes e colorido ou não, - Hachurar: também em formas diversas.
- Campo Relevo: Pode ser colocado de duas maneiras - "Em relevo" e
"Baixo relevo" aos quais podem ou não ser adicionados efeitos extras de
"Contorno", "Sombra" e "Intermitente". Notar que o "Intermitente", não aparece no
"Campo de visualização".
412
PROGRAMA
TÉCNICO CIDADÃO
- Campo Efeitos:
Maiúscula: Altera para maiúsculas todas as letras do texto
selecionado.
Minúscula: Altera para minúsculas todas as letras do texto
selecionado.
Títulos:
Altera Para Maiúscula A Primeira Letra De Cada
Palavra Do Texto Selecionado.
Caixa alta: Aplica caixa alta em todo o texto selecionado.
Escolher o que desejar e clicar no botão "Ok".
Aba Posição
Permite aplicar Sobrescrito e Subscrito, o grau de rotação e dimensionamento e escolher o
tipo de espaçamento entre os caracteres (padrão, expandido e condensado).
Aba Hiperlink
Permite inserir e editar um hiperlink no texto selecionado.
Aba Plano de Fundo
Na janela que aparece, pode-se escolher uma cor para o fundo do texto selecionado. "Sem
preenchimento" não inclui cor.
Escolher o que desejar e clicar no botão "Ok".
Configuração da página
Pode-se alterar as configurações de uma série de ítens:
- Clicar em “Formatar” - “Página”:
413
PROGRAMA
TÉCNICO CIDADÃO
Aba Organizador
Aqui pode-se definir os estilos e há informações sobre o texto no campo "Contém".
414
PROGRAMA
TÉCNICO CIDADÃO
Aba Página
É aconselhável configurar a página do texto antes de iniciar a edição, para sempre ter
uma boa idéia de como ficará a posição do texto na(s) folha(s).
Aqui se pode definir as margens da folha, o tamanho do papel utilizado pela impressora, a
direção da impressão.
Campo Formato
Permite selecionar entre os tamanhos do papel aquele que será usado, entre
os formatos padrão, já existentes.
Campos Largura e Altura
Permite definir tamanhos diferentes dos formatos padrão existentes,
digitando as medidas nos campos "Largura" e "Altura" para um tamanho de papel personalizado.
Campo Orientação
Esse campo possibilita definir a posição do papel: retrato ou paisagem.
Campo Bandeja do Papel
Para impressoras com múltiplas bandejas de papel, aqui se pode definir qual
bandeja será utilizada. Para impressoras comuns pode-se deixar a
configuração padrão da impressora.
Campo Margens
Aqui pode-se definir as margens, ou seja, a distância entre o texto e o
início
do papel. O valor padrão é 2 cm em todas as direções. Em geral
esse valor
está acima do mínimo do padrão comum dos diferentes
modelos de impressoras. Portanto, há mais garantia extra de que o texto
não será cortado
na impressão.
415
PROGRAMA
TÉCNICO CIDADÃO
Selecionar ou digitar as medidas desejadas em "Esquerda", "Direita",
"Superior", "Inferior".
Se forem escolhidos valores que excedam a área de impressão,
recerá um aviso com a solicitação de confirmação. Então, pode-se
celar, pressionando o botão "Não". Os números serão reajustados
os valores válidos mais próximos dos anteriormente definidos.
vas.
apacanpara
Configurações de layout
Pode-se especificar em quais páginas do texto as escolhas feitas serão efeti-
Configurar Página
Pode-se definir a Paginação, ou seja a numeração das páginas.
Permite escolher entre "Direita e esquerda", "Invertido", "Somente direita" e "Somente esquerda", para textos que serão impressos em ambos os lados do papel, somente na página impressa à direita (configuração padrão da
primeira página), à esquerda ou em ordem invertida.
Formato
Possibilita escolher o formato do número - algarismos romanos ou letras (em
maiúsculas ou minúsculas) ou algarismos arábicos.
Como funcionam os estilos do OpenOffice
Estilos são modelos pré-concebidos de formatação de parágrafos usados para padronizar
os textos. Você pode utilizar o “Estilista” para aplicar, criar, editar, adicionar e remover estilos
de formatação.
Para acessar esta função, basta clicar em “Formatar” - “Estilista”, clicar no botão “Estilista
na barra de funções” ou teclar F11.
416
PROGRAMA
TÉCNICO CIDADÃO
Como aplicar um estilo:
Selecione o texto. Para aplicar um estilo de caractere a uma palavra, selecione a palavra.
Para aplicar um estilo de parágrafo, selecione o parágrafo.
Na janela do Estilista, clique duas vezes no estilo.
eles:
A barra de ferramentas “Estilista” também contém ícones para formatar documentos. São
1- Estilos de Parágrafo: Exibe estilos de formatação para parágrafos.
Utilize “estilos de parágrafo” para aplicar a mesma formatação, como
fonte, numeração e layout, aos parágrafos do documento.
2- Estilos de Caractere: Exibe estilos de formatação para caracteres.
Utilize estilos de caracteres para aplicar estilos de fonte ao texto
selecionado em um parágrafo.
3- Estilos de Quadro: Exibe estilos de formatação para quadros. Utilize
estilos de quadro para formatar o layout e a posição dos quadros.
4- Estilos de Página: Exibe estilos de formatação para páginas. Utilize estilos de
página para determinar layouts de página, incluindo a presença de cabeçalhos e
rodapés.
5- Estilos de Numeração: Exibe estilos de formatação para listas numeradas e
com marcadores. Utilize estilos de numeração para formatar caracteres de
número e de marcador e para especificar recuos.
6- Modo de Formato de Preenchimento: Aplica o estilo selecionado ao objeto ou
texto que você selecionar no documento. Clique neste ícone e, em seguida,
arraste uma seleção no documento para aplicar o estilo. Para sair deste modo,
clique novamente no ícone ou pressione Esc.
417
PROGRAMA
TÉCNICO CIDADÃO
do
7- Novo Estilo a partir da Seleção: Cria um novo estilo com base na formatação
parágrafo, página ou seleção atual.
8- Atualizar Estilo: Substitui o estilo de parágrafo selecionado no Estilista pelo
estilo de parágrafo selecionado.
O navegador
Através do navegador você poderá ir rapidamente para diferentes partes do documento.
Você também pode utilizar o Navegador para inserir elementos do documento atual, ou de
outros documentos abertos, e para organizar Documentos Mestre.
Para abrir o navegador clique em “Editar” - “Navegador”, ou tecle F5 ou clique no botão
“Ativar/desativar navegador” na barra de funções.
418
PROGRAMA
TÉCNICO CIDADÃO
Clique no sinal de adição (+), ao lado de uma categoria no Navegador, para exibir os ítens
da categoria. Para exibir o número de ítens de uma categoria, escolha Ajuda e certifique-se de
que Dica esteja selecionado e, em seguida, repouse o ponteiro do mouse sobre a categoria do
Navegador. Para acessar um ítem do documento, clique duas vezes nele no Navegador.
Para acessar um ítem anterior ou o próximo em um documento, dê um clique longo no
ícone navegação a fim de abrir a barra de ferramentas flutuante Navegador, clique na categoria
do ítem e, em seguida, clique na seta para cima ou para baixo.
Abaixo segue uma lista dos botões que compõem o Navegador:
419
PROGRAMA
TÉCNICO CIDADÃO
1- Alternar: Alterna entre exibição principal e exibição normal quando um
documento mestre é aberto.
2- Navegação: Abre a barra de ferramentas flutuante Navegação, através da
qual você poderá ir rapidamente até o próximo ítem ou até o anterior, na
categoria selecionada. Selecione a categoria e, em seguida, clique nas setas
"Anterior" e "Próximo".
Para continuar a pesquisa, clique no ícone Repetir Pesquisa na função da barra de
ferramentas flutuante Navegação.
3- Anterior: Vai para o ítem anterior do documento. Para especificar o tipo de
ítem que pretende acessar, dê um clique longo no ícone Navegação e, em
seguida, clique em uma categoria do ítem - por exemplo, "Figuras"
4- Próximo:Vai para o próximo ítem no documento. Para especificar o tipo de
ítem que pretende acessar, dê um clique longo no ícone Navegação e, em
seguida, clique em uma categoria do ítem - por exemplo, "Figuras".
5- Número da Página: Digite o número da página para a qual deseja ir e, em
seguida, pressione Enter. Você também pode utilizar as teclas Page Up ou Page
Down para inserir o número da primeira ou última página.
6- Modo de Arrastar: Define as opções de arrastar e soltar para inserir ítens do
Navegador em um documento, por exemplo, como um hyperlink. Dê um clique
longo nesse ícone e, em seguida, escolha a opção que você deseja utilizar.
Inserir como Hyperlink
Cria um hyperlink quando você arrasta e solta um ítem dentro do
documento atual. Clique no hyperlink no documento a fim de ir até o ítem
para o qual ele aponta.
Inserir como Link
Insere o ítem selecionado como um link onde você arrasta e solta no
documento atual. Textos são inseridos como seções protegidas. O conteúdo do link é
automaticamente atualizado quando a fonte é alterada. Para atualizar manualmente os links
em um documento, escolha Ferramentas - Atualizar – Links. Não é possível criar links para
figuras, objetos OLE, referências e índices.
420
PROGRAMA
TÉCNICO CIDADÃO
Insere como Cópia
Insere uma cópia do ítem selecionado onde você arrasta e solta no
documento atual. Não é possível arrastar e soltar cópias de figuras, objetos OLE, referências e
índices.
7- Ascender Capítulo: Move o título selecionado, bem como o texto abaixo do
título, uma posição acima no Navegador e no documento. Para mover somente o título
selecionado, e não o texto associado ao título, mantenha pressionada a tecla Ctrl e, em
seguida, clique neste ícone.
8- Rebaixar Capítulo: Move o título selecionado, bem como o texto abaixo do
título, uma posição abaixo no Navegador e no documento. Para mover somente o título
selecionado, e não o texto associado ao título, mantenha pressionada a tecla Ctrl e, em
seguida, clique neste
ícone.
9- Ativar/Desativar Caixa de Listagem: Mostra ou oculta a lista do
Navegador , desde que o Navegador não esteja encaixado.
10- Exibição de Conteúdo: Alterna entre a exibição de todas as categorias do
Navegador e a categoria selecionada.
11- Definir Lembrete: Clique aqui para definir um lembrete na posição atual do
cursor. Você pode definir até cinco lembretes. Para ir até um lembrete, clique no ícone
Navegação . Na janela Navegação, clique no ícone Lembrete e, em seguida, clique no botão
Anterior ou Próximo.
12- Cabeçalho: Move o cursor até o cabeçalho, ou do cabeçalho para a área de
texto do documento.
13- Rodapé: Move o cursor até o rodapé, ou do rodapé para a área de texto do
documento.
14- Ancorar <-> Texto: Vai para a área entre o texto e a âncora da nota de
rodapé.
15- Níveis de Títulos Mostrados: Clique neste ícone e, em seguida, escolha, na
estrutura de tópicos, o número de níveis de títulos que você deseja exibir na janela do
Navegador. Você também pode acessar este comando clicando com o botão direito do mouse
em um título na janela do Navegador.
421
PROGRAMA
TÉCNICO CIDADÃO
1-10
Clique em 1 para exibir somente os níveis superiores de títulos na janela
do Navegador e em 10 para exibir todos os títulos.
16- Ascender Nível: Aumenta o nível do título selecionado na estrutura de
tópicos e dos títulos abaixo dele, exceto um. Para aumentar somente o nível do título
selecionado, mantenha pressionada a tecla Ctrl e, em seguida, clique neste ícone.
17- Rebaixar Nível: Rebaixa o nível do título selecionado na estrutura de tópicos
e dos títulos abaixo dele, exceto um. Para rebaixar somente o nível do título
selecionado, mantenha pressionada a tecla Ctrl e, em seguida, clique neste ícone.
Localizando e substituindo
Procura por ou substitui texto ou formatos no documento atual. Para acessar este
comando, clique em “Editar” - “Localizar e substituir”, ou tecle “Ctrl +F”, ou clique no botão
“Localizar e substituir”. A seguinte janela se abre:
422
PROGRAMA
TÉCNICO CIDADÃO
Procurar por
Insira o texto pelo qual você deseja procurar ou selecione uma pesquisa anterior da lista.
As opções de pesquisa estão listadas na área Opções da caixa de diálogo.
Substituir por
Insira o texto de substituição, ou selecione um texto ou um estilo de substituição recente
na lista.
As opções de substituição estão listadas na área Opções da caixa de diálogo.
Opções
Somente Palavras Inteiras
Palavras inteiras que correspondem exatamente ao texto de pesquisa são encontradas; se o texto de pesquisa corresponde somente a uma parte da palavra, a pesquisa não obterá resultados.
Recuar
A pesquisa inicia na posição atual do cursor e recua até o início do arquivo.
Expressões regulares
Permite o uso de caracteres coringa na pesquisa.
Diferenciar Maiúsculas de Minúsculas
Distingue os caracteres em maiúsculas e minúsculas.
Somente a Seleção Atual
Pesquisa somente no texto selecionado.
423
PROGRAMA
TÉCNICO CIDADÃO
Procurar por Estilos
Procura pelo estilo que você especificou. Marque esta caixa de seleção e, em seguida, selecione um estilo da lista Procurar por . Para especificar um estilo de substituição, selecione um estilo da lista Substituir por.
Pesquisa por similaridade
Localize os termos que forem semelhantes ao texto na caixa Procurar por. Marque
essa caixa de seleção e, em seguida, clique no botão ... para definir as opções de similaridade.
Localizar Tudo
Localiza e seleciona todas as ocorrências do texto ou do formato que você está
procurando no documento.
Localizar
Localiza e seleciona a próxima ocorrência do texto ou do formato que você está
procurando no documento.
Substituir Tudo
Substitui todas as ocorrências do texto ou do formato que você deseja substituir.
Substituir
Substitui o texto ou o formato selecionado pelo qual você procurou e, em seguida, procura
pela próxima ocorrência.
Atributos
Escolha os atributos de texto gerais que você deseja procurar. Por exemplo, se você
procurar por um atributo de Fonte, serão localizadas apenas as instâncias de texto que não
utilizam o estilo de fonte padrão. Para localizar uma fonte específica, clique no botão Formato .
Formatação
Localiza recursos de formatação de texto específicos, como tipos de fonte, efeitos de fonte
e características de fluxo do texto.
424
PROGRAMA
TÉCNICO CIDADÃO
Sem Formatação
Clique na caixa Procurar por ou Substituir por e, em seguida, clique neste botão para
remover os critérios de pesquisa baseados em formatos.
Como utilizar a auto correção e a auto-formatação
Define as opções para a correção automática de erros à medida que você digita. Para
acessar este comando basta ir em “Ferramentas” - “Auto-correção/auto-formatação”.
As configurações de auto correção serão aplicadas quando você pressionar a tecla “Enter”
após ter inserido uma palavra.
425
PROGRAMA
TÉCNICO CIDADÃO
Para ativar ou desativar o recurso de auto correção, no OpenOffice.org.br Texto, escolha
“Formatar” - “auto formatar” - “Ao Digitar”. Para aplicar as configurações de auto formatação a
um documento de texto inteiro, escolha “Formatar” - “auto formatação” - “Aplicar”.
Aba Substituir
Edita a tabela de substituição para correção ou substituição automática de palavras ou
abreviações no documento.
426
PROGRAMA
TÉCNICO CIDADÃO
Aba Exceções
Especifique as combinações de letras ou abreviações que você não deseja que o
OpenOffice.org.br corrija automaticamente.
Aba Opções
Selecione as opções para a correção automática de erros ao digitar e, em seguida, clique
em OK.
Aba Aspas Personalizadas
Especifique as opções de auto correção para as aspas no documento.
Aba Completar Palavra
Defina as opções para completar palavras que ocorram com freqüência enquanto você
digita.
auto formatação
Formata automaticamente o arquivo de acordo com as opções que definidas em
“Ferramentas” - “auto correção”. Para acessar esta função, vá em “Formatar” - “Auto
formatar”.
Ao Digitar
Formata automaticamente o documento ao digitar. Para ajustar as opções de
formatação, abra Ferramentas – auto correção/auto formatação e, em seguida, clique na
guia Opções.
Aplicar
Formata automaticamente o arquivo de acordo com as opções que você definiu
Ferramentas – auto correção.
em
427
PROGRAMA
TÉCNICO CIDADÃO
Aplicar e Editar Alterações
Formata automaticamente o arquivo de acordo com as opções definidas
Ferramentas - auto correção/auto formatação. Antes de aplicar a formatação, o
OpenOffice.org.br pede que você aceite ou rejeite as alterações.
em
Para abrir a caixa de diálogo auto formatação de Tabelas, clique em uma célula da
tabela e, em seguida, escolha Formatar – auto formatação.
Como utilizar o auto texto
O OpenOffice.org.br Writer permite que você armazene texto, texto com figuras, tabelas e
campos como auto texto para que possa inseri-lo rapidamente em um documento quando
desejar. Se quiser, você também pode armazenar textos formatados.
Criação de uma Entrada de auto texto
1. Selecione o texto, o texto com figuras, a tabela ou o campo que você deseja
salvar como entrada de auto texto. Uma figura pode ser armazenada somente se
estiver ancorada como um caractere e estiver precedida e seguida de, pelo
menos, um caractere de texto.
2. Escolha “Editar” - “auto texto”.
3. Selecione a categoria em que deseja armazenar o auto texto.
4. Digite um nome que contenha mais que quatro caracteres. Isso lhe permite usar a
opção de auto texto Exibir o restante do nome como sugestão durante a
digitação. Se desejar, você pode modificar o atalho proposto.
5. Clique em auto texto e, em seguida, escolha Novo.
Para inserir um auto texto, faça o seguinte:
1. Clique no documento em que deseja inserir uma entrada de auto texto.
2. Escolha “Editar” - “auto texto”.
3. Selecione o auto texto que você deseja inserir e, em seguida, clique em Inserir.
428
PROGRAMA
TÉCNICO CIDADÃO
Você também pode digitar o atalho para uma entrada de auto texto e, em seguida,
pressionar F3. Outra alternativa seria dar um longo clique no ícone Editar auto texto na Barra
de Ferramentas Principal e, em seguida, escolher uma entrada de auto texto.
A caixa de diálogo auto texto lista as categorias e entradas do auto texto. Para acessá-la,
vá em “Editar” - “auto texto”.
Exibir o restante do nome como sugestão durante a digitação
Exibe uma sugestão para completar uma palavra como uma Dica de Ajuda depois que
você digita as três primeiras letras de uma palavra que corresponde a uma entrada do auto
texto. Para aceitar uma sugestão, pressione Enter. Se mais de uma entrada de auto texto
corresponder às letras que você digitou, pressione Ctrl+Tab para avançar pelas entradas. Por
exemplo, para inserir um texto provisório, digite "Prov" e depois pressione Enter.
Para exibir uma lista em ordem inversa, pressione Ctrl+Shift+Tab.
429
PROGRAMA
TÉCNICO CIDADÃO
Nome
Lista o nome da entrada de auto texto selecionada no momento. Se você selecionou um
texto no documento, digite o nome da nova entrada de auto texto, clique no botão auto texto e
depois escolha Novo.
Atalho
Exibe o atalho para a entrada de auto texto selecionada. Se você estiver criando uma
nova entrada de auto texto, digite o atalho que deseja utilizar para ela.
Caixa de listagem
Lista as categorias de auto texto. Para ver as entradas de auto texto em uma categoria,
clique duas vezes na categoria ou clique no sinal de adição (+) na frente da categoria. Para
inserir uma entrada de auto texto no documento atual, selecione a entrada na lista e depois
clique em Inserir.
Inserir
Insere o auto texto selecionado no documento atual.
Fechar
Fecha a caixa de diálogo e salva todas as alterações.
auto texto
Clique para exibir comandos de auto texto adicionais, por exemplo, para criar uma nova
entrada de auto texto a partir de uma seleção de texto no documento atual.
Novo
Cria uma nova entrada de auto texto a partir da seleção que você fez no
atual. A entrada é adicionada à categoria de auto texto selecionada no momento.
documento
430
PROGRAMA
TÉCNICO CIDADÃO
Novo (somente texto)
Cria uma nova entrada de auto texto somente a partir do texto na seleção que você fez no
documento atual. Figuras, tabelas e outros objetos não são
incluídos.
Copiar
Copia o auto texto selecionado para a área de transferência.
Substituir
Substitui o conteúdo da entrada de auto texto selecionada pela seleção feita no
documento atual.
Renomear
Abre a caixa Renomear Bloco de Texto, na qual você poderá alterar o nome da entrada de
auto texto selecionada.
Excluir
Exclui o(s) elemento(s) selecionado(s) após a confirmação.
Editar
Abre a entrada de auto texto selecionada para edição em um documento separado. Faça
as alterações desejadas e escolha Arquivo - Salvar auto texto e depois escolha Arquivo –
Fechar.
Macro
Abre a caixa de diálogo Atribuir Macro, onde você pode anexar uma macro para a entrada
de auto texto selecionada.
Você também pode usar macros que estejam vinculadas a algumas das entradas de auto
texto oferecidas em entradas de auto texto que você criar. As entradas de auto texto devem ser
criadas com a opção "somente texto". Por exemplo, se você inserir a seqüência
431
PROGRAMA
TÉCNICO CIDADÃO
<campo:empresa> em uma entrada de auto texto, o OpenOffice.org.br substituirá a seqüência
pelo conteúdo do campo do banco de dados correspondente.
Importar
Abre uma caixa de diálogo na qual você poderá selecionar o modelo ou documento do
Word MS 97/2000/XP que contém as entradas de auto texto que deseja importar.
Categorias
Abre a janela Editar Categorias.
Editar Categorias
Adiciona, renomeia ou exclui categorias de auto texto.
Categoria
Exibe o nome da categoria de auto texto selecionada. Para alterar o
nome
da
categoria, digite um novo nome e depois clique em Renomear. Para criar uma nova categoria,
digite um nome e depois clique em Novo.
Caminho
Exibe o caminho atual para o diretório onde os arquivos de categoria de auto texto
selecionados estão armazenados. Se você estiver criando uma categoria de auto texto,
selecione onde deseja armazenar os arquivos de categorias.
Lista de seleção
Lista as categorias de auto texto existentes e os caminhos correspondentes.
Caminho
Abre a caixa de diálogo Selecionar Caminhos, na qual você poderá selecionar o
diretório para armazenar o auto texto.
432
PROGRAMA
TÉCNICO CIDADÃO
Para adicionar um novo caminho, clique no botão Caminho na caixa de diálogo Selecionar
Caminhos , localize o diretório que deseja adicionar e depois clique em Adicionar. Você também
pode escolher Ferramentas - Opções - OpenOffice.org.br - Caminhos, selecionar auto texto na
lista e depois clicar em Editar.
Salvar links relativos a
Use esta área para definir como o OpenOffice.org.br insere links no diretório de auto texto.
Sistema de arquivos
Links para diretórios de auto texto no computador são relativos.
Internet
Links para arquivos na Internet são relativos.
Mostrar Visualização
Mostra uma visualização da entrada de auto texto selecionada.
Molduras e letras especiais
Para inserir uma moldura no documento vá em “Inserir” - “Moldura”. Será aberta uma tela
contendo várias opções de ajuste ou definição da moldura, tais como bordas e fundo. Esta opção
insere uma moldura no texto com várias opções de plano de fundo, cor, imagem, etc. Pode-se
também usar as opções do próprio OpenOffice.org ou uma moldura ou imagem escolhida pelo
próprio usuário.
433
PROGRAMA
TÉCNICO CIDADÃO
É possível inserir também molduras flutuantes, acessando o menu “Inserir” - “Moldura
flutuante”.
Como inserir uma moldura de texto
Basta selecionar o texto e depois ir em “Inserir” - “Moldura”. A mesma caixa de diálogo
mostrada acima é aberta, através da qual o usuário pode formatar a moldura conforme o
desejado.
434
PROGRAMA
TÉCNICO CIDADÃO
Uso de tabela e formatação
Uma tabela possibilita ordenar os dados dentro de um documento de texto de forma
semelhante a uma planilha, facilitando a organização de trabalhos comparativos ou que exijam
pequenas operações matemáticas – a tabela possui vínculos com o OpenOffice.org Planilha, o
que possibilita a criação de fórmulas dentro de uma tabela.
Para inserir uma tabela existem duas formas:
1. Pela Barra de Menu: Clique na Barra de Ferramentas em “Inserir” – “Tabela”.
Ou também pode-se inserir uma tabela pelo botão na Barra de Ferramentas. Em seguida
aparecerá esta tela:
No campo Tamanho, deve-se escolher o número de Colunas ou de Linhas necessárias
para a Tabela. Uma vez escolhida, é só clicar em OK para inserir a tabela.
Para inserir uma tabela com cores e bordas formatadas clique no botão auto formatar,
escolha a formatação e clique em OK.
435
PROGRAMA
TÉCNICO CIDADÃO
2. Pela Barra de ferramentas: Para inserir uma tabela pela barra de ferramentas
clique no botão Inserir e mantendo-o pressionado escolha o ítem Tabela.
Para definir o tamanho da tabela, o usuário deverá arrastar o tabela para a direita e para
baixo, definindo as células da tabela.
Depois de selecionar o tamanho da tabela, dê um clique com o botão esquerdo.
A tabela será exibida em seguida.
Formatando a Tabela
Para formatar uma tabela já inserida no seu documento:
1. Selecione a tabela;
436
PROGRAMA
TÉCNICO CIDADÃO
2. Clique na barra de menus em Formatar – Tabela
3. Aparecerão estas opções: (estas opções só estarão disponíveis na
barra de menus quando uma tabela estiver selecionada).
Aba Tabela
Este recurso possibilita renomear a tabela, reajustar o alinhamento – se automático, à
direita, à esquerda etc., e também o espaçamento de um texto em relação à tabela.
437
PROGRAMA
TÉCNICO CIDADÃO
Aba Fluxo de Texto
Este recurso possibilita reajustar o texto dentro da tabela.
Aba Colunas
Esta opção possibilita reajustar a largura das colunas da tabela.
Aba Bordas
Esta opção possibilita fazer ajustes nos contornos da tabela.
Aba Plano de Fundo
Esta opção possibilita formatar o plano de fundo de uma tabela, inserindo uma cor ou uma
imagem.
Corrigir erros datilográficos
É possível verificar os erros ortográficos do documento ou da seleção atual. O
OpenOffice.org.br inclui cabeçalhos, rodapés, entradas de índice e notas de rodapé na
verificação ortográfica. A verificação ortográfica inicia na posição atual do cursor e avança até o
final do documento ou da seleção. Depois, você pode escolher continuar a verificação
ortográfica a partir do início do documento.
Para acessar este comando escolha “Ferramentas” - “Verificação ortográfica” - “Verificar”,
tecle F7 ou clique no botão “Verificação ortográfica” na barra de ferramentas. A verificação
ortográfica procura palavras com erros ortográficos e lhe oferece a opção para adicionar uma
palavra desconhecida a um dicionário de usuário. Quando a primeira palavra com erros
ortográficos é encontrada, a caixa de diálogo Verificação Ortográfica é exibida.
Utilização de Imagens
É possível que o usuário insira uma figura no texto, com as opções de procurar a figura no
Editor de Imagem do OpenOffice.org ou em outra pasta. Para isso clique na Barra de Menu em
Inserir - Figura.
Neste ítem há duas opções:
438
PROGRAMA
TÉCNICO CIDADÃO
1. Do Arquivo: Pode-se escolher uma imagem gravada no computador,
selecionando-a na janela que se abre e clicando em abrir.
2. Digitalizar: Com este recurso, pode-se scannear uma foto para o seu texto. Ao
acioná-lo aparecerão dois ítens: o de “Selecionar Origem” – que serve para o
usuário escolher qual o recurso será usado – uma webcam ou um scanner, por
exemplo, e o de “Adquirir” para acionar o programa.
Utilizando Objetos de Desenho
Para se inserir objetos no texto, vá no menu “Inserir” - “Objeto” e escolha umas das sete
opções de objetos:
Inserir Objeto OLE
Esta opção insere no texto um objeto a partir de um documento feito no OpenOffice.org.
Plug-in
Esta opção permite inserir um objeto do tipo Plug-in no documento texto que está sendo
criado ou o documento em HTML. Um Plug-in é um programa anexado ao browser que roda
arquivos tipo Miniaplicativos.
Som
Insere um arquivo de som no documento atual. Localize o arquivo de som, em seguida,
clique em Inserir.
Vídeo
Insere um arquivo de vídeo no documento atual. Localize o arquivo de vídeo, em seguida,
clique em Inserir.
439
PROGRAMA
TÉCNICO CIDADÃO
Miniaplicativo
Um Miniaplicativo é um programa que roda no Browser. Para inseri-lo clique na Barra de
Menu em Inserir - Objeto – Miniaplicativo.
Fórmula
Para inserir uma fórmula no documento clique na barra de menu Inserir - Objeto
Fórmula.
-
Gráfico
Esta opção permite ao usuário inserir e configurar um gráfico no documento.
Fonte de Dados: como elaborar consultas a um banco de dados e
como gerar relatórios a partir de consultas a bancos de dados
A "consulta" é uma exibição especial da tabela. As consultas podem exibir certos registros
ou somente alguns campos por registro e, se necessário, também classificar os registros. A
consulta pode se aplicar a uma tabela ou a várias tabelas se elas estiverem vinculadas por
campos de dados comuns.
Para acessar esse comando...
Abrir Banco de Dados - Menu de Contexto de um Recipiente de Consulta
Utilize as consultas para localizar registros nas tabelas de dados, com base em um
determinado critério. Todas as consultas criadas para um banco de dados são listadas na
entrada Consultas. Devido ao fato de essa entrada conter as consultas de banco de dados, ela
também é chamada de "recipiente de consulta".
Impressão de Consultas
Para imprimir uma consulta ou tabela:
440
PROGRAMA
TÉCNICO CIDADÃO
1. Abra um documento de texto (ou um documento de planilha se você preferir as
funções de impressão desse tipo de documento).
2. Abra o banco de dados para que você possa ver o nome da consulta ou tabela
como uma entrada.
3. Arraste o nome para o documento aberto. Será exibida a caixa de diálogo Inserir
Colunas do Banco de Dados
4. Decida quais colunas = campos de dados você deseja incluir. Você também pode
clicar no botão auto formatação e selecionar o tipo de formatação
correspondente. Feche a caixa de diálogo.
A consulta ou tabela será inserida no documento.
Imprima o documento, escolhendo Arquivo – Imprimir.
Criação, Utilização e Edição de Relatórios de Banco de Dados
O Assistente de Relatório guia você através de todas as etapas necessárias para criar
relatórios em tabelas ou consultas a bancos de dados. O Assistente de Relatório oferece uma
seqüência de caixas de diálogos e, de acordo com as seleções feitas nessas caixas, o relatório é
construído e preenchido com dados.
Criação de um Relatório com o Assistente
Chame o Assistente de Relatório usando o menu Arquivo - Assistente - Relatório.
Estas são as etapas principais realizadas pelo Assistente de Relatório:
1. Seleção do banco de dados e da tabela ou consulta.
2. Edição dos nomes que serão impressos para os campos do banco de dados, se
necessário.
3. Seleção do modo como agrupar e ordenar os campos do banco de dados.
4. Seleção de um layout para um dos modelos fornecidos.
5. O relatório será criado como um modelo ou como um relatório estático.
441
PROGRAMA
TÉCNICO CIDADÃO
Um modelo de relatório pode ser reutilizado a qualquer momento com os dados atuais.
Um relatório estático é uma cópia instantânea dos dados no momento de criação do relatório.
Utilização de um Relatório
Os modelos de relatório podem ser aberto a qualquer momento no explorer do banco de
dados:
1. Pressione F4 para abrir a tela de exibição de fonte de dados.
2. No explorer de fonte de dados, clique no ícone "+" à esquerda de um nome de
banco de dados para exibir os componentes do banco de dados.
3. Clique no ícone "+" à esquerda da entrada Links para exibir os links.
4. Clique duas vezes em um dos links do relatório para abrir o relatório como um
novo documento do OpenOffice.org.br Writer. Esses links foram adicionados à
entrada Links automaticamente pelo Assistente de Relatório.
Edição de um Relatório
Na última página da caixa de diálogo do Assistente de Relatório, você pode optar por
editar o modelo do relatório antes de usá-lo pela primeira vez.
Posteriormente, você poderá editar qualquer modelo de relatório usando o respectivo
menu de contexto na entrada Link na tela de exibição de fonte de dados.
Você pode editar o estilo da primeira página e o estilo das demais páginas, o estilo dos
parágrafos, o formato dos números, os rótulos de campos impressos, entre outros. No entanto,
não deve editar a instrução SQL do relatório, o nome do banco de dados, os controles de
formulários ocultos e as informações relacionadas, a menos que esteja totalmente familiarizado
com a tecnologia do banco de dados em uso.
Para editar a largura de uma coluna no relatório:
1. Abra o modelo de relatório no modo de edição (veja a seção anterior sobre como
editar um modelo de relatório).
2. Clique na área da tabela principal, onde o conteúdo dos campos de dados será
preenchido posteriormente.
3. Abra o menu de contexto e selecione o comando Tabela.
442
PROGRAMA
TÉCNICO CIDADÃO
4. Na próxima caixa de diálogo, selecione a página da guia Colunas e edite a largura
da coluna. Feche a caixa de diálogo com OK.
5. Salve o modelo clicando no ícone Salvar Documento.
Avaliação dos tópicos aplicados
1- Redigir o texto abaixo, exatamente como está:
PROGRAMA 5S
O programa 5S nasceu no Japão. É composto de 5 etapas:
SEIRI (descarte)
SEITON (ordenação)
SEISO (limpeza)
SEIKETSU (higiene)
SHITSUKE (disciplina)
Uma das formas de se iniciar a caminhada em busca da qualidade é através da prática
dos 5S!!! Isto porque a prática dos 5S cria um ambiente agradável, seguro e produtivo,
facilitando o entendimento e a prática dos princípios, conceitos e ferramentas da Qualidade
Total.
DESCARTE - é separar o que é necessário do que é desnecessário; é separar as coisas de
que se precisa das coisas que atrapalham as atividades, evitando acumular papel velho, ferro
velho, ferramentas quebradas, equipamentos fora de uso e todas aquelas coisas que
guardamos há muito tempo e que não são necessárias às nossas atividades. Após esta
separação devemos descartar (vender, trocar ou doar) o que não precisamos.
ORDENAÇÃO - é colocar as ferramentas, móveis, peças, documentos e tudo mais de que
você necessita para execução das atividades no lugar certo, pronto para uso a qualquer
momento e por qualquer pessoa.
443
PROGRAMA
TÉCNICO CIDADÃO
LIMPEZA - é remover toda a sujeira do local de trabalho, das ferramentas e equipamentos,
de maneira que o ambiente fique totalmente limpo.
HIGIENE - é criar condições para garantir a saúde física e mental.
DISCIPLINA - é seguir e aperfeiçoar as regras e procedimentos estabelecidos, visando ao
constante crescimento profissional e humano.
2- Centralize o título e utilize alguma opção de formatação, a sua escolha, que
o destaque.
3- Aumente o recuo na 1ª linha de cada parágrafo. Nos parágrafos que
descrevem cada um dos 5s, aumento o recuo de todo o parágrafo.
4- Destaque cada uma das 5 etapas do programa 5s, formatando a fonte, inserindo
fundo, efeitos de fonte, etc. A mesma formatação deve ser usada na palavra corresponde no
início do parágrafo que descreve cada etapa.
5- Insira uma tabela de duas colunas, colocando numa a palavra em japonês e na outra a
correspondente em português.
444
PROGRAMA
TÉCNICO CIDADÃO
OPENOFFICE PLANILHA
O OpenOffice Planilha possibilita a criação e edição de planilhas eletrônicas, pois permite:
- aplicar fórmulas e funções a dados numéricos e efetuar cálculos
- aplicação de uma grande variedade de formatações (tipo, tamanho e
coloração das letras, impressão em colunas, alinhamento automático etc),
- utilização de figuras, gráficos e símbolos
- movimentação e duplicação dos dados e fórmulas dentro das planilhas ou
para outras planilhas,
- armazenamento de textos em arquivos, o que permite usá-los ou modificá-los
no futuro.
Planilha
Uma planilha (sheet) é uma grande tabela, que é usada quando se necessita fazer cálculos,
operações matemáticas, projeções, análise de tendências, gráficos ou qualquer tipo de
operação que envolva números.
Cada planilha se compõe de colunas e linhas, cuja intersecção delimita as células:
Colunas: Estão dispostas na posição vertical e são identificadas da esquerda para a direita,
começando com A até Z. Depois de Z, são utilizadas 2 letras: AA até AZ, que são seguidas por
BA até BZ, e assim por diante, até a última (IV), num total de 256 colunas.
Linhas: Estão dispostas na posição horizontal e são numeradas de 1 até 32.000. Portanto, a
intersecção entre linhas e colunas gera 8.192.000 células disponíveis.
445
PROGRAMA
TÉCNICO CIDADÃO
Utilizando Fórmulas
Uma fórmula é uma equação que efetua cálculos em uma célula. Pode-se criar fórmulas que
efetuam operações matemáticas (adição, subtração, multiplicação, ...) ou que comparem
valores.
Prioridade entre operações
Para efetuar qualquer combinação de cálculos sempre é necessário lembrar que o OpenOffice
Planilha obedece a prioridade entre as operações.
Assim sendo, multiplicação e/ou divisão têm prioridade em relação à soma e/ou subtração.
Exemplo: Como obter a média entre 5 + 6 + 9 ?
Se a fórmula for digitada assim: =5+6+9/3, o que acontecerá?
O OpenOffice Planilha primeiramente irá dividir 9 por 3 e, depois, somará o resultado
com os demais números. O resultado será 14, o que, obviamente não corresponde à
média. Portanto, para obter o resultado correto, deve-se envolver a soma por parênteses:
=(5 + 6 + 9)/3
Assim, primeiramente será calculado o que está dentro dos parênteses e, depois, o resultado será dividido por 3.
Como fazer cálculos em planilhas
O OpenOffice Planilha possibilita executar operações com maior segurança, pois permite
visualizar todos os passos que se realiza e, em caso de ocorrer um erro, pode-se voltar e fazer
as alterações, sem que seja necessário recomeçar tudo.
Algumas operações
446
PROGRAMA
TÉCNICO CIDADÃO
Os operadores matemáticos que nos possibilitam fazer cálculos nas planilhas são:
ADIÇÃO: soma os valores contidos nas células. Símbolo: “ + “
SUBTRAÇÃO: subtrai valores existentes nas células. Símbolo: “ - “
MULTIPLICAÇÃO: multiplica os valores contidos nas células. Símbolo: “ * “
DIVISÃO: divide os valores existentes nas células. Símbolo “/ “
Exemplos de Operações:
SOMA n1+ n2
SUBTRAÇÃO n1- n2
MULTIPLICAÇÃO n1* n2
DIVISÃO n1/ n2
EXPONENCIAÇÃO (n^exp )
RADICIAÇÃO RAIZ( n )
LOGARITMO LOG10( n )
OBS.: exp = número correspondente ao expoente.
Como efetuar uma operação
Para exemplificar, suponha que temos os valores 3 e 2 nas células B4 e C4.
Deseja-se ter na célula D4 o resultado de sua soma.
- clica-se na célula onde se deseja o resultado (D4)
447
PROGRAMA
TÉCNICO CIDADÃO
- na barra de fórmulas digita-se =B4+C4 (sem espaços)
(isso também aparece na célula D4)
- clica-se em Enter ou no símbolo em verde
- para não visualizar o resultado ( 5 ) selecionado basta clicar em uma célula
vazia
É importante notar que pode-se somar quaisquer valores, inclusive em células não contíguas.
Para criar uma fórmula deve-se saber onde se localizam as informações que serão usadas no
cálculo.
1. Digitar os dados
2. Clicar na célula onde desejar que apareça o resultado
3. Na Barra de Fórmulas digitar um sinal de igualdade (=)
4a. Clicar na célula que contém o primeiro valor que entra na fórmula.
(O endereço dela aparecerá na Barra de Fórmulas)
4b. Na Barra de Fórmulas digitar um operador matemático
5. Repetir os passos 4a e 4b até que a fórmula esteja completa
6. Clicar em <Enter>.
(A fórmula aparecerá na barra de fórmula e o resultado na célula ativa).
Ou pode-se seguir os passos 1 a 3 e digitar a fórmula corretamente na Barra de Fórmulas e
clicar em <Enter>.
É importante notar que as fórmulas não aparecem na planilha, mas somente o seu resultado.
448
PROGRAMA
TÉCNICO CIDADÃO
Operações com seqüências de números
Exemplo: =A1 + B3 + D7, cujo resultado será a soma dos valores existentes nas células A1, B3
e D7.
Procede-se como descrito acima:
- uma seqüência direta de células.
Então, usa-se o sinal “ : ” entre a primeira e a última célula da seqüência.
Por exemplo: =SOMA(B2:B5), cujo resultado será a soma de todos os
valores existentes nas
células: B2+B3+B4+B5, ou seja no intervalo entre o primeiro valor da seqüência: B2 e o último:
B5.
- clica-se na célula onde se deseja o resultado (B6)
- na barra de fórmulas digita-se =SOMA(B2:B5) (sem espaços)
- clica-se em Enter ou no símbolo em verde
- para não visualizar o resultado ( 5 ) selecionado basta clicar em uma célula
vazia
449
PROGRAMA
TÉCNICO CIDADÃO
Trabalhando com células, textos, números, data e hora
Células são as unidades onde entramos com os dados. Ou seja, é cada um dos quadrinhos
existentes na planilha.
Célula Ativa: É a célula onde está o cursor no instante da entrada de dados, ou seja,
onde os dados serão digitados.
Colunas: Estão dispostas na posição vertical e variam de A a Z e de AA até IV,
num
total
de 256.
Linhas:
Estão dispostas na posição horizontal e variam de 1 a 32.000.
Colunas e Linhas: Coordenadas usadas para a identificação das células.
Selecionando uma célula
Com o mouse: dê um clique com o botão esquerdo sobre a célula.
Com o teclado:
TECLA
POSIÇÃO DO CURSOR
Seta ↑
Célula para cima
Seta ↓
Célula para baixo
Seta ←
Célula para a esquerda
Seta →
Célula para Direita
Enter
Vai para a célula inferior
Tab
Vai para a célula da direita
Ctrl + ←
Vai para a primeira célula da linha atual
Ctrl + ↑
Vai para a primeira célula da coluna atual
450
PROGRAMA
TÉCNICO CIDADÃO
TECLA
POSIÇÃO DO CURSOR
Page Up
Vai uma tela para cima
Page Down
Vai uma tela para baixo
Ctrl + Home
Vai para a célula A1
End
Vai para a última célula da linha
Home
Vai para a primeira célula da linha
(*)
(*)
(*) A linha deve ter pelo menos uma célula preenchida.
Inserindo textos e números
Nas células poderão ser digitados números, caracteres, caracteres especiais, etc. Ao terminar a
entrada de dados na célula, tecle Enter ou Tab. Se o texto for maior que o tamanho da célula,
ele ocupará o espaço da próxima, se esta estiver vazia.
Esta ocupação não significa que o espaço da próxima célula foi utilizado. Havendo a
necessidade de uso da próxima célula, ao se clicar sobre ela, o conteúdo da anterior
desaparecerá e a atual poderá ser ocupada, ficando o seu conteúdo sobreposto ao anterior,
sem apagá-lo.
Uma seta vermelha aparecerá do lado direito da célula, indicando que o conteúdo ultrapassou o
tamanho da mesma.
451
PROGRAMA
TÉCNICO CIDADÃO
Funções
As funções são excelentes ferramentas que podem ser usadas para retorno ou exibição de
valores a partir de vários tipos de cálculos. Uma função contém uma fórmula que toma uma
série de valores, usa-os para executar uma operação e fornece o resultado. Portanto, uma
função é uma equação pré-definida.
Os valores com que uma função efetua operações são denominados argumentos. Os valores
retornados pelas funções são chamados de resultados.
Os parênteses definem onde os argumentos começam e terminam. Note-se que os argumentos
podem ser números, constantes, texto, valores lógicos ou outras fórmulas.
Como inserir uma função
Como já vimos, pode-se digitar a fórmula correta na barra de fórmulas. Por exemplo, para se
obter uma média basta digitar:
=MÉDIA (B12:B16)
Felizmente várias funções já estão codificadas e disponíveis no OpenOffice Planilha. Para inserilas, basta seguir os passos abaixo:
1. Selecione a célula onde será colocada a função.
452
PROGRAMA
TÉCNICO CIDADÃO
2. Selecione o menu INSERIR e em seguida FUNÇÃO, ou tecle CTRL + F2,
ou ainda,
na barra de fórmulas, clique no botão “Assistente:Funções”.
3. Selecione uma categoria de função na caixa Categoria.
4. Selecione o nome da função.
5. Clique no botão “Próximo >>”, ou dê um duplo clique sobre o nome da
função escolhida..
453
PROGRAMA
TÉCNICO CIDADÃO
6. Preencha os argumentos solicitados para a função
7. Clique OK.
Exemplos de Funções
Função Soma
SOMA (arg1; arg2; ... )
Retorna a soma dos valores da lista de argumentos (até 30 argumentos).
Ex.: =SOMA (B8;B5;C4) Soma do conteúdo das células não adjacentes
=SOMA (B3:B7) Soma o conteúdo das células adjacentes ou da
seqüência B3+B4+B5+B6+B7.
Função Média
=MÉDIA (arg1; arg2; ...)
Retorna a média aritmética da lista de argumentos (até 30 argumentos).
Ex.: =MÉDIA (C4;C6;B9); =MÉDIA (C7:C14)
Função Máximo
=MÁXIMO (arg1;arg2; ...)
Retorna o valor máximo da lista de argumentos (até 30 argumentos).
Função Mínimo
=MÍNlMO (arg1;arg2; ... )
Retorna o valor mínimo da lista de argumentos (até 30 argumentos).
454
PROGRAMA
TÉCNICO CIDADÃO
Função Data/Hora
=DIA (arg)
Retorna o dia do mês como um inteiro (1 a 31).
=MÊS (arg)
Retorna o mês da data/hora (número inteiro de l a 12).
=ANO (arg)
Retorna o ano da data/hora.
=DIA.DA.SEMANA (arg)
Retorna o dia da semana da data do argumento (número inteiro de l a
7).
=HORA (arg)
Retorna hora da data/hora do argumento (número inteiro de 0 a 23).
=MINUTO (arg)
Retorna minuto da data/hora do argumento (número inteiro de 0 a 59).
Copiar dados
A cópia de dados consiste na duplicação destes em outra posição na planilha. É importante
ressaltar que, quando os dados que serão copiados contém fórmulas com referência a outras
células, dá-se o nome de “cópia relativa”.
1. Selecione os dados a serem copiados;
2. Escolha a opção EDITAR, COPIAR;
3. Clique na primeira célula da região destino;
4. Escolha na Barra de Menu a opção EDITAR, COLAR.
Também pode-se copiar usando o teclado:
1. Selecione os dados a serem copiados;
2. Tecle CTRL + Ins; (O CRTL + C também funciona).
455
PROGRAMA
TÉCNICO CIDADÃO
3. Selecione a primeira célula da região onde será feita a cópia;
4. Clique CTRL + V;
Para copiar dados para outras planilhas dentro do mesmo arquivo de trabalho ou mesmo para
planilhas de outros arquivos de trabalho, execute os seguintes passos:
1. Selecione os dados a serem copiados;
2. Escolha a opção EDITAR, COPIAR;
3. Selecione a outra planilha pela guia no canto inferior esquerdo da tela ou
abra outro arquivo de trabalho;
4. Clique na primeira célula da região escolhida como destino;
5. Escolha a opção EDITAR, COLAR.
Anotações
Inserindo Comentário nas Células
É uma maneira de colocar uma breve descrição do conteúdo da célula, quando o ponteiro do
mouse é sobreposto a essa célula.
Criando um comentário:
1. Clique na célula que conterá o comentário;
2. Clique em INSERIR;
3. Clique em NOTA;
4. Aparecerá uma CAIXA DE TEXTO, onde se pode digitar o comentário;
Obs.: ao passar o ponteiro do mouse sobre a célula, o texto será exibido.
456
PROGRAMA
TÉCNICO CIDADÃO
Referências relativas e referências absolutas
Cada célula no OpenOffice Planilha possui um endereço, dado pelo cruzamento entre uma linha
e uma coluna. A célula na coluna A, linha 1 é endereçada como A1, por exemplo.
Endereço Relativo
Você pode endereçar uma fórmula para um intervalo de células adjacentes inserindo,
primeiramente, as coordenadas da célula superior esquerda da área e, em seguida, dois-pontos
seguidos das coordenadas da célula inferior direita. Por exemplo, o quadrado formado pelas
primeiras quatro células no canto superior esquerdo é endereçado como A1:B2.
Ao endereçar uma área dessa maneira, você está fazendo uma referência relativa a A1:B2.
Relativa aqui significa que a referência para essa área será ajustada automaticamente quando
você copiar as fórmulas.
Endereço Absoluto
Referências absolutas são o oposto de endereço relativo. Um sinal de dólar é colocado antes de
cada letra e número em uma referência absoluta, por exemplo, $A$1:$B$2. Referências
absolutas são utilizadas quando um cálculo se refere a uma célula específica na planilha. Se
uma fórmula que refere-se exatamente a essa célula for copiada para uma célula abaixo da
célula original, a referência também será movida para baixo se você não definir as coordenadas
da célula como absolutas.
Preenchimento automático
É comum, durante a construção de uma planilha, surgir a necessidade de preencher células
com seqüências de dados. No OpenOffice Planilha, pode-se usar um recurso para criar
457
PROGRAMA
TÉCNICO CIDADÃO
automaticamente seqüências numéricas a partir de qualquer valor. Esses valores podem ser
números, datas ou horas.
Para isso:
1. Digite o valor inicial em uma célula;
2. Com a mesma selecionada, coloque o ponteiro do mouse na alça de
preenchimento até que este se transforme em uma pequena cruz e arraste com
o botão esquerdo pressionado, verticalmente, para cima ou para baixo, ou
horizontalmente, para a esquerda ou para a direita, até a última célula da
seqüência desejada.
3. Solte o o botão esquerdo.
Formatando células, números e planilhas
Formatação personalizada
Para mudar a aparência dos caracteres é necessário selecionar o texto e aplicar um ou mais
atributos ou formatos de caracteres, que podem ser letras, números, símbolos, marcas de
pontuação ou espaços.
458
PROGRAMA
TÉCNICO CIDADÃO
Os tipos diferentes de letras (fontes) que o OpenOffice Planilha disponibiliza são os mesmos
instalados no Windows e podem ter vários tamanhos.
Primeiramente seleciona-se o que se deseja formatar e depois formata-se. Os formatos podem
ser aplicados por meio de diferentes maneiras:
1. Usar atalhos existentes na barra de ferramentas Objetos
Há botões para alterar estilo, tipo de fonte, tamanho da fonte, negrito, itálico,
sublinhar, alinhar à esquerda, centralizar, alinhar à direita, justificar, aplicar
marcadores (numerados ou não), colorir a fonte ou o parágrafo.
2. Selecionar a célula ou intervalo de células. No menu de contexto, clicar com o
botão direito em Formatar células.
3. Selecionar a célula ou intervalo de células e clicar em Formatar e em Células
Aparecerá a janela "Atributos da célula", com várias abas: Números, Fonte, Efeitos de Fonte,
Alinhamento, Bordas, Fundo e Proteção da célula.
459
PROGRAMA
TÉCNICO CIDADÃO
Aba Números
Clicando-se sobre a aba "Números" (que fica em negrito e relevo) pode-se formatar valor
numéricos de diversas maneiras, como: Número, Porcentagem, Moeda, Data, Hora, Científico,
Fração e Valor lógico.
Formatando, como número:
- Selecionar as células ou intervalo de células a serem formatadas
- No menu "Formatar" selecionar a opção "Células"
460
PROGRAMA
TÉCNICO CIDADÃO
- Em "Categoria" selecionar a opção "Número"
- Selecionar o formato no campo "Formato" e clicar em "OK"
O campo "Opções" permite escolher o número de casas decimais e o de zeros à esquerda em
campos que tem esses mesmos nomes. Após escolher o que desejar clique no botão "Ok".
Se, após uma formatação, aparecerem vários símbolos # na célula, o OpenOffice Planilha estará
avisando que não há espaço para mostrar o resultado numérico. Para resolver isso, deve-se
alargar o tamanho da coluna.
Aba Fonte
Clicando-se sobre a aba "Fonte" pode-se escolher a fonte e seus estilo, tamanho, cor e a língua.
- Fonte: dá acesso a vários tipos de letras já disponíveis
- Estilo: refere-se aos efeitos Normal, Negrito, Itálico ou os 2 últimos.
- Tamanho: Aqui aparece a lista de possíveis tamanhos para a fonte selecionada.
Pode-se selecionar um tamanho entre as opções existentes ou digitar o valor no campo
apropriado.
- Cor: Permite alterar a cor da fonte.
- Língua: idioma.
Escolher o que desejar e observar o resultado no "Campo de visualização", na parte inferior da
janela.
Aba Efeitos de Fonte
Clicando-se sobre a aba "Números" pode-se selecionar efeitos sobre a fonte. Eles incluem :
461
PROGRAMA
TÉCNICO CIDADÃO
- Sublinhar: em formas diferentes e colorido ou não,
- Hachurar: também em em formas diversas
Campo Relevo
Pode ser colocado de duas maneiras - "Em relevo" e "Baixo relevo" aos quais podem ou não ser
adicionados efeitos extras de "Contorno" e "Sombra".
Aba Alinhamento
Quando os dados são digitados, o OpenOffice Planilha os ajusta automaticamente, sendo os
dados numéricos alinhados à direita nas células e os textuais à esquerda.
Clicando-se sobre a aba "Alinhamento" pode-se alterar algo no alinhamento:
- Selecionar as células ou intervalo de células a serem formatadas
- No menu "Formatar" selecionar a opção "Células"
- Em "Atributos da célula" selecionar a opção "Alinhamento"
- Em "Alinhamento de texto" no campo
. "Horizontal" pode-se alinhar à esquerda, centralizar, alinhar à direita ou
justificar e
. "Vertical" pode-se alinhar por base, centro ou topo
- Pode-se, também, inclinar o texto no campo "Orientação do texto" escolhendo
o valor do ângulo.
A opção "Restaurar" desativa o último ajuste dos dados.
Aba Bordas
462
PROGRAMA
TÉCNICO CIDADÃO
Clicando-se sobre a aba "Bordas" pode-se escolher sobre a existência de bordas e sua
espessura e cor, entre outras possibilidades:
- Selecionar as células ou intervalo de células a serem formatadas
- No menu "Formatar" selecionar a opção "Células"
- Em "Atributos da célula" selecionar a opção "Bordas"
- Selecionar as linhas desejadas em "Disposição das linhas"
- Selecionar a espessura e o formato da borda em "Linha"
- Se desejar pode-se selecionar a posição, a distância e a cor da "Sombra" nos
campos inferiores
- Clicar em "OK"
Aba Plano de Fundo
Na janela que aparece, pode-se escolher uma cor para o fundo da célula. "Sem
preenchimento" não inclui cor.
- Selecionar as células ou intervalo de células a serem formatadas
- No menu "Formatar" selecionar a opção "Células"
- Em "Atributos da célula" selecionar a opção "Fundo"
- Selecionar a cor desejada e clicar em "OK"
Aba Proteção da célula
Pode-se ocultar fórmulas ou tudo. Escolher o que desejar e clicar no botão "Ok".
463
PROGRAMA
TÉCNICO CIDADÃO
Formatação condicional
Para se usar essa formatação, é necessário conhecer os estilos do OpenOffice Planilha.
Estilos
O OpenOffice Planilha já vem com vários estilos que podem ser utilizados para formatar células.
No Menu "Formatar", em "Catálogo de Estilos" aparecem os estilos já existentes:
Padrão, Resultado, Resultado2, Título, Título1
O estilo "Título" tem essas opções pré-definidas:
- Números: Formato Geral, Idioma Padrão
- Fonte: Fonte Albany, Estilo Itálico Negrito, Tamanho 16, Cor Preto
- Efeitos de Fonte: Sublinhar (Sem), Hachurar (Sem), Relevo (Sem)
- Alinhamento: Horizontal Centralizado, Vertical Padrão
- Bordas: Nenhum
- Fundo: Sem preenchimento
- Proteção da célula: Protegido
As opções do estilo "Resultado2" são:
- Números: Formato Moeda, Idioma Português (Brasil)
- Fonte: Fonte Albany, Estilo Padrão, Tamanho 10, Cor Preto
- Efeitos de Fonte: Sublinhar (Sem), Hachurar (Sem), Relevo (Sem)
- Alinhamento: Horizontal Padrão, Vertical Padrão
464
PROGRAMA
TÉCNICO CIDADÃO
- Bordas: Nenhum
- Fundo: Sem preenchimento
- Proteção da célula: Protegido
Como aplicar um estilo existente
- selecionar a célula, linha ou coluna a ser formatada
- no menu "Formatar" selecionar a opção "Catálogo de Estilos"
- selecionar o estilo desejado e clicar em "OK"
Como criar um novo estilo
- selecionar a célula, linha ou coluna a ser formatada
- no menu "Formatar" selecionar a opção "Catálogo de Estilos"
- clicar em "Novo"
- em 'Nome do estilo" digitar um nome para o novo estilo
- escolher as opções para o novo estilo em Números, Fonte, Efeitos de
Fonte, Alinhamento, Bordas, etc
- clicar em "OK"
Notar que o estilo criado pelo usuário é válido apenas para o arquivo de trabalho que estiver em
uso.
Como aplicar a formatação condicional
465
PROGRAMA
TÉCNICO CIDADÃO
Se desejar usar um estilo Novo, ou seja, não pré-existente, é necessário criá-lo previamente.
(Ver como, acima, em "Como criar um novo estilo").
- selecionar a(s) célula(s) a ser formatada
- clicar no menu "Formatar" selecionar a opção "Formatação Condicional"
- A opção “Condição 1” aparece selecionada. Nos campos inferiores criar a
condição desejada. Em “Estilo da célula”, selecionar o estilo que deseja usar e clicar em "OK"
No exemplo a seguir os resultados que tiveram valor igual ou maior que 100 são mostrados em
azul e em negrito.
Página
466
PROGRAMA
TÉCNICO CIDADÃO
Para se configurar o tamanho, formato, orientação e outros detalhes pode-se acessar a função
“estilo de página”, em “Formatar” - “Página”.
Imprimir planilhas
Definir a área de impressão
467
PROGRAMA
TÉCNICO CIDADÃO
Nesta opção pode-se definir às células do documento que irão ser impressas. Este recurso
possibilita a escolha de dados que serão impressos na sua planilha.
Clique na Barra de Menu em “Formatar” - “Intervalos de Impressão”.
São dadas as opções: Definir, Adicionar, Remover e Editar.
Definir
Para definir a área de impressão:
- Selecione a área que deverá ser impressa, utilizando o mouse ou o teclado;
Clique em “Formatar” - “Intervalo de impressão” - “Definir”.
A área marcada será definida por linhas verticais e horizontais.
468
PROGRAMA
TÉCNICO CIDADÃO
Importante: Caso não seja definida uma área de impressão, o
OpenOffice.org Planilha irá imprimir todo o documento.
Adicionar
Este recurso possibilita adicionar células selecionadas na área de impressão.
Remover
Elimina a área de impressão que foi manualmente determinadas na planilha. Se forem
removidas todas às quebras de páginas de todas às folhas, a área de impressão é definida como
automática, mostrando todas as planilhas existentes.
Editar
Este recurso possibilita a edição da área de impressão, linhas ou colunas a serem repetidas.
O campo “Intervalo de impressão” possibilita a edição da área definida para impressão. Neste
campo pode-se aumentar ou diminuir a área de impressão definida pelo usuário.
O campo “Linhas a serem repetidas” possibilita a repetição de linhas em todas as páginas
do documento a ser impresso, tais como títulos. Basta clicar no botão
, selecionar a linha a
ser repetida, clicar novamente no referido botão e depois em OK.
O campo “Colunas serem repetidas” possibilita a repetição de colunas a serem repetidas em
todas as páginas do documento a ser impresso.
Importante: Caso queira selecionar todas as planilhas, clique com o botão direito do mouse
sobre o nome da planilha e selecione a opção Selecionar todas as planilhas.
469
PROGRAMA
TÉCNICO CIDADÃO
Visualizar a impressão
Para visualizar o documento a ser impresso:
- Na Barra de Menu, clique em “Arquivo” - “Visualizar página”.
Nesta tela é possível visualizar o documento a ser impresso e também alterar a configuração da
página, tais como margens e tamanho da planilha. Para fazer as alterações, mudar de página e
dar um zoom na página (para aumentar ou para diminuir a visualização da página) utilize a
Barra de Impressão.
Imprimindo documentos
Para a impressão de documentos existem duas formas:
- Pelo botão Imprimir na barra de funções;
- Ou pela Barra de Menu,clique em “Arquivo” - “Imprimir”. É necessário usar esta
opção quando houver a necessidade de impressão de várias cópias, configurar a
impressora ou selecionar quais as páginas que deverão ser impressas.
Nesta tela, basta selecionar os ítens que se deseja alterar e clicar em OK para imprimir.
470
PROGRAMA
TÉCNICO CIDADÃO
Base de dados com o OpenOffice Planilha
Você pode acionar a exibição da fonte de dados de um documento de texto ou de uma planilha
escolhendo “Ver” - “Fontes de Dados” ou pressionando a tecla F4.
À esquerda, você
verá o explorer de fontes de dados. Se você selecionar uma tabela ou uma consulta, verá à
direita o conteúdo dessa tabela ou consulta. Na margem superior está a Barra de Banco de
Dados.
Definindo e classificando uma área de banco de dados
Definir Intervalo
471
PROGRAMA
TÉCNICO CIDADÃO
Esta opção permite definir uma área de dados atribuindo um nome para que sejam efetuadas
algumas operações nos dados (ordenação dos campos, filtragem dos dados e etc).
Clique na Barra de Menu em “Dados” - “Definir Intervalo”. A seguinte janela aparecerá:
Ao selecionarmos uma área de dados, será definida a primeira linha de dados como cabeçalho
dos dados.
Selecionar intervalo
Permite a seleção de uma área de dados que foi criada anteriormente em Definir Intervalo.
Para executar esta função, siga os seguintes passos:
Clique em Dados na Barra de Menu e depois em Selecionar Intervalo.
Informe a área de dados que deverá ser selecionada, após a escolha, clique no botão OK.
472
PROGRAMA
TÉCNICO CIDADÃO
Classificar
Esta opção ordena a coluna ou a linha selecionada pelo usuário. A ordenação pode ser numérica
ou alfanumérica, crescente ou decrescente.
Selecione as células que deseja ordenar, clique na Barra de Menu em “Dados” - “Ordenar”. Aqui,
é possível escolher numa planilha, a ordem em que os valores irão aparecer na tela.
Filtrar, agrupar dados e calcular sub totais
No menu “Dados” - “Filtro”, temos a possibilidade de fazer uma pesquisa de valores utilizando
filtros.
Selecione a área das células onde deseja fazer a pesquisa;
Clique na Barra de Menus em “Dados” - “Filtro”. Em seguida, selecione uma das opções a seguir:
auto filtro
Esta opção faz do cabeçalho do texto selecionado uma camble box, isto é, cria uma seta no
cabeçalho de todas as colunas selecionadas, possibilitando ao usuário escolher os ítens que
desejar.
473
PROGRAMA
TÉCNICO CIDADÃO
Filtro Padrão
Abre uma Janela com as opções de qual tabela se deseja fazer a pesquisa e qual o ítem a ser
procurado.
Filtro Avançado
Abre uma janela com os critérios de filtro para uma pesquisa e qual o ítem a ser procurado.
Remover Filtro
474
PROGRAMA
TÉCNICO CIDADÃO
Esta opção faz a remoção do filtro aplicado na planilha.
Ocultar auto filtro
Esta opção oculta os filtros aplicados na planilha ativa.
Sub totais
Dentro do menu “Dados” há a opção “Sub totais”, que permite o cálculo automático de sub
totais dentro das células selecionadas.
- Selecione as células que se deseja fazer os sub totais;
- Clique na barra do menu em “Dados” - “Sub totais”.
Importando dados de um banco de dados para uma planilha
Para trocar dados com um banco de dados que não tenha um link ODBC e não permita a
importação e exportação de dBase, você pode utilizar um formato de texto comum.
Importação de Dados para o OpenOffice.org.br
Para trocar dados em um formato de texto, utilize o filtro de importação/exportação do
OpenOffice.org.br Calc.
1. Exporte os dados desejados do banco de dados de origem em um formato de
texto. O formato de texto CSV é o formato recomendado, pois ele separa campos
de dados utilizando delimitadores como vírgula e ponto-e-vírgula e separa
registros inserindo quebras de linha.
2. Escolha “Arquivo” - “Abrir” e selecione "Texto CSV" na caixa de combinação Tipo
de arquivo. Selecione o arquivo e clique em Abrir.
475
PROGRAMA
TÉCNICO CIDADÃO
3. A caixa de diálogo “Importar Texto” aparecerá. Escolha quais dados do
documento de texto que deseja incluir.
Assim que os dados estiverem em uma planilha do OpenOffice Calc, você poderá editá-la
quando necessário. Há duas maneiras de salvar dados como uma fonte de dados do
OpenOffice.org.br:
•
Salve a planilha atual do OpenOffice Calc em formato dBase na pasta de um
banco de dados do dBase. Para isso, escolha Arquivo - Salvar como e, em
seguida, escolha o Tipo de arquivo "dBase" e a pasta do banco de dados dBase.
Selecione o intervalo de dados na planilha do OpenOffice Calc e arraste para um recipiente de
tabela na exibição da fonte de dados. O recipiente de tabela é a linha "Tabelas" (veja ilustração)
no Explorer do banco de dados. Um Assistente será iniciado automaticamente.
Gráficos
Com o OpenOffice Planilha é possível criar gráficos a partir de dados inseridos nas tabelas da
planilha. Vamos aprender de forma sucinta, a criação de um gráfico simples, utilizando o
recurso de formatação automática de gráficos.
Para isso, primeiro selecionamos os dados que farão parte do gráfico:
Depois vamos no menu “Inserir” e selecionamos a opção “Gráfico”. Abre-se então a janela de
“auto formatação de Gráfico”:
476
PROGRAMA
TÉCNICO CIDADÃO
Do lado direito, pode-se escolher em que planilha deverá ser inserido o gráfico.
As janelas seguintes são para definir o tipo de gráfico, o tipo de variante e o nome que será
dado ao gráfico. No final do assistente, deve-se clicar em criar, e o gráfico será inserido na
planilha selecionada.
477
PROGRAMA
TÉCNICO CIDADÃO
Estruturando uma planilha
Você pode criar uma estrutura de tópicos para os dados e agrupar linhas e colunas de modo a
poder recolher e expandir os grupos com um único clique do mouse.
Para fazer isso, vá no menu “Dados” - “Esquema”. As seguintes opções são apresentadas:
Ocultar Detalhes
Oculta os detalhes das linhas ou colunas agrupadas que contém o cursor. Para ocultar todas as
linhas ou colunas agrupadas, selecione a tabela esquematizada e, em seguida, escolha este
comando.
478
PROGRAMA
TÉCNICO CIDADÃO
Mostrar Detalhes
Mostra os detalhes da linha ou coluna agrupada que contém o cursor. Para mostrar os detalhes
de todas as linhas ou colunas agrupadas, selecione a tabela esquematizada e, em seguida,
escolha este comando.
Agrupar
Define o intervalo de células selecionado como um grupo de linhas ou colunas.
Desfazer Agrupamento
Desfaz o agrupamento da seleção. Em um grupo aninhado, as últimas linhas ou colunas
adicionadas são removidas do grupo.
auto esquema
Se o intervalo de células selecionado tiver fórmulas ou referências, o OpenOffice.org.br
esquematizará a seleção automaticamente.
Remover
Remove o esquema do intervalo de células selecionado.
479
PROGRAMA
TÉCNICO CIDADÃO
Inserindo tabelas em documentos de texto
Há várias maneiras de criar uma tabela em um documento de texto. Você pode inserir
uma tabela usando a barra de ferramentas flutuante Inserir, usando um comando do menu ou
usando uma planilha do OpenOffice.org.br Calc.
Para inserir uma tabela usando a barra de ferramentas flutuante:
1. Posicione o cursor no documento em que deseja inserir a tabela.
2. Na Barra de Ferramentas Principal, dê um longo clique em Inserir na barra de
ferramentas flutuante.
3. Posicione o ponteiro do mouse sobre o ícone Inserir tabela até que a grade da
tabela apareça.
4. Na grade da tabela, arraste o ponteiro do mouse para selecionar o número de
linhas e colunas desejado e, em seguida, libere-o.
Para cancelar, arraste para cima ou para a esquerda até que apareça Cancelar na área
de visualização da grade.
Para inserir uma tabela com um comando do menu:
1. Posicione o cursor no documento em que deseja inserir a tabela.
2. Escolha Inserir - Tabela.
3. Na área Tamanho, insira o número de linhas e colunas.
4. Selecione as opções que você deseja e clique em OK.
480
PROGRAMA
TÉCNICO CIDADÃO
Inserção a partir do OpenOffice.org.br Calc usando a área de transferência
1. Abra a planilha do OpenOffice.org.br Calc que contém o intervalo de células que
você deseja inserir.
2. Na planilha, arraste o ponteiro do mouse para selecionar as células.
3. Escolha Editar - Copiar.
4. No documento de texto, adote um dos seguintes procedimentos:
•
Escolha Editar - Colar. O intervalo de células é colado como um objeto OLE.
Para editar o conteúdo das células, clique duas vezes no objeto.
•
Escolha Editar - Colar Especial para abrir a caixa de diálogo Colar Especial,
que oferece várias opções de escolha. As mesmas opções também podem
ser encontradas no submenu do ícone Colar na Barra de Funções:
Opções
É inserido como...
Planilha do
Objeto OLE - como com Ctrl+V ou com arrastar e
OpenOffice.org.br 1.1.3
soltar
GDIMetaFile
Figura
Bitmap
Figura
HTML
Tabela HTML
Texto sem formatação
Somente
texto,
paradas
de
tabulação
como
separadores
Texto formatado [RTF]
Tabela de texto
Link DDE (somente no
Estrutura e conteúdo da tabela, sem formatação.
Windows)
Com atualização
481
PROGRAMA
TÉCNICO CIDADÃO
Avaliação dos tópicos aplicados
1- Crie uma tabela semelhante à tabela abaixo:
2- Insira uma linha nova entre as linhas 1 e 2. Edite o tamanho das colunas.
3- Formate os títulos da linha 1 de forma a destacá-los, centralizando-os na célula. Insira
diferentes cores de fundo para os títulos, para a descrição de materiais e para os valores.
4- Calcule a fórmula para as colunas “Total” e “Total Dólar”, utilizando referências relativas e
absolutas e copiando as fórmulas.
5- Insira um gráfico na planilha 2 da tabela, com os dados da planilha 1.
6- Supondo os seguintes dados:
x: 27 28 31 29 32 24 28 27 27 27 28 22 33 31 29
y: 77 76 75 72 82 67 77 71 69 69 73 58 81 76 73
Calcular em uma planilha:
a. Somatório de x
482
PROGRAMA
TÉCNICO CIDADÃO
b. Somatório de y
c. Média de x
d. Média de y
483
PROGRAMA
TÉCNICO CIDADÃO
OPENOFFICE APRESENTAÇÃO
O que é uma Apresentação?
É um arquivo em que são exibidos textos, gráficos, imagens, sons e animações, que podem ser
combinados com efeitos especiais de exibição na tela do computador ou em forma de slides e
transparências.
Atualmente, em universidades, esses arquivos são muito usados em seminários e defesas de
dissertações e teses.
O Impress torna muito mais fácil:
- apresentar uma idéia ou um material didático,
- divulgar um evento ou um produto
- Utilizando esse programa é possível fazer:
a. Apresentação - Conjunto de slides, folhetos, anotações do
apresentador e estruturas de tópicos, agrupados em um arquivo.
b. Slide - É a página individual da apresentação. Pode conter títulos,
textos, elementos gráficos, desenhos (clipart) e etc.
c. Folheto - É uma pequena versão impressa dos slides, para distribuir
entre os ouvintes.
d. Anotações do apresentador - Consiste em folhas com slide em tamanho
reduzido e suas anotações.
e. Estrutura de Tópicos - É o sumário da apresentação, aí aparecem
apenas os títulos e os textos principais de cada slide.
484
PROGRAMA
TÉCNICO CIDADÃO
Cuidados a serem tomados
É importante notar que quando se faz uma apresentação o conteúdo deve ser o foco central de
atenção. Assim, as ferramentas que podem ser usadas, (exemplo: animações, aplicação de
sons), devem enfatizar os tópicos, mas não devem desviar a atenção para os efeitos especiais.
Por exemplo:
- como a leitura de português é feita da esquerda para a direita, pode-se projetar
imagens animadas de modo que os tópicos deslizem para a direita. Depois, para
enfatizar um tópico específico, faça com que ele deslize para a esquerda. Essa
alteração destacará o tópico, chamando a atenção.
- a inserção de uma música ou som ocasional concentra a atenção na
apresentação de slides. No entanto, o uso freqüente de efeitos sonoros pode
desviar a atenção.
- o ritmo da apresentação não pode ser muito rápido, pois torna-se cansativo,
nem muito lento pois deixa todos sonolentos. Portanto, deve-se fazer testes antes
de fazer uma apresentação e escolher um bom ritmo.
- não deve existir nada em grande quantidade: nem texto, nem figuras. Cuidado
com o tamanho da fonte: as pessoas no fundo da sala devem ser capazes de ler
todos os slides.
Criando uma apresentação simples
Ao abrir o OpenOffice Apresentação será aberto o Assistente de Apresentação, que permite
escolher entre:
•
Apresentação vazia
•
A partir do modelo
485
PROGRAMA
TÉCNICO CIDADÃO
•
Abrir uma apresentação existente
Apresentação vazia
Fase 1: O botão "Segue", na parte inferior da janela permite escolher algumas
configurações, antes de criar uma apresentação com a opção "Apresentação vazia". O botão
"Criar" não permite fazer tais escolhas.
Fase 2. Aqui se escolhe um estilo de página para a apresentação. Para visualizar o estilo
escolhido marcar a opção Visualizar.
486
PROGRAMA
TÉCNICO CIDADÃO
O campo "Selecione a mídia de saída" permite escolher como será visualizada a apresentação:
- Tela (tela do monitor de um computador)
- Transparência (impressão em papel de acetato - transparência)
- Slide (diapositivo)
- Papel (impressão em papel comum)
487
PROGRAMA
TÉCNICO CIDADÃO
Fase 3: Nessa etapa 3 é possível escolher o modo de transição dos slides e o tipo de
apresentação.
No campo "Selecione um modo de transição dos slides" pode-se escolher um dos efeitos de
transição. São efeitos que ocorrem entre a exibição de um slide e outro.
Criando uma apresentação a partir do modelo
Para se criar uma apresentação a partir do modelo, seguimos os seguintes passos:
a. Clicar em "A partir do modelo" e um estilo de apresentação. Para visualizar o
estilo escolhido marque a opção Visualizar. Clicar em "Segue".
b. Deve-se selecionar a mídia da apresentação. Clicar em "Segue".
c. Na etapa 3 será necessário escolher o modo de transição dos slides e o tipo de
apresentação.
488
PROGRAMA
TÉCNICO CIDADÃO
d. Na etapa 4 pode-se informar alguns dados sobre a apresentação. Não é
obrigatório o preenchimento desses campos, porém eles serão úteis para facilitar
a construção da apresentação. Clicar em "Segue".
e. Em 5 são mostrados exemplos de slides contendo tópicos que poderão ser
discutidos na apresentação. Os ítens que estiverem com uma marca verde serão
inseridos na apresentação. Caso não queira algum dos ítens basta desmarcá-lo.
f. Selecionando a opção "Criar resumo" será criado um slide denominado
resumo onde se pode inserir os tópicos principais da apresentação.
g. Finalmente, clicar em "Criar". Imediatamente surge a janela “modificar
slide”.
Mesa de slides
Modificar slide
Nela pode-se selecionar um entre "Layouts", que são os formatos de slides.
489
PROGRAMA
TÉCNICO CIDADÃO
Cada um deles oferece um "layout" diferente. Por exemplo - existe um "layout" que tem
espaços reservados para o título, o texto e um gráfico, e há outro com espaços reservados para
o título e clip-art e assim por diante.
Se já tiver decidido como serão os slides, escolher o modelo correspondente e esse será o seu
slide mestre, se não tiver decidido, escolher o tipo de layout "em branco".
É importante notar que os espaços reservados para título, figuras e texto obedecem à
formatação do slide mestre da apresentação. Mas pode-se mover, redimensionar ou reformatar
os espaços reservados para que se tornem diferentes do slide mestre.
Como escolher um Layout
Dar um duplo clique sobre o "layout" escolhido e clicar no botão "Ok"
Notar que no campo Exibir, no lado inferior da janela, devem estar selecionados
- Plano de fundo
490
PROGRAMA
TÉCNICO CIDADÃO
- Objetos no plano de fundo
Nesse primeiro slide, podem ser digitados os dados essenciais para a abertura da apresentação
- por exemplo, o título do trabalho, seu nome, a data, e o cabeçalho.
Inserção de um novo slide
Para colocar outros slides na mesma apresentação é necessário adicioná-los, à medida que haja
necessidade.
Para inserir um novo slide,
- clicar no menu "Inserir" - "Slide"
Aparecerá a tela "Inserir slide", semelhante à tela "Modificar Slide" (ver figura acima), que
permitirá novamente escolher o layout.
Duplicação de um slide
Quando se deseja repetir as mesmas configurações já escolhidas em um slide, ao invés de
inserir outro e repetir tudo o que já foi feito pode-se duplicá-lo e modificar o que for necessário.
Para duplicar um slide,
- clicar no menu "Inserir" - "Duplicar Slide"
Introduzindo efeitos na exibição de slides
Pode-se inserir efeitos especiais na apresentação que determinam como figuras ou textos serão
exibidas na tela.
- Selecione o texto ou figura desejada.
491
PROGRAMA
TÉCNICO CIDADÃO
- No menu clicar em "Apresentação de slides" - "Efeitos".
1. Efeitos: Mostra as opções de efeito.
2. Efeitos de Texto: Exibe as opções para o texto.
3. Extras:
492
PROGRAMA
TÉCNICO CIDADÃO
a. O objeto escolhido se torna invisível após ter aparecido.
b. O objeto escolhido se torna invisível após ter aparecido.
c. Permite inserir sons
d. Indica se o som vai ser inteiramente executado.
e. Pode-se escolher um arquivo wav pré-existente.
4. Ordem: Possibilita determinar a ordem em que os elementos do slide
surgirão, arrastando-se os ítens para a posição desejada
5. Atualizar
6. Atribuir (Aplicar)
7. Visualizar: Permite pré-visualizar o slide
Escolher todas as opções que quiser e clicar no botão X para fechar a janela "Efeitos".
Selecionando essa opção pode-se escolher um som para tocar ao aparecer o objeto escolhido.
Deve-se escolher um tipo de som na caixa de listagem que se encontra abaixo do botão.
- Na tela Seqüência pode-se configurar a ordem em que os objetos do slide irão
aparecer.
- Só aparecerão na caixa acima os objetos que possuam algum tipo de efeito
especial. Para alterar a ordem em que eles irão aparecer na apresentação, basta
arrastar o texto que descreve o objeto desejado para cima ou para baixo. Os
493
PROGRAMA
TÉCNICO CIDADÃO
objetos que são descritos na caixa acima se referem aos objetos que estão
apontados na figura a seguir.
- Após realizada as configurações desejadas clique no botão Atribuir para aplicálas ao slide atual.
- Clique no botão para fechar as opções de efeitos.
Projeção da apresentação
Logo abaixo do canto superior direito há uma pequena barra com 6 botões.
É a barra de botões de controle da apresentação, que controla o modo de visualização dos
slides.
Cada botão é descrito abaixo:
Desenho
É o modo de edição, ou seja, possibilita inserir textos, imagens e sons e usar os recursos
presentes na barra de ferramentas e os comandos do menu suspenso na criação e modificação
de cada slide. Exibe os slides, um de cada vez.
494
PROGRAMA
TÉCNICO CIDADÃO
Tópicos
O modo "Tópicos" permite inserir ou modificar o conteúdo dos tópicos dos slides, ordená-los, e
reestruturar os tópicos. Quando se clica ao lado de uma figura, à esquerda, ela é visualizada à
direita.
495
PROGRAMA
TÉCNICO CIDADÃO
Slide
Esse modo mostra todos os slides da apresentação, na mesma página, em tamanho reduzido,
facilitando a visualização. Não permite a edição do conteúdo dos slides.
O modo "Slide" permite alterar a posição de um slide na ordem de apresentação, bastando
clicar sobre o slide desejado e arrastá-lo para a nova posição.
496
PROGRAMA
TÉCNICO CIDADÃO
É importante ressaltar que nessa fase aparece uma nova barra, que possibilita incluir efeitos de
transição em cada página
Efeitos de transição
São efeitos que ocorrem entre a exibição de um slide e do seguinte. Em cada um dos campos,
abrir o menu, clicando na flecha, para ver as opções existentes.
"Efeitos": clicar no efeito desejado para inserí-lo.
"Velocidade": Permite escolher entre 3 velocidades de transição entre os slides:
Lento, Médio e Rápido.
"Transição": Pode-se escolher entre Manual, Semi-automático ou Automático.
Selecionando a opção "Automático", o tempo de duração da transição
pode ser determinado no campo seguinte.
O botão de "Apresentação cronometrada"
permite fazer uma apresentação com o tempo
cronometrado.
O botão "Mostrar / Ocultar Slide"
não exclui slides, apenas não exibe o slide clicado. (O slide
fica marcado). Para que ele volte a aparecer basta clicar no botão novamente.
O último campo mostra o total de slides da apresentação.
Anotações
Possibilita a inclusão de anotações extras (que não poderão ser vistas durante a apresentação
dos slides), mas não permite a edição do conteúdo dos slides.
497
PROGRAMA
TÉCNICO CIDADÃO
Para incluir uma anotação, clicar na parte de baixo e selecioná-la . Então será possível escrever.
Folheto
Permite imprimir vários slides na mesma página. Não permite a edição do conteúdo dos slides.
498
PROGRAMA
TÉCNICO CIDADÃO
Iniciar
Clicando-se nesse botão a apresentação é iniciada. Pode-se também visualizar a apresentação
clicando em "Apresentação de slides" - "Apresentação de slides" ou a tecla F9. Para terminar
a apresentação pode ser clicada a tecla ESC.
Para configurar os últimos detalhes da apresentação, clicar no menu "Apresentação de slides" "Configuração da apresentação de slides”.
499
PROGRAMA
TÉCNICO CIDADÃO
Em "Intervalo" pode-se escolher:
- Todos os slides: As configurações escolhidas serão aplicadas em todos os slides
da apresentação.
- A partir de: As configurações só serão válidas para alguns slides. No campo à
direita selecionar a partir de qual slide as configurações devem ser aplicadas.
- Apresentação personalizada: Para utilizar essa opção deve-se fechar a janela e
clicar em "Apresentação na tela" - "Apresentação personalizada" e, depois, ver
explicações mais abaixo.
Em "Tipo" pode-se optar por:
- Padrão: Os slides serão exibidos em tela cheia.
500
PROGRAMA
TÉCNICO CIDADÃO
- Janela: Os slides serão exibidos dentro da janela do Impress.
- Auto: Determina apresentação em "loop". Ou seja, após o término da
apresentação a mesma é reiniciada. Pode-se especificar o tempo que deve passar
para reiniciar no campo abaixo.
Em "Opções" pode-se selecionar ou não:
- Transição manual de slides: Marcando essa opção os slides serão passados
manualmente.
- Ponteiro do mouse visível: Determina se o ponteiro aparece ou não
- Ponteiro do mouse como caneta: Determina que o ponteiro surge na forma de
uma caneta.
- Navegador visível:
- Permitir animações
- Mudar os slides clicando no plano de fundo
- Apresentação sempre em primeiro plano.
Personalizando a apresentação
Aqui pode-se selecionar apenas alguns slides de uma apresentação já pronta. Ou seja, é útil
quando não se deseja apresentar todos os slides. Então, ao invés de excluir os slides não
desejados pode-se montar uma outra apresentação com apenas alguns deles.
1. A apresentação completa deve estar aberta.
2. No menu clicar em "Apresentação de slides" - "Apresentação de slides
personalizada".
501
PROGRAMA
TÉCNICO CIDADÃO
3. Clicar no botão Novo.
4. Em "Nome" deletar "Nova apresentação personalizada" e digitar um nome para
a apresentação.
5. Em "Slides existentes" são listados todos os slides presentes na apresentação.
502
PROGRAMA
TÉCNICO CIDADÃO
Selecionar os slides que deseja que permaneçam na apresentação menor e clicar no botão
OK.
Os slides escolhidos aparecerão em "Slides selecionados".
6. Para excluir algum slide selecione o mesmo e clique no botão .
7. Quando tudo tiver sido escolhido clicar no botão "Ok".
8. Para exibí-la marcar a opção "Usar apresentação personalizada".
9. Para iniciar a apresentação clicar no botão "Iniciar".
Modificar o estilo da página
Exibe a caixa de diálogo Esboço do Slide, onde você pode selecionar um esquema de layout
para o slide atual. Qualquer objeto no esboço do slide será inserido atrás dos objetos do slide
atual.
Para modificar o estilo da página vá no menu “Formatar”, opção “Estilos”, “Esboço de
slide”.
503
PROGRAMA
TÉCNICO CIDADÃO
Esboço de slide
Exibe os designs de slide que você pode aplicar em seu slide. Selecione um design e clique em
OK para aplicá-lo ao slide atual.
Trocar página de plano de fundo: Aplica o plano de fundo do design do slide
selecionado a todos os slides do documento.
Excluir planos de fundo não utilizados: Exclui do documento layouts de
apresentação e slides de plano de fundo sem referência.
Carregar...: Exibe a caixa de diálogo Carregar o esboço de slide, onde você pode
selecionar designs de slide adicionais.
504
PROGRAMA
TÉCNICO CIDADÃO
Segundo plano
Pode-se inserir um fundo (ou segundo plano) no slide de várias maneiras:
- Clicar, com o botão direito do mouse, em uma área vazia do slide e,
no menu que aparece, clicar em "Slide" - "Configurar página"
- Clicar em Formatar - Página.
Abre-se a janela "Configurar página" com 2 abas: Página e Plano de fundo
Aba Página
Nela pode-se escolher formato, largura e altura. E, também:
Orientação: Esse campo possibilita definir a posição: retrato ou
paisagem
505
PROGRAMA
TÉCNICO CIDADÃO
Margens: Aqui pode-se definir as margens, ou seja, a distância entre o
texto e o início da tela ou do papel. Usar as pequenas setas ou digitar as
medidas desejadas em "Esquerda", "Direita", "Superior", "Inferior”.
Aba Plano de Fundo
Nela pode-se escolher entre:
Nenhum: Nenhum fundo será adicionado
Cor: Abre-se a janela com as várias opções de cores. Clicar na cor
desejada e em "Ok".
Gradiente: Vários fundos com gradientes coloridos ficam disponíveis.
(Ver figura acima). Clicar no gradiente desejado e em "Ok".
Preenchimento padrão: Vários fundos com hachurados em diferentes
sentidos ficam disponíveis.
Clicar no desenho desejado, que aparecerá à direita, Depois clique em "Ok".
Bitmap: Vários pequenos arquivos de imagem ficam disponíveis.
Clicar no desenho desejado e em "Ok".
Estilos de objetos de apresentação
Designer
Há algumas formatações pré-configuradas que tornam mais fácil alterar a formatação do texto.
- Clicar em Formatar - Designer.
- Surgirá a janela "Estilos de Figuras".
506
PROGRAMA
TÉCNICO CIDADÃO
- Para alterar o estilo do texto, clicar duplo sobre uma das opções de estilo e o
texto será automaticamente alterado.
- Clicar no botão "X".
Trabalho de fonte
É uma opção que permite criar vários efeitos no texto.
- selecionar o texto que será alterado.
- no menu, clicar em Formatar - Trabalho de Fonte.
507
PROGRAMA
TÉCNICO CIDADÃO
- Para alterar o estilo do texto, clicar duplo sobre um dos botões da janela
"Fontwork" e o texto será alterado.
- Clicar no botão "X".
Obs.: Esses efeitos só podem ser aplicados em textos criados com o uso dos atalhos presentes
na barra de ferramentas lateral
Efeitos 3D
É outra opção que permite criar efeitos tridimensionais.
508
PROGRAMA
TÉCNICO CIDADÃO
- selecionar o texto que será alterado.
- no menu, clicar em Formatar - Efeitos 3D.
- Para alterar o estilo do texto, clicar duplo sobre um ou mais dos botões da janela
"Efeitos 3D" e o texto será alterado. Efeitos de cor e de relevo estão disponíveis.
- Clicar no botão "Aplicar".
- Clicar no botão "X".
Obs.: Esses efeitos só podem ser aplicados em textos criados com o uso dos atalhos presentes
na barra de ferramentas lateral.
509
PROGRAMA
TÉCNICO CIDADÃO
Transição de slides, efeitos e animação
Transição de slides
Efeitos de transição: São efeitos que ocorrem entre a exibição de um slide e do seguinte. No
menu, clicar em "Apresentação de slides" - "Transição de slides".
Os botões têm as seguintes funções:
510
PROGRAMA
TÉCNICO CIDADÃO
No último campo pode-se definir a velocidade do efeito (Devagar, Média, Rápida)
2. Extras: Ver abaixo
3. Atualizar
4. Atribuir (Aplicar) no slide atual
5. Visualizar: Permite pré-visualizar o slide
Botão extra
Os botões têm as seguintes funções:
a. A transição de slides será automática
No campo abaixo do botão especificar o tempo de transição
b. A transição de slides será semi-automática.
c. A transição de slides será manual
d. Permite inserir sons
(Escolher um som no campo abaixo do botão).
511
PROGRAMA
TÉCNICO CIDADÃO
e. Pode-se escolher um arquivo wav pré-existente.
Escolher todas as opções que quiser e clicar no botão X para fechar a janela "Transição
de slides".
Animando Textos
Clicar no menu “Formatar” - “Texto”. (Essa opção estará indisponível se o slide estiver no
formato "Tópicos"). Na janela que aparece, há duas abas "Texto" e "Texto animado ".
Selecionando a opção "Ajustar largura ao texto" a caixa de texto ficará do tamanho do texto.
Selecionando a opção "Ajustar para o frame" o texto será estendido para o tamanho da caixa.
512
PROGRAMA
TÉCNICO CIDADÃO
Em "Espaçamento da margem" pode-se determinar os 4 valores das margens da caixa de texto:
Esquerda. Direita, Superior, Inferior.
Em Âncora do texto pode-se escolher a posição em que o texto ficará dentro da caixa,
assinalando um dos campos.
Aba Texto animado
Nessa aba pode-se configurar efeitos de animação para o texto.
- Em "Efeito" selecionar um efeito.
(Se a opção for do tipo "rolar", em "Direção" será preciso especificar em que sentido o
texto rolará.)
Após realizar as configurações desejadas no texto clique no botão "Ok".
Como inserir imagens
Clicar no menu "Inserir" - “Figura” e escolher um arquivo de imagem em seu computador. A
imagem estará selecionada e seu tamanho e localização podem ser modificados .
Animando Imagens
Primeiro, selecionar a figura que se deseja animar. No menu, clicar em "Apresentação de slides"
- "Animação". A seguinte janela se abre:
513
PROGRAMA
TÉCNICO CIDADÃO
Nessa janela estão os seguintes botões:
Suas funções são:
1. Primeira imagem
514
PROGRAMA
TÉCNICO CIDADÃO
2. Para trás
3. Parar
4. Tocar (para frente)
5. Última imagem
6. Número da imagem
7. Duração
8. Contagem de seqüências
Os demais botões têm as seguintes funções:
1. Aplicar objeto: capturar a imagem presente no slide.
2. Aplicar objetos um por um: capturar as imagens de uma
animação
3. Elimina a imagem ativa: excluir a figura atual.
4. Elimina as imagens todas: remover todas as figuras capturadas
Depois de selecionar a imagem e ter a janela “Animação” aberta, clicar no primeiro botão
(Aplicar objeto) para capturá-la. A figura deve aparecer na parte de cima da janela.
Em "Grupo de animação" selecionar a opção "Objeto de bitmap".
Em "Alinhamento" selecionar a opção desejada (Direita superior, Direita inferior, Centrado, ...)
515
PROGRAMA
TÉCNICO CIDADÃO
Usando a barra de botões pode-se visualizar todas as figuras da animação e em "Contagem de
seqüências" pode-se determinar quantas vezes a animação será executada.
Clicar no botão "Criar" para inserir a animação no slide.
Apresentação – exportando e imprimindo
No OpenOffice Apresentação é possível exportar arquivos em outros formatos.
Exportação
Escolha “Arquivo” - “Exportar”.
Os formatos de arquivos a seguir lhe oferecerão opções adicionais de exportação depois que
você clicar em Salvar:
•
Documento HTML
•
JPEG
•
SVM/WMF/PICT/MET
•
BMP
•
GIF
•
EPS
•
PNG
•
PBM
•
PPM
•
PGM.
516
PROGRAMA
TÉCNICO CIDADÃO
Se você selecionar "Macromedia Flash (SWF)" como formato de arquivo, o documento atual do
Impress ou do Draw será exportado no formato Macromedia Flash.
Se você selecionar "Documento HTML" como formato de arquivo, será exibido o Assistente de
Exportação de HTML. Esse Assistente o guiará durante todo o processo de exportação e lhe
oferecerá a opção de salvar as figuras da apresentação no formato GIF ou JPG.
Além disso, é possível exportar uma apresentação no formato .pdf:
Escolha “Arquivo” - “Exportar como PDF”
E também é possível exportar arquivos no formato do MS Office ou outras suítes de escritório,
podendo ser abertos em máquinas sem o OpenOffice:
Escolha “Arquivo” - “Salvar como”. Você verá a caixa de diálogo “Salvar como”. Na caixa de
listagem “Salvar como tipo”, selecione o formato desejado.
Insira um nome na caixa “Nome do arquivo” e clique em “Salvar”.
Se você sempre desejar salvar os documentos do OpenOffice.org.br em outro formato,
selecione esse formato em “Ferramentas” - “Opções” - “Carregar/Salvar” - “Geral” na área
“Formato de arquivo padrão”.
Imprimindo
Imprime o presente documento, a seleção ou as páginas que você especificar. Também é
possível definir as opções da impressão para o documento atual. As opções de impressão
podem variar de acordo com a impressora e o sistema de impressão que você usa.
Escolha “Arquivo” - “Imprimir”, ou pressione “Ctrl + P”, ou clique no botão “Imprimir Arquivo
Diretamente” na barra de funções. A seguinte janela é aberta:
517
PROGRAMA
TÉCNICO CIDADÃO
Impressora
Lista a impressora padrão para o documento atual. As informações para a impressora são
mostradas abaixo desta caixa. Se você selecionar uma outra impressora, as informações serão
atualizadas.
Nome
Lista as impressoras instaladas no sistema operacional. Para mudar a
impressora padrão, selecione um nome de impressora na lista.
Status
Descreve o status atual da impressora selecionada.
518
PROGRAMA
TÉCNICO CIDADÃO
Tipo
Exibe o tipo de impressora que você selecionou.
Local
Exibe a porta para a impressora selecionada.
Comentário
Exibe informações adicionais sobre a impressora.
Propriedades
Altera as configurações da impressora do sistema operacional para o
documento atual. Para alterar as configurações da impressora do
OpenOffice.org.br, clique no botão Opções . As propriedades da
impressora variam de acordo com a impressora que você seleciona.
Imprimir em arquivo
Imprime em um arquivo em vez de em papel. Selecione esta opção e,
em seguida, escolha um local para salvar o arquivo.
Intervalo de impressão
Define a área de impressão para o documento atual.
Tudo
Imprime o documento inteiro.
Páginas
Imprime somente as páginas que você especificar na caixa Páginas .
Para imprimir um intervalo de páginas, use o formato 3-6. Para imprimir
páginas avulsas, use o formato 7;9;11. Também é possível imprimir uma
519
PROGRAMA
TÉCNICO CIDADÃO
combinação de intervalos de páginas e páginas avulsas, usando-se o
formato 3-6;8;10;12.
Seleção
Imprime somente as áreas ou objetos selecionados no documento atual.
Cópias
Especifica o número de cópias que você quer imprimir e as opções de classificação.
Cópias
Insira o número de cópias que deseja imprimir.
Intercalar
Conserva a ordem das páginas do documento original.
Avaliação dos tópicos aplicados
Exercícios
1. Criar duas apresentações vazias com 3 slides cada. A primeira no modo Apresentação em
branco e a segunda a partir do modelo.
2. Colocar fundo nas apresentações: Na primeira, usar a cor que desejar. Na segunda, usar o
gradiente ou o bitmap que desejar.
3. Criar e formatar duas frases (uma em cada apresentação) escolhendo fonte, tamanho e cor,
conforme desejar. Uma delas deve estar formatada com "Trabalho de fonte". A outra deve
estar formatada com um "Efeito 3D".
520
PROGRAMA
TÉCNICO CIDADÃO
4. Em uma apresentação, inserir uma animação de imagem. Na outra inserir uma animação de
texto e som.
5. Incluir efeitos de transição de slides diferentes em cada arquivo.
521
PROGRAMA
TÉCNICO CIDADÃO
Navegador Internet
Neste curso você irá aprender a utiliza o navegador de internet Mozilla
Firefox.
O Mozilla Firefox é um browser que implementa uma serie de recursos
para facilitação da navegação como as abas que permitem que em uma única
janela tenhamos várias páginas em aberto e apenas clicando em uma das abas
trocamos de site.
Os bookmarks do Firefox permite também que sejam registradas para
abrir na inicialização do browser, como home, um conjunto de abas.
Existem as extensões do browser que são implementadas por plugins que
estão
disponíveis
no
próprio
site
da
organização
mozilla...
e
que
são
desenvolvidas pela comunidade e também pela própria equipe da mozilla dev.
Além destas características o browser firefox implementa uma melhor
visualização dos sites haja visto que utiliza na renderização das páginas, após a
interpretação, todos os padrões do W#c.
522
PROGRAMA
TÉCNICO CIDADÃO
CONHECENDO O NAVEGADOR MOZILLA FIREFOX
O “verdadeiro” firefox é um panda.
Um firefox não é uma raposa de fogo. É como é conhecido o panda-vermelho (Ailurus fulgens),
devido a sua cor e tamanho serem parecidos com os de uma raposa.
Um panda-vermelho mede de 50 a 63cm e pesa entre 4 e 6kg.
Abas
Utilizando as abas
Com as abas você abre vários sites dentro de uma só janela.
O Firefox pode abrir várias páginas em uma mesma janela. É a “navegação com abas”.
Clique em um link com o botão do meio para abrí-lo em uma nova aba. Clique na aba para
visualizar a página correspondente.
Métodos para abrir uma aba
•
Clique no link com o botão do meio (ou clique na rodinha do mouse).
•
Clique no link com o botão direito e selecione Abrir em nova aba.
•
Clique no link enquanto pressiona Ctrl.
•
Abra uma aba vazia com o menu Arquivo > Nova aba.
•
Use o botão Nova aba na barra de ferramentas.
•
Dê um duplo clique em uma região vazia da barra de abas.
523
PROGRAMA
TÉCNICO CIDADÃO
Adicione o botão “Nova aba” na barra de ferramentas
Clique em Exibir > Barras de ferramentas > Personalizar.
Agora você tem uma janela com todos os itens disponíveis. Para remover arraste o item da
barra para a janela. Para adicionar arraste da janela para a posição desejada em uma das
barras.
Como abrir links sempre em abas em vez de abrir janelas?
O Firefox 1.0 possui uma configuração que impede as páginas de abrirem novas janelas. Em vez
disso, o Firefox abre em uma nova aba ou na mesma janela.
Entretanto, estas opções não aparecem por padrão na janela de preferências. Elas causam
problemas em algumas situações e os desenvolvedores do Firefox acharam mais prudente
deixá-la “escondida”. Para que o Firefox mostre a opção, siga os passos abaixo:
•
Digite about:config na barra de endereços do Firefox e clique no botão Ir.
•
Na lista de opções, localize browser.tabs.showSingleWindowModePrefs.
•
O valor padrão dessa opção é false.
•
Clique na opção com o botão direito e selecione Inverter valor.
•
O valor agora é true. Pode sair dessa janela.
Agora o Firefox mostrará a preferência. Siga os passos abaixo para ativá-la:
•
Abra a janela de configuração. No Windows: Ferramentas > Opções.
•
Selecione o painel Avançado e abra a opção Abas.
•
Marque o item Forçar links que abrem janelas a abrir.
524
PROGRAMA
TÉCNICO CIDADÃO
•
Clique em OK.
Troque de aba utilizando o teclado.
•
Ir para a aba da esquerda: Ctrl+Shift+Tab ou Ctrl+PgUp.
•
Ir para a aba da direita: Ctrl+Tab ou Ctrl+PgDn.
•
Ativar da primeira a nona aba: Ctrl+1 até Ctrl+9.
Navegação
Palavras acentuadas
Isto ocorre porque o Firefox está mostrando a página
utilizando o conjunto de caracteres errado.
A página pode ser corrigida através do menu Exibir >
Codificação. Nas páginas em português normalmente a
codificação é “Unicode (UTF-8)” e “Ocidental (ISO-88591)”.
Na maioria dos casos, o servidor envia errado o
mapeamento de caracteres da página. Por exemplo, a
página foi feita na codificação UTF-8 mas o servidor diz
que é ISO-8859-1.
O servidor pode simplesmente não enviar a codificação. Então o Firefox tenta adivinhar a
codificação certa. Quando ele não consegue detectar aparecem os caracteres estranhos.
525
PROGRAMA
TÉCNICO CIDADÃO
Navegue por páginas web usando o teclado.
O cursor de teclado, quando ativado, insere um cursor de texto na página. Deste modo é
possível navegar pela página como se você estivesse num editor de texto.
Para ativá-lo tecle F7 ou use a janela de configuração:
•
Abra a janela de configuração (no Windows está no menu Ferramentas > Opções).
•
Selecione o painel Avançado.
•
Abra o item Acessibilidade.
•
Marque a opção Navegar pela página utilizando o cursor de teclado.
Endereços que não possuem links.
Não é necessário copiar e colar. Apenas selecione o texto e arraste para a barra de abas ou
para o botão Ir.
Por exemplo: selecione o parágrafo abaixo e arraste para uma aba:
www.sun.com.br
É possível arrastar endereços não só do próprio Firefox, mas também de outros aplicativos.
Utilize Ctrl para selecionar células de tabelas.
O Firefox tem um método para selecionar tabelas utilizando a tecla Ctrl junto com o mouse.
Apenas pressione Ctrl e clique com o botão esquerdo em alguma célula. Ele será selecionada,
então é só usar o comando Editar > Copiar.
526
PROGRAMA
TÉCNICO CIDADÃO
Também é possível selecionar várias células utilizando Ctrl ao arrastar o mouse com o botão
esquerdo pressionado. Caso o clique seja na fora da tabela, mas próximo a ela, a tabela inteira
é pressionada.
Faça o teste com a tabela abaixo:
Coluna A
Coluna B
Coluna C
Coluna D
Coluna E
Célula A1
Célula B1
Célula C1
Célula D1
Célula E1
Célula A2
Célula B2
Célula C2
Célula D2
Célula E2
Célula A3
Célula B3
Célula C3
Célula D3
Célula E3
Congelando imagens
Basta pressionar Esc e as animações serão congeladas. Este recurso só funciona em animações
com imagens GIF.
Outras animações, como as do plugin Flash, não serão interrompidas. Uma tentativa é clicar na
animação com o botão direito e desmarcar a opção Play. Entretanto, alguns autores de
animações Flash ocultam o item Play.
Favoritos
Conheça o sistema de favoritos do Firefox.
Os favoritos do Firefox são equivalentes aos favoritos do Internet Explorer. Eles guardam os
endereços de páginas que você quer acessar posteriormente.
527
PROGRAMA
TÉCNICO CIDADÃO
O Firefox importa automaticamente os favoritos do IE e coloca na pasta Favoritos
>
Importado do Internet Explorer. Você também pode importá-los a qualquer momento pelo
menu Arquivo > Importar.
Assim como no IE, você pode categorizar as páginas em pastas e acessá-las através do menu
Favoritos, através do painel, da barra de ferramentas ou do gerenciador de favoritos.
O Firefox tem muitos recursos extras. O comando Abrir tudo em abas abre todos os favoritos
da pasta na mesma janela. Ele existe em todas as pastas do menu Favoritos.
Outro diferencial do Firefox é a facilidade em localizar uma página. O campo Localizar nome
do painel de favoritos permite achar uma página digitando uma parte do nome da página. Este
campo existe também no gerenciador de favoritos.
Adicionando uma página ao menu Favoritos
Há diversos modos:
•
Arraste o ícone a esquerda do endereço da página para o menu Favoritos. O menu se
abrirá e você pode soltar o ícone na posição desejada.
•
Se o painel Favoritos estiver aberto, você pode arrastar o endereço para lá também.
•
Links em páginas também podem ser arrastados para o menu Favoritos ou para o botão
Favoritos.
•
Através do menu Favoritos > Adicionar página.
•
Através do menu de contexto da página (botão direito), comando Adicionar aos
favoritos.
528
PROGRAMA
TÉCNICO CIDADÃO
Outras dicas
•
O comando Adicionar aos favoritos é também acessível pelo atalho Ctrl+D.
•
A janela Novo favorito tem uma opção que permite criar favoritos de todas as abas da
janela em um só passo.
•
Para abrir o painel de favoritos use o menu Exibir > Painel > Favoritos. Ou então
use o atalho Ctrl+B ou ainda adicione o botão na barra de ferramentas.
•
Para abrir o gerenciador de favoritos, selecione o menu Favoritos > Organizar.
•
Para excluir rapidamente uma página, abra o menu Favoritos, clique com botão direito
no nome da página e selecione Excluir.
Arrastando pastas no menu Favoritos
Por padrão, o Firefox não permite que se arraste as pastas no menu Favoritos. Mas isso pode
ser realizado usando as teclas Shift e Ctrl.
Abra o menu Favoritos, pressione Shift e arraste a pasta para outra posição.
Pressionando Ctrl a pasta será copiada em vez de ser movida.
Faça um backup dos seus favoritos.
529
PROGRAMA
TÉCNICO CIDADÃO
Abra o menu Favoritos > Organizar. Na janela do gerenciador
selecione Arquivo > Exportar.
Agora para restaurar os favoritos em outra instalação do Firefox
basta selecionar Arquivo > Importar no gerenciador de
favoritos.
O que são os favoritos dinâmicos?
Um favorito dinâmico (Live Bookmark no Firefox em inglês) é um recurso do Firefox que usa
arquivos RSS para criar uma pasta auto-atualizável de favoritos. Um favorito dinâmico funciona
como uma pasta de favoritos, você as diferencia pelo ícone. O conteúdo do favorito dinâmico é
periodicamente atualizado pelo Firefox.
O Firefox detecta se a página está associada a um favorito dinâmico e mostra um ícone
na barra de status (este é o ícone do tema padrão, outro tema poderá definir um ícone
diferente).
Clique no ícone e selecione o arquivo-fonte RSS que servirá como um favorito dinâmico. Então
selecione a pasta onde o favorito dinâmico será criado. O recomendado é usar a pasta da barra
de favoritos.
Observe que o Firefox não é um agregador RSS. Instale uma extensão RSS para usar o Firefox
como um agregador ou use o agregador RSS do Thunderbird.
530
PROGRAMA
TÉCNICO CIDADÃO
Crie favoritos dinâmicos manualmente
Algumas página não dizem ao Firefox que podem ser associadas a favoritos dinâmicos. Ainda
assim você pode criar um. Procure pela página algum ícone de arquivo-fonte RSS. Normalmente
são ícones de fundo laranja com as siglas RSS ou XML.
Se a extensão LiveBookmarkThis estiver instalada é só clicar no ícone com o botão direito e
selecionar Add Live Bookmark.
Se não quiser usar a extensão siga os passos abaixo:
•
Clique com o botão direito no ícone e selecione Copiar link.
•
Agora abra o gerenciador em Favoritos > Organizar.
•
Na janela selecione Arquivo > Novo favorito dinâmico.
•
Cole o endereço copiado no campo End. da fonte.
Interface
Impeça que páginas web mexam na barra de status.
Algumas páginas colocam textos animados ou escondem a barra de status do navegador. O
Firefox permite impedir esses abusos.
531
PROGRAMA
TÉCNICO CIDADÃO
Abra a janela de opções do Firefox. No
Windows, está em Ferramentas >
Opções. Clique no ícone Facilidades e,
na linha referente a JavaScript, clique no
botão Permissões.
Na janela, desmarque as opções
Modificar o texto da barra de
status e Ocultar a barra de status.
Como excluir um mecanismo do campo de pesquisa?
O Firefox não possui um método para excluir um mecanismo. Você pode adicionar essa
interface através da extensão SearchPluginHacks. Instale-a, então clique no ícone no campo de
pesquisa para aparecer a lista de opções. Clique com o botão direito em cima do mecanismo
indesejado e selecione Delete.
Remoção manual
Se não quiser usar a extensão, você pode retirar um mecanismo apagando dois arquivos no seu
computador.
532
PROGRAMA
TÉCNICO CIDADÃO
Verifique a pasta onde está instalado o Firefox. No Windows, normalmente está em
C:\Arquivos de Programas\Mozilla Firefox. Nesta pasta existe a subpasta searchplugins,
que armazena todos os mecanismos.
Um mecanismo de pesquisa é composto por dois arquivos com o mesmo nome, diferindo nas
extensões. Por exemplo, para excluir o Google, apague os arquivos google.gif e google.src.
Reinicie o Firefox e o Google não estará mais disponível na lista de mecanismos.
Ganhe espaço ocultando os menus que você não usa.
É possível ocultar menus através da extensão Compact Menu.
Após instalar, abra a janela de personalização do Firefox e desmarque os menus indesejados.
Arrastando o item Menu para a barra todos os menus sumirão e estarão disponíveis apenas
através deste item.
Coloque o botão “Pesquisar” no campo de pesquisa.
A extensão Search Button fornece um botão para personalizar a barra de ferramentas. O botão
inicia a pesquisa, substituindo a tecla Enter.
Use imagens da web como papel de parede.
O Firefox pode definir imagens das páginas web como papel de parede (wallpaper). Clique com
o botão direito em cima da imagem desejada e selecione Definir como papel de parede.
A janela de confirmação permite visualizar como ficará a área de trabalho, além de definir o
posicionamento da imagem e a cor de fundo.
533
PROGRAMA
TÉCNICO CIDADÃO
Extensões e Plugins
O que são “plugins”?
Plugins são programas que permitem que páginas web usem recursos não presentes na
linguagem HTML, na qual são criadas as páginas.
Um exemplo comum de plugin é o Flash Player que é um visualizador de programas escritos em
flash. Este plugin é usado pelo Firefox quando for necessário executar um programa em flash
no navegador (normalmente uma animação).
Outro exemplo muito comum é o plugin para java. É uma programa que permite executar
aplicações Java muito usadas pelos sites de bancos para criar teclados virtuais e por outros
sites para fazer sistemas de notícias.
Além destes há uma variedade enorme de outros plugins.
Dúvidas freqüentes
Por que os plugins não vêm inclusos no Firefox?
Devido a uma questão de licença de software, que não permite que se distribua programas de
outras empresas junto com o Firefox. Além disso existem muitos plugins, o que tornaria o
download mais demorado.
Onde encontrar?
Um bom ponto de partida para encontar plugins é no site www.mozilla.org. Outro bom conteúdo
sobre os plugins está no plugindoc. No próprio site do desenvolvedor do plugin sempre é
encontrado um link para baixá-lo.
Como instalar?
534
PROGRAMA
TÉCNICO CIDADÃO
Geralmente os plugins instalam-se automaticamente pelo Assistente do Firefox, sem que seja
necessária nenhuma iniciativa do usuário. Alguns plugins necessitam de uma pequena
configuração no software (no plugin) como no caso do Quicktime em que é necessário entrar
em opções (do Quicktime) e alterar algumas configurações. Geralmente as instruções para a
instalação do plugin constam no site do autor.
Qual é a diferença entre plugin e extensão?
Um plugin é um programa instalado no Firefox que adiciona recursos que podem ser usados por
páginas web. Por exemplo, os plugins Flash, Java e Windows Media Player permitem que as
páginas tenham recursos que não são suportados por padrão, como som e vídeo.
Já uma extensão é um programa feito especialmente para o Firefox para criar ou modificar
alguma funcionalidade. A existência ou não de alguma extensão não interfere na visualização
das páginas.
Como instalar uma extensão?
Normalmente basta visitar a página da extensão e clicar no link de instalação fornecido.
Entretanto, se a página não estiver em update.mozilla.org, o Firefox o impedirá de continuar
(por questões de segurança).
Nesse caso uma barra aparecerá no topo da janela. Clique no botão para autorizar a instalação
de extensões a partir daquele site. Após isso tente instalar novamente (clicando no link da
página).
Como salvar uma extensão?
É possível salvar um arquivo de extensão (formato XPI) no seu HD para instalar depois. Basta
clicar no link de instalação com o botão direito e selecionar Salvar destino como.
535
PROGRAMA
TÉCNICO CIDADÃO
Para instalar no Firefox o arquivo XPI salvo no seu HD use um dos métodos abaixo:
•
Arraste o arquivo XPI para a janela de extensões (Ferramentas > Extensões).
•
Use o menu Arquivo > Abrir arquivo e selecione o arquivo XPI.
•
Arraste o arquivo XPI para uma janela do Firefox (nem sempre funciona).
Como acelerar o abertura de páginas PDF?
Quando um arquivo PDF é aberto dentro do Firefox geralmente ocorre um atraso até o arquivo
começar a ser mostrado. Isso ocorre devido a abertura do Acrobat Reader, que sempre carrega
vários plugins que normalmente não são usados.
É possível acelerar a abertura do Reader fazendo-o carregar os plugins apenas quando eles
forem necessários. No Windows, a maneira mais simples de fazer isso é através do Adobe
Reader Speed-Up, um programa gratuito.
Para configurar manualmente, siga estes passos:
•
Localize a pasta onde o Acrobat Reader está instalado. No Windows, geralmente é
C:\Program Files\Adobe\Acrobat5.x\Reader ou C:\Program Files\Adobe\Reader.
•
Nessa pasta existe a pasta plug_ins e optional.
•
Abra a pasta plug_ins e mova todas as pastas e arquivos .API para a pasta optional.
Na próxima vez que você abrir um PDF (no Acrobat Reader ou no Firefox) notará que será muito
mais rápido.
Como instalar um tema salvo no computador?
•
Primeiro localize o arquivo contendo o tema (deve ter a terminação JAR).
•
Então abra a janela de temas do Firefox (Ferramentas > Temas).
536
PROGRAMA
TÉCNICO CIDADÃO
•
Agora arraste o arquivo para a janela de temas.
Como salvar um tema?
Procure o link de instalação e clique nele com botão direito. Então selecione Salvar destino
como. Para instalar o tema siga os passos do início da página.
537