08 - PMBOK Cap08 Qualidade
08 - PMBOK Cap08 Qualidade
08 - PMBOK Cap08 Qualidade
Treinamento
Administração Básica de Servidores
Autores
Marcus Vinícius Lahr Giraldi
Renato Luiz de Sousa
2012
UNICAMP
Agência para a Formação Profissional da Unicamp
Treinamento
Administração Básica de Servidores
Atualização 2012
Autores:
Marcus Vinícius Lahr Giraldi
Renato Luiz de Sousa
Instrutor:
Marcus Vinícius Lahr Giraldi
[email protected]
2012
Sumário
1 introdução ..................................................................................................................... 7
1.1 Uma Breve História do FreeBSD e do UNIX .......................................................... 7
1.2 BSD ........................................................................................................................ 8
1.3 FreeBSD................................................................................................................. 8
1.4 Algumas características principais do FreeBSD..................................................... 9
1.4.1 Portabilidade .................................................................................................... 9
1.4.2 Capacidade de Trabalho.................................................................................. 9
1.4.3 Gerenciamento de software simplificado ......................................................... 9
1.4.4 Sofisticado sistema de arquivos ...................................................................... 9
1.4.5 Código fonte aberto ......................................................................................... 9
1.4.6 Ampla documentação ...................................................................................... 9
1.5 O mascote do FreeBSD ....................................................................................... 10
2. Instalação do FreeBSD .............................................................................................. 11
2.1 Conhecimentos preliminares ................................................................................ 11
2.2 Iniciando a instalação ........................................................................................... 12
2.3 O utilitário sysinstall .............................................................................................. 16
2.4 Passo a passo do processo de instalação ........................................................... 18
2.5 Exercícios ............................................................................................................. 31
2.5.1 Instalação do FreeBSD pelo método Customizado ....................................... 31
3. Unix Básico ................................................................................................................ 35
3.1 Introdução ............................................................................................................ 35
3.2 Efetuando o login no sistema ............................................................................... 35
3.3 O interpretador de comandos - shell ........................................................................ 36
3.4 Arquivos de configuração da Shell ....................................................................... 36
3.5 Permissão de arquivos/diretórios ............................................................................. 37
3.5.1 Alterando permissões ........................................................................................ 39
3.5.2 Alterando a propriedade .................................................................................... 39
3.6 Estrutura de Diretórios ............................................................................................. 40
3.7 Comandos diversos ................................................................................................. 41
3.8 Os arquivo /etc/passwd e /etc/master.passwd ......................................................... 42
3.9 O arquivo /etc/group ................................................................................................ 43
3.10 Comandos para manipulação de contas de usuários ............................................ 44
3.10.1 Criando usuários com adduser........................................................................ 44
3.10.2 Removendo usuários com rmuser ................................................................... 45
3
3.10.3 Consultando informações com o comando finger ............................................ 45
3.10.4 Alterando informações de conta com o comando chpass ............................... 46
3.10.5 Alterando a senha com passwd ....................................................................... 46
3.10.6 Bloqueando usuários ....................................................................................... 47
3.10.7 Utilizando vipw ................................................................................................. 47
3.11 Os arquivos /etc/rc.conf e /etc/defaults/rc.conf ....................................................... 47
3.12 Montando e desmontando sistemas de arquivos ................................................... 49
3.12.1 O arquivo fstab ............................................................................................. 49
3.12.2 O comando mount .......................................................................................... 50
3.12.3 O comando umount ........................................................................................ 51
3.13 Manipulação de Processos .................................................................................... 52
3.14 Daemons, sinais e controle de processos .............................................................. 55
3.14.1 Sinais ............................................................................................................... 55
3.14.2 Enviando sinais a processos ........................................................................... 56
3.15 Documentação do sistema ..................................................................................... 57
3.15.1 Páginas de Manuais ........................................................................................ 57
3.15.2 GNU Info .......................................................................................................... 58
3.15.3 FAQ FreeBSD.................................................................................................. 59
3.16 Exercícios ............................................................................................................... 59
4. Instalação de aplicativos ............................................................................................ 60
4.1 O sistema de Ports e Packages ............................................................................... 61
4.1.1 Conteúdo da árvore do ports.......................................................................... 63
4.2 Encontrando o software ........................................................................................... 66
4.2.1 Whereis .......................................................................................................... 67
4.2.2 Make search................................................................................................... 67
4.3 Usando packages ................................................................................................. 68
4.3.1 Adicionando aplicativos .................................................................................. 68
4.3.2 Obtendo informações ..................................................................................... 69
4.3.3 Removendo aplicativos .................................................................................. 71
4.4 Usando Ports ........................................................................................................ 71
4.4.1 Customizações integradas ............................................................................. 73
4.4.2 Inicializando o port instalado no boot do sistema. .......................................... 75
4.4.3 Desinstalando e reinstalando ......................................................................... 76
4.4.4 Mantendo a árvore limpa ............................................................................... 76
5 Kernel .......................................................................................................................... 77
5.1 O que é o kernel? ................................................................................................. 77
5.2 Sysctl .................................................................................................................... 77
4
5.2.1 Sysctl MIBs .................................................................................................... 78
5.2.2 Manipulando Sysctls ...................................................................................... 78
5.3 Módulos de kernel ................................................................................................ 79
5.3.1 Visualizando os módulos carregados ............................................................ 79
5.3.2 Carregando e descarregando módulos ......................................................... 79
5.4 Construindo seu próprio Kernel ............................................................................ 80
5.4.1 Arquivo de configuração ................................................................................ 81
6. Atualização do FreeBSD ............................................................................................ 96
6.1 Versoes do FreeBSD ........................................................................................... 96
6.1.1 Releases ........................................................................................................ 96
6.1.2 Errata Branches ............................................................................................. 96
6.1.3 FreeBSD-current ............................................................................................ 96
6.1.4 FreeBSD-stable ............................................................................................. 96
6.2 Métodos de atualização. ...................................................................................... 97
6.3 Atualização Binária ............................................................................................... 97
6.3.1 Utilizando o freebsd-update ........................................................................... 97
6.4 Atualização por código fonte ................................................................................ 98
6.4.1 Stable-supfile ................................................................................................. 99
6.4.2 Construção do FreeBSD a partir do fonte. ................................................... 102
6.4.3 Compilando e instalando um novo kernel .................................................... 103
6.4.4 Preparação para a instalação do mundo ..................................................... 104
6.5 Instalação do mundo .......................................................................................... 106
7. Atualizando a árvore do ports .................................................................................. 108
7.1 Portsnap ............................................................................................................. 108
7.1.2 Configurando o portsnap ............................................................................. 108
7.1.3 Utilizando o portsnap ................................................................................... 109
7.2 Atualizando os ports instalados .......................................................................... 109
7.2.1 Identificando softwares desnecessários ...................................................... 112
7.2.2 Identificando e atualizando softwares .......................................................... 112
7.2.3 Reconstruindo programas dependentes. ..................................................... 113
7.2.4 Ignorando Ports ........................................................................................... 114
7.2.5 Reduzindo o tamanho da árvore do ports. ................................................... 114
8. DNS Bind ................................................................................................................. 116
8.1 Introdução .............................................................................................................. 116
8.2 O BIND – Berkeley Internet Name Domain ........................................................ 116
8.2.1 named.root................................................................................................... 117
8.2.2 named.conf .................................................................................................. 117
5
8.3 Arquivos de configuração de zona...................................................................... 117
8.4 Resource Records (RRs) .................................................................................... 117
8.5 Configurando o named ....................................................................................... 118
8.6 Configurando DNS server secundário (SLAVE) ................................................. 122
8.7 Testando nosso servidor dns .............................................................................. 124
9. Dispositivos Nativos de Segurança .......................................................................... 128
9.1 O usuário toor ..................................................................................................... 128
9.2 O arquivo /etc/ttys ............................................................................................... 128
9.3 Chflags ............................................................................................................... 130
9.4 Kernel securelevels ............................................................................................ 132
9.5 sshd_config ........................................................................................................ 134
9.6 Opções de montagem no /etc/fstab .................................................................... 136
9.7 Mostrar todos os processos ................................................................................ 138
9.8 Criptografia blowfish ........................................................................................... 139
9.9 Exercícios ........................................................................................................... 140
9.9.1 Habilitando e removendo o usuário toor ...................................................... 140
9.9.2 Configurando os terminais ........................................................................... 140
9.9.3 Utilizando chflags ......................................................................................... 141
9.9.4 Kernel secureleves ....................................................................................... 143
9.9.5 sshd_config .................................................................................................. 145
9.9.6 Mostrar todos os processos ......................................................................... 145
9.9.7 Criptografia Blowfish .................................................................................... 146
6
1 introdução
1.1 Uma Breve História do FreeBSD e do UNIX
O Sistema Operacional UNIX foi desenvolvido a partir de um consórcio formado
por um conglomerado de companhias que pretendia implementar um sistema em
que um computador de grande porte disponibilizasse recursos para diferentes
usuários remotos acessando o sistema simultaneamente. Esse sistema foi
denominado MULTICS que, apesar de apresentar inovações e criado a base
para o que hoje se conhece como plataforma operacional multiusuário, não
atingiu impacto comercial considerável e o projeto foi deixado de lado pelas
grandes companhias.
O projeto foi continuado por Ken Thompson e Dennis Ritchie que buscaram
escrever um novo sistema operacional menos arrojado que o projeto anterior.
Retirado de http://penguin.dcs.bbk.ac.uk/academic/unix/linux/slides/dennis-ken2.jpg
7
Kenneth Thompson e Dennis Ritche
Fonte: http://iarmar.com/blog/wp-content/uploads/2009/09/unix.jpg
1.2 BSD
BSD tem suas origens a partir dos trabalhos do CSRG, sigla em inglês para o
Computer Systems Research Group da Universidade da Califórnia em Berkeley,
que adquiriu o código fonte do UNIX a partir dos laboratórios AT&T Bell. Dentre
as várias contribuições deste grupo ao código do UNIX destacaram-se o sistema
de arquivos UFS e a adição da camada de rede do protocolo TCP/IP. CSRG
modificou o código do UNIX de uma tal maneira que o grupo resolveu lançar a
sua própria versão do sistema operacional, conhecida como Berkeley Software
Distribution (BSD).
1.3 FreeBSD
O FreeBSD foi desenvolvido a partir de um de dois grupos dissidentes do projeto
BSD original. O principal foco desse grupo foi tornar essa nova concepção do
BSD, o FreeBSD, em um sistema fácil de ser usado por usuários não técnicos e
direcionado principalmente para a arquitetura x86 da Intel. O segundo grupo foi
8
responsável pelo desenvolvido do NetBSD que trabalhava no intuito de fazer
com que o BSD fosse compatível com qualquer arquitetura de hardware
possível. Um terceiro grupo, dissociado do projeto NetBSD, dedicou-se em
disponibilizar um sistema BSD seguro, denominado OpenBSD. Dentre os
sistemas operacionais baseados nas variantes do sistema UNIX e no projeto
BSD, o FreeBSD é seguramente o mais popular por ser, principalmente, um
ambiente de múltiplas aplicabilidades nas tarefas cotidianas dos usuários.
9
documentação disponíveis na internet (FAQ, Handbook, listas de discussão
especializadas, entre outros).
10
2. Instalação do FreeBSD
11
2.2 Iniciando a instalação
A instalação do sistema operacional FreeBSD exige conhecimento prévio do
hardware a ser instalado. Para evitarmos surpresas desagradáveis, é
fundamental consultarmos o hardware notes, disponível em
http://www.freebsd.org/releases/8.0R/hardware.html (para a versão 8.0), e
verificarmos se o hardware é compatível com o sistema.
Para nossa felicidade, o FreeBSD mantém uma grande compatibilidade com
diversas marcas de equipamentos disponíveis no mercado.
Para iniciarmos o processo de instalação, devemos decidir por qual método
realizaremos a instalação. Neste curso abordaremos o método de instalação
mais comum no qual utilizaremos uma mídia ótica (CD). O FreeBSD pode ser
instalado utilizando uma mídia ótica, entretanto, outros métodos estão
disponíveis como FTP, HTTP, NFS, CDROM, DVD.
Podemos obter a imagem do CD em
ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/8.0/ (versão 8.0 e
plataforma i386).
Tendo o CD em mãos, basta inicializar a máquina pelo CDROM e o processo de
instalação começará.
Veremos abaixo as informações da inicialização do bootloader pelo CD.
Booting from CD-Rom...
CD Loader 1.2
Loading /boot/defaults/loader.conf
/boot/kernel/kernel text=0x64daa0 data=0xa4e80+0xa9e40
syms=[0x4+0x6cac0+0x4+0x88e9d]
12
Boot FreeBSD with ACPI disable
Inicia o FreeBSD desabilitando suporte ACPI. Caso tenha problemas na
inicialização normal essa opção é recomendada.
Reboot
Reinicia o sistema.
13
Veremos como é feita a detecção dos dispositivos físicos presentes pelo kernel.
Podemos verificar como o kernel detectou o hardware encontrado no
equipamento através das informações exibidas.
14
Em seguida, podemos escolheremos o mapa correspondente ao teclado ABNT2
selecionando a opção “Brazil ISO (accent)”.
15
2.3 O utilitário sysinstall
Ao finalizar o processo de boot, o aplicativo sysinstall entra em execução. O
sysinstall auxilia o processo de instalação/administração de sistemas FreeBSD.
Este utilitário apresenta interface simples, organizado através de menus de fácil
utilização.
A navegação é feita através do teclado com as seguintes teclas:
Tecla Ação
Espaço Seleciona ou alterna o item corrente
ENTER Finaliza o menu atual avançando para a próxima tela
Setas de movimentação Movimenta o cursor na direção desejada
TAB Movimenta o cursor para o próximo item
SHIFT + TAB Movimenta o cursor para o item anterior
PAGE UP Movimenta uma tela para cima
PAGE DOWN Movimenta uma tela para baixo
F1 Exibe informações de ajuda para o item associado
16
Standard – Begin a standard installation (recommended)
O modo de instalação padrão é recomendado devido à clareza com que conduz
o usuário no processo de instalação, exibindo diversas informações para cada
opção disponível em uma ordem de fácil compreensão.
Com exceção das informações exibidas e da ordenação automática entre as
etapas, todos os modos de instalação são semelhantes ao Standard.
17
Fixit – Repair mode with CDROM/Floppy or start Shell
A opção Fixit é um modo de segurança utilizado para reparar sistemas com
problema de inicialização. Através dela, podemos iniciar um disco de
recuperação através de CD/floppy ou iniciar um shell independente de disco de
recuperação.
18
Como escolhemos anteriormente a instalação Standard, o sistema deverá nos
informar constantemente sobre as operações a serem realizadas através de
janelas de mensagens.
Caso a instalação tenha detectado mais de um disco rígido, o sistema vai pedir
para selecionar o disco a ser particionado.
19
O Fdisk dispõe de diversos comandos para manipulação das partições ou slices.
Veremos a seguir uma descrição de cada comando
Tecla Ação
Setas Movem o cursor pela tabela de partições
direcionais
Cria um único slice ocupando todo o disco. Caso exista outras
partições o Fdisk irá sobrepor as partições existentes.
A
Esta opção é muito utilizada quando estamos instalando o
sistema em servidores
D Exclui a partição selecionada
Altera o tipo de partição selecionada. O tipo de cada partição é
T definido por um número. A partição do tipo BSD é definida pelo
número 165.
Define as configurações da geometria do disco. É utilizada
G
quando o kernel não detecta corretamente essas configurações.
Alterna a unidade de medida do tamanho do slice entre ST
Z
(Setores), KB (Kbytes), MB (Megabytes),GB (Gigabytes)
U Desfaz todas as ações efetuadas no disco
Cria um slice no disco. É preciso informar o tipo de partição e o
C
tamanho
S Define a partição selecionada como inicializavel
Q Sai do Fdisk e grava a tabela de partições
Entra no modo expert. Este modo possibilita a manipulação das
| (pipe) partições por meio de comandos digitados diretamente no prompt
da aplicação.
20
O processo de instalação apresenta 3 opções para o gerenciador de inicialização
(bootloader). São elas:
21
Através da ferramenta Disklabel editor, deveremos criar as partições bsd.
Semelhante ao fdsik, o disklabel possui uma gama de comandos para a
manipulação das partições. Veremos abaixo descrição dos comandos
Tecla Ação
22
Ao pressionarmos a tecla C para criarmos uma nova partição do tipo bsd, será
exibida uma caixa de dialogo para informarmos o tamanho da nova partição.
Quando criamos uma nova partição, devemos escolher se ela será uma partição
comum do sistema de arquivos ou será uma partição utilizada para swap.
Devemos também informar qual o ponto de montagem para a nova partição que
estamos criando.
23
Abaixo veremos um exemplo de esquema de alocação automática das partições
(obtido através da tecla A). Notem que o sistema reservou 512MB para a raiz (/)
e alocou os outros diretórios em partições separadas. Por questões de
segurança é altamente recomendável que a raiz do sistema de arquivos fique
separada do restante para evitar que danos nas partições possam impedir a
execução do sistema.
O particionamento é uma etapa muito importante e deve ser analisada com
muito cuidado. Devemos escolher um esquema de particionamento que condiz
com o trabalho que a máquina irá desenvolver, sendo assim, o esquema de
particionamento utilizado varia bastante de acordo com as necessidades de cada
servidor.
24
Selecionaremos a opção Install from a FreeBSD CD/DVD
25
A mensagem a seguir avisa que o sistema base foi instalado com sucesso. A
partir desse momento, podemos instalar softwares adicionais à nossa instalação
e configurar diversos itens no sistema instalado.
26
Após as configurações necessárias para a interface de rede, o sistema pergunta
se deseja iniciar a interface de rede com as configurações definidas
anteriormente. Responderemos Yes para esse questionamento.
O sistema está preparado para iniciar vários tipos de serviços distintos. Alguns
deles funcionam de modo standalone (o próprio programa gerencia suas
conexões) e outros funcionam sob a tutela do inetd, que gerencia todas as
conexões e as encaminha para o programa responsável pela conexão.
Responderemos No, pois não pretendemos iniciar nenhum programa que
funcione sob o inetd.
27
A maioria dos servidores são administrados remotamente através do SSH que
permite login através da rede utilizando criptografia dos dados trafegados
durante a sessão. No caso de necessitar deste recurso de administração,
remota responda Yes para que o sistema se encarregue de iniciar o serviço
SSH.
Podemos configurar nossa máquina para ser um servidor FTP anônimo (não
requer autenticação válida). Responderemos No, pois a maquina não será um
servidor FTP.
28
Definiremos a seguir as configurações de fuso horário para o sistema.
O sistema pode ser configurado para utilizar definições de horário local ou UTC
(Tempo Universal Coordenado é também conhecido como Tempo Médio de
Greenwich -- GMT). Selecionaremos No para utilizar as definições de horário
local
29
O sistema disponibiliza diversos aplicativos pré-compilados chamados pacotes
(packages). Podemos selecionar a instalação de aplicativos através do menu
dividido em categorias. Veremos adiante mais detalhes sobre esse tipo de
instalação. Por ora, responderemos No.
30
Ao final do processo de instalação, o sistema solicita a reinicialização do sistema
que acabou de ser configurado.
2.5 Exercícios
2.5.1 Instalação do FreeBSD pelo método Customizado
4. Na tela system console keymap, selecione Brazil Iso (accent) – Brazil ISO
keymap
(accent keys).
9. Observe que pode aparecer uma janela de erro com o título User
confirmation Request – selecione Yes
31
10. Na tela FDISK Partition Editor observe o nome do disco, sua geometria e
mais algumas informações.
14. Na tela Install boot manager for drive all, selecione a opção Standard –
Install a standard MBR (non-interactive boot manager)
22. Na tela Choose Instalation Media, escolha a opção 1 CD/DVD Install from a
FreeBSD CD/DVD
23. E pela última vez na tela Choose Custom Installation Options, escolha a
opção 7 Commit – Perform any pending Partition/Label/Extract actions.
24. A tela User Confirmation Request avisa que esta é a última chance,
selecione Yes para continuar.
32
Observações da instalação: Neste momento o instalador do FreeBSD está
copiando os arquivos do CD para o HD recém formatado. Utilize a combinação
de teclas alt+f2 para visualizar os arquivos que estão sendo copiados.
25. Na tela User Confirmation Requested (Visit the general configuration menu
for a chance to set any last options). Selecione No
31. Na tela User and group management selecione a opção User Add a new
user to the system.
32. Na tela add a new user, observe que há vários campos e no final da tela, em
amarelo, existem as legendas para cada campo.
33. Começando pelo campo “Login ID:” observe a legenda “The login name of
the user (mandatory)” Digite então o login do seu usuário
40. O campo Home directory deve ser utilizado apenas se existir a necessidade
de alterar a pasta default, deixando em branco ele cria o home do usuário em
/home/username
41. E finalmente deixe o campo Login Shell da forma padrão, ou então escolha
um shell de sua preferência.
42. Na tela User and Group management, escolha X Exit Exit this menu
(returning to previous)
33
43. Na tela FreeBSD configuration Menu, selecione Time Zone – Set which
time zone you’re in
44. Na tela Select local or UTC (Greenwich Mean Time) clock, selecione No
45. Na tela Time Zone Selector, selecione 2 American – North and South
47. Na tela Brazil Time Zones, selecione 8 S & SE Brazil (GO, DF, MG, ES, RJ,
SP, PR, SC, RS)
34
3. Unix Básico
3.1 Introdução
Agora que aprendemos como instalar o FreeBSD instalamos o sistema
FreeBSD, veremos algumas rotinas básicas de administração do sistema.
Welcome to FreeBSD!
35
You may also use sysinstall(8) to re-enter the installation
and
configuration utility. Edit /etc/motd to change this login
announcement. $
# # be paranoid
# alias cp='cp -ip'
# alias mv='mv -i'
# alias rm='rm -i'
37
que o arquivo pertence, e um para todos os outros usuários. Sua representação
numérica funciona assim:
Caractere Representação
- Arquivo regular
d Diretório
l Link simbólico
s Socket
38
Os próximos três caracteres, rw- neste exemplo, indicam as permissões de
acesso para o dono do arquivo.
Os próximos três caracteres, r--, indicam as permissões para o grupo ao qual o
arquivo pertence.
Os três caracteres finais, r--, indicam as permissões para todos os outros
usuários.
Um hífen indica que a permissão está desligada.
Analisando novamente a permissão fornecida como exemplo (-rw-r--r--), o
dono pode ler e escrever neste arquivo, o grupo pode ler o arquivo e os outros
usuários podem também apenas ler o arquivo.
A permissão numérica para o arquivo é 644, onde cada dígito representa as três
partes das permissões do arquivo.
Quando a permissão de execução de um diretório está ativada significa que
usuários podem entrar nele utilizando o comando cd. A permissão de leitura
significa usuários podem listar o conteúdo do diretório com o comando ls. Já a
permissão de escrita estabelece que usuários podem apagar arquivos dentro do
diretório.
# chown root:wheel
-rw-r--r-- 1 root wheel 59 Jan 13 20:11 arq1.txt
39
3.6 Estrutura de Diretórios
Conhecer a hierarquia de diretórios do FreeBSD é fundamental para se obter
entendimento total do sistema. O conceito mais importante para se assimilar é o
conceito do diretório raíz, o /. Esse diretório é montado inicialmente no momento
em que o sistema é carregado, e ele contém o sistema base necessário para
preparar a entrada em modo de operação multiusuário do sistema operacional.
O diretório raiz contém ainda pontos de montagem para cada outro sistema de
arquivos que você queira montar.
Um ponto de montagem é um diretório onde sistemas de arquivos adicionais
podem ser acoplados ao sistema de arquivos raíz. Pontos de montagem padrão
incluem /usr, /var, /mnt, e /cdrom. Esses diretórios normalmente são
encontrados como entradas dispostas no arquivo /etc/fstab. O /etc/fstab é
uma tabela com vários sistemas de arquivos e pontos de montagem que o
sistema usa como referência. A maioria dos sistemas de arquivos no /etc/fstab
são montados automaticamente no momento da inicialização, à partir do script rc
(Resource Configuration) a não ser que eles contenham a opção noauto definida.
Uma descrição completa da hierarquia do sistema de arquivos está disponível na
página de manual hier (man 7 hier). Por hora, uma breve descrição dos
diretórios mais comuns será abordada:
Diretório Descrição
/ Diretório raíz do sistema de arquivo
/bin
Utilitários do usuário, fundamentais para os ambientes de
multiusuário e monousuário
/boot
Arquivos que são usados durante o processo de inicialização
do sistema operacional
/dev Arquivos de controle de dispositivos
/etc Arquivos e scripts de configuração do sistema
/etc/defaults Arquivos de configuração padrão do sistema
/etc/mail
Arquivos de configuração para os agentes de transferência de
correio, como sendmail
/etc/namedb Arquivos de configuração do servidor DNS named
/etc/periodic
Scripts que são executados periodicamente (diariamente,
semanalmente e mensalmente) através cron
/mnt Diretório utilizado como ponto de montagem
/proc Sistema de arquivos de processos
/root Diretório home do usuário root
/sbin
Utilitários de programas e administração, fundamentais para os
ambientes de multiusuário e monousuário.
/stand Programas usados no ambiente independente.
/tmp
Arquivos temporários. Não é garantido a preservação do
conteúdo após a reinicialização do sistema.
/usr A maioria dos utilitários e aplicações de usuários.
/usr/bin Utilitários comuns, ferramentas de programação e aplicações.
/usr/include Arquivos C padrão de inclusão.
/usr/lib/ Bibliotecas.
40
Diretório Descrição
/usr/libdata/ Arquivos de dados de utilitários variados.
/usr/libexec/
Daemons & utilitários do sistema (executados por outros
programas).
Executáveis locais, bibliotecas, etc. Também utilizado como
destino padrão para o sistema de Ports. Dentro de /usr/local,
a disposição hierárquica geral é definida como /usr. Exceto o
/usr/local/ diretório de páginas de manuais que são diretamente dispostas
sob /usr/local ao invés de serem sobre /usr/local/share, e
a documentação das aplicações de terceiros, que ficam sob
share/doc/port.
/usr/obj/
Arquivo de destino dos objetos binários específicos para cada
arquitetura, constribuídos à partir da árvore /usr/src.
/usr/ports A Coleção de Ports do FreeBSD (opcional).
/usr/sbin/ Daemons & utilitários do sistema (executados por usuários).
/usr/share/ Arquivos independentes de arquitetura.
/usr/src/ Arquivos de fontes locais e/ou BSD.
/usr/X11R6/
Executáveis da distribuição do X11R6, bibliotecas, etc
(opcional).
/var/
Arquivos de log de múltiplos propósitos, arquivos temporários,
de transição, e arquivos de bobina (spool).
/var/log/ Arquivos de logs variados do sistema.
/var/mail/ Arquivos de caixa de correio dos usuários.
/var/spool/ Diretórios de spool de impressão e de correio.
/var/tmp/
Arquivos temporários que são mantidos entre reinicializações
do sistema.
/var/yp Mapas NIS.
41
mkdir Cria o diretório especificado mkdir dir1 dir2
mkdir –p dir1/dir2
ln Cria uma ligação (link) com o arquivo ln –s /usr/home /home
especificado. Essa ligação pode ser um ln a1.txt mesmo_a1.txt
soft link ou um hardlink dependendo dos
argumentos especificados
head Exibe as linhas iniciais do arquivo head arq1.txt
especificado head -25 arq2.txt
tail Exibe as linhas finais do arquivo tail –f /var/log/messages
especificado tail -30 arq1.txt
clear Limpa a tela clear
uname Exibe informações (hostname, versão, uname –na
data de compilação, plataforma, entre
outras) sobre o sistema
shutdown Desliga ou reinicia o computador shutdown –r now
shutdown –p +3
imediatamente ou após determinado
tempo programado.
dmesg Exibe o conteúdo do buffer de dmesg –a
mensagens do kernel. Normalmente são
exibidas as mensagens presentes na
inicialização do sistema
42
Login do usuário (fulano);
A senha criptografada ($1$jNJ0/dba$Z9jWxmLUPhoMkOSo9BP.S/);
O numero identificador do usuário (1002);
O grupo primário ao qual o usuário pertence (1002);
A classe de login do usuário (nulo);
O tempo em segundos UTC para que a senha seja alterada (0);
O tempo em segundos UTC de expiração da conta (0);
O campo de informações gerais (gecos) sobre o usuário (Fulano de Tal);
O diretório home do usuário (/home/fulano);
O interpretador de comandos (shell) do usuário (/bin/sh) .
Esses dois arquivos simples são razoavelmente bons para um pequeno número
de usuários, mas como a base de usuários tende a crescer, existe a
necessidade de um banco de dados que tenha mais desempenho nas consultas.
É por isso que o FreeBSD também tem o /etc/pwd.db e /etc/spwd.db .
Esses arquivos são tabelas hash em formato db (gerados pelo programa
pwd_mkdb) correspondente ao /etc/passwd e ao /etc/master.passwd,
respectivamente. Eles fornecem um mecanismo de pesquisa rápida para
grandes bases de dados do usuário.
Essa organização dos arquivos de base de dados de usuários é um ponto
favorável, pois facilita a migração de contas de um sistema a outro.
Vamos supor que necessitamos migrar todas as contas de um servidor para o
outro. O primeiro passo é copiar o arquivo /etc/master.passwd para o servidor
que irá receber as contas e executar o comando pwd_mkdb . Supondo que o
arquivo foi copiado com o nome de master.passwd.new no diretório /etc, o
comando seria:
# pwd_mkdb –p /etc/master.passwd.new
43
3.10 Comandos para manipulação de contas de usuários
Agora que já conhecemos como o sistema armazena a base de dados dos
usuários, podemos aprender os comandos necessários para a criação, remoção
e alteração das contas de usuários.
O sistema nos oferece alguns scripts que facilitam a tarefa de manutenção dos
usuários.
Após a confirmação dos dados digitados, o script irá criar o registro do usuário
nos arquivos /etc/passwd e /etc/master.passwd, criar o grupo no /etc/group,
criar o diretório home com os arquivos de configuração padrão (dot files) do
usuário.
44
# ls –l ~afpu
drwxr-xr-x 2 apfu apfu 512 Jan 15 11:15 .
drwxr-xr-x 5 root wheel 512 Jan 15 11:15 ..
-rw-r--r-- 1 apfu apfu 759 Jan 15 11:15 .cshrc
-rw-r--r-- 1 apfu apfu 257 Jan 15 11:15 .login
-rw-r--r-- 1 apfu apfu 167 Jan 15 11:15 .login_conf
-rw------- 1 apfu apfu 379 Jan 15 11:15 .mail_aliases
-rw-r--r-- 1 apfu apfu 339 Jan 15 11:15 .mailrc
-rw-r--r-- 1 apfu apfu 785 Jan 15 11:15 .profile
-rw------- 1 apfu apfu 284 Jan 15 11:15 .rhosts
-rw-r--r-- 1 apfu apfu 980 Jan 15 11:15 .shrc
45
Login: afpu2 Name: Usuario 2 – AFPU
Directory: /home/afpu2 Shell: /bin/sh
Never logged in.
No Mail.
No Plan.
New Password:
$ passwd
Changing local password for afpu1
Old Password:
New Password:
Retype New Password:
46
3.10.6 Bloqueando usuários
Agora que já sabemos criar, excluir e alterar informações da base de dados de
usuário é o momento de aprendermos a bloquear um usuário. Para tal ação
utilizaremos o poderoso aplicativo pw, que possibilita a completa manutenção dos
usuários da base local. O pw é muito utilizado nos scripts que nos auxiliam na
manutenção dos usuários.
O argumentos que nos possibilitam bloquear e desbloquear um usuário são lock
e unlock respectivamente. Sendo assim, para bloquearmos um usuário o
usuário afpu, devemos utilizar o seguinte comando:
# pw lock afpu
# pw unlock afpu
# vipw
47
# Please make all changes to this file, not to
/etc/defaults/rc.conf.
# This file now contains just the overrides from
/etc/defaults/rc.conf.
defaultrouter="192.168.0.1"
hostname="free.iqm.unicamp.br"
ifconfig_em0="inet 192.168.0.10 netmask 255.255.255.0"
keymap="br275.iso.acc"
sshd_enable="YES"
ntpd_enable="YES"
apache22_enable="YES"
# /etc/rc.d/ntpd
Usage: /etc/rc.d/ntpd
[fast|force|one](start|stop|restart|rcvar|status|poll)
# /etc/rc.d/ntpd status
ntpd is running as pid 627.
# /etc/rc.d/ntpd stop
Stopping ntpd.
# /etc/rc.d/ntpd status
ntpd is not running.
# /etc/rc.d/ntpd start
Starting ntpd.
# /etc/rc.d/ntpd status
ntpd is running as pid 48782.
48
# /etc/rc.d/ntpd rcvar
# ntpd
ntpd_enable=YES
Fonte:
http://www.rwc.uc.edu/thomas/Intro_Unix_Text/Images/Unix_file_system.png
49
server:/dados /home nfs rw,userquota 0 0
O comando pode ser utilizado com diversas opções que podem ser estudadas
em detalhes através da consulta da página de manual. Veremos algumas
opções mais comuns:
-a Monta todos os sistemas de arquivos listados no /etc/fstab.
Exceto aqueles assinalados com a opção noauto.
-f Força a montagem de um sistema de arquivos que não foi
considerado limpo pelo fsck (problemas de integridade). Essa opção não
é segura, sendo assim, seu uso não é recomendado.
-r Monta o sistema de arquivos como somente leitura.
50
-t <tipofs> Monta o sistema de arquivos com o tipo especificado. Ufs é
o tipo padrão de sistema de arquivos FreeBSD. Vejamos abaixo outros
tipos:
o msdosfs Padrão MSDOS
o ntfs Padrão de sistemas de arquivos utilizado no Windows
NT em diante
o cd9660 Padrão ISO9660 utilizado em CD
o nfs Padrão de sistema de arquivos de rede (Network File
System)
-v Habita o modo detalhado.
-w Monta o sistema de arquivos como leitura e escrita.
-o Define as opções de montagem do sistema de arquivos. Pode ser
utilizada com nodev, noexec, nosuid, async, entre outras.
Exemplos de utilização:
Montar uma partição NTFS:
# mount –t ntfs /dev/ad0s1 /mnt
Exemplos de utilização:
Desmontar todas as partições tipo NTFS:
# mount –at ntfs
51
# mount /mnt
Para obtermos uma listagem mais detalhada dos processos e incluir os todos os
processos em execução, utilizaremos o comando com os argumentos aux.
$ ps -aux
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
root 11 200.0 0.0 0 32 ?? RL 14Dec09 108558:47.62 [idle]
root 0 0.0 0.0 0 112 ?? DLs 14Dec09 0:59.84 [kernel]
root 1 0.0 0.0 3204 568 ?? ILs 14Dec09 0:00.79 /sbin/init --
root 2 0.0 0.0 0 16 ?? DL 14Dec09 1:19.94 [g_event]
root 3 0.0 0.0 0 16 ?? DL 14Dec09 0:20.70 [g_up]
root 4 0.0 0.0 0 16 ?? DL 14Dec09 0:15.04 [g_down]
root 5 0.0 0.0 0 16 ?? DL 14Dec09 0:00.00 [xpt_thrd]
root 6 0.0 0.0 0 16 ?? DL 14Dec09 0:08.22 [fdc0]
root 7 0.0 0.0 0 16 ?? DL 14Dec09 0:02.17 [pagedaemon]
root 8 0.0 0.0 0 16 ?? DL 14Dec09 0:00.00 [vmdaemon]
root 9 0.0 0.0 0 16 ?? DL 14Dec09 0:00.04 [pagezero]
root 10 0.0 0.0 0 16 ?? DL 14Dec09 0:00.00 [audit]
root 12 0.0 0.0 0 288 ?? WL 14Dec09 28:23.47 [intr]
root 13 0.0 0.0 0 16 ?? DL 14Dec09 1:18.54 [yarrow]
root 14 0.0 0.0 0 192 ?? DL 14Dec09 0:21.87 [usb]
root 15 0.0 0.0 0 16 ?? DL 14Dec09 0:10.00 [bufdaemon]
root 16 0.0 0.0 0 16 ?? DL 14Dec09 92:37.86 [syncer]
root 17 0.0 0.0 0 16 ?? DL 14Dec09 0:09.59 [vnlru]
root 18 0.0 0.0 0 16 ?? DL 14Dec09 0:16.82 [softdepflush]
root 19 0.0 0.0 0 16 ?? DL 14Dec09 0:03.12 [flowcleaner]
52
root 130 0.0 0.1 2740 1064 ?? Is 14Dec09 0:00.00 adjkerntz -i
root 333 0.0 0.0 3204 656 ?? Is 14Dec09 0:00.00 /sbin/devd
root 425 0.0 0.1 7020 1560 ?? Ss 14Dec09 0:05.62 /usr/sbin/syslogd
-s
root 627 0.0 0.1 11852 2568 ?? Ss 14Dec09 1:14.85 /usr/sbin/ntpd -c
/etc/ntp.conf -p /var/run/ntpd.pid -f /var/db/ntpd.drift
root 664 0.0 0.2 26136 4480 ?? Is 14Dec09 0:00.01 /usr/sbin/sshd
root 671 0.0 0.2 12072 4032 ?? Ss 14Dec09 0:36.89 sendmail:
accepting connections (sendmail)
smmsp 675 0.0 0.2 12072 3864 ?? Is 14Dec09 0:01.07 sendmail: Queue
runner@00:30:00 for /var/spool/clientmqueue (sendmail)
root 681 0.0 0.1 7948 1612 ?? Is 14Dec09 0:10.53 /usr/sbin/cron -s
root 4357 0.0 0.2 38068 5144 ?? Is 8Jan10 0:00.04 sshd: rensousa
[priv] (sshd)
rensousa 4360 0.0 0.2 38068 5208 ?? S 8Jan10 0:00.55 sshd:
rensousa@pts/0 (sshd)
root 731 0.0 0.1 6888 1284 v0 Is+ 14Dec09 0:00.00
/usr/libexec/getty Pc ttyv0
root 732 0.0 0.1 6888 1284 v1 Is+ 14Dec09 0:00.00
/usr/libexec/getty Pc ttyv1
root 733 0.0 0.1 6888 1284 v2 Is+ 14Dec09 0:00.00
/usr/libexec/getty Pc ttyv2
root 734 0.0 0.1 6888 1284 v3 Is+ 14Dec09 0:00.00
/usr/libexec/getty Pc ttyv3
root 735 0.0 0.1 6888 1284 v4 Is+ 14Dec09 0:00.00
/usr/libexec/getty Pc ttyv4
root 736 0.0 0.1 6888 1284 v5 Is+ 14Dec09 0:00.00
/usr/libexec/getty Pc ttyv5
root 737 0.0 0.1 6888 1284 v6 Is+ 14Dec09 0:00.00
/usr/libexec/getty Pc ttyv6
root 738 0.0 0.1 6888 1284 v7 Is+ 14Dec09 0:00.00
/usr/libexec/getty Pc ttyv7
rensousa 4361 0.0 0.1 8260 1880 0 Ss 8Jan10 0:00.01 -sh (sh)
rensousa 23233 0.0 0.1 8004 1400 0 R+ 11:02AM 0:00.00 ps -aux
53
8 root 0.0 [vmdaemon]
9 root 0.0 [pagezero]
10 root 0.0 [audit]
11 root 200.0 [idle]
12 root 0.0 [intr]
13 root 0.0 [yarrow]
14 root 0.0 [usb]
15 root 0.0 [bufdaemon]
16 root 0.0 [syncer]
17 root 0.0 [vnlru]
18 root 0.0 [softdepflush]
19 root 0.0 [flowcleaner]
130 root 0.0 adjkerntz -i
333 root 0.0 /sbin/devd
425 root 0.0 /usr/sbin/syslogd -s
627 root 0.0 /usr/sbin/ntpd -c /etc/ntp.conf -p
/var/run/ntpd.pid -f /var/db/ntpd.drift
664 root 0.0 /usr/sbin/sshd
671 root 0.0 sendmail: accepting connections
(sendmail)
675 smmsp 0.0 sendmail: Queue runner@00:30:00 for
/var/spool/clientmqueue (sendmail)
681 root 0.0 /usr/sbin/cron -s
4357 root 0.0 sshd: rensousa [priv] (sshd)
4360 rensousa 0.0 sshd: rensousa@pts/0 (sshd)
731 root 0.0 /usr/libexec/getty Pc ttyv0
732 root 0.0 /usr/libexec/getty Pc ttyv1
733 root 0.0 /usr/libexec/getty Pc ttyv2
734 root 0.0 /usr/libexec/getty Pc ttyv3
735 root 0.0 /usr/libexec/getty Pc ttyv4
736 root 0.0 /usr/libexec/getty Pc ttyv5
737 root 0.0 /usr/libexec/getty Pc ttyv6
738 root 0.0 /usr/libexec/getty Pc ttyv7
4361 rensousa 0.0 -sh (sh)
23372 rensousa 0.0 ps -ax -o pid,user,%cpu,command
Mem: 14M Active, 757M Inact, 317M Wired, 213M Buf, 885M Free
Swap: 4060M Total, 4060M Free
54
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU
COMMAND
627 root 1 44 0 11852K 2568K select 0 1:16 0.00% ntpd
671 root 1 44 0 12072K 4032K select 0 0:37 0.00%
sendmail
681 root 1 44 0 7948K 1612K nanslp 0 0:11 0.00% cron
425 root 1 44 0 7020K 1560K select 0 0:06 0.00%
syslogd
675 smmsp 1 44 0 12072K 3864K pause 0 0:01 0.00%
sendmail
4360 rensousa 1 44 0 38068K 5208K select 1 0:01 0.00% sshd
24605 rensousa 1 44 0 38068K 5208K select 1 0:00 0.00% sshd
4357 root 1 46 0 38068K 5144K sbwait 0 0:00 0.00% sshd
24602 root 1 46 0 38068K 5144K sbwait 0 0:00 0.00% sshd
4361 rensousa 1 44 0 8260K 1884K ttyin 0 0:00 0.00% sh
664 root 1 44 0 26136K 4480K select 0 0:00 0.00% sshd
24606 rensousa 1 44 0 8260K 1876K wait 1 0:00 0.00% sh
731 root 1 44 0 6888K 1284K ttyin 0 0:00 0.00% getty
733 root 1 76 0 6888K 1284K ttyin 0 0:00 0.00% getty
732 root 1 76 0 6888K 1284K ttyin 0 0:00 0.00% getty
735 root 1 76 0 6888K 1284K ttyin 1 0:00 0.00% getty
738 root 1 76 0 6888K 1284K ttyin 1 0:00 0.00% getty
736 root 1 76 0 6888K 1284K ttyin 0 0:00 0.00% getty
3.14.1 Sinais
Um sinal é uma mensagem de comunicação que pode ser enviada a um
processo em execução. Os sinais podem ser iniciados por programas, usuários,
ou administradores. Usuários podem enviar sinais apenas para os processos
que estão executando com o seu UID. Só o root pode enviar sinais a qualquer
processo em execução.
Existe uma lista de tipos específicos de sinais, da qual veremos os mais
frequentemente utilizados
55
3 SIGQUIT Fechamento
6 SIGABRT Abortar
9 SIGKILL Finalização forçada pelo kernel
15 SIGTERM Finalização normal
Para obter a lista completa dos sinais disponíveis utilize o comando man 3
signal.
Agora que já temos o PID, devemos utilizar o kill para fechar o aplicativo em
questão.
# kill 627
Outra sinal para interromper um processo é o SIGKILL. Esse tipo de sinal não
pode ser ignorado pelo aplicativo e sua interrupção é imediata, não levando em
conta a importância do aplicativo para o sistema. Seu uso só é recomendado
quando o processo encontra-se travado e outras tentativas com SIGTERM não
surtiram efeito.
Para utilizarmos o SIGKILL no exemplo acima basta informar o numero do sinal,
conforme exemplo abaixo.
# kill -9 627
Outro sinal muito utilizado é o SIGHUP que envia uma mensagem para o
processo reiniciar. Normalmente o aplicativo faz uma releitura dos seus arquivos
56
de configuração. Esse sinal é muito utilizado quando mudamos os arquivos de
configuração de algum aplicativo e desejamos aplicar as novas configurações.
Para o exemplo anterior, caso desejamos que o servidor ntpd releia os arquivos
de configuração, basta enviar o sinal SIGHUP conforme abaixo.
Ou ainda
# kill –1 627
NAME
bce -- Broadcom NetXtreme II (BCM5706/5708/5709/5716)
PCI/PCIe Gigabit Ethernet adapter driver
SYNOPSIS
To compile this driver into the kernel, place the
following lines in your kernel configuration file:
device miibus
device bce
57
if_bce_load="YES"
DESCRIPTION
The bce driver supports Broadcom's NetXtreme II product
family, including the BCM5706, BCM5708, BCM5709 and BCM5716
Ethernet controllers.
The NetXtreme II product family is composed of various
Converged NIC (or CNIC) Ethernet controllers which support a
TCP Offload Engine (TOE, Remote DMA (RDMA), and iSCSI
acceleration, in addition to standard L2 Ethernet traffic,
all on the same controller.
…
É bem fácil utilizar essa ferramenta, quando você sabe o nome do comando
sobre o qual quer obter mais informações, mas e se você não puder lembrar o
nome do comando? Pode usar o man para procurar por palavras chaves nas
descrições do comando, usando opção -k:
% man -k mail
58
3.15.3 FAQ FreeBSD
FAQ (Frequently Asked Questions) é um documento de perguntas e respostas
frequentes sobre o FreeBSD. Podemos encontrar essa documentação em:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/index.html
Podemos também encontrar um FAQ em nossa língua no diretório
/usr/share/doc/pt_BR.ISO8859-1/books/faq
3.16 Exercícios
3.16.1 Com base na execução do comando abaixo:
# ls -li
total 4
22148 -rw-r--r-- 2 root wheel 7 Feb 14 00:10 a.txt
22149 drwxr-xr-x 2 root wheel 512 Feb 14 00:11 b.txt
22150 lrwxr-xr-x 1 root wheel 5 Feb 14 00:12 c.txt ->
a.txt
22148 -rw-r--r-- 2 root wheel 7 Feb 14 00:10 d.txt
Responda:
Responda:
59
4. Instalação de aplicativos
Diferente dos outros sistemas operacionais (Microsoft Windows e algumas
distribuições Linux) uma instalação básica do FreeBSD contém apenas os
aplicativos necessários para o funcionamento do SO. Qualquer outro aplicativo
desejado que não faça parte da base do sistema deve ser instalado.
Em sistemas Unix / Unix-Like a instalação de aplicativos pelo método tradicional
é uma tarefa árdua, uma vez que se faz necessário a execução de vários
procedimentos antes da instalação propriamente dita do aplicativo escolhido.
Vamos elucidar abaixo todas as etapas da compilação de um aplicativo pelo
código fonte:
1. Baixar o source do programa
2. Extrair o source do programa
3. Rodar o comando ./configure
a. O sistema irá informar se alguma dependência está faltando
b. Baixar as dependências requeridas
c. Instalar todas as dependências
4. Rodar o comando make para compilar o programa
5. Instalar o programa via make install
6. Configurar o programa
#./configure
#make
#make install
60
Se tudo correr bem o apache é compilado e instalado no equipamento. Algumas
vezes o administrador de sistemas se depara com erros, onde se faz necessária
a edição dos arquivos Makefile do aplicativo a ser instalado.
Para facilitar o processo de instalação para seus usuários, o FreeBSD possui a
coleção de Ports.
Toda a estrutura do ports está armazenada em /usr/ports. Caso não exista nada
dentro dessa pasta significa que a coleção do ports não foi instalada junto com o
sistema.
A instalação pode ser feita pelo cdrom, utilizando o script install.sh encontrado
dentro da pasta ports, para isso os seguintes comandos devem ser seguidos:
61
#mount /cdrom
#cd /cdrom/8.0-RELEASE/ports
#./install.sh
# portsnap fetch
Looking up portsnap.FreeBSD.org mirrors... 2 mirrors found.
Fetching snapshot tag from portsnap1.freebsd.org... done.
Fetching snapshot metadata... done.
Fetching snapshot generated at Wed Jan 6 22:54:14 BRST
2010:
79652bbf56abf77df0284104b71e502d93f4c63a77357b100% of 61
MB 298 kBps 00m00s
Extracting snapshot... done.
Verifying snapshot integrity... done.
Fetching snapshot tag from portsnap1.freebsd.org... done.
Fetching snapshot metadata... done.
Updating from Wed Jan 6 22:54:14 BRST 2010 to Thu Jan 7
08:44:57 BRST 2010.
Fetching 4 metadata patches... done.
Applying metadata patches... done.
Fetching 0 metadata files... done.
Fetching 29 patches.....10....20.... done.
Applying patches... done.
Fetching 4 new ports or files... done.
# portsnap extract
/usr/ports/.cvsignore
/usr/ports/CHANGES
/usr/ports/COPYRIGHT
/usr/ports/GIDs
/usr/ports/KNOBS
/usr/ports/LEGAL
/usr/ports/MOVED
/usr/ports/Makefile
/usr/ports/Mk/bsd.apache.mk
/usr/ports/Mk/bsd.autotools.mk
/usr/ports/Mk/bsd.cmake.mk
62
/usr/ports/Mk/bsd.commands.mk
...
/usr/ports/x11/xzoom/
/usr/ports/x11/yakuake-kde4/
/usr/ports/x11/yakuake/
/usr/ports/x11/yalias/
/usr/ports/x11/yeahconsole/
/usr/ports/x11/yelp/
/usr/ports/x11/zenity/
Building new INDEX files... done.
Ao final dos dois comandos, você terá uma versão atual da árvore do ports.
NOTA Para ter uma melhor precisão do tempo na execução dos comandos citados, tente
executar desta forma:
#date > time_ports && portsnap fetch && portsnap extract && date >>
time_ports
Este comando cria no diretório corrente o arquivo time_ports, coloca como primeira
linha a data corrente do sistema, executa as operações de fetch e extract e ao final,
insere a segunda linha com a data corrente do sistema. Basta verificar a diferença
entre elas para se ter o tempo decorrido.
Utilizaremos esse artifício para outras operações adiante.
63
GIDs: Contém uma lista de todos os IDs de grupos utilizados pelos softwares na
coleção do ports. Muitos softwares utilizam usuários desprivilegiados e a coleção
do ports necessita de GID para estes usuários. Este arquivo ajuda a evitar
conflitos, já que cada port tem seu próprio GID atribuído.
LEGAL: Este arquivo mostra quais ports possuem restrições de uso e direitos de
cópia.
MOVED: Contém uma lista dos ports que foram movidos de categorias ou
removidos da árvore.
64
Biologia - Softwares relacionados à biologia.
Cad - Utilitários de design de computador Aided.
Chinese - Softwares portados para o mercado chinês.
Comms - Utilitários de comunicação.
Converters - Utilitários de conversão de formatos.
Database - Software de banco de dados.
Deskutils - Utilitários desktop variados.
Devel - Utilitários de desenvolvimento de software bibliotecas.
Dns - Utilitários de DNS cliente e servidor.
Editors - Editores de texto comuns.
Emulators - Utilitários para emular outros tipos Sos.
Finance - Aplicações relacionadas a dinheiro, finanças, etc.
French - Softwares portados para Francês.
Ftp - Utilitários FTP cliente e servidor.
Games - Jogos variados.
German - Softwares portados para alemão.
Graphics - Bibliotecas e utilitários gráficos.
Hebrew - Softwares portados para a língua Hebréia.
Hungarian - Softwares portas para o mercado húngaro.
Irc - Softwares de bate papo.
Japanese - Softwares portados para o mercado japonês.
Java - Suporte a linguagem Java.
Korean - Softwares portados para o mercado Coreano.
Lang - Linguagem de computador (compiladores).
Mail - Utilitários de e pacotes de correio eletrônico.
Math - Software de matemática computacional.
Mbone - Aplicações e utilitários para o MBONE.
Misc - Utilitários variados.
Multimedia - Utilitários multimídia.
Net - Utilitários de rede.
Net-im - Software de mensagens instantaneas.
Net-mgmt - Utilitários para gerenciarnento de rede.
Net-p2p - Softwares peer to peer.
News - Software de News USENET.
Palm - Software para palmtops.
Polish - Softwares portados para o mercado polonês.
Ports-mgmt - Softwares para gerenciamento dos ports
Portuguese - Softwares portados para o mercado português.
print - Utilitários para trabalhar com impressão.
Russian - Softwares portados para o mercado Russo.
Scheme - Software relacionado para a linguagem de schemas.
65
Science - Software científico.
Security - Software de sistemas de segurança.
Shells - Várias shells (tcsh, bash, etc).
Sysutils - Vários utilitários de sistema.
Textproc - Utilitários de processamento/procura de textos.
Ukrainian - Softwares portados para o mercado Ucraniano.
Vietnamese - Softwares portados para o mercado Vietnamese.
www - Utilitários WEB (navegadores, servidores HTTP, etc).
X11 - Utilitários do sistema de janelas X.
X11-clocks - Relógios para o sistema de janelas X.
X11-drivers - drivers para o sistema de janelas X.
X11-fm - Gerenciadores de arquivo para o sistema de janelas X.
X11-fontes - Utilitários de fonte e fontes para o sistema de janelas X.
X11-Servers - Servidores do sistema de janelas X.
X11-Themes - Temas para o sistema de janelas X.
X11-toolkits - Toolkits de desenvolvimento do sistema de janelas X.
X11-wm - Gerenciadores de janelas para o sistema de janelas X.
#ls devel/ | wc -l
3065
#ls www/ | wc -l
1895
#ls databases/ | wc -l
700
Como encontrar algum software nesta infinidade de pastas?
Existem várias formas a começar pela Internet. Se você estiver em um micro
com modo gráfico, basta acessar www.freebsd.org/ports e realizar sua busca.
No ambiente do curso não estamos utilizando modo gráfico, portanto precisamos
de outras formas para realizar tal operação.
Primeiramente podemos utilizar o arquivo de índice, ele está localizado em
/usr/ports/INDEX-8, ele contém a lista de todos os ports em ordem alfabética.
Cada port é descrito em uma linha, com os campos separados pelo simbolo |.
Enquanto esta divisão é conveniente para ferramentas do sistema, não é
particularmente inteligível. Para melhorar esta exibição basta digitar o comando
#make print-index no diretório /usr/ports. A saída deste comando é a exibição na
tela, para criar um arquivo para consultas futuras, basta digitar:
#cd /usr/ports
#make print-index > indice_ports
Port: apache-2.0.63_3
66
Path: /usr/ports/www/apache20
Info: Version 2.0.x of Apache web server with prefork MPM.
Maint: [email protected]
Index: www ipv6
B-deps: autoconf-2.62 autoconf-wrapper-20071109 expat-
2.0.1_1 libiconv-1.13.1 li
btool-2.2.6b m4-1.4.13,1 perl-5.8.9_3
R-deps: expat-2.0.1_1 libiconv-1.13.1 perl-5.8.9_3
E-deps: perl-5.8.9_3
P-deps: perl-5.8.9_3
F-deps:
WWW: http://httpd.apache.org/
O índice é iniciado com a descrição do software seguido pelo seu caminho. Logo
abaixo temos algumas informações sobre o software. O campo Maint lista o(s)
mantenedor(es) do software, podendo este ser uma ou mais pessoas ou mesmo
uma organização. O campo índex lista quais as categorias de que este software
pode fazer parte. B-deps mostra todas as dependências que precisam ser
instaladas antes do software. O campo R-deps informa as dependências que
necessitam ser instaladas para o software rodar. O campo E-deps informa se o
software necessita de um descompactador específico, já o campo P-deps
informa se o software necessita de algum patch especial. Similarmente o campo
F-deps informa se o software necessita de um software especial para realizar o
seu download. Finalmente o campo WWW informa a home page do software.
NOTA Repare que as dependências de compilação B-deps e de execução R-deps do apache
são as mesmas mostradas no início do capítulo.
4.2.1 Whereis
Outra forma de pesquisa é pelo comando whereis, onde você deve fornecer um
nome como parâmetro:
#whereis mysql50-server
mysql50-server: /usr/ports/databases/mysql50-server
67
Procurando ports com o nome apache
#pkg_add -r gnuls
#ls /var/db/pkg
gnuls-7.5
68
-n não instala um package, apenas mostra os passos que seriam feitos se
este fosse instalado.
-f força a instalação sem alguma dependência necessária.
#pkg_info -I -a | more
Que irá resultar em uma lista contendo apenas os nomes dos aplicativos
instalados e uma breve descrição da sua função.
Para obter maiores informações sobre determinado aplicativo, utilzar:
# pkg_info lynis-1.2.9
Information for lynis-1.2.9:
Comment:
Security and system auditing tool
Description:
Lynis is an auditing tool for Unix (specialists). It scans
the
69
system and available software, to detect security issues.
Beside
security related information it will also scan for general
system
information, installed packages and configuration mistakes.
WWW: http://www.rootkit.nl/projects/lynis.html
Author: Michael Boelen
#pkg_info -as
Information for apache-2.2.9:
Package Size:
13493 (1K-blocks)
70
Package Size:
2256 (1K-blocks)
Package Size:
2450 (1K-blocks)
#setenv BLOCKSIZE M
#pkg_delete lynis-1.2.9
NOTA: A falta de atenção ao se utilizar o comando pkg_delete pode fazer com que aplicativos
dependentes do aplicativo desinstalado parem de funcionar.
#make install
71
Com o tempo você perceberá que alguns ports dependem de uma interação
especial. A árvore do ports permite que esse tipo de interação seja feita, mas
para isso é necessário conhecer todas as etapas da instalação de um port.
1. make config – Configura as opções do port (caso exista) através de um
menu em dialog. Essas configurações serão salvas para uso futuro no
ports.
2. make fetch – Uma vez configurado o port, o sistema procura uma lista
pré-configurada de sites da Internet para download do fonte. Geralmente
o primeiro site a ser vasculhado é o armazenado no Makefile do próprio
port, caso não seja encontrado, o sistema checa uma lista de backup
provida pela árvore do ports. Os downloads são armazenados em
/usr/ports/distfile.
3. make checksum – Como uma medida de segurança o sistema confere se
o checksum criptográfico do código baixado confere com o checksum
armazenado no arquivo distinfo localizado na mesma pasta do port. Caso
exista alguma inconsistência nesta etapa a instalação do port é
imediatamente interrompida.
72
make rmconfig: remove as opções configuradas para este port através
do parâmetro make config visto anteriormente;
make fetch-list: mostra a lista de todos os arquivos necessários que
devem ser puxados para a construção do port;
make clean: remove o código fonte que foi descompactado;
make distclean: remove o port distfile (arquivo .tgz que fica em
/usr/ports/distfiles) e depois executa a opção clean;
make reinstall: usado para restaurar um port depois de ter usado o
pkg_delete ou a opção deinstall;
make deinstall: remove o port instalado do sistema. Similar ao
comando pkg_delete.
make readmes: cria um README.html do port com várias informações
sobre o aplicativo e pode ser visualizado através de um navegador;
make package: esta opção cria um package binário do port em
questão;
NOTA Existe uma grande diferença entre os comandos make index e make fetchindex.
O comando make index irá criar o arquivo de índice pela árvore do ports instalada no
sistema, para isso terá que entrar dentro de cada pasta, recolhendo as informações
necessárias para a montagem do arquivo. Este processo pode ser muito demorado
dependendo do hardware utilizado.
O comando make fetchindex baixa do site do FreeBSD o arquivo de índice atual. Esta
é a melhor opção para verificar se os ports estão atualizados com o comando pkg_info
–vI.
73
Após a seleção das opções, basta utilizar a tecla TAB para navegar até o botão
ok e pressionar enter. O sistema irá voltar para o terminal caso o comando
digitado foi make config ou irá continuar a instalação caso o comando digitado
tenha sido o make install.
Todas as opções marcadas ou não são gravadas dentro de um arquivo de
configuração localizado em /var/db/ports/<nome_do_port>/options, assim caso
esse aplicativo tenha que ser reinstalado, o sistema busca automaticamente
essas configurações no momento da execução de um make install.
Caso deseje reinstalar o aplicativo com configurações diferentes, basta rodar
novamente o comando make config, apagar o arquivo options ou então utilizar o
comando make rmconfig antes de utilizar o make install.
Esta forma torna a instalação de aplicativos mais fácil, mas nem todo port dentro
da árvore possui uma interface de configuração. Alguns mostram suas opções
de configuração após a execução do make install.
Tomando como base o servidor de banco de dados mysql, podemos exemplificar
como isso acontece.
Ao entrar em seu diretório, /usr/ports/databases/mysql50-server e executar o
comando make config, nos deparamos com o seguinte resultado:
# make config
===> No options to configure
Mas ao se executar o comando make install, uma lista de opções irá aparecer
antes do download do código fonte se iniciar. Neste momento é necessário
pressionar crtl+c para abortar a operação e realizar alguma configuração
adicional, caso necessário.
# make install
74
WITH_CHARSET=charset Define the primary built-in charset
(latin1).
WITH_XCHARSET=list Define other built-in charsets (may be
'all').
WITH_COLLATION=collate Define default collation
(latin1_swedish_ci).
WITH_OPENSSL=yes Enable secure connections.
WITH_LINUXTHREADS=yes Use the linuxthreads pthread
library.
WITH_PROC_SCOPE_PTH=yes Use process scope threads
(try it if you use libpthread).
BUILD_OPTIMIZED=yes Enable compiler optimizations
(use it if you need speed).
BUILD_STATIC=yes Build a static version of mysqld.
(use it if you need even
more speed).
WITHOUT_THR_ALARM=yes Disable signals (this reduces kernel
lock contention on SMP, but
has the side effect that you can't kill clients that are
sleeping).
WITHOUT_INNODB=yes Disable support for InnoDB table
handler.
WITH_ARCHIVE=yes Enable support for Archive Storage
Engine.
WITH_CSV=yes Enable support for CSV Storage
Engine.
WITH_FEDERATED=yes Enable support for Federated Storage
Engine.
WITH_NDB=yes Enable support for NDB Cluster.
=> mysql-5.0.86.tar.gz doesn't seem to exist in
/usr/ports/distfiles/.
=> Attempting to fetch from
ftp://ftp.fi.muni.cz/pub/mysql/Downloads/MySQL-5.0/.
^C
Se desejar alterar alguma opção, deverá novamente rodar o comando make
install com mais um argumento:
NOTA Os caminhos para a configuração dos aplicativos foram dados, agora para uma correta
configuração de cada aplicativo ou uma melhor configuração para o seu cenário em
específico, será necessária uma boa leitura dos manuais de instalação e configuração
do aplicativo em seu site de origem.
75
ser instalado é criado dentro de /usr/local/etc/rc.d um script de inicialização com
o nome do aplicativo instalado e a extensão .sh. Isso bastava para que o
aplicativo fosse inicializado. Depois das mudanças se fez necessário adicionar
uma entrada no arquivo /etc/rc.conf com a seguinte sintaxe:
nome_do_aplicativo_enable=”YES”.
Sem essa entrada o aplicativo não é inicializado.
Alguns aplicativos possuem flags especiais que podem ser configuradas no
momento da execução, para isso é sempre bom verificar o script de inicialização
deste aplicativo para encontrar essas flags que também são adicionadas no
arquivo /etc/rc.conf.
76
5 Kernel
5.1 O que é o kernel?
Sendo o principal componente de um sistema operacional Unix like, o kernel do
FreeBSD tem como função principal ser uma interface entre hardware e
software.
O Kernel permite que o software escreva dados nos discos rígidos e também na
rede. Quando um programa necessita de memória, é o kernel que realiza a
manipulação de baixo nível para acessar a memória e alocar recursos para a
tarefa. Também quando um programa requisita tempo de CPU, o kernel agenda
um slot de tempo para esta tarefa. Dessa forma pode-se dizer que o kernel provê
toda a interface de software que os programas necessitam para acessar os
recursos de hardware.
Enquanto que, de uma maneira simplista, o trabalho do kernel é fácil de ser
definido, este, na verdade, é um trabalho árduo. Diferentes programas exigem do
kernel diferentes interfaces para o hardware e diferentes tipos de hardware. Por
exemplo, o FreeBSD suporta algumas dúzias de placas de rede, cada qual com
suas especificações particulares para o kernel. Diferentes programas fazem
diferentes requisições de memória para serem executados, obrigando o kernel a
interpretar e realizar da melhor forma possível, garantindo sempre a integridade
do sistema.
O kernel e seus módulos ficam no diretório /boot/kernel. Os demais arquivos do
sistema que não ficam no kernel são chamados de userland.
Quando o sistema é instalado, este utiliza um kernel genérico, ou seja, padrão,
possuindo suporte a uma grande variedade de dispositivos de hardware.
Saber como customizar o kernel é uma das primeiras tarefas que um
administrador de sistemas deve saber. Este processo é normalmente simples de
ser executado e pode trazer um grande ganho ao sistema. A forma mais simples
de alterar o kernel sem exigir sua recompilação é a utilização da interface sysctl.
5.2 Sysctl
O programa Sysctl (8) faz uso da função sysctl para retornar ou setar valores
para o kernel. Os valores retornados ou setados para o kernel são descritos
através de uma variável especial, chamada de Management Information Base
(MIB), descrita como conjuntos de strings separados por pontos.
Sysctl é uma ferramenta muito poderosa, pois em muitas vezes permite que
administradores de sistemas resolvam problemas de performance sem a
necessidade de recompilar o kernel. Por outro lado, todo este poder permite ao
administrador causar danos a programas que estão em memória.
Para exibir todas as sysctl do sistema, basta utilizar o comando:
#sysctl –A
Caso queira uma descrição ao invés da exibição dos valores, utilize o comando:
#sysctl –d –A
77
5.2.1 Sysctl MIBs
Como foi dito anteriormente, a sysctl é organizada na forma de uma MIB,
possuindo categorias distintas. A tabela a seguir mostra as categorias raízes da
MIB das sysctl.
Sysctl Função
Kern Funções e características do kernel
Vm Sistema de memória virtual
Vfs Sistema de arquivos
Net Rede
Debug Debug
Hw Hardware
machdep Dependências do micro
User Informações de interface da Userland
P1003_1b Comportamento POSIX
Security Atributos de segurança do kernel
Dev Informações de drivers
Cada uma das categorias mencionadas possui outras subdivisões. Para exibir
todas as sysctl de uma única categoria, basta utilizar o comando #sysctl
<categoria>, por exemplo:
#sysctl user
#sysctl kern.bootfile
kern.bootfile: /boot/kernel/kernel
#sysctl hw.model
hw.model: Intel(R) Core(TM)2 Duo CPU T7100 @ 1.80GHz
# sysctl hw.model=AMD
sysctl: oid 'hw.model' is read only
As que não são marcadas com o atributo de somente leitura podem ser
alteradas através do comando sysctl seguida do nome completo da sysctl o sinal
de igual e o valor desejado.
#sysctl kern.securelevel=1
78
Para maiores informações sobre sysctl, verifique sua manpage.
#kldstat
Id Refs Address Size Name
1 4 0xc0400000 b6dfe0 kernel
Cada módulo carregado possui diversos submódulos, que podem ser exibidos
através do comando kldstat –v. O kernel por si só carrega diversos submódulos,
portanto utilizar o comando kldstat –v trará uma saída extensa.
#kldload wlan_wep
#kldload wlan_wep
kldload: can't load wlan_wep: File exists
Este erro ocorre porque o módulo referente ao WEP já está carregado no kernel,
basta observar os submódulos carregados com a opção kdlstat –v.
79
Para descarregar um módulo, basta utilizar o comando kldunload e o nome do
módulo.
No caso do exemplo acima, se estivesse na versão 7 do FreeBSD, bastaria
digitar:
#kldunload wlan_wep
NOTA O hardware mais novo pode suportar otimizações não implementadas no kernel
GENERIC, para habilitar essas otimizações é necessário a sua inclusão e após, a
compilação do novo kernel.
80
Para isso o FreeBSD fornece algumas ferramentas, como o dmesg, sysctl,
uname e pciconf.
NOTA Antes de prosseguirmos é necessário que tenha ficado clara a diferença entre options
e pseudodevices. Ambos são independentes de hardware, mas a grande diferença
entre eles é que o pseudodevice irá aparecer no sistema como um device, como por
exemplo a interface de loopback da rede, que é apresentada como lo0.
81
PAE: Exemplo de arquivo de configuração do kernel para equipamentos
com mais de 4GB de memória RAM.
NOTA O arquivo NOTES deve ser utilizado apenas para encontrar configurações específicas
da plataforma escolhida, não deve ser compilado, pois várias opções existentes são
conflitantes entre sim.
Existe também um arquivo NOTES que é independente da plataforma, localizado em
/usr/src/sys/conf/NOTES
#
# GENERIC -- Generic kernel configuration file for
FreeBSD/i386
#
# For more information on this file, please read the
config(5) manual page,
# and/or the handbook section on Kernel Configuration Files:
#
#http://www.FreeBSD.org/doc/en_US.ISO8859-
1/books/handbook/kernelconfig-config.html
#
# The handbook is also available locally in
/usr/share/doc/handbook
# if you've installed the doc distribution, otherwise always
see the
# FreeBSD World Wide Web server (http://www.FreeBSD.org/)
for the
# latest information.
#
# An exhaustive list of options and more detailed
explanations of the
# device lines is also present in the ../../conf/NOTES and
NOTES files.
# If you are in doubt as to the purpose or necessity of a
line, check first
# in NOTES.
#
# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.519.2.7 2010/01/12
06:00:56 brooks Exp $
cpu I486_CPU
cpu I586_CPU
cpu I686_CPU
82
CPU: Intel(R) Pentium(R) 4 CPU 1.80GHz (1799.80-MHz 686-
class CPU)
cpu0: <ACPI CPU> on acpi0
p4tcc0: <CPU Frequency Thermal Control> on cpu0
Note que a saída do comando informa o tipo, ou seja, CPU “686-class CPU”.
Dessa forma, podemos manter no arquivo de configuração, apenas a linha
referente ao tipo 686.
Logo abaixo encontramos todas as opções que são suportadas pelo kernel
GENERIC.
NOTA Todas as opções listadas vão depender da sua necessidade. Durante o momento da
configuração do kernel é possível retirar ou acrescentar opções, conforme as
necessidades do ambiente.
Estas opções controlam como o FreeBSD irá realizar seu escalonamento interno
e qual será a forma de tratamento das threads.
1
Mais informações sobre a utilização do SCTP e seus ganhos como um protocolo de transporte
podem ser obtidas através da RFC 3286.
83
options UFS_GJOURNAL # Enable gjournal-based UFS
journaling
84
O FreeBSD oferece nativamente três sistemas de filtragem de pacotes, o ipfw,
ipfilter e o PF. Ambos possuem suas vantagens e desvantagens.
Para habilitar o ipfw basta adicionar as seguintes linhas:
O parâmetro acima é suficiente para ativar o suporte ao uso do IPFW. Mas para
seu bom funcionamento é necessário adicionar mais algumas linhas:
options DUMMYNET
85
options IPSTEALTH
Se seu servidor for executar algum tipo de serviço web, o FreeBSD dispõe de
alguns parâmetros com o objetivo de instruir o kernel a pré-processar as
conexões entrantes em seu sistema, reduzindo assim em alguns milisegundos o
tempo necessário para o estabelecimento de cada conexão. Estas opções
funcionam muito bem em conjunto com o servidor Apache.
options ACCEPT_FILTER_DATA
options ACCEPT_FILTER_HTTP
options DEVICE_POLLING
NOTA As opções de device polling são suportadas somente pelas seguintes interfaces
de rede: bge, dc, em, fwe, fwip, fxp, ixgb, nfe, nge, re, rl, sf, sis, ste, stge, vge, vr
e xl
options HZ=100
O FreeBSD também possui condições de ser utilizado como uma bridge entre
duas interfaces de rede, a principal característica de uma bridge é que ela mão
pussui IP em suas interfaces, as vantagens de sua utilização, são por exemplo,
na construção de firewalls, visto que pode-se configurar uma bridge para atuar
como filtro de pacotes e alocá-la em qualquer ponto da rede sem que seja
necessário nenhum tipo de configuração da mesma. Para habilitar este suporte
basta habilitar o parâmetro:
options BRIDGE
86
# Bus support.
device acpi
device eisa
device pci
# Floppy drives
device fdc
# SCSI Controllers
device ahb # EISA AHA1742 family
device ahc # AHA2940 and onboard AIC7xxx
devices
options AHC_REG_PRETTY_PRINT # Print register
bitfields in debug
# output. Adds ~128k to driver.
device ahd # AHA39320/29320 and onboard
AIC79xx devices
options AHD_REG_PRETTY_PRINT # Print register
bitfields in debug
# output. Adds ~215k to driver.
device amd # AMD 53C974 (Tekram DC-390(T))
device hptiop # Highpoint RocketRaid 3xxx series
device isp # Qlogic family
#device ispfw # Firmware for QLogic HBAs-
normally a module
device mpt # LSI-Logic MPT-Fusion
#device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (newer chipsets
+ those of `ncr')
device trm # Tekram DC395U/UW/F DC315U
adapters
87
device stg # TMC 18C30/18C50
# SCSI peripherals
device scbus # SCSI bus (required for SCSI)
device ch # SCSI media changers
device da # Direct Access (disks)
device sa # Sequential Access (tape etc)
device cd # CD
device pass # Passthrough device (direct SCSI
access)
device ses # SCSI Environmental Services (and
SAF-TE)
# RAID controllers
device aac # Adaptec FSA RAID
device aacp # SCSI passthrough for aac
(requires CAM)
device ida # Compaq Smart RAID
device mfi # LSI MegaRAID SAS
device mlx # Mylex DAC960 family
device pst # Promise Supertrak SX6000
device twe # 3ware ATA RAID
88
# syscons is the default console driver, resembling an SCO
console
device sc
# Parallel port
device ppc
device ppbus # Parallel port bus (required)
device lpt # Printer
device plip # TCP/IP over parallel
device ppi # Parallel port interface device
#device vpo # Requires scbus and da
# PCI Ethernet NICs that use the common MII bus controller
code.
89
# NOTE: Be sure to keep the 'device miibus' line in order to
use these NICs!
device miibus # MII bus support
device ae # Attansic/Atheros L2 FastEthernet
device age # Attansic/Atheros L1 Gigabit
Ethernet
device alc # Atheros AR8131/AR8132 Ethernet
device ale # Atheros AR8121/AR8113/AR8114
Ethernet
device bce # Broadcom BCM5706/BCM5708 Gigabit
Ethernet
device bfe # Broadcom BCM440x 10/100 Ethernet
device bge # Broadcom BCM570xx Gigabit
Ethernet
device dc # DEC/Intel 21143 and various
workalikes
device et # Agere ET1310 10/100/Gigabit
Ethernet
device fxp # Intel EtherExpress PRO/100B
(82557, 82558)
device jme # JMicron JMC250 Gigabit/JMC260
Fast Ethernet
device lge # Level 1 LXT1001 gigabit Ethernet
device msk # Marvell/SysKonnect Yukon II
Gigabit Ethernet
device nfe # nVidia nForce MCP on-board
Ethernet
device nge # NatSemi DP83820 gigabit Ethernet
#device nve # nVidia nForce MCP on-board
Ethernet Networking
device pcn # AMD Am79C97x PCI 10/100
(precedence over 'le')
device re # RealTek 8139C+/8169/8169S/8110S
device rl # RealTek 8129/8139
device sf # Adaptec AIC-6915 (``Starfire'')
device sis # Silicon Integrated Systems SiS
900/SiS 7016
device sk # SysKonnect SK-984x & SK-982x
gigabit Ethernet
device ste # Sundance ST201 (D-Link DFE-550TX)
device stge # Sundance/Tamarack TC9021 gigabit
Ethernet
device tl # Texas Instruments ThunderLAN
device tx # SMC EtherPower II (83c170
``EPIC'')
device vge # VIA VT612x gigabit Ethernet
device vr # VIA Rhine, Rhine II
device wb # Winbond W89C840F
device xl # 3Com 3c90x (``Boomerang'',
``Cyclone'')
90
# ISA Ethernet NICs. pccard NICs included.
device cs # Crystal Semiconductor CS89x0 NIC
# 'device ed' requires 'device miibus'
device ed # NE[12]000, SMC Ultra, 3c503,
DS8390 cards
device ex # Intel EtherExpress Pro/10 and
Pro/10+
device ep # Etherlink III based cards
device fe # Fujitsu MB8696x based cards
device ie # EtherExpress 8/16, 3C507, StarLAN
10 etc.
device sn # SMC's 9000 series of Ethernet
chips
device xe # Xircom pccard Ethernet
# Pseudo devices.
device loop # Network loopback
device random # Entropy device
device ether # Ethernet support
device vlan # 802.1Q VLAN support
device tun # Packet tunnel.
device pty # BSD-style compatibility pseudo
ttys
device md # Memory "disks"
device gif # IPv6 and IPv4 tunneling
91
device faith # IPv6-to-IPv4 relaying
(translation)
device firmware # firmware assist module
# USB support
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
device ehci # EHCI PCI->USB interface (USB 2.0)
device usb # USB Bus (required)
#device udbp # USB Double Bulk Pipe devices
device uhid # "Human Interface Devices"
device ukbd # Keyboard
device ulpt # Printer
device umass # Disks/Mass storage -
Requires scbus and da
device ums # Mouse
device urio # Diamond Rio 500 MP3 player
# USB Wireless
92
device rum # Ralink Technology RT2501USB
wireless NICs
device uath # Atheros AR5523 wireless NICs
device ural # Ralink Technology RT2500USB
wireless NICs
device zyd # ZyDAS zb1211/zb1211b wireless
NICs
# FireWire support
device firewire # FireWire bus code
#device sbp # SCSI over FireWire (Requires
scbus and da)
device fwe # Ethernet over FireWire (non-
standard!)
device fwip # IP over FireWire (RFC 2734,3146)
device dcons # Dumb console driver
device dcons_crom # Configuration ROM for dcons
E finalmente, dê início a compilação do novo kernel. Para isso você deve chamar
o comando make, informando o nome do seu novo kernel, utilizando a seguinte
sintaxe
#cd /usr/src
#make buildkernel KERNCONF=NOME_DO_KERNEL
------------------------------------------------------------
--
>>> Kernel build for GENERIC started on Sun Feb 28 20:13:04
BRT 2010
------------------------------------------------------------
--
===> GENERIC
mkdir -p /usr/obj/usr/src/sys
------------------------------------------------------------
--
93
>>> stage 1: configuring the kernel
------------------------------------------------------------
--
cd /usr/src/sys/i386/conf;
PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/t
mp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/usr/games:/usr
/obj/usr/src/tmp/usr/sbin:/usr/obj/usr/src/tmp/usr/bin:/usr/
obj/usr/src/tmp/usr/games:/sbin:/bin:/usr/sbin:/usr/bin
config -d /usr/obj/usr/src/sys/GENERIC
/usr/src/sys/i386/conf/GENERIC
Kernel build directory is /usr/obj/usr/src/sys/GENERIC
Don't forget to do ``make cleandepend && make depend''
------------------------------------------------------------
--
>>> stage 2.1: cleaning up the object tree
------------------------------------------------------------
--
cd /usr/obj/usr/src/sys/GENERIC; MAKEOBJDIRPREFIX=/usr/obj
MACHINE_ARCH=i386 MACHINE=i386 CPUTYPE=
GROFF_BIN_PATH=/usr/obj/usr/src/tmp/legacy/usr/bin
GROFF_FONT_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/groff_
font
GROFF_TMAC_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/tmac
_SHLIBDIRPREFIX=/usr/obj/usr/src/tmp VERSION="FreeBSD 8.0-
RELEASE i386 800107" INSTALL="sh /usr/src/tools/install.sh"
PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/t
mp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/usr/games:/usr
/obj/usr/src/tmp/usr/sbin:/usr/obj/usr/src/tmp/usr/bin:/usr/
obj/usr/src/tmp/usr/games:/sbin:/bin:/usr/sbin:/usr/bin
NO_CTF=1 make KERNEL=kernel cleandir
.
.
.
.
------------------------------------------------------------
--
94
>>> Kernel build for BSDAFPU started on Mon Mar 1 12:04:02
BRT 2010
------------------------------------------------------------
--
===> BSDAFPU
mkdir -p /usr/obj/usr/src/sys
------------------------------------------------------------
--
>>> stage 1: configuring the kernel
------------------------------------------------------------
--
cd /usr/src/sys/amd64/conf;
PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/t
mp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/usr/games:/usr
/obj/usr/src/tmp/usr/sbin:/usr/obj/usr/src/tmp/usr/bin:/usr/
obj/usr/src/tmp/usr/games:/sbin:/bin:/usr/sbin:/usr/bin
config -d /usr/obj/usr/src/sys/BSDAFPU
/usr/src/sys/amd64/conf/BSDAFPU
/usr/src/sys/amd64/conf/BSDAFPU: unknown option
"tetse123"
*** Error code 1
Stop in /usr/src.
*** Error code 1
Stop in /usr/src.
Repare na mensagem unknow option “tetse123”, esta foi uma opção adicionada
ao arquivo de configuração do kernel que não é suportada por ele. Basta
remover a opção do arquivo de configuração e recompilar o kernel.
Ao final da execução desses passos seu novo kernel está pronto para ser
utilizado, basta reiniciar o servidor para que ele entre em execução.
95
6. Atualização do FreeBSD
Vital para a manutenção da estabilidade e confiança do FreeBSD, sua
atualização, por incrível que pareça, é uma tarefa comum e simples. Mas antes
de começarmos a atualizar o sistema, é necessário conhecermos o
funcionamento das versões do FreeBSD.
6.1.1 Releases
Uma release é simplesmente uma cópia da versão mais estável do FreeBSD em
um momento particular do tempo. Possui um número convencional, como 5.5,
6.3, 7.0 entre outros. De três a quatro vezes no ano, o Release Engineering team
solicita aos desenvolvedores focarem nos problemas de maior importância ao
invés de realizarem outras mudanças. Durante este período várias Releases
Candidates são liberadas para testes, tanto da comunidade quanto da equipe do
FreeBSD. Quando a equipe do FreeBSD está satisfeita com seus próprios testes
e da comunidade, dão um número para esta release e ela é liberada. Após a
equipe de desenvolvimento volta aos trabalhos regulares do projeto.
6.1.3 FreeBSD-current
FreeBSD-current ou apenas -current é o nome da árvore de desenvolvimento do
FreeBSD. Esta versão é recomendável apenas para desenvolvedores e usuários
interessados em testar suas novas funcionalidades. É altamente recomendável
não utilizar versões –current em servidores de produção.
6.1.4 FreeBSD-stable
FreeBSD-stable ou apenas –stable é a versão mais estável do FreeBSD. Trata-
se de uma versão –current que foi arduamente testada pelos seus
desenvolvedores e vários usuários ao redor do mundo. Esta versão é a
recomendada para a maioria dos servidores em produção.
96
6.2 Métodos de atualização.
O FreeBSD dispõe de três métodos diferentes de atualização: sysinstall,
atualização binária e atualização a partir do código fonte. Dentre essas três
abordaremos apenas as atualizações binárias e pelo código fonte.
KeyPrint 8006.........
KeyPrint é uma assinatura criptográfica do servidor de atualização para
garantir sua integridade.
ServerName update.FreeBSD.org
Esta linha indica ao freebsd-update onde buscar as atualizações.
Mailto root
Se o processo de atualização foi agendado, como será descrito
posteriormente, esta linha faz com que o utilitário freebsd-update envie uma
mensagem de e-mail ao destinatário escolhido em caso de sucesso ou fracasso
na atualização.
KeepModifiedMetadata yes
Não deixa que o freebsd-update faça alterações nas permissões que
porventura foram alteradas em alguns arquivos.
97
Para a atualização da versão mais recente da errata branch, basta digitar:
#freebsd-update fetch
#freebsd-update install
Isto é tudo, basta reiniciar o sistema para ter a mais nova versão errata branch.
Caso ocorra algum problema após a instalação das atualizações, basta utilizar:
#freebsd-update rollback
98
cvs-supfile: Este supfile mantém todo o repositório de código fonte do
FreeBSD, mas é recomendado apenas para desenvolvedores.
doc-supfile: Este arquivo informa ao csup para atualizar a documentação
local do sistema (FAQ, Handbook e alguns artigos).
gnats-supfile: Irá criar uma cópia local dos relatórios de problemas
(Problem Report – PR).
ports-supfile: Este supfile atualiza a árvore do ports para a última versão.
stable-supfile: Atualiza o código fonte para a última versão estável.
standard-supfile: Este supfile irá atualizar os fontes do sistema para a
última versão do sistema instalado.
www-supfile: Faz o download da última versão do website do FreeBSD
Os vários componentes que podem ser atualizados via csup são chamados
também de coleções, por exemplo, coleção do ports, coleção da documentação,
coleção dos fontes. O objetivo deste capítulo é a atualização da coleção dos
fontes.
6.4.1 Stable-supfile
Baseado no arquivo de exemplo, um arquivo supfile deve ser:
*default host=cvsup.br.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_8
*default delete use-rel-sulfix
*defaul compress
src-all
*default host=cvsup.br.FreeBSD.org
*default base=/var/db
Esta linha indica ao csup onde armazenar os arquivos de status, incluindo uma
lista de arquivos baixados. Isto acelera as próximas atualizações. Todas as
informações geradas pelo csup são armazenadas em /var/db/sup
*default prefix=/usr
Esta entrada direciona o csup a colocar todos os arquivos de códigos fonte que
ele atualiza no diretório indicado. Não é recomendado alterar este parâmetro,
somente em casos específicos onde os fontes não estão armazenados em
/usr/src.
99
*default release=cvs tag=RELENG_8
Esta entrada contém duas informações, a primeira indica que o csup deverá
atualizar o código fonte para a versão estável no repositório (default
release=cvs). Essa opção é que garante que após a atualização do sistema, este
estará com as últimas e mais estáveis versões possíveis, portanto esta opção
nunca deve ser alterada. A segunda informação (tag=RELENG_8) indica para
qual versão do FreeBSD o csup deverá atualizar. Nesta opção a indicação feita
ao csup é que este deve atualizar para a última versão estável disponível do
FreeBSD 8, tornando o sistema STABLE.
Para instalar uma errata branch da versão 8.0, a tag é: tag=RELENG_8_0
Caso queira atualizar o sistema para a versão –current, utilize a seguinte tag:
*default release=cvs tag=.
src-all
Por fim, esta linha indica ao sistema que todos os fontes serão atualizados, sem
nenhuma excessão. Caso exista a necessidade de atualizar algum módulo em
específico, seja pela vontade do administrador ou mesmo por uma descoberta
de vulnerabilidade, basta comentar a linha src-all e descomentar as opções que
necessitar:
#src-base
#src-bin
#src-contrib
#src-etc
#src-games
#src-gnu
#src-include
#src-kerberos5
#src-kerberosIV
#src-lib
#src-libexec
#src-release
#src-sbin
#src-share
#src-sys
#src-tools
#src-usrbin
#src-usrsbin
#src-crypto
#src-eBones
100
#src-secure
#src-sys-crypto
#csup -g -L 2 /etc/supfile
#fastest_cvsup -c br
>> Querying servers in countries: br
--> Connecting to cvsup.br.freebsd.org [143.106.51.13]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 4.91 ms
--> Connecting to cvsup2.br.freebsd.org [143.106.10.150]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 1.19 ms
--> Connecting to cvsup3.br.freebsd.org [146.164.53.65]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 11.61 ms
101
#csup -g -h `fastest_cvsup -c br -Q` -L2 /etc/supfile
#cd /usr/src
#make buildworld
# make buildworld
------------------------------------------------------------
--
>>> World build started on Sun Feb 28 14:52:49 BRT 2010
------------------------------------------------------------
--
------------------------------------------------------------
--
>>> Rebuilding the temporary build tree
------------------------------------------------------------
--
rm -rf /usr/obj/usr/src/tmp
mkdir -p /usr/obj/usr/src/tmp/lib
mkdir -p /usr/obj/usr/src/tmp/usr
mkdir -p /usr/obj/usr/src/tmp/legacy/usr
mtree -deU -f /usr/src/etc/mtree/BSD.usr.dist -p
/usr/obj/usr/src/tmp/legacy/usr >/dev/null
102
mtree -deU -f /usr/src/etc/mtree/BSD.usr.dist -p
/usr/obj/usr/src/tmp/usr >/dev/null
mtree -deU -f /usr/src/etc/mtree/BSD.include.dist -p
/usr/obj/usr/src/tmp/usr/include >/dev/null
ln -sf /usr/src/sys /usr/obj/usr/src/tmp
------------------------------------------------------------
--
>>> stage 1.1: legacy release compatibility shims
------------------------------------------------------------
--
------------------------------------------------------------
--
>>> stage 1.2: bootstrap tools
------------------------------------------------------------
--
#cd /usr/src
#make buildkernel KERNCONF=NOME_DO_KERNEL
#make installkernel KERNCONF=NOME_DO_KERNEL
103
Com estes passos realizados sem nenhum problema, é hora de prepararmos o
ambiente para a instalação do mundo.
NOTA Mais uma vez alertamos para a importância de se ter um backup completo do diretório
/etc antes de iniciar o uso da ferramenta mergemaster.
#mergemaster -p
*** The directory specified for the temporary root
environment,
/var/tmp/temproot, exists. This can be a security risk
if untrusted
users have access to the system.
Nesta tela pressione enter para continuar, você irá se deparar com uma tela
assim:
+++ ./etc/group 2009-08-03 05:13:06.000000000 -0300
@@ -1,6 +1,6 @@
-# $FreeBSD: src/etc/group,v 1.35.10.1.2.1 2009/10/25
01:10:29 kensmith Exp $
+# $FreeBSD: src/etc/group,v 1.35.10.1 2009/08/03 08:13:06
kensmith Exp $
#
-wheel:*:0:root,marcus
+wheel:*:0:root
daemon:*:1:
104
kmem:*:2:
sys:*:3:
@@ -29,4 +29,3 @@
www:*:80:
nogroup:*:65533:
nobody:*:65534:
-marcus:*:1001:
Preste muita atenção, pois ao se instalar um novo arquivo, seu usuário será
deletado. Neste caso as opções mais recomendadas são manter o arquivo
original ou utilizar a opção m e explorar o arquivo linha a linha, inserindo as
linhas desejadas.
105
operator:*:2:5::0:0:System &:/:/usr/sbin/nologin
@@ -21,4 +21,3 @@
pop:*:68:6::0:0:Post Office Owner:/nonexistent:/usr/sbin/nologin
www:*:80:80::0:0:World Wide Web
Owner:/nonexistent:/usr/sbin/nologin
nobody:*:65534:65534::0:0:Unprivileged
user:/nonexistent:/usr/sbin/nologin
-marcus:$1$VMdPrGYY$MfGH6VOrxaz0qMNIZU/0H1:1001:1001::0:0:User
&:/home/marcus:/bin/sh
Novamente, muito cuidado com este arquivo, pois você poderá perder sua conta
de usuário bem como a senha da conta de root.
Feita esta primeira comparação com o mergemaster, é hora de instalar o mundo.
#shutdown now
#mount -a
#cd /usr/src
#make installworld
#mergemaster -Ui
106
#reboot
# make check-old
>>> Checking for old files
/usr/share/man/man8/rc.early.8.gz
/usr/share/man/man3/pselect.3.gz
>>> Checking for old libraries
>>> Checking for old directories
To remove old files and directories run 'make delete-old'.
To remove old libraries run 'make delete-old-libs'.
107
7. Atualizando a árvore do ports
Assim como o FreeBSD, a árvore do ports é continuamente atualizada com
novas versões de software. Para realizar a atualização da árvore, o FreeBSD
disponibiliza duas ferramentas, a primeira e já conhecida, csup através do
arquivo ports-supfile e também a ferramenta portsnap, desenvolvida por Colin
Percival e disponível na base do sistema desde sua versão 6.2.
A escolha de cada ferramenta fica a cargo de cada administrador, mas a partir
do momento que uma delas foi escolhida, apenas esta poderá ser utilizada para
realizar as atualizações. Aqui abordaremos a ferramenta portsnap.
7.1 Portsnap
O portnsnap possui algumas vantagens em relação ao csup, que deixam a vida
dos administradores de sistema muito mais fácil. Algumas dessas vantagens
são:
Todas as atualizações são assinadas criptograficamentes aumentando a
segurança;
Não requer nenhuma configuração e utiliza poucos comandos para
atualizar toda a árvore;
Está incluso na base do FreeBSD, não sendo necessária a instalação de
softwares de terceiros;
Utiliza uma menor quantidade de recursos, tanto de rede quanto de disco
ao se comparar com o protocolo CVSup.
SERVERNAME=portsnap.freebsd.org
Esta linha indica ao portsnap de qual servidor ele fará o download das
atualizações. O servidor portsnap.freebsd.org é atualmente um conjunto de
servidores. Futuramente o projeto FreeBSD poderá adicionar mirrors regionais,
assim como para os packages e também para o CVSup. Quando isto acontecer,
o servidor regional mais próximo deverá ser adicionado nesta linha.
KEYPRINT=9b5feee6d69f170e3dd0a2c8e469ddbd64f13f978f2f3aede40
c98633216c330
Esta é uma chave criptográfica para o servidor portsnap. O portsnap assina
criptograficamente as atualizações para garantir sua autenticidade e integridade.
108
7.1.3 Utilizando o portsnap
A atualização via portsnap, assim como no csup, é incremental, o que significa
que não é necessário fazer o download de toda a árvore do ports a cada
atualização.
Quando o portsnap é utilizado pela primeira vez, é baixado de um servidor
portsnap o último snapshot de toda a árvore e depois é extraído em /usr/ports.
Este procedimento irá baixar um arquivo de aproximadamente 61MB. Os
comandos para sua execução são:
#portsnap fetch
#portsnap extract
NOTA É altamente recomendável que antes de atualizar qualquer port instalado, um backup
de seus arquivos de configuração seja feito.
109
Para instalar o portmaster:
#cd /usr/ports/ports-mgmt/portmaster
#make install clean
#portmaster -l
Uma lista será exibida com todos os ports instalados no sistema. Esta lista é
dividida em quatro sublistas, sendo elas: root ports, trunk ports, branch ports e
leaf ports.
Root ports não possuem dependências de nenhum outro software e
também não são dependência de outros softwares. Por exemplo, o
próprio portmaster é um root port. Alguns outros aplicativos, como o sudo,
bash e zip são root ports.
Trunk ports não possuem dependências, mas são dependências de
outros softwares. Geralmente são bibliotecas compartilhadas, scripts e
linguagens de programação. Para ilustrar exemplos desta categoria
podemos citar a linguagem Perl.
Branch ports possuem dependências e também são dependências.
Podemos encontrar nesta divisão o apache, o Java e o sistema x.
Leaf ports apenas possuem dependências, mas não são dependências
de nenhum outro software. Aqui podemos encontrar softwares como
editores de texto, navegadores web, clientes de chat entre outros.
lopez# portmaster -l
===>>> Root ports (No dependencies, not depended on)
===>>> bigreqsproto-1.0.2
===>>> inputproto-1.5.0
===>>> libcheck-0.9.6
===>>> libtool-2.2.6a
===>>> portmaster-2.19
===>>> xcmiscproto-1.1.2
===>>> xf86bigfontproto-1.1.2
===>>> xorg-macros-1.2.1
===>>> 8 root ports
110
===>>> pkg-config-0.23_1
===>>> png-1.2.40
===>>> printproto-1.0.4
===>>> python26-2.6.2_3
===>>> xextproto-7.0.5
===>>> 13 trunk ports
111
===>>> help2man-1.36.4_3
===>>> libxslt-1.1.26
===>>> php5-extensions-1.3
===>>> php5-gd-5.2.11
===>>> php5-gettext-5.2.11
===>>> porteasy-2.8.4
===>>> xtrans-1.2.3
===>>> 9 leaf ports
#portmaster -e nome_do_port
#portmaster -L
===>>> libcheck-0.9.6
===>>> New version available: libcheck-0.9.8
===>>> php5-5.2.11
===>>> New version available: php5-5.2.12
#portmaster php5-5.2.11
112
Mesmo assim ainda existem chances do processo de atualização falhar. O
portmaster durante este processo desinstala a versão antiga do port a ser
atualizado e depois instala a versão nova, criando assim uma janela de tempo
entre o port ser desinstalado e a nova versão instalada. Para previnir qualquer
eventualidade neste processo, pode-se executar o programa com a opção -b que
irá manter um backup do port desinstalado em /usr/ports/packages/portmaster-
backup/
Após a atualização ser completada com êxito, caso tenha utilizado o comando
com a opção -b limpe o diretório de backup para evitar uso desnecessário do
disco.
#portmaster -r <nome_do_port>
Exemplificando:
#portmaster -r expat-2.0.1
===>>> The following actions will be taken if you choose to
proceed:
Upgrade expat-2.0.1 to expat-2.0.1_1
Re-install apache-2.0.63_3
Re-install php5-5.2.12
Upgrade php5-ctype-5.2.11 to php5-ctype-5.2.12
Upgrade php5-dom-5.2.11 to php5-dom-5.2.12
Upgrade php5-spl-5.2.11 to php5-spl-5.2.12
Upgrade php5-pcre-5.2.11 to php5-pcre-5.2.12
Upgrade php5-simplexml-5.2.11 to php5-simplexml-
5.2.12
Re-install php5-extensions-1.3
Upgrade php5-iconv-5.2.11 to php5-iconv-5.2.12
Upgrade php5-pdo-5.2.11 to php5-pdo-5.2.12
Upgrade php5-pdo_sqlite-5.2.11 to php5-pdo_sqlite-
5.2.12
Upgrade php5-sqlite-5.2.11 to php5-sqlite-5.2.12
113
Upgrade php5-json-5.2.11 to php5-json-5.2.12
Upgrade php5-tokenizer-5.2.11 to php5-tokenizer-
5.2.12
Upgrade php5-filter-5.2.11 to php5-filter-5.2.12
Upgrade php5-hash-5.2.11 to php5-hash-5.2.12
Upgrade php5-posix-5.2.11 to php5-posix-5.2.12
Upgrade php5-xml-5.2.11 to php5-xml-5.2.12
Upgrade php5-xmlreader-5.2.11 to php5-xmlreader-
5.2.12
Upgrade php5-xmlwriter-5.2.11 to php5-xmlwriter-
5.2.12
Upgrade php5-session-5.2.11 to php5-session-5.2.12
Upgrade php5-gd-5.2.11 to php5-gd-5.2.12
Upgrade jpeg-7 to jpeg-8
Upgrade png-1.2.40 to png-1.2.42
Upgrade freetype2-2.3.9_1 to freetype2-2.3.11
Upgrade php5-gettext-5.2.11 to php5-gettext-5.2.12
#cd /var/db/pkg/nome_do_port
#touch +IGNOREME
#portmaster -clean-distfiles
#portmaster -clean-distfiles-all
114
Outro problema que acontece é quando uma instalação é feita sem o comando
clean no final, isso acaba deixando a pasta work dentro da árvore do ports, o que
causa um aumento no consumo de espaço em disco. Para resolver este
problema a própria árvore do ports possui sua solução:
#cd /usr/ports
#make clean NOCLEANDEPENDS=Yes
Este comando fará recursão em toda a árvore do ports e realiza um make clean
para cada port com o diretório work.
Com estas ferramentas você será capaz de deixar seu sistema sempre
atualizado e de forma segura.
115
8. DNS Bind
8.1 Introdução
O DNS (Domain Name Server) é um serviço de mapeamento de nomes em
endereços IP (e vice-versa) que dá vida à internet como conhecemos.
Aplicações utilizam o endereço IP nas suas comunicações. Devido à difícil
memorização dos endereços IP, foi criado o serviço de tradução DNS.
No inicio da internet, sistemas operacionais mantinham um arquivo texto
(/etc/hosts) contendo uma lista de nomes e endereços IP de todos os hosts da
internet . Com o crescimento da internet esse método tornou-se inviável. Para
solucionar o problema criou-se um banco de dados hierárquico e distribuído que
contem informações de mapeamento de endereços IP. Assim surgia um dos
serviços mais importantes da internet, o servidor DNS.
Vejamos o diagrama abaixo para entendermos melhor a hierarquia dos
servidores dns.
Retirado de http://bio3d.colorado.edu/tor/sadocs/dns/dns-1.png
Veremos uma implementação do servidor de DNS no sistema FreeBSD. O
objetivo deste capítulo é apresentar alguns aspectos do servidor DNS e
principalmente detalhes da sua implementação no sistema FreeBSD.
116
O diretório que mantém as informações do named é /etc/namedb. Veremos a
seguir os principais arquivos.
8.2.1 named.root
Contém a lista de servidores de mais alto nível na internet (root servers). Caso o
servidor DNS local receba uma consulta que não está armazenada em seu
cache, ele pesquisa os rootservers para obter a resposta desejada para consulta
DNS.
Normalmente esse arquivo não necessita nenhuma configuração.
8.2.2 named.conf
O named.conf é o principal arquivo de configuração do servidor named. Dentro
dele podemos definir diversas diretivas que configuram o comportamento do
servidor.
Esse arquivo aceita comentários semelhante aos utilizados da linguagem C.
Podemos utilizar duas barras (//) para comentar de um determinado ponto até o
fim daquela linha ou utilizar o comentário de múltiplas linhas delimitadas por /* e
*/.
117
8.5 Configurando o named
Agora que já conhecemos alguns detalhes do named, chegou a hora de
configurá-lo para podermos entender melhor seu funcionamento.
Utilizarei como exemplo de configuração o domínio fictício aulabsd.com.br com
endereços IP 192.168.0.0/24. Baseando-se nesse exemplo, segue o arquivo
named.conf com as principais diretivas.
// Clausula options contem diversas diretivas que configuram
o comportamento
// do servidor
options {
// Define o diretório de trabalho do named.
directory "/etc/namedb";
};
118
// Abertura da clausula zone que fornece informações sobre a
zona referenciada
// A zona "." significa toda a internet, ou seja, os root
servers
// A diretiva type hint define o tipo da zona, essa é a
única zona definida
// com esse tipo, todas as outras são do tipo master ou
slave
// A diretiva file indica o arquivo que contem as
informações da zona, ou
// nesse caso os endereços dos servidores root servers na
internet
// Observe que podemos especificar as diretivas type e file
em uma linha ou
// utilizando uma linha para cada diretiva.
zone "." { type hint; file "named.root"; };
119
// xxx.aulabsd.com.br em um endereço IP 192.168.0.XX.
Lembre-se que
// alguns serviços necessitam do mapeamento reverso, ou
seja, do IP
// 192.168.0.XX -> xxx.aulabsd.com.br. Para que isso seja
possível precisamos
// da declaração da zona in-addr.arpa conforme abaixo (notem
que a declaração
// a esquerda do nome "in-addr.arpa" é justamente os 3
primeiros octetos
// da rede 192.168.0.0 porém em ordem invertida)
zone "0.168.192.in-addr.arpa" {
type master;
file "master/192.168.0.db";
};
120
7200 ; Retry
// Expire – Caso o servidor primário não possa ser
contactado no
// período de tempo estabelecido pelo expire, o servidor
secundário
// deixa de responder sobre informações dessa zona
3600000 ; Expire
// TTL para respostas negativas desta zona
14400 ; min ttl
)
// As 2 linhas abaixo definem os servidores para esta zona
@ IN NS ns1
@ IN NS ns2
// O registro MX (Mail Exchange) define o servidor de e-mail
para esta
// zona. O número 10 representa a prioridade do servidor.
Números
// menores estabelecem maior prioridade
@ IN MX 10 mx1
$TTL 14400
@ IN SOA ns1 hostmaster (
2010012502 ; Serial
86400 ; Refresh
7200 ; Retry
3600000 ; Expire
14400 ; min ttl
)
@ IN NS ns1.aulabsd.com.br.
@ IN NS ns2.aulabsd.com.br.
// Abaixo temos os registros PTR que são responsáveis pelo
mapeamento
121
// reverso (IP -> host) da zona. Notem que os nomes dos
hosts devem
// ser definidos no formato FQDN (Fully Qualifield Domain
Name, ou
// seja, a declaração é formada pelo nome + domínio com o
“.” como
// terminação.
1 IN PTR ns1.aulabsd.com.br.
2 IN PTR ns2.aulabsd.com.br.
10 IN PTR mx1.aulabsd.com.br.
12 IN PTR server1.aulabsd.com.br.
# /etc/rc.d/named start
Starting named.
Vamos analisar o log messages para verificarmos se o named
foi realmente iniciado com sucesso.
# cat /var/log/messages | grep named
Feb 25 22:34:41 vbox named[1007]: starting BIND 9.6.1-P1 -t
/var/named -u bind
Feb 25 22:34:41 vbox named[1007]: built with '--prefix=/usr'
'--infodir=/usr/share/info' '--mandir=/usr/share/man' '--
enable-threads' '--disable-ipv6' '--enable-getifaddrs' '--
disable-linux-caps' '--with-openssl=/usr' '--with-
randomdev=/dev/random' '--without-idn' '--without-libxml2'
Feb 25 22:34:41 vbox named[1007]: command channel listening
on 127.0.0.1#953
Feb 25 22:34:41 vbox named[1007]: command channel listening
on ::1#953
Feb 25 22:34:41 vbox named[1007]: running
122
Podemos configurar um servidor para atuar como secundário de um domínio
qualquer através de diretivas definidas no named.conf. Para exemplificar melhor
essa configuração, suponhamos que nosso servidor é secundário do domínio
aulabsd2.com.br (zona direta e reversa) que utiliza a classe de IP
192.168.10.0/24 e que possui o servidor primário com o IP 192.168.10.10. Para
configurarmos nosso servidor para ser o secundário devemos incluir as linhas
abaixo no named.conf:
zone "aulabsd2.com.br" {
// A diretiva type indica que este servidor atua como slave
e deve sincronizar
// as informações desta zona com os servidores indicados na
diretiva masters
type slave;
file "slave/aulabsd2.com.br.db";
masters { 192.168.10.10; };
};
zone "10.168.192.in-addr.arpa" {
type master;
file "slave/192.168.10.db";
masters { 192.168.10.10; };
};
options {
....
// A diretiva abaixo configura o named globalmente para
não
// permitir transferências de zonas
allow-transfer {"none";};
};
...
zone "aulabsd2.com.br" in{
....
// A diretiva abaixo permite o servidor 192.168.0.1
transferir
// as informações apenas desta zona.
allow-transfer (192.168.0.1;);
};
...
zone "10.168.192.in-addr.arpa" in{
....
allow-transfer (192.168.0.1;);
};
123
8.7 Testando nosso servidor dns
O FreeBSD disponibiliza poderosas ferramentas para nos auxiliar a executar
pesquisas (queries) em nosso servidor DNS para fins de testes.
Utilizaremos o comando host para sabermos se nosso servidor está resolvendo
o nome ns1.aulabsd.com.br.
# host ns1.aulabsd.com.br
ns1.aulabsd.com.br has address 192.168.0.1
# host 192.168.0.1
1.0.168.192.in-addr.arpa domain name pointer
ns1.aulabsd.com.br.
Como vimos acima, o comando host foi utilizado para fazer uma consulta
simples ao nosso servidor DNS e podemos constatar que nosso servidor
respondeu as consultas adequadamente.
Outro aplicativo muito útil é o dig, que executa consultas DNS com um nível
maior de detalhamento e opções de consulta.
# dig www.aulabsd.com.br
;; QUESTION SECTION:
;www.aulabsd.com.br. IN A
;; ANSWER SECTION:
www.aulabsd.com.br. 14400 IN CNAME
server1.aulabsd.com.br.
server1.aulabsd.com.br. 14400 IN A 192.168.0.12
;; AUTHORITY SECTION:
aulabsd.com.br. 14400 IN NS
ns2.aulabsd.com.br.
aulabsd.com.br. 14400 IN NS
ns1.aulabsd.com.br.
;; ADDITIONAL SECTION:
ns1.aulabsd.com.br. 14400 IN A 192.168.0.1
ns2.aulabsd.com.br. 14400 IN A 192.168.0.2
124
Podemos utilizar o dig para executar consultas reversas adicionando o
parâmetro -x
# dig -x 192.168.0.12
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59803
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1,
ADDITIONAL: 1
;; QUESTION SECTION:
;12.0.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
12.0.168.192.in-addr.arpa. 14400 IN PTR
server1.aulabsd.com.br.
;; AUTHORITY SECTION:
0.168.192.in-addr.arpa. 14400 IN NS
ns1.aulabsd.com.br.
;; ADDITIONAL SECTION:
ns1.aulabsd.com.br. 14400 IN A 192.168.0.1
;; QUESTION SECTION:
;aulabsd.com.br. IN MX
;; ANSWER SECTION:
aulabsd.com.br. 14400 IN MX 10
mx1.aulabsd.com.br.
;; AUTHORITY SECTION:
aulabsd.com.br. 14400 IN NS
ns1.aulabsd.com.br.
aulabsd.com.br. 14400 IN NS
ns2.aulabsd.com.br.
;; ADDITIONAL SECTION:
125
mx1.aulabsd.com.br. 14400 IN A 192.168.0.10
ns1.aulabsd.com.br. 14400 IN A 192.168.0.1
ns2.aulabsd.com.br. 14400 IN A 192.168.0.2
;; QUESTION SECTION:
;www.unicamp.br. IN A
;; ANSWER SECTION:
www.unicamp.br. 3600 IN CNAME
lvs0.unicamp.br.
lvs0.unicamp.br. 3600 IN A
143.106.10.30
;; AUTHORITY SECTION:
unicamp.br. 86400 IN NS ns1.ansp.br.
unicamp.br. 86400 IN NS
ns1.unicamp.br.
unicamp.br. 86400 IN NS
ns3.unicamp.br.
;; ADDITIONAL SECTION:
ns1.unicamp.br. 3600 IN A 143.106.2.2
ns3.unicamp.br. 86400 IN A
143.106.2.133
Abaixo temos uma utilização do dig muito interessante. Através da opção trace
ligada (+trace) podemos ver todo o caminho que a consulta percorreu desde o
root server até o servidor do domínio em questão.
126
Através das informações exibidas pelo dig podemos ter uma boa idéia de como
é organizada a hierarquia dos servidores de DNS na internet.
dig +trace www.uol.com.br
; <<>> DiG 9.6.1-P1 <<>> +trace www.uol.com.br
;; global options: +cmd
. 509746 IN NS b.root-servers.net.
. 509746 IN NS j.root-servers.net.
. 509746 IN NS c.root-servers.net.
. 509746 IN NS h.root-servers.net.
. 509746 IN NS i.root-servers.net.
. 509746 IN NS g.root-servers.net.
. 509746 IN NS d.root-servers.net.
. 509746 IN NS a.root-servers.net.
. 509746 IN NS f.root-servers.net.
. 509746 IN NS k.root-servers.net.
. 509746 IN NS m.root-servers.net.
. 509746 IN NS e.root-servers.net.
. 509746 IN NS l.root-servers.net.
;; Received 500 bytes from 127.0.0.1#53(127.0.0.1) in 2 ms
127
9. Dispositivos Nativos de Segurança
#passwd toor
128
ttyv0 "/usr/libexec/getty Pc" cons25 on secure
# Virtual terminals
ttyv1 "/usr/libexec/getty Pc" cons25 on secure
ttyv2 "/usr/libexec/getty Pc" cons25 on secure
ttyv3 "/usr/libexec/getty Pc" cons25 on secure
ttyv4 "/usr/libexec/getty Pc" cons25 on secure
ttyv5 "/usr/libexec/getty Pc" cons25 on secure
ttyv6 "/usr/libexec/getty Pc" cons25 on secure
ttyv7 "/usr/libexec/getty Pc" cons25 on secure
ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure
Dentre as várias opções presentes neste arquivo, a que mais nos interesse é a
última coluna, que define o tipo de opração da console e dos terminais virtuais.
por
Supondo que logo após este login, um script mal escrito acabe causando
instabilidade ou mesmo travamento em algum processo crucial para este
ambiente, como identificar, dentre os administradores, quem foi o responsável
por esta execução? Afinal todos logam diretamente como root.
A solução para este problema é alterar a configuração de cada terminal virtual
pra insecure, o que irá impedir que um usuário logue como root diretamente.
129
Uma tentativa de login em um terminal “insecure” iria gerar uma saída parecida
com esta:
Dessa forma é possível acompanhar cada usuário que se tornou super usuário
analisando entradas em /var/log/messages:
9.3 Chflags
Todos os sistemas operacionais baseados em Unix possuem permissões dando
direitos de leitura, escrita e execução em arquivos e diretórios para o dono do
arquivo, grupo ou todos os usuários. O FreeBSD estende o esquema de
permissões utilizando as flags de arquivos, ou chflags, que atuam juntas com o
esquema já conhecido de permissões para aumentar a segurança do sistema.
Para a utilização destas flags, se faz necessário o uso do comando chflags.
O comando chflags possui sintaxe bem parecida com o comando chmod,
permitindo recursividade e até mesmo ser aplicado em links simbólicos.
Este comando, aqui identificado por chflags(1) faz uso da chamanda de sistema
chflags(2). A diferenciação numérica é feita na hora de se usar a manpage, por
exemplo, para ter acesso a manpage do comando chflags basta executar o
comando
#man chflags
Ou
#man 1 chflags
#man 2 chflags
130
A sintaxe básica do comando é
Cada chflag pode ser removida colocando-se o prefixo “no” em cada uma delas,
com exceção da chflag nodump, que para ser removida é necessário retirar o
prefixo “no”.
Segundo a manpage do comando chflags, para se remover todas as chflags de
um arquivo, utilizar o comando:
#chflags 0 <nome_do_arquivo>
131
Das chflags apresentadas, as mais utilizadas como opção de segurança em um
sistema são sappnd para arquivos de log e schg para arquivos de sistema que
não serão modificados e arquivos binários, impedindo assim que um atacante
substitua um binário legitmo por um binário adulterado.
Pois estas pastas contêm binários que são criados durante a instalação ou
atualização do sistema. Vale lembrar que para uma atualização do sistema,
estes paths devem ser desprotegidos.
#ls –lo
Ex:
#ls –lo messages
-rw-r--r-- 1 root marcus schg 13459 Feb 12 00:07 messages
132
Existem cinco níveis diferentes, -1, 0, 1, 2 e 3, onde o -1 é o nível mais inseguro
e o nível 3 é o mais seguro.
# sysctl -d kern.securelevel
kern.securelevel: Current secure level
133
# sysctl kern.securelevel
kern.securelevel: -1
# sysctl kern.securelevel=1
kern.securelevel: -1 -> 1
# sysctl kern.securelevel=0
kern.securelevel: 2
sysctl: kern.securelevel: Operation not permitted
Sempre que o sistema for reiniciado o nível de segurança volta para seu valor
padrão que é -1. Para tornar esta operação permanente é necessário aumentar
o nível de segurança direto em /etc/rc.conf ou em /etc/sysctl.conf.
/etc/rc.conf
kern_securelevel_enable=”YES”
kern_securelevel=”2”
/etc/sysctl.conf
kern.securelevel=2
9.5 sshd_config
O OpenSSH presente na base do FreeBSD foi desenvolvido pela equipe do
OpenBSD. As configurações padrões já tornam esse serviço seguro, mas
134
existem outras que podem ser configuradas para tonar o serviço ainda mais
seguro. As configurações ficam em /etc/ssh/sshd_config.
Este subcapítulo da apostila irá tratar apenas algumas configurações do SSH,
para maiores informações é recomendado a leitura de man sshd e man
sshd_config.
A seguir serão analisados os principais parâmetros de configuração do arquivo
sshd_config:
#VersionAddendum FreeBSD-20090522
#Port 22
O daemon sshd ouve por padrão a porta TCP 22. Caso haja a necessidade de
alterar a porta, basta remover o comentário desta linha e alterar sua numeração
#Protocol 2
Definição do tipo de protocolo que o sshd irá utilizar. Existem dois protocolos,
ssh v2 e ssh v1. O ssh v1 é conhecido por ter muitas falas de segurança. Até o
FreeBSD 5, ele vinha como opção padrão do sshd_config, a partir da versão 6,
passaram a omitir a versão 1 da configuração do arquivo. É possível se for a
vontade do administrador, rodar o ssh utilizando sua versão 1, bastanto alterar a
linha de protocolo para 1.
#AddressFamily any
Esta linha indica qual família de endereços o sshd irá utilizar. As opções são any,
inet para utilizar apenas endereços IPv4 e inet6 para utilização de endereços
IPv6. Se o servidor não utiliza endereços IPv6, é recomendado alterar o
AddressFamily para inet
#ListenAddress 0.0.0.0
#ListenAddress ::
Especifica qual endereço IP local o sshd irá ouvir. A opção padrão é 0.0.0.0 o
que significa que o daemon irá ouvir todos os endereços presentes nas
interfaces. É uma boa prática deixar o endereço da interface utilizada para
conexão nesta linha.
Na linha de baixo é possível observar que o sshd também está ouvido todos os
endereços IPv6 disponíveis nas interfaces, para desabilitar, basta omitir esta
linha.
Continuando com o arquivo de configuração, abaixo dessas linhas existe um
bloco de tratamento de chaves públicas e privadas. É aconselhável manter tudo
como está.
Logo após estão as linhas que configuram a habilidade do sshd logar
informações:
135
# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
#LogLevel INFO
As opções podem ser mantidas como estão uma vez que guardam muita
informação importante nos logs. Uma funcionalidade maior de log, apenas a
clausula DEBUG oferece, mas esta é recomendada para encontrar problemas.
#PermitRootLogin no
A linha AllowUsers define quais usuários podem se logar via ssh. O fato de
colocar o login de um usuário nesta linha irá automaticamente bloquear todos os
outros usuários de se logar ao servidor. Uma configuração interessante é que
esta linha permite que o host por onde o usuário esteja se conectando seja
também informado, reforçando ainda mais a segurança, pois determinado
usuário pode realizar a conexão apenas de determinado host: [email protected]
ou [email protected].
A linha AllowGroups permite que grupos inteiros possam se conectar ao
servidor. Da mesma forma, se utilizada, apenas os grupos aqui constados
poderão se conectar ao servidor.
DenyUsers identifica quais os usuários que não poderão logar e finalmente
DenyGroups identifica quais grupos não poderão logar no servidor.
136
nosuid
tcp
A opção noexec indica que nenhum arquivo naquele ponto de montagem possa
ser excutado, ainda que tenha permissões e direito de execução.
A opção noatime evita que o tempo de acesso dos arquivos seja atualizado.
Noatime significa “No Access Time”. Sistemas de arquivos Unix podem
normalmente ter alguns metadados frequentemente atualizados, entre eles além
da data de criação do arquivo, existe a data da última modificação e também a
data do último acesso. Essas informações podem ser verificadas com o
comando stat em cada arquivo. Para alguns diretórios é interessante habilitar
esta opção por questões de performance.
A opção tcp deve ser usada em sistemas de arquivos remotos, como NFS, para
forçar que sua montagem seja feita com o protocolo TCP ao invés do UDP.
137
Exibe as informações da partição /tmp. É possível observar que a opção noexec
está habilitada.
Basta então montar novamente a partição, passando o parâmetro –u de update
no comando mount.
#mount -u -o rw /tmp
#mount | grep tmp
/dev/ad4s1e on /tmp (ufs, local, soft-updates)
# sysctl -d security.bsd.see_other_uids
security.bsd.see_other_uids: Unprivileged processes may see
subjects/objects with different real uid
# sysctl security.bsd.see_other_uids
security.bsd.see_other_uids: 1
# sysctl security.bsd.see_other_uids=0
138
9.8 Criptografia blowfish
O FreeBSD possui a criptografia blowfish na base. Ela somente não é utilizada
como padrão, pois alguns países como EUA e China proíbem o uso de tal
criptografia em sistemas. Como não Brasil não há restrições contra qualquer tipo
de criptografia, ela pode ser utilizada normalmente.
Para garantir que o FreeBSD utilize a criptografia Blowfish preferencialmente na
hora de codificar informações é necessário alterar o arquivo /etc/login.conf
Neste arquivo existe uma linha
:passwd_format=md5:\
A partir deste ponto, a próxima vez que uma senha for definida, ela será
blowfish. Veja a seguir a diferença da senha do usuário Marcus. A mesma senha
foi utilizada, mas na primeira linha ela é md5 e na segunda, blowfish:
marcus:$1$CxrSJal0$cl3/GBqgpi8hMq6ybyFXO0:1001:1001::0:0:Use
r &:/home/marcus:/bin/sh
marcus:$2a$04$Pd4NwhGNkvTKRfhQi.uPzOCfrI0mnA74Xqk.Jz9YJ6OuK2
cqZ/itK:1001:1001::0:0:User &:/home/marcus:/bin/sh
139
9.9 Exercícios
9.9.1 Habilitando e removendo o usuário toor
1 -No terminal do sistema, logado como root, execute o comando #id toor anote
o resultado:
__________________________________________________________
2- execute o comando:
#rmuser toor
Foi possível excluir o usuário? ( )sim ( )não Qual foi o motivo?
__________________________________________________________
4- Abra um segundo terminal com alt+f2 e realize o login com o usuário toor
7- Digite o comando vipw navegue até a linha que referencia o usuário toor e
digite dd
#vipw
toor:*:0:0::0:0:Bourne-again Superuser:/root:
4- Salve o arquivo
140
7- Reinicie o micro e entre normalmente em modo multiusuário, abra novamente
o arquivo /etc/ttys para edição.
10- Abra o terminal 1 utilizando alt+f2 e tente logar como root. O login foi bem
sucedido? ( ) sim ( ) não
11- Volte ao terminal 0 (alt+f1) e verifique a última linha que está aparecendo na
tela. Anote aqui o resultado:
__________________________________________________________
__________________________________________________________
12- Abra agora o terminal 3 com alt+f3 e efetue o login como root. O login foi
bem sucedido? ( ) Sim ( ) Não
13- Volte para o terminal 0 (alt+f1) e verifique a última linha aparecendo. Anote
aqui o resultado:
__________________________________________________________
__________________________________________________________
15- Novamente no terminal 0 (alt+f1) verifique a última entrada. Veja que nada
mudou.
17- Observe mais uma vez a última entrada do log que está aberto no terminal 0
(alt+f1)
18- Utilize a combinação de teclas crtl+c para fechar o arquivo de log que está
aberto e abra mais uma vez para edição o arquivo /etc/ttys
19- Altere desde o console ttyv0 até ttyv7 para insecure. Salve e feche o arquivo.
141
# touch userconfig
# touch userpassword
11- Eleve os privilégios para super usuário e como descrito nos passos 3 e 4 crie
e edite os seguintes arquivos: systemconfig, systemlog, systempasswd
14- Ainda como usuário root, tente apagar todos os arquivos, incluindo os
criados pelo usuário freebsdafpu. Quais foram apagados?
__________________________________________________________
__________________________________________________________
142
15- Remova as chflags com o comando
# chflags 0 <arquivo> para os arquivos que restaram na pasta
9- Logue como root e volte a pasta /var/log e tente remover a flag atribuída ao
arquivo messages.
143
14- Volte o sistema para a data atual utilizando os dados anotados no passo 11.
17- Repita o procedimento dos passos 12 e 13, foi possível aterar a data? ( )Sim
( )Não Porque?
__________________________________________________________
__________________________________________________________
__________________________________________________________
19- Reinicie o sistema, logue como root e tente remover a chflad do arquivo
messages ou alterar a data do sistema. Houve êxito em alguma tentativa? (
)Sim ( )Não
24- Reinicie o servidor e na tela Welcome to FreeBSD escolha a opção “4. Boot
FreeBSD in single user mode”
144
9.9.5 sshd_config
146