Buscar

Entendendo o UNIX- Marcio Calasans - v1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 160 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 160 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 160 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

EE NN TT EE NN DD EE NN DD OO OO 
UNIXXX 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MARCIO CALASANS 
 
 
 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 2 
 
Índice 
 
1 Objetivos .................................................................................................................................. 8 
2 Introdução ao mundo Unix ....................................................................................................... 9 
2.1 A História do Unix .............................................................................................................. 9 
2.1.1 Afinal, o que é o Unix ? ................................................................................................... 9 
2.1.2 Os Diversos Sabores do Unix ..........................................................................................10 
2.1.3 A Cronologia do Unix .....................................................................................................11 
2.1.4 A Árvore Genealógica do Unix .........................................................................................11 
2.2 Arquitetura do sistema operacional ................................................................................. 12 
2.2.1 Estrutura do sistema......................................................................................................12 
2.2.1.1 O kernel ................................................................................................................13 
2.2.1.2 Os gerenciadores de dispositivos e módulos ...............................................................13 
2.2.1.3 O Shell ..................................................................................................................13 
2.2.1.4 Os Programas.........................................................................................................14 
2.2.2 Gerenciamento de memória............................................................................................14 
2.2.3 Filesystems, Principais Diretórios e Mount Points ...............................................................14 
3 Instalação............................................................................................................................... 16 
3.1.1 Como funciona a instalação do Unix.................................................................................16 
3.1.1.1 Fase 1 - Preparação para a instalação .......................................................................17 
3.1.1.2 Fase 2 – Boot e carga do instalador ..........................................................................17 
3.1.1.3 Fase 3 – Seleção das Opções de Instalação................................................................18 
3.1.1.4 Fase 4 – Instalação.................................................................................................18 
3.1.1.5 Fase 5 – Boot Inicial do Sistema ...............................................................................18 
4 Unix básico ............................................................................................................................. 19 
4.1 Shell................................................................................................................................. 19 
4.1.1 Terminais e login...........................................................................................................19 
4.1.1.1 Nota sobre senhas ..................................................................................................19 
4.1.2 Conceitos sobre o shell...................................................................................................20 
4.1.3 Introdução ao bash........................................................................................................21 
4.1.3.1 Navegação no Histórico e Comandos de Edição...........................................................21 
4.1.3.2 Arquivos Especiais ..................................................................................................22 
4.2 Comandos no Unix ........................................................................................................... 22 
4.3 Comandos de arquivos e diretórios .................................................................................. 23 
4.3.1 Comandos de visualização de diretórios............................................................................23 
4.3.1.1 ls..........................................................................................................................23 
4.3.1.2 pwd ......................................................................................................................23 
4.3.2 Comandos de manipulação de diretórios...........................................................................23 
4.3.2.1 cd.........................................................................................................................23 
4.3.2.2 mkdir ....................................................................................................................23 
4.3.2.3 rmdir.....................................................................................................................23 
4.3.3 Comandos de manipulação de arquivos dentro da estrutura de diretórios .............................24 
4.3.3.1 cp.........................................................................................................................24 
4.3.3.2 mv........................................................................................................................24 
4.3.3.3 rm ........................................................................................................................24 
4.3.3.4 touch ....................................................................................................................24 
4.3.4 Comandos de manipulação de arquivos............................................................................24 
4.3.4.1 cat ........................................................................................................................24 
4.3.4.2 more.....................................................................................................................25 
4.3.4.3 less.......................................................................................................................25 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 3 
 
4.3.4.4 tail........................................................................................................................25 
4.3.4.5 head .....................................................................................................................25 
4.3.5 Comandos grep, cut, sort ...............................................................................................25 
4.3.5.1 grep, egrep, fgrep...................................................................................................25 
4.3.5.2 cut........................................................................................................................26 
4.3.5.3 sort.......................................................................................................................26 
4.4 Ambiente do shell e elaboração de scripts ....................................................................... 26 
4.4.1 Programas, processos e file descriptors ............................................................................26 
4.4.2 Redirecionamento de entrada e saída >,>>,<,<<.............................................................27 
4.4.3 Pipes ...........................................................................................................................29 
4.4.4 Metacaracteres e expressões regulares básicas .................................................................304.4.5 Variáveis ......................................................................................................................31 
4.4.6 Uso de " ' ` no shell.............................................................Error! Bookmark not defined. 
4.4.7 Alias ............................................................................................................................33 
4.4.8 Obtendo ajuda ..............................................................................................................33 
4.4.9 Criando e executando shell scripts ...................................................................................34 
4.5 Sistema de arquivos (Filesystems) .................................................................................. 35 
4.5.1 Introdução aos filesystems .............................................................................................35 
4.5.1.1 Estrutura e organização...........................................................................................36 
4.5.1.2 Principais tipos .......................................................................................................37 
4.5.2 Nomes de arquivos e extensões ......................................................................................37 
4.5.3 Arquivos especiais .........................................................................................................38 
4.5.3.1 Diretórios ..............................................................................................................38 
4.5.3.2 Links simbólicos (e links físicos) ...............................................................................38 
4.5.3.3 Named pipes ..........................................................................................................40 
4.5.3.4 Sockets .................................................................................................................40 
4.5.3.5 Devices .................................................................................................................40 
4.5.3.6 Doors ....................................................................................................................41 
4.5.4 Sistema de permissões do Unix .......................................................................................41 
4.5.5 Comandos chmod, chgrp, chown .....................................................................................42 
4.5.5.1 chmod...................................................................................................................42 
4.5.5.2 chown ...................................................................................................................44 
4.5.5.3 chgrp ....................................................................................................................44 
4.5.6 Umask .........................................................................................................................44 
4.5.7 Permissões avançadas - SUID, SGID, sitcky bit .................................................................44 
4.5.7.1 SUID.....................................................................................................................44 
4.5.7.2 SGID.....................................................................................................................45 
4.5.7.3 Sticky Bit ...............................................................................................................46 
4.5.8 Comando chattr ............................................................................................................47 
5 Administração de sistemas Unix ............................................................................................. 49 
5.1 Gerenciamento de logs..................................................................................................... 49 
5.1.1 O poder dos logs em procedimentos de troubleshooting .....................................................49 
5.1.2 Os logs no Unix.............................................................................................................49 
5.1.3 Syslog..........................................................................................................................50 
5.1.4 Administração dos logs ..................................................................................................52 
5.1.4.1 O utilitário logrotate................................................................................................53 
5.2 Gerenciamento de usuários e grupos ............................................................................... 53 
5.2.1 Base de dados ..............................................................................................................53 
5.2.2 Gerenciamento através de comandos...............................................................................55 
5.2.3 Gerenciamento manual de usuários e grupos ....................................................................56 
5.2.4 Mudando de usuário dentro de uma sessão (su)................................................................57 
5.2.5 Mudando de grupo dentro de uma sessão (newgrp) ...........................................................58 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 4 
 
5.3 Processos......................................................................................................................... 58 
5.3.1 System Calls.................................................................................................................58 
5.3.2 Programas x Processos...................................................................................................59 
5.3.3 Visualizando os processos...............................................................................................60 
5.3.4 Estados de um processo.................................................................................................62 
5.3.5 Sinais do Unix (SIGNALS)...............................................................................................63 
5.3.6 Execução em foreground e background ............................................................................64 
5.3.7 Daemons......................................................................................................................65 
5.3.8 Filas de execução e prioridades ......................................................................................65 
5.3.8.1 renice....................................................................................................................66 
5.3.8.2 nice ......................................................................................................................66 
5.4 Dispositivos (devices)...................................................................................................... 67 
5.4.1 Criando dispositivos com mknod......................................................................................67 
5.4.2 Restaurando dispositivos perdidos ...................................................................................67 
5.5 Gerenciamento de filesystems ......................................................................................... 68 
5.5.1 Particionamento de discos ..............................................................................................68 
5.5.1.1 A área de swap.......................................................................................................69 
5.5.1.2 Particionando um disco no Linux...............................................................................69 
5.5.1.3 Particionando um disco no Solaris.............................................................................70 
5.5.2 Criação de filesystems ...................................................................................................705.5.2.1 Criação de filesystems no Linux................................................................................70 
5.5.2.2 Criação de filesystems no Solaris ..............................................................................70 
5.5.3 Montagem de filesystems ...............................................................................................71 
5.5.3.1 mount ...................................................................................................................71 
5.5.3.2 umount .................................................................................................................71 
5.5.3.3 A tabela de montagem de filesystems .......................................................................71 
5.5.3.4 Utilizando NFS........................................................................................................73 
5.5.3.5 NFS Server ............................................................................................................73 
5.5.3.6 NFS Client..............................................................................................................74 
5.5.4 Manutenção de filesystems .............................................................................................74 
5.5.4.1 Manutenção manual ................................................................................................75 
5.5.4.1.1 fsck - Linux .........................................................................................................75 
5.5.4.1.2 fsck - Solaris .......................................................................................................75 
5.5.4.2 Manutenção automática no boot (Linux) ....................................................................75 
5.5.4.3 Manutenção automática no boot (Solaris) ..................................................................75 
5.5.4.4 Gerenciando o espaço em disco ................................................................................76 
5.5.4.4.1 du......................................................................................................................76 
5.5.4.4.2 df ......................................................................................................................76 
5.6 Inicialização e finalização ................................................................................................ 76 
5.6.1 Boot managers e loaders................................................................................................76 
5.6.1.1 Boot loaders no Linux..............................................................................................77 
5.6.1.2 Boot loader no Solaris .............................................................................................77 
5.6.2 Runlevels .....................................................................................................................77 
5.6.2.1 Single-User Mode....................................................................................................78 
5.6.3 A estrutura operacional do Unix ......................................................................................79 
5.6.4 Os arquivos de inicialização do sistema ............................................................................80 
5.6.4.1 /etc/rc.d/rc.sysinit (ou /etc/init.d) ............................................................................82 
5.6.4.2 /etc/rc.d/rc ............................................................................................................82 
5.6.4.3 Formas de inicialização de processos servidores: nohup X bg X inittab ..........................83 
5.6.5 Desligamento do sistema................................................................................................83 
5.7 Agendamento de tarefas .................................................................................................. 84 
5.7.1 Comandos at e batch .....................................................................................................84 
5.7.1.1 at .........................................................................................................................84 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 5 
 
5.7.1.2 batch ....................................................................................................................85 
5.7.1.3 atq........................................................................................................................85 
5.7.1.4 atrm .....................................................................................................................85 
5.7.2 A Cron .........................................................................................................................85 
5.8 Arquivadores e Backups................................................................................................... 86 
5.8.1 Compactadores .............................................................................................................86 
5.8.1.1 compress / uncompress...........................................................................................87 
5.8.1.2 gzip / gunzip ..........................................................................................................87 
5.8.1.3 zcat ......................................................................................................................88 
5.8.2 Manipulação avançada de arquivos e arquivadores ............................................................88 
5.8.2.1 dd.........................................................................................................................88 
5.8.2.2 cpio ......................................................................................................................90 
5.8.2.3 tar ........................................................................................................................92 
5.9 Data e hora ...................................................................................................................... 94 
5.9.1 Ajuste manual...............................................................................................................94 
5.9.1.1 date......................................................................................................................94 
5.9.2 Ajuste automático (NTP) ................................................................................................95 
5.10 Instalação de pacotes e aplicações............................................................................... 95 
5.10.1.1 Pacotes binários .....................................................................................................96 
5.10.1.2 Pacotes com código fonte ........................................................................................96 
5.10.1.3 Outros...................................................................................................................96 
5.10.2 Gerenciadores de pacotes...............................................................................................96 
5.10.2.1 Pacotes TGZ (Tar Gzip)............................................................................................96 
5.10.2.2 Pacotes RPM (Red Hat Package Manager) ..................................................................97 
5.10.2.3 Pacotes PKG (Solaris Package) .................................................................................98 
5.10.3 Instalação a partir do código fonte (básico) ......................................................................99 
5.10.4 Produtos comerciais.....................................................................................................100 
6 Redes IP em sistemas Unix...................................................................................................101 
6.1 Introdução ..................................................................................................................... 101 
6.1.1 Redes e o Unix............................................................................................................101 
6.1.2 Terminais ...................................................................................................................101 
6.1.3 O Protocolo UUCP ........................................................................................................102 
6.1.4 A Internet e o TCP/IP...................................................................................................102 
6.2 O Modelo OSI e o Modelo TCP/IP ................................................................................... 103 
6.3 Camada 1 ....................................................................................................................... 104 
6.3.1 Dispositivos de rede no Unix .........................................................................................104 
6.3.2 Instalação de dispositivos de rede .................................................................................104 
6.3.3 Interfaces lógicas ........................................................................................................105 
6.3.3.1 ifconfig (Camada 1) ..............................................................................................105 
6.4 Camada 2 ....................................................................................................................... 106 
6.5 Camada 3 ....................................................................................................................... 107 
6.5.1 Configurando os endereços IP .......................................................................................107 
6.5.2 ARP ...........................................................................................................................107 
6.5.3 RARP .........................................................................................................................108 
6.5.4 IP Aliasing ..................................................................................................................109 
6.5.5 IEEE 802.1q (VLAN Tagging).........................................................................................110 
6.5.6 Arquivos interessantes: /etc/protocols ...........................................................................112 
6.5.7 Roteamento................................................................................................................112 
6.5.8 Roteamento estático....................................................................................................112 
6.5.9 Roteamento dinâmico ..................................................................................................115 
6.5.10 Ativando a funcionalidade de roteamento no Unix............................................................116 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 6 
 
6.5.10.1 Linux...................................................................................................................116 
6.5.10.2 Solaris.................................................................................................................116 
6.5.11 Tornando as configurações de rede permanentes ............................................................116 
6.5.11.1 Interfaces e endereçamento...................................................................................117 
6.5.11.1.1 No Linux .........................................................................................................117 
6.5.11.1.2 No Solaris .......................................................................................................118 
6.5.11.2 Roteamento .........................................................................................................118 
6.5.11.2.1 No Linux .........................................................................................................118 
6.5.11.2.2 No Solaris .......................................................................................................119 
6.6 Camada 4 ....................................................................................................................... 119 
6.6.1 O que são sockets ?.....................................................................................................119 
6.6.2 Portas TCP e UDP ........................................................................................................120 
6.6.3 Os estados de um socket..............................................................................................121 
6.6.4 Visualização dos recursos de camada 4 ..........................................................................122 
6.6.5 Arquivos interessantes: /etc/services.............................................................................122 
6.6.6 Gerenciador de serviços – O Super Servidor ...................................................................123 
6.6.6.1 O inetd................................................................................................................123 
6.6.6.2 O xinetd ..............................................................................................................124 
6.7 Resolução de nomes....................................................................................................... 125 
6.7.1 Base local de nomes ....................................................................................................125 
6.7.2 DNS...........................................................................................................................126 
6.7.2.1 Introdução...........................................................................................................126 
6.7.2.2 A padronização dos nomes - Domínios.....................................................................126 
6.7.2.3 As bases de dados distritbuidas ..............................................................................127 
6.7.2.4 Funcionamento.....................................................................................................127 
6.7.2.5 O servidor de nomes “bind”....................................................................................128 
6.7.2.6 Configuração básica do bind...................................................................................129 
6.7.2.6.1 Configuração do “named.conf”.............................................................................129 
6.7.2.6.2 Configuração das zonas ......................................................................................130 
6.7.3 NIS – Network Information System ...............................................................................131 
6.7.4 Configuração do resolver..............................................................................................132 
6.7.4.1 Alterando a ordem dos métodos de resolução de nomes............................................132 
7 Aplicações avançadas na operação de plataformas Unix....................................................... 134 
7.1 Troubleshooting em Sistemas Unix ............................................................................... 134 
7.1.1 Processamento e Processos ..........................................................................................134 
7.1.1.1 uptime ................................................................................................................134 
7.1.1.2 ps .......................................................................................................................135 
7.1.1.3 pstree .................................................................................................................136 
7.1.1.4 Processose Processamento – top ...........................................................................137 
7.1.1.5 w........................................................................................................................138 
7.1.2 Memória.....................................................................................................................138 
7.1.2.1 vmstat ................................................................................................................138 
7.1.2.2 pmap ..................................................................................................................139 
7.1.3 Discos........................................................................................................................140 
7.1.3.1 df e du ................................................................................................................140 
7.1.3.2 iostat ..................................................................................................................142 
7.1.4 Logs e Mensagens .......................................................................................................143 
7.2 Troubleshooting de Rede em Sistemas Unix................................................................... 143 
7.2.1 Camadas 1, 2 e 3 ........................................................................................................143 
7.2.1.1 ifconfig ................................................................................................................143 
7.2.1.2 ping ....................................................................................................................143 
7.2.1.3 arping .................................................................................................................144 
7.2.1.4 netstat -i .............................................................................................................144 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 7 
 
7.2.1.5 traceroute............................................................................................................144 
7.2.1.6 route...................................................................................................................145 
7.2.2 Camada 4...................................................................................................................145 
7.2.2.1 telnet ..................................................................................................................145 
7.2.2.2 netstat –na ..........................................................................................................145 
7.2.2.3 tcpdump..............................................................................................................146 
7.2.3 Camada 7...................................................................................................................147 
7.2.3.1 lsof .....................................................................................................................147 
7.2.3.2 strace / truss .......................................................................................................149 
8 Referências Bibliograficas..................................................................................................... 150 
9 Apêndice............................................................................................................................... 151 
9.1 Campos do comando ‘ps’................................................................................................ 151 
9.2 Unix Signals ................................................................................................................... 157 
9.2.1 Signals - Unix Genérico ................................................................................................157 
9.2.2 Signals - Solaris ..........................................................................................................158 
9.2.3 Signals – Linux............................................................................................................159 
9.2.4 Signals - BSD..............................................................................................................160 
 
 
 
 
 
 
 
 
 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 8 
 
1 Objetivos 
 
O objetivo deste livro é de promover o entendimento efetivo do sistema operacional Unix (foco em Linux e Solaris), 
capacitando para uma operação e manutenção de servidores adequada e eficiente e permitindo extrair o melhor 
desempenho das plataformas e das atividades do dia a dia assim como serviços do tipo backup, DNS, roteamento, firewall 
e segurança. 
 
Os pré-requisitos mínimos para melhor compreensão e aproveitamento deste conteúdo são: 
 
§ Conhecimentos intermediários sobre computadores 
§ Conhecimentos intermediários sobre redes de computadores 
§ Modelo OSI 
§ Redes LAN e WAN 
§ Conhecimentos intermediários sobre o protocolo TCP/IP 
 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 9 
 
2 Introdução ao mundo Unix 
 
Metas: Ao final deste capítulo, teremos estudado o que é um sistema Unix, sua estrutura organizacional e seu princípio de 
funcionamento, sabendo escolher e realizar a melhor forma de instalação para suas necessidades. 
 
2.1 A História do Unix 
2.1.1 Afinal, o que é o Unix ? 
 
Antes de iniciarmos a conversa sobre o Unix, voltemos mais um pouco no tempo e vamos falar um pouco sobre a 
computação no final dos anos 60, início dos anos 70. Nesta época, os computadores eram equipamentos muito grandes 
fisicamente e dispunham de poucos recursos (algo como 4k de memória ocupando diversos andares de um prédio!). Nesta 
época, no Bell Laboratories (adquirido pela AT&T, posteriormente pela Lucent e atualmente pertencente ao grupo 
Alcatel-Lucent), um sujeito chamado Ken Thompson desenvolveu a partir do assembly, uma linguagem de programação de 
alto-nível para o computador PDP-7 chamada B. Pouco tempo depois, já no computador PDP-11, a linguagem B foi base 
para que outro sujeito chamado Dennis Ritchie, desenvolvesse a conhecida linguagem C, com o intuito de criar uma 
linguagem de programação de alto-nível que fosse concisa, portável e com poder suficiente para viabilizar até escrever 
um sistema operacional, antes obrigatóriamente desenvolvidos em assembly. 
 
O sistema operacional Unix, cujo nome completo original é “Unix Time-Sharing System”, foi criado no início dos anos 70 
por KenThompson e Dennis Ritchie no Bell Labs. O objetivo seria criar um sistema operacional capaz de ser portado para 
os diversos tipos de computadores existentes que, até o momento, eram completamente incompatíveis (isto significava 
que a cada nova versão de computadores, todos os programas existentes precisavam ser totalmente reescritos e 
recompilados para o novo hardware). A primeira versão do Unix foi inspirada no sistema operacional Multics e foi escrita 
em assembly para o PDP-7, entrentanto logo em seguida (1973), com a disponibilidade da linguagem C, recém 
desenvolvida por Dennis Ritchie (naturalmente para que ele pudesse escrever o Unix...), o sistema foi totalmente 
reescrito em C, tornando-se facilmente portável para outras plataformas. 
 
 
"...the number of UNIX installations has grown to 10, with more 
expected..." 
- Dennis Ritchie and Ken Thompson, June 1972 
"... When BTL withdrew from the project, they needed to rewrite an 
operating system (OS) in order to play space war on another smaller 
machine (a DEC PDP-7 [Programmed Data Processor] with 4K memory for 
user programs). The result was a system which a punning colleague 
called UNICS (UNiplexed Information and Computing Service)—an 
'emasculated Multics'; no one recalls whose idea the change to UNIX 
was" 
 
 
A idéia do desenvolvimento do Unix, similar ao paradigma dalinguagem C, era de se tornar um sistema operacional 
programável, portável, poderoso e aberto (daí surgiu o conceito dos “open systems”), para que outras pessoas também 
pudessem contribuir para seu desenvolvimento e aperfeiçoamento. 
 
Com o passar dos anos, o Unix passou a ser extensamente adotado por universidades, institudos de pesquisas, entidades 
governamentais até que os estudantes, se graduando e passando a assumir posições em empresas, queriam continuar a 
utilizar o Unix gerando um efeito onde todos os grandes fabricantes de computadores (e muitos dos pequenos), passaram a 
adotá-lo como sistema operacional para seus produtos de hardware, tornando o Unix um dos sistemas mais importantes, 
estáveis, robustos e confiáveis existentes no mundo. 
 
 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 10 
 
2.1.2 Os Diversos Sabores do Unix 
 
Uma vez sendo aberto, os fabricantes de computadores puderam passar a adotar o Unix como sistema operacional de suas 
plataformas de hardware, sendo que cada um passou a desenvolver facilidades diferentes para suas versões o que começou 
a criar um problema: apesar do sistema estar instalado em todos os lugares, eles estavam deixando de ser interoperáveis, 
dado as diversas implementações que começaram a surgir. Como consequencia disto, no início dos anos 80, haviam tantas 
versões incompatíveis que chegou-se a cogitar o fim do Unix, entretanto, o resultado das discussões acabou sendo posivito 
uma vez que, viabilizou a criação pela AT&T (proprietária da marca Unix), do X/Open (que derivou o The Open Group) que 
criou uma padronização para a base do sistema. Uma das questões levantadas foi a de qual seria a melhor versão para se 
tornar o padrão! Esta resposta veio com um pacto entre a AT&T e a Sun Microsystems que definiram que a linha derivada 
de Berkeley deveria ser o padrão, fixando-o como tal. 
 
Outros desenvolvedores, que não seguiam os padrões de Berkeley, sentiram-se prejudicados com a decisão e formaram um 
outro grupo chamado Open Software Foundation (OSF). Em resposta a esta iniciativa, a AT&T e a Sun formalizaram um 
grupo chamado de UNIX International, originando o que chama-se de “Unix Wars”, ou seja, a guerra dos sabores do Unix. 
 
Um dos aspectos mais interessantes da padronização do Unix, é a característica de que apenas algumas partes principais 
do sistema são padronizadas, deixando outras a critério de cada desenvolvedor explorar segundo a “linhagem” escolhida. 
Com isso, inúmeras versões do sistema operacional continuaram a co-existir e serem desenvolvidos até hoje. Estas versões 
são também chamadas, na comunidade Unix, de “sabores do Unix” (Unix flavors). 
 
Um importante evento precisa ser registrado entre os anos 80 e 90. Um sujeito radical chamado Richard Stallman, decidiu 
criar um pacote de software, compatível com o Unix, totalmente livre e aberto para que todos pudessem usar e melhorar 
como desejassem, criando o pacote GNU (GNU é uma sigla recursiva que significa GNU’s not Unix!). O pacote GNU 
reimplementa todos os comandos do Unix, com melhorias significativas e passou a ser bastante utilizado. Richard 
Stallman, criou também um novo tipo de licença de software chamado ‘copyleft’, que ao contrário do tradicional 
‘copyright’, garante que tudo que for derivado de um sistema com licença copyleft, permanecerá copyleft, ou seja, 
aberto e livre, pois para Stallman, livre vem de liberdade e não de preço (um software com licença GNU não 
obrigatóriamente é gratuito, apesar do pacote de ferramentas Unix GNU sê-lo). 
 
Ainda nos anos 80, o projeto “Single Unix Specification” (SUS) foi criado com o objetivo de compilar e dar continuidade no 
trabalho originado pelo IEEE e pelo The Open Group e é mantido pelo Austin Group. 
 
No meio dos anos 90, com o avanço da computação pessoal, sendo usuário do Unix e sentindo enorme falta do sistema 
operacional para este segmento de computadores, um finlandês chamado Linus Torvalds iniciou o desenvolvimento de um 
kernel (núcleo do sistema operacional) inspirado no Unix, com o intuito de deixá-lo gratuito e aberto (note que freeware 
significa software gratuito enquanto open system significa sistema com o código aberto, não implicando que necessitem 
ser os dois ao mesmo tempo!) para todos que quisessem utilizá-lo e desenvolvê-lo, surgindo então o Linux. O Linux (o 
nome é marca registrada pertencente ao Linus Torvalds) adota o padrão POSIX (Portable Operating System Interface for 
uniX- normas definifas pelo IEEE) para diversas implementações internas e também respeita a diversos padrões do Single 
Unix Specification e do System V, podendo ser considerado um padrão próprio. Para completar o sistema operacional 
recém desenvolvido, Torvalds adotou o pacote GNU para serem os comandos de sua versão de Unix, completando assim o 
sistema operacional. 
 
As principais linhagens de Unix que podemos citar seriam: 
 
§ BSD (Berkeley Software Distribution) 
§ System V 
§ The Single Unix Specification 
§ Linux 
§ BSDI (BSD Independent) 
 
A pergunta natural que fariamos é: Qual o melhor Unix, então ? A Resposta é simples: A que você preferir! Curiosamente, 
todos os Unix seguem um padrão base único, diferindo em questões de implementação. Iisto significa que quem conhece 
bem um sabor de Unix, facilmente se adapta nos demais. 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 11 
 
2.1.3 A Cronologia do Unix 
 
A figura a seguir, apresenta uma cronologia até 1995 dos princiais sabores de Unix existentes (não incluindo as linhagens 
do Linux e do BSDI, por não terem derivado do código original licenciado do Unix): 
 
 
2.1.4 A Árvore Genealógica do Unix 
 
A figura abaixo, apresenta de forma resumida a genealogia dos principais Unices (este é o plural oficial de Unix!!!) 
existentes: 
 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 12 
 
 
 
2.2 Arquitetura do sistema operacional 
2.2.1 Estrutura do sistema 
 
Para entendermos melhor a estrutura do sistema operacional Unix, vamos dividí-lo em 4 partes: o kernel, os gerenciadores 
de dispositivos, o shell e os programas tal como ilustrado a seguir: 
 
 
 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 13 
 
2.2.1.1 O kernel 
 
Todo sistema operacional tem um kernel (núcleo), que nada mais que um programa capaz de realizar o gerenciamento das 
funções de um computador. O kernel é o componente mais próximo do hardware do computador e é o responsável por 
garantir a execução segura dos programas e realizar a comunicação com o hardware. 
 
O kernel é o software que realiza as tarefas de inciar e finalizar a execução de programas, gerenciar o uso da memória, 
controlar os sistemas de armazenamento (filesystems), gerenciar o I/O com os dispositivos, entre outras funções. 
 
Nos Unices, o kernel é um arquivo que normalmente fica localizado em um diretório do dispositivo de boot do sistema. 
2.2.1.2 Os gerenciadores de dispositivos e módulos 
 
Como em muitos outros sistemas operacionais, o kernel do Unix tem implementadas as funções de entrada e saída (I/O), 
entretanto como cada dispositivo de hardware é desenvolvido por um fabricante específico, algumas vezes respeitando 
padrões, outras não, é necessário uma camada de componentes de software chamadas gerenciadores de dispositivos 
(device drivers). Os gerenciadores de dispositivos são nada mais que programas complexos que conhecem todos os detalhes 
de comunicação com o hardware para qual foram desenvolvidos e do outro lado, conhecem como se comunicar com o 
kernel do sistema operacional. 
 
Os gerenciadores de dispositivo podem se acoplar ao kernel de duas formas: estaticamente ou dinamicamente. 
 
Da primeira forma, estática, é necessário “fundir” o programa do gerenciador de dispositivos ao kernel. E como se faz 
isso? Parece complexo, mas na verdade é simples: a resposta é “linkando” o programa compilado aokernel. Para entender 
melhor isso, vamos explicar rapidamente como um programa fonte se transforma em um programa executável: Primeiro o 
programador escreve o programa em um arquivo texto comum. Depois ele utiliza um compilador para transformar o 
código fonte em um arquivo contendo o código binário do programa. Este código binário já se encontra em linguagem de 
máquina, entretanto precisa ser unido a outros componentes de software (bibliotecas/libraries) que tem a programação 
de como interagir com o sistema operacional, entre outras coisas, para que possa se tornar executável. Este último 
processo se chama “link edição”, ou simplesmente “linkar” o binário. Neste processo, você junta seu programa (binário) às 
libs do sistema e o resultado é um arquivo executável. Como o kernel e os gerenciadores de dispositivos são programas 
como outros quaisquer, basta linka-los para obter um novo kernel que suporte o hardware desejado! 
 
No caso dos gerenciadores de dispositivos dinâmicos, o processo é um pouco diferente e mais prático, entretanto somente 
versões recentes dos sistemas operacionais suportam esta funcionalidade. O programa do gerenciador de dispositivo, neste 
caso, é compilado de forma especial como um módulo de bibliotecas de funções. O kernel por sua vez, é programado para 
aceitar carregar em tempo de execução (dinamicamente) estes componentes de programas “avulsos” (módulos) e se 
acoplá-los “linkando-os” dinamicamente, passando a suportar as funcionalidades implementadas. Fazendo uma analogia 
com a conhecida tecnologia da Microsoft, o sistema operacional Windows, os módulos são equivalentes às DLLs (Dynamic 
Linked Libraries) e aos VDX (Virtual Device Drivers). 
2.2.1.3 O Shell 
 
Para entender o que é o shell, vamos imaginar um forno de micro-ondas. No painel, encontramos uma série de botões cada 
um com uma função específica, por exemplo: pipoca, pizza, pratos prontos, descongelamento, etc. Para que servem estes 
botões? Resposta óbvia: para que o usuário possa comandar o forno a executar determinada função. Em outras palavras: 
forncer uma interface para o usuário executar comandos e acionar o hardware para executar determinadas funções que 
cumprar a tarefa comandada! 
 
O shell nada mais é que o painel de botões do forno de micro-ondas, ou seja, a interface do Unix para que nós, humanos, 
possamos executar comandos no sistema operacional e realizar as tarefas que desejamos. Resumindo em grosso modo: É o 
local onde digitamos os comandos e vemos o resultado! 
 
Então por que o shell do Unix é algo tão místico? Porque ela é mais que um simples painel de botões! A shell é na verdade 
uma interface para uma poderosa linguagem de programação interpretada chamada shell script (linguagem compilada é 
aquela que escrevemos um programa fonte e usando um compilador/link-editor criamos um arquivo executável, enquanto 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 14 
 
a linguagem interpretada, o código fonte ou sequência de comandos é compilada/link-editada/executada diretamente 
pelo interpretador sem gerar o arquivo executável). 
 
Como quase tudo no Unix, o shell não podia ser diferente e pode ser encontrado disponível em diversos sabores. Os mais 
comuns hoje em dia são o bash (Bourne Again Shell), o ksh (Korn Shell) e o sh (Bourne Shell). Existem também outros 
menos comuns como o csh (C Shell), tcsh (TENEX C Shell), ash (Alquimist Shell), dash (Debian Alquimist Shell), zsh (Z 
Shell), além de outros sabores mais exóticos. 
 
2.2.1.4 Os Programas 
 
No Unix, o kernel (já com os gerenciadores de dispositivos linkados e carregados) é o responsável pelo gerenciamento do 
hardware e da execução das coisas no computador. Todas as demais funcionalidades do sistema operacional, são 
implementadas em programas a parte, cada um destinado a um objetivo específico. A shell mesmo é um programa. 
 
Desta forma, todos os comandos do sistema, as aplicações que instalamos, enfim, tudo que executamos no Unix, são 
programas, que são instalados no disco (ou em outro dispositivo de armazenamento) e carregados em memória para 
execução. 
 
2.2.2 Gerenciamento de memória 
 
Uma das mais notáveis características dos sistemas Unix está no gerenciamento de memória feita pelo sistema 
operacional. Apesar de que cada sabor implementa uma forma particular de gerenciar a memória, todas são notáveis em 
sua eficiência e alto-desempenho. 
 
Como sabemos (ou estamos aprendendo agora), nada em um computador pode ser executado se não estiver na memória. 
Isto porque em arquitetura de computadores, um processador somente tem acesso à memória, de forma que só consegue 
executar e endereçar o que está carregado lá. 
 
No início dos tempo, os computadores dispunham de muito pouca memória física instalada de forma que a execução de 
programas maiores se tornava impraticável. Para contornar este problema, foi criada em implementada no kernal do 
sistema operacional, uma técnica capaz de utilizar um espaço em disco ou um arquivo onde o sistema operacional pudesse 
copiar trechos da memória que não estivesse utilizando no momento, liberando espaço para carregar dados e instruções 
que precisassem ser processados em determinado momento. Esta operação foi denominada “swap” (do inglês: troca), onde 
trechos da memória são trocados dinamicamente conforme a necessidade de uso, e o local em disco onde estes trechos são 
gravados foi denominado swap space ou swap file (atualmente também chamado de memória virtual), conforme o caso. 
Com esse recurso disponível, os sistemas passaram a contar com uma quantidade de memória total muito maior, 
viabilizando aplicações maiores e mais complexas. 
 
Nota: Analogamente nos sistemas MS-Windows, a área de swap é um arquivo em disco chamado de memória virtual ou page file. 
 
Os Unices organizam a memória em blocos chamados de páginas (pages) que são alocados durante o boot do sistema 
operacional tanto na memória real do computador quanto nas áreas de swap alocadas (o Unix suporta alocação dinâmica 
de novas áreas de swap), enxergando-as como containers de páginas. Como o Unix sabe que somente o container “RAM” 
pode ser acessado pelo processador, ele gerencia as operações de swap de uma ou mais páginas em um processo chamado 
de paginação (paging - page-in, page-out). 
2.2.3 Filesystems, Principais Diretórios e Mount Points 
 
Nos computadores, os arquivos são armazenados em filesystems, que são estruturas que também podem ser visualizadas 
como containers (não necessáriamente em disco!!!) com uma organização específica (organização dos bits armazenados) 
capaz de guardar e restaurar dados, provendo funcionalidades de acesso (protocolos) a estas informações de forma 
coerente, segura e organizada. Os filesystems podem ser considerados “bancos de dados” de arquivos e possuem um 
estrutura padronizada. 
 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 15 
 
Existem diversos tipos de filesystems disponíveis hoje no mundo, voltados para um ou mais sistemas operacionais, a 
exemplo: FAT, FAT32, VFAT, NTFS, ext, etx2, ext3, ext4, HFS, HPFS, JFS, ISO9660, UDF, ReiserFS, Reiser4, ZFS, SMB, NFS, 
VxFS Veritas, entre muitos outros. 
 
No Linux, os filesystems mais utilizados são o ext3, ext4 ou Reiser4, enquanto no Solaris, os filesystems mais utilizados 
são o ZFS e o VxFS (quando instalado o Veritas Volume Manager) 
 
Em servidores, os filesystems são normalmente criados em HDs que armazenam tanto o sistema operacional quanto os 
demais arquivos. O sistema operacional Unix, se instala no filesystem de boot do sistema e se aloca seus arquivos em 
diversos diretórios afim de organizar a estrutura do sistema por grupos de funcionalidades. 
 
A figura abaixo, apresenta a estrutura dos principais diretórios de um sistema Unix: 
 
 
 
Diretório Descrição 
/ Diretório raíz de todo o sistema operacional 
/bin/ Comandos essenciais do sistema operacionalvoltados para os usuários 
/boot/ Boot loaders, kernel e arquivos relacionados com a carga do sistema operacional 
/dev/ Área de ligação entre o sistema operacional e os dispositivos de hardware 
/etc/ Configuração do sistema operacional 
 /etc/opt/ Configurações relacionadas a aplicações instaladas no /opt 
 /etc/X11/ Configurações relacionadas ao sistema X11 (X-Window System version 11) 
/home/ Local de armazenamento do "home" dos usuários 
/lib/ Bibliotecas essenciais do sistema operacional, requeridas pelos programas instalados no /bin e /sbin 
/media/ "Mount point" para medias removíveis tipo CD-ROMs, DVDs, Pen-Drives, etc 
/mnt/ Local para montagem de filesystems temporários 
/opt/ Local para instalação de aplicações e pacotes de software adicionais 
/proc/ Filesystem virtual utilizado para registros feitos pelo kernel e processos do sistema operacional 
/root/ Home do usuário root (superusuário) 
/sbin/ Comandos essenciais do sistema operacional voltados para o sistema 
/tmp/ Área para arquivos temporários (é totalmente limpa a cada reboot do sistema) 
/usr/ Local para binários disponíveis para o sistema/usuários quando em modo multi -usuário 
 /usr/bin/ Comandos adicionais instalados no sistema operacional 
 /usr/etc/ Configurações relacionadas a aplicações instaladas no /usr/bin ou /usr/sbin 
 /usr/include/ Arquivos de inclusão para compilação de programas (includes) 
 /usr/lib/ Bibliotecas requeridas pelos programas instalados no /usr/bin e /usr/sbin 
 /usr/sbin/ Binários adicionais do sistema operacional (daemons, serviços de rede, etc) 
 /usr/share/ Dados compartilhados entre os binários/fontes independentes da arquitetura do computador 
 /usr/src/ Códigos fontes (kernel, libraries, headers) 
 /usr/ucb/ Equivalente ao /usr/bin no Solaris 
 /usr/X11R6/ Instalação do sistema X-Window (X11) 
 /usr/local/ Local para binários específicos para o computador em questão 
 /usr/local/bin/ Comandos e aplicações locais 
 /usr/local/etc/ Configurações relacionadas a aplicações instaladas no /usr/local/bin ou /usr/local/sbin 
 /usr/local/include/ Arquivos de inclusão para compilação de programas (includes) dentro do /usr/local/ 
 /usr/local/lib/ Bibliotecas requeridas pelos programas instalados no /usr/local/bin e /usr/local/sbin 
 /usr/local/man/ Páginas de documentação on-line sobre as aplicações e programas instalados no /usr/local 
 /usr/local/sbin/ Binários adicionais voltados para o sistema, específicos do computador em questão (daemons, serviços de rede, etc) 
 /usr/local/share/ Dados compartilhados entre os binários/fontes independentes da arquitetura do computador 
 /usr/local/src/ Códigos fontes de programas e aplicações locais 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 16 
 
/var/ Área de arquivos de conteúdo variado, não permanentes ou constant emente modificados 
 /var/lock/ Arquivos de lock do sistema e das aplicações 
 /var/log/ Registros de utilização feitos pelos processos do sistema operacional e das aplicações 
 /var/mail/ Caixas postais de e-mail dos usuários 
 /var/run/ Informações sobre o sistema desde o último boot (usuários logados, daemons em execução, etc) 
 /var/spool/ Filas de tarefas a serem processadas (ex: filas de impressão, mail, uucp, etc) 
 /var/spool/mail/ Caixas postais de e-mail dos usuários (descontinuado) 
 /var/tmp/ Área para arquivos temporários (é preservada entre os reboots do sistema) 
 
Legenda: 
 Primeira Hierarquia 
 Segunda Hierarquia 
 Terceira Hierarquia 
 Binários e bibliotecas essenciais do sistema operacional (dentro da 1a hierarquia) 
 
Um sistema Unix, quando instalado, normalmente cria diversas partições nos discos para armazenar sua estrutura de 
diretórios. Devemos observar que quanto menor o tamanho físico de uma partição, mais rápido será o procedimento de 
verificação e correções de erros do filesystem em casos de pane com reboot do sistema, de forma que o sistema estaria 
disponível mais rápido para manutenção. Somado a este fato e observando a organização da primeira hierarquia dos 
diretórios do Unix, podemos deduzir que faz bastante sentido utilizarmos partições e, muitas vezes, discos diferentes para 
cada conjunto de dados do sistema. 
 
Diferente dos sistemas Microsoft, que utilizam obrigatóriamente e somente as 26 letras do alfabeto para associação com 
os dispositivos de armazenamento (C:, D:, etc), impondo uma limitação natural ao sistema operacional, os sistemas Unix 
enxergam a estrutura de diretórios como uma única árvore. Como então, mapeamos uma nova unidade de armazenamento 
ou uma outra partição de disco no Unix? A resposta é: De forma simples e eficiente, ou seja, “encaixando-os” na árvore 
principal do sistema como se fosse diretórios! Traduzindo para os termos do Unix, este encaixe chama-se montagem do 
filesystem (mount) e o diretório onde montaremos o filesystem, chama-se “mount point”. 
 
Cada sabor de Unix utiliza uma proposta de particionamento da instalação do sistema, entretanto na sua grande maioria 
esta proposta é bastante similar. O administrador do sistema pode a seu critério, alterar este particionamento para 
alguma forma que melhor se adeque às suas necessidades, bastando prospectar corretamente os espaços alocados afim de 
evitar problemas de disco cheio durante a operação do sistema. 
 
Os principais mount points/partições geralmente utilizados pelos Unices são: 
 
§ / 
§ /usr 
§ /var 
§ /opt 
 
Outras partições/mount points também encontradas: 
 
§ /boot 
§ /home 
§ /tmp 
 
3 Instalação 
 
3.1.1 Como funciona a instalação do Unix 
 
Cada sabor de Unix, ou melhor dizendo, cada versão de cada sabor de Unix, encontramos uma forma diferente de realizar 
sua instalação, entretanto uma coisa é certa: com a evolução dos sitemas operacionais, a cada dia que passa, as novas 
versões dos sistemas vem apresentando interfaces cada vez melhores e mais amistosas para realizar os procedimentos de 
instalação do sistema operacional. 
 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 17 
 
Em cada arquitetura de computadores, encontraremos alguns procedimentos iniciais distintos desenvolvidos pelos 
fabricantes. Vamos nos concentrar em servidores das famílias de arquitetura Intel e de arquitetura SPARC (Scalable 
Processor ARChitecture – marca registrada da Sun Microsystems). 
 
Para facilitar nosso entendimento, vamos dividir a instalação de um sistema Unix em 5 fases, de forma independente do 
sabor escolhido: 
 
§ Fase 1: Preparação para a instalação 
§ Fase 2: Boot e carga do instalador 
§ Fase 3: Seleção das opções de instalação 
§ Fase 4: Instalação 
§ Fase 5: Boot inicial do sistema 
 
3.1.1.1 Fase 1 - Preparação para a instalação 
 
Apesar da facilidade atualmente encontrada, instalar um sistema operacional, qualquer um que seja, em um servidor de 
produção requer um bom planejamento e preparo para que se obtenha o melhor desempenho possível e a maior garantia 
do menor índice de problemas posteriores. 
 
Algumas informações que devem ser coletadas antes de iniciar a instalação do sistema operacional: 
 
§ Perfil do servidor (tipos de serviços que serão executados) 
§ Características do hardware: CPU, memória, placas de rede (marcas e modelos), placas controladoras específicas, 
hardware não padrão, etc 
§ Compatibilidade do hardware existente com o sabor e a versão do sistema operacional (no caso de plataforma 
Intel) 
§ Planejamento da tabela de partição 
§ Hostname 
§ Endereços IP 
 
Nas plataformas Intel, com o Linux, é muito importante verificar a compatibilidade do hardware existente com a versão a 
ser instalada. No caso de hardware não padrão, é importante também obter os drivers para estes dispositivos. 
 
3.1.1.2 Fase 2 – Boot e carga do instalador 
 
O primeiro boot de instalação consiste no computadorcarregar o boot loader do sistema operacional, que se encarregará 
de carregar o kernel de instalação na memória e o programa instalador do sistema operacional. Deste ponto em diante, o 
programa instalador interagirá com o usuário para prosseguir com a instalação. 
 
Existem várias formas de instalar um sistema Unix: via CD-ROM/DVD, a partir de um drive remoto, de um FTP server, por 
HTTP, até mesmo por bootp (boot protocol: um protocolo capaz de dar boot em um servidor pela placa de rede buscando 
todos os arquivos necessários remotamente, inclusive o boot loader). Vamos nos concentrar na forma mais convencional, 
que é a instalação via mídia de CD-ROM/DVD local. 
 
No caso das plataformas Intel, a BIOS do computador se encarregará de carregar o ‘boot loader’ de um dos dispositivos 
listados como ‘bootáveis’. Desta forma, basta ligar o computador, inserir a mídia de instalação e seguir as instruções que 
forem sendo apresentadas na tela. 
 
No caso das plataformas SPARC, ao ligar o computador, será carregado o programa da NVRAM (Non Volatile RAM) que é o 
modo monitor do equipamento. Caso estejamos realizando uma reinstalação, deve-se interromper o boot automático para 
entrar em modo monitor (teclando a sequência Stop-A). Em modo monitor, deve-se dar os comandos para boot a partir da 
mídia de instalação e aguardar a carga do programa instalador. 
 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 18 
 
3.1.1.3 Fase 3 – Seleção das Opções de Instalação 
 
Em todos os sabores do Unix, ao executarmos o programa de instalação, seremos questionados sobre as configurações 
básicas do sistema, que são principalmente, as informações que levantamos no planejamento da instalação. Em cada 
versão lançada os desenvolvedores lançam novidades e melhorias nos procedimentos de instalação, de forma que é 
praticamente impossível criar um manual genérico de instalação do Unix. 
 
Um passo muito importante na instalação é a escolha do tipo de instalação desejada (Linux) ou o grupo de software 
desejado (Solaris). Nesta opção, será escolhido qual pacote pré-definido de comandos, programas e aplicativos serão 
instalados, conforme o perfil do computador em questão. A escolha deve ser feita pelo administrador do sistema de 
acordo com seu planejamento do Data Center, procedimentos internos, normas de engenharia de sistemas da organização, 
etc. 
 
Convém ressaltar, que deve-se evitar o modelo ‘completo’ em servidores pois apesar de parecer mais fácil a instalação, e 
o cumprimento de dependências posteriores para outras aplicações, este modelo sobrecarrega o sistema com pacotes 
totalmente desnecessários que muitas vezes acabam representando ônus de processamento, riscos (muitas vezes graves) 
de segurança, entre outros problemas. 
 
A recomendação purista para a instalação de um servidor é a de escolher o modelo mínimo de instalação, e após a 
conclusão da mesma, instalar manualmente os pacotes estritamente necessários para o sevidor. Neste caso, é muito útil a 
elaboração de uma especificação padrão de instalação de servidores do Data Center definindo os procedimentos e pacotes 
a serem instalados em todas as máquinas, simplicando não apenas o processo de instalação do sistema operacional, mas 
também a operação e manutenção do parque. 
 
3.1.1.4 Fase 4 – Instalação 
 
Uma vez tendo preenchido todas as informações solicitadas pelo programa instalador e selecionado os pacotes a serem 
instalados, a instalação propriamente dita ocorre de forma automática, bastando aguardar sua conclusão. 
 
3.1.1.5 Fase 5 – Boot Inicial do Sistema 
 
Após a instalação, o programa instalador irá solitar a remoção da mídia do drive e o sistema irá realizar o primeiro boot 
do sistema. Algumas configurações iniciais automáticas poderão ser realizadas durante o processo. Ao final do mesmo, 
será apresentado um prompt de login no sistema. 
 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 19 
 
4 Unix básico 
 
Metas: Neste capítulo, trataremos as formas de acesso ao sistema, como utilizar o shell do sistema de forma profissional e 
efetiva, saber utilizar os comandos básicos e conhecer os princípios dos recursos base de segurança do Unix. 
4.1 Shell 
4.1.1 Terminais e login 
 
O acesso ao shell de um sistema Unix é realizado por meio de terminais. Estes terminais estão disponíveis na console do 
computador e também por acesso remoto, podendo este ser realizado por portas seriais ou pela rede através de telnet, 
rlogin, ssh ou similar, ou ainda por emulação de terminal X com display remoto. 
 
O Unix por conceito é um sistema projetado com segurança como premissa, portanto para que um usuário acesse o shell do 
sistema, é necessário que o mesmo tenha uma conta (login) cadastrado no sistema. Após a instalação do sistema, por 
padrão, a única conta disponível é a conta do usuário administrador, que a partir de agora chamaremos de superusuário 
ou pelo seu login ‘root’. 
 
Os terminais do Unix são gerenciados por programas em execução que os controlam e disponibilizam suas funções. Para 
que um terminal fique operacional, o sistema executa no dispositivo, por exemplo, na console, um programa chamado 
‘getty’ que originalmente significava ‘get teletype’ e era o controlador dos dispositivos terminais de teletipo. Com a 
evolução, o ‘getty’ passou a suportar os mais diversos tipos de terminais existentes, sejam eles físicos (ex: console) ou 
virtuais (telnet, etc, por exemplo). O getty é responsável pelo controle do I/O do terminal aberto. 
 
Um vez de posse do controle do terminal, o Unix executa um programa chamado ‘login’ dentro do terminal aberto. Este 
programa apresenta ao usuário uma mensagem padrão do sistema (configurável no arquivo ‘/etc/motd’ – message of the 
day) e o prompt de login pedindo o username e a senha do usuário. 
 
Uma vez digitados, o processo ‘login’ busca na base dos usuários cadastrados (por default, no arquivo ‘/etc/passwd’ e 
/etc/shadow’) a entrada do usuário, verifica se a senha confere e caso positivo carrega a shell indicada no arquivo 
‘/etc/passwd’ configurada para o usuário, transferindo o controle a partir de agora para a shell. 
 
A shell carregada inicia seu trabalho obtendo mais informações sobre o perfil do usuário, lendo os arquivos ‘/etc/group’, 
que contém os grupos do sistema que o usuário pertence, o arquivo ‘/etc/profile’ com o perfil global para todos os 
usuários do sistema, e finalmente carrega os dados do perfil pessoal do usuário configurados dentro de seu home (o 
arquivo aqui varia de acordo com a shell escolhida. Ex: ‘~home/.profile’, ‘~home/.bashrc’, etc) 
 
4.1.1.1 Nota sobre senhas 
 
Uma boa senha é importante para a segunça do servidor. O conteúdo de uma boa senha deve seguir os seguintes 
princípios: 
 
§ Deve conter uma mistura de números, letras maiúsculas, letras minúsculas e símbolos 
§ Devem ser fáceis de digitar, se possível alternando cada caracter com uma mão (para evitar que um observador 
possa identificá-la facilmente) 
§ Senhas padrão (do fabricante) devem ser imediatamente substituídas 
§ Senhas devem ter no mínimo 8 caracteres ou caso a plataforma não suporte este tamanho, utilizar o máximo 
possível. 
§ Deve conter caracteres de pelo menos 3 das 4 categorias abaixo: 
o Letras maiúsculas do alfabeto: A, B, C, ..., Z 
o Letras minúsculas do alfabeto: a, b, c, ..., Z 
o Números arábicos: 0, 1, 2, ..., 9 
o Caracteres especiais não alfanuméricos: pontuação e outros 
§ Não pode ter o nome do usuário ou parte de um nome qualquer 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 20 
 
§ Não pode conter espaços em branco 
§ Não deve conter mais de dois caracteres iguais consecutivos 
§ Não deve conter palavras de dicionário ou nomes que tenham relação com as atividades da empresa, muito menos 
o nome da mesma! 
§ Não deve conter o UID (User IDentification) do usuário 
§ Não dever repetir 4 (quatro)caracteres da última senha 
§ Não deve conter nome da esposa, parentes, filhos, amigos, etc. 
§ Não deve conter o número da placa do carro, número de telefone, etc 
§ Não deve conter nomes comuns que podem ser encontrados no dicionário (em qualquer língua) 
§ Não deve conter uma série de letras ou números iguais 
§ Não deve conter seqüências obvias do teclado 
§ Não deve conter qualquer uma das opções acima de trás para frente 
 
Exemplos: 
 
§ Escolher uma linha ou duas de uma frase, poema, música e utilizar as primeiras letras. 
§ Juntar duas palavras simples com caracteres estranhos. 
§ Inventar um acrônimo. 
§ Substituir letras por números de grafia similar (ex: 1 por L ou I, A por 4, O por 0, etc). 
§ Escolher uma palavra e transforma-la (ex: janela -> J4n3La). 
4.1.2 Conceitos sobre o shell 
 
Como já explicamos anteriormente, o shell é um programa capaz de permitir que o usuário envie comandos para o sistema 
(por isso também é chamado por alguns de interpretador de comandos). Entre os usos que podemos fazer do shell estão: a 
interatividade com o sistema, a chamada às aplicações e a realização de programação para que o sistema execute tarefas. 
 
Como podemos ver, o shell é muito mais que um simples interpretador de comandos, alias, seu maior poder está 
justamente em ser dotado de uma poderosa e completa linguagem de programação chamada ‘shell script’, e tudo isso 
diretamente em seu terminal. 
 
A shell original do Unix era Bourne Shell (sh) ainda disponível em praticamente todos os sabores de Unix, entretanto, a 
Bourne Shell não evoluiu muito, por isso um grupo de pessoas de Berkeley desenvolveu uma shell alternativa que tivesse 
capacidades de histórico de funções, controle de sub-processos (jobs), além de recursos mais avançados de programação, 
surgindo o C Shell (csh). Por outro lado, o C Shell apresenta uma sintaxe de programação um tanto diferente e 
incompatível com a Bourne Shell (note que o C da C Shell significa que derivaram muitas coisas de sua sintaxe a partir da 
linguagem C, mas isso não significa que é a linguagem C dentro da shell!!!). Por este motivo, David Korn, do Bell Labs, 
desenvolveu uma nova shell a partir da Bourne Shell, chamada Korn Shell (ksh) que mantinha compatibilidade de sintaxe 
com a Bourne Shell e apresentava um conjunto de recursos superior a da C Shell, tornando-se rapidamente uma das shells 
mais utilizadas. Por outro lado, a Free Software Foundation, mantendo seus objetivos em produzir um sistema operacional 
clone do Unix (leia-se GNU/Linux), reescreveu o Bourne Shell a partir do zero, implementando as funcionalidades 
existentes na Korn Shell e outras mais, mantendo ainda compatibilidade com o padrão POSIX. Apesar de muito parecida 
com a Korn Shell, não se pode dizer que o Bash é um clone da Ksh. 
 
A partir de agora, vamos concentrar nosso estudos no shell Bash, mencionando um pouco sobre a Ksh. 
 
Veremos mais adiante onde a shell default do usuário é definida e como alterar esta configuração. Por enquanto vamos 
nos concentrar em verificar qual é a nossa shell atual e como executar o bash, caso esta não seja nossa shell padrão: 
 
Procedimento: Verificação da shell atual do usuário 
 Terminal 
 
 
 
 Sh-2.05b$ ps 
 PID TTY TIME CMD 
17390 pts/0 00:00:00 sh 
17509 pts/0 00:00:00 ps 
 
 
 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 21 
 
Como podemos ver no exemplo acima, a shell que estamos usando é a Bourne Shell (sh). Para carregarmos a shell Bash. 
Basta chamarmos através do comando abaixo (a nova verficação está na sequência). 
 
Procedimento: Carga da shell Bash e verificação da shell atual do usuário 
 Terminal 
 
 
 
 Sh-2.05b$ /bin/bash [root@dagobah home]> ps 
 PID TTY TIME CMD 
17310 pts/0 00:00:00 bash 
17511 pts/0 00:00:00 ps 
 
 
 
4.1.3 Introdução ao bash 
 
O Bash (e Ksh) são shells avançadas que oferecem ao usuário funcionalidades avançadas como: 
 
§ Redirecionamento da entrada e saída (I/O) 
§ Suporte a metacaracteres 
§ Variáveis de ambiente 
§ Linguagem de programação shell script compatível com o Bourne Shell, extendida 
§ Controle de jobs 
§ Edição da linha de comando corrente 
§ Histórico de comandos com recursos de busca reversa 
§ Suporte a funções aritméticas em inteiros, 
§ Suporte a arrays 
§ Suporte a alias de comandos 
§ outras 
 
Iniciando o aprendizado do uso do bash/ksh, apresentamos a seguir como utilizar algumas funcionalidades úteis. 
4.1.3.1 Navegação no Histórico e Comandos de Edição 
 
O Unix possui dois conhecidos editores de texto que passaram a ser adotados como padrão das shells para navegação e 
edição de comandos. São eles o ‘vi’ e o ‘emacs’. Em ambas shells, o usuário poderá selecionar qual o editor de sua 
preferência para compatibilizar a interface dos comandos. 
 
A seleção do editor é feita através de uma ou às vezes duas variáveis de ambiente. Para escolher o editor desejado, basta 
atribuir o nome do mesmo à estas variáveis e exportá-las para o ambiente para que se tornem efetivas: 
 
Procedimento: Selecionar o editor desejado para a shell (emacs no exemplo abaixo) 
 Terminal 
 
 
 
 [root@dagobah home]$ EDITOR=emacs 
[root@dagobah home]$ VISUAL=emacs 
[root@dagobah home]$ export EDITOR VISUAL 
 
 
 
 
 
A seguir apresentamos uma tabela com os principais comandos de navegação e edição: 
 
Descrição vi emacs 
Movimenta para o comando anterior do histórico k CTRL-p 
Movimenta para o comando seguinte do histórico j CTRL-n 
Busca o comando anterior que contenha a string informada /string CTRL-r string 
Move o cursor um caracter para trás h CTRL-b 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 22 
 
Move o cursor um caracter para frente l CTRL-f 
Move o cursor uma palavra para trás b ESC-b 
Move o cursor uma palavra para frente w ESC-f 
Apaga o caracter anterior X DEL 
Apaga o caracter sobre o cursor x CTRL-d 
Apaga a palavra a frente do cursor dw ESC-d 
Apaga a palavra atrás do cursor db ESC-h 
 
4.1.3.2 Arquivos Especiais 
 
Tanto a bash quanto a ksh, possuem alguns arquivos especiais onde estão os parâmetros de incialização das mesmas, lidas 
por elas quando invocadas. 
 
No caso da bash: 
 
§ /etc/profile: Executado automaticamente no início do processo de login 
§ ~/.bash_profile, ~/.bash_login ou ~/.profile: Executadas automaticamente no processo de login 
§ ~/.bashrc: Lida e carregada no final do processo de login 
 
No caso da ksh: 
 
§ /etc/profile: Executado automaticamente no início do processo de login 
§ ~/. profile: Executadas automaticamente no processo de login 
§ $ENV: Variável de ambiente setada pelos arquivos anteriores que especifica um arquivo a ser lido e carregado 
quando uma nova ksh é criada 
 
4.2 Comandos no Unix 
 
Antes de iniciarmos a discussão sobre cada comando do Unix, vamos entender como é padronizado o funcionamento de um 
comando neste sistema operacional. 
 
Já vimos que todo comando é um programa, e quando está em execução é chamado de processo. Todo processo no Unix 
tem a seguinte estrutura: 
 
 
 
As entradas do processo podem ser de 3 tipos: Pela STDIN (Standard Input) que por default é o teclado do terminal, pelas 
variáveis de ambiente e pelos parâmetros passados pela linha de comando. Os parâmetros da linha de comando 
normalmente possuem uma sintaxe dos seguintes tipo: 
 
§ programa –opção 
§ programa –opção argumento 
§ programa --opção-por-extenso 
ENTENDENDO O UNIX 
 
 
 
Marc io Ca lasa ns 23 
 
§ programa --opção-por-extenso argumento 
 
A saída do processo, por default, está direcionada para a STDOUT (Standard Output) que é o vídeo do terminal. 
 
Uma outra saída dos processos é a saída das mensagens de erros, chamada de STDERR (Standard Error) que normalmente

Outros materiais