Você está na página 1de 41

FACULDADE DE TECNOLOGIA DE GUARATINGUETÁ

LINUX

Adiel Lemos
Bruno Michael
Célio de Souza
Eliphas Siqueira
Rubens Levy
Wanessa Laís

Trabalho apresentado à Faculdade de


Tecnologia de Guaratinguetá, para a disciplina
Sistemas Operacionais do curso de Tecnologia
em Informática.

Prof. José Geraldo

Guaratinguetá - SP
2009
2

SUMÁRIO

1 Introdução ................................................................................................................................ 3
1.1 Origens do sistema ........................................................................................................... 3
2 O sistema operacional Linux ................................................................................................... 6
2.1 Características ................................................................................................................... 6
2.2 Estrutura ........................................................................................................................... 6
2.2.1 Kernel ........................................................................................................................ 6
2.2.2 Shell ........................................................................................................................... 7
2.2.3 Biblioteca-Padrão ...................................................................................................... 7
2.2.4 Utilitários ................................................................................................................... 7
2.3 Gerenciamento de Processos ............................................................................................ 7
2.3.1 Processos ................................................................................................................... 8
2.3.2 Atributos de processos ............................................................................................... 9
2.3.3 Atributos de execução.............................................................................................. 10
2.3.4 Classificação dos processos ..................................................................................... 11
2.3.5 Comandos para processos........................................................................................ 13
2.4 Gerenciamento de Arquivos ........................................................................................... 14
2.4.1 Privilégios ................................................................................................................ 14
2.5 Partições e Sistemas de Arquivos ................................................................................... 15
2.5.1 Identificação de discos e partições em sistemas Linux ............................................... 16
2.5.2 Sistema de Arquivos ................................................................................................ 18
2.5.3 Características dos dispositivos montados .............................................................. 20
2.5.4 Comandos específicos ............................................................................................. 21
2.6 Utilização do Sistema Operacional................................................................................. 23
2.6.1 Live CD ................................................................................................................... 23
2.6.2 Distribuições ............................................................................................................ 26
2.6.2 Ambientes Gráficos ................................................................................................. 31
2.6.4 Comandos de Sessão ............................................................................................... 34
2.7 Gerenciamento de Usuários e Grupos ............................................................................ 35
2.7.1 Usuários e Grupos ................................................................................................... 36
2.7.2 Comandos ................................................................................................................ 40
1 Introdução

Para que esses objetivos sejam traçados primeiro é elaborado o planejamento

estratégico da organização que contempla um conjunto de providências a serem tomadas

pelos executivos que estarão definindo as intenções da organização em relação ao mercado

em que atua, e possíveis oportunidades de negócio a serem exploradas. A partir do

planejamento estratégico da empresa serão traçados planejamentos a médio prazo para cada

departamento, e somente aí é que será analisado e traçado os objetivos individuais.

1.1 Origens do sistema

Tudo começou em 1983, pouco depois que a IBM lançou seu primeiro PC e a

Microsoft sua primeira versão do DOS. Richard Stallman criava a Free Software Foundation,

que ao longo da década produziu a licença GNU e toda a base filosófica relacionada a ela e,

mais importante, um conjunto de ferramentas, como o editor Emacs e o compilador GCC.

O Linux foi originalmente desenvolvido como um passatempo de Linus Torvalds. Ele

queria um sistema operacional que fosse semelhante a um Unix, com todas as suas

funcionalidades e, ainda, que pudesse utilizá-lo num PC.

A partir dessa idéia, Linus começou a trabalhar nesse que seria o futuro kernel do

sistema operacional que hoje denominamos Linux. Isso tudo aconteceu em meados de 1991,

quando Linus cursava a faculdade de Computação na Finlândia.

Em 5 de outubro de 1991 a seguinte mensagem circulou na usenet:

“Como eu mencionei há um mês está trabalhando em uma versão gratuita de um

sistema semelhante ao Minix para computadores AT-386. Ele já alcançou o estágio de ser

usável (embora possa não ser, dependendo do que você quer fazer), e pretendo distribuir o

código fonte. É apenas a versão 0.02..., mas já consegui rodar nele o bash, gcc, gnu-make,
4

gnu-sed, compress, etc."

Esta mensagem era assinada por Linus Torvalds, e ninguém adivinharia que ela estaria

marcando o início de um movimento que, menos de dez anos depois, já tem mais de trinta

milhões de seguidores.

Assim surgiu o que seria o primeiro kernel utilizável do Linux.

O fato de o código fonte estar amplamente disponível e poder ser utilizado de forma

muito liberal permitiu que muitos desenvolvedores passassem a trabalhar no sistema ainda em

sua fase embrionária, adicionando novos recursos num ritmo muito rápido. Mas, durante os

primeiros anos, o Linux ficou restrito a este círculo técnico, muito longe de ser usado em

larga escala.

Isso começou a mudar com o aparecimento da Internet. O Apache foi um dos

primeiros servidores Web a ser lançado e tornou-se rapidamente o mais usado numa época em

que existiam poucos concorrentes à altura. O Apache rodava em várias plataformas, mas o

Linux tornou-se a opção mais comum, por ser rápido e estável.

Pouco tempo depois veio o servidor Samba, que permitia compartilhar arquivos numa

rede Windows, de forma mais estável e mais barata que usando um servidor Windows.

Novamente, o Linux tornou-se a opção preferida.

Depois vieram os bancos de dados e muitas outras aplicações, mas todas tinham algo

em comum: sempre falávamos de servidores.

Por volta do final de 1994 foi lançada a primeira versão for Linux do Xfree. Ele é um

"servidor gráfico", uma interface gráfica usada em vários sistemas Unix. Basicamente, antes

do Xfree o Linux tinha apenas a velha interface de modo texto, o que explicava o fato dele só

ser popular entre programadores e administradores de sistemas.

Nesta época começaram a surgir as primeiras distribuições Linux, que eram um jeito
5

mais "fácil" de instalar o sistema. Ao invés de ficar compilando tudo, começando pelo Kernel

e passando por todos os aplicativos da Free Software Foundation e outros que você

pretendesse rodar, você simplesmente passava alguns dias editando arquivos de configuração

com a ajuda de alguns manuais mal escritos.

A despeito de todas as dificuldades iniciais, podemos dizer que as Distribuições Linux

fizeram para o software aquilo que os primeiros PCs fizeram para o hardware: A oportunidade

de expansão da computação pessoal.


2 O sistema operacional Linux

2.1 Características

O Linux é um sistema operacional multiprogramável, multiusuário, multiplataforma –

capaz de utilizar mais de um processador, multiprocessamento – criação de threads – e

implementação de memória virtual.

Escrito em linguagem de alto nível, este sistema operacional possui flexibilidade, com

a possibilidade de implementação de threads, suporte a mais de um protocolo de rede e várias

linguagens.

O Linux possui várias características que o diferem dos outros sistemas operacionais e que

o aproximam do UNIX, sendo um dos motivos da sua escolha em várias aplicações nas quais são

necessárias estabilidade e segurança.

2.2 Estrutura

A maior parte do núcleo do sistema operacional Linux é escrita em linguagem C, e ele é

capaz de implementar dois níveis de acesso, os modos kernel e shell.

2.2.1 Kernel

O kernel é o núcleo do sistema operacional, é a parte que controla diretamente o hardware

da máquina. Quando falamos de Linux, estamos nos referindo somente ao kernel do sistema. Tudo

que existe ao redor do kernel são aplicativos que compõem uma distribuição do Linux.

O Kernel seria como o cérebro e o coração de um sistema operacional. Ele sozinho não

serve para nada, mas sem ele o resto do corpo também não vai muito longe. Em 1991 a Free

Software Foundation ainda estava dando os primeiros passos no desenvolvimento do Hurd (que

ainda hoje está muito longe se ser concluído) enquanto o Linux de Linus Torvalds era utilizável

desde suas primeiras versões. O corpo encontrava o cérebro.


7

2.2.2 Shell

Shell é o nome genérico de uma classe de programas que funcionam como intepretador de

comandos e linguagens de programação script (interpretada) no UNIX. Os shells mas populares

são bash, csh, tcsh, ksh e zsh. O shell é a interface entre o usuário e o kernel. O usuário pode

escolher qual dos shells vai utilizar. O shell-padrão do Linux é o bash.

2.2.3 Biblioteca-Padrão

A biblioteca padrão implementa uma interface entre o os programas e o sistema

operacional.

2.2.4 Utilitários

Esta é a camada mais externa do sistema é a interface com o usuário, formada por diversos

programas utilitários.

2.3 Gerenciamento de Processos

A gerência de processos nada mais é do que a definição, análise e melhoria contínua

dos processos, com objetivo de atender as necessidades e expectativas dos clientes.


8

2.3.1 Processos

Nas execuções originais de Unix, um processo era a todo o programa executar. Para

cada programa, a semente mantida a par.

São informações ligadas diretamente aos processos, que devem ser tratadas no

gerenciamento:

 A posição atual da execução (tal como a espera de uma chamada do sistema

para retornar da semente), chamada freqüentemente o contexto do programa.

 Que limas o programa teve o acesso.

 Os credentials do programa (que o usuário e o grupo possuíram o processo,

para o exemplo).

 O diretório atual do programa.

 Que espaço de memória o programa teve o acesso e como foi colocado para

fora.

Um processo era também a unidade programando básica para o sistema operando-se.

Somente os processos foram permitidos funcionar no processador central.

Embora a definição de um processo possa parecer óbvia, o conceito das linhas faz tudo

deste mais ou menos bem definido. Uma linha permite que um único programa funcione em

lugares múltiplos ao mesmo tempo. Todas as linhas criadas (ou girou fora) por uma única

parte do programa mais das características que diferenciam processos de se. Para o exemplo,

linhas do múltiplo que originam da mesma informação da parte do programa em limas

abertas, em credentials, no diretório atual, e na imagem da memória. Assim que uma das

linhas modificar uma variável global, todas as linhas vêem o valor novo melhor que velho.

Muitas execuções de Unix (licença da Canonical, incluindo o sistema V do AT&T)

redesenhado para fazer a linhas a unidade programando fundamental para a semente, e a um


9

processo transformaram-se uma coleção das linhas que compartilharam de recursos. Enquanto

assim muitos recursos foram compartilhados entre linhas, a semente poderia comutar entre

linhas no mesmo processo mais rapidamente do que poderia executar um interruptor cheio do

contexto entre processos. Isto resultou em a maioria de sementes de Unix que têm um modelo

de processos two-two-tiered que se diferenciasse entre linhas e processos.

De forma resumida:

 Processo é um programa em execução.

 O Linux é responsável por gerenciar os processos de forma a otimizar a

utilização da CPU mudando o status do processo.

 No diretório /proc é criado um subdiretório para cada processo em execução.

 O Linux cria uma hierarquia de processos onde o processo inicial é chamado

de “pai” e os criados a partir deste são chamados de “filho”.

 A união de vários processos é chamada de sessão e esses processos podem ser

visualizados e diferenciados.

2.3.2 Atributos de processos

 Um processo pode ter prioridade variando de -20 (maior prioridade) a 19

(menor prioridade), sendo 10 (dez) o padrão.

 Vários atributos controlam sua execução:

 PID – Número único de Identificação do Processo

 PPID – PID do processo Pai que iniciou o Processo

 UID – Idenificador do Usuário que iniciou o Processo

 GID – Idenificador do Grupo que iniciou o Processo

 EUID – Identificação do UID do usuário efetivo que originou o Processo.


10

 EGID - Identificação do GID do grupo efetivo que originou o Processo.

 TTY – Terminal de console onde se originou o Processo

2.3.3 Atributos de execução

 Quando um processo está sendo executado, passa por vários estados. O

escalonador de tarefas do kernel decide, de acordo com a prioridade e a ordem

das suas filas de execução, quando ceder a CPU a esse processo, que para o

estado de running (execução);

 Quando seu espaço de tempo de execução (slice) esgotar, passará novamente

para o estado de ready aguardando um novo slice.;

 Se este processo tentar acessar um periférico que estiver ocupado, passará

então para waiting até a liberação para operações de entrada e saída;

 No final da execução, o processo pode ser morto. Processos que terminam sem

seu pai ser informado podem entrar no estado zombie (zumbi);

 Os processos encerrados normalmente entram no estado dead (morto).

A figura abaixo ilustra graficamente como a execução dos processos acontece no

Linux.
11

2.3.4 Classificação dos processos

Quanto à execução:

 Foreground (primeiro plano) - Inicializados no terminal de comandos, podem

interagir com os usuários exibem a sua execução na saída padrão.

 Background (segundo plano) - Inicializados no terminal de comandos, não

interagem com os usuários e não exibem sua execução na saída padrão. Estes

comandos não prendem o prompt e permitem que outros processos sejam

inicializados no mesmo terminal.

o Para colocar um processo em backgroud use <CTRL>+<Z> ou inicie-o

pelo terminal com um & („e‟ comercial).

Quanto ao tipo, podem ser classificados como:

 Interativos - Iniciados num terminal e controlados por ele.

 Lote (batch) - Scripts que executam vários programas que podem ser

agendados e suas saídas podem ser enviadas por email para os usuários.
12

 Serviços (Daemons) - Permanecem em execução normalmente da inicialização

do Linux e enquanto o Linux estiver num mesmo RunLevel. São executados

em background e suas saídas são registradas nos sistemas de Log do Linux.

Normalmente controlados pelo aplicativos services e chkconfig.


13

2.3.5 Comandos para processos

Como quase tudo, quiçá tudo, no Linux, os processos também são controlados

principalmente por comandos. Os principais comandos de processos no Linux são:

 bg [JobID]

o Coloca um processo em background.

 fg [JobID]

o Coloca um processo em foreground.

 jobs [opções]

o Lista os processos em execução em background.

 ps [opções]

o Exibe informações sobre os processos ativos.

 top [opções]

o Exibe os processos continuamente e interativamente.

 free [opções]

o Exibe informações sobre a memória física e de swap.

 kill [opções] [sinal] <PID>

o Finaliza um processo pelo PID mudando seu (status).

 killall [opções] [sinal] <nome_do_processo>

o Finaliza um processo pelo nome alterando seu status.

A lista de sinais pode ser obtida com kill -l, sendo os mais importantes:

1 – SIGHUP: Relê as configurações do processo sem finalizá-lo.

9 – SIGKILL: Encerra o processo sem aguardar a finalização dos seus sub-

processos.
14

15 – SIGTERM: Termina a execução de um processo, finalizando antes, todos

seus agendamentos e cancelando novas conexões.

2.4 Gerenciamento de Arquivos

2.4.1 Privilégios

O gerenciamento de privilégios permite ao administrador do sistema definir políticas

para acesso dos usuários e grupos aos arquivos e diretórios.

Estas proteções são organizada em três classes:

 Privilégios do DONO: é aquele que criou o arquivo.

 Privilégios do GRUPO: é o grupo primário a que o usuário dono pertence.

 Privilégios dos OUTROS: Quando o usuário não é o DONO nem pertence ao

GRUPO.

Cada classe é composta de níveis de permissões: Leitura (r), Escrita (w) e Execução

(x).

Para alterar as permissões de acesso de arquivos e pastas via linha de comando você

deve usar o comando chmod. A sintaxe dele parece um pouco complicada à primeira vista,

mas nada que um pouco de prática não possa resolver:

# chmod 744 arquivo

Temos aqui o comando chmod propriamente dito, o arquivo ou pasta que terá suas

permissões de acesso alteradas e um número de três dígitos que indica as novas permissões

para o arquivo.
15

Os três números indicam respectivamente:

 7 : Permissões para o dono do arquivo;

 4 : Permissões para o grupo;

 4 : Permissões para os demais usuários.

Cada permissão possui um número:

 4 : Leitura;

 2 : Gravação;

 1 : Execução.

Você simplesmente soma estes números para ter o número referente ao conjunto de

permissões que deseja:

 0 : Sem permissão alguma, se for uma pasta o usuário sequer pode ver o

conteúdo;

 1 : Só execução (não é possível ler o arquivo ou alterá-lo, apenas executar um

programa);

 4 : Apenas leitura;

 6 (4+2) : Leitura + gravação;

 7 (4+2+1): Controle total: leitura + gravação + execução.

2.5 Partições e Sistemas de Arquivos

O Linux utiliza diretórios e arquivos para referenciar a todos os dispositivos anexados

ao sistema. Quando montamos um dispositivo (CDROM, Floppy, Zip driver, partições, NFS,

FTP...) este ficará acessível pelo diretório apontado na montagem. Este diretório fica

conhecido por "ponto de montagem". Permissões de arquivos e diretórios

Um sistema Linux geralmente tem uma estrutura de diretórios um pouco complexa. Os


16

arquivos ali dispostos obedecem a certa ordem e uma lógica fazendo com que cada diretório

do sistema tenha uma finalidade específica.

Cada sistema de arquivos tem uma característica em particular, mas seu propósito é o

mesmo: Oferecer ao sistema operacional a estrutura necessária para ler/gravar os

arquivos/diretórios.

2.5.1 Identificação de discos e partições em sistemas Linux

No Linux, os dispositivos existentes em seu computador (como discos rígidos,

disquetes, tela, portas de impressora, modem) são identificados por um arquivo referente a

este dispositivo no diretório /dev.

A identificação de discos rígidos no Linux é feita da seguinte forma:

/dev/hda1

| | ||

| | | |_Número que identifica o número da partição no disco rígido.

| | |

| | |_Letra que identifica o disco rígido (a=primeiro, b=segundo, etc...).

| |

| |_Sigla que identifica o tipo do disco rígido (hd=ide, sd=SCSI, xt=XT).

|_Diretório onde são armazenados os dispositivos existentes no sistema.

Abaixo algumas identificações de discos e partições em sistemas Linux:

* _/dev/fd0_ - `Primeira unidade de disquetes'.

* _/dev/fd1_ - `Segunda unidade de disquetes'.

* _/dev/hda_ - `Primeiro disco rígido na primeira controladora IDE do micro

(primary master)'.
17

* _/dev/hda1_ - `Primeira partição do primeiro disco rígido IDE'.

* _/dev/hdb_ - `Segundo disco rígido na primeira controladora IDE do micro

(primary slave)'.

* _/dev/hdb1_ - `Primeira partição do segundo disco rígido IDE'.

* _/dev/sda_ - `Primeiro disco rígido na primeira controladora SCSI'.

* _/dev/sda1_ - `Primeira partição do primeiro disco rígido SCSI'.

* _/dev/sdb_ - `Segundo disco rígido na primeira controladora SCSI'.

* _/dev/sdb1_ - `Primeira partição do segundo disco rígido SCSI'.

* _/dev/sr0_ - `Primeiro CD-ROM SCSI'.

* _/dev/sr1_ - `Segundo CD-ROM SCSI'.

* _/dev/xda_ - `Primeiro disco rígido XT'.

* _/dev/xdb_ - `Segundo disco rígido XT'.

É importante entender como os discos e partições são identificados no sistema, pois

será necessário usar os parâmetros corretos para montá-los.

Cada disco pode ter de uma até dezesseis partições onde cada partição é representada

por um número inteiro. Por exemplo /dev/hda1 será a primeira partição se houver outra

partição ela será a /dev/hda2 e assim por diante sendo que a mesma regra se pratica nos discos

SCSI.
18

Existem quatro tipos de partições:

 Partições primárias - Cada disco pode conter até quatro partições primárias elas

contêm pelo menos um sistema de arquivos e pelo menos uma deve ser criada.

Uma dessas partições deve ser marcada como ativa para que a carga do sistema

operacional seja possível.

 Partição estendida - Esse tipo de partição é um contêiner de partições lógicas, ele

não pode conter nenhum sistema de arquivos e um disco pode ter somente uma

partição estendida.

 Partições lógicas - As partições lógicas são subpartições que existem em conjunto

com a partição estendida, podem-se ter doze partições desse tipo e elas podem ser

nomeadas á partir do número cinco até o dezesseis. Podemos ter no máximo 15

partições com sistemas de arquivos em único disco, sendo três primárias e doze

lógicas.

 Partições de swap - São partições que tem o objetivo de aumentar a performance

do sistema, ela possibilita que o Linux tenha uma memória virtual em disco. Ela

trabalha como um arquivo de troca de dados entre a memória física e o disco.

2.5.2 Sistema de Arquivos

Sistema de arquivos é a forma que o sistema operacional usa para representar

determinada informação em um espaço de armazenagem. É o método de identificar e indexar

as informações que estão armazenadas em qualquer mídia: disquetes, discos rígidos, drives

em memória, CDs, etc.

Quando se prepara um disco para o trabalho através do processo de formatação física,

criam-se os meios magnéticos necessários para armazenar os dados. Este processo faz uma
19

preparação do dispositivo de armazenagem para que ele possa receber um sistema de arquivos

e futuramente os dados do usuário. Um sistema de arquivos, portanto, é necessário para

manter padrões, para controlar o tamanho das partições, permissões de arquivos, tamanho dos

arquivos e sua organização, entre muitas outras funções.

O Linux possui um sistema de acesso ao sistema de arquivos através de restrições

onde, a cada arquivo ou diretório, são associadas permissões para o dono, o grupo e outros

usuários.

Todo arquivo ou diretório são protegidos pelas suas permissões determinando assim

quais usuários têm acessos a eles e com que finalidade.

Entre os sistemas de arquivos existentes posso citar:

* Ext2' - Usado em partições Linux Nativas para o armazenamento de arquivos. É

identificado pelo código 83. Seu tamanho deve ser o suficiente para acomodar todos os

arquivos e programas que deseja instalar (você encontra isto no manual de sua distribuição).

* Ext3' - Este sistema de arquivos possui melhorias em relação ao ext2, como

destaque o recurso de journaling. Ele também é identificado pelo tipo 83 e totalmente

compatível com o ext2 em estrutura. O journal mantém um registro de todas as operações

realizadas no sistema de arquivos, caso aconteça uma queda de energia elétrica (ou qualquer

outra anormalidade que interrompa o funcionamento do sistema), o fsck verifica o sistema de

arquivos no ponto em que estava quando houve a interrupção, evitando a demora para checar

todo um sistema de arquivos, que pode levar minutos em sistemas de arquivos muito grandes.

* Swap' - Usado em partições Linux Swap para oferecer memória virtual ao sistema.

Note que é altamente recomendado o uso de uma partição Swap no sistema (principalmente se

você tiver menos que 16MB de memória RAM). Este tipo de partição é identificado pelo

código 82.
20

* proc' - Sistema de arquivos do kernel.

* FAT12' - Usado em disquetes no `DOS'

* FAT16' - Usado no `DOS' e oferece suporte até discos de 2GB

* FAT32' - Também usado no `DOS' e oferece suporte a discos de até 2 Terabytes

2.5.3 Características dos dispositivos montados

As características dos dispositivos montados ou preparados para serem montados estão

em dois arquivos.

/etc/fstab

O arquivo /etc/fstab permite que as partições do sistema sejam montadas facilmente

especificando somente o dispositivo ou o ponto de montagem. Este arquivo contém

parâmetros sobre as partições que são lidas pelo comando mount. Cada linha deste arquivo

contém a partição que desejamos montar, o ponto de montagem, o sistema de arquivos usado

pela partição e outras opções. O arquivo "fstab" tem a seguinte forma:

Dispositivo P. Mont. Tipo Opcoes dump ordem

/dev/hda1 / ext2 defaults 0 1

/dev/hda2 /boot ext2 defaults 0 2

/dev/hda3 /win vfat defaults,noauto 0 0

/dev/hdg /cdrom iso9660 defaults,noauto 0 0

Os campos do "/etc/fstab" são:

 Dispositvo de Origem

o As origens disponíveis estão no diretório "/dev" ou são sistemas

externos ao computador como compartilhamentos NFS ou FTP.


21

 Ponto de montagem

o Destino para o dispositivo montado.

 Tipo

o É a indicação do tipo de arquivo montado.

 Opções

o Algumas das opções que indicarão como será montado o dispositivo:

 exec Permite (exec) ou não (noexec) a execução de arquivos

bináriosuser Permite (user) ou não (nouser) a

montagem/desmontagem pelo usuárioro Monta para somente

leiturarw Monta para leitura e escrita auto Será (auto) ou não

(noauto) montado na inicialização.

 Dump

o Indica (1) ou não (0) se será feito um backup do sistema em questão.

 Ordem

o Indica ordem em que este dispositivo será checado durante a

inicialização, se usar 0 este sistema não será checado.

/etc/mtab

O arquivo "/etc/mtab" contém as informações dos arquivos montados atualmente e

suas características.

2.5.4 Comandos específicos

mount [-fnrsvw] [-t vfstype] [-o opções] dispositivo dir

Todos os arquivos acessíveis em um sistema Unix estão organizados em uma grande

árvore, a hierarquia de arquivos, iniciada pelo raiz sim bolizada como /. Estes arquivos podem

estar distribuídos por diversos dispositivos. O comando mount destina-se a incluir o sistema
22

de arquivos encontrado em algum dispositivo à grande árvore de arquivos.

As opções mais comuns são:

 a - Monta todos os dispositivos listados no "/etc/fstab"

 n - Monta sem registrar em "/etc/mtab"

 r - Monta somente em leitura (read only)

 t - Informa o tipo (type) de sistema de arquivos que será montado.

 o - Monta uma imagem com sistema de "loopback"

 máquina - Informa que o recurso está em outro servidor

 timeout –n - Informa o tempo, em décimos de segundos, que o cliente NFS irá

esperar por uma requisição completar. O valor padrão é 0,7 segundos.

umount [diretório]

Desmonta o ponto de montagem feito com o "mount".

Este comando só será concluído se o usuário não estiver utilizando recursos deste

diretório montado.

dd if=[origem] of=[destino]

Cria uma imagem de um dispositivo. Uma imagem é uma cópia fiel do dispositivo

contendo informações do conteúdo e informações físicas. Usado para criar disco de boot de

instalação.
23

eject [opções]

Este comando ejeta dispositivos. Sem opções é aplicado para o CDROM. Para obter

sucesso neste comando não devemos estar utilizando o dispositivo.

t - Fecha o CDROM

r - Ejeta o CDROM

fdformat -n [dispositivo]

O comando fdformat executa uma formatação de baixo nível em um disquete.

Este comando executa a formatação de baixo nível (física), segundo um mapa

existente em "/dev/fdnhXXXX", onde (n) é número do disquete e o (h) será minúsculo para

baixa densidade ou (H) para alta densidade e (XXXX) será o tamanho do disquete em bytes.

A opção "-n" desabilita a verificação que será feita após a formatação.

2.6 Utilização do Sistema Operacional

2.6.1 Live CD

Um dos grandes diferenciais do Linux é que algumas versões do sistema operacional

são disponibilizadas tanto para instalação quanto para rodarem como um Live CD.

Segundo Morimoto (2008a), um Live CD nada mais é que "uma versão pré-instalada

do sistema, que utiliza um conjunto de truques para rodar diretamente a partir do CD-ROM".

Ou seja, o sistema operacional é compilado de forma que sua execução aconteça independente

dos discos rígidos e de instalações.

Antes de explicar como funciona o Live CD, no entanto, deve-se explicar como

funciona a execução de um sistema operacional.

Os sistemas operacionais convencionais, incluindo-se o Linux, utilizam o CD ou DVD


24

somente para a execução do instalador, que descompacta os arquivos contidos no disco

removível e transferem para o disco rígido conforme suas configurações.

Já no caso dos Live CDs, a utilização do sistema operacional acontece de forma muito

diferente. Quando rodam a partir de um CD, os sistemas operacionais descompactam os

arquivos on-the-fly, ou seja, apenas quando vão utilizá-los, ao contrário dos sistemas

operacionais convencional, em que os arquivos permanecem descompactados, sejam eles

utilizados ou não. Dessa forma, o sistema operacional que soma dois gigabytes de dados passa

a caber em um CD de 700MB.

Além disso, afirma Morimoto (2008a), os Live CDs são capazes de "melhorar o

desempenho do sistema, aumentando a taxa de transferência efetiva do CD-ROM".

Os motivos da utilização dos Live CDs são muitos, mas o principal é o fato de não

haver a necessidade de instalação em disco, o que atrai os mais conservadores e que não

possuem conhecimentos amplos em informática, que geralmente não acreditam na

possibilidade de execução de um sistema operacional completo a partir de uma unidade de

disco read-only. Essa possibilidade permite que esses usuários conheçam o sistema

operacional, em especial o Linux, sem nenhum compromisso ou comprometimento de seus

dados gravados no disco rígido, permitindo a eles se adaptarem aos poucos ao sistema,

aprendendo a utilizá-lo gradualmente, passo-a-passo.

Há também o bom desempenho do sistema, que permite que o sistema operacional que

roda direto da unidade de CD obtenha a taxa de transferência de um disco rígido magnético,

tornando a execução do Live CD igual à execução de sistemas operacionais instalados.

"A idéia é que um CD-ROM de 52x é capaz de ler a, em média, 5.8 MB/s, pois como o

CD gira sempre na mesma velocidade, as informações gravadas nas trilhas da parte externa do

CD (mais longas) são lidas a mais ou menos o dobro da velocidade das do centro (que são
25

mais curtas). Um CD-ROM de 52x lê a 7.8 MB/s nas trilhas externas mas a apenas 3.9 MB/s

nas internas. Como o CD-ROM é gravado a partir do centro, na maior parte do tempo ele lê os

dados a 5 ou 6 MB/s. No entanto, ao ler 5 MB/s de dados compactados a uma razão de 3x, ele

estará lendo, na prática, a quase 15 MB/s, um valor muito mais próximo do da taxa de

transferência oferecida por um HD." (MORIMOTO, 2008a).

Entretanto, para Morimoto (2008a) a "por causa da compressão o trabalho do

processador passa a ser maior, pois, além de processar os dados referentes aos programas, ele

tem que, ao mesmo tempo, descompactar os dados lidos pelo CD-ROM."

Sendo assim, antes de partir para a utilização de um Live CD, deve-se levar em

consideração a configuração de hardware do computador, pois um computador muito antigo

pode comprometer a execução do sistema operacional e passar uma imagem diferente da real

imagem do sistema instalado.

Uma outra aplicação dos Live CDs Linux permite a recuperação de arquivos em um

sistema Windows com inicialização corrompida. Morimoto (2008b) afirma que para recuperar

esses arquivos "basta dar boot usando o live-CD, acessar a partição e copiar os arquivos

desejados para um HD externo (ou qualquer outro dispositivo de armazenamento removível)

ou para um compartilhamento de rede."

Além da recuperação de arquivos, há também a recuperação dos arquivos de sistema

para a inicialização do Windows, pois "você pode também substituir arquivos dentro da

partição. Isso permite que você tente recuperar a partição substituindo arquivos de sistema,

repare configurações manualmente, entre outras possibilidades" (MORIMOTO, 2008b).


26

2.6.2 Distribuições

Outro diferencial do Linux é a possibilidade de personalização funcional e gráfica do

sistema. A essas personalizações do sistema operacional dá-se o nome de distribuição, e cada

uma possui serviços, aplicativos, funcionalidades e interfaces gráficas diferentes.

Atualmente há disponíveis no mercado e na Internet várias distribuições, todas

diferentes entre si, mas a maioria delas engloba apenas personalizações, tanto em interface

gráfica quanto na lista de softwares inicialmente instalados com a distribuição. Sendo assim,

as distribuições que servem de base para as demais, conhecidas como distribuições principais,

são as únicas que se diferenciam entre si nos quesitos funcionalidade e interface, sendo todas

as demais variações dessas distribuições principais.

Partindo desse fato, podemos dividir as distribuições do Linux entre três vertentes: as

derivadas do Slackware (como o Slax), as derivadas do Debian (como o Ubuntu) e as

derivadas do Red Hat (como o Fedora e o Mandriva). Trataremos no decorrer do capítulo das

três principais distribuições – Slackware, Red Hat e Debian, além do Gentoo Linux.

2.6.2.1 Slackware

A distribuição Slackware Linux é a mais antiga em funcionamento. Ela foi lançada em

1993, e é uma distribuição extremamente conservadora, mantendo a tradição de estabilidade,

organização e pouca automatização dos sistemas Unix.

Morimoto (2009) afirma que o Slackware Linux é uma distribuição "que te obriga a

estudar e ir mais a fundo na estrutura do sistema para conseguir usar", e por isso muitos a

utilizam para aprendizado na utilização de sistemas Linux.

Sua instalação é feita no modo texto, com a seleção de itens e opções e a digitação de

pequenas variáveis do sistema, como senhas e aliases.


27

A figura abaixo mostra uma tela do processo de instalação.

2.6.2.2 Red Hat

Lançada no final de 1994, essa distribuição do Linux foi desenvolvida para aumentar a

automatização do sistema e tornar sua utilização mais fácil e agradável para o usuário

(MORIMOTO, 2009).

Foi a partir dessa distribuição que os pacotes de instalação tornaram-se amplamente

utilizados, o que facilitava a instalação de programas, pois não havia mais a necessidade de

amplos conhecimentos dos comandos no Linux para transformar os arquivos de configuração

em um aplicativo.

Mais tarde, por volta de 2003, houve a descontinuação da versão Desktop do Red Hat

(RHD) – sendo a última versão a Red Hat 9, passando a ser desenvolvida apenas a versão

Enterprise, que era uma versão comercializada voltada para empresas. A partir de então

começou a ser desenvolvido o Fedora, com a participação de parte dos desenvolvedores do

Red Hat Desktop e de voluntários, e o Fedora passou a ser, no lugar do RHD a distribuição

com o maior número de usuários.


28

As figuras abaixo mostram os ambientes de trabalho do Red Hat Desktop e do Fedora,

respectivamente.

Ainda baseado no Red Hat Linux, foi lançada em 1998 o Mandrake Linux, que passou

a utilizar o ambiente gráfico KDE 1.0 (explicado no item X do próximo capítulo).

Seu foco estava na facilidade de uso, e ele passou, depois de algum tempo, a ser

desenvolvido de forma independente (MORIMOTO, 2009).

A imagem abaixo mostra o ambiente de trabalho do Mandrake Linux 10.1.


29
30

O Conectiva Linux é a primeira distribuição Linux nacional e muito utilizada por

algum tempo aqui no Brasil, voltada e utilizada tanto por empresas quanto por usuários

domésticos. Em 2005, entretanto, houve a fusão entre o Conectiva Linux e o Mandrake Linux,

originando o Mandriva, e as equipes de desenvolvimento uniram-se para produzir e manter o

Mandriva.

2.6.2.3 Debian

O Debian, para Morimoto (2009), "é provavelmente a maior distribuição Linux não-

comercial, tanto em volume de desenvolvedores quanto em número de usuários, diretos e

indiretos".

Trazida a público em 2003 e terminada apenas três anos depois, o Debian Linux

sempre é lançado e produzido em três versões diferentes: Stable, a versão estável e com

suporte e atualizações; Testing, utilizada para testes de softwares; e Unstable, uma versão que

pode, a qualquer momento, deixar de funcionar, seja em razão de um software executado ou

por qualquer atualização que acontecer.

A filosofia das distribuições estáveis, que recebem esse nome pois param de ser

desenvolvidas com novas funções, passando a serem apenas atualizadas com correções de

segurança e bugs, é a de que se forem corrigidos os erros sem que nenhuma nova função seja

adicionada, ao fim das correções obter-se-á um sistema livre de falhas (MORIMOTO, 2009).

Além disso, o Debian, como o Slackware, é uma distribuição conservadora, e por isso

é mais utilizada em servidores do que em desktops.


31

2.6.2.4 Gentoo

Morimoto (2009) afirma que "o Gentoo inaugurou uma nova linhagem trazendo uma

abordagem diferente das demais distribuições para a questão da instalação de programas e

instalação do sistema".

O Gentoo Linux, diferente das demais distribuições que utilizavam pacotes de

instalação pré-compilados, utiliza um gerenciador de pacotes – Portage – que faz uso dos

códigos-fonte dos programas aliados a arquivos com parâmetros de compilação. Com isso,

você pode ganhar até 30% em processamento, mas perde tempo na instalação, que passa a ser

mais demorada.

Dentre as várias características do Gentoo está a possibilidade de três tipos de

instalação: a Stage 1, onde tudo é compilado; a Stage 2, e que é instalado um sistema base

pré-compilado e apenas os aplicativos são compilados; e a Stage 3, em que o sistema inteiro é

instalado, como em outras distribuições (MORIMOTO, 2009).

2.6.2 Ambientes Gráficos

Os ambientes gráficos são as partes mais personalizáveis do Linux. Isso porque o

Linux utiliza o servidor gráfico do Linux, o Xfree, que facilita o acesso dos programas à placa

de vídeo. Em outras palavras, o Xfree faz uma interface entre o gerenciador de janelas e a

placa de vídeo.

Dessa forma, afirma Morimoto (2009), "o gerenciador de janelas possui total liberdade

para alterar a forma, aparência e decoração das janelas e a forma como você pode organizá-las

e trabalhar com elas, o funcionamento da área de transferência e assim por diante".


32

Os gerenciadores de janelas mais comuns são o KDE e o GNOME, mas há outros,

como o Window Maker e o BlackBox. Neste trabalho, entretanto, abordaremos apenas o KDE

e o GNOME.

2.6.3.1 KDE

O KDE, segundo Morimoto (2009), "é um pouquinho a mais que um simples

gerenciador de janelas".

Além de fazer a gerência de janelas e animá-las, o K Desktop Environment possui

uma gama de softwares que o acompanham, desde editores de texto puro (Kedit), passando

pelos navegadores e gerenciadores de arquivos (Konqueror), até softwares mais elaborados e

funcionais, como o Kdeveloper, um software de programação visual.

Pelo fato de vir acompanhado de um grande leque de softwares, pela área de

transferência funcionar com todos os programas e por estar baseado em uma mesma

biblioteca – Qt, o que garante um visual semelhante a todos os aplicativos, o KDE pode ser

considerado um ambiente consistente (MORIMOTO, 2009).


33

A imagem abaixo mostra uma tela do ambiente KDE.

2.6.3.2 GNOME

O GNU Network Object Model Environment, ou simplesmente GNOME, é, assim

como o KDE, mais do que um gerenciador de janelas, e por isso é um dos mais utilizados

dentre as distribuições mais conhecidas.

Morimoto (2009) afirma que “os programas do KDE e do Gnome são perfeitamente

intercompatíveis, você pode perfeitamente rodar o Konqueror dentro do Gnome ou o Nautilus

dentro do KDE se quiser, desde que tenha tanto o Gnome quanto o KDE instalados no

sistema”.

Entretanto, o GNOME utiliza uma biblioteca diferente, a GTK+, e por esse motivo a

utilização de softwares KDE em ambiente GNOME (e vice-versa) pode tornar-se lenta, pois

além de carregar o software o sistema operacional precisa carregar também a biblioteca

correspondente (Morimoto, 2009).


34

2.6.4 Comandos de Sessão

No Linux, muitas as atividades rotineiras são extremamente simples utilizando-se

linha de comando, possibilitando adicionar esses atalhos na área de trabalho do usuário para

que ele realize essas atividades mais rapidamente.

Alguns comandos de sessão, que englobam desde a troca de usuário até a

reinicialização do sistema, possuem uma estrutura muitas vezes composta de apenas uma

palavra.

As mais importantes delas são:

 Login

o Esse comando termina a sessão atual e inicia uma nova.

 Logoff

o Termina a sessão do usuário.

 Exit

o Encerra o console de comandos ativo.

 Clear

o Limpa a tela do console em que é digitado.

 Echo

o Envia uma mensagem para o console.

 Reboot

o Reinicia o computador.

 Halt

o Desliga o computador.
35

 Shutdown

o Desliga o sistema de forma segura, enviando mensagens aos usuários

conectados em terminais.

Adicionando atalhos na área de trabalho, o usuário é poupado, então, de acessar menus

e de realizar vários cliques, passando apenas a ter que dar um ou dois cliques para desligar ou

reiniciar o computador.

Entretanto, esses ícones podem causar desligamentos acidentais, pois o usuário pode

errar de ícone em sua área de trabalho e perder dados, exigindo mais atenção do usuário ao

clicar em ícones em seu desktop.

2.7 Gerenciamento de Usuários e Grupos

Linux é um sistema multiusuário, cujas raízes remetem aos sistemas Unix. O sistema

pode ser usado por inúmeros usuários simultaneamente, sem que um atrapalhe as atividades

do outro, nem que possa alterar seus arquivos. Dois exemplos extremos seriam um servidor

LTSP, onde dezenas de usuários podem rodar aplicativos simultaneamente, via rede, através

de terminais burros conectados ao servidor principal, e um servidor web de shared hosting,

que pode hospedar milhares de sites diferentes, cada um administrado por um usuário

diferente. As restrições básicas de acesso são implementadas através de um sistema de

permissões simples, porém eficiente, que consiste num conjunto de três permissões de acesso

(ler, gravar e executar) e três grupos (dono, grupo e outros), que combinadas permitem fazer

muita coisa.

Os conceitos de conta de usuário e grupo são fundamentais para entender e

implementar um servidor.
36

2.7.1 Usuários e Grupos

Um usuário é alguém que possui uma identificação única no sistema, um nome e um

número. Uma mesma pessoa pode possuir mais de uma conta, criando nomes de acesso

diferentes.

Basicamente, existem dois tipos de contas:

 A conta do usuário comum, que utiliza o sistema e suas ferramentas, e

 A conta de super-usuário ou conta de root, com a qual é possível realizar as

configurações do sistema.

Um grupo é um conjunto de usuários geralmente criado quando se deseja que usuários

tenham permissão restrita a arquivos em comum. Isso é útil para garantir privacidade e

segurança dos dados.

Existem dois tipos de grupos:

 Grupo primário

o Grupo base usado nos privilégios de todos os arquivos e diretórios de

usuários. (/etc/passwd e /etc/group).

 Grupo secundário

o Demais grupos dos usuários. (/etc/group).

2.7.1.1 Criação

Para criar um usuário usam-se os dois comandos adduser (adduser <usuario>

especificando uma senha inicial) e passwd (passwd <usuário>, altera a senha

posteriormente) que permitem, respectivamente, adicionar novos usuários e alterar as senhas

de acesso posteriormente. As características das contas ficam armazenadas no arquivo

/etc/passwd e suas senhas no /etc/shadow, já os grupos ficam armazenados no /etc/group.


37

Ao criar um usuário, será criado um grupo com nome de usuário onde ele é o único

membro (caso este não seja modificado), isto devido ao Linux usar um padrão UGP (Grupo

Privado de Usuários). Também será criado um diretório home (guarda todas as configurações

e os arquivos do usuário) para este, será copiado o perfil base constante do diretório (/etc/skel)

e as propriedades de UID (Identificação do usuário), GIU e senhas seguirão o padrão do

arquivo de configuração (/etc/login.defs).

Quando um usuário é criado, sem qualquer opção, também será criado um grupo com

o mesmo nome do usuário.

Para cada usuário novo criado no computador será copiado o conteúdo do diretório

/etc/skel para seu diretório home.

O próprio usuário pode alterar a senha usando o comando passwd, desde que ele saiba

a senha antiga. Se o usuário esqueceu a senha, ele pode definir uma nova executando o

comando root, e o sistema pede a nova senha diretamente, sem solicitar a senha antiga.

Por não possuir restrições de segurança, a conta de root só deve ser usada para

manutenções no sistema e de preferência o menor tempo possível. Para evitar permissões

desnecessárias no sistema deve-se usar uma conta normal de usuário em operações comuns.

Se um arquivo for executado pelo usuário root e este contiver comandos ou códigos que

causem danos ao sistema, estes danos poderão ser irreparáveis.

2.7.1.2 Exclusão

Para remover um usuário anteriormente criado, utiliza-se o comando deluser (deluser

<usuario>), mas o comando remove apenas a conta, sem apagar o diretório home ou outras

pastas.

Para remover o usuário apagando também o diretório home, adicione o parâmetro


38

--remove-home (deluser <usuario> --remove-home) ou por segurança usando a opção

--backup, que cria um arquivo compactado, contendo os arquivos do usuário, salvo no

diretório onde o comando for executado (deluser <usuario> --remove-home –backup).

2.7.1.3 Caracteristicas das contas

As características das contas ficam armazenadas no arquivo "/etc/passwd" e suas

senhas no "/etc/shadow", já os grupos ficam armazenados no "/etc/group".

/etc/passwd

– Arquivo que contém as informações dos usuários.

– A estrutura deste arquivo é a seguinte:

usuário:X:UID:GID:Descrição:Home:Shell

• Usuário: é o nome em minúsculo do usuário (login name)

• X: é a representação da sua senha que está no arquivo "/etc/shadow"

• UID: é o número do usuário que vai de 0 "root" até 65534 "nobody"

• GID: é o número do grupo primário do usuário

• Descrição: uma descrição com nome, setor ou local de trabalho

• Home: identifica qual será o diretório Home do usuário, normalmente

"/home/user"

• Shell: shell que será executado após o login do usuário (/bin/sh, /bin/bash,

/bin/false)
39

/etc/group

– Arquivo que contém as informações dos grupos e de seus integrante

“secundariamente”.

– A estrutura deste arquivo é a seguinte:

grupo:X:GID:usuários

• Grupo : é o nome minúsculo do grupo

• X : é a representação da senha do grupo

• GID : é o número do grupo

• Usuários : é a lista de usuários que pertencem a este grupo separados por

vírgula.

/etc/shadow

– Arquivo que contém as informações das senhas dos usuários e suas validades e sua

estrutura é a seguinte.

• <usuários>

• <senha criptografada>

• <n dias, após 01/01/1970, da última alteração da senha>

• <n dias, após a criação do usuário, pode-se modificar sua senha>

• <n dias, após a criação do usuário, deve-se modificar sua senha>

• <n dias, antes que a senha expire, notificar o usuário>

• <n dias, após expirar a senha, desabilitar a senha>

• <n dias, após 01/01/1970, encerrar a conta do usuário>

• <campo reservado>
40

/etc/skel/

– Diretório com os arquivos-padrão utilizados como perfil durante a criação de um

usuário. Alguns arquivos são:

– .Xdefaults Informações para xterm

– .bash_logout Executado após logout

– .bash_profile Variávies de ambiente

– .bashrc Aliases e funções

– .xserverrc Comportamento Servidor X

/etc/login.defs

– Arquivo utilizado, durante a criação de um usuário, para impor limites das senhas,

definir GIU e UID.

2.7.2 Comandos

 groupadd <grupo> [opções]

o – Adiciona um grupo. <grupo> exclusivo e minúsculo.

 groupdel <grupo>

o Remove um grupo. <grupo> Deve existir e não pode conter usuários

primários.

 useradd <usuário> [opções] ou [adduser]

o Adiciona um usuário. <usuário> exclusivo e minúsculo. Por padrão, quando se

adiciona um usuário sem opções extras, será criado um grupo com mesmo

nome do usuário.
41

 userdel <usuário> [opções]

o Apaga um usuário. <usuário> Deve existir e não estar logado. Pode apagar

também o diretório home do usuário e todos os arquivos existentes neste

diretório home.

 su [opções] <usuário>

o Troca o id efetivo do usuário. Usado para manutenção.

 passwd [opções] <usuário>

 É usado para alterar a senha de autenticação de um usuário. Somente um super-usuário

pode atualizar a senha de outro usuário.

 chage [opções] <usuário>

o Muda as informações e validades de expiração das senhas.

 lastlog [opções]

o Mostra o último login do usuário no sistema, pesquisando o arquivo

/var/log/lastlog

 w [opções] <usuário>

o Mostra quem está logado e o que está executando.