Você está na página 1de 190

AES

ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes INDICE PREFCIO............................................................................................................................9 INTRODUO AO LINUX...............................................................................................10 Origem do Linux......................................................................................................................................10 Licenciamento e Verses do kernel do Linux................................................................................11 Distribuies Linux..................................................................................................................................12 Linux Standard Base (LSB).....................................................................................................................13 Viso geral do Sistema Operacional Linux..........................................................................................13 Vantagens do Linux.................................................................................................................................13 Conceitos Unix.........................................................................................................................................14 Tudo Arquivo....................................................................................................................................14 Case Sensitive.......................................................................................................................................14 Comandos.............................................................................................................................................14 Primeiros Passos.......................................................................................................................................14 Prompt de Login..................................................................................................................................14 bash........................................................................................................................................................15 logout.....................................................................................................................................................16 shutdown...............................................................................................................................................17 halt..........................................................................................................................................................17 reboot....................................................................................................................................................17 INSTALAO DO DEBIAN GNU/LINUX....................................................................18 Um pouco sobre o Debian.....................................................................................................................18 De onde surgiu o nome Debian?..................................................................................................18 Pronncia..............................................................................................................................................18 Quando surgiu?....................................................................................................................................18 Qual o significado dos codinomes das distribuies Debian?.....................................................18 Stable, Testing e Unstable..................................................................................................................19 Main, Contrib e Non-Free.................................................................................................................19 Iniciando a Instalao..............................................................................................................................20 Inicializando o instalador...................................................................................................................20 ESTRUTURA DE DIRETRIOS......................................................................................28 Hierarquia..................................................................................................................................................28 Caminho Absoluto..............................................................................................................................29 Caminho Relativo................................................................................................................................29 Localizao na Estrutura de Diretrios................................................................................................29 pwd.........................................................................................................................................................29 ls..............................................................................................................................................................29 cd............................................................................................................................................................31 $PATH..................................................................................................................................................32 Histrico de Comandos......................................................................................................................33 Teclas de Atalho..................................................................................................................................34 Tecla TAB.............................................................................................................................................34 Filesystem Hierarchy Standard..............................................................................................................35 /bin........................................................................................................................................................36 /boot......................................................................................................................................................36 /dev........................................................................................................................................................36 ___________________________________________________________________________ Pg. 2

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes /etc.........................................................................................................................................................37 /home....................................................................................................................................................37 /root......................................................................................................................................................38 /lib..........................................................................................................................................................38 /mnt.......................................................................................................................................................38 /opt........................................................................................................................................................38 /sbin.......................................................................................................................................................38 /tmp.......................................................................................................................................................38 /usr.........................................................................................................................................................39 /var........................................................................................................................................................39 /proc......................................................................................................................................................39 GERENCIAMENTO DE PACOTES................................................................................42 O gerenciador de pacotes do Debian...................................................................................................42 dpkg............................................................................................................................................................43 Listando os pacotes instalados no sistema......................................................................................43 Obtendo detalhes sobre um pacote Debian...................................................................................44 Exibindo status dos pacotes do sistema..........................................................................................45 Instalando e atualizando pacotes binrios do Debian...................................................................46 Padro de nomes dos arquivos binrios do Debian......................................................................47 Removendo pacotes binrios Debian..............................................................................................47 O Advanced Package Tool (APT)........................................................................................................48 Repositrios de pacotes do Debian..................................................................................................48 Adicionando um cdrom no sources.list...........................................................................................49 Adicionando repositrios web no sources.list................................................................................50 Utilizando o apt-get para gerenciar pacotes....................................................................................50 Programas auxiliares................................................................................................................................52 aptitude..................................................................................................................................................52 apt-show-versions................................................................................................................................53 apt-cache...............................................................................................................................................53 Exerccio...............................................................................................................................................54 O gerenciador de pacotes RedHat (RPM)...........................................................................................55 Consulta de pacotes RPM..................................................................................................................55 Instalao, desinstalao e atualizao de pacotes RPM...............................................................57 Instalao/Atualizao.......................................................................................................................58 Desinstalao........................................................................................................................................58 COMPILAO DE PROGRAMAS....................................................................................59 As Ferramentas do Projeto GNU.........................................................................................................59 Bibliotecas.................................................................................................................................................60 Gnu C Library......................................................................................................................................60 Gnu Libtool..........................................................................................................................................60 Ferramentas De Automao..................................................................................................................60 Autoconf...............................................................................................................................................60 M4..........................................................................................................................................................60 Automake..............................................................................................................................................60 Make.......................................................................................................................................................60 Compiladores............................................................................................................................................61 Gnu C Compiler..................................................................................................................................61 Diversos.....................................................................................................................................................61 Binutils...................................................................................................................................................61 ___________________________________________________________________________ Pg. 3

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Patch......................................................................................................................................................61 Obteno do Cdigo-Fonte...................................................................................................................62 Descompactao Do Cdigo-Fonte.....................................................................................................62 Local de Armazenamento.......................................................................................................................63 A Configurao, Compilao e Instalao do Pacote........................................................................63 Limpando o Diretrio do Pacote Compilado................................................................................63 Desinstalando um Pacote Compilado..............................................................................................64 Contedo da Documentao.................................................................................................................64 O Diretrio docs.................................................................................................................................64 Readme / Install..................................................................................................................................64 Copying.................................................................................................................................................64 Copyright..............................................................................................................................................64 Release...................................................................................................................................................65 Credits....................................................................................................................................................65 Changelog.............................................................................................................................................65 Funcionalidades Detalhadas...................................................................................................................65 ./configure............................................................................................................................................65 make.......................................................................................................................................................66 make deps / make depend.................................................................................................................66 make install...........................................................................................................................................67 make clean.............................................................................................................................................67 make uninstall.......................................................................................................................................67 Observaes Importantes para o Processo de Compilao.............................................................67 Manuteno do Cdigo-Fonte..........................................................................................................67 Aplicativos & Utilitrios.....................................................................................................................67 Drivers, Mdulos e Kernel................................................................................................................67 MANIPULAO DE ARQUIVOS E DIRETRIOS.......................................................69 mkdir..........................................................................................................................................................69 tree..............................................................................................................................................................70 rmdir...........................................................................................................................................................70 rm................................................................................................................................................................71 touch...........................................................................................................................................................71 cp.................................................................................................................................................................72 mv...............................................................................................................................................................74 cat................................................................................................................................................................75 tac................................................................................................................................................................76 ln..................................................................................................................................................................76 INODES...............................................................................................................................................76 Links Simblicos..................................................................................................................................77 Hardlinks...............................................................................................................................................77 GERENCIAMENTO DE USUARIOS E GRUPOS..........................................................79 Identificadores de Usurios e Grupos (UID e GID).........................................................................79 /etc/passwd..........................................................................................................................................79 /etc/shadow.........................................................................................................................................80 /etc/group............................................................................................................................................80 /etc/gshadow.......................................................................................................................................81 Gerenciamento de usurios....................................................................................................................81 Adicionando usurios com useradd.................................................................................................81 Definindo senhas com passwd..........................................................................................................83 ___________________________________________________________________________ Pg. 4

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Troca de Senhas...................................................................................................................................83 Removendo usurios com userdel....................................................................................................84 Aumentando a segurana com o comando chage..........................................................................85 Gerenciando informaes de usurios com chfn e finger............................................................87 Modificando o shell do usurio com chsh......................................................................................88 Verificando integridade dos arquivos de senhas com pwck.........................................................88 Convertendo/Revertendo o sistema de senhas shadow...............................................................89 Modificando contas de usurios com usermod..............................................................................89 Gerenciamento de grupos......................................................................................................................90 Obtendo Informaes com o comando id.....................................................................................90 Adicionando grupos com groupadd.................................................................................................91 Removendo grupos com groupdel...................................................................................................91 Adicionando usurios aos grupos.....................................................................................................92 Removendo usurios dos grupos......................................................................................................92 Modificando informaes sobre grupos..........................................................................................92 Definindo administradores de grupos com gpasswd....................................................................93 Trocando o grupo principal temporariamente com newgrp........................................................93 Verificando Integridade dos arquivos de grupos com grpck.......................................................94 PERMISSES DE ARQUIVOS E DIRETRIOS............................................................96 Conceitos...................................................................................................................................................96 Bits de atributo.....................................................................................................................................97 Bits de proteo...................................................................................................................................97 Notaes...............................................................................................................................................98 Tipos de arquivo..................................................................................................................................99 Entendendo as permisses na prtica................................................................................................100 Definindo Permisses com chmod................................................................................................101 Modo Simblico de Permisses......................................................................................................101 Modo octal de permisses...............................................................................................................103 Permisses de Acesso Especiais:....................................................................................................104 SUID ( Set User ID )........................................................................................................................104 SGID ( Set Group ID )....................................................................................................................105 Sticky ( Sticky bit ).............................................................................................................................106 Mscara de usurio (umask).............................................................................................................108 O SHELL BASH (BOURNE AGAIN SHELL)................................................................110 Redirecionamento..................................................................................................................................110 Entrada de dados padro (/dev/stdin)..........................................................................................110 Sada de dados padro (/dev/stdout)............................................................................................111 Sada de erros padro (/dev/stderr)...............................................................................................111 Operadores de Redirecionamento..................................................................................................111 Redirecionando a sada de erros padro (stderr)..........................................................................114 Redirecionamento com pipes: |.................................................................................................115 Diferenas entre o | e o >.......................................................................................................116 Tabela de Redirecionamentos.........................................................................................................117 Paginadores.........................................................................................................................................117 Caracteres especiais do bash (Metacaracteres)..................................................................................118 Executando mltiplos comandos em ordem determinada .......................................................119 Operadores de controle lgico: && e || (AND e OR).............................................................121 Expresses Regulares............................................................................................................................122 Utilizao............................................................................................................................................122 ___________________________________________________________________________ Pg. 5

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Entendendo a RE "^d"....................................................................................................................122 Exemplos ...........................................................................................................................................123 Configurao do shell bash..................................................................................................................125 Arquivo /etc/profile.........................................................................................................................125 Arquivo ~/.bash_profile..................................................................................................................126 Arquivo /etc/bash.bashrc ou /etc/bashrc...................................................................................126 Arquivo ~/.bashrc............................................................................................................................127 Arquivo ~/.bash_logout..................................................................................................................128 Arquivo ~/.bash_history.................................................................................................................128 Aliases de shell...................................................................................................................................128 Escape de Comandos no bash........................................................................................................129 DOCUMENTAO..........................................................................................................131 Pginas de manual..................................................................................................................................131 Man pages...........................................................................................................................................131 Info Pages................................................................................................................................................133 Sistema de buscas na documentao do sistema..............................................................................133 Criando a base de dados...................................................................................................................134 Efetuando pesquisas na documentao.........................................................................................134 LOCALIZANDO ARQUIVOS NO SISTEMA.................................................................135 Comando find.........................................................................................................................................135 Comando whereis..................................................................................................................................138 Comando locate.....................................................................................................................................138 EDITORES DE TEXTO...................................................................................................139 VI..............................................................................................................................................................139 Modo de comando............................................................................................................................139 Modo de Edio................................................................................................................................141 Modo de linha....................................................................................................................................142 Dicas preciosas do Vim....................................................................................................................142 ARQUITETURA DE HARDWARE.................................................................................144 setserial.....................................................................................................................................................145 PARTICIONAMENTO E SISTEMAS DE ARQUIVOS.................................................147 Particionamento.....................................................................................................................................147 A tabela de parties.........................................................................................................................147 Parties primrias............................................................................................................................148 A partio extendida.........................................................................................................................148 As parties lgicas...........................................................................................................................148 Endereamento e geometria dos discos rgidos...........................................................................149 Modo LBA de endereamento........................................................................................................149 Modo CHS de geometria.................................................................................................................149 Particionando o disco rgido com fdisk.........................................................................................150 Sistemas de arquivos..............................................................................................................................152 O sistema de arquivos ext2: O incio de tudo..............................................................................153 O sistema de arquivos ext3: A revoluo......................................................................................153 Funcionamento do journaling.........................................................................................................153 O sistema de arquivos reiserfs: Nascido para ser rpido............................................................153 Criando um sistema de arquivos.....................................................................................................154 Definindo um ponto de montagem...............................................................................................154 Verificando a integridade de sistemas de arquivos......................................................................156 Gerenciando quotas de sistemas de arquivos....................................................................................156 ___________________________________________________________________________ Pg. 6

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Habilitando as quotas.......................................................................................................................157 Configurando quotas p/ usurios e grupos..................................................................................157 Verificando as quotas........................................................................................................................158 Adicionando uma nova swap...............................................................................................................158 PROCESSO DE INICIALIZAO..................................................................................160 Gerenciadores de boot..........................................................................................................................161 Lilo............................................................................................................................................................161 Configurando o lilo...........................................................................................................................161 Restaurando o setor de boot...........................................................................................................162 GRUB......................................................................................................................................................163 Instalando o GRUB no MBR..........................................................................................................164 O processo de init..................................................................................................................................165 O que so runlevels (Nveis de execuo)?...................................................................................165 O arquivo /etc/inittab......................................................................................................................166 Estrutura de inicializao de servios............................................................................................167 O script /etc/init.d/rc......................................................................................................................167 Os diretrios de inicializao de servios......................................................................................167 COMPACTADORES E ARQUIVADORES.....................................................................169 Compactadores.......................................................................................................................................169 A ferramenta gzip..............................................................................................................................169 A ferramenta bzip2...........................................................................................................................170 Arquivadores...........................................................................................................................................171 A ferramenta tar.................................................................................................................................171 As famosas tarballs............................................................................................................................172 SERVIDOR GRFICO X-WINDOW...............................................................................174 Funcionamento......................................................................................................................................174 Configurando o XFree86.................................................................................................................174 Inicializando o XFree86...................................................................................................................176 Acessando o XFree86 atravs da rede...........................................................................................176 AGENDAMENTO DE TAREFAS...................................................................................177 Cron..........................................................................................................................................................177 O arquivo /etc/crontab...................................................................................................................177 Diretrios de agendamento do cron...................................................................................................178 O diretrio /etc/cron.d...................................................................................................................178 Agendamentos definidos pelos usurios.......................................................................................178 Controle de acesso ao cron..................................................................................................................179 BIBLIOTECAS COMPARTILHADAS............................................................................180 Trabalhando com bibliotecas compartilhadas...................................................................................180 Localizao das bibliotecas compartilhadas..................................................................................180 Listando Bibliotecas disponveis.....................................................................................................180 Descobrindo quais bibliotecas um binrio utiliza........................................................................180 Adicionando novas bibliotecas ao sistema....................................................................................181 GERENCIAMENTO DE PROCESSOS..........................................................................182 Lidando com processos........................................................................................................................182 Listando processos............................................................................................................................182 O comando ps...................................................................................................................................182 Significado das colunas na sada do comando ps.........................................................................184 O comando top.................................................................................................................................184 Nveis de processos...............................................................................................................................185 ___________________________________________________________________________ Pg. 7

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Sinalizando processos............................................................................................................................186 O comando kill..................................................................................................................................187 O comando killall..............................................................................................................................187 O comando killall5............................................................................................................................187 Gerenciando prioridades dos processos............................................................................................188 Definindo prioridades com o comando nice................................................................................188 Modificando prioridades com o comando renice........................................................................188 REFERNCIAS.................................................................................................................190

___________________________________________________________________________ Pg. 8

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

PREFCIO
Esta apostila uma compilao de diversos trabalhos, livros, artigos, pesquisas, descritas no ltimo captulo, ou seja, nas referncias, bem como fruto de minha experincia profissional na rea de administrao de redes de computadores e sistemas operacionais. Os assuntos abordados so de extrema importncia e visam mostar os principais conceitos da administrao de sistemas baseados no Unix (Unix Like), aplicados neste material de forma prtica. Reunir todas estas informaes e organiz-las de forma didtica levaram muito tempo e muito trabalho. Por isso, espero que voc aproveite estas informaes para transform-las em conhecimento til. Na medida em que aprendo novas tcnicas, no consigo guard-las apenas comigo. Se assim o fizer, estarei cometendo o erro da omisso1, por outro lado, se no exigir a aplicao dos conhecimentos transmitidos estarei comentendo o erro da negligncia2. John W. Gardner disse: Excelncia fazer coisas ordinrias (comuns) de maneira extraordinria. Portanto, faa e d o seu melhor sempre! Enfim, quero agradecer primeiramente a Deus a quem devo a honra, glria e o louvor por tudo o que sei, sou e tenho. Tambm agradeo a minha esposa Geny pelo apoio e compreenso. Agradeo aos professores Antero Todesco e Valdinei Castelan que sempre me apoiaram e confiaram na minha capacidade e, finalmente, aos meus queridos alunos, que dia-a-dia contribuem para o aperfeioamento de minhas aulas e da didtica aplicada.

Prof. Erivelton Rodrigues Nunes

1 2

Aquele, pois, que sabe fazer o bem e o no faz comete pecado. (Bblia Tiago cap. 4 vers. 17) Maldito aquele que fizer a obra do Senhor relaxadamente! (...) (Bblia Jeremias cap. 48 vers. 10)

___________________________________________________________________________ Pg. 9

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

INTRODUO AO LINUX
Origem do Linux

O que aconteceu antes vai acontecer outra vez. O que foi antes ser feito novamente. No h nada de novo neste mundo
Eclesiastes 1.9

Linux um sistema operacional baseado no Unix, viabilizando uma alternativa barata e funcional de se rodar um sistema operacional amplamente compatvel com Unix sem ter que pagar os altos custos de licenciamento. No ano de 1983, Richard Stallman fundou uma organizao chamada Free Software Fundation (Fundao de Software Livre), cujo projeto denominado projeto GNU (GNU Is not Unix) tinha por finalidade criar um clone melhorado do sistema operacional Unix, mas que fosse desenvolvido a partir do zero, sem utilizar o cdigo-fonte do Unix. Para alcanar tal objetivo, era necessrio desenvolver o kernel (corao do sistema operacional) e os aplicativos (comandos) que compe um sistema operacional completo. Porm, no final da dcada de 80, o projeto havia fracassado, pois os programadores no haviam conseguido criar o kernel do sistema, somente os aplicativos essenciais estavam prontos. Na mesma poca, vrios esforos alternativos para se atingir o mesmo objetivo proposto pelo projeto GNU estavam em andamento. Um desses projetos foi o projeto Minix, liderado pelo Dr. Andrew Tanenbaum que desenvolveu o minix como instrumento de ensino, que na verdade era um sistema operacional Unix portado para arquitetura x86 (at 80386 na poca), o que possibilitava que os universitrios pudessem dar continuidade aos seus estudos no PC de casa. Nessa mesma poca, um aluno da Universidade de Helsinque, na Finlndia, chamado Linus Benedict Torvalds percebeu que o 80386 era o nico processador na poca capaz de executar um clone de Unix, mesmo no sendo uma alternativa barata p/ a poca. Linus ento se disps a criar um kernel clone do Unix que fosse capaz de lidar com memria virtual, multitarefa e multiusurio. Era um trabalho gigantesco para apenas uma pessoa. Na primavera de 1991, Linus iniciou seu projeto particular inspirado no Minix. Ele limitou-se a criar um Minix melhor que o Minix. Aps algum tempo de trabalho, Linus conseguiu criar um kernel capaz de executar utilitrios de programao e comandos padro do Unix j previamente clonados pelo projeto GNU. Percebendo a grandiosidade do projeto, e que no conseguiria dar continuidade sozinho, ele enviou a seguinte mensagem para a lista de discusso comp.os.minix: Voc suspira por melhores dias do Minix-1.1, quando homens sero homens e escrevero seus prprios drivers de dispositivos? Voc est sem um bom projeto e est morrendo para colocar as mos em um S.O. no qual voc possa modificar de acordo com suas necessidades? Voc est ___________________________________________________________________________ Pg. 10

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes achando frustrante quando tudo trabalha em Minix? Chega de atravessar noites para obter programas que trabalhem correto? Ento essa mensagem pode ser exatamente para voc. Como eu mencionei h um ms, estou trabalhando em um sistema operacional similar ao Minix para computadores AT-386. Ele est, finalmente, prximo do estgio em que poder ser utilizado (embora no possa ser o que voc esteja esperando), e eu estou disposto a colocar os fontes para ampla distribuio. Ele est na verso 0.02.. contudo, obtive xito rodando bash, gcc, gnu-make, gnu-sed, compress, etc nele. A primeira verso oficial do Linux foi lanada em 5 de outubro de 1991 (verso 0.02). A partir da, diversos programadores ao redor do mundo tm colaborado com esse sistema operacional de cdigo aberto at chegar no que hoje. Curiosidade: O nome Linux foi escolhido por seu criador atravs de uma mistura de seu prprio nome com Unix (Linus + Unix = Linux).

Licenciamento e Verses do kernel do Linux


O Linux no um software de domnio pblico, mas licenciado sob uma licena chamada GPL (General Public License Licena Pblica Geral). Essa licena diz que o cdigo-fonte deve permanecer livremente disponvel, nada pode impedir a distribuio do software. As pessoas sua distribuio. O versionamento dividido em 2 partes, no exemplo da verso 2.6.8, o nmero 2.6 a verso principal do kernel, j a verso 2.6.8 o patch level do kernel, ou seja, sempre que h alguma mudana do cdigo no muito significativa, elevado o nmero do patch level. Se ocorrerem mudanas significativas, o nmero da verso principal elevado, e patch level retorna a 0 (zero). Outra caracterstica importante sobre versionamento do Kernel que sempre que a verso principal termina com um nmero par, trata-se de uma verso considerada estvel pelo time de desenvolvimento. Quando este nmero mpar, o kernel ainda est em estgio instvel, em desenvolvimento.

___________________________________________________________________________ Pg. 11

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Distribuies Linux
No incio da dcada de 90, comearam a surgir as primeiras distribuies Linux. A Idia de distribuies se tornou necessria devido as dificuldades na poca em se obter todas as partes que compunham o sistema operacional completo (Kernel e aplicativos), pois as partes em questo ficavam espelhadas pelo mundo, e diversos downloads e compilaes eram necessrios para que fosse possvel utilizar o sistema instalar operacional. o Essas A dificuldades contriburam para dar a fama de Sistema Operacional de Hackers ao Linux, pois somente quem detinha um bom conhecimento meio comum conseguia sistema. Distribuio simplesmente faz todo esse trabalho sujo e empacota tudo em um de distribuio, que pode ser um cdrom j gravado, um disquete, um arquivo compactado, etc. Atualmente existem mais de 300 distribuies diferentes, dentre elas se destacam algumas como: Debian, RedHat, Conectiva, Slackware, Mandrake, Suse, Gentoo e Fedora.

___________________________________________________________________________ Pg. 12

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Linux Standard Base (LSB)


O Linux Standard Base (LSB) viabiliza a compatibilizar e padronizar as distribuies Linux, de modo que os softwares desenvolvidos para Linux em Geral possam rodar em qualquer distribuio. Para que tal fato seja possvel, necessrio que a distribuio e o aplicativo sejam compatveis com o LSB. Nos dias de hoje, a esmagadora maioria dos aplicativos disponveis para Linux compatvel com LSB.

Viso geral do Sistema Operacional Linux


Linux um sistema operacional multi-camadas, como podemos ver no grfico seguinte:

Nesse arranjo, o kernel desempenha a funo principal de intermediar acessos ao hardware e interfacear com o usurio atravs do interpretador de comandos.

Vantagens do Linux
O Linux um sistema operacional que se destaca por diversos fatores como Multiplataforma, Multiusurio, Multitarefa, Portabilidade e Escalabilidade. Multiplataforma a capacidade do mesmo mantendo Multiusurio sistema rodar em diferentes plataformas de hardware, geralmente do kernel. os softwares inalterados, com pouca mudana nos fontes aplicativos simultaneamente.

e Multitarefa denota, respectivamente, a capacidade do sistema de Lidar com Portabilidade e

mltiplos usurios rodando mltiplos

___________________________________________________________________________ Pg. 13

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Escalabilidade a capacidade do sistema de ser facilmente portvel e compatvel com diversas plataformas de Hardware existentes.

Conceitos Unix
Existem algumas caractersticas do sistema operacional Linux que foram herdadas do Unix. AS principais caractersticas so listadas adiante:

Tudo Arquivo
Um arquivo no UNIX uma seqncia de 0 ou mais bytes contendo qualquer tipo de informao. No existe nenhuma distino entre um arquivo texto em ASCII, arquivos binrios ou qualquer outro tipo de arquivo. Um diretrio um arquivo que contm informaes a respeito de um conjunto de arquivos. Essas informaes consistem basicamente em nome e localizao do mesmo. Um dos arquivos contidos em um diretrio pode ser tambm um diretrio, permitindo que estes se organizem de forma hierrquica.

Case Sensitive
O Linux difere letras maisculas e minsculas, portanto ROOT, Root e root, so trs formas diferentes de se escrever, e o Linux entende que so trs comandos diferentes. Portanto, para que sejam compreendidos pelo Interpretador de Comandos (shell), todos os comandos devem ser digitados exatamente da forma que so, distinguindo maisculas de minsculas.

Comandos
A maioria dos comandos so geralmente seguidos de um parmetro e pode se utilizado de trs maneiras diferentes:
# comando -parmetro # comando --parmetro # comando parmetro

Primeiros Passos
Precisamos nos familiarizar com o ambiente de linhas de comando. Portanto, iremos conhecer cada uma das partes envolvidas.

Prompt de Login
Como j visto anteriormente, o bash um dos shells disponveis no Linux. no ambiente do shell que passaremos a maior parte do curso. Para que o sistema nos libera acesso a um Shell ___________________________________________________________________________ Pg. 14

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes texto, antes preciso autenticar-se no prompt de login, como abaixo: host login: root password: Essa a tela de login texto, onde host o nome da mquina. Por ser de uma hierarquia Unix, ao digitar a senha, nenhum caractere aparece e o cursor no se move mas as informaes do teclado esto sendo enviadas.

bash
O bash apenas um dentre os diversos interpretadores de comandos (shell's) disponveis no Linux, tais como csh, zsh, sh, tcsh, etc. Futuramente faremos um estudo mais profundo sobre o shell bash, mas agora iremos apenas nos familiarizar com esse componente to importante do sistema.

[root@host root]#

Este o prompt do Shell, que aparece depois que voc esta logado. Este formato de prompt geralmente utilizado nas distribuies RedHat e Conectiva. A linha acima significa o seguinte: root o nome do usurio @ significa at (em), ou seja, onde o usurio esta logado host nome da mquina root o diretrio corrente Portanto essa linha significa: usurio root logado na mquina host no diretrio root. O # o smbolo de que o root est logado, caso fosse um usurio comum, o smbolo seria $. No caso do Debian, por exemplo, a linha do prompt costuma se parecer com o seguinte:

host:/var/tmp#

Nesse caso, mostrado o nome da mquinas, seguido de : (dois-pontos), o caminho completo do diretrio atual mais o smbolo de quem est logado.

___________________________________________________________________________ Pg. 15

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes O prompt de login pode facilmente ser configurado atravs da varivel de ambiente $PS1. Exemplo:
host:/var/tmp# echo $PS1 \h:\w$ host:/var/tmp# PS1="[\u@\h \W]\$ " [root@host tmp]# echo $PS1 [\u@\h \W]\$ [root@host tmp]#

No exemplo acima, primeiro foi mostrado o contedo da varivel $PS1 (comando echo $PS1); logo depois o contedo dessa varivel foi modificada com base nos valores especiais descritos na tabela abaixo, tornando o prompt padro do debian parecido com o prompt padro do RedHat. Caracteres de escape para customizao do shell usando $PS1: \e Quebra de linha. \h \H \j \t \u \W \w \$ Nome curto do Host (Exemplo: host). Nome longo do Host (Exemplo: host.uniararas.com.br). O nmero de trabalhos atualmente sob controle do shell. Hora atual no formato de 24horas. Usurio logado atualmente. Nome do diretrio de trabalho atual. Caminho completo do diretrio atual. Smbolo de Usurio. Para qualquer usurio com UID=0 (root por exemplo) aparecer um sinal de #, ou um sinal de $ para os outros usurios do sistema. Voc pode ter mais de um terminal ao mesmo tempo, sendo possvel manter terminais texto e grficos. Para alternar entre os terminais texto, pressione [ALT]+[F1](F1 at o F6). O prximo terminal logo aps o ltimo terminal texto (Geralmente o F6) o terminal grfico, se estiver em uso; Nesse caso, para acessar o terminal grfico, pressione [ALT]+[F7]. Para sair do terminal grfico e voltar a um terminal texto, pressione [CONTROL]+[ALT]+[F1] (At o [F6] nesse caso).

logout
Para sair do shell atual, digite o seguinte comando: ___________________________________________________________________________ Pg. 16

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
$ logout

shutdown
Utilizamos o comando shutdown para interromper de alguma forma o funcionamento do sistema (Desligar ou reiniciar, por exemplo). Sintaxe:
shutdown [-akrhfnc] [-t secs] tempo [mensagem]

Tabela de Parmetros
-a -k -r -h -f -F -n -c -t Exemplos:

Utiliza o arquivo /etc/shutdown.allow para definir quem tem permisso para desligar/reiniciar o sistema. Somente testa o desligamento. Reinicia o sistema. Desliga o sistema. Reinicia o sistema em modo rpido (No executa o fsck durante o boot). Fora a execuo do fsck durante a inicializao. Fora desligamento rpido (sem terminar os programas em execuo). Cancela um shutdown agendado. Especifica o tempo, em segundos, entre a notificao e a finalizao dos processos.

# shutdown -h now O sistema ser reinicializado agora

Reinicia o sistema Imediatamente e exibe a mensagem O sistema ser reinicializado agora para os usurios conectados atualmente.

# shutdown -r -t secs 20 10 Reboot em 10 minutos

halt
O comando halt tem o mesmo efeito que o comando shutdown -h now.

reboot
O comando reboot tem o mesmo efeito que o comando shutdown -h now. ___________________________________________________________________________ Pg. 17

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

INSTALAO DO DEBIAN GNU/LINUX

Palavras agradveis so como favo de mel, doces para a alma, e medicina para o corpo
Provrbios 16.24

Abranger de uma forma geral a instalao do Sistema Operacional Linux redundante, pois existem diversas distribuies, e cada uma delas utiliza um mtodo prprio ou parecido para fazer a mesma coisa: Instalar o sistema.

Um pouco sobre o Debian


Debian atualmente a maior distribuio Linux no comercial do mundo. No

existe nenhuma empresa por trs do projeto Debian, que mantido por cerca de 1000 voluntrios ao redor do mundo. Alm de ser uma das mais antigas distribuies Linux do mundo (Das famosas ela a mais antiga, seguida de perto pelo Slackware), o Debian possui toda uma estrutura colaborativa de desenvolvimento e manuteno que torna o software muito robusto e estvel.

De onde surgiu o nome Debian?


O nome Debian teve origem de uma juno entre os nomes dos fundadores do sistema operacional, em 1993: Debra e Ian Murdock,

Pronncia
A pronncia ocial de Debian dbian. Surgiu a partir do nome do criador do Debian, Ian Murdock, e sua esposa, Debra.

Quando surgiu?
O Projeto Debian foi ocialmente fundado por Ian Murdock em 16 de Agosto de 1993. Naquele tempo, o conceito de uma distribuio de Linux era novo. Ian pretendia que o Debian fosse uma distribuio criada abertamente, no mesmo esprito do Linux e do GNU (leia seu manifesto fornecido como apndice nesse documento para maiores detalhes). A criao do Debian teve o apoio do projeto GNU da FSF durante um ano (Novembro de 1994 a Novembro de 1995).

Qual o significado dos codinomes das distribuies Debian?


Essa bem simples. Os nomes dados as distribuies Debian At hoje so baseados nos personagens do desenho animado Toy Story, da Pixar. Woody o cowboy, potato o homem-batata, buzz (o nome da primeira verso) o nome do homem do espao. ___________________________________________________________________________ Pg. 18

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Stable, Testing e Unstable


O desenvolvimento da distribuio Debian segue um rgido controle de qualidade. A verso conhecida como estvel (stable) exaustivamente testada e corrigida. Quando o conjunto de pacotes atinge esta maturidade, eles so congelados (freeze) na verso em que esto, e uma nova verso estvel lanada. O intervalo de tempo entre o lanamento de duas verses estveis pode levar 1 ou at 2 anos. O compromisso com a qualidade, ao contrrio de outras distribuies que soltam releases incompletos, devido as presses de mercado. Isto motivo de alguma confuso para aqueles no habituados a utilizar o Debian. Quando uma nova verso de um pacote lanada, digamos o Apache 2.0.55, ele no includo na verso estvel, que disponibiliza o 2.0.54. Somente problemas graves, como um bug de segurana, que permitem a alterao de um pacote da distribuio estvel. Digamos que a verso estvel do Debian esteja utilizando o Apache 1.3.26. Se um bug de segurana for encontrado neste pacote, o time de desenvolvimento do Apache vai lanar a verso corrigida com o nmero 1.3.27, por exemplo. O time de desenvolvimento do Debian tambm vai corrigir o pacote, mas o nmero verso dele ser alterado para 1.3.26-1, por exemplo. Algum no habituado com o Debian vai achar que est usando uma verso errada. Na estrutura de diretrios dos softwares a nova verso do Debian est nas rvores teste e instvel. O time de desenvolvimento coloca seus pacotes na rvore experimental. Em seguida os pacotes so migrados para a instvel e, aps algum tempo, eles so migrados para a rvore teste. Isto significa que ele j teve um tempo suficiente para testes e no apresentou problemas. possvel fazer a instalao de um sistema com a rvore teste, mas isso exige conhecimento para resolver problemas com pacotes jovens. A verso instvel exige grande conhecimento e capacidade de resolver problemas de congurao e instalao.

Main, Contrib e Non-Free


Os pacotes podem ser classificados quanto ao tipo de Licena de Software que seguem. No site do Debian podemos encontrar a seguinte explicao: Todos os pacotes includos na distribuio oficial do Debian so livres de acordo com a Definio Debian de Software Livre. Isso assegura uso livre e redistribuio de pacotes com seu cdigo fonte completo. A distribuio oficial do Debian a que est contida na seo main do repositrio do Debian. Como um servio para nossos usurios, provemos pacotes em sees separadas que no podem ser includas na distribuio main por causa de uma licena restritiva ou problemas legais. Eles incluem: Contrib Pacotes nessa rea so livremente licenciados pelo detentor do copyright mas dependem ___________________________________________________________________________ Pg. 19

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes de outros pacotes que no so livres. Non-Free Foram retirados a partir do Sarge. Note que os mesmos pacotes podem aparecer em muitas distribuies, mas com nmeros de verso diferentes.

Iniciando a Instalao
O primeiro passo para iniciar a instalao do Debian verificar se o seu Hardware ao menos aparenta ser compatvel com ele. Procure saber com o fabricante do equipamento (que nem sempre v com bons olhos a utilizao de Linux...) ou pesquisar na Internet. Esse passo evita dores de cabea que degradam a reputao do sistema Debian GNU/Linux.

Inicializando o instalador
preciso definir qual ser o mtodo utilizado para se inicializar o instalador do sistema, o debian-installer. A maneira mais simples, e utilizada em mais de 95% das instalaes, atravs de um cdrom inicializvel de instalao do Debian. Nesse mtodo, basta inserir o cd na unidade de cdrom, configurar a BIOS para inicializar a partir do cd e iniciar o computador. Voc dever ser presenteado com uma tela como com essa:

Essa a tela de boas vindas do cd de instalao do Debian Etch Diversos parmetros de inicializao podem ser passados nessa tela. Voc pode pressionar a tecla [F3] para ver uma lista dos kernels disponveis nesse cd de instalao. Prosseguiremos nessa tela com o seguinte parmetro a ser passado para o prompt de inicializao: ___________________________________________________________________________ Pg. 20

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Para instalar no modo padro (texto) tecle ENTER no prompt
boot :

Para instalar no modo Grfico digite installgui no prompt


boot : installgui

A partir de agora veremos uma tela no modo texto e uma no modo grfico. 1. Choose language : Portuguese (Brazil) - Portugus do Brasil

___________________________________________________________________________ Pg. 21

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes 2. Selecione um layout de teclado : Portugus Brasileiro (layout Americano)

3. O sistema de instalao tentar detectar o leitor de CDROM. Alguns componentes do programa instalador sero carregadas. 4. O instalador tentar detectar um servidor de DHCP para congurar a rede. 5. A congurao automtica da rede poder falhar se no encontrar um servidor DHCP.

___________________________________________________________________________ Pg. 22

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes 6. Congurar a rede: Endereo IP, Mscara de rede, gateway, Endereos dos servidores de nomes (DNS), nome da mquina, nome do domnio

___________________________________________________________________________ Pg. 23

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

7. Particionar discos: Editar manualmente a tabela de parties IDE1 principal (hda) - escolha a partio indica pelo instrutor Usar como:sistema de arquivos com journaling ext3 Ponto de montagem: / Opes de montagem: defaults Rtulo: / Blocos reservados: 5% Uso tpico: padro Flag Inicializvel: desligado Tamanho: X GB Finalizar a congurao da partio. Escolha a partio swap (rea de troca) existente. Ela deve car com a seguinte ___________________________________________________________________________ Pg. 24

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes congurao: Usar como: rea de troca Flag Inicializvel: desligado Tamanho: Y MB Finalizar a congurao da partio Finalizar o particionamento e gravar as mudanas no disco Gravar essas mudanas nos discos? Selecione: Sim

8. O Fuso horrio dever ser selecionado: So Paulo 9. Depois ser solicitada a senha do usurio root

___________________________________________________________________________ Pg. 25

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

10. O sistema tambm exigir a criao de um usurio comum com sua respectiva senha.

11. O sistema bsico do Debian ser instalado.

___________________________________________________________________________ Pg. 26

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes 12. Voc ser questionado se usar um Espelho de rede Mirror. Responda NO 13. Tambm ser questionado se deseja participar de um concurso de pacotes. Tambm responda No 14. Na prxima tela voc deve selecionar o conjunto de pacotes que deseja instalar. Escolha Sistema Bsico

15. Instalar o GRUB em um disco rgido: Sim

16. Finalizar a instalao: Escolha: Continuar. O sistema vai rebootar

___________________________________________________________________________ Pg. 27

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

ESTRUTURA DE DIRETRIOS
Hierarquia

O que adquire entendimento ama a sua alma; o que conserva a inteligncia acha o bem
Provrbios 19.8

O Linux tem como principais elementos estruturais arquivos e diretrios, onde arquivos guardam informaes e diretrios so os compartimentos que podem conter arquivos e/ou subdiretrios. Estes arquivos e diretrios esto organizados numa estrutura hierrquica na forma de uma rvore invertida, ou seja, possui estrutura hierrquica porque alguns elementos tm ascendncia sobre outros. A forma da estrutura de rvore invertida, que assim se chama porque o elemento no topo raiz, de onde saem o tronco e os galhos que atingem os demais elementos. De cada diretrio partem outros galhos que podem atingir os demais elementos. Os nomes de arquivos e diretrios devem ser usados lembrando-se que o Linux case sensitive, ou seja, diferencia maisculas de minsculas. O diretrio no topo da hierarquia o diretrio raiz que representado por /. Aqueles diretrios logo abaixo deles so seus filhos; estes filhos, por sua vez, podem ter outros diretrios filhos e tambm arquivos. Sempre que um diretrio contiver um segundo diretrio que vem logo abaixo dele na hierarquia diz-se que este segundo diretrio um subdiretrio.

___________________________________________________________________________ Pg. 28

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Caminho Absoluto
Para localizar, de maneira absoluta, um elemento qualquer no sistema de arquivos, deve-se exprimir o seu caminho absoluto, ou seja, seu caminho completo. O caminho absoluto localiza, de maneira inequvoca, um arquivo ou diretrio no sistema de arquivos. Exemplo de caminho absoluto: /usr/local/bin

Caminho Relativo
possvel utilizar caminhos relativos para localizarmos arquivos ou diretrios. O caminho relativo ao nosso diretrio corrente (ou seja, a partir de diretrios diferentes, podemos chegar a lugares diferentes usando um mesmo caminho relativo). Exemplo de caminho relativo: ../spool/mail Podemos utilizar os comandos pwd, ls e cd para auxiliar-nos com a localizao na estrutura de diretrios, conforme vemos a seguir.

Localizao na Estrutura de Diretrios


A seguir estudaremos alguns comandos que so essenciais para a nossa localizao na estrutura de diretrios.

pwd
Este comando vai mostrar na tela o seu diretrio corrente, ou seja, em que diretrio voc est no momento. Sempre que um comando necessitar de um nome de arquivo, caso no especifiquemos seu caminho, o comando assumir que estamos nos referindo a arquivos do nosso diretrio corrente. Sintaxe do pwd
# pwd /root

O comando acima mostra que o diretrio atual /root.

ls
Exibe o contedo do diretrio ou informaes sobre um arquivo. Tabela de parmetros -l Mostra o contedo e as informaes dos arquivos do diretrio corrente de maneira detalhada

___________________________________________________________________________ Pg. 29

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes -a -F -G -h -n -o -R --full-time --color -r -c -X Sintaxe: Mostra o contedo do diretrio corrente, incluindo os arquivos ocultos (Que iniciam com .). Adiciona Indicadores. Oculta a coluna de grupo dono do arquivo. (S funciona junto com a opo -l)
Mostra o tamanho dos arquivos de forma legvel para humanos (human-readable).

Mostra Identificao de Usurios (UID's) e grupos (GID's) ao invs de nomes. Listagem longa sem o grupo dono dos arquivos (o mesmo que -lG). Lista diretrios e sub-diretrios recursivamente. Lista datas e horas no formato completo. Ativa exibio colorida de arquivos para ajudar na identificao dos mesmos. Por padro, azul=diretrio, verde=executvel, azul-claro=link simblico, vermelho=arquivo compactado, etc. Inverte a ordem de classificao. Classifica por data de alterao. Classifica pela extenso.

ls [parmetro] <arquivo>

Exemplo:
[root@host root] # ls diversos evolution latex listamp3 material projetolc teste tlm-4.doc.gz.doc

O comando acima simplesmente mostra o contedo (arquivos) do diretrio corrente. possvel mostrar o contedo de um ou vrios diretrios ao mesmo tempo, basta acrescentar o caminho do(s) diretrio(s) a frente do comando, conforme abaixo:
# ls /mnt /tmp mnt/: cdrom floppy tmp/: DOCUMENTO

___________________________________________________________________________ Pg. 30

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

cd
Significa Change Directory (troca de diretrio), este comando usado para trocar de diretrio corrente. Sintaxe:
cd diretrio

Exemplo A:
# cd /var/tmp

Sai do diretrio atual e vai para /var/tmp. Exemplo B:


# cd ../

Sai do diretrio atual (/var/tmp) e vai para o diretrio /var, que fica um diretrio acima (antes) do atual. Isso possvel graas a duas entradas especiais que existem em todos os diretrios: . e ... A entrada . refere-se ao prprio diretrio, j a entrada .. refere-se ao diretrio logo acima do atual, exatamente como no MS-DOS. Exemplo C:
# /etc/init.d/networking restart Reconfiguring network interfaces...done. # cd /etc/init.d # ls -l networking -rwxr-xr-x 1 root root 2607 Jun 13 2006 networking # ./networking restart Reconfiguring network interfaces...done.

Esse exemplo mostra como executar um comando que esteja no diretrio /etc/init.d de duas formas. A primeira utiliza o caminho absoluto (/etc/init.d/networking), o segundo utiliza o caminho relativo (./networking). Ambos levam ao mesmo resultado. Outro caminho relativo especial na estrutura de diretrios o ~; Ele refere-se ao diretrio HOME do usurio atualmente logado no sistema. Observe o seguinte exemplo, levando em considerao que o diretrio home do usurio root a pasta /root: Exemplo D:
# pwd /tmp # cd ~ # pwd /root

___________________________________________________________________________ Pg. 31

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Outro caminho especial utilizado com freqncia o -. Ele leva de volta para o ltimo diretrio visitado. Veja o exemplo. Exemplo E:
# pwd /tmp # cd /usr/local # pwd /usr/local # cd # pwd /tmp

$PATH
A varivel $PATH armazena o caminho dos arquivos executveis, ou seja, diretrios que contm comandos e scripts no sistema. O seguinte comando mostra o contedo da varivel $PATH.
# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11

Nesse exemplo, existem 7 diretrios do sistema cadastrados na varivel $PATH (separados por :). Quando um comando qualquer digitado sem o caminho absoluto (o comando ls, por exemplo), o sistema procura o arquivo ls dentro do diretrio /usr/local/sbin, e caso no encontre, continua a busca no diretrio /usr/local/bin... seguindo assim at chegar no ltimo diretrio (/usr/bin/X11), se no encontrar nesse o sistema avisa que o comando no pode ser localizado. O caminho dos diretrios que contm executveis costumam j vir configurados aps a instalao do Linux (verifique a varivel $PATH). Caso seja necessrio alterar o contedo dessa varivel, recomendvel fazer isso editando o campo correspondente no arquivo /etc/profile, que lido por todos os usurios no sistema no momento do Login. Se quiser alterar somente para um usurio especfico, adicione a entrada correspondente no arquivo ~/.bashrc do(s) usurio(s) em questo. Esses e outros arquivos relacionados a configurao do shell bash sero estudados mais a fundo ainda neste treinamento. Para exibir o contedo de uma varivel no console, execute o comando echo $NOME_DA_VARIAVEL, lembrando que o nome da varivel faz distino entre maisculas e minsculas. Tente um
echo $PATH

___________________________________________________________________________ Pg. 32

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Histrico de Comandos
Voc pode executar comandos j digitados pressionando as teclas [Seta para cima] e [Seta para baixo]. Devemos isso ao histrico de comandos, pois conforme digitamos comandos no bash, ele os armazena no chamado histrico de comandos, que fica em memria enquanto utilizamos o console, e quando terminamos a sesso normalmente (logout), o bash salva esse histrico no arquivo ~/.bash_history. Para fazer isso manualmente, utilizamos o comando:
# history -w ~/.bash_history

No prximo login, o bash carrega o arquivo ~/.bash_history para a memria, restaurando o ltimo histrico salvo. O procedimento manual para fazer isso seria:
# history -r ~/.bash_history

O bash limita o tamanho mximo de comandos que podem ficar no histrico de comandos atravs da varivel de ambiente $HISTSIZE. Tabela de parmetros -w -r -c Exemplo A:
# history .. 530 echo PATH 531 echo $PATH 532 cd ~ 533 ls -lA 534 ls -la 535 vi .bashrc 536 vi /etc/profile 537 history

Grava o histrico em um arquivo especificado. L o histrico a partir de um arquivo previamente salvo. Limpa o histrico da memria (mas no apaga o ~/.bash_history).

O comando history, quando chamado sem argumentos, mostra todas as entradas no histrico. Exemplo B:
# history 10 531 echo $PATH 532 cd ~ 533 ls -lA 534 ls -la 535 vi .bashrc 536 vi /etc/profile 537 history 538 history |head 539 history -10 540 history 10

___________________________________________________________________________ Pg. 33

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Nesse caso, ele mostra os ltimos 10 comandos no histrico. Repare que cada comando nohistrico possui um identificador numrico. Podemos utilizar desse identificador para executar novamente o comando em questo. Por exemplo, digamos que seja preciso repetir o comando echo $PATH (Nmero 531 no histrico): Exemplo C:
# !531 echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11

Outros comandos como esse podem ser verificados na tabela abaixo: Expanses para o histrico de comandos !n Refere-se a entrada n do histrico. !! Repete o ltimo comando digitado. !-n Refere-se ao comando atual menos n no histrico. !exemplo Repete o ltimo comando digitado que comece com exemplo possvel fazer uma pesquisa reversa no histrico de comandos com a seqncia de teclas [CONTROL]+[R]. Nesse modo, basta comear a digitar um comando desejado que o bash preenche com o mais provvel conforme digita-se.

Teclas de Atalho
A tela do console em modo texto pode ser rolada para cima utilizando [SHIFT]+[PAGE UP], ou [SHIFT]+[PAGE DOWN] para rolar a tela para baixo (a tela j deve ter sido rolada p/ cima nesse momento). Isto til para visualizar sadas de comandos que ocupam mais de uma tela no Console. Outra forma de navegar atravs dos comandos no histrico com a ajuda de teclas como [SETA P/ CIMA] (volta recursivamente os comandos do histrico, um por um), e [SETA P/ BAIXO] (avana atravs dos comandos no histrico). As setas so muito utilizadas no dia-a-dia de um administrador de sistemas Linux, pois se tornam muito necessrias conforme digitamos comandos.

Tecla TAB
A tecla [TAB] nos permite completar nomes de arquivos, diretrios, executveis no $PATH, etc. Exemplo A: ___________________________________________________________________________ Pg. 34

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
# ls /u[TAB]/sh[TAB]/do[TAB]

No exemplo, acionamos o comando ls /usr/share/doc utilizando a tecla tab 3 vezes para completar o caminho. Exemplo B:
# ifco[TAB]

O exemplo acima completa o comando ifconfig logo aps digitarmos ifco (somente as 4 primeiras letras) seguido da tecla [TAB].

Filesystem Hierarchy Standard


O Linux usa um padro para a estrutura de diretrios, denominado FHS (Filesystem Hierarchy Standard), que visa padronizar o nome e a localizao de diretrios e arquivos principais do sistema. Esse padro tem algumas caractersticas muito importantes, como a compatibilidade com outros sistemas e a habilidade na montagem de algumas parties no modo somente de leitura. Quando uma distribuio Linux segue a risca os padres da FHS, ela est homologada nos padres FHS, o que proporciona um alto nvel de compatibilidade entre aplicativos criados inclusive para outras distribuies, desde que esses aplicativos tambm sigam o padro da FHS. Um sistema FHS divide os diretrios em 2 categorias principais: 1. Compartilhveis e No Compartilhveis: A distino entre dados Compartilhveis e No-Compartilhveis necessria pelos seguintes motivos: A) Em um ambiente de rede com vrias mquinas, uma muito til poder compartilhar dados entre diferentes hosts para economizar espao em disco e facilitar as tarefas de manuteno; B) em um mesmo ambiente, certos arquivos contm informaes especficas para cada host, portanto, esses dados no podem ser compartilhados para os outros micros da rede; 2. Variveis e Estticos J a distino entre os dados Variveis e Estticos se torna necessria pelos motivos: A) Devido ao diretrio / (raiz) conter tanto dados variveis quanto estticos, alguns dados nele contidos precisam ter permisses de leitura e escrita; B) Existem diretrios que recebem modificaes constantemente (variveis), como o /var por exemplo.

___________________________________________________________________________ Pg. 35

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes A correlao entre esses tipos de diretrios forma a FHS, como mostrado na tabela abaixo: Compartilhveis Estticos Variveis /usr /opt /var/mail /var/spool/news No-Compartilhveis /etc /boot /var/run /var/lock

Os diretrios contemplados pela FHS so:

/bin
Contm os comandos que podem ser usados pelo administrador de sistema e pelos usurios, isso o torna necessrio durante uma tarefa de manuteno do sistema, e portanto no pode ficar em uma partio separada da partio que contm o / (raiz). Scripts de Inicializao tambm fazem uso desses comandos aqui presentes, como por exemplo: Utilizado para mostrar arquivos na sada padro. Utilizado para alterar permisses de arquivos e diretrios. Utilizado para modificar dono/grupo de arquivos e diretrios. Utilizado para copiar arquivos e diretrios. Utilizado para listar contedo de diretrios e informaes sobre arquivos.

cat chmod chown cp ls

/boot
Este diretrio contm arquivos importantes para a Inicializao e carregamento do kernel. neste diretrio que se encontra o Kernel. Tambm nesse diretrio que ficam localizados os arquivos do Gerenciador de Boot (bootloader).

/dev
Contm os arquivos de dispositivos suportados pelo Linux, como floppy disk, cdrom, unidades de disco, mouse, portas paralelas e serias, etc... Conforme visto anteriormente, tudo no linux tido como arquivo, e isso inclui os dispositivos do sistema, como hds, modems, portas, etc. Isso possvel pois o kernel conta com esses Arquivos Especiais que ficam no diretrio /dev. Esses arquivos especiais podem ser de dois tipos: Dispositivos de Bloco e Dispositivos de Caractere. ___________________________________________________________________________ Pg. 36

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes A diferena entre esses dois tipos de dispositivos que os dispositivos de bloco so dispositivos geralmente associados armazenamento de dados (blocos de dados), pois tratam os dados em formato binrio prprio para armazenagem e leitura posterior. Assim, os dados enviados a esses dispositivos so armazenados em dispositivos de armazenamento, como discos-rgidos e disquetes, possibilitando posterior leitura desses dispositivos. J os dispositivos de caractere tratam o fluxo de dados em um formato de caracteres texto. O prprio terminal texto, por exemplo, utiliza um dispositivo de caractere para interfacear com o kernel.

Exemplos de Dispositivos
Bloco /dev/hda /dev/fd0 /dev/sdd11 /dev/tty1 /dev/ttyS0 /dev/zero

Caractere

Portas Seriais e Paralelas No linux, as portas seriais e paralelas tem uma nomenclatura diferente do MSDOS. Essas diferenas so mostradas na tabela abaixo: MSDOS COM1 COM2 LPT1 LPT2 LINUX /dev/ttyS0 /dev/ttyS1 /dev/lp0 /dev/lp1

/etc
Contm os arquivos e os diretrios de configurao que so especficos ao sistema atual. nesse diretrio que passaremos a maior parte do curso.

/home
Contm os diretrios de trabalho de todos os usurios do sistema. Neste diretrio ficam informaes como personalizao de desktop, configurao de clientes de e-mail, etc... O propsito principal dessa estrutura facilitar as tarefas de backup, por exemplo.

___________________________________________________________________________ Pg. 37

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

/root
Este diretrio home do administrador de sistema (Usurio root). Segundo a FHS, o root o nico usurio interagvel com o sistema (que digita comandos nele) que deve ter seu diretrio de trabalho fora da pasta /home. Isso torna possvel que o usurio root acesse seus arquivos durante uma tarefa de manuteno no sistema, onde o sistema deve ser capaz de funcionar somente com a partio raiz acessvel (montada).

/lib
Contm as biblioteca compartilhadas necessrias ao carregar o sistema e para executar os comandos localizados na raiz do sistema de arquivos. Os mdulos do Kernel tambm se localizam neste diretrio, mais especificamente em /lib/modules/<verso do kernel>/.

/mnt
Este diretrio fornecido de modo que o administrador de sistema possa temporariamente montar um disquete, cdrom, ou sistema de arquivos quando necessrio. Algumas distribuies Linux como a RedHat, Mandrake e Conectiva criam os subdiretrios floppy e cdrom aqui dentro para servir como ponto de montagem para esses tipos de mdias. Outras distribuies como o Debian e Knoppix criam esses diretrios (cdrom e floppy) diretamente na raiz, e os utilizam como padro para servir como ponto de montagem essas mdias.

/opt
reservado para a instalao de pacotes que esto fora da distribuio utilizada. Estes pacotes fornecidos por terceiros devem ser instalados em diretrios separados. Ex.: /opt/ pacote onde o pacote deve descrever o nome do software a ser instalado.

/sbin
Contm os binrios essenciais para o inicializao, na recuperao e restaurao do sistema. Estes binrios so usados pelo prprio sistema ou pelo administrador(root).

/tmp
O diretrio tmp utilizado por alguns programas que requerem arquivos temporrios. Recomenda-se que ao inicializar o sistema os arquivos contidos neste diretrio sejam apagados. Distribuies como o Debian fazem isso automaticamente.

___________________________________________________________________________ Pg. 38

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

/usr
O diretrio /usr a segunda maior seo do sistema de arquivos, nele esto os dados compartilhveis apenas para leitura. Isso significa que no se deve gravar nada manualmente neste diretrio, toda a informao que for gerada com o tempo deve ser armazenada em outra parte (existem os diretrios apropriados para isso). Encontram-se neste diretrio o gerenciador de janelas X, programas de usurios, jogos, etc... Os subdiretrios mais importantes dentro da estrutura /usr so:: bin include lib local sbin share Binrios no inerentes ao sistema. Arquivos de cabealho includos por programas em C. Biblioteca do Sistema Arquivos No-compartilhveis (Sim, /usr compartilhvel, mas / usr/local no ). Binrios Inerentes ao sistema. Dados compartilhveis entre os programas. Repare que a maioria desses diretrios dentro de /usr tambm existem na raiz do sistema. A diferena entre eles que os que ficam na raiz contm dados que no podem ser compartilhados pela rede, j os que ficam em /usr sim.

/var
Contm arquivos de dados de variveis. Isto inclui diretrios e arquivos de spool, dados administrativos e logs do sistema. Devido a provvel grande quantidade de dados e acessos que esse diretrio receber, uma boa prtica do administrador alocar uma partio em um disco separado para receber o diretrio /var. Isso garante mais velocidade (menos acessos no mesmo disco que contm o sistema) e facilita as tarefas de backup.

/proc
O diretrio /proc ligeiramente diferente dos diretrios comuns, pois os dados nele contidos no esto fisicamente em nenhum disco rgido do sistema, mas sim na memria ram. Trata-se de um sistema de arquivos virtual que criado e gerenciado pelo Kernel em tempo real, e a forma mais direta que o usurio tem de interagir com o kernel. ___________________________________________________________________________ Pg. 39

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Os arquivos nele contidos contm basicamente valores de variveis do kernel. Acompanhe os exemplos: Exemplo A:
# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 8 model name : Pentium III (Coppermine) stepping : 3 cpu MHz : 647.304 cache size : 256 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse bogomips : 1277.95

Repare que foi mostrado o contedo do arquivo /proc/cpuinfo com o comando cat, e que nesse arquivo esto contidas informaes sobre o processador em uso na mquina. O /proc est repleto de arquivos como esses, a existncia ou no da maioria deles depende de opes especficas da verso do kernel em uso no sistema. Os arquivos que costumam existir em sistemas atuais com kernel's 2.4 e 2.6 e nos trazem informaes importantes, como na tabela a seguir: /proc/cpuinfo /proc/meminfo Informaes sobre a(s) CPU(s) do sistema. Informaes sobre a memria do sistema. Mostra Informaes sobre os dispositivos conectados ao barramento PCI da placa me. (Obs.: esse arquivo mostra todos os dispositivos que esto interconectados no barramento PCI, no somente as placas plugadas nos slots PCI da placa me. A maioria dos dispositivos on-board, como placas de som, usb e modem, aparecem na listagem). A sada desse comando semelhante ao comando: lspci -v Mostra quais dispositivos esto utilizando as respectivas Interrupes do Sistema (IRQs). Mostra quais portas de entrada e sada (Portas de IO) os dispositivos esto utilizando. Mostra a linha de parmetros que foi passada ao kernel durante a inicializao. Esse arquivo exatamente o contedo da memria ram em binrio, portanto, no um arquivo legvel por ns humanos.

/proc/pci

/proc/interrupts /proc/ioports /proc/cmdline /proc/kcore

___________________________________________________________________________ Pg. 40

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Alm desses, o diretrio /proc contm alguns subdiretrios com funes especiais, comeando por diretrios numricos que contm informaes sobre os processos rodando na mquina. O diretrio /proc/sys contm uma hierarquia de arquivos e diretrios que servem para interagirmos diretamente com o kernel. Geralmente esses arquivos contm um valor de lgica boleano (verdadeiro/falso), valendo 0 (falso) ou 1(verdadeiro). Alguns desses arquivos contm strings que so valores de variveis passadas diretamente ao kernel. A modificao desses arquivos repercute imediatamente. Exemplo A:
# cat /proc/sys/net/ipv4/ip_forward 0 # echo 1 > /proc/sys/net/ipv4/ip_forward # cat /proc/sys/net/ipv4/ip_forward 1

Nesse exemplo, primeiro foi mostrado o contedo do arquivo /proc/sys/net/ipv4/ip_forward, que retornou 0 (desabilitado). Esse arquivo habilita/desabilita a repassagem de pacotes ip no kernel, e vem desabilitado por padro. No prximo comando, o contedo do arquivo foi substitudo pelo valor 1, o que instantaneamente ativa a repassagem de pacotes ip no kernel. Todas as alteraes feitas dessa forma na estrutura do /proc sero perdidas na prxima reinicializao. Para salv-las, devemos adicionar as entradas no arquivo /etc/sysctl.conf. Para salvar a modificao feita no exemplo acima, adicionaramos a seguinte linha no arquivo /etc/sysctl.conf (verifique se a linha j no existe):
net/ipv4/ip_forward=1

O comando sysctl -p confirma a alterao.

___________________________________________________________________________ Pg. 41

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

GERENCIAMENTO DE PACOTES

O que guarda a sua boca conserva a sua alma, ma o que muito abre os lbios a si mesmo se arruna
Provrbios 13.3

Um dos assuntos mais relevantes na administrao de sistemas Linux justamente o gerenciamento de pacotes, que resumidamente o gerenciamento dos programas instalador no sistema. possvel instalar programas de diversas formas no Linux, seja atravs da compilao cdigo fonte, da cpia de alguns arquivos ou instalao de pacotes. No mundo Linux, um pacote de software nada mais do que um programa (ou um conjunto deles) j compilado e pronto para funcionar, que est empacotado em um nico arquivo, denominado pacote. como agrupar objetos (programas) em uma caixa (pacote). Cabe ao administrador instalar esse pacote de software para disponibilizar o(s) programa(s) contidos nele para o sistema. Manter o conjunto de softwares de um servidor ou estao de trabalho Linux em pacotes facilita e muito o gerenciamento desses sistemas. As atualizaes, por exemplo, so facilitadas, pois basta atualizar o(s) pacote(s) afetado(s) para que o sistema fique em dia. Se os softwares compilados diretamente no sistema, o gerenciamento de atualizaes poderia se tornar um caos. Para saber, por exemplo, quais softwares esto ou no instalados no computador, instalar programas sem temer as dependncias (nem sempre to fcil assim), com um gerenciador de pacotes muito mais fcil e prtico. As dependncias so o calcanhar de Acquiles para um gerenciador de pacotes. Quando um pacote precisa que j exista um ou mais pacotes especficos instalados no sistema, ele depende desses pacotes e no pode ser instalado sem que esses pacotes j estejam antes instalados no sistema. Existem dois gerenciadores de pacotes principais em uso nas distribuies Linux. O RPM (RedHat Package Manager) e o DPKG (Debian Packager). Outras distribuies, como Slackware e Gentoo, utilizam seus prprios gerenciadores de pacotes, no abordados nesse material.

O gerenciador de pacotes do Debian


O Debian possui seu prprio gerenciador de pacotes, o dpkg (Debian Packager). O dpkg amplamente utilizado por distribuies baseadas em Debian, como Knoppix (Kurumin) e Ubuntu. Os pacotes debian geralmente recebem a extenso .deb, e contm os arquivos e documentao j compilados, assim como informaes e scripts que auxiliam no correto dimensionamento do pacote no sistema. ___________________________________________________________________________ Pg. 42

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

dpkg
Utilizamos o comando dpkg para o gerenciamento direto dos pacotes no debian. Suas principais funes em relao aos pacotes so: Instalao, Listagem, Remoo e Status. Apesar de ser um comando para lidar com pacotes binrios no debian, o dpkg serve como base para outros comandos como o APT e dselect, que servem para realmente gerenciar os pacotes, facilitando e arrojando todo o trabalho. Sintaxe:
dpkg parmetro [pacote[.deb]]

Tabela de parmetros -i pacote.deb -r pacote -P pacote -s pacote -l [pacote] -S /arquivo/no/sistema


Instala pacote(s) Desinstalar pacote(s) do sistema, mas mantm arquivos de configurao. Desinstalar pacote(s) do sistema e remove os arquivos de configurao. Mostra o status do pacote. Mostra informaes (lista) do(s) pacote(s). Se for utilizado sem um nome de pacote como parmetro, lista todos os pacotes instalados no sistema. Verifica a qual pacote determinado arquivo no sistema pertence

Listando os pacotes instalados no sistema


Para obter uma lista dos pacotes instalados no sistema, utilizamos a opo -l do comando dpkg, obtendo a lista dos pacotes instalados, um por linha, conforme a linha abaixo:
ii base-config 2.61 Debian base system configurator

A primeira coluna existem 2 letras que denotam o estado do respectivo pacote (Estado e erro, respectivamente), cujo nome, verso e descrio abreviada esto nas colunas adjacentes. possvel obter informaes para determinado(s) pacote(s) tambm, utilizando o nome completo ou parcial do pacote. Tambm possvel utilizar coringas (iguais os do shell, * e ? basicamente). Mas lembre-se de enquadrar o nome do pacote entre aspas para que no sejam confundidos com nomes de arquivos no diretrio atual, caso utilize coringas, conforme exemplo abaixo: Exemplo:
# # # # dpkg dpkg dpkg dpkg -l -l locales -l "locale*" -l locale-??

___________________________________________________________________________ Pg. 43

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Utilizamos 4 formas diferentes para listar pacotes no sistema. A primeira lista todos os pacotes instalados, a segunda lista somente o pacote locales, as 2 seguintes so listagens com coringas.

Obtendo detalhes sobre um pacote Debian


Mesmo que determinado pacote no esteja instalado no sistema, possvel obter informaes muito importantes sobre o mesmo com a opo -p do comando dpkg. Essa opo mostra na tela o arquivo de controle do pacote. Esse arquivo segue o mesmo padro para todos os pacotes Debian, e fornece informaes muito importantes.
# dpkg -l dpkg-doc # dpkg -p dpkg-doc Package: dpkg-doc Priority: optional Section: doc Installed-Size: 44 Origin: debian Maintainer: Dpkg Development <debian-dpkg@lists.debian.org> Bugs: debbugs://bugs.debian.org Architecture: all Source: dpkg Version: 1.9.21 Replaces: dpkg-dev (<< 1.4.1.19) Filename: pool/main/d/dpkg/dpkg-doc_1.9.21_all.deb Size: 10724 MD5sum: 130615337b08082c13de3c99b32cd8cc Description: Dpkg Internals Documentation This document describes the internal operations of the dpkg program. It covers building aswell as the internals functions. If you are interested in creating your own packages, then you may be more interested in the packaging-manual documentation package.

Utilizamos a opo -l para verificar se o pacote dpkg-doc est instalado no sistema (No se esquea que a sada desse comando foi omitida na apostila). Em seguida, a opo -p, que mostrou na tela o contedo do arquivo de controle do pacote dpkg-doc. Cada campo que inicia uma linha no arquivo um respectivo campo de controle. Veja os significados a seguir: Significado dos campos de controle Package Nome do pacote. Prioridade de Instalao. Pode valer required, important, Priority standard, optional e extra. Que denotam, decrescivamente a importncia do pacote no sistema. Os pacote so separados por sees devido ao grande nmero Section Installed-Size (Algo como o que feito com os nomes de municpios, por exemplo). Este o nome da seo a qual o pacote pertence. Tamanho ocupado pelo pacote aps instalado. Exibido em KB.

___________________________________________________________________________ Pg. 44

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Mantainer Architeture Source Version Depends Recommends Suggests Nome e email do Mantenedor (Empacotador, geralmente tambm o criador do pacote). Qual a arquitetura do pacote. Nome do pacote que traz o cdigo-fonte para este pacote binrio. Verso do pacote. Qual(is) pacote(s) depende(m) deste, e deve(m) estar instalado(s) antes da instalao do pacote atual. Qual(is) pacote(s) o Mantenedor recomenda serem instalados junto com o pacote atual. Quase o mesmo que Recommends, porm lista pacotes que costumam agregar funcionalidades ao pacote atual. Praticamente o mesmo significado que Depends, porm no necessrio que a(s) dependncia(s) esteja(m) completamente instalada(s) quando da instalao, basta que esteja(s) descompactada(s) no sistema. Este campo possui 2 propsitos distintos: Qual(is) Replaces arquivo(s) ou pacote(s) ser(o) sobrescrito(s) quando da instalao do pacote. Lista qual(is) pacote(s) no podem existir ao instalar o pacote atual, pois um ou mais arquivos podem entrar em conflito. Hash de verificao da integridade do pacote. Execute md5sum pacote.deb e compare o resultado com o mostrado nesse campo. Isso garante que o pacote no tenha sido alterado propositalmente ou corrompido por algum motivo. Caminho completo do pacote no repositrio Debian. Descrio detalhada do pacote.

Pre-Depends

Conflicts

MD5sum

Filename Description

Exibindo status dos pacotes do sistema


possvel obter o status de algum pacote com a opo -s do dpkg. A sada ligeiramente parecida com a opo -p, porm nem todos os campos so baseados no arquivo de controle. importante observar o campo Status, que exibe em palavras simples um ou mais estados em que o pacote se encontra. (Instalado, no-instalado, com ou sem erros de instalao, etc....). Exemplo:
# dpkg -s dpkg-doc Package: dpkg-doc Status: purge ok not-installed Priority: optional Section: doc

___________________________________________________________________________ Pg. 45

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
Origin: debian Bugs: debbugs://bugs.debian.org Architecture: all # dpkg -i dpkg-doc_1.10.25_all.deb Selecionando pacote previamente no selecionado dpkg-doc. (Lendo banco de dados ... 107104 arquivos e diretrios instalados.) Descompactando dpkg-doc (de dpkg-doc_1.10.25_all.deb) ... Instalando dpkg-doc (1.10.25) ...

atualmente

# dpkg -l dpkg-doc # dpkg -s dpkg-doc Package: dpkg-doc Status: install ok instal ed Priority: optional Section: doc Installed-Size: 72 Origin: debian Maintainer: Dpkg Development <debian-dpkg@lists.debian.org> Bugs: debbugs://bugs.debian.org Architecture: all Source: dpkg Version: 1.10.25 Replaces: dpkg-dev (<< 1.4.1.19) Description: Dpkg Internals Documentation This document describes the internal operations of the dpkg program. It covers building as well as the internals functions. If you are interested in creating your own packages, then you may be more interested in the debian-policy package.

Repare na sada do comando dpkg -s antes e depois da instalao do pacote.

Instalando e atualizando pacotes binrios do Debian


Embora este no seja a melhor maneira de se instalar pacotes Debian, preciso ter conhecimento sobre isso, visto que utilitrios de gerenciamento de pacotes como o APT internamente utilizam esses comandos. Instalar e Atualizar pacotes Debian muito simples, basta utilizar a opo -i do dpkg, caso o pacote que esteja tentando instalar j exista no sistema, porm com uma verso anterior, o dpkg cuida de efetuar a atualizao do mesmo, substituindo o antecessor. Caso algum pacote necessite de configurao para que venha a funcionar no sistema, logo aps a sua instalao, ser lanado um programa que ajudar na configurao do mesmo. Para chamar novamente a tela de configurao do pacote, utiliza o comando dpkg-reconfigure pacote com o pacote desejado. Antes de prosseguir, para que possamos executar o exerccio, preciso obter pelo menos um pacote Debian (um arquivo .deb, geralmente). Podemos obter o pacote utilizando a ferramenta APT, que ser estudada adiante:
# dpkg -l dpkg-doc # dpkg -p dpkg-doc

___________________________________________________________________________ Pg. 46

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
# apt-get clean # apt-get -d install dpkg-doc # cd /var/cache/APT/archives/ # ls dpkg-doc_1.10.25_all.deb lock partial # dpkg -i dpkg-doc_1.10.25_al .deb

Utilizamos as opes -l e -p para verificar, respectivamente, se o pacote j estava instalado e se possui dependncias. O pacote em questo no possui dependncias (pelo menos na verso utilizada durante a confeco do material). O comando apt-get clean serve para remover pacotes recentemente baixados no diretrio /var/cache/apt/archives, no qual encontraremos o arquivo dpkg-doc_1.10.25_all.deb, que um pacote binrio debian.

Padro de nomes dos arquivos binrios do Debian


Os arquivos binrios do Debian seguem um padro de nomenclatura para o nome do arquivo que o divide em 3 campos, separados por _ (underline). O primeiro campo o nome do pacote, o segundo, a verso do mesmo, e o terceiro a arquitetura para qual o pacote foi compilado. Quando a arquitetura representa all, significa que o pacote pode ser utilizado em qualquer arquitetura de hardware sem problemas.

Removendo pacotes binrios Debian


possvel remover pacotes binrios instalados no sistema de duas maneiras: Mantendo arquivos de configurao e outros arquivos modificados pelo usurio no sistema ou apagando quaisquer arquivos pertencentes ao pacote. A opo -r do comando dpkg cuida apenas de desinstalar o pacote em questo, j a opo -P (Significa Purge) remove todos os arquivos relacionados ao pacote. importante compreender como o dpkg lida com dependncias nessas situaes. Nestes dois casos de remoo de pacotes, caso voc tente remover um pacote que possua dependncias (Lembre-se que so outros pacotes que tambm esto instalados no sistema, e precisam deste para funcionar), o dpkg interromper imediatamente a operao e emitir um aviso sobre a anormalidade, e qual(is) (so) o(s) pacote(s) dependente(s). tentar remov-los no costuma ser uma boa prtica. Uma boa analogia para isso o seguinte: Imagine que o seu sistema um carro na estrada, em plenos 120Km/h, O pacote que est pretendendo remover um pneu dianteiro..... Todo o resto do carro depende dele para se locomover, e para oferecer segurana aos ocupantes.

___________________________________________________________________________ Pg. 47

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

O Advanced Package Tool (APT)


No incio da era de pacotes nas distribuies Linux, s existia o dpkg do Debian, logo depois a RedHat criou o seu prprio gerenciador de pacotes. Mas faltava algo, pois o gerenciamento de pacotes no estava to fcil assim... Problemas como as dependncias e locais onde se encontrar os pacotes precisavam ser resolvidos manualmente. Estes e outros problemas foram solucionados com o Advanced Package Tool, vulgo APT daqui em diante. O APT uma ferramenta criada por desenvolvedores do Debian para ser a ferramenta oficial de gerenciamento de pacotes, completando as funcionalidades do dpkg, que apesar de ser brilhante, no fcil de se utilizar e tem os problemas j citados, que o APT soluciona. O APT na verdade um programa que cuida de solucionar automaticamente as dependncias na mesma hora da instalao do(s) pacote(s). O funcionamento bem simples, devido ao fato do APT manter uma lista de repositrios de pacotes (estudados adiante), o resto ele faz com as informaes contidas nos prprios pacotes mantendo-as em cache na mquina local. A mgica ocorre na seguinte situao: Imagine ter que instalar um determinado pacote chamado xyz, que depende dos pacotes abc e 123 para funcionar (malditas dependncias...). O APT verifica tal situao, baixa os pacotes do(s) repositrio(s) adequado(s), e os instala na ordem que satisfaa as dependncias, at conseguir instalar o pacote xyz. Isso tudo pode ocorrer sob confirmao do usurio, de forma interativa. importante afirmar que atualmente o APT no uma ferramenta exclusiva do Debian, pois existem algumas verses de APT que foram portadas para outras distribuies Linux que utilizam o gerenciador de pacotes RPM. A brasileira Conectiva foi a pioneira nesse sentido, criando o apt-rpm (Nome do projeto, apesar dos principais comandos serem praticamente idnticos).

Repositrios de pacotes do Debian


Para permitir que o APT funcione, preciso que o sistema conhea ao menos um repositrio de pacotes. Um repositrio de pacotes dispensa muitas explicaes, pois trata-se de uma fonte comum que contenha um ou mais pacotes (geralmente milhares...), o que pode ser um cdrom, um diretrio em um servidor http ou ftp, etc. Os repositrios mais utilizados so os que ficam disponveis pela web (ftp e http), pois isso facilita e muito o gerenciamento de pacotes. Basta, por exemplo, pedir ao apt para que instale determinado pacote que ele ir automaticamente busc-lo no repositrio adequado (graas ao cache de informaes que ele mantm localmente), assim como todas as suas dependncias. O arquivos /etc/apt/sources.list ___________________________________________________________________________ Pg. 48

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes A lista de repositrios armazenada no arquivo de configurao /etc/apt/sources.list. As entradas nesse arquivo seguem este padro:
deb http://site.http.org/debian distribuio seo1 seo2 seo3 deb-src http://site.http.org/debian distribuio seo1 seo2 seo3

A primeira palavra das linhas (deb e deb-src) indicam o tipo de repositrio: se guarda pacotes binrios (deb ), ou seja, os pr-compilados que normalmente usamos ou se guarda pacotes fonte (deb-src), que contm o cdigo-fonte original do programa mais o arquivo de controle Debian (.dsc) e o diff.gz, que contm as modificaes efetuadas no pacotes que s existem no Debian, no no cdigo-fonte original do programa. Segue um exemplo de um sources.list real:
deb http://ftp.debian.org/debian/ stable main deb-src http://ftp.debian.org/debian/ stable main deb http://security.debian.org/ stable/updates main

O segundo campo de cada linha configura o endereo do repositrio (repare nos http://, so repositrios web); Em seguida, temos a verso da distribuio, que segue, basicamente 3 nomes: stable para a ltima distribuio estvel, testing para a distribuio intermediria, que um dia ser a stable, e unstable, que a verso mais instvel disponvel. As distribuies so apenas verses disponveis atualmente do Debian, sempre existem 3 (stable, testing e unstable). No momento em que desenvolvo este material, as verses stable, testing e unstable eram, respectivamente chamadas de: Woody (3.0), Sarge (3.1) e Sid (Esse no tem verso, e tambm nunca troca de nome, pois sempre contm os pacotes mais instveis disponveis). Os ltimos campos so as sees (deve haver pelo menos um deles), que ajuda a dividir os pacotes em categorias. No exemplo, main a categoria principal.

Adicionando um cdrom no sources.list


Para adicionar um cdrom que contenha pacotes debian j organizados na forma de repositrios (cdroms oficiais do debian, por exemplo), utilizamos o comando apt-cdrom. Sintaxe:
apt-cdrom [opes] [comando]

Tabela de parmetros -h -d diretrio -r -m

Exibe a ajuda do programa Especifica o ponto de montagem do cdrom Renomeia um cdrom reconhecido previamente No monta o cdrom

___________________________________________________________________________ Pg. 49

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes -f -a Modo rpido. No atualiza a lista de pacotes Modo Minucioso

Os comandos podem ser add, para adicionar um cdrom ao sources.list, ou ident, para apenas identificar um cdrom na unidade. Exemplos:
# apt-cdrom add # apt-cdrom -d /cdrom1 add # apt-cdrom ident

Adicionando repositrios web no sources.list


Para adicionar repositrios web (http ou ftp) no sources.list, basta adicionar linhas correspondentes para eles no arquivo. Mas para os repositrios oficiais, o Debian conta com um utilitrio capaz de configurar corretamente o sources.list atravs de uma interface amigvel. o apt-setup. Basta digitar apt-setup no shell e seguir as instrues para selecionar o mirror mais apropriado.

Utilizando o apt-get para gerenciar pacotes


Aps configurar o arquivo sources.list com os repositrios desejados, temos tudo preparado para utilizar a principal ferramenta do apt: o apt-get. Ele o gerenciador de pacotes em si, pois cuida de atualizar a lista de pacotes disponveis nos repositrios, instalar, atualizar, remover e verificar (entre outros) pacotes debian. Sintaxe:
apt-get [opes] comando apt-get [opes] instal |remove pacote1 [pacote2 ...] apt-get [opes] source pacote1 [pacote2 ...]

Tabela de opes -h -q -qq -d

Exibe a ajuda do programa Sada logavel, exceto para erros Nenhuma sada, somente erros Instrui o apt-get para apenas efetuar o download do(s) pacote(s). Os arquivos so baixados no diretrio var/cache/apt/

___________________________________________________________________________ Pg. 50

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes archives No executa de verdade nenhum comando, somente simula. Assume Yes como resposta para todas as perguntas e no pede confirmao Tenta continuar mesmo se os arquivos no puderem ser localizados. Mostra uma lista de pacotes atualizados Constri um pacote-fonte aps baix-lo. Especifica um arquivo de configurao p/ o apt. Define uma opo arbitrria de configurao.

-s -y -m -u -b -c=arquivo -o=opo

Tabela de comandos do apt-get update Atualiza a lista de pacotes disponveis upgrade Atualiza todos os pacotes desatualizados do sistema install remove source build-dep dist-upgrade clean Instala novos pacotes no sistema. (indicar o(s) pacote(s), ex: apt-get install xpdf) Remove pacotes do sistema. Mesma sintaxe utilizada para instalar baixa o cdigo fonte de pacotes Constri a rvore de dependncias necessria para permitir a compilao de um pacote O mesmo que upgrade, porm utiliza um mecanismo mais inteligente para lidar com dependncias, categorizando as mais importantes. Apaga todos os arquivos de pacotes temporrios (em / var/cache/apt/archives, basicamente). Faz o mesmo que clean, porm no apaga pacotes que porventura sero utilizados em breve (Um conjunto de dependncias de um pacote, por exemplo.)

autoclean

Exemplo A:
#apt-get update #apt-get upgrade

Esses dois comandos iro, respectivamente, atualizar a lista de pacotes disponveis nos repositrios listados no arquivo /etc/apt/sources.list e atualizar todos os que no estiverem atualizados. Da forma que o comando foi digitado, o apt ir pedir confirmao do usurio antes de prosseguir com a instalao de algum pacote, se houver. Exemplo B:
#apt-get remove nvi #apt-get install vim

___________________________________________________________________________ Pg. 51

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Removemos o pseudo-vi que costuma vir com o Debian no lugar do vim, e em seguida instalamos o vim, que o editor VIM de verdade. Quando for remover um pacote com o apt-get e quiser remover todos os arquivos pertencentes aquele pacote, utilize a opo --purge, ficando assim:
#apt-get remove --purge pacote

Programas auxiliares
Existem alguns programas que completam o super-esquema de gerenciamento de pacotes do Debian. Esses programas geralmente adicionam funcionalidades e/ou facilitam outras aes de outros programas. Os principais so:

aptitude
Este fantstico gerenciador de pacotes considerado um apt-get turbinado, pois sua sintaxe praticamente a mesma, alm de adicionar outras caractersticas nicas, como uma interface amigvel para o gerenciamento de pacotes. Para utiliz-lo, instale da seguinte forma:
# apt-get install aptitude

Aps instalado, j podemos contar com o comando aptitude, que aceita os comandos como install, update e upgrade do apt-get, ou abre a interface grfica de gerenciamento se digitarmos aptitude sem nenhum parmetro. O aptitude notavelmente mais inteligente que o apt-get. Um exemplo como ele lida com pacotes obsoletos do sistema (rfos). Imagine que voc instalou o pacote xyz, que de quebra trouxe os pacote abc e 123 como dependncias. S que se removermos o pacote xyz com o aptget, os pacotes que s serviram de dependncia para ele (o abc e o 123) ficaro ocupando espao no sistema, sem oferecer mais nenhuma dependncia para nenhum outro pacote. J o aptitude capaz de desinstalar automaticamente esses pacotes ao removermos o pacote-pai xyz. O modo grfico do aptitude inicialmente pode parecer confuso, mas logo pegamos a manha. Para atualizar a lista de pacotes (tal como um aptitude update), pressione [U]. Utilize as setas do teclado para navegar pela lista de pacotes categorizada. A tecla [+] marca o pacote para instalao/atualizao, a tecla [-] remove. As teclas do teclado numrico no costumam funcionar bem nesses casos. A tecla [G] avana na seleo (Aps selecionar os pacotes necessrios, por exemplo, vai para a tela de confirmao de instalao) e a tecla [Q] retrocede, e se pressionada na tela inicial do programa, sai dele.

___________________________________________________________________________ Pg. 52

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

apt-show-versions
Este um programa simples, porm direto e funcional. Sua principal funo mostrar as verses dos pacotes disponveis, mas amplamente utilizado para mostrar quais pacotes esto pendentes de atualizao atualmente no sistema. Ele faz isso comparando as verses dos pacotes instalados com as verses dos pacotes na lista dos repositrios. Instale-o com o comando:
# apt-get instal apt-show-versions

Depois utilize-o com a desatualizados no sistema:


# apt-show-versions -u

opo

-u

para

descobrir

quais

pacotes

esto

apt-cache
Utilitrio da famlia apt. Serve para buscar informaes na lista de pacotes dos repositrios. Ele muito utilizado para procurar por pacotes cujo nome ou descrio contenha determinada palavra (til para encontrar um pacote que lide com determinada funcionalidade) e para exibir informaes sobre pacotes que ainda no estejam instalados no sistema, mostrando seu respectivo arquivo de controle. Sintaxe:
apt-cache comando pacote [pacote...]

Tabela de comandos do apt-cache gencaches Gera os caches de informaes. showpkg Mostra informaes gerais do pacote showsrc Mostra registros fontes stats Mostra estatsticas bsicas dump Mostra o arquivo inteiro de forma concisa dumpavail Mostra arquivo de disponveis unmet Mostra dependncias no satisfeitas search Procura por pacotes que casem com algum padro Show Mostra informaes sobre determinado pacote depends Mostra as dependncias de determinado pacote pkgnames Mostra nomes dos pacotes policy Mostra configuraes de polticas

___________________________________________________________________________ Pg. 53

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Exemplos:
#apt-cache search xpdf #apt-cache show xpdf-utils #apt-cache depends xpdf-utils

Exerccio
Verifique com o comando dpkg quais desses pacotes no esto instalados e instale os que faltarem: less, discover, read-edid, locales, console-data e mdetect, tcpdump, ssh. Verifique tambm na descrio dos pacotes para que eles servem.

___________________________________________________________________________ Pg. 54

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

O gerenciador de pacotes RedHat (RPM)


O RPM um gerenciador de pacotes criado pela RedHat (Inclusive leva seu nome) e o gerenciador de pacotes mais amplamente aceito entre as distribuies Linux. As chamadas distribuies RedHat Like (como Conectiva, Mandrake, TurboLinux e Suse) so principalmente conhecidas assim porque levam consigo o gerenciador de pacotes RPM. Portanto, conhecer o gerenciador de pacotes RPM automaticamente qualifica o administrador a estar gerenciando softwares em todas essas distribuies que utilizem RPM como o Gerenciador de Pacotes padro. Mas o RPM no est disponvel somente para estas distribuies. Existem distribuies (Debian por exemplo) que por padro utilizam outro gerenciador de pacotes, mas tambm podem utilizar o RPM em segundo plano. Mas isso no uma boa prtica, pois existir mais de uma base de dados contendo a lista dos softwares instalados no sistemas isso pssimo para a administrao (Seria como ter conta-corrente em dois bancos). O formato do nome de um arquivo RPM segue o padro: foobar-1.0-1.i386.rpm Onde fica dividido em 4 partes. A primeira parte (foobar) o nome do pacote (No confunda com o nome do arquivo!); A segunda (1.0-1) a verso do pacote; A terceira (i386) representa a arquitetura para qual aquele pacote foi compilado. Alguns pacotes vem com a arquitetura all, que compatvel com qualquer arquitetura; A quarta parte a extenso do arquivo (.rpm). O RPM relativamente simples de gerenciar. Suas funes bsicas so: instalao, desinstalao, atualizao e consulta de pacotes. Gerenciamos esses modos atravs do comando rpm. Sintaxe:
rpm -opes [pacote] [pacote...]

Consulta de pacotes RPM


O modo de consulta do permite fazermos consultas sobre os pacotes instalados no sistema (atravs da base de dados mantida pelo RPM) ou sobre pacotes que ainda no esto instalados no sistema, consultando diretamente o arquivo do pacote. Tabela de parmetros -q pacote -qa pacote -qc pacote -qd pacote -ql pacote -qlv pacote -qi pacote Opo obrigatria no modo de consulta. Diz ao rpm que estamos efetuando uma consulta Refere-se a todos os pacotes instalados. Mostra os arquivos de configurao contidos no(s) pacote(s). Mostra os arquivos de documentao contidos no(s) pacote(s). Lista todos os arquivos contidos no(s) pacote(s). Mostra mais informaes sobre os arquivos contidos nos pacotes. Mostra um cabealho de informaes sobre o(s) pacote(s)

___________________________________________________________________________ Pg. 55

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes -qf pacote -qip arquivo.rpm --whatrequires --whatprovides Exemplo A:
# rpm -qa mailcap-2.1.9-2 filesystem-2.1.6-2 bzip2-libs-1.0.2-2 ...

Verifica qual o pacote que prov determinado arquivo ao sistema. Diz ao RPM para efetuar a busca diretamente no arquivo RPM e no a base de dados do RPM. Funciona tambm com as opes c, -d e -l. Mostra qual(is) pacote(s) requer alguma dependncia. Mostra qual(is) pacote(s) prov alguma dependncia.

O exemplo mostra como listar todos os pacotes instalados no sistema. A sada do exemplo foi suprimida por ser muito grande. Repare que o formato da sada similar ao formato do nome do pacote rpm, porm mostra somente os 2 primeiros campos (Nome do pacote e verso). Exemplo B:
# rpm -q kernel kernel-2.4.18-3

Como podem ver, possvel direcionar a consulta para um pacote especfico, para isso, basta especificar seu nome na consulta. (A opo -a no necessria aqui). Observao Uma consulta como essa diz que o pacote no est instalado mesmo que o pacote no exista, levando a concluses erradas sobre a existncias de tal pacote. Portanto, um nome de pacote qualquer que o rpm diga no estar instalado no significa que ele exista em algum lugar. Encare a resposta como No encontrado na base de dados interna do RPM. Exemplo C:
# rpm -qa "vim-*" vim-common-6.1-2 vim-enhanced-6.1-2 vim-minimal-6.1-2

Podemos efetuar pesquisas utilizando curingas. Nesse caso, lembre-se sempre de enquadrar os argumentos de pesquisa entre aspas duplas.

___________________________________________________________________________ Pg. 56

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Exemplo D:
# rpm -qi kernel Name : kernel Relocations: (not relocateable) Version : 2.4.18 Vendor: Red Hat, Inc. Release : 3 Build Date: Qui 18 Abr 2002 09:03:07 GMT+3 Install date: Sex 26 Abr 2002 06:28:03 GMT+3 Build Host: porky.devel.redhat.com Group : System Environment/Kernel Source RPM: kernel-2.4.18-3.src.rpm Size : 30243536 License: GPL Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> Summary : The Linux kernel (the core of the Linux operating system) Description : The kernel package contains the Linux kernel (vmlinuz), the core of your Red Hat Linux operating system. The kernel handles the basic functions of the operating system: memory allocation, process allocation, device input and output, etc.

Utilizamos o argumento -i para mostrar mais informaes sobre o pacote kernel. Da mesma forma, os parmetros -c, -d, -v e -l so utilizados para listar os arquivos contidos no pacote (Vide tabela de parmetros anterior).

Instalao, desinstalao e atualizao de pacotes RPM


Com alguns comandos simples podemos instalar, desinstalar e atualizar pacotes no sistema utilizando o rpm. Antes de instalar um pacote rpm, precisamos obter o pacote rpm, baixando da internet, copiando de algum cd, disquete, rede, etc.. Aqui, partiremos do princpio de que j existe um pacote rpm chamado zebra no diretrio atual (zebra-0.92a-3.i386.rpm), mas os exemplos podem ser seguidos para outros pacotes. Tabela de parmetros -i arquivo.rpm -U arquivo.rpm --oldpackage --force -e pacote -h -v --nodeps Instala determinado pacote no sistema. Caso ele j esteja instalado, o sistema emitir um alerta. Atualiza a verso de um pacote cuja verso antiga j esteja instalada no sistema, ou instala o pacote caso nenhuma verso anterior esteja instalada. Utilizado em conjunto com o -U. Diz ao rpm para substituir o pacote por uma verso mais antiga.
Fora alguma operao que o rpm no esteja permitindo. Remove um pacote do sistema.

Mostra andamento da instalao do(s) pacote(s). Necessita da opo -i. Mostra mais informaes na sada do comando. (O(s) nome(s) do(s) pacote(s) durante uma instalao, por exemplo) Diz ao RPM para ignorar as dependncias (No recomendvel).

___________________________________________________________________________ Pg. 57

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Instalao/Atualizao
Com os dados da tabela acima, podemos concluir que possvel instalar pacotes de duas formas. Com o parmetro -i ou com o parmetro -U. Como o parmetro -U (que serve para atualizao) tambm faz instalao, utilizaremos ele no exemplo, e recomendamos que seja utilizado no dia-a-dia. Outros parmetros bem-vindos para a instalao so o -h e o -v, que adicionaro mais verbosidade a nossa instalao. Exemplo:
# o # A rpm -q zebra pacote zebra no est instalado rpm -Uvh zebra-0.92a-3.i386.rpm preparar... ####################################### [100%] 1:zebra ####################################### [100%] # rpm -q zebra zebra-0.92a-3

Geralmente dessa forma que instalamos pacotes rpm no sistema. O mesmo exemplo serviria para atualizao caso j existisse um pacote zebra de uma verso inferior instalado.

Desinstalao
Desinstalar pacotes rpm ainda mais opo -e seguida do nome do pacote. Exemplo:
# rpm -q zebra zebra-0.92a-3 # rpm -e zebra # rpm -q zebra erro: o pacote zebra no est instalado

simples do que

instal-los.

basta Utilizar

___________________________________________________________________________ Pg. 58

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

COMPILAO DE PROGRAMAS

O vinho escarnecedor, e a bebida forte alvoraadora; todo aquele que por eles vencido, no sbio
Provrbios 20.1

A compilao do cdigo-fonte disponvel de um determinado programa ou driver, apesar de ser menos simples que utilizao de binrios pr-compilados, considerada a melhor forma de garantir a boa implementao e a excelncia dos resultados que desejamos obter, de acordo com a sua finalidade. Graas uma correta e eficiente compilao, conseguiremos alcanar excelentes nveis de otimizao, performance, estabilidade, compatibilidade e ajustes altamente personalizados de que necessitamos ou quando no somente poderemos obt-los com a utilizao deste processo. A compilao o processo pelo qual as instrues contidas no cdigo-fonte so convertidas para uma linguagem de mquina, que somente entendida pelo prprio computador. De acordo com as necessidades (e vantagens), existem duas formas bsicas de compilao para um programa: A esttica e a dinmica. A compilao esttica um processo que apresenta o conceito de integrao total do programa, com todos os seus arquivos e bibliotecas necessrias para o seu funcionamento. A principal vantagem est no fato de que no haver necessidade de instalao de bibliotecas necessrias para o perfeito funcionamento do programa as conhecidas pendncias. Em contrapartida, o tamanho ocupado pelo programa muito superior utilizao destes mesmos utilizando o processo de compilao dinmica, alm de ocupar muito mais memria, caso dois ou trs destes programas utilizem as mesmas bibliotecas e estejam em execuo ao mesmo tempo. A compilao dinmica apresenta conceitos inversos da esttica: ao invs de incluir as bibliotecas necessrias no corpo principal do programa, estas so instaladas parte, onde o programa principal somente realiza as chamadas de funes necessrias para a execuo de suas atividades. A grande vantagem deste mtodo de compilao est justamente nas desvantagens do mtodo de compilao esttica: ganha-se na confeco de pacotes enxutos, utilizao de pouca memria e tima performance quando suas bibliotecas necessrias sendo utilizadas pelo ambiente, como o caso das bibliotecas grficas Qt e GTK. Em contrapartida, surge o grande inconveniente das pendncias, ou seja, para a instalao destes programas, sero necessrios a instalao das devidas bibliotecas para a sua utilizao, caso elas no constem no sistema.

As Ferramentas do Projeto GNU


O Projeto GNU consistia de desenvolver um sistema operacional Unix livre, onde para isto foram construdas inicialmente diversas ferramentas de desenvolvimento. Dentre elas existem desde compiladores, editores, utilitrios de automao e uma srie de bibliotecas para esta atividade. Iremos conhecer as ferramentas indispensveis para a realizao do processo de compilao.

___________________________________________________________________________ Pg. 59

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Bibliotecas
Gnu C Library
A GNU C Library conhecida como glibc usada por praticamente todos os programas desenvolvidos para os sistemas GNU/Linux. Ela essencial para a compilao dos cdigosfonte de seus pacotes. Todas as distribuies possuem uma verso da glibc instalada no sistema, onde de acordo com a filosofia de cada uma, poderemos ter a verso mais recentes ou no. Na consulta das instrues README e INSTALL dos pacotes com os fontes, apenas deveremos ficar atento s verses exigidas da glibc, onde raramente as distribuies deixam de atender tais requisitos.

Gnu Libtool
Desenvolvido por Gordon Matzigkeit, o GNU Libtool um conjunto de shell scripts desenvolvidos para facilitar a criao e uso de bibliotecas compartilhadas. Sua presena indispensvel para a compilao de bibliotecas e pendncias necessrios para a instalao de outros programas.

Ferramentas De Automao
Autoconf
O autoconf uma ferramenta que tem por objetivo desenvolver scripts para automatizar a configurao de cdigos-fontes para a compilao em diferentes plataformas. Graas ele torna-se possvel utilizar um mesmo cdigo para diferentes arquiteturas. Com ele criado o script configure. O script configure, por sua vez, examina as variveis, a existncia de pendncias e as especificaes da plataforma. Com estas informaes, ele ir construir os arquivos Makefiles personalizados, que sero utilizados como regras para a compilao dos programas e assim garantir a compilao do programa especficamente para o sistema em uso.

M4
O m4 a implementao de macro-processadores tradicionais dos ambientes Unix. Sua funo consiste em gerar os arquivos Makefile.am, que por sua vez contm as instrues necessrias para que o automake possa construir os Makefile.in.

Automake
O automake um script desenvolvido em Perl que utiliza as definies geradas pelo GNU m4 (Makefile.am) para a construo dos arquivos Makefile.in. Sua utilizao traz a vantagem de automatizar a tarefa de manuteno dos Makefiles.

Make
Quando Se Compila Um Programa, No S Existe A Necessidade De Unir (Link) Todo O Cdigo-Fonte e gerar o programa principal, como tambm incluir diversas outras instrues (bibliotecas) para compor o corpo funcional do programa. Realizar esta operao algo extremamente trabalhoso, pois teramos que realizar diversos procedimentos manuais para ___________________________________________________________________________ Pg. 60

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes satisfazer suas necessidades. Para isto existe o comando make. O comando make realiza a compilao propriamente dita dos programas os quais desejamos instalar, onde este segue as instrues de um arquivo especial gerado pelo configure (Makefiles), os quais contm todas as instrues para a realizao do processo.

Compiladores
Existem diversos compiladores desenvolvidos pelo Projeto GNU, onde o mais famoso (e largamente utilizado) o GNU C Compiler.

Gnu C Compiler
Conhecido popularmente como GCC, de longe o compilador mais utilizado pelos sistemas GNU/Linux, como tambm no Windows. Desenvolvido por Richard Stallman com o apoio de voluntrios, o GCC um dos melhores e mais completos compiladores existentes. Suporta C, C++ e Objetive-C, segue as especificaes ANSI C, possui excelente performance e portabilidade, alm de inmeras outras qualidades. O GCC encontra-se disponvel por padro em praticamente todas as distribuies GNU/Linux. Em algumas existiro compiladores condicionados para serem utilizados especificamente em algumas arquiteturas especficas, como o Pentium da Intel, por exemplo. Ele indispensvel para a compilao da grande maioria dos programas desenvolvidos para sistemas GNU/Linux, por serem muitas vezes desenvolvidos em C.

Diversos
Binutils
Este pacote contm um conjunto de ferramentas para a manipulao de arquivos binrios nos sistemas GNU/Linux. Na compilao dos programas, utilizado para a construo dos arquivos que iro compor o corpo do programa em si, inclusive o executvel.

Patch
O comando patch utilizado para atualizar um antigo programa empacotado no formato de cdigo-fonte, que por sua vez necessita de uma atualizao. Os motivos desta atualizao podero ser diversos: correo de erros, atualizao propriamente dita, compatibilidade, etc. Os pacotes de atualizao possuem a extenso .diff, os quais podero ser baixados normalmente como um arquivo comum. Antes de utilizar o pacote com a atualizao, deveremos copi-lo para o diretrio-raz onde se encontra o cdigo-fonte do programa original e dentro deste, utilizar as seguintes sintaxes: Para atualizar um pacote, utilize...
$ patch -p0 < [ATUALIZAO].diff

Para testar se a operao foi realizada normalmente...


$ patch -p0 --dry-run [ATUALIZAO].diff

Para remover a atualizao...


$ patch -p0 -R < [ATUALIZAO].diff

___________________________________________________________________________ Pg. 61

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Obteno do Cdigo-Fonte
Geralmente voc obtm o cdigo-fonte dos programas ou drivers desejados na pgina do desenvolvedor. Basta apenas baix-los e copi-los para a mquina onde voc deseja instalar ou obt-los de diferentes locais, como nos CD-ROMs que possuem o cdigo-fonte dos aplicativos e outros dispositivos de armazenamento (cpia de segurana).

Descompactao Do Cdigo-Fonte
O cdigo-fonte geralmente se encontra empacotado e compactado em um nico arquivo que pode ter a extenso .tar.gz ou .tar.bz2. A extenso .tar informa que o cdigo fonte encontrase empacotado pelo utilitrio TAR, enquanto o complemento informa que o pacote gerado foi compactado com o gzip (.tar.gz) ou Bzip2 (.tar.bz2). para descompacta-los, abra um terminal e proceda da seguinte forma. Para pacotes compactado com o gzip (extenso .tar.gz)...
$ tar -xpzvf [NOME DO PACOTE].tar.gz

... ou...
$ gunzip [NOME DO PACOTE].tar.gz $ tar -xpvf [NOME DO PACOTE].tar

Para pacotes compilados com o Bzip2 (extenso .tar.bz2)...


$ tar -xpjvf [NOME DO PACOTE].tar.bz2

... ou...
$ bunzip2 [NOME DO PACOTE].tar.bz2 $ tar -xpvf [NOME DO PACOTE].tar

Estes so os compactadores mais comuns utilizados no sistema GNU/Linux, porm existe a possibilidade de se obter o pacote do cdigo-fonte compactado com outros utilitrios menos conhecidos: Para pacotes compactados com o compress (extenso .tar.Z)...
$ tar -xpZvf [NOME DO PACOTE].tar.Z

... ou...
$ compress -d [NOME DO ARQUIVO].tar.Z $ tar -xpvf [NOME DO ARQUIVO].tar

Observem a utilizao do parmetro Z em maisculo, informando ao empacotador que o arquivo ser desempacotado foi compactado pelo utilitrio compress. Para pacotes compactados no formato ZIP (extenso .zip):
$ unzip [NOME DO PACOTE].zip

Aps a realizao dos passos demonstrados, normalmente criado um diretrio com o nome do programa e o contedo do cdigo-fonte desempacotado. Agora basta apenas entrar neste diretrio...
$ cd [NOME DO DIRETRIO CRIADO]

___________________________________________________________________________ Pg. 62

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Local de Armazenamento
Conforme a recomendao tcnica da norma FHS, os pacotes que contm o cdigo-fonte dos programas devero estar armazenados no diretrio /usr/local/src pois no pertencem distribuio , mas nada o impede de armazen-lo em qualquer outro lugar.

A Configurao, Compilao e Instalao do Pacote


Para compilar o pacote, existem 3 comandos serem utilizados: Comandos ./configure make make install Funes Script responsvel para deteco das pendncias e gerao de relatrios, chamados makefile. Ferramenta de automao necessria para a compilao do cdigo-fonte, baseando-se nas instrues do makefile. Instalao do pacote compilado.

A partir da, s digitar os seguintes comandos e aguardar algumas instrues do processo de compilao, de acordo com o pacote.
# ./configure ................................. # make ................................. # make install

Os comandos ./configure e make podero ser rodados com permisses de usurios comum; j o make install somente poder ser utilizado com os privilgios do superusurio, pois justamente ele que ir realizar a instalao propriamente dita.

Limpando o Diretrio do Pacote Compilado


Aps a realizao da compilao e instalao de um programa, talvez seja necessria a limpeza da estrutura do diretrio com o cdigo-fonte. Para isto temos disposio a opo make clean para limpar (apagar) os arquivos gerados durante o processo de compilao, bem como as definies gerais utilizadas durante a execuo do script de configurao.
# make clean

Este processo somente se faz necessrio quando houver necessidade de reutilizar o cdigofonte para realizar novas compilaes ou caso tenha ocorrido algum erro em alguma compilao prvia (e depois solucionada), de acordo com as nossas necessidades.

___________________________________________________________________________ Pg. 63

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Desinstalando um Pacote Compilado


Alguns programas possuem a programas compilados no sistema.
# make uninstall

opo make

uninstall,

necessrio

para desinstalar os

Contedo da Documentao
Ao contrrio do que muitos pensam, uma das mais importantes etapas do processo de compilao a leitura e o entendimento de toda sua documentao, ou pelo menos das partes relevantes do texto. Como requerimento bsico, todos os desenvolvedores de programas devem redigir uma documentao de sua aplicao, o qual dever descrever todos os processos bsicos inerentes como os requerimentos bsicos, a instalao, a configurao, a utilizao, diversas recomendaes e muitas outras informaes necessrias para o bom uso do programa.

O Diretrio docs
Geralmente a maioria dos desenvolvedores quando no disponibilizam a documentao em um arquivo separado ou quando estes possuem um certo grau de complexidade, geralmente armazenam diversos documentos (arquivos) em um subdiretrio chamado docs. Estaro l as principais informaes pertinentes ao programa em questo.

Readme / Install
Instrues bsicas sobre o programa e o procedimento correto para a instalao. Apesar de muitas vezes ser descartado, imprescindvel a sua leitura, pois muitas dos problemas e dificuldades encontrados esto brevemente descritos nestes documentos. Muitas vezes so inclusos os dois arquivos distintos: o README para as instrues gerais e o INSTALL para as instrues com enfoque exclusivo para a instalao.

Copying
O documento COPYING contm a licena do programa, suas clusulas, termos, restries, entre outros. Nos programas de cdigo-aberto distribudos livremente, geralmente se encontra uma licena GPL ou compatvel. Para ter acesso ao seu contedo, basta utilizarmos qualquer aplicao para a sua leitura.

Copyright
O documento COPYRIGHT contm trechos sobre o licenciamento de partes ou aspectos importantes do programa. Nele poderemos consultar para saber se uma aplicao disponvel sob os termos da GNU GPL, alm de encontrar o nome dos criadores do produto.

___________________________________________________________________________ Pg. 64

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Release
Todas as implementaes, melhorias e correes do programa so especificados neste documento. Quando houver necessidade de se consultar se um determinado programa suporta uma tecnologia ou inovao, neste arquivo em que devero ser consultadas estas informaes

Credits
Todos os devidos crditos, que vo desde autores colaboradores, suportes, etc., esto especificados neste documento. Apesar de ser dispensvel sua leitura, seus autores sentiro-se lisongeados em serem conhecidos.

Changelog
As principais mudanas realizadas ao longo da existncia do programa so comentados brevemente neste documento, que praticamente um histrico de todas as verses de sua existncia. Poderemos encontrar nestas documentaes as principais implementaes, alm de correes de erros e ainda os principais motivos do porque um programa X no funciona com a verso da biblioteca Y, entre outros.

Funcionalidades Detalhadas
Apesar de serem necessrias apenas a utilizao da seqncia de comandos padres para a compilao clssica na maioria das circunstncias, existiro casos em que, para instalarmos determinados aplicativos, teremos que recorrer utilizao de intervenes especficas para propsitos distintos; seja para habilitar um suporte ou uma funcionalidade extra, seja para adaptar o programa de acordo com as nossas necessidades. Neste caso, a seqencia de comandos muito provavelmente ser modificada para atender tais circunstncias; ora existiro outros comandos mais, ora os mesmos comandos necessitaro de um parmetro extra. Dos comandos e parmetros geralmente mais utilizados, seguem:

./configure
Conforme dissemos anteriormente, o script configure o responsvel pela construo dos Makefiles para que o compilador construa os binrios partir de suas especificaes.
# ./configure [PARMETROS]

Apesar da maioria dos programas utilizarem esta opo padro para a configurao dos pacotes serem compilados, muitos possuem parmetros especficos que devero ser habilitados e/ou desabilitados na prpria linha de comando. Por exemplo, o MPlayer um dos programas que necessitam de diversos parmetros especificados nesta linha. Para obter maiores informaes dos parmetros disponveis, consultem as instrues contidas nos arquivos README ou INSTALL, ou utilizem o parmetro --help na prpria linha de comando. Segue um pequeno exemplo das opes disponveis por padro:
# ./configure --help `configure' configures this package to adapt to many kinds of systems.

___________________________________________________________________________ Pg. 65

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
Usage: ./configure [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print `checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for `--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or `..']

Outra situao bastante comum o interesse do usurio em instalar o programa em locais especficos. Para isto bastar a adio do parmetro...
$ ./configure --prefix=/[LOCALIZAO]

Por padro, os programas compilados so instalados na rvore /usr/local, porm sua localizao pode ser modificada conforme as especificaes do parmetro --prefix=, onde [LOCALIZAO] ser o novo diretrio destino.

make
O comando make o mais simples de utilizar, pois no necessita parmetro extra para a sua utilizao basta apenas digitar na linha de comando...
$ make

de nenhum

... para iniciar todo o processo de compilao. Em contrapartida, caso ocorra algum erro durante a utilizao deste comando, existir uma grande impossibilidade deste problema ser resolvido. Procurem sempre consultar a documentao do programa para evitar maiores inconvenientes.

make deps / make depend


Estes comandos possuem a finalidade de checar as pendncias gerais do sistema para a satisfao do programa que se deseja instalar. Caso falte algum pacote ou modificao necessria, estas informaes sero exibidas no programa. So poucos, mas alguns programas necessitam destes parmetros.

___________________________________________________________________________ Pg. 66

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

make install
Diferente dos comandos anteriores, o comando make install somente executado pelo superusurio, e o principal responsvel pela correta instalao do programa. Somente poder ser utilizado depois de se ter obtido sucesso com as etapas anteriores. Sem grandes mistrios.

make clean
Conforme dito anteriormente, remove (limpa) todos os arquivos gerados pela compilao anterior e que se mantiveram presentes na estrutura de diretrios do cdigo-fonte.

make uninstall
Sua funo desinstalar os programas compilados (inverso de make install), porm com um pequeno agravante: nem todos os programas possuem esta opo para realizar a sua desinstalao. A melhor forma de suprir esta deficincia a execuo de utilitrios para o gerenciamento de programas, como o Checkinstall ao invs de utilizar o comando make install. Ser ento gerado um pacote compilado no formato desejado, que possibilitar utilizar as ferramentas de gerenciamento de pacotes do sistema e com isto realizar sua remoo tranqilamente. Antes de realizar qualquer instalao, certifique-se de que a opo make uninstall encontra-se disponvel no programa ser compilado, para evitar este tipo de inconveniente.

Observaes Importantes para o Processo de Compilao


Manuteno do Cdigo-Fonte
salvo algumas situaes especiais, o diretrio com o cdigo-fonte do aplicativo aps devidamente compilado e instalado, poder ser removido. O espao utilizado pelos arquivos gerados no processo de compilao tende ser grande, ocupando desde vrios centenas de megabytes. Caso tenham que intervir novamente no gerenciamento do programa instalado, reutilizem as opes disponveis do cdigo-fonte empacotado ou as ferramentas nativas do sistema para gerenciamento de programas.

Aplicativos & Utilitrios


Praticamente todos os aplicativos e utilitrios possuem requerimentos de bibliotecas e APIs para serem corretamente instalados, e para obter informaes sobre eles, consulte sua pgina eletrnica ou a documentao que acompanha o cdigo-fonte do aplicativo. Outro grande inconveniente est nas verses das pendncias e bibliotecas necessrias. Muitas vezes os pacotes que compe a distribuio se encontram desatualizados para os aplicativos que desejamos instalar, sendo necessrio a atualizao destes para a obteno de bons resultados.

Drivers, Mdulos e Kernel


Dentre as necessidades mais importantes para a compilao de drivers e mdulos est na ___________________________________________________________________________ Pg. 67

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes manuteno do cdigo-fonte do kernel (e em alguns casos, do cabealho) previamente instalado. Procurem se certificar de que os pacotes kernel-headers e kernel-source se encontram instalados no sistema. Dependendo da distribuio em uso, estes pacotes no se encontram no CD-ROM de instalao, onde devero ser baixados e instalados. Para o carregamento e descarregamento dos mdulos compilados, ser indispensvel a manuteno do pacote modutils, que felizmente se encontra em todas as distribuies GNU/Linux, alm de ser instalado por padro. Diversos perifricos necessitam da criao, edio e modificaes na permisso de acesso de seus respectivos dispositivos, como o caso das placas de som, fax-modem, CD-R/CD-RW, leitores de DVD, etc. Com menor incidncia, existe a necessidade da edio de parmetros em arquivos de configurao, tanto o do sistema como o do prprio programa. Por ltimo, o processo de compilao do kernel de sistemas GNU/Linux bem diferenciado, em comparao ao processo de compilao dos programas e drivers. Alm da existncia de inmeros parmetros, existem uma srie de requerimentos necessrios para que possamos garantir a obteno de excelentes resultados.

___________________________________________________________________________ Pg. 68

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

MANIPULAO DE ARQUIVOS E DIRETRIOS


A resposta branda desvia o furor, mas a palavra dura suscita a ira
Provrbios 15.1

A seguir veremos alguns comandos utilizados para manipular arquivos e diretrios, tarefa comum no dia-a-dia de um administrador de sistemas Linux.

mkdir
Utilizamos o comando mkdir com a nica finalidade de criar diretrios no sistema. Um diretrio nada mais do que um arquivo especial contendo a lista de outros diretrios e arquivos nele contidos. Ele pode ser entendido como uma pasta onde voc guarda seus papis (arquivos). Como uma pessoa organizada, voc utilizar uma pasta para guardar cada tipo de documento, da mesma forma voc pode criar um diretrio vendas para guardar seus arquivos relacionados com vendas naquele local. Sintaxe:
mkdir [parmetro] <diretorio> [<outro diretorio>] [...]

Exemplo A:
# mkdir dir1

Cria um diretrio chamado dir1 dentro do diretrio atual. Exemplo B:


# pwd /root # mkdir dir2 # mkdir dir2/gama/beta mkdir: cannot create directory `dir2/gama/beta/teste': No such file or directory # mkdir -p dir2/gama/beta/teste # ls dir2/gama/beta/ teste

Primeiro criamos o diretrio dir2 dentro da pasta atual (/root). Em seguida tentamos criar o diretrio dir2/gama/beta, sem sucesso, pois o mkdir por padro s cria um diretrio se o anterior j existir. Para mudar esse comportamento, utilizamos a opo -p (parentes), que cria os diretrios pais caso eles no existam. Podem ser criados mais de um diretrio com um nico comando. Exemplo: # mkdir /tmp/teste /tmp/teste2 /tmp/teste3

___________________________________________________________________________ Pg. 69

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

tree
Exibe a rvore de diretrios e seu contedo em um formato hierrquico. um comando simplrio, porm de grande ajuda. No possui argumentos Sintaxe:
tree [opes] <diretrio>

Tabela de parmetros -a -d -f -i -C -p -u -g Exemplo:

Lista todos os arquivos, inclusive ocultos. Lista somente diretrios. Mostra caminho completo dos diretrios e arquivos. Desabilita a Indentao. Habilita sada colorida. Mostra permisses dos arquivos/diretrios. Mostra usurio dono dos arquivos/diretrios. Mostra grupo dono dos arquivos/diretrios.

# tree -f . |-- ./Desktop | `-- ./Desktop/starthere.desktop |-- ./dead.letter |-- ./dir2 | `-- ./dir2/gama | `-- ./dir2/gama/beta | `-- ./dir2/gama/beta/teste |-- ./fedora2 | |-- ./fedora2/disc1 | | `-- ./fedora2/disc1/FC2-i386-disc1.iso | |-- ./fedora2/disc2 | | `-- ./fedora2/disc2/FC2-i386-disc2.iso | |-- ./fedora2/disc3 | | `-- ./fedora2/disc3/FC2-i386-disc3.iso | `-- ./fedora2/disc4 | `-- ./fedora2/disc4/FC2-i386-disc4.iso |-- ./historico `-- ./iptraf.log 10 directories, 8 files

rmdir
Remove um diretrio do sistema. O diretrio a ser removido deve estar vazio. Sintaxe:
rmdir <diretorio> [<outro diretorio>] [...]

___________________________________________________________________________ Pg. 70

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes necessrio estar um nvel acima do(s) diretrio(s) que ser(o) removido(s). Por exemplo, para remover o diretrio /tmp/teste voc deve estar fora deste diretrio e executar o comando, como no exemplo abaixo: Exemplo:
# rmdir /tmp/teste

rm
Apaga arquivos. Tambm pode ser usado para apagar diretrios e sub-diretrios. Sintaxe:
rm [parmetro] <arquivo ou diretorio> [<outro arquivo ou diretrio> [...]

Tabela de parmetros -r -i -v -u -f Exemplo A:

Remove Arquivos e Diretrios recursivamente. Necessrio quando se quer remover algum diretrio no-vazio Pergunta antes de remover. Mostra os nomes dos arquivos que esto sendo movidos. Copia somente se o arquivo de origem mais novo que o arquivo de destino ou quando o arquivo de destino no existe. Fora a remoo. Remove arquivo(s) e/ou diretrio(s) sem perguntar. (Perigoso se associado com o comando

$ mkdir -p ~/exercicios/rm; cd ~/exercicios/rm $ touch teste.txt $ rm -iv teste.txt rm: remove arquivo comum vazio `teste.txt'? s removed `teste.txt'

Apaga o arquivo teste.txt no diretrio atual. Exemplo B:


$ cd / $ rm -rfv ~/exercicios/rm removed directory: `/home/usuario/exercicios/rm'

Remove o diretrio rm, criado no Exemplo A.

touch
Muda a data e hora que um arquivo foi criado. Tambm pode ser usado para criar arquivos vazios. Sintaxe:
touch [parmetros] <arquivo[s]>

___________________________________________________________________________ Pg. 71

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Tabela de parmetros -t [AA]MMDDhhmm -a -c -m -r arquivo_de_referencia Exemplo A:
# ls # touch arquivo1 arquivo2 arquivo3 # ls -l total 3 -rw-r--r-- 1 enunes uniararas 0 2006-10-27 17:22 arquivo1 -rw-r--r-- 1 enunes uniararas 0 2006-10-27 17:22 arquivo2 -rw-r--r-- 1 enunes uniararas 0 2006-10-27 17:22 arquivo3

Utiliza a hora especificada (MM=ms, DD=dia, hh=hora, mm=minuto). Os ano com dois dgitos no comeo so opcionais (AA). Modifica a data de acesso do arquivo. No cria um arquivo vazio, caso o arquivo no exista. Modifica a data de modificao do arquivo. Utiliza um arquivo de referencia de data para o arquivo alvo.

Criados 3 arquivos vazios. Observe a data de criao dos arquivos. Exemplo B:


# ls -l arquivo1 -rw-r--r-- 1 enunes uniararas # touch -t 0311201245 arquivo1 # ls -l arquivo1 -rw-r--r-- 1 enunes uniararas 0 2006-10-27 17:22 arquivo1 0 2003-11-20 12:45 arquivo1

Continuando o exemplo anterior, modificamos a data de criao de arquivo1 para dia 20 de novembro de 2003, s 12:45. Exemplo C:
# ls -l -rw-r--r-- 1 enunes uniararas -rw-r--r-- 1 enunes uniararas -rw-r--r-- 1 enunes uniararas # touch -r arquivo1 arquivo3 # ls -l -rw-r--r-- 1 enunes uniararas -rw-r--r-- 1 enunes uniararas -rw-r--r-- 1 enunes uniararas 0 2003-11-20 12:45 arquivo1 0 2006-10-27 17:22 arquivo2 0 2006-10-27 17:22 arquivo3 0 2003-11-20 12:45 arquivo1 0 2006-10-27 17:22 arquivo2 0 2003-11-20 12:45 arquivo3

Agora utilizamos o touch para modificar a data de criao de arquivo3 com base em arquivo1.

cp
Copia arquivos. Sintaxe:
cp [OPO]... ORIGEM DESTINO cp [OPO]... ORIGEM... <DIRETRIO> cp [OPO]... --target-directory=DIRETRIO ORIGEM...

Copia ORIGEM para DESTINO, ou mltiplas ORIGENS para DIRETRIO. ___________________________________________________________________________ Pg. 72

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes ORIGEM o arquivo que ser copiado. Podem ser especificados mais de um arquivo para ser copiado e tambm pode-se usar Coringas como ? e *. DESTINO o caminho ou nome de arquivo onde ser copiado. Mesmo que o DESTINO seja a pasta atual, ele deve ser especificado (Lembrete: . significa o diretrio atual). Se o destino for um diretrio, os arquivos de origem sero copiados para dentro do diretrio. Tabela de parmetros -i -r -v -a -s -l -p -u Pergunta antes de substituir um arquivo existente. Faz cpia recursiva dos arquivos. Mostra nomes dos arquivos enquanto copia. Copia todos os tipos de arquivos, inclusive links simblicos. O cp no copia links simblicos por padro.
Cria link simblico no destino ao invs copiar o arquivo em si.

Cria link (hardlink) no destino ao invs copiar o arquivo em si. Mantm os atributos do arquivo, se possvel. Copia somente se o arquivo de origem mais novo que o arquivo de destino ou quando o arquivo de destino no existe. Cpia de atualizao, na verdade. No copia arquivos que estejam localizados em parties (Pontos de Montagem) diferentes.

-x

Antes de prosseguir, vamos criar o ambiente p/ os exerccios: Ambiente:


$ mkdir -p ~/exercicios/cp $ cd ~/exercicios/cp $ mkdir /tmp/arquivos $ touch /tmp/arquivos/arquivo{1,2,3} $ ls /tmp/arquivos arquivo1 arquivo2 arquivo3

Exemplo A:
$ ls $ cp /tmp/arquivos/arquivo1 . $ ls arquivo1

Efetuada uma simples cpia do arquivo arquivo1 p/ o diretrio atual (~/exercicios/cp). Exemplo B:
$ mkdir subdir $ cp -var /tmp/arquivos subdir/ `/tmp/arquivos' -> `subdir/arquivos' `/tmp/arquivos/arquivo1' -> `subdir/arquivos/arquivo1' `/tmp/arquivos/arquivo2' -> `subdir/arquivos/arquivo2' `/tmp/arquivos/arquivo3' -> `subdir/arquivos/arquivo3' $ cp -var /tmp/arquivos . `/tmp/arquivos' -> `./arquivos' `/tmp/arquivos/arquivo1' -> `./arquivos/arquivo1' `/tmp/arquivos/arquivo2' -> `./arquivos/arquivo2'

___________________________________________________________________________ Pg. 73

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
`/tmp/arquivos/arquivo3' -> `./arquivos/arquivo3' $ tree . |-- arquivo1 |-- arquivos | |-- arquivo1 | |-- arquivo2 | `-- arquivo3 `-- subdir `-- arquivos |-- arquivo1 |-- arquivo2 `-- arquivo3 3 directories, 7 files

Copia recursivamente todo o contedo de /tmp/arquivos para subdir/ (recm-criado). Depois faz a mesma cpia, porm com o destino sendo o diretrio atual, mas como estamos copiando uma estrutura completa de um diretrio, esse diretrio tambm criado, assim como toda a estrutura anterior, como pode ser visto na sada do comando tree. Exemplo C:
$ ls arquivo1 arquivos subdir erivelton@nunes:~/exercicios/cp$ cp -i /tmp/arquivos/arquivo1 . cp: sobrescrever `./arquivo1'? s $ cp /tmp/arquivos/arquivo? . $ ls arquivo1 arquivo2 arquivo3 arquivos subdir

Copiado o arquivo arquivo1 para o diretrio local, porm j existia um arquivo de mesmo nome. A opo -i garante confirmao antes de sobrescrever um arquivo. Depois foi utilizado um coringa (?) para copiar 3 arquivos de uma s vez para o diretrio atual, e dessa vez, como no foi especificada a opo -i, o arquivo arquivo1 foi sobrescrito sem pedir confirmao.

mv
Move ou renomeia arquivos e diretrios. O processo semelhante ao do comando cp mas o arquivo de origem movido de seu local original para o novo local. Sintaxe:
mv [parmetro] [origem] [destino]

Tabela de parmetros -f -i -v -u

Substitui o arquivo de destino sem perguntar. Pergunta antes de substituir (padro). Mostra os nomes dos arquivos que esto sendo movidos. Copia somente se o arquivo de origem mais novo que o arquivo de destino ou quando o arquivo de destino no existe.

___________________________________________________________________________ Pg. 74

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Exemplo A:
$ mkdir -p ~/exercicios/mv; cd ~/exercicios/mv $ touch teste.txt $ mv teste.txt uniararas.txt $ ls uniararas.txt

Muda o nome do arquivo teste.txt para uniararas.txt. Exemplo B:


$ mv -v uniararas.txt /tmp `uniararas.txt' -> `/tmp/uniararas.txt' removed `uniararas.txt'

Move arquivo uniararas.txt para dentro do diretrio /tmp. Repare que o comando mv age de forma idntica ao cp, porm ele remove o arquivo logo aps a cpia.

cat
Concatena e exibe arquivos. Sintaxe:
cat [parmetro] <diretorio ou arquivo>

Tabela de parmetros -A -b -n -v -t Exemplo:

Exibe todos os caracteres especiais. Numera apenas as linhas no-vazias da sada. Numera todas as linhas da sada. Exibe caracteres no-imprimveis. Exibe caracteres de tabulao.

$ mkdir -p ~/exercicios/cat; cd ~/exercicios/cat $ cat > teste1.txt teste1 $ cat > teste2.txt teste2 $ ls teste1.txt teste2.txt $ cat teste1.txt teste1 $ cat -n teste1.txt 1 teste1 $ cat -n teste1.txt teste2.txt 1 teste1 2 teste2 $ cat -n test* 1 teste1 2 teste2

O primeiro comando cat redireciona a palavra digitada teste1 para o arquivo teste1.txt. Para que o texto digitado v definitivamente p/ o arquivo, devemos teclar [CONTROL]+[D] em uma linha abaixo da ltima contendo texto. O mesmo feito com teste2.txt. Depois utilizamos o ___________________________________________________________________________ Pg. 75

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes comando cat para visualizar o contedo do arquivo teste1.txt. Repare na utilizao do parmetro -n.

tac
Mostra o contedo de um arquivo (como o cat) em ordem inversa, ou seja, as ltimas linhas primeiro. Sintaxe:
tac [parmetro] <diretorio ou arquivo>

Exemplo:
$ mkdir -p ~/exercicios/tac; cd ~/exercicios/tac $ cat > teste.txt linha1 linha2 linha3 $ tac teste.txt linha3 linha2 linha1

ln
Cria links para arquivos e diretrios no sistema. O link um mecanismo que faz referncia a outro arquivo ou diretrio em outra localizao (Como os atalhos no Microsoft Windows). Sintaxe:
ln [parmetro] [origem] [link] ln [parmetro]... <destino> [link] ln [parmetro]... <destino>... <diretrio>

Tabela de parmetros -s Cria Link simblico. -v Mostra o nome de cada arquivo ao fazer o link. -d Cria Hardlink para diretrios. Somente o root pode usar essa opo. Antes de entender os links, devemos compreender um termo sobre os sistemas de arquivos: Inodes.

INODES
Todo arquivo criado no sistema de arquivos recebe um nmero que o identifica unicamente dos demais no mesmo sistema de arquivos (partio). A esse nmero damos o nome de inode. possvel saber o inode de um arquivo especfico com a opo -i do comando ls.

___________________________________________________________________________ Pg. 76

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Exemplo:
$ ls -i teste1.txt 554844 teste1.txt

Nesse exemplo, o inode do arquivo teste1.txt 554844. Existem 2 tipos de links: Links Simblicos e Hardlinks.

Links Simblicos
O link simblico cria um arquivo especial no disco (do tipo link) cujo contedo o caminho para chegar at o arquivo alvo (isto pode ser verificado pelo tamanho do arquivo do link, bem menor do que o arquivo de destino). Use a opo -s para criar links simblicos. Ambiente:
$ mkdir ~/exercicios/ln; cd ~/exercicios/ln $ touch arquivo1 $ mkdir -p dir1/sub1/sub2 dir2/

Esses comandos criaro o ambiente necessrio para aprendermos sobre links. Exemplo A:
$ ln -s arquivo1 link1 $ ls -li total 8 554848 -rw-r--r-- 1 enunes uniararas 0 2006-10-28 17:29 arquivo1 439830 drwxr-xr-x 3 enunes uniararas 4096 2006-10-28 17:30 dir1 439833 drwxr-xr-x 2 enunes uniararas 4096 2006-10-28 17:30 dir2 554850 lrwxrwxrwx 1 enunes uniararas 8 2006-10-28 17:41 link1 -> arquivo1

Utilizamos o ln para criar um link simblico (opo -s) do arquivo arquivo1 para link1. Repare que ele aparece referenciado na sada do comando ls -li. Constate tambm que o nmero dos inodes dos arquivos linkados diferem, o que confirma que so realmente arquivos diferentes. Exemplo B:
$ cd dir1/sub1/sub2/ $ ln -s ../../../dir2 $ ls -l total 0 lrwxrwxrwx 1 enunes uniararas 13 2006-10-29 09:42 dir2 -> ../../../dir2

Repare a possibilidade de se criar links utilizando caminhos relativos, inclusive para diretrios. Se movermos o link de lugar, o link pode perder referncia (apontar para um arquivo inexistente) e se tornar um link quebrado.

Hardlinks
A grande diferena entre os Links Simblicos e os Hardlinks a forma como eles referenciam o arquivo linkado. No caso dos Hardlinks, no criado um arquivo novo no sistema de arquivos como nos links simblicos, e sim adicionada uma nova referncia no diretrio atual que aponte o link para o mesmo inode do arquivo original. Dessa forma, se fizermos um hardlink de um ___________________________________________________________________________ Pg. 77

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes arquivo, no teremos dois arquivos diferentes no sistema, e sim uma nova referncia ao mesmo inode do arquivo linkado, o que torna o link exatamente o mesmo arquivo que o original, pois o arquivo s ser excludo do sistema de arquivos quando o ltimo link tambm for. No possvel criar HardLinks para arquivos que no se encontrem no mesmo sistema de arquivos (partio). Exemplo:
$ cd ~/exercicios/ln/ $ ls -li total 8 554848 -rw-r--r-- 1 enunes uniararas 0 439830 drwxr-xr-x 3 enunes uniararas 4096 439833 drwxr-xr-x 2 enunes uniararas 4096 554850 lrwxrwxrwx 1 enunes uniararas arquivo1 $ ln arquivo1 hardlink1 $ ls -li total 8 554848 -rw-r--r-- 2 enunes uniararas 0 439830 drwxr-xr-x 3 enunes uniararas 4096 439833 drwxr-xr-x 2 enunes uniararas 4096 554848 -rw-r--r-- 2 enunes uniararas 0 554850 lrwxrwxrwx 1 enunes uniararas arquivo1

2006-10-28 17:29 arquivo1 2006-10-28 17:30 dir1 2006-10-28 17:30 dir2 8 2006-10-28 17:41 link1 ->

2006-10-28 17:29 arquivo1 2006-10-28 17:30 dir1 2006-10-28 17:30 dir2 2006-10-28 17:29 hardlink1 8 2006-10-28 17:41 link1 ->

Criado um link do arquivo arquivo1 para hardlink1. Repare que o inode deles so idnticos (destacados em negrito). Isso significa que so exatamente os mesmos arquivos.

___________________________________________________________________________ Pg. 78

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

GERENCIAMENTO DE USUARIOS E GRUPOS


Mais vale o bom nome do que as muitas riquezas; e o ser estimado melhor do que prata e ouro
Provrbios 22.1

Neste captulo aprenderemos a utilizar as ferramentas para gerenciar usurios e grupos do sistema. Tarefa crucial em um ambiente de administrao Linux.

Identificadores de Usurios e Grupos (UID e GID)


No GNU/Linux, assim como no Unix, os usurios e grupos do sistema possuem um identificador numrico que os diferenciam dos demais. No caso dos usurios, esse nmero chamado de UID (User Identificator); No caso dos grupos, esse nmero recebe o nome de GID (Group Identificator). Esses sistemas utilizam arquivos texto para traduzir o UID e GID para um nome inteligvel para humanos, alm de fornecer outras informaes. Para que um usurio seja vlido no sistema, preciso que hajam registros p/ eles nesses arquivos. Esses arquivos so mostrados a seguir.

/etc/passwd
Esse arquivo contm uma lista em modo texto de todos os usurios cadastrados no sistema, um por linha, onde cada linha se divide em sete campos. O caractere : divide os campos de cada linha. Segue um exemplo de uma linha do arquivo /etc/passwd :
erivelton:x:1000:1000:Erivelton R. Nunes,,,:/home/erivelton:/bin/bash

O primeiro campo (erivelton) o nome do usurio. O segundo campo (x) a senha criptografada do usurio. Sempre quando esse campo contiver apenas a letra x, significa que o sistema est utilizando senhas sombreadas (Shadow Passwords), ou seja, no est armazenando as senhas nesse arquivo, e sim no /etc/shadow, visto mais adiante. Os campos 3 e 4 Mostram o UID e GID do usurio, respectivamente. O quinto campo chamado GECOS, e armazena informaes adicionais sobre o usurio, divididas com , dentro do campo. Informaes que podem ser o Nome Completo do Usurio, telefones, nmero da sala, etc. O sexto campo define qual ser o diretrio base do usurio (diretrio home). No exemplo, o diretrio base do usurio /home/erivelton. E finalmente, o stimo e ltimo campo define qual ser o interpretador de comandos (shell) do usurio. Nesse caso o shell do usurio /bin/bash. Quando o usurio erivelton efetuar login no sistema, ser executado o comando /bin/bash, devido a isso que aberto um bash logo aps o login. ___________________________________________________________________________ Pg. 79

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

/etc/shadow
Esse arquivo somente utilizado quando Senhas Sombreadas (Shadow Passwords) esto um uso no sistema. Senhas Sombreadas so usadas nas distribuies atuais e a muito tempo, pois oferecem mais segurana guardando a senha em um arquivo que no pode ser lido por usurios comuns no sistema (o /etc/passwd pode ser lido por todos). O /etc/shadow segue o mesmo formato de diviso do /etc/passwd, porm contm 9 campos.
erivelton:$1$cTdn0tUz$Ck447Zu3nMzo1bPXWQq3g.:12708:0:99999:7:::

Os campos esto divididos da seguinte forma: 1 Nome do usurio: 2 Senha criptografada. 3 Data da ltima troca de senha (Contada em dias corridos desde 01/01/1970). 4 Tempo mnimo de dias que a senha deve permanecer inalterada. 5 Tempo mximo de dias que o usurio pode ficar com a mesma senha. 6 Com quantos dias de antecedncia o sistema deve avisar que a senha ir expirar. 7 Nmero de dias de inatividade em que o sistema deve considerar o usurio bloqueado. 8 Uma data para a expirao automtica da conta. Utiliza o mesmo formato do campo 3. 9 Esse ltimo campo est reservado para uso futuro.

/etc/group
neste arquivo que so armazenados todos os grupos armazenados no sistema. Esse arquivo tambm segue o mesmo formato que o /etc/passwd, mas cada linha contm apenas 4 campos. Conforme abaixo:
uniararas:x:1410:erivelton,fulano,beltrano

O primeiro campo o nome do grupo, o segundo a senha do grupo, seguido do GID do grupo. O ltimo campo, quase sempre vazio, a lista, separada por vrgula, dos usurios que tambm pertencem a esse grupo.

___________________________________________________________________________ Pg. 80

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

/etc/gshadow
O arquivo gshadow armazena informaes de administradores e senhas de grupos.
games:*::

O primeiro campo o nome do grupo; O segundo a senha do grupo, como no est definida, recebe o valor de *; O terceiro campo armazena os nomes dos administradores desse grupo (Administradores de grupos sero explicados adiante), separados por vrgula; O ltimo campo te a mesma funo do ltimo campo do arquivo /etc/group.

Gerenciamento de usurios
Existem diversas formas de gerenciarmos usurios do sistema. Em qualquer uma delas, o objetivo gerenciar as entradas adequadas dos arquivos /etc/passwd, /etc/shadow, /etc/group e /etc/gshadow. Adicionar as entradas manualmente editando esses arquivos uma tarefa difcil e perigosa, pois est mais propensa a erros. Por isso existem alguns comandos especificamente designados para gerenciar essas entradas dos respectivos arquivos. Veremos esses comandos a seguir.

Adicionando usurios com useradd


Utilizamos o comando useradd para criar um novo usurio no sistema. Sintaxe:
useradd useradd [-u uid [-o]] [-g grupo] [-G grupo-secundario,...] [-d home] [-s shell] [-c comentario] [-m [-k template]] [-f inativo] [-e expirao ] [-p senha] usurio -D [-g grupo] [-b base] [-s shell] [-f inativo] [-e expirao ]

O useradd trabalha de dois modos. O primeiro modo adiciona o usurio com as opes especficas. O segundo modo ativado quando a opo -D (Defaults) habilitada, e serve para visualizar e definir os padres para criao dos usurios. Tabela de parmetros Informa qual deve ser o UID do usurio. Se omitido, o sistema utiliza o -u uid prximo disponvel. -o Permite criar usurio com UID duplicado (Usurio Clonado) -g grupo Especifica qual ser o grupo principal do Usurio. Algumas distribuies aderem ao sistema criado pela RedHat, chamado UPG (Unix Private Group), que cria um grupo com o mesmo nome do usurio, no qual somente determinado usurio pertence ao grupo. Informando esse parmetro estamos evitando que o sistema crie um grupo no esquema UPG, mas o grupo no qual informarmos j deve previamente ___________________________________________________________________________ Pg. 81

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes existir. Especifica a quais grupos secundrios esse usurio deve pertencer Especifica qual ser o diretrio base do usurio. Especifica qual ser o shell do usurio. Adiciona informaes no campo GECOS do arquivo /etc/passwd. O sistema criar um diretrio base para o usurio caso ele no exista (comportamento padro). O contedo do novo diretrio ser exatamente o mesmo que o diretrio /etc/skel, que, por sua vez, serve como um diretrio de perfil para novos usurios criados no sistema. Especifica uma pasta de template (perfil) alternativa ao /etc/skel para o usurio a ser criado. Essa opo s vlida junto com a opo -m. Especifica o nmero de dias em que a senha expire at que a conta seja permanentemente desabilitada. O valor 0 expira a senha assim que a conta houver expirado. O valor -1 desabilita essa caracterstica (padro). Especifica uma data na qual a conta ir expirar. o Formato deve ser AAAA-MM-DD, por exemplo: 2006-11-01 seria 01 de novembro de 2006. Especifica a senha criptografada. Intil nos dias de hoje, pois existem comandos especficos para gerenciar as senhas. Se utilizada sem nenhum outro parmetro serve para visualizar os padres atuais para criao dos usurios. Se ativada em conjunto com as opes -g, -b, -s, -f ou -e possvel modificar o valor padro de grupo, diretrio base (home), shell, inativo e expirao, respectivamente.

-G grupo -d home -s shell -c comentrio -m -k template -f inativo -e expirao -p senha

-D

Exemplo A:
# useradd -G users,audio -d /home/uniararas -m -c "Uniararas LinuxCenter" aluno

O comando acima adicionou o usurio aluno ao sistema, pertencendo aos grupos users e audio (esses grupos j existiam). A linha no arquivo /etc/passwd ficou assim:
aluno:x:10092:100:Uniararas LinuxCenter:/home/uniararas:/bin/bash

Exemplo B:
# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= shell= SKEL=/etc/skel # useradd -D -s /bin/sh # useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= shell=/bin/sh

___________________________________________________________________________ Pg. 82

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
SKEL=/etc/skel

Modificamos o grupo padro para novos usurios para o UID 29, que em nosso sistema referese ao grupo audio.

Definindo senhas com passwd


O comando passwd modifica senhas para contas de usurios e grupos. Um usurio normal somente pode trocar sua prpria senha. Somente o superusurio root pode trocar a senha de qualquer usurio no sistema. O passwd tambm utilizado para modificar informaes sobre a conta de usurio, tais como o nome completo, o shell inicial, data de expirao de senha, etc. Sintaxe:
passwd [-f|-s] [usuario] passwd [-x maximo] [-n minimo] [-w aviso] [-i inativo] usuario passwd {-l|-u|-d|-S|-e} usuario

Tabela de parmetros Serve para trocar o nome do usurio (campo de comentrio -f no arquivo /etc/passwd). Age como o comando chfn, visto adiante. Age como o comando chsh, viso adiante. Serve para modificar o shell do -s usurio -l Trava a conta do usurio. (lock) -u Destrava a conta do usurio. (unlock) -d Deleta a senha do usurio (Deixa em Branco). -S Mostra o status da conta de usurio. (Data de expirao, etc...) -e Expira imediatamente a senha do usurio.

Troca de Senhas
Quando um usurio aciona o comando passwd para trocar a senha, o usurio questionado a si mesmo quanto a senha atual (caso exista). A senha digitada ento criptografada e comparada com a senha criptografada j existente no sistema. O usurio s tem uma chance de inserir a senha correta. Somente o superusurio root pode trocar senhas sem antes confirmar a anterior, pois isso permite que ele possa redefinir senhas esquecidas, por exemplo. Logo aps a senha antiga ser validada, informaes sobre a idade da senha so verificadas no sistema para definir se o usurio tem permisso de trocar a senha naquele momento. Em caso negativo, o passwd se recusa a trocar a senha. Em caso positivo, o usurio ento questionado sobre a nova senha, que aps digitada, verificada quanto a complexibilidade. No geral, senhas devem consistir em 6 a 8 caracteres incluindo um ou mais do seguinte: Letras maisculas; Letras minsculas;

___________________________________________________________________________ Pg. 83

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Nmeros de 0 a 9; Caracteres de pontuao (Ex.: ~,. !)

O passwd ir rejeitar qualquer senha que no atender aos requisitos. Se a senha for aceita, o usurio ento questionado para repetir a mesma senha, que ento comparada com a senha nova para evitar que erros de digitao possam impedir que determinado usurio acesse o sistema. Cabe ressaltar que o passwd pode modificar a ordem de verificao em alguns sistemas, mas os passos so os mesmos. Exemplo A:
# passwd aluno Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully

Primeiramente definimos uma senha para o usurio aluno. Como o usurio root que est definindo a senha para o usurio aluno, a checagem de complexibilidade da senha no feita. No exemplo definimos a senha 123 (no aparece enquanto digitamos, normal). Exemplo B:
$ passwd Changing password for aluno (current) UNIX password: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully

Agora, aps logarmos como o usurio aluno, tentamos trocar sua senha. repare que foi necessrio digitar a senha atual (123). Na nova senha, escolhemos uma com boa complexibilidade: zxasQW12, sem as aspas. Exemplo C:
# passwd -de aluno Password changed.

Deletamos e expiramos a senha para o usurio aluno, isso ir requerer que o usurio cadastre uma nova senha na prxima tentativa de login. Muito cuidado com isso, utilize somente em casos extremos em que no exista outra alternativa, pois caracteriza uma grande falha de segurana.

Removendo usurios com userdel


Utilizamos o comando userdel para remover usurios do sistema.

___________________________________________________________________________ Pg. 84

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Sintaxe:
userdel [-r] usuario

O nico parmetro disponvel para o userdel o -r, que instrui ao userdel para remover tambm todos os arquivos do usurio (na verdade o comando remove a pasta home do usurio). Por padro (sem a opo -r), o userdel mantm os arquivos do usurio. Exemplo:
# ls -ld /home/aluno/ drwxr-xr-x 2 aluno users 136 Nov 3 11:43 /home/aluno/ # userdel -r aluno userdel: user aluno is currently logged in

O sistema apresentou um erro ao tentar remover o usurio aluno, que estava logado em outro terminal. No possvel remover usurios que estejam logados no momento.
# userdel -r aluno # ls -ld /home/aluno/ ls: /home/aluno/: No such file or directory

Aps o usurio efetuar logoff do terminal em que estava j possvel remov-lo. Repare que foram removidos tambm seus arquivos pessoais.

Aumentando a segurana com o comando chage


O comando chage serve para gerenciar as entradas de expirao de senha encontradas no arquivo /etc/shadow. muito importante definir informaes de expirao de senha para um sistema linux, pois isso agrega mais segurana, impedindo que usurios permaneam muito tempo com a mesma senha, ou at mesmo que contas de usurios inexistentes permaneam vlidas. Sintaxe:
chage [-m min_dias] [-M max_dias] [-d ultimo_dia] [-I inativo] [-E data_expira] [-W dias_aviso] usurio chage -l usurio

O comando chage age de duas formas. Da primeira forma ele define as opes de expirao de senha do usurio, da segunda forma (com a opo -l) ele mostra as opes atualmente definidas para determinado usurio. Tabela de parmetros -m mim_dias Intervalo mnimo de dias que o usurio pode trocar a senha. Nmero mximo de dias que o usurio pode permanecer com -M max_dias a mesma senha. Especifica qual a data da ltima alterao de senha do usurio. O valor a ser especificado para ultimo_dia o nmero de dias desde 01/01/1970, ou -d ultimo_dia uma data no formato AAAA-MM-DD (Ex: 2006-12-15 significa dia 15 de dezembro de 2006). Nmero de dias de inatividade (Sem efetuar Login no sistema) que a -I inativo senha automaticamente bloqueada. ___________________________________________________________________________ Pg. 85

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes -E data_expira -W dias_aviso -l Exemplo A:
# chage -l huguinho Minimum: 0 Maximum: 99999 Warning: 7 Inactive: -1 Last Change: Nov 10, 2006 Password Expires: Never Password Inactive: Never Account Expires: Never # chage huguinho Changing the aging information for huguinho Enter the new value, or press ENTER for the default Minimum Password Age [0]: 2 Maximum Password Age [99999]: 90 Last Password Change (YYYY-MM-DD) [2006-11-10]: Password Expiration Warning [7]: 5 Password Inactive [-1]: 30 Account Expiration Date (YYYY-MM-DD) [1969-12-31]: 2006-12-15 # chage -l huguinho Minimum: 2 Maximum: 90 Warning: 5 Inactive: 30 Last Change: Nov 10, 2006 Password Expires: Feb 08, 2005 Password Inactive: Mar 10, 2005 Account Expires: Dec 15, 2006

Especifica at qual data a conta do usurio ser vlida. til para usurios de funcionrios temporrios. O valor para data_expira segue o mesmo padro que a opo -d. Configura com quantos dias de antecedncia determinado usurio ser avisado sobre a expirao de sua senha. Lista as opes atuais de expirao de senha.

Repare em como ficaram os valores de expirao de senha aps as modificaes e associe aos campos adequados. Exemplo B:
# chage -m2 -M90 -W5 -I30 -E2006-12-15 huguinho

Uma outra forma de se chegar no mesmo resultado do exemplo anterior. Quando uma conta bloqueada por motivo de expirao de senha, somente o administrador (root) capaz de desbloque-la utilizando novos valores para o chage e, quando necessrio, desbloqueando a conta com o comando passwd -u usuario.

___________________________________________________________________________ Pg. 86

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Gerenciando informaes de usurios com chfn e finger


Podemos utilizar o comando chfn para editar informaes tpicas dos usurios, como seu nome completo, telefone, departamento, etc. Essas informaes ficam armazenadas em cada uma das entradas do arquivo /etc/passwd, mais especificamente no quinto campo de cada entrada. bastante til ter essas informaes, pois a forma mais fcil de obter informaes sobre os usurios cadastrados no sistema. Sintaxe:
chfn [-f nome_completo] [-r sala] [-w fone_trabalho] [-h fone_casa] [-o outros] [usuario]

Tabela de parmetros -f nome_completo Configura o Nome completo do Usurio (Ex: Maria de Jesus) -r sala Nmero da sala em que ele trabalha -w fone_trabalho Telefone Comercial -h fone_casa Telefone Residencial -o outros Outras Informaes e Observaes Exemplo A:
# chfn huguinho Changing the user information for huguinho Enter the new value, or press ENTER for the default Full Name []: Hugo da Silva Sauro Room Number []: 5 Work Phone []: 5555555 Home Phone []: 6666666 Other []: Usurio de testes da Uniararas # finger huguinho Login: huguinho Name: Hugo da Silva Sauro Directory: /home/huguinho Shell: /bin/sh Office: 5, 555-5555 Home Phone: 666-6666 Last login Thu Nov 11 14:35 (BRST) on tty2 No mail. No Plan.

As informaes definidas com chfn podem ser consultadas com o comando finger, conforme o exemplo. O comando finger no vem instalado por padro em algumas distribuies Linux. No Debian, para instal-lo, digite como usurio root: apt-get install finger

___________________________________________________________________________ Pg. 87

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Exemplo B:
chfn -f "Hugo da Silva Sauro" -r 5 -w 5555555 -h 6666666 -o "Usurio de testes da Uniararas" huguinho

A linha de comando acima leva ao mesmo resultado que o exemplo anterior.

Modificando o shell do usurio com chsh


O comando chsh lida com o ltimo campo do arquivo /etc/passwd, o shell inicial do usurio. Um usurio normal somente pode trocar o shell principal para sua prpria conta. Somente o root tem permisso para trocar o shell de outros usurios. Sintaxe:
chsh [-s login_shell] [user]

Quando o comando invocado por um usurio normal, o novo shell informado deve estar listado no arquivo /etc/shells. Se for invocado pelo root e o comando no existir nesse arquivo, o comando automaticamente adicionado no arquivo. Exemplo A:
# chsh huguinho Changing the login shell for huguinho Enter the new value, or press return for the default Login Shel [/bin/sh]: /bin/bash

Modificado o shell inicial do usurio para /bin/bash. Exemplo B:


# chsh -s /bin/bash huguinho

Mesmo que o exemplo anterior, de forma direta.

Verificando integridade dos arquivos de senhas com pwck


O comando pwck verifica a integridade de informaes de autenticao dos usurios o sistema nos arquivos /etc/passwd e /etc/shadow em busca de erros de formato. O comando verifica o seguinte: O nmero correto de campos; Nomes de usurios duplicados; UID's e GID's rfos; Grupo vlido; Diretrio home vlido; Shell inicial vlido.

___________________________________________________________________________ Pg. 88

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Sintaxe:
pwck [-sr] [passwd shadow]

A opo -s serve para ordenar os usurios nos arquivos /etc/passwd e /etc/shadow com base em seu UID. A outra opo (-r) no pode ser utilizada junto com -s, e serve para ativar o modo somente-leitura do pwck, que apenas mostra o que est errado mas nunca modifica nenhum arquivo. Se especificarmos uma das opes passwd ou shadow, o pwck somente agir nos respectivos arquivos. Exemplo:
# pwck user lp: directory /var/spool/lpd does not exist user news: directory /var/spool/news does not exist user uucp: directory /var/spool/uucp does not exist user postgres: directory /var/lib/postgres does not exist user list: directory /var/list does not exist user irc: directory /var/run/ircd does not exist user gnats: directory /var/lib/gnats does not exist user grpadm: directory /home/grpadm does not exist user huguinho: directory /home/huguinho does not exist user zezinho: directory /home/zezinho does not exist user nobody: directory /nonexistent does not exist pwck: no changes

O comando pwck detectou que os diretrios home de alguns usurios no existiam, mas no efetuou nenhuma modificao no sistema, somente alertou.

Convertendo/Revertendo o sistema de senhas shadow


O linux disponibiliza dois comandos que nos permitem converter e reverter o sistema de senhas shadow. Para migrar um sistema que ainda no utiliza senhas shadow, utilizamos o comando pwconv. J para reverter um sistema j com shadow ativado, utilizamos o comando pwunconv. Para migrar tambm as informaes de grupos para shadow (Tirar as senhas do /etc/group e migrar para o /etc/gshadow, basicamente) utilizamos grpconv. Para reverter, grpunconv. Tem o mesmo efeito que pwconv e pwunconv, porm atua nos arquivos de grupos.

Modificando contas de usurios com usermod


Todos os dados que podem ser fornecidos ao comando useradd durante a criao de um usurio no sistema podem ser alterados, no caso de usurios j existentes, com o comando usermod. Sintaxe:
usermod [-u uid [-o]] [-g grupo] [-G grupo,...] [-d home [-m]] [-s shell] [-c comentario] [-l novo_nome] [-f inativo] [-e expira ] [-p senha] [-L|-U] nome

___________________________________________________________________________ Pg. 89

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Exemplo A:
# id huguinho uid=10095(huguinho) gid=100(users) groups=100(users),1521(grupo) # usermod -l donald huguinho # id huguinho id: huguinho: No such user # id donald uid=10095(donald) gid=100(users) groups=100(users),1521(grupo) # usermod -l huguinho donald # id huguinho uid=10095(huguinho) gid=100(users) groups=100(users),1521(grupo)

Utilizamos o usermod para renomear o usurio huguinho para donald; Verificado que somente o nome do usurio mudou, em seguida renomeamos novamente o usurio para o nome original. Exemplo B:
# id huguinho uid=10095(huguinho) gid=100(users) groups=100(users),1521(grupo) # usermod -u 10094 huguinho # id huguinho uid=10094(huguinho) gid=100(users) groups=100(users),1521(grupo)

Modificado o uid do usurio huguinho de 10095 para 10094. Lembrando que o novo uid no pode estar atribudo a nenhum usurio j existente. Uma boa forma de memorizar comandos como esses associando sua utilizao. Por exemplo: useradd = user + add (Adicionar Usurio), usermod = user + mod (Modificar usurio).

Gerenciamento de grupos
Gerenciar grupos de usurios uma tarefa imprescindvel no dia a dia de um administrador Linux. Tarefas como adicionar e remover grupos, definir a quais grupos determinados usurios devem participar, determinar administradores de grupos, etc. essencial uma boa compreenso sobre o funcionamento dos grupos de usurios no Linux, pois o correto funcionamento do sistema depende de grande coerncia no que tange gerenciamento de grupos e usurios.

Obtendo Informaes com o comando id


Uma das principais ferramentas que auxiliam no gerenciamento de usurios e grupos o comando id. Com ele possvel saber, por exemplo, a quais grupos um determinado usurio pertence, com seus respectivos gids.

___________________________________________________________________________ Pg. 90

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Sintaxe:
id [parmetro]... [usurio]

Tabela de parmetros Mostra somente o GID. Se utilizado em conjunto com o parmetro -n, -g mostra o nome do grupo. Mostra todos os grupos (GIDs) que o usurio pertence. Se utilizado em -G conjunto com o parmetro -n, mostra os nomes dos grupos. O primeiro grupo na listagem o grupo principal, os demais so os secundrios. Mostra nomes ao invs de nmeros (UIDs e GIDs) na sada do -n comando. Mostra somente o UID. Se utilizado em conjunto com o parmetro -n, -u mostra o nome do usurio. Exemplos:
$ id uid=1052(enunes)gid=1001(uniararas)grupos=6(disk),24(cdrom),25(floppy),29( audio),1001(uniararas), 1006(suporte),1507(apostilas) $ id -G 1001 6 24 25 29 1006 1507 $ id -Gn uniararas disk cdrom floppy audio suporte apostilas $ id root uid=0(root) gid=0(root) grupos=0(root)

Adicionando grupos com groupadd


Cria novos grupos no sistema. Sintaxe:
groupadd [-g gid [-o]] grupo

Exemplo:
$ groupadd -g 1037 uniararas

O comando acima cria um novo grupo no sistema, com GID 1037. Caso o UID (-g) seja omitido, o sistema escolhe automaticamente o prximo disponvel. A opo -o serve para forar a utilizao daquele gid, mesmo que ele j esteja atribudo a outro grupo.

Removendo grupos com groupdel


Para remover um grupo do sistema utilizamos o comando groupdel. Se removermos um grupo que contenha usurios, os usurios so mantidos no sistema, porm no tero mais vnculo com o grupo removido. Sintaxe:
groupdel grupo

___________________________________________________________________________ Pg. 91

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Adicionando usurios aos grupos


Utilizamos o comando gpasswd para, dentre outras coisas, adicionar usurios em grupos j existentes. Sintaxe:
gpasswd -a usuario grupos

Exemplo:
# useradd -m aluno # id aluno uid=10092(aluno) gid=100(users) groups=100(users) # groupadd uniararas # gpasswd -a aluno uniararas Adding user aluno to group uniararas # id aluno uid=10092(aluno) gid=100(users) groups=100(users),1001(uniararas)

Aps adicionado o usurio aluno e o grupo uniararas, utilizamos o comando gpasswd para adicionar o usurio recm-criado ao grupo.

Removendo usurios dos grupos


Para remover usurios dos grupos tambm fazemos uso do gpasswd, da seguinte forma:
gpasswd -d usuario grupo

Exemplo:
# id aluno uid=10092(aluno) gid=100(users) groups=100(users),1001(uniararas) # gpasswd -d aluno uniararas Removing user aluno from group uniararas

Modificando informaes sobre grupos


Atravs do comando groupmod possvel renomear um grupo ou trocar o GID. Sintaxe:
groupmod [-g gid [-o]] [-n novo_nome ] grupo

Exemplo:
# groupadd linux # gpasswd -a aluno linux Adding user aluno to group linux # id aluno uid=10092(aluno) gid=100(users) groups=100(users),1511(linux) # groupmod -g 1520 -n pinguim linux # id aluno uid=10092(aluno) gid=100(users) groups=100(users),1520(pinguim)

___________________________________________________________________________ Pg. 92

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes No exemplo, primeiro criamos o grupo linux e adicionamos o usurio aluno nele. O sistema automaticamente atribuiu um GID para o grupo (1511, no exemplo). Utilizamos o comando groupmod para trocar o GID e o nome do grupo linux.

Definindo administradores de grupos com gpasswd


Todos os grupos no sistema podem ter administradores, membros e uma senha. Podemos utilizar o comando gpasswd para definir administradores e senha de grupos. Administradores de grupos so usurios que tem permisso (previamente concedida pelo usurio root) para adicionar usurios do sistema aos grupos que eles administram. importante lembrar que o usurio a ser adicionado ao grupo j deve existir no sistema. Sintaxe:
gpasswd [-A usurio,...] [-M usurio,...] grupo

A opo -A serve para nomear um usurio do sistema como administrador do grupo. A opo -M faz o mesmo, porm adiciona o usurio como membro do grupo tambm. Exemplo:
# useradd -m admgrupo # id admgrupo uid=10094(admgrupo) gid=100(users) groups=100(users) # groupadd grupo # gpasswd -A admgrupo grupo # useradd -m huguinho # su - admgrupo $ gpasswd -a huguinho grupo Adding user huguinho to group grupo $ id huguinho uid=10095(huguinho) gid=100(users) groups=100(users),1521(grupo) $ gpasswd -d huguinho grupo Removing user huguinho from group grupo $ id huguinho uid=10095(huguinho) gid=100(users) groups=100(users)

No exemplo foi definido que o usurio admgrupo administrador do grupo grupo. Para remover esse privilgio do usurio, preciso remover o nome do usurio em questo do terceiro campo do arquivo /etc/gshadow.

Trocando o grupo principal temporariamente com newgrp


possvel trocar o grupo principal do usurio somente para a sesso atual (tudo volta ao normal ao trmino da sesso). Isso pode ser til quando precisamos ter privilgios especficos de determinado grupo por alguns instantes. Utilizamos o comando newgrp para essa finalidade. Sintaxe:
newgrp [-] grupo

O parmetro - instrui ao comando para carregar todas as variveis de ambiente do shell atual. ___________________________________________________________________________ Pg. 93

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Exemplo A:
$ id uid=10096(admgrupo) gid=100(users) groups=100(users) $ gpasswd grupo Changing the password for group grupo New Password: Re-enter new password: $ su - huguinho Password: $ id uid=10095(huguinho) gid=100(users) groups=100(users),1521(grupo) $ newgrp grupo $ id uid=10095(huguinho) gid=1521(grupo) groups=100(users),1521(grupo) $ exit

Nesse exemplo, foi definida uma senha para o grupo; Como o usurio huguinho pertence ao grupo grupo, no foi necessrio digitar uma senha para o grupo. Quando acionamos o comando newgrp grupo, foi aberto um novo shell atrelado ao shell atual. Exemplo B:
# useradd -m zezinho # id zezinho uid=10097(zezinho) gid=100(users) groups=100(users) # su - zezinho $ newgrp - grupo Password: $ id uid=10097(zezinho) gid=1521(grupo) groups=100(users),1521(grupo) $ exit

Adicionamos o usurio zezinho, que por padro pertence somente ao grupo users. Como foi definida uma senha para o grupo grupo antes, o usurio zezinho pode utilizar o comando newgrp para temporariamente fazer parte do grupo. Para isso lhe foi requisitada a senha do grupo, que foi cadastrada no exemplo anterior com o comando gpasswd grupo.

Verificando Integridade dos arquivos de grupos com grpck


O comando grpck verifica a integridade das informaes de autenticao do sistema. Todas as entradas dos arquivos /etc/group e /etc/gshadow so verificadas quanto ao formato correto em cada campo. O usurio questionado a deletar uma entrada defeituosa que esteja comprometendo a segurana do sistema. O comando verifica o seguinte nos arquivos:

O nmero correto de campos; Nomes de grupos duplicados; Uma lista vlida de membros e administradores.

___________________________________________________________________________ Pg. 94

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Sintaxe:
grpck [-r] [group shadow]

A opo -r diz para o grpck efetuar os testes em modo somente-leitura, ou seja, no altera nenhum arquivo, somente mostra os problemas na tela. O padro do comando verificar ambos os arquivos /etc/group e /etc/shadow; Para forar ele verificar somente um deles, basta especificar somente o nome de um dos arquivos como parmetro. Para o Exemplo abaixo, partimos do princpio de que exista um problema de nome de grupo duplicado no arquivo /etc/group, conforme abaixo:
grupo:!:1521:huguinho grupo:!:1522:

Exemplo:
# grpck duplicate group entry delete line `grupo:!:1521:huguinho'? No duplicate group entry delete line `grupo:!:1522:'? Yes grpck: the files have been updated

Respondemos No para a primeira pergunta e Yes para a segunda porque a primeira pergunta referenciava a linha correta (que no devemos apagar).

___________________________________________________________________________ Pg. 95

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

PERMISSES DE ARQUIVOS E DIRETRIOS


No te glories do dia de amanh, porque no sabes o que trar luz
Provrbios 27.1

As permisses so um dos aspectos mais importantes do Linux (na verdade, de todos os sistemas baseados em Unix). Elas so usadas para vrios fins, mas servem principalmente para proteger o sistema e os arquivos dos usurios. Manipular as permisses algo muito essencial. Mas tal complexidade no deve ser interpretada como dificuldade e sim como grande variedade de configuraes, o que permite criar vrios tipos de proteo de arquivos e diretrios. Como voc deve saber, somente o super-usurio (root) tem aes irrestritas no sistema, justamente por ser o usurio responsvel pela configurao, administrao e manuteno do Linux. Cabe a ele por exemplo, determinar o que cada usurio pode executar, criar, modificar, etc. Naturalmente, a forma usada para determinar o que o usurio pode fazer a determinao de permisses.

Conceitos
Permisso o ato de dar liberdade, poder ou licena para; consentir; autorizar a fazer uso de; no obstar; tolerar. Esta justamente a inteno das permisses dos arquivos no sistema: limitar o acesso aos arquivos, de acordo com a importncia dos mesmos e com o desejo do seu dono, de forma a manter a segurana e integridade do sistema. Como j foi dito, cada arquivo possui, associado a ele, um conjunto de atributos e um deles so as permisses relativas a ele prprio. Estas permisses podem ser entendidas como um nmero de 12 bits onde, obviamente, cada bit pode variar entre zero e um, indicando a ausncia ou presena de uma permisso especfica.

A primeira diviso que pode ser feita neste nmero de 12 bits, separa trs bits para determinar os atributos do arquivo, seo 3, e o restante -9 bits- para a determinao da proteo do arquivo.

___________________________________________________________________________ Pg. 96

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Bits de atributo
Os bits de atributo definem um controle adicional s permisses de proteo do arquivo. Os atributos de um arquivo so trs e cada um deles desempenha uma funo bem especfica. O primeiro conhecido como bit setuid, que, se estiver ativado, ou seja, com valor igual a um, faz com que o arquivo seja executado como se o fosse pelo seu dono, no faz sentido para diretrios. O segundo atributo o bit setgid, que, se estiver ativado, faz com que o arquivo seja executado como se o fosse por um membro do grupo do seu dono, ou seja, todo arquivo criado em um diretrio com o bit setgid ativado, criado com o mesmo grupo do diretrio. Por fim, o terceiro atributo conhecido como bit sticky e, se estiver ligado, faz com que o arquivo possa ser apagado apenas pelo seu dono. Um grande exemplo da utilizao deste bit de atributo est no diretrio /tmp, onde todos os usurios cadastrados no sistema podem utilizar o diretrio livremente. Contudo, nenhum usurio pode apag-lo, visto que ele pertence ao superusurio root e possui o seu bit sticky ligado. Sendo assim, pode ser apagado apenas pelo usurio root. Desta maneira, pode-se reescrever os bits de atributo com sua notao simblica, onde, da esquerda para a direita, os bits podem substitudos por letras que os simbolizam. O primeiro bit pode ser substitudo por um 's', que simboliza o bit setuid, o segundo bit pode ser substitudo por outro 's', que simboliza o bit setgid e o terceiro bit, por um 't', que simboliza o bit sticky, assim como mostrado na figura abaixo.

Bits de proteo
Os bits de proteo definem as protees bsicas de cada arquivo (leitura -read-, escrita -write- e execuo -execution-). A ativao, ou no, de cada um destes bits define quem pode visualizar -ler- o arquivo, quem pode alter-lo/apag-lo -escrever- e/ou execut-lo -executar-. Assim como os bits de atributo, h uma subdiviso destes bits em trs grupos de trs bits cada, o que define as permisses para o dono do arquivo (primeiros trs bits, da esquerda para a direita), as permisses para os membros do mesmo grupo do dono do arquivo (os trs bits da seqncia) e as permisses para os outros usurios do sistema (ltimos trs bits). Isto pode ser facilmente visualizado na figura abaixo.

___________________________________________________________________________ Pg. 97

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Cada bit, de cada subdiviso, determina se o usurio que a subdiviso representa pode ler, escrever ou executar o arquivo. Sendo assim, pode-se utilizar as letras 'r' -leitura-, 'w' -escrita- e 'x' -execuo- para representar, simbolicamente estes bits, como na figura abaixo.

Notaes
At agora, o leitor foi apresentado a duas formas de notao das permisses -duas formas distintas de representar as permisses-, a notao binria, que identifica as permisses como um nmero de 12 bits, onde cada bit representa uma permisso especfica -direito do dono ler o arquivo, direito de membros do grupo do dono alterarem o arquivo, privilgio para apenas o dono excluir o arquivo e etc.-. Assim tem-se um nmero como 000000000000 representando as permisses. Uma outra notao vista foi a simblica, que em vez de utilizar bits, utiliza caracteres para representar cada permisso especfica, gerando algo como sstrwxrwxrwx. Entretanto, representar permisses desta maneira muito entediante para as pessoas, alm de ser muito suscetvel a erros. Quanto mais caracteres para escrever, maior a possibilidade de errar. Por isso, resolveu-se criar um tipo de notao onde se pudesse representar as mesmas permisses, mas utilizando-se de menos caracteres. Foi a que surgiu a notao octal. Como j foi visto, a representao das permisses utilizando a notao binria, logicamente divide as permisses em trs bits para atributos especiais e nove para os atributos de proteo. Por sua vez, os atributos de proteo so subdivididos em trs grupos de trs bits cada, representando os privilgios para o dono do arquivo, para os membros do mesmo grupo do dono do arquivo e para os outros usurios do sistema. Assim, tem-se um nmero de 12 bits que representa as permisses dividido em quatro grupos de trs bits (000000000000 -> 000 000 000 000). Ora, basta ter alguma noo de converso de bases entre nmeros, para saber que trs bits a quantidade exata de bits necessria para se representar nmeros na base octal (tambm chamada de base oito, porque utiliza oito algarismos para representar seus dgitos de zero a sete). Assim sendo, em vez de se representar as permisses na notao binria como quatro seqncias de trs bits -12 dgitos-, pode-se representar as mesmas permisses na notao octal, que utiliza um dgito para cada uma das quatro seqncias, totalizando em quatro dgitos para se representar todas as permisses. Desta forma, em vez de se utilizar de 12 algarismos para representar as permisses, pode-se utilizar apenas quatro, o que diminui a probabilidade de erros. Assim, as permisses (001 111 100 100) na base dois e (1 7 4 4) na base oito so logicamente iguais - basta converter cada seqncia de trs bits da base dois para a base oito. importante que se entenda bem cada uma destas notaes, pois cada uma tem uma utilidade. A notao binria boa para se entender o funcionamento das permisses, a notao simblica boa para se representar as permisses de um arquivo e a notao octal boa para se manipular permisses de arquivos. ___________________________________________________________________________ Pg. 98

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes As tabelas a seguir mostram a representao das permisses em cada uma das trs notaes vistas. A tabela 01 mostra os bits de atributo, enquanto a tabela 02 mostra os bits de proteo -como os trs grupos de proteo so representados da mesma forma, no necessrio ter uma tabela para cada grupo.

Tipos de arquivo
Pelo fato do Linux representar tudo como se fosse um arquivo, surgiu a necessidade de se dividir os arquivos em tipos distintos. Assim sendo, surgiram os sete tipos de arquivos que existem atualmente no Linux. So eles: Arquivos comum . So, por exemplo, arquivos de texto, arquivos de dados e arquivos binrios. Diretrios So arquivos que contm nomes de outros arquivos que esto armazenados ou organizados em grupos. Links So arquivos que fazem referncia a outros arquivos dentro do sistema de arquivos. So subdivididos em hard (diretos) e soft (simblicos) links. Caractere So arquivos que representam dispositivos fsicos -hardware- que podem ser acessados seqencialmente, como portas paralelas e/ou seriais. Na verdade, so uma subdiviso dos device files -arquivos de dispositivos. Bloco So arquivos que representam dispositivos fsicos que podem ser acessados em blocos de bytes, como o HD. Assim como os arquivos do tipo caractere, so uma subdiviso dos arquivos de dispositivos. Sockets So arquivos utilizados para comunicao entre processos. Pipes Tambm so arquivos utilizados para a comunicao entre processos. Normalmente, estes sete tipos so associados, cada um a um caractere, para sua identificao. So eles: Arquivos comuns (-), diretrios (d), links (l), caractere (c), bloco (b), sockets (s) e pipes (p). A figura abaixo mostra uma tabela com os caracteres designados para cada tipo de arquivo.

___________________________________________________________________________ Pg. 99

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Entendendo as permisses na prtica


$ ls -l ~/exercicios/ln total 8 -rw-r--r-- 2 enunes uniararas 0 2006-10-28 17:29 drwxr-xr-x 3 enunes uniararas 4096 2006-10-28 17:30 drwxr-xr-x 2 enunes uniararas 4096 2006-10-29 10:44 -rw-r--r-- 2 enunes uniararas 0 2006-10-28 17:29

arquivo1 dir1 dir2 hardlink1

Repare na sada do comando ls -l, que mostra as permisses dos arquivos na primeira coluna. Esses primeiros 10 caracteres que aparecem (-rw-r--r-- por exemplo) so os caracteres que demonstram as permisses atuais de cada arquivo/diretrio. Observe a Linha abaixo, onde as permisses aparecem em destaque:

Exemplo A:
$ ls -l apostila.sxw -rwxrw-r-- 1 erivelton office 183627 2006-11-01 13:09 apostila.sxw

O arquivo apostila.sxw um arquivo comum, pertence ao usurio erivelton e ao grupo office. O usurio erivelton pode ler, gravar e executar o arquivo ( rwx ); quaisquer outros usurios que pertenam ao grupo office podem ler e gravar no arquivo ( rw- ); Portanto, qualquer outro usurio que no seja o dono do arquivo (erivelton) nem pertena ao grupo office s ter permisses de ler o arquivo ( r ). Exemplo B:
$ ls -ld /etc drwxr-xr-x 96 root root 5384 2006-11-01 11:01 /etc

___________________________________________________________________________ Pg. 100

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Podemos verificar que o arquivo etc na verdade um diretrio ( d ); Pertence ao usurio e grupo root; Tem permisses de leitura, gravao e execuo ( rwx )para o usurio dono; Leitura e execuo ( r-x ) para o grupo dono e quaisquer outros usurios. Nota: Mesmo que as permisses de arquivos restrinjam o usurio root, elas no tm efeito p/ ele.

Definindo Permisses com chmod


Utilizamos o comando chmod (Change Mode) para configurar as permisses no Linux. Sintaxe:
chmod [OPO]... MODO[,MODO]... ARQUIVO... chmod [OPO]... MODO-OCTAL ARQUIVO... chmod [OPO]... --reference=ARQUIVOREF ARQUIVO...

Tabela de parmetros Verbose. Mostra informaes sobre as modificaes efetuadas. Mesmo que -v as permisses tenham se mantido. Changes. Mesmo que a opo -v, porm s mostra informaes se as permisses -c tiverem sido modificadas. -R Recursive. Aplica as permisses recursivamente O chmod trabalha com dois modos de permisses: simblico e octal. Esses dois modos no mudam a Sintaxe do comando mostrada anteriormente, pois s agem no MODO (MODO e MODO-OCTAL) das permisses. Antes de estudar os dois modos separadamente, criaremos o ambiente de testes. Ambiente:
$ mkdir -p ~/exercicios/chmod; cd ~/exercicios/chmod $ mkdir -p dir1/dir2 $ touch arq1 dir1/dir2/arq2

Modo Simblico de Permisses


O modo simblico do chmod define as permisses com base em suas letras (r, w e x...) de significado. Nesse modo, as permisses cabveis a cada uma das partes envolvidas so representadas por letras, conforme tabela abaixo: u g o a usurio grupo outros todos

Com base nisso, basta unir as permisses com as partes afetadas. Para estabelecer essa unio, ___________________________________________________________________________ Pg. 101

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes utilizamos os sinais de +, - e = (adiciona, remove ou iguala permisses, respectivamente). Exemplo A:
$ ls -l arq1 -rw-r--r-- 1 erivelton erivelton 0 2006-11-01 15:40 arq1 $ chmod u-w arq1 $ ls -l arq1 -r--r--r-- 1 erivelton erivelton 0 2006-11-01 15:40 arq1

O arquivo arq1 teve a permisso de escrita ( w ) removida para o usurio ( u ) dono do arquivo, ou seja: o u indica que estamos alterando permisses para o usurio, o sinal de - indica que estamos removendo permisses, e em seguida, o w significa permisso de escrita. Exemplo B:
$ ls -l arq1 -r--r--r-- 1 erivelton erivelton 0 2006-11-01 15:40 arq1 $ chmod +x arq1 $ ls -l arq1 -r-xr-xr-x 1 erivelton erivelton 0 2006-11-01 15:40 arq1

Adicionada permisso de execuo para todos os campos (usurio, grupo e outros), pois no foi especificada qual parte seria afetada pelo comando. Exemplo C:
$ ls -l arq1 -r-xr-xr-x 1 erivelton erivelton 0 2006-11-01 15:40 arq1 $ chmod go-x,ug+w arq1 $ ls -l arq1 -rwxrw-r-- 1 erivelton erivelton 0 2006-11-01 15:40 arq1

Na mesma linha de comando, foi removida a permisso de execuo para grupo e outros e tambm foi adicionada a permisso de escrita para o usurio e grupo. Exemplo D:
$ ls -ld dir1 drwxr-xr-x 3 erivelton $ ls -l dir1/dir2/arq2 -rw-r--r-- 1 erivelton $ chmod -R a=rx dir1 $ ls -ld dir1 dr-xr-xr-x 3 erivelton $ ls -l dir1/dir2/arq2 -r-xr-xr-x 1 erivelton erivelton 72 2006-11-01 16:03 dir1 erivelton 0 2006-11-01 15:40 dir1/dir2/arq2 erivelton 72 2006-11-01 16:03 dir1 erivelton 0 2006-11-01 15:40 dir1/dir2/arq2

Modificamos recursivamente (opo -R) as opes de usurio, grupo e outros ( a ) do diretrio dir1 para leitura e execuo ( rx ). Repare que, devido ao fato das permisses terem sido aplicadas recursivamente, o arquivo arq2, que fica em um subdiretrio abaixo de dir1 tambm recebeu as permisses. Exemplo E:
$ ls -l total 0 -rwxrw-r-- 1 erivelton erivelton 0 2006-11-01 15:40 arq1 dr-xr-xr-x 3 erivelton erivelton 72 2006-11-01 16:03 dir1 $ ls -l dir1

___________________________________________________________________________ Pg. 102

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
total 0 dr-xr-xr-x 2 erivelton erivelton 72 2006-11-01 16:03 dir2 $ chmod -x dir1 $ ls -l dir1 ls: dir1/dir2: Permisso negada total 0 $ cd dir1 bash: cd: dir1: Permisso negada $ chmod +x dir1 $ ls -l dir1 total 0 dr-xr-xr-x 2 erivelton erivelton 72 2006-11-01 16:03 dir2 $ cd dir1

O exemplo mostra que necessrio ter permisses de execuo para entrar ou listar o contedo de um diretrio. Isso acontece porque quando entramos em um diretrio, na verdade estamos executando o arquivo especial que o diretrio, que contm a lista de todos os arquivos e diretrios dentro dele. Sem a permisso de execuo no podemos entrar em um diretrio, somente o root rompe essas barreiras.

Modo octal de permisses


Nesse modo, lidamos diretamente permisses, conforme tabela abaixo: Bits 4 2 1 Permisso Leitura ( r ) Escrita ( w ) Execuo ( x ) com o nmero de bits que compem as

Dessa forma, se quisermos obter resultados especficos, basta somar o nmero de bits correspondente as permisses, conforme tabela a seguir: Permisso rwx rwr-x r--wx -w--x --Soma Octal 4+2+1=7 4+2+0=6 4+0+1=5 4+0+0=4 0+2+1=3 0+2+0=2 0+0+1=1 0+0+0=0

Por exemplo, para chegar ao resultado rwxr-xr--, utilizamos o modo 754 no chmod. Exemplo A:
$ chmod 750 arq1 $ ls -l arq1 -rwxr-x--- 1 erivelton erivelton 0 2006-11-01 15:40 arq1

___________________________________________________________________________ Pg. 103

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Exemplo B:
$ chmod 644 arq1 $ ls -l arq1 -rw-r--r-- 1 erivelton erivelton 0 2006-11-01 15:40 arq1

Pratique bastante permisses de acesso, pois so extremamente essenciais no dia a dia de um administrador de sistema e seu bom compreendimento evita algumas falhas de segurana.

Permisses de Acesso Especiais:


Mas somente as trs permisses bsicas (rwx), no do toda flexibilidade para controlar acesso aos arquivos e diretrios. Por isso o Linux tem mais trs modelos especiais para controle de acesso, chamados suid (set user id), sgid (set group id) e Sticky (Sticky bit). Veja um exemplo de permisso especial na figura abaixo:

SUID ( Set User ID )


A propriedade SUID somente para arquivos executveis e no tem efeito em diretrios. Nas permisses bsicas, o usurio que executou o programa dono do processo. Mas, em arquivo executvel com a propriedade SUID aplicada, o programa rodar com o ID do dono do arquivo, no com o ID do usurio que executou o programa. Normalmente o usurio dono do programa executvel tambm dono do processo sendo executado. Ou seja, quando um arquivo/programa executvel tem o controle de acesso SUID, ele executado como se ele estivesse iniciado pelo dono do arquivo/programa. A permisso de acesso especial SUID pode aparecer somente no campo Dono. Exemplo:

___________________________________________________________________________ Pg. 104

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Um exemplo para arquivo executvel com a propriedade SUID o arquivo /usr/bin/passwd. Ou seja, quando executamos o comando passwd com qualquer usurio normal, o processo executado com ID do usurio root ( como se o usurio root tivesse executado o comando passwd), pois somente o usurio root tem permisso para alterar o arquivo /etc/passwd.
# ls -lah /usr/bin/passwd -rwsr-xr-x 1 root root 27K 2006-04-03 10:37 /usr/bin/passwd

Aplicando SUID Aplicando a propriedade SUID em um arquivo executvel utilizando formato simblico (s):
# chmod u+s programa.sh # ls -lah programa.sh -rwsr-xr-x 1 root roberto 0 2006-09-26 22:57 programa.sh

Aplicando a propriedade SUID em um arquivo executvel utilizando formato octal (4):


# chmod 4750 programa.sh # ls -lah programa.sh -rwsr-x--- 1 root roberto 0 2006-09-26 22:57 programa.sh

Retirando SUID
# chmod u-s programa.sh # ls -lah programa.sh -rwxr-x--- 1 root roberto 0 2006-09-26 22:57 programa.sh

Procurando SUID Procurando a propriedade SUID em um arquivo executvel utilizando formato simblico (s):
# find /home/roberto -perm u=s /home/roberto/programa.sh

Procurando a propriedade SUID em um arquivo executvel utilizando formato octal (4):


# find /home/roberto -perm -4000 /home/roberto/programa.sh

SGID ( Set Group ID )


A propriedade SGID tem a mesma funo que o SUID para arquivos executveis. Mas, a propriedade SGID tem um efeito especial para os diretrios. Quando SGID aplicado em um diretrio, os novos arquivos que so criados dentro do diretrio assumem o mesmo ID de Grupo do diretrio com a propriedade SGID aplicado. A permisso de acesso especial SGID pode aparecer somente no campo Grupo. ___________________________________________________________________________ Pg. 105

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Exemplo: Se no diretrio /home/roberto tem o grupo casa e tem o SGID habilitado, ento todos os arquivos dentro do diretrio /home/roberto sero criados com o grupo casa. Esta um importante atributo para um equipe, assumindo que todos os arquivos compartinhados devem ter o mesmo grupo. Aplicando SGID Aplicando a propriedade SGID em um diretrio executvel utilizando formato simblico (s):
# chmod g+s /home/equipe # ls -lah /home/equipe total 0 drwxr-sr-x 2 roberto equipe 48 2006-09-26 23:21 .

Aplicando a propriedade SGID em um diretrio executvel utilizando formato octal (2):


# chmod 2750 /home/equipe # ls -lah /home/equipe total 0 drwxr-s--- 2 roberto equipe 48 2006-09-26 23:21 .

Retirando SGID
# chmod g-s /home/equipe # ls -lah /home/equipe total 0 drwxr-xr-x 2 roberto equipe 48 2006-09-26 23:21 .

Procurando SGID Procurando a propriedade SGID em um diretrio executvel utilizando formato simblico (s):
# find /home -perm /g=s /home/equipe

Procurando a propriedade SUID em um diretrio executvel utilizando formato octal (2):


# find /home -perm -2000 /home/equipe

Sticky ( Sticky bit )


Em arquivos executveis, a propriedade Sticky faz com que o sistema mantenha uma imagem do programa em memria depois que o programa finalizar. Esta capacidade aumenta o desempenho, pois ser feito um cache do programa para a memria, e da prxima vez que ele for executado, ser carregado mais rpido. ___________________________________________________________________________ Pg. 106

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Em diretrios, a propriedade Sticky impede que outros usurios deletem ou renomeam arquivos dos quais no so donos. Isso normalmente utilizado para aumentar a segurana, pois o diretrio estar em modo append-only ( somente incremente ). Sendo assim, somente o usurio que Dono do arquivo, poder deletar ou renomear os arquivos dentro de um diretrio com a propriedade Sticky aplicada. A permisso especial Sticky, pode ser especificada somente no campo outros usurios das permisses de acesso. Exemplo: No diretrio /tmp, todos os usurios devem ter acesso para que seus programas possam criar os arquivos temporrios, mas nenhum pode apagar arquivos dos outros. Ento interessante aplicar a propriedade Sticky no diretrio /tmp. Aplicando Sticky Aplicando a propriedade Sticky em um arquivo executvel utilizando formato octal (1)
# chmod 1750 programa_pesado.sh # ls -lah programa_pesado.sh -rwxr-x--T 1 root root 2,9M 2006-09-26 23:51 programa_pesado.sh

Aplicando a propriedade Sticky em um arquivo executvel utilizando formato simblico (t):


# chmod o+t programa_pesado.sh # ls -lah programa_pesado.sh -rwxr-x--T 1 root root 2,9M 2006-09-26 23:51 programa_pesado.sh

Aplicando a propriedade Sticky em um diretrio utilizando formato simblico (t):


# chmod o+t /tmp # ls -lah /tmp total 5,0K drwxrwxrwt 8 root root 264 2006-09-26 23:22 .

Aplicando a propriedade Sticky em um diretrio utilizando formato octal (1):


# chmod 1777 /tmp # ls -lah /tmp total 5,0K drwxrwxrwt 8 root root 264 2006-09-26 23:22

Retirando Sticky
# chmod o-t /tmp # ls -lah /tmp total 5,0K drwxrwxrwx 8 root root 264 2006-09-26 23:22 .

___________________________________________________________________________ Pg. 107

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Procurando Sticky Aplicando a propriedade Sticky em um diretrio utilizando simblico (t):
# find /home/roberto/ -perm /o=t /home/roberto/programa_pesado.sh

Aplicando a propriedade Sticky em um diretrio utilizando formato octal (1):


# find /home/roberto/ -perm -1000 /home/roberto/programa_pesado.sh

Mscara de usurio (umask)


A umask (user mask) so 3 nmeros que definem as permisses iniciais do dono, grupo e outros usurios que o arquivo ou diretrio receber quando for criado ou copiado pelo usurio atual. A principal funo da umask impedir que arquivos pessoais criados pelos usurios do sistema sejam legveis por outros usurios assim que criados. Ela consegue esse resultado subtraindo um nmero de bits (o valor da umask) das permisses do arquivo que for criado. Por padro, qualquer arquivo criado por um usurio no sistema no recebe permisses de execuo, com exceo dos diretrios. Por exemplo, para todos os arquivos recm-criados, as permisses iniciais seriam 666 (tudo ativado, sem execuo). Para chegar as permisses iniciais do arquivo criado aps a influncia do umask, basta subtrair o valor da umask da permisso padro (666). Por exemplo, se o valor da umask for 22, os arquivos novos teriam permisso 644 ar a permisso padro de arquivos recm-criados (666 22 = 644). importante frizar que para arquivos copiados, o umask s modifica as permisses do arquivo de destino se o valor partindo de 777 e subtrado do valor da umask for menor, conforme o Exemplo B. A umask fica armazenada na memria durante o shell atual. Se modificarmos o valor da umask ela ser redefinida para o padro ao abrirmos um novo shell, e o valor modificado em um shell no influencia em outro. Sintaxe:
umask [-p] [-S] [modo]

Tabela de parmetros -p Mostra a palavra umask antes do modo (sem muito sentido...) -S Utiliza o modo simblico de permisses (Igual no comando chmod) Ambiente:
$ mkdir ~/exercicios/umask; cd ~/exercicios/umask

Exemplo A: ___________________________________________________________________________ Pg. 108

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
$ umask 0022 $ touch arq1 $ ls -l total 0 -rw-r--r-- 1 erivelton erivelton 0 2006-11-01 18:42 arq1 $ umask 000 $ touch arq2 $ ls -l total 0 -rw-r--r-- 1 erivelton erivelton 0 2006-11-01 18:42 arq1 -rw-rw-rw- 1 erivelton erivelton 0 2006-11-01 18:42 arq2

Com o umask padro, o arquivo criado (arq1) recebeu permisses 644. Aps modificarmos o umask para 000 (anulando sua influncia), o arquivo criado (arq2) recebeu permisses 666. Exemplo B:
$ touch arq3 $ chmod -v 775 arq3 modo de `arq3' mudado para 0775 (rwxrwxr-x) $ umask 0022 $ cp arq3 arq4 $ ls -l total 0 -rw-r--r-- 1 erivelton erivelton 0 2006-11-01 -rw-rw-rw- 1 erivelton erivelton 0 2006-11-01 -rwxrwxr-x 1 erivelton erivelton 0 2006-11-01 -rwxr-xr-x 1 erivelton erivelton 0 2006-11-01

18:42 18:42 19:12 19:13

arq1 arq2 arq3 arq4

Repare que o umask (22) agiu na permisso do arquivo original (arq3 = 775) e o arquivo arq4 foi criado com permisses 755. preciso um pouco de ateno antes de escolher a umask, um valor mal escolhido pode causar problemas de acesso a arquivos, diretrios ou programas no sendo executados. O valor padro da umask na maioria das distribuies atuais 022. A umask de grande utilidade para programas que criam arquivos/diretrios temporrios, desta forma pode-se bloquear o acesso de outros usurios desde a criao do arquivo, evitando recorrer ao chmod.

___________________________________________________________________________ Pg. 109

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

O SHELL BASH (BOURNE AGAIN SHELL)


Melhor morar numa terra deserta do que com a mulher rixosa e irritadia
Provrbios 21.19

Conforme visto anteriormente, existe uma camada entre o sistema operacional (kernel) e o usurio, que interpreta os comandos digitados e os passa para o kernel, e vice-versa. Essa camada recebe o nome de interpretador de comandos, ou shell. Um shell no Linux utiliza-se de dispositivos especiais de entrada e sada (Vistos na tabela adiante) para se comunicar com o usurio. Dessa mesma forma, programas tambm utilizam desse mtodo para interao com o usurio. Tecnicamente, o shell do Linux utiliza algum dispositivo de caracteres (/dev/tty*, /dev/pts/*, etc...) associado a 3 dispositivos especiais (stdin, stdout e stderr) estudados adiante para conseguir essa interao com o usurio. O linux conta com diversos interpretadores de comandos (shells), porm o mais utilizado nas distribuies o shell bash. O bash um relanamento de um antigo shell de UNIX, o sh. Bash significa Bourne Again Shell (Algo como O shell que nasceu novamente). Vale a pena lembrar que podem existir diversos interpretadores de comandos instalados no sistema operacional (Que tal uma olhada no arquivo /etc/shells?), e que podemos escolher qual shell ser o padro para determinado usurio com o comando chsh, visto anteriormente. Devido ao fato do shell bash ser o padro na grande maioria das distribuies, ele que estudaremos a seguir. Mesmo assim, muitas das caractersticas do bash existem em outros shells.

Redirecionamento
Tudo que visto no terminal formado com caracteres (por isso dispositivos de caracteres). Esses caracteres so resultado da sada de dados padro dos comandos executados ou do prprio shell. Mas os comandos no se limitam a enviar caracteres para a tela do terminal (Sada de dados padro), mas tambm podem (e devem) receber dados do terminal. Esse fluxo de caracteres pode fluir em 3 direes, conforme tabela abaixo: Descritor de Arquivo 0 1 2 Nome do Dispositivo Entrada de dados padro Sada de dados padro Sada de erros padro Abreviao stdin stdout stderr

O descritor de arquivo utilizado para identificar em qual direo os caracteres iro fluir.

Entrada de dados padro (/dev/stdin)


Dispositivo que cuida do fluxo de entrada para os dados que podem ser enviados ___________________________________________________________________________ Pg. 110

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes para os programas em execuo. A maior parte do tempo o teclado que fica fica encarregado de gerar os dados que acabam sendo enviados para esse dispositivo. Porm, atravs de comandos de redirecionamento de shell (visto adiante) podem associar um arquivo como a entrada de dados padro.

Sada de dados padro (/dev/stdout)


Dispositivo pelo qual os programas normalmente enviam seus resultados de execuo. Quando listamos arquivos com o comando ls, por exemplo, o resultado que o comando nos mostra justamente a sada padro, que visualizamos no monitor. Semelhante a entrada de dados padro, podemos utilizar de comandos de redirecionamento para enviar a sada de um comando para um arquivo ou outro comando, conforme veremos em breve.

Sada de erros padro (/dev/stderr)


Esse um dispositivo bastante parecido com a sada de dados padro, porm atua em um canal diferente, e serve para os programas enviarem qualquer mensagem de erro durante a execuo. Assim como a sada de dados padro, podemos redirecionar a sada de erros padro para um arquivo.

Operadores de Redirecionamento
Para controlar a direo em que os dados devem fluir, o bash conta com operadores de redirecionamento. Esses operadores dizem basicamente para onde os caracteres tem que ir (stdin, stdout, stderr, arquivo, comando, etc...) e podem estar antes ou depois de um comando. So 3 os operadores de redirecionamento: Operadores de Sada de dados padro (stdout): > e >> Sua funo redirecionar o fluxo de caracteres da stdout (que pode ser a sada de um comando, por exemplo) para algum arquivo ou dispositivo, lembrando que no Linux tudo arquivo. Exemplo A:
$ mkdir -p ~/exercicios/redirecionamento $ cd ~/exercicios/redirecionamento $ touch arq1 arq2 arq3 $ ls > listagem $ ls arq1 arq2 arq3 listagem $ cat listagem arq1 arq2 arq3

Nesse exemplo, aps criar nosso ambiente de testes, redirecionamos a sada do comando ls para ___________________________________________________________________________ Pg. 111

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes um arquivo chamado listagem. Esse arquivo no existia anteriormente, mas foi criado devido ao redirecionamento. Repare que o contedo do arquivo exatamente a sada do comando ls. Exemplo B:
$ cd ~/exercicios/redirecionamento/ $ cat > arquivo.txt Um simples arquivo de texto. Pressione [Enter] Pressione [CTRL]+[D] $ cat arquivo.txt Um simples arquivo de texto.

Acionamos o comando cat, sem nenhum argumento, e instrumos o bash para redirecionar a sada de dados padro para um arquivo chamado arquivo.txt. Exemplo C:
$ cat arquivo.txt Um simples arquivo de texto. $ echo "Novo contedo" > arquivo.txt $ cat arquivo.txt Novo contedo

Ainda com o mesmo arquivo de testes, efetuamos outro redirecionamento, dessa vez com a sada do comando echo. Repare que o contedo do arquivo foi sobrescrito com o redirecionamento efetuado. Para concatenar o arquivo de sada ao invs de sobrescrever o seu contedo, utilizamos dois operadores de redirecionamento da stdout (>>), como no exemplo abaixo: Exemplo D:
$ cat arquivo.txt Um simples arquivo de texto. $ echo "Novo contedo" >> arquivo.txt $ cat arquivo.txt Um simples arquivo de texto. Novo contedo

Compare com o exemplo anterior. Exemplo E:


$ echo "algum texto" > arquivo.txt $ cat arquivo.txt algum texto $ echo "algum texto novo" 0> arquivo.txt algum texto novo $ cat arquivo.txt $ echo "algum texto novo" 0> arquivo.txt > arquivo-novo.txt $ cat arquivo.txt $ cat arquivo-novo.txt algum texto novo

Primeiro sobrescrevemos o contedo do arquivo arquivo.txt e constatamos isso com o comando cat. Logo depois, enviamos o redirecionamento da sada padro de volta para a entrada padro. Na verdade, o redirecionamento 0> diz para o fluxo de caracteres ser enviado de volta para a entrada padro (Descritor de arquivo 0, conforme tabela anterior), e no para o ___________________________________________________________________________ Pg. 112

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes arquivo de destino. por isso que o arquivo arquivo.txt ficou vazio aps o redirecionamento com 0>. Como o fluxo retorna para o shell, podemos redirecionar novamente ele, mas agora para um novo arquivo, chamado arquivo-novo.txt, que agora sim recebe o contedo do redirecionamento. O intuito de mostrar redirecionamentos como esses, no muito comuns no dia-adia do administrador, familiarizar o administrador com o fluxo correto das informaes no shell bash, assunto que tem peso muito alto em uma prova de certificao Linux como a Linux Professional Institute 1 (LPIC-1). Operadores de entrada de dados padro: < e << No so amplamente utilizados quanto os operadores de sada de dados padro. Sua funo redirecionar o fluxo de caracteres da stdin (que pode ser um arquivo contendo argumentos a serem tratados por um comando, por exemplo) para algum comando. Ainda no mesmo ambiente de testes dos exemplos anteriores (~/exercicios/redirecionamento), vamos aos exemplos: Exemplo A:
$ cat arquivo.txt Um simples arquivo de texto. Novo conteudo $ cat < arquivo.txt Um simples arquivo de texto. Novo conteudo

Digitamos dois comandos no exemplo. O primeiro um simples cat no arquivo; O segundo tem o mesmo resultado, s que utiliza o redirecionamento do arquivo arquivo.txt como argumento para o comando cat. Como a funo do comando cat enviar para a stdout o contedo que lhe for passado (geralmente um arquivo), o mesmo pode ser feito com um fluxo de dados (caracteres) vindo de um redirecionamento da stdin. Da mesma forma que o redirecionamento de sada de dados padro, podemos concatenar o fluxo de caracteres utilizando dois operadores p/ o mesmo sentido, nesse caso <<. Este redirecionamento serve principalmente para marcar o fim de exibio de um bloco. Este especialmente usado em conjunto com o comando cat, mas tambm tem outras aplicaes. Exemplo B:
$ cat << final > este texto > sera mostrado > ate que a palavra final > seja encontrada > sozinha na linha > final este texto sera mostrado ate que a palavra final seja encontrada sozinha na linha

___________________________________________________________________________ Pg. 113

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Redirecionando a sada de erros padro (stderr)


Em quaisquer dos redirecionamentos aprendidos at agora, podemos utilizar para redirecionar a sada de erros padro (stderr) ao invs da sada de dados padro (stdout) utilizando o descritor de arquivo 2. Recapitulando, os comandos e scripts utilizam-se da sada de dados padro para enviar o fluxo de caracteres a fim de notificar o usurio sobre o que est havendo no comando (a sada de uma listagem de arquivos com o comando ls, por exemplo. Esses mesmos comandos e scripts utilizam-se de um canal diferente para enviar informaes sobre erros em sua execuo para o shell. O canal, nesse caso, o descritor de arquivo. Para enviar informaes (caracteres) sobre erros provenientes scripts em execuo, estes utilizam o descritor de arquivo 2. Exemplo A:
$ ls $ ls inexistente.txt ls: inexistente.txt: $ cat arquivo.txt $ ls inexistente.txt $ cat erros.txt ls: inexistente.txt: > arquivo.txt Arquivo ou diretrio no encontrado 2> erros.txt Arquivo ou diretrio no encontrado

dos

comandos

Tentamos propositadamente listar um arquivo inexistente (inexistente.txt) com o comando ls, causando um erro no programa. O comando ls utilizou-se da sada de erros padro (stderr) para enviar um fluxo de caracteres a fim de notificar que no encontrou o arquivo especificado. Como o redirecionamento inicial que fizemos apenas redireciona a sada de dados padro para o arquivo arquivo.txt, a stderr mostrada na tela, e visualizamos assim a mensagem de erro. No redirecionamento seguinte, redirecionamos a stderr para um arquivo chamado erros.txt (redirecionamento 2>). Exemplo B:
$ rm arquivo.txt erros.txt $ lss > stdout.txt 2>stderr.txt $ ls stderr.txt stdout.txt $ cat stderr.txt bash: lss: command not found $ ls stderr.txt inexistente.txt >stdout.txt 2>>stderr.txt $ ls stderr.txt stdout.txt $ cat stderr.txt bash: lss: command not found ls: inexistente.txt: Arquivo ou diretrio no encontrado

Aps digitar um comando inexistente (lss), causamos um erro no shell, que nos notifica atravs da stderr. A sada de nosso comando inexistente (vazia) foi redirecionada para o arquivo stdout.txt e a sada de erros padro (stderr) foi redirecionada para o arquivo stderr.txt. No redirecionamento do comando ls, que procurava listar 2 arquivos (stderr.txt e inexistente.txt), foram gerados dois fluxos de sada: Um deles envia para a stdout o nome do arquivo stderr.txt, que foi encontrado na listagem. O segundo fluxo envia para a stderr uma notificao de que no foi possvel encontrar o arquivo inexistente.txt. Repare que concatenamos a sada da stderr, e assim no sobrescrevemos o contedo do arquivo stderr.txt. ___________________________________________________________________________ Pg. 114

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Redirecionamento com pipes: |


O pipping um recurso que permite conectar a sada de um comando na entrada de outro comando subseqente, sem limitaes quanto ao nmero de comandos a serem conectados, desde que cada um deles leia dados da sada padro do comando anterior e escreva sua sada na entrada de dados do prximo comando. Isso mantm o fluxo entre os comandos. Encare o pipe como um encanamento (E realmente pipe significa cano em ingls.), onde interconectamos os canos uns aos outros (comandos), formando um encanamento, onde a gua (fluxo de caracteres) ir passar. Ambiente:
$ mkdir ~/redirecionamento/pipe -p $ cd ~/redirecionamento/pipe/ $ touch arq1 arq2 arq3

Primeiro criamos o nosso ambiente de exerccios. Exemplo A:


$ ls arq1 arq2 arq3 $ ls |grep 2 arq2 $ ls |grep [23] arq2 arq3

No diretrio atual existem 3 arquivos (arq1, arq2 e arq3). Utilizamos o comando ls unido ao comando grep atravs de um pipe para filtrar nossa sada de texto (stdout) duas vezes. Na primeira vez, o comando ls envia a lista dos 3 arquivos para a stdin do comando grep, que por sua vez, s mostra na tela o nome do arquivo que contm o nmero 2, nesse caso, arq2. Depois, a nica coisa que muda a filtragem do grep, que passa a mostrar os nomes dos arquivos que contm o nmero 2 ou 3, nesse caso so 2 arquivos, arq2 e arq3. Exemplo B:
$ ls /bin |grep mount mount mountpoint umount

Listamos o conteudo do diretrio /bin e utilizamos um pipe para filtrar a sada da listagem com o comando grep, mostrando somente os comandos que contm a palavra mount. No dia-adia de um administrador de sistemas Linux, torna-se necessria a utilizao de muitos pipes em uma mesma linha de comando para chegar em algum resultado em comum. No decorrer do curso iremos nos deparar com diversas situaes assim, mas por enquanto, observe (e teste) alguns exemplos:
$ ps aux |grep ^root |more $ ls -lR /usr/local |grep lib |grep rwxrwxr-x |more

___________________________________________________________________________ Pg. 115

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Diferenas entre o | e o >


A principal diferena entre o | e o >, que o pipe envolve processamento entre comandos, ou seja, a sada de um comando enviado a entrada do prximo comando e o > redireciona a sada de um comando para um arquivo ou dispositivo (lembrando que dispositivos tambm no passam de arquivos especiais). Em qualquer dos exemplos anteriores com pipe, um resultado diferente seria obtido usando um > no lugar do |; No Exemplo B. se o comando ls /bin |grep mount fosse substitudo por ls /bin >grep mount (o pipe trocado por >), teria um resultado completamente diferente, pois iria redirecionar a sada do comando ls para um arquivo chamado grep. Comando tee importante saber do comando tee nesse ponto do estudo, pois sua funo redirecionar o fluxo de caracteres que lhe foi passado (por um pipe, por exemplo) para um arquivo (tal como um simples redirecionamento >) e ao mesmo tempo mostra na tela (stdout) o mesmo contedo que foi redirecionado. Em midos, seria como redirecionar a sada de um comando p/ um arquivo e continuar vendo a sada na tela normalmente. Sintaxe:
comando| tee [-a] [arquivo]

Exemplo A:
$ ls -la ~/exercicios | tee /tmp/listagem.txt total 1 drwxr-xr-x 5 erivelton erivelton 128 2004-11-30 drwxr-xr-x 27 erivelton erivelton 1144 2004-12-01 drwxr-xr-x 3 erivelton erivelton 96 2004-11-01 drwxr-xr-x 2 erivelton erivelton 112 2004-12-01 drwxr-xr-x 2 erivelton erivelton 144 2004-11-01 $ cat /tmp/listagem.txt total 1 drwxr-xr-x 5 erivelton erivelton 128 2004-11-30 drwxr-xr-x 27 erivelton erivelton 1144 2004-12-01 drwxr-xr-x 3 erivelton erivelton 96 2004-11-01 drwxr-xr-x 2 erivelton erivelton 112 2004-12-01 drwxr-xr-x 2 erivelton erivelton 144 2004-11-01 21:15 16:56 15:40 13:36 19:19 21:15 16:56 15:40 13:36 19:19 . .. chmod redirecionamento umask . .. chmod redirecionamento umask

A sada do comando foi mostrada normalmente na tela e ao mesmo tempo gravada no arquivo listagem.txt. Exemplo B:
$ cat /etc/fstab |tee /tmp/listagem.txt /dev/hda2 / reiserfs defaults /dev/hda5 none swap sw proc /proc proc defaults /dev/fd0 /floppy auto user,noauto /dev/cdrom /cdrom iso9660 ro,user,noauto /dev/hda1 /boot ext3 defaults 0 0 0 0 0 0 0 0 0 0 0 2

___________________________________________________________________________ Pg. 116

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
$ ls ~/exercicios |tee -a /tmp/listagem.txt chmod redirecionamento umask $ cat /tmp/listagem.txt /dev/hda2 / reiserfs defaults /dev/hda5 none swap sw proc /proc proc defaults /dev/fd0 /floppy auto user,noauto /dev/cdrom /cdrom iso9660 ro,user,noauto /dev/hda1 /boot ext3 defaults chmod redirecionamento umask

0 0 0 0 0 0

0 0 0 0 0 2

Utilizando a opo -a, o contedo do arquivo de destino ser concatenado, ao invs de sobrescrito.

Tabela de Redirecionamentos
A tabela abaixo mostra um resumo das funes de cada operador de redirecionamento. Redirecionador comando > arquivo comando < arquivo comando >> arquivo comando << arquivo comando 2> arquivo comando 2>> arquivo comando1 | comando2 Funo Redireciona a sada de dados padro (stdout) Redireciona a entrada de dados padro (stdin) Concatena a sada de dados padro (stdout) Concatena a entrada de dados padro (stdin) Redireciona a sada de erros padro (stderr) Concatena a sada de erros padro (stderr) Utiliza a stdout do comando1 como stdin do comando2

Paginadores
O comando more pode ser utilizado para leitura de arquivos que ocupem mais de uma tela. Quando toda a tela ocupada, o more efetua uma pausa e permite que voc pressione [Enter] ou [espao] para continuar avanando no arquivo. Para sair do more pressione [q]. O comando less tambm segue o mesmo propsito geral, porm permite recuarmos o texto que j rolou a tela, sendo um paginador mais eficiente que o more. Os pginadores so amplamente utilizados para paginar fluxos de texto. Exemplos:
ps ax |more ps ax |less ls /etc |less

___________________________________________________________________________ Pg. 117

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Caracteres especiais do bash (Metacaracteres)


Tambm conhecidos como metacaracteres (ou wildcards), esses caracteres especiais so assim entitulados porque desempenham funes que vo alm de simples caracteres. Os principais deles so ? e *. O metacaractere ? substitui um caractere qualquer no nome de um arquivo. O * antigo conhecido at mesmo dos tempos de DOS, onde era utilizado da seguinte forma para referenciar todos os arquivos do diretrio: *.*. No Linux, para obter o mesmo resultado, basta um nico asterisco: *. Um bom conhecimento sobre metacaracteres determinante durante uma prova para certificao em Linux. Ambiente:
$ mkdir -p ~/exercicios/metacaracteres $ cd ~/exercicios/metacaracteres/ $ touch brasil brazil Brasil Brazil BRASIL BRAZIL $ ls brasil Brasil brazil Brazil BRASIL BRAZIL

Antes de comear com os exerccios, devemos criar o ambiente de testes. Exemplo A:


$ ls bra?il brasil brazil $ ls ?ra?il brasil Brasil

brazil

Brazil

No primeiro comando, o ls listou os arquivos que contivessem bra, seguidos de qualquer caractere, e terminavam com il. Como haviam dois arquivos que casavam com os critrios, somente esses foram mostrados. No segundo comando foi utilizado dois metacaracteres, um para o primeiro e outro para o quarto caractere do arquivo. Exemplo B:
$ $ ls bra* brasil brazil $ ls *rasil brasil Brasil

O metacaractere * muito mais fcil de entender, pois casa com qualquer coisa, quantas vezes for necessrio. O que o diferencia do metacaractere ? que este casa com qualquer coisa somente uma vez. Para casar uma pesquisa com agrupar o metacaractere ?. Exemplo C:
$ touch casa casas casais casinhas $ ls casa?? Casais $ ls casa* casa casais casas $ rm -fv cas* removed `casa'

um

determinado

nmero

de

caracteres,

podemos

___________________________________________________________________________ Pg. 118

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
removed `casais' removed `casas' removed `casinhas'

Os critrios do comando ls era basicamente qualquer arquivo que comece com casa e contenha mais dois caracteres quaisquer (casa??), diferente do segundo ls, que listaria arquivos que iniciem com casa e possam ou no conter quaisquer outros caracteres depois (casa*). No esquea de remover os arquivos conforme o exemplo, para que no atrapalhe nos outros exemplos. Alternativamente, podemos utilizar outros metacaracteres como [ ] para melhor filtrar os critrios a serem passados a linha de comando. Conforme exemplo abaixo. Exemplo D:
$ ls brasil Brasil $ ls [Bb]rasil brasil Brasil $ ls ?ra[sz]il Brasil Brazil BRASIL brazil Brazil BRAZIL

Repare em todos os arquivos que existem atualmente no diretrio e quais arquivos foram selecionados pelo comando ls. Pratique isso bastante, pois de extrema importncia em um exame de certificao como o Linux Professional Institute 101 (LPI-101). Tambm possvel especificar um range de letras ou nmeros dentre os metacaracteres [ ] para facilitar nossas buscas. Exemplo E:
$ touch 1brasil 2brasil 11brasil 22brasil $ ls [a-z]rasil brasil Brasil $ ls [c-z]rasil ls: [c-z]rasil: Arquivo ou diretrio no encontrado $ ls [0-9]brasil 1brasil 2brasil $ ls [0-9][0-9]brasil 11brasil 22brasil

Listamos primeiramente todos os arquivos cujo primeiro caractere alguma letra entre a e z (O ls, nesse caso, no faz distino de maisculas e minsculas) e o restante da palavra seja rasil. Quando tentamos listar os arquivos cujo primeiro caractere seja alguma letra entre c e z e o restante da palavra seja rasil, nenhum encontrado. O prximo ls mostra os arquivos cujo primeiro caractere um nmero somente seguido da palavra brasil. Repare em como utilizamos os metacaracteres para listar os arquivos que contenham dois nmeros no incio do nome, seguidos pela palavra brasil. O mesmo resultado de [a-k], por exemplo, pode ser conseguido com [abcdefghijk]. apenas uma forma mais fcil de se expressar a mesma coisa.

Executando mltiplos comandos em ordem determinada


Podemos desencadear a execuo de diversos comandos em ordem, como apenas uma linha de comando. Para tal, utilizamos o metacaractere ;. ___________________________________________________________________________ Pg. 119

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Exemplo A:
$ ls ?rasil ; echo Outro Comando brasil Brasil Outro Comando

A primeira linha da sada resultado do comando ls, j a segunda refere-se ao comando echo, que foi executado assim que o ls executou. Esse sistema no deve ser novidade para ns, pois j utilizamos por diversas vezes at agora no decorrer do curso. Exemplo B:
$ numero=2 $ (numero=1; echo "Dentro: $numero" ); echo "Fora: $numero" Dentro: 1 Fora: 2

Podemos agrupar comandos entre parnteses para proteger o contedo de variveis, permitindo que o valor de alguma varivel de shell seja diferente para os comandos entre parnteses, sem interferir no valor das variveis fora. A princpio um pouco confuso entender, mas depois se torna simples. Foi definido o valor 2 para a varivel $numero. Repare que dentro dos parnteses essa varivel tem o valor 1, mas fora continua tendo o valor 2, pois a clausura imposta pelos parnteses impede que qualquer varivel ali criada altere as j existentes. Este um outro tpico de grande peso em provas para certificaes Linux de nvel bsico. imprescindvel um bom domnio sobre esse tipo de metacaracteres, pois questes assim costumam ter um baixo nvel de acertos.

Tambm possvel simplificar parmetros dos comandos. Para tal faanha, o bash nos dispe dos metacaracteres { } (chaves). Analise os exemplos. Exemplo C:
$ cd ~/exercicios/metacaracteres; rm * $ touch arquivo{1,2,3}-{a,b,c}.{txt,doc} $ ls
arquivo1-a.doc arquivo1-a.txt arquivo1-b.doc arquivo1-b.txt arquivo1-c.doc arquivo1-c.txt arquivo2-a.doc arquivo2-a.txt arquivo2-b.doc arquivo2-b.txt arquivo2-c.doc arquivo2-c.txt arquivo3-a.doc arquivo3-a.txt arquivo3-b.doc arquivo3-b.txt arquivo3-c.doc arquivo3-c.txt

Com apenas um comando touch, agrupamos diversas instncias do mesmo comando, mais precisamente 18 vezes. Graas aos 3 blocos de chaves, o bash interpretou o seguinte: Primeiro formou-se o parmetro arquivo1-a.txt, depois arquivo1-a.doc, em seguida arquivo1b.txt, e assim por diante. A ordem completa pode ser constatada apenas trocando o comando touch pelo comando echo, deixando o comando com a seguinte aparncia:

___________________________________________________________________________ Pg. 120

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
$ echo arquivo{1,2,3}-{a,b,c}.{txt,doc} arquivo1-a.txt arquivo1-a.doc arquivo1-b.txt arquivo1-b.doc arquivo1-c.txt arquivo1-c.doc arquivo2-a.txt arquivo2-a.doc arquivo2-b.txt arquivo2-b.doc arquivo2-c.txt arquivo2-c.doc arquivo3-a.txt arquivo3-a.doc arquivo3-b.txt arquivo3-b.doc arquivo3-c.txt arquivo3-c.doc

Agora no esquea de limpar a baguna:


$ rm *

Operadores de controle lgico: && e || (AND e OR)


O shell bash tambm dispe de metacaracteres operadores de controle lgico, os conhecidos AND e OR de diversas linguagens de programao. Mas aqui eles at que so bem simples de compreender. O operador de controle AND representado por dois sinais de &, serve para agrupar comandos e somente executar o prximo comando caso o primeiro tenha obtido sucesso. Exemplo A:
$ ls $ ls arquivo.txt 2>/dev/null && echo "Arquivo Encontrado" $ touch arquivo.txt $ ls arquivo.txt 2>/dev/null && echo "Arquivo Encontrado" arquivo.txt Arquivo Encontrado $ rm arquivo.txt

Causamos um erro no comando ls, pois o arquivo arquivo.txt no existia no diretrio (Repare que direcionamos a stderr para uma sada nula). Devido ao comando ls no ter obtido xito, o comando echo no foi executado. Aps a criao do arquivo arquivo.txt, o comando echo foi executado. Esse tipo de agrupamento muito importante para criar condicionais para rotinas de administrao do sistema. S ejetar a fita DAT se o backup for concludo com xito, por exemplo. Temos tambm o operador de controle OR, que representado por dois sinais de pipe ||; Ele age basicamente da seguinte forma: O comando aps o operador de controle OR somente ser executado caso o primeiro falhe. Algo como um comando reserva, muito utilizado em scripts para notificao caso algum comando falhe. Exemplo B:
$ ls arquivo.txt 2>/dev/null || echo "Arquivo Nao existe" Arquivo Nao existe $ touch arquivo.txt $ ls arquivo.txt 2>/dev/null || echo "Arquivo Nao existe" arquivo.txt

Repare que o comando echo entrou em ao devido ao comando ls ter falhado, o que no ___________________________________________________________________________ Pg. 121

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes ocorreu mais aps criarmos o arquivo arquivo.txt. Caso o nome de um arquivo ou o argumento de um comando contenha um caractere que porventura seja igual a um metacaractere, esse deve ser escapado pelo shell; Para tal, basta preceder o caractere com uma barra invertida \.

Expresses Regulares
As Expresses Regulares (RE's) realmente podem facilitar a nossa vida. Expresses Regulares nada mais do que um conjunto de expresses que podem filtrar e/ou encontrar determinados padres dentro de arquivos e qualquer outra coisa que voc imaginar.

Utilizao
Geralmente as RE's so utilizadas dentro de programas (Shell, Perl, C, etc) para encontrar alguns padres que sejam necessrios para o trmino do programa. Mas elas (RE's) tambm podem ser utilizadas em linhas de comando e com as excelentes ferramentas GNU SED, AWK e GREP que so encontradas na maioria das distribuies Linux. Vamos comear com o bsico dos bsicos, ou seja, utilizando RE's na linha de comando para efetuar algumas tarefas no Linux. Utilizando RE's para listar somente subdiretrios com "ls e grep":
[usuario@localhost /etc]$ ls -l|grep "^d" drwxr-xr-x 3 root root 4096 Dec 11 18:55 init.d drwxr-xr-x 2 root root 4096 Dec 11 18:46 network drwxr-xr-x 17 root root 4096 Jan 25 20:38 X11 .... ... ..

Perceba como fcil listar somente os subdiretrios de /etc utilizando ls e grep e com uma pequena ajudinha de uma RE.

Entendendo a RE "^d"
O que ocorreu foi que o comando ls listou todo o contedo do diretrio /etc e passou essa sada para o comando grep (utilizando pipe |) que por sua vez pegou apenas o que nos interessava (subdiretrios) com a RE ^d que significa:
^ incio de linha d a letra "d" no incio da linha (o que simboliza um diretrio)

Vamos conhecer algumas espresses interessantes ___________________________________________________________________________ Pg. 122

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes OBS: preciso protejer caracteres especiais em RE's. Isso deve ser feito com a barra invertida "\".

Expresso Regular ^ $ [a-z] [a-z]\{1,2\} [a-z]\{2\} [^a-z] [A-Z] [^A-Z] [a-zA-Z] [a-zA-Z0-9] [^a-zA-Z] [0-9] [^0-9] \" \' \? \! \& \* \^ \/ \~ \(a\|b\|c\)

Significado incio de linha final de linha qualquer literal de "a" at "z" (minsculas) qualquer literal de "a" at "z" (minsculas) no mnimo 1 vez e no mximo 2 vezes qualquer literal de "a" at "z" (minsculas) 2 vezes literal que NO esteja entre "a" e "z" (minsculas) qualquer literal de "A" at "Z" (maisculas) qualquer literal que NO esteja entre "A" e "Z" (maisculas) qualquer literal de "a" at "z" (minsculas e maisculas) qualquer caractere imprimvel (minsculas, maisculas e nmeros) qualquer literal que NO esteja entre "a" e "z" (minsculas e maisculas) qualquer dgito de "0" at "9" qualquer dgito que NO esteja entre "0" e "9"

qualquer aspas (caracteres especiais precisam ser protegidos pela barra invertida "\")

encontra "a" ou "b" ou "c" (proteger pipes e parnteses fundamental)

Essa tabela no mostra todos os tipos de expresses que podem ser utilizados, mais j da para ter uma idia do que podemos fazer.

Exemplos
Encontrar todas as ocorrncias da palavra "linux" no incio de cada linha do arquivo "termcap":
[usuario@localhost /etc]$ grep "^linux" termcap linux|linux-lat|linux console:\

Encontrar todas as ocorrncias da palavra "linux" que comece e termine na mesma linha dentro ___________________________________________________________________________ Pg. 123

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes do arquivo "termcap":
[usuario@localhost /etc]$ grep "^linux$" termcap linux

Encontrar todas as ocorrncias da palavra "linux" no final de cada linha do arquivo "termcap":
[usuario@localhost /etc]$ grep "linux$" termcap # * Added 7 newly discovered, undocumented acsc characters to linux

Uma boa ferramenta para se treinar RE's o comando echo:


$ echo testando|grep "[a-z]" testando $ echo 123|grep "[a-z]" $ echo testando|grep "^[a-n]" $ echo 12345|grep "[0-9]" $ echo testando|grep "^[a-z]\{3,8\}$" testando $ echo testando|grep "^[a-z]\{8\}$" testando $ echo testando|grep "^[a-z]\{9,10\}$" $ echo 23333|awk '/[0-9]*/ {print}' 23333 $ echo 22/02/2000|grep "[0-3][0-9][-/][0-1][0-9][-/]2000" 22/02/2000 $ echo 22/02/2001|grep "[0-3][0-9][-/][0-1][0-9][-/]2000" $ echo 22-02-2000|grep "[0-3][0-9][-/][0-1][0-9][-/]2000" 22-02-2000 $ echo 22-02-2000|grep "[0-3][0-9][-/][0-1][0-9][-/]\(2000\|2001\)" 22-02-2000 $ echo 22-02-2001|grep "[0-3][0-9][-/][0-1][0-9][-/]\(2000\|2001\)" 22-02-2001 $ echo 22-02-2002|grep "[0-3][0-9][-/][0-1][0-9][-/]\(2000\|2001\)" $ echo 822-5576|grep "^[0-9]\{2,4\}-[0-9]\{4\}$" 822-5576 $ echo 822-55768|grep "^[0-9]\{2,4\}-[0-9]\{4\}$" $ echo 82-5576|grep "^[0-9]\{2,4\}-[0-9]\{4\}$" 82-5576 $ echo 8232-5576|grep "^[0-9]\{2,4\}-[0-9]\{4\}$" 8232-5576 $ echo 82325576|grep "^[0-9]\{2,4\}-[0-9]\{4\}$" $ echo sim|grep "^\(sim\|no\|talvez\)$" sim $ echo no|grep "^\(sim\|no\|talvez\)$" no $ echo talvez|grep "^\(sim\|no\|talvez\)$" talvez $ echo seil|grep "^\(sim\|no\|talvez\)$"

Esses so pequenos exemplos de como voc pode utilizar RE's na linha de comando ou em seus scripts. O conceito de RE's valido para todas as linguagens que a utilizam, com excesso de alguns detalhes que mudam, como por exemplo a barra invertida que no utilizada em outras linguagens para proteger caracteres especiais. Na linha de comando ou em shell scripts necessrio utilizar barra invertida para proteger ___________________________________________________________________________ Pg. 124

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes caracteres especiais porque o shell vai tentar interpretar esses caracteres e esse no o nosso interesse.

Configurao do shell bash


O shell bash, apesar de ser um interpretador de comandos, tambm um programa instalado no sistema, que conta com seus arquivos de configurao. Esses arquivos so lidos quando o bash invocado, e isto geralmente feito quando determinado usurio efetua login no sistema. As distribuies Linux j costumam disponibilizar estes arquivos com prvias configuraes funcionais do bash. Estudaremos a seguir cada um desses arquivos, e quais suas respectivas funes. O shell bash pode ser iniciado de forma interativa e no interativa. Um shell interativo, o shell que conhecemos, onde digitamos comandos interativamente. Este tipo de shell se divide em duas formas, shell interativo de login, que o shell carregado quando efetuamos o login, e o shell interativo comum, que o shell carregado manualmente aps um login. possvel carregar um shell desse tipo invocando-se o comando bash. Um shell no-interativo um shell pouco usado, que no recebe comandos diretamente e s serve para executar um comando ou script (bash -c comando, por exemplo). Quando o bash invocado como um shell interativo de login, primeiro ele verifica a existncia do arquivo /etc/profile, caso ele exista, os comandos nele contidos sero lidos e executados. Aps ler e executar esse arquivo, o bash faz o mesmo com o arquivo ~/.bash_profile, ~/.bash_login e ~/.profile, nessa mesma ordem, lendo e executando os comandos presentes nesses arquivos. Quando um shell interativo de login finalizado, o bash l e executa os comandos contidos no arquivo ~/.bash_logout, caso exista. Se o shell bash for invocado de forma interativa comum (No um shell de login), o bash somente l e executa os comandos contidos nos arquivos /etc/ bash.bashrc (ou /etc/bashrc em algumas distribuies), em seguida no arquivo ~/.bashrc. IMPORTANTE Os arquivos /etc/bashrc e ~/.bashrc no so lidos pelo bash quando invocamos um shell interativo de login, porm alguns scripts como o /etc/profile ou ~/.bash_profile podem chamar alguns desses arquivos e execut-los. O importante a saber que o bash no procura por esses arquivos nestas circunstncias. A seguir veremos exemplos dos arquivos comentados nessa seo.

Arquivo /etc/profile
if [ "`id -u`" -eq 0 ]; then PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/ bin/X11" else PATH="/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games" fi if [ "$PS1" ]; then

___________________________________________________________________________ Pg. 125

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
if [ "$BASH" ]; then PS1='\u@\h:\w\$ ' else if [ "`id -u`" -eq 0 ]; then PS1='# ' else PS1='$ ' fi fi

fi export PATH umask 022

Repare que este arquivo configura o PATH dos comandos, a aparncia do prompt (Varivel $PS1) e configura a umask padro.

Arquivo ~/.bash_profile
# ~/.bash_profile: executed by bash(1) for login shel s. # see /usr/share/doc/bash/examples/startup-files for examples. # the files are located in the bash-doc package. # the default umask is set in /etc/login.defs #umask 022 # include .bashrc if it exists if [ -f ~/.bashrc ]; then . ~/.bashrc fi # the rest of this file is commented out. # set PATH so it includes user's private bin if it exists #if [ -d ~/bin ] ; then # PATH=~/bin:"${PATH}" #fi # do the same with MANPATH #if [ -d ~/man ]; then # MANPATH=~/man: # export MANPATH #fi

Este arquivo possui uma rotina que verifica a existncia de um outro arquivo chamado ~/.bashrc, e caso este arquivo exista, ser executado pelo bash.

Arquivo /etc/bash.bashrc ou /etc/bashrc


# System-wide .bashrc file for interactive bash(1) shel s. # To enable the settings / commands in this file for login shells as wel , # this file has to be sourced in /etc/profile. # If not running interactively, don't do anything [ -z "$PS1" ] && return # check the window size after each command and, if necessary, # update the values of LINES and COLUMNS. shopt -s checkwinsize # set variable identifying the chroot you work in (used in the prompt below) if [ -z "$debian_chroot" -a -r /etc/debian_chroot ]; then debian_chroot=$(cat /etc/debian_chroot) fi # set a fancy prompt (non-color)

___________________________________________________________________________ Pg. 126

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' # enable bash completion in interactive shells #if [ -f /etc/bash_completion ]; then # . /etc/bash_completion #fi

Arquivo /etc/bash.bashrc de uma distribuio Debian.

Arquivo ~/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells. # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples # If not running interactively, don't do anything: [ -z "$PS1" ] && return # don't put duplicate lines in the history. See bash(1) for more options #export HISTCONTROL=ignoredups # check the window size after each command and, if necessary, # update the values of LINES and COLUMNS. #shopt -s checkwinsize # enable color support of ls and also add handy aliases if [ "$TERM" != "dumb" ]; then eval `dircolors -b` alias ls='ls --color=auto' #alias dir='ls --color=auto --format=vertical' #alias vdir='ls --color=auto --format=long' fi # some more ls aliases #alias ll='ls -l' #alias la='ls -A' #alias l='ls -CF' # set variable identifying the chroot you work in (used in the prompt below) #if [ -z "$debian_chroot" -a -r /etc/debian_chroot ]; then # debian_chroot=$(cat /etc/debian_chroot) #fi # set a fancy prompt (non-color) PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' # Comment in the above and uncomment this below for a color prompt #PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\ [\033[01;34m\] \w\[\033[00m\]\$ ' # If this is an xterm set the title to user@host:dir case $TERM in xterm*|rxvt*) PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"' ;; *) ;; esac # enable programmable completion features (you don't need to enable # this, if it's already enabled in /etc/bash.bashrc). #if [ -f /etc/bash_completion ]; then # . /etc/bash_completion #fi

Repare na existncia de opes que podem ser habilitadas apenas descomentando as linhas corretas. Este arquivo tambm foi retirado de um sistema Debian. ___________________________________________________________________________ Pg. 127

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Arquivo ~/.bash_logout
Este arquivo no costuma existir por padro em algumas distribuies Linux. Como dito anteriormente, a funo desse arquivo executar alguma(s) tarefa(s) ao sairmos do sistema, que podem se tornar necessrias com o tempo. importante frisar que este arquivo somente ser executado ao sairmos de um shell bash interativo de login. Execute o comando abaixo para criar um novo ~/.bash_logout:
$ echo echo Ate Logo... ; read > ~/.bash_logout

Em seguida, efetue logout do terminal de login (Faa em um terminal texto, como tty1, por exemplo). Ao sairmos, ser mostrada a mensagem Ate Logo... na tela, que desaparecer ao pressionarmos qualquer outra tecla.

Arquivo ~/.bash_history
Arquivo j estudado anteriormente, armazena os ltimos comandos digitados pelo usurio.

Aliases de shell
Aliases de shell so formas de se apelidar comandos, criando comandos intermedirios de atalho para eles. Aliases so definidos com o comando alias, que um dos comandos integrados ao shell bash. Como o comando alias (sem nenhum argumento) podemos listar os alias atualmente configurados no shell atual. Caso deseje apagar um alias, utilize o comando unalias. Sintaxe:
alias nome=qualquer comando valido do shel

Exemplo A:
$ alias alias ls='ls --color=auto' $ alias cls="clear" $ alias alias cls='clear' alias ls='ls --color=auto' $ cls

Definimos um alias para o comando cls (velho conhecido do DOS), que no existe no Linux. Como o comando clear tem o mesmo efeito em sistemas Linux, criamos um alias para que quando o usurio digitar o comando cls, o sistema execute clear. Exemplo B:
alias desligar=shutdown -h now alias reiniciar=shutdown -r now alias ls=ls -color

___________________________________________________________________________ Pg. 128

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
alias alias alias alias cd-on=mount /dev/cdrom cd-off=umount /dev/cdrom x=startx limpa="clear ; date"

Este atalho deve ser escrito no arquivo /etc/bashrc. Se no existir esse arquivo, crie o arquivo com vi e salve-o no diretrio /etc com o nome bashrc. Os alias definidos na linha de comando manualmente se perdem ao sarmos do shell atual. Para tornar os aliases permanentes, basta adicion-los ao arquivo /etc/bash.- bashrc ou ~/.bashrc caso queira restringir os novos aliases somente para algum(ns) usurio(s) do sistema. O prprio ~/.bashrc costuma ter alguns aliases j prdefinidos ou comentados.

Escape de Comandos no bash


importante que o administrador de sistemas Linux esteja habituado com o escape de comandos no shell, sem contar que um tpico de peso para um exame de certificao Linux do nvel proposto pelo treinamento. Os principais caracteres de escape so: ' (aspas simples), (aspas duplas), e \ (barra invertida). Qualquer string adequada entre aspas simples ser interpretada literalmente pelo shell; O mesmo acontece com as aspas duplas. A diferena entre as aspas que no caso das simples, no permitida a substituio de comandos (visto adiante), j entre as aspas duplas isso permitido. Qualquer caractere logo aps a \ considerado literalmente. Colocar uma \ no final da linha diz ao bash para no interpretar a quebra de linha, e continuar o comando na linha de baixo (vide exemplos). A substituio de comandos uma caracterstica do bash (herdada de outros shells) que permite a um comando utilizar como parmetro ou parte de um parmetro a sada de outro comando que esteja enquadrado entre ` (crases) ou no formato $(comando), conforme exemplo abaixo: Exemplo A:
$ echo "Existem `ls -l |wc -l` arquivos em $(pwd)" Existem 8 arquivos em /home/erivelton

Ocorreram 2 substituies e 1 escape de comandos na linha acima. As duas substituies referem-se a sada do comando ls -l |wc -l, que listou os arquivos no diretrio e em seguida usou o comando wc -lpara contar quantas linhas haviam na sada, que resultou em 8. A segunda substituio refere-se a sada do comando pwd, que mostra o caminho do diretrio atual. Repare que as duas substituies de comandos foram efetuadas de formas diferentes. O escape de comandos refere-se a tudo que est compreendido entre as aspas duplas no comando. Exemplo B:
$ echo "Um teste 'simples' demais" Um teste 'simples' demais $ echo 'Um teste 'simples' demais'

___________________________________________________________________________ Pg. 129

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
Um teste simples demais $ echo 'Um teste "simples" demais' Um teste "simples" demais

Repare em como o escape de comandos atua. Quando as aspas so iguais dentro e fora, o escape de comandos anulado.

___________________________________________________________________________ Pg. 130

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

DOCUMENTAO

No desampares a sabedoria, e ela te guardar; ama-a, e ela te proteger


Provrbios 4.6

Documentao essencial no que tange o sistema operacional Linux, com seus diversos comandos e termos. de grande importncia que o administrador, por mais experiente que seja, saiba consultar a documentao do sistema. No Linux, existem alguns padres de documentao que servem como repositrio de informaes sobre os comandos e termos relacionados ao sistema. Essas informaes podem ser acessadas pelo prprio sistema. Os comandos e termos costumam estar documentados nas chamadas pginas de manual e diretrio de documentao. O diretrio de documentao de um sistema Linux costuma ser /usr/share/doc. Dentro desse diretrio existem diversos subdiretrios que hospedam documentao sobre os comandos e termos relacionados. Por exemplo, para obter mais informaes sobre o bash, basta analisar os arquivos dentro do diretrio /usr/share/doc/bash. bem simples. As pginas de manual so ligeiramente mais complexas, mas iremos estud-las em seguida. Geralmente os comandos contam com parmetros de ajuda no formato: comando --help ou comando -h. Isso facilita bastante a busca por informaes sobre determinado parmetro de comando.

Pginas de manual
As pginas de manual definem um padro com que os programas instalados devem dispor a documentao. Atualmente, existem dois tipos de pginas de manual: As mais antigas, porm ainda amplamente utilizadas so as man pages e o formato mais recente de documentao que so as info pages. Estudaremos com mais cautela cada uma delas.

Man pages
As pginas de manual no formato de man pages acompanham quase todos os programas GNU/Linux. Elas trazem uma descrio da funcionalidade de cada comando ou programa e detalhes sobre o funcionamento dos parmetros. Uma pgina de manual visualizada na forma de texto com rolagem vertical. Tambm comum encontrar documentao para arquivos de configurao do sistema, e no somente para comandos. Para acessar as man pages, utilizamos o comando man. Sintaxe:
man [seo] termo

Sua utilizao bem simples. Para ler a pgina de manual do comando ls, por ___________________________________________________________________________ Pg. 131

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes exemplo, utilizamos man ls. Para facilitar a organizao das man pages, foram definidas sees para as pginas de manual deste formato. Estas sees esto descritas na tabela a seguir. Seo 1 2 3 4 5 6 7 8 9 Descrio Programas executveis ou programas do shell Chamadas do sistema (Funes providas pelo Kernel) Chamadas de biblioteca (Funes providas por bibliotecas do sistema) Arquivos especiais (Geralmente arquivos dentro do diretrio /dev) Arquivos de configurao Jogos Miscelnea (Qualquer coisa que no se enquadrar nas demais) Comandos de administrao do sistema (Geralmente os que ficam em /sbin) Rotinas do Kernel (Ainda no o padro, talvez mude)

Dessa forma, podemos direcionar nossa busca por documentao para uma pgina de manual especfica, pois possvel que a documentao de um programa exista em 2 ou mais categorias, como o caso do comando crontab que documentado na seo 1 (sobre o prprio comando) e 5 (formato do arquivo de configurao para o comando). Sendo assim, como as sees so numeradas e esto em ordem crescente, o man ir mostrar a primeira seo sobre o comando encontrada. Nesse caso do crontab, ao digitarmos man crontab, o man ir nos mostrar a primeira pgina de manual sobre o comando crontab que ele encontrar, nesse caso a seo 1. Caso queira acessar a pgina de manual do crontab da seo 5 ao qual ele tambm pertence, utilizamos o comando da seguinte forma:
man 5 crontab

Uma man page segue um formato padro para dispor as informaes na pgina. A primeira linha da sada o cabealho, que costuma mostrar nas duas extremidades o nome da pgina de manual seguida do nmero da seo entre parnteses. No caso da seo 5 do comando crontab, a primeira linha seria assim:
CRONTAB(1) CRONTAB(1)

Para navegar na pgina de manual, utilizamos as setas do teclado, [PGUP] e [PGDOWN]. Para Atualizar a tela, tecla [r], para sair [q]. Os arquivos de man pages ficam armazenados no diretrio /usr/share/man. L existem diversos subdiretrios que referenciam as respectivas sees em diversos idiomas disponveis, muitas vezes organizadas por links simblicos.

___________________________________________________________________________ Pg. 132

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Utilize o comando man -w manpage para descobrir em que sees das pginas de manual o termo pesquisado reside.

Info Pages
considerada a evoluo das man pages. Sua principal diferena a incluso de um novo sistema de navegao atravs das pginas, que agora permitem links umas entre as outras, lembrando muito o conceito de pginas web. Se pressionarmos [Enter] em cima de uma palavra destacada, a info page nos levar a seo correspondente. um pouco mais simples do que as man pages, pois no est dividida em sees (ainda). Se o nome do comando ou programa no for digitado, a info pages mostra a lista de todos os manuais de comandos e programas disponveis. A navegao da info pages feita atravs de nomes marcados com um* (hipertextos) que se pressionarmos [Enter], nos levar at a seo correspondente. Sintaxe:
info [comando ou programa]

Tabela de Navegao
Tecla q ? n p u m d Exemplo:
$ info ls

Funo Sai da info page Mostra a tela de ajuda de navegao Avana uma pgina Volta uma pgina Sobe um nvel de pgina Abre mecanismo de busca para localizar uma pgina dentro das info pages Volta ao ndice de documentos

Sistema de buscas na documentao do sistema


Algumas vezes nos deparamos com alguma situao em que precisamos obter informaes sobre algo, que pode ser um comando ou termo relacionado, que no sabemos exatamente para que serve. (Sempre aparece aquele comando inusitado). ___________________________________________________________________________ Pg. 133

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes possvel efetuar buscas por determinados critrios na documentao do sistema, a fim de encontrar a pgina de manual (manpages ou infopages) correta para o comando ou termo pesquisado.

Criando a base de dados


Antes de efetuarmos qualquer pesquisa, preciso criar (ou atualizar, se necessrio) a base de dados das pginas de manual com o comando makewhatis, portanto, necessrio rodar esse comando sempre que uma nova pgina de manual for adicionada ao sistema (ao instalarmos programas, por exemplo) ou antes da primeira utilizao, quando a base de dados ainda no existe. IMPORTANTE Algumas distribuies Linux (como o Debian, por exemplo), utilizam o comando mandb -c para criar a base de dados ao invs do comando makewhatis.

Efetuando pesquisas na documentao


Aps a base j estar criada, podemos efetuar pesquisas de duas maneiras na base de dados das pginas de manual. A primeira delas com o comando whatis, que efetua a busca com base no nome do comando. muito utilizada quando j sabemos o nome do comando e queremos obter mais informaes sobre ele diretamente. J a outra forma com o comando apropos, que efetua a pesquisa com base em parte do nome do comando ou sua descrio. Isso permite efetuarmos buscas com base em termos de pesquisa, o que se torna til quando no sabemos exatamente o nome do comando, por exemplo. Exemplo A:
$ whatis cron cron (8) - daemon to execute scheduled commands (Vixie $ apropos cron cron (8) - daemon to execute scheduled commands (Vixie crontab (1) - maintain crontab files for individual users crontab (5) - tables for driving cron $ whatis scheduled scheduled: nada apropriado. $ apropos scheduled cron (8) - daemon to execute scheduled commands (Vixie Cron) Cron) (V3)

Cron)

___________________________________________________________________________ Pg. 134

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

LOCALIZANDO ARQUIVOS NO SISTEMA


At o tolo, estando calado, tido por sbio; e o que cerra seus lbios, por entendido
Provrbios 17.28

Existem alguns utilitrios no Linux que nos auxiliam a localizar arquivos na estrutura de diretrios com base em critrios. A ferramenta mais utilizada para essa tarefa o comando find, que permite localizarmos arquivos no sistema como base em critrios como o nome do arquivo, datas, tamanho, etc. Gerando assim uma grande flexibilidade na busca de determinados arquivos no sistema.

Comando find
O find uma das mais importantes ferramentas GNU disponveis. Ele trabalha basicamente com critrios, que podem ser combinados a fim de se encontrar um ou mais arquivos especficos. Essa caracterstica permite, por exemplo, utilizarmos o find para selecionar quais arquivos faro ou no parte de uma rotina de backup no Linux. O find tambm permite executarmos arquivos resultantes da busca. Sintaxe:
find [caminho...] [expresso]

um

determinada

ao

para

cada

um

dos

O caminho padro o diretrio atual; a expresso padro -print. As principais expresses esto descritas na tabela abaixo: Tabela de parmetros -name arquivo Procura por algum arquivo chamado arquivo. -mindepth nvel Especifica um nvel mnimo de subdiretrios para a pesquisa. -maxdepth nvel Expecifica um nvel mximo de subdiretrios para a pesquisa. -amin n Procura arquivos que tenham sido acessados n minutos atrs. -atime n Procura arquivos que tenham sido acessados n dias atrs. -cmin n Procura arquivos que tenham sido modificados n minutos atrs. -ctime n Procura arquivos que tenham sido modificados n dias atrs. -user usurio Procura arquivos cujo dono seja o usurio determinado. -group grupo Procura arquivos cujo dono seja o grupo determinado. Procura arquivos de um tamanho especfico. O tamanho pode -size tamanho ser especificado em b (blocos de 512 bytes, padro), c (bytes), k (Kilobytes) e w (Palavras de 2 bytes, ou 16 bits) Procura por arquivos que sejam de um tipo especfico. Os -type tipo tipos podem ser: b (dispositivo de bloco), c (dispositivo de caractere), d (diretrio), f (arquivo comum), l (link simblico), entre outros. Procura arquivos que possuam determinada permisso, que pode ser -perm permisso especificada em formato de letras ou em formato octal. Executa determinado comando para cada arquivo encontrado na busca. Para referenciar o arquivo no comando utilize {} no lugar -exec comando \; do nome de um arquivo. ___________________________________________________________________________ Pg. 135

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes O comando find ainda possui outros diversos parmetros no mostrados nessa tabela, porm so parmetros dificilmente utilizados, que podem ser encontrados na man page do comando quando necessrio. Exemplo A:
$ find /bin -name ls /bin/ls $ find /bin -name ls* /bin/ls /bin/lsmod /bin/lspci /bin/lsmod.modutils

Procura por um arquivo chamado ls dentro do diretrio /bin, em seguida procura por qualquer arquivo que inicie com ls (ls*) no mesmo diretrio. Sempre que for especificar algum coringa como ls* utilize-o entre aspas, como o exemplo acima.

Exemplo B:
# find / -name grep -maxdepth 3

Procura no diretrio raiz e sub-diretrios at o terceiro nvel um arquivo ou diretrio cujo nome seja grep. Exemplo C:
# find /usr -size +10000k

Procura por arquivos com mais de 10MB a partir do diretrio /usr. Exemplo D:
# find /etc -size -1000k -name host* -type f /etc/hosts /etc/hosts.allow /etc/init.d/hostname.sh /etc/hostname /etc/hosts.deny /etc/host.conf # find /etc -size -1000k -name host??????? -type f /etc/hosts.allow /etc/init.d/hostname.sh

Agora algumas pesquisas mais complexas que envolvem coringas, onde buscamos arquivos a partir do diretrio /etc cujo tamanho seja inferior a 1MB, o nome comece com host (host*) e deve ser um arquivo comum. Depois refinamos nossa pesquisa dizendo que somente queremos encontrar arquivos cujo nome comece com host e contenha mais 7 caracteres.

___________________________________________________________________________ Pg. 136

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Exemplo E:
# touch /tmp/arq1 # touch -t 11201204 /tmp/arq2 # ls -l /tmp/arq* -rw-r--r-- 1 root root 0 Dec 20 12:04 /tmp/arq1 -rw-r--r-- 1 root root 0 Nov 20 12:04 /tmp/arq2 # find /tmp -name "arq*" -atime -10 /tmp/arq1 # find /tmp -name "arq*" -atime +10 /tmp/arq2 # find /tmp -name "arq*" -atime -32 /tmp/arq1 /tmp/arq2

Repare que foram criados dois arquivos, um com a data atual (arq1) e outro com a data de acesso propositalmente modificada para 30 dias atrs (arq2). A primeira busca do find procura por arquivos cujo nome inicie com arq (arq*) e que tenha sido acessado nos ltimos 10 dias (De dez dias para c geralmente mais fcil de memorizar). A segunda busca parecida, o que a diferencia que buscamos por um arquivo que no tenha sido acessado nos ltimos 10 dias (Tente lembrar de dez dias pra l). Por ltimo, Pesquisamos pelos mesmos arquivos que iniciem com arq, mas que tenham sido acessados nos ltimos 32 dias, o que resultou nos dois arquivos. Exemplo F:
# find /dev -group disk -name hd[abc]2 -type b /dev/hda2 /dev/hdb2 /dev/hdc2 # find /dev -group disk -name hd[abc]2 -type b -exec echo "Arquivo {}" \; Arquivo /dev/hda2 Arquivo /dev/hdb2 Arquivo /dev/hdc2

Tentamos localizar arquivos dentro de /dev que pertenam ao grupo disk, cujo nome comece com hd, o terceiro caractere do nome seja a, b ou c e seja do tipo b (Dispositivo de blocos). Isso retornou 3 resultados. Depois utilizamos a mesma busca como base para o argumento -exec, que executou o comando echo para cada um dos arquivos resultantes, exemplificando como possvel executar comandos para cada resultado individual da pesquisa. Exemplo G:
# find /var/lib/amavis/virusmails/ -name "*.gz" -ctime +10 -exec rm {} \;

Neste commando localizamos todos arquivos com a extenso .gz criados a mais de 10 dias e aps cada resultado localizado executado o comando rm para apag-lo. Exemplo H:
# find /var/lib/amavis/virusmails/ -name *.gz -ctime +10 | xargs rm

Este comando tem o mesmo objetivo do anterior mas a diferena que o xargs recebe uma lista dos arquivos encontrados e apaga de uma s vez. Este modo mais eficiente que o anterior, porm se a lista for muito grande o comando no executado.

___________________________________________________________________________ Pg. 137

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Comando whereis
Localiza os binrios e as pginas de manual para algum binrio (comando ou biblioteca) do sistema. A pesquisa efetuada com base nos caminhos configurados na varivel $PATH do shell e em caminhos que comumente abrigam binrios do sistema. Sintaxe:
whereis [opo] arquivo

Onde arquivo o binrio a ser pesquisado. Tabela de parmetros -b Procura por binrios. -m Procura por pginas de manual. -s Procura por cdigo-fonte. Exemplo A:
# whereis crontab crontab: /usr/bin/crontab /etc/crontab /usr/share/man/man1/crontab.1.gz /usr/share/man/man5/crontab.5.gz # whereis -b crontab crontab: /usr/bin/crontab /etc/crontab # whereis -m crontab crontab: /usr/share/man/man1/crontab.1.gz /usr/share/man/man5/crontab.5.gz

Comando locate
Localiza uma palavra da estrutura de arquivos ou diretrios do sistema a partir de uma base de dados prpria previamente indexada. til quando queremos localizar de forma rpida um arquivo qualquer. Como a pesquisa efetuada em um banco de dados prprio do comando, antes precisamos criar o banco de dados com o comando updatedb. Sintaxe:
locate [arquivo]

Exemplo:
# touch /tmp/meunovoarquivo # locate meunovoarquivo # updatedb # locate meunovoarquivo /tmp/meunovoarquivo

Repare que antes de atualizao da base de dados do locate com o comando updatedb no era possvel encontrar o arquivo meunovoarquivo. Isso torna o locate muito til para buscas rpidas, sem ter que varrer todo ou parte do sistema de arquivos a cada busca, por exemplo.

___________________________________________________________________________ Pg. 138

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

EDITORES DE TEXTO

A pessoa prudente esconde a sua sabedoria, mas os tolos anunciam a prpria ignorncia
Provrbios 12.23

O Linux conta com diversos editores de texto que so pea chave no dia a dia de um administrador de sistemas. O mais utilizado entre eles o VI, pois est presente em 99% das distribuies Linux alm de tambm estar presente em sistemas Unix. Devido a isso, o VI ser o foco de nossos estudos.

VI
O nome Vi vem de visual, pois o que os usurios consideravam como sendo um editor visual a mais de 3 dcadas atrs. O Vi o editor atualmente utilizado que possui mais tempo de vida (mais de 3 dcadas). Na verdade, o que encontramos na maioria das distribuies Linux atuais uma reencarnao do Vi original denominado Vim (Vi Improved), que foi escrito desde o incio por programadores voluntrios com base no VI j existente. O objetivo desses programadores era criar um editor de textos melhor que o Vi original, mas que mantivesse as mesmas caractersticas. As principais caractersticas do Vi original so na verdade solues para as necessidades da poca. A utilizao do Vi bastante baseada em teclas de atalho para executar tarefas de rolagem e edio de texto, devido ao fato de que na poca em que o original foi desenvolvido as redes eram muito lentas, e quanto menos informaes (Teclas, comandos...) pudessem trafegar pela rede ao se editar um arquivo melhor. Essas caractersticas so bem vindas at hoje, pois permite efetuarmos edies de arquivos remotamente (Atravs de uma conexo remota j estabelecida, como Telnet e SSH, por exemplo) atravs de um link de banda estreita. Sintaxe:
vim [arquivo]

O Vi possui 3 modos bsicos de operao: comando, linha e edio. OBSERVAO Em sistemas que possuem o Vim IMproved (vim) instalado, geralmente criado um alias do comando vi para vim.

Modo de comando
o modo de operao padro do Vi. Neste modo o editor interpreta os caracteres digitados como comandos internos do editor e no como texto a ser inserido no arquivo. A falta de compreenso deste modo geralmente causa maior frustrao ao utilizar este editor. Os comandos do Vi se dividem em 4 sub-categorias: movimentao, pesquisa, texto e edio, vistos na tabela abaixo:

___________________________________________________________________________ Pg. 139

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Comandos de Movimentao
Comando k j l h 0 (zero) $ G [CTRL]+[F] [CTRL]+[B] H M L w W b B nG Descrio Movimenta o cursor para cima. Movimenta o cursor para baixo Movimenta o cursor para a direita. Movimenta o cursor para a esquerda. Posiciona o cursor no incio da linha. Posiciona o cursor no final da linha. Posiciona o cursor na ltima linha do arquivo. Avana uma tela na rolagem de texto. Retroscede uma tela na rolagem de texto. Posiciona o cursor na primeira linha da tela. Posiciona o cursor na linha do meio da tela. Posiciona o cursor na ltima linha da tela. Posiciona o cursor no incio da prxima palavra (ignora pontuao). Posiciona o cursor no incio da prxima palavra sem ignorar a pontuao. Posiciona o cursos no incio da palavra anterior (ignora pontuao) Posiciona o cursor no incio da palavra anterior sem ignorar a pontuao. Posiciona o cursor no incio da linha n (Substituir n pelo nmero da linha desejada). Descrio Posiciona o cursor no prximo caractere c encontrado na linha. (Ex.: fp posiciona o cursor sobre o prximo caractere p encontrado na linha.) Posiciona o cursor na prxima ocorrncia da palavra pesquisada abaixo do cursor. Posiciona o cursor na prxima ocorrncia da palavra pesquisada acima do cursor. Prossegue a busca do ltimo comando / ou ? na prxima ocorrncia. Caso chegue ao final do arquivo, a pesquisa ter continuidade no incio do arquivo. A mesma funo que o comando N, porm faz a pesquisa na ordem inversa da ltima pesquisa efetuada com / ou ?. Mostra o nome, o nmero da linha atual e o total de linhas do arquivo. Descrio Exclui o caractere que esteja abaixo do cursos. Exclui todo o texto da posio atual do cursor at o final da palavra. Copia todo o texto da posio atual do cursor at o final da palavra. Exclui todo o texto da posio atual do cursor at o final da palavra e coloca o editor no modo de de edio. Exclui toda a linha atual. (Recorta) Copia toda a linha atual. (Recorta) Exclui todo o texto da posio atual do cursor at o final da linha.

Comandos de Pesquisa
Comando f+c /palavra ?palavra n N [CTRL]+[G] Comando x dw yw cw dd yy D

Comandos de Texto e Substituio

___________________________________________________________________________ Pg. 140

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes (Recorta) Copia todo o texto da posio atual do cursor at o final da linha. Substitui o caractere abaixo do cursor pelo caractere x. (Obs.: Qualquer caractere pode ser utilizado, x somente um exemplo). Limpa toda a linha em que o cursor se encontra e coloca o editor no modo de edio. Inicia o modo de substituio de texto. Para sair, pressione [ESC]. Une a linha atual prxima linha. Cola o texto que esteja em buffer aps o cursor. (Obs.: Qualquer comando de texto que exclua caracteres os envia para o buffer.) Inicia o modo visual para seleo do texto a partir da posio atual do cursor. Aps selecionar o texto desejado. Utilize uma das teclas como [y], [c] e [d] para copiar, substituir e recortar, respectivamente, ou a tecla [v] novamente para fechar o modo visual. Desfaz o ltimo comando. Refaz o ltimo comando.

Y rx cc R J p v u [CTRL]+[R]

O modo de texto uma forma prtica de substituir, organizar e inserir texto sem utilizar o modo de edio (sem precisar digitar texto). Uma caracterstica importante desse modo que todo o texto manipulado por esses comandos fica armazenado no buffer. Isso permite, por exemplo, recortar uma linha inteira com o comando dd e colar na linha logo abaixo do cursor com o comando p.

Modo de Edio
Ao entrarmos no modo de edio, tudo que digitarmos no teclado ser enviado como texto para o arquivo (O mais parecido possvel com outros editores de texto). Para sair do modo de edio e voltar ao modo de comando, utilizamos a tecla [ESC], at 2 vezes se assim for necessrio. Quando estamos no modo de edio, a string -- INSERT -- mostrada no canto inferior esquerdo da tela. No modo de comando, nada mostrado. A partir do modo de comando, podemos utilizar quaisquer dos comandos da tabela abaixo para iniciar o modo de edio:

Comandos para entrar no modo de Edio


Comando o cl a A i Descrio Insere no incio da linha abaixo do cursor. Apaga o caractere sob o cursor e inicia o modo de edio. Insere aps o cursor. Insere no final da linha. Insere na posio atual do cursor.

___________________________________________________________________________ Pg. 141

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Modo de linha
O Modo de linha um modo onde se tem acesso a comandos especiais do vi. Para entrar em modo de linha deve-se estar em modo de comando e pressionar : (Dois-pontos).

Comandos para entrar no modo de Linha


Comando :e arquivo :w[!] [arquivo] Descrio Instrui o vi para abrir um arquivo para edio. Salva o arquivo atual. Opcionalmente podemos colocar o nome de outro arquivo para instruir o via salva o arquivo atual como outro nome (Salvar Como...). Adicionar a exclamao ! em frente do comando (w!) fora a operao. Sai do arquivo sem salvar. Caso tenha feito alguma alterao o Vi no deixar sair sem salvar, somente se utilizarmos a exclamao (q!) para forar a sada sem salvar o arquivo. Insere o contedo de outro arquivo a partir do cursor. Sai do Vi e salva o arquivo atual. Tambm possvel utilizar a exclamao para forar a operao. Substitui a string antiga pela string nova na linha atual. O parmetro g no final opcional, e diz para o Vi continuar em busca de substituies na mesma linha mesmo aps a primeira ocorrncia. Substitui a string antiga pela string nova em todo o documento atual. O parmetro g no final opcional, e diz para o Vi continuar em busca de substituies na mesma linha mesmo aps a primeira ocorrncia. O comportamento padro do Vi (sem o g) proceder para a prxima linha caso substitui alguma palavra) Ativa e desativa, respectivamente, a numerao de linhas do number no arquivo. Desabilita o highlight que marca as palavras de alguma busca efetuada anteriormente.

:q[!] :r arquivo :x[!] :s/antiga/nova/g : %s/antiga/nova/ g :set number e :set no :nohl

Para voltar do modo de linha para o modo de comando basta pressionar ESC.

Dicas preciosas do Vim


Existem alguns macetes de sobrevivncia do Vim, que devem estar na ponta da lngua de um administrador Linux. Uma dica importante lembrar que sempre possvel desfazer as alteraes efetuadas em um arquivo, at um certo limite, com a tecla [u] no modo de comando. Outra dica importante: Para os comandos de linha que interagem com o texto (substituio por exemplo) possvel especificar um intervalo de linhas onde o comando ter efeito. Digamos que voc precise substituir a palavra gato pela palavra cachorro no arquivo em que esteja editando, mas somente entre as linhas 100 e 154. A soluo seria o seguinte comando de linha:
:100,154s/gato/cachorro/g

___________________________________________________________________________ Pg. 142

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Uma outra ocasio mais utilizada: Digamos que voc precise comentar com o caractere # um grande intervalo de linhas em um arquivo (pode ser maante ficar fazendo isso linha por linha). O comando de linha do vi abaixo resolveria facilmente o problema, nesse caso, das linhas 10 at 25 (faa com um arquivo grande para testar.
:10,25s/^/# /

O intervalo 10,25 dia para o comando atuar somente entre as linhas 10 e 25. O comando de substituio ir substituir o incio da linha (Representado pelo caractere ^) pelo sinal de # acrescido de um espao. Pronto. Tambm possvel editar dois ou mais arquivos na mesma tela. Tal proeza se torna verdadeira com o comando :split. Por exemplo, digamos que voc j esteja editando um arquivo e queira abrir outro na mesma tela, dividindo a mesma ao meio. Basta utilizar o comando abaixo dentro do Vim.
:split novoarquivo

Para alternar entre as telas utilize a sequncia de teclas [CONTROL]+[W]+[W].

___________________________________________________________________________ Pg. 143

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

ARQUITETURA DE HARDWARE

Por mais que o preguioso deseje alguma coisa, ele no conseguir, mas a pessoa esforada consegue o seu desejo
Provrbios 13.4

Quando falamos de hardware, tambm falamos no nome que o software atribui ao seu hardware. O nome dos seus dispositivos por exemplo so diferentes, abaixo uma comparao entre Linux e DOS. Dispositivo LINUX ttyS0 ttyS1 ttyS2 ttyS3 lp0 lp1 /dev/hda1 /dev/hda2 /dev/hdb1 Dispositivo DOS COM1 COM2 COM3 COM4 LPT1 LPT2 C: D:* D:*

Os parmetros usados para configurar o hardware no linux so a IRQ, I/O e DMA, porm h dispositivos que s usem dois desses parmetros. As interrupes podem ser visualizadas atravs do arquivo /proc/interrupts
# cat /proc/interrupts CPU0 0: 824407 1: 20276 2: 0 4: 141947 5: 86091 8: 3 11: 9485 14: 69121 15: 4 NMI: 0 LOC: 824417 ERR: 128 MIS: 0

XT-PIC XT-PIC XT-PIC XT-PIC XT-PIC XT-PIC XT-PIC XT-PIC XT-PIC

timer keyboard cascade serial SiS 7018 PCI Audio rtc usb-ohci, usb-ohci, eth0 ide0 ide1

Abaixo uma breve explicao sobre as interrupes. IRQ 0 - sada do temporizador (8254) IRQ 1 - controlador usado para teclado IRQ 2 - cascata para IRQ8IRQ15 no PC-AT IRQ 3 - porta serial secundria, geralmente/dev/ttyS1 ___________________________________________________________________________ Pg. 144

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes IRQ 4 - porta serial primria, geralmente /dev/ttyS0 IRQ 5 - livre (era a interrupo do HD no XT) IRQ 6 - controlador de disquetes /dev/fd0 IRQ 7 - porta paralela (para impressora, /dev/lp0) IRQ 8 - rtc IRQ 9 - interrupo de software (int 0x0A), redireciona para IRQ2 IRQ 10 - livre IRQ 11 - livre IRQ 12 - Mouse PS/2 IRQ 13 - livre IRQ 14 - controlador IDE primrio (/dev/hda, /dev/hdb) IRQ 15 - controlador IDE secundrio (/dev/hdc, /dev/hdd)

setserial
Esta uma ferramenta para relatar e reportar as configuraes das portas seriais do computador, isso inclui numero de IRQ, I/O. Com ela voc tambm pode mudar as configuraes de IRQ, portas e etc. Por exemplo: Para ver as configuraes de uma das portas seriais, digite:
# setserial /dev/ttyS1 /dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3

Voc pode mudar o numero de irq a ser usado apenas digitando o comando.
# setserial /dev/ttyS1 irq <numero> port <numero>

Agora vamos ver as configuraes da porta serial /dev/ttyS1 e mudar o irq e a porta dela
# setserial /dev/ttyS1 /dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3

Vimos que a irq dela 3 e a porta 0x02f8, agora vamos mudar para irq 4 e porta 0x03e8.
# setserial /dev/ttyS1 irq 4 port 0x3e8 # setserial /dev/ttyS1 /dev/ttyS1, UART: unknown, Port: 0x03e8, IRQ: 4

Isto pode ser muito til em relao a conflito de hardware, dispositivos que estejam por exemplo usando o mesmo irq. A opo -a imprime na tela todas as informaes do dispositivo Os endereos de I/O porem ser visualizados atravs do arquivo /proc/ioports
# cat /proc/ioports

___________________________________________________________________________ Pg. 145

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
0000-001f 0020-003f 0040-005f 0060-006f 0070-007f 0080-008f 00a0-00bf 00c0-00df 00f0-00ff 0170-0177 01f0-01f7 0376-0376 0378-037a 03c0-03df 03f6-03f6 03f8-03ff 0cf8-0cff 4000-400f 4000-4007 4008-400f d000-dfff d000-d07f e000-e0ff e400-e47f e800-e8ff e800-e8ff ec00-ecff ec00-ecff : : : : : : : : : : : : : : : : : : : : : : : : : : : : dma1 pic1 timer keyboard rtc dma page reg pic2 dma2 fpu ide1 ide0 ide1 parport0 vga+ ide0 serial(set) PCI conf1 Silicon Integrated Systems [SiS] 5513 [IDE] ide0 ide1 PCI Bus #01 Silicon Integrated Systems [SiS] SiS630 GUI Accelerator+3D PCI device 1039:7013 (Silicon Integrated Systems [SiS]) PCI device 1039:7013 (Silicon Integrated Systems [SiS]) Silicon Integrated Systems [SiS] SiS PCI Audio Accelerator SiS 7018 PCI Audio Realtek Semiconductor Co., Ltd. RTL-8139 8139too

___________________________________________________________________________ Pg. 146

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

PARTICIONAMENTO E SISTEMAS DE ARQUIVOS

O homem sensato tem o suficiente para viver na riqueza e na fartura, mas o tolo gasta todo o seu dinheiro assim que o recebe
Provrbios 21.20

Neste captulo aprenderemos como lidar com a tabela de parties, definir um correto esquema de particionamento e aplicar o sistema de arquivos mais adequado a cada situao.

Particionamento
Antigamente, quando o conceito de particionamento ainda no existia, um sistema era disposto em todo o disco rgido (isso no significa que ele ocupava todo o espao), no permitindo utilizarmos melhor o espao disponvel na mdia de armazenamento.

A tabela de parties
Com o advento dos discos rgidos, tambm surgiu o particionamento, que a capacidade de se repartir um disco rgido em diversas fatias de dados, chamadas parties. Essa diviso dos dados possvel at hoje devido a tabela de parties. Imagine o disco rgido como um grande repositrio de dados binrios (e realmente o que ele ). A tabela de parties tem a funo de dizer onde comea, onde termina e qual o tipo de sistema de arquivos de determinada partio. Ela fica localizada em uma rea especfica no incio do disco rgido, onde o sistema operacional pode ler e saber a localizao de todas as parties. Inicialmente, s era possvel criar 4 parties em um disco rgido. Onde cada uma delas poderia receber seu prprio sistema de arquivos diferente. Exemplo:
+---------------+----------------+---------------+---------------+ | Partio 1 | Partio 2 | Partio 3 | Partio 4 | +---------------+----------------+---------------+---------------+

Com o tempo, tornou-se necessrio um nmero maior de parties, e foi a que definiram os tipos de parties: primrias, extendida e lgicas.

___________________________________________________________________________ Pg. 147

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Parties primrias
As parties primrias so as parties que geralmente recebem um sistema operacional, e costumam ficar situadas no incio de um disco particionado. Foram os primeiros tipos de parties inventadas, no tempo em que s poderiam existir apenas 4 parties. Essa limitao existe at hoje com esse tipo de partio, pois s podem haver 4 parties primrias em um disco rgido. Caso haja necessidade de ter mais parties em um sistema, necessrio conhecer os outros 2 tipos de parties: extendida e lgicas. Uma partio primria pode receber dados (sistemas de arquivos), mas no outras parties diretamente.

A partio extendida
Para sanar o problema de limitao de at 4 parties no disco, foi desenvolvida a partio primria, que no pode receber dados (sistemas de arquivos) diretamente, mas sua finalidade alojar sub-parties, as chamadas parties lgicas. No pode existir mais de uma partio extendida no mesmo disco rgido.

As parties lgicas
Como complemento partio extendida, foram desenvolvidas as parties lgicas, que no passam de simples parties alojadas dentro de uma partio extendida. Uma partio lgica pode receber sistemas de arquivos normalmente, assim como uma partio primria, e seu principal motivo de existncia a necessidade de se ter mais do que 4 parties num disco rgido. Por exemplo, se precisarmos ter 6 parties em um disco rgido, criaramos: 3 primrias, 1 extendida e mais 3 lgicas dentro da extendida. Repare que no se deve considerar a partio extendida como uma partio vlida, visto que ela no recebe dados diretamente, somente por intermdio de parties lgicas. Vejamos como isso ficaria:

Conseguimos ter 6 parties de dados no mesmo disco rgido. O limite de parties lgicas no disco rgido de 12 parties, o que limita um disco ter no mximo 15 parties de dados mais uma extendida. ___________________________________________________________________________ Pg. 148

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Endereamento e geometria dos discos rgidos


Um assunto que deve ser de bom conhecimento de qualquer administrador de sistemas. preciso compreender como a BIOS do computador e o sistema operacional efetuam o mapeamento dos dados em um disco rgido. com base no endereamento ou na geometria do disco que o sistema operacional sabe onde esto os arquivos nas parties arquivos. Existem duas formas de mapeamento de dados: LBA e CHS.

Modo LBA de endereamento


o mtodo plano (de 1 dimenso) mais simples, moderno e funcional que um sistema tem para mapear os dados em um disco rgido. O que ocorre basicamente o seguinte: a BIOS do computador enderea todo o disco rgido em vrios pedacinhos que costumam ter 512bytes de tamanho cada um. Cada pedacinho desse recebe um nmero de identificao, e chamado de bloco. Dessa forma, quando um sistema operacional compatvel com LBA (O Linux ) precisa escrever ou ler dados em determinada parte do disco rgido, ele se localiza pelo respectivo bloco LBA.

Modo CHS de geometria


Este o modo mais antigo, complexo e limitado de mapeamento de dados dos discos rgidos. O mtodo CHS baseia-se num fator de 3 dimenses para mapear os dados no disco rgido. As 3 dimenses so: cilindros (cylinders), cabeas (heads) e setores (sectors). Esse modo impe algumas limitaes que devem ser observadas, como o limite dos 1024 cilindros que assola computadores antigos, onde a bios no consegue mapear mais do que 1024 cilindros, 256 cabeas e 63 setores, o que impe a limitao de 8.4gb ao disco, que mesmo sendo maior do que isso, a BIOS s conseguir enxergar essa quantidade de dados. Algumas BIOS mais antigas ainda possuem uma limitao ainda maior, que de 1024 cilindros, 16 cabeas e 63 setores, o que totaliza um limite de 528mb para discos rgidos. importante conhecer esses limites pois o kernel do linux deve estar disposto em uma partio /boot separada de todo o restante e no incio do disco, para garantir que essa partio seja visvel pela BIOS, e conseqentemente pelo gestor de boot. A nica barreira que devemos nos importar em romper a de permitir que o gerenciador de boot consiga carregar o kernel, pois uma vez que o controle dado ao sistema operacional Linux, ele consegue enxergar toda a capacidade do disco rgido, independente do tamanho observado na BIOS. Isso permite, por exemplo, utilizarmos discos maiores do que 8.4gb em micros Intel 586, como os Pentium MMX.

___________________________________________________________________________ Pg. 149

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Particionando o disco rgido com fdisk


O fdisk o utilitrio do Linux responsvel por gerenciar a tabela de parties. Existem outras encarnaes de fdisk em sistemas operacionais como o MS DOS, por exemplo, mas so completamente diferentes do nosso fdisk do Linux. No linux o utilitrio fdisk somente lida com a tabela de parties, e no capaz de criar sistemas de arquivos. Este um procedimento que veremos adiante. Sintaxe:
fdisk [opo] [dispositivo de bloco]

Onde dispositivo de bloco um disco rgido (como /dev/hda ou /dev/sdc, por exemplo), na maioria das vezes. O comando suporta poucas opes (pelo menos do lado de fora). Uma delas a opo -l, que exibe a tabela de parties de determinado dispositivo dado como argumento, ou de todos os dispositivos conhecidos. A opo -s mostra o tamanho, em blocos, de determinado dispositivo ou partio. Para entrarmos no modo interativo do utilitrio fdisk, basta especificar um dispositivo de blocos vlido. Exemplo:
# fdisk /dev/hda O nmero de cilindros para este disco est configurado para 238216. No existe nada de errado, mas isto maior que 1024, e pode em certas configuraes causar problemas com: 1) programas que executam em tempo de inicializao (verses velhas do lilo) 2) inicializao e programas de particionamento de outros OSs (p.ex., DOS FDISK, OS/2 FDISK) Comando (m para ajuda):

Na tela inicial do fdisk, caso o disco possua mais do que 1024 cilindros, seremos presenteados com a mensagem de alerta acima. O fdisk funciona com base em letras especiais que definem comandos. Digite [M] (seguido de enter...) para visualizar a tela de ajuda. A tela de ajuda mostra os comandos possveis com o fdisk.
Comando - ao a alterna a opo "inicializvel" b edita rtulo BSD no disco c alterna a opo "compatibilidade" d exclui uma partio l lista os tipos de partio conhecidos m mostra este menu n cria uma nova partio o cria uma nova tabela de parties DOS vazia p mostra a tabela de parties q sai sem salvar as alteraes s cria um novo rtulo de disco Sun vazio t altera a identificao da partio para o sistema u altera as unidades das entradas mostradas

___________________________________________________________________________ Pg. 150

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
v w x verifica a tabela de parties grava a tabela no disco e sai funcionalidade adicional (somente para usurios avanados)

Vamos agora seguir um passo a passo para excluir, adicionar e modificar o tipo de uma partio. NOTA Somente o usurio root pode utilizar o fdisk. No prompt do fdisk, utilize a opo [p] para mostrara tabela de parties, que no meu sistema, tem o seguinte aspecto:
Comando (m para ajuda): p Disk /dev/hda: 122.9 GB, 122942324736 bytes 16 heads, 63 sectors/track, 238216 cylinders Units = cilindros of 1008 * 512 = 516096 bytes Dispositivo Boot Start End Blocks Id System /dev/hda1 * 1 40640 20482528+ 83 Linux /dev/hda2 40641 238216 99578304 f W95 Ext'd (LBA) /dev/hda5 40641 237214 99072823+ 8e Linux LVM /dev/hda6 237215 238216 504976+ 82 Linux swap

Repare na coluna Id, que mostra o cdigo que identifica o tipo de sistema de arquivos presente na partio. O Linux conta com diversos tipos, dos quais os principais so: 83 para parties de dados e 82 para parties swap. importante lembrar que todas as alteraes feitas na tabela de parties s tero efeito se utilizarmos a opo [w] do fdisk, que salva as alteraes. Antes de criar uma partio, preciso ter espao no particionado no disco e no infringir as regras dos tipos de parties (Tentar criar 5 parties primrias, por exemplo). No exemplo, vamos excluir uma partio antes de criar uma outra.
Comando (m para ajuda): d Nmero da partio (1-6): 6 Comando (m para ajuda): p Disk /dev/hda: 122.9 GB, 122942324736 bytes 16 heads, 63 sectors/track, 238216 cylinders Units = cilindros of 1008 * 512 = 516096 bytes Dispositivo Boot Start End Blocks /dev/hda1 /dev/hda2 /dev/hda5 * 1 40641 40641 40640 238216 237214 20482528+ 99578304 99072823+ 83 f 8e

Id

System Linux W95 Ext'd (LBA) Linux LVM

Utilizamos a opo [d] para apagar a partio 6 do dispositivo /dev/hda. Agora vamos criar uma nova partio no espao no particionado, logo depois vamos modificar seu tipo para 82 (Partio SWAP).
Comando (m para ajuda): n Comando - ao l lgica (5 ou superior) p partio primria (1-4) l Primeiro cilindro (237214-238216, default 237214): Using default value 237214

___________________________________________________________________________ Pg. 151

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
ltimo cilindro ou +tamanho ou +tamanho M ou +tamanho K (237214-238216, default 238216): Using default value 238216 Comando (m para ajuda): p Disk /dev/hda: 122.9 GB, 122942324736 bytes 16 heads, 63 sectors/track, 238216 cylinders Units = cilindros of 1008 * 512 = 516096 bytes Dispositivo Boot Start End Blocks Id System /dev/hda1 * 1 40640 20482528+ 83 Linux /dev/hda2 40641 238216 99578304 f W95 Ext'd (LBA) /dev/hda5 40641 237214 99072823+ 8e Linux LVM /dev/hda6 237214 238216 505102+ 83 Linux Comando (m para ajuda): t Nmero da partio (1-6): 6 Cdigo hexadecimal (digite L para listar os cdigos): 82 O tipo da partio 6 foi alterado para 82 (Linux swap / Solaris) Comando (m para ajuda): p Disk /dev/hda: 122.9 GB, 122942324736 bytes 16 heads, 63 sectors/track, 238216 cylinders Units = cilindros of 1008 * 512 = 516096 bytes Dispositivo Boot Start End Blocks Id System /dev/hda1 * 1 40640 20482528+ 83 Linux /dev/hda2 40641 238216 99578304 f W95 Ext'd (LBA) /dev/hda5 40641 237214 99072823+ 8e Linux LVM /dev/hda6 237214 238216 505102+ 82 Linux swap / Solaris Comando (m para ajuda): q

Ao criarmos uma nova partio, o fdisk nos questiona, se possvel, sobre qual ser o tipo de partio (primria, extendida ou lgica), ou no pergunta quando a nica alternativa for lgica. Tambm somos questionados sobre o tamanho desejado da partio, com base em qual setor do disco ela comea e qual ela termina. Geralmente o setor de incio no preocupao, pois o fdisk assume o primeiro livre, o ltimo, caso no queiramos ocupar todo o espao disponvel, pode ser especificado em megabytes, por exemplo, no formato +XXXM, onde XXX o tamanho desejado em MB para a partio.

Sistemas de arquivos
Quando j se tem um espao particionado, ele ainda no est pronto para receber dados, pois precisa de um sistema de arquivos. Um sistema de arquivos prepara o terreno da partio para que ela possa receber dados (arquivos e diretrios), pois o sistema de arquivos que gerencia a localizao dos arquivos na partio. Ele faz isso subdividindo a determinada partio em blocos menores denominados clusters. No Linux, os sistemas de arquivos so, na sua maioria, baseados em inodes. Inodes so uma espcie de ndice numrico para os arquivos no sistema. O Linux compatvel com uma vasta gama de sistemas de arquivos, at mesmo de outros sistemas, como FAT32 ou NTFS. Mas os principais sistemas de arquivos nativos do Linux so: ext2, ext3 e reiserfs.

___________________________________________________________________________ Pg. 152

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Antes de prosseguir, preciso conhecer um pouco sobre cada um desses sistemas de arquivos para que possamos selecionar qual melhor se encaixa em determinada situao.

O sistema de arquivos ext2: O incio de tudo


Esta a segunda verso do sistema de arquivos extendido do Linux. A primeira que fez sucesso. o sistema de arquivos bsico para Linux, suporta quotas, acl's, etc. Mas tem um grande problema que mais tarde foi suprido pelo ext3: O sistema de arquivos precisava ser verificado sempre que havia uma queda de energia. Esse problema se torna crtico e serviu como obstculo para o Linux em grandes corporaes e data centers, pois o sistema perdia muito tempo durante a inicializao para a verificao. E quanto maior eram as parties, mais tempo era perdido.

O sistema de arquivos ext3: A revoluo


Funciona de forma semelhante ao ext2. Internamente, so at muito parecidos, at compatveis entre si. A grande diferena que o ext3 corrige o maior problema do ext2 com um recurso chamado journaling.

Funcionamento do journaling
O journaling um recurso presente em diversos sistemas de arquivos, no s no ext3. Quando um sistema de arquivos conta com journaling, todos os dados que entram na fila de escrita so anotados no journaling antes da operao (alguns sistemas adicionam outros diferenciais mais complicados, mas isso no vem ao caso agora). Quando a operao de cada um deles concluda, os dados so removidos do journaling. Resumidamente, o journaling armazena informaes sobre o as operaes de escrita que esto para ocorrer. Caso ocorra uma queda de energia ou qualquer outra coisa que venha a parar o sistema no meio de uma operao de escrita, ao ser reiniciado, o sistema de arquivos verifica as informaes que ficaram no journaling e ento somente as reas afetadas por essas operaes marcadas no journaling que sero verificadas pelo utilitrio fsck. O journaling no torna as operaes de escrita mais lentas a ponto de causar perca de performance que justifique o ganho de confiabilidade. importante lembrar que o journaling desses sistemas de arquivos por padro convive na mesma partio que os dados, e ocupa um determinado espao para isso.

O sistema de arquivos reiserfs: Nascido para ser rpido


Esse sistema de arquivos s se assemelha com o ext2/3 pelo fato de serem ambos sistemas de arquivos, pois internamente eles so bem distintos. ___________________________________________________________________________ Pg. 153

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes O reiserfs utiliza um algoritmo interno (que geralmente o chamado r5, r6 ou o rupasov.) para ordenar os nomes de arquivos pelo sistema. O que o torna muito rpido com arquivos pequenos e uma grande quantidade de arquivos no mesmo sistema. Ele tambm conta com journaling, como o ext3.

Criando um sistema de arquivos


Utilizamos o comando mkfs para criar sistemas de arquivos em parties ou outros dispositivos de blocos (como um disquete, por exemplo). O mkfs possui um sub-comando para cada sistema de arquivos suportado pela distribuio. Por exemplo, para criar sistemas de arquivos ext3, utilizamos o comando mkfs.ext3, j para reiserfs, utilizamos mkfs.reiserfs. Vamos utilizar um disquete de 1.44 para nosso exemplo. Antes de se criar um sistema de arquivos num disquete, preciso format-lo com o comando fdformat. Levando em considerao que queremos formatar a unidade /dev/fd0, utilizamos:
# fdformat -n /dev/fd0

A opo -n instrui ao utilitrio para no verificar por bad-blocks no disquete. Agora, para formatar o disquete com o sistema de arquivos ext2, utilizamos:
# mkfs.ext2 /dev/fd0

Esse passo exatamente igual para parties, basta apontar para a partio que deseja formatar, como /dev/hda6, por exemplo.

Definindo um ponto de montagem


O termo ponto de montagem precisa ser muito bem compreendido por todos que pretendem seguir carreira com sistemas Linux. O conceito bem simples de compreender, trata-se de associar algum diretrio (geralmente vazio) no sistema com um dispositivo de blocos, dessa forma, os dados enviados para este diretrio sero gravados no respectivo dispositivo de blocos. o tamanho do dispositivo que ir definir a quantidade mxima de dados que determinado diretrio (ponto de montagem) ir comportar. Saber definir corretamente pontos de montagem para parties de tamanhos corretos em reas crticas do sistema ajuda a diminuir possveis falhas no sistema, tornando-o mais seguro.

Essa associao entre um diretrio e um dispositivo de blocos recebe o nome de montagem. Para ___________________________________________________________________________ Pg. 154

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes cumprir essa tarefa, utilizamos o comando mount (consulte a man page para maiores detalhes sobre sistemas de arquivos). Sintaxe:
mount [opo] [dispositivo] [ponto de montagem]

Portanto, vamos utilizar o comando mount para montar o disquete recm-formatado no diretrio /floppy (ou /mnt/floppy em sistemas RedHat like)
# mount /dev/fd0 /floppy # df -h # mount

O comando df -h exibe informaes sobre os sistemas de arquivos montados, assim como a utilizao de cada um. O comando mount, sem nenhum argumento, mostra uma lista com detalhes dos sistemas de arquivos montados. Para desmontar um sistema de arquivos, basta executar /ponto/de/montagem ou umount dispositivo, conforme abaixo:
# umount /floppy

comando umount

O umount no permite desmontarmos dispositivos que estejam em uso. Portanto, no tente desmontar caso esteja no ponto de montagem do dispositivo desejado. S se pode remover o disquete da unidade quando ele estiver desmontado. Contrariar essa regra pode causar perda de dados. Isso ocorre porque os dados enviados para um ponto de montagem de um disquete ou alguns tipos de unidades de rede no so gravados imediatamente na mdia. Para forar um sincronismo momentneo e gravar os dados pendentes no disquete, utilize o comando sync, sem parmetros. O arquivo /etc/fstab Este arquivo serve de configurao para os pontos de montagem fixos do sistema. Toda vez que adicionarmos uma nova partio de dados no sistema, esse arquivo deve ser editado para as novas necessidades. Os pontos de montagem so definidos um por linha nesse arquivo, da seguinte forma:
/dev/hda1 / reiserfs defaults 0 1

So 6 colunas que devem estar preenchidas para que a entrada funcione. Da primeira para a ltima, os significados das colunas so: Dispositivo de bloco, ponto de montagem, sistema de arquivos, opes de montagem (consulte a man page para as opes disponveis para cada sistema de arquivos), dump (Se o dispositivo pode ou no ter backup atravs do dump) e o nvel de passagem. Nvel de passagem define em que ordem os sistemas de arquivos devem ser verificados pela ferramenta fsck durante a inicializao, do menos para o maior. O valor 0 desabilita a checagem. ___________________________________________________________________________ Pg. 155

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Todo ponto de montagem presente nesse arquivo pode ser montado com menos opes, pois o mount automaticamente busca as outras opes no arquivo.

Verificando a integridade de sistemas de arquivos


Para verificar a integridade de um sistema de arquivos no Linux, utilizamos a ferramenta fsck. ATENO O fsck no deve ser utilizado em sistemas de arquivos montados em modo de leitura e escrita. Isso pode causar danos irreversveis eles. Sintaxe:
fsck [opes] dispositivos

Tabela de parmetros -C Exibe progresso da verificao. -A Verifica todos os dispositivos encontrados em /etc/fstab. Utilizado junto opo -A. Diz ao fsck para ignorar a verificao do -R dispositivo que contenha o sistema de arquivos raiz. Modo verbose. Exibe mais informaes sobre os comandos sendo -V executados. Fora o fsck a rodar interativamente. Pedindo confirmaes para todas -r as questes. Responde yes (Sim) para todas as questes automaticamente. Utilize -y com cuidado. Exemplo:
# fsck -y /dev/fd0

Gerenciando quotas de sistemas de arquivos


As quotas de sistemas de arquivos existem para que o administrador possa limitar a utilizao do recurso mais difcil de se prever em um ambiente computacional: o armazenamento. Elas no vm habilitadas por padro, s o que precisamos possuir um kernel, um sistema de arquivos que suporte quotas e um utilitrio para gerenciar quotas. O ext2 e 3 suportam quotas. O suporte a quotas do reiserfs ainda no est adicionado nos kernel's padro do Linux, mas existem patches na internet que possibilitam isso. Partindo do princpio que o o sistema j possuam uma partio com suporte a quotas e um kernel tambm com suporte, basta instalar o utilitrio que permite gerenciarmos as quotas. No Debian, o pacote que prov esse suporte chama-se quota, portanto, um apt-get install quota deve resolver o problema. ___________________________________________________________________________ Pg. 156

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Habilitando as quotas
O primeiro passo habilitar as quotas, que podem ser por usurios ou por grupos, no respectivo ponto de montagem em /etc/fstab. Para habilitar quotas para usurios, adicione a opo usrquota ao ponto de montagem. Para grupos, a opo grpquota. Abaixo adicionamos as duas opes uma entrada do arquivo /etc/fstab:
/dev/sdb1 /home ext3 defaults,usrquota,grpquota 0 1

Agora basta montar e habilitar finalmente as quotas para o ponto de montagem.


# mount /home # quotacheck -acvug quotacheck: Scanning /dev/sdb1 [/home] done quotacheck: Checked 3 directories and 20 files quotacheck: Old file not found. quotacheck: Old file not found.

Este ltimo comando deve ser rodado periodicamente para garantir a integridade das quotas.

Configurando quotas p/ usurios e grupos


Contamos com o utilitrio edquota para configurar as quotas. Para editar as quotas de um usurio, utilizamos:
# edquota -u fulano Disk quotas for user fulano (uid 1000): Filesystem blocks soft /dev/sdb1 84 0

hard 0

inodes 21

soft 0

hard 0

Ao executar o comando, entramos em uma espcie de edio de arquivo, onde podemos visualizar o quanto em blocos (mltiplo de 1024bytes, ou 1KB) e inodes o usurio est consumindo e definir dois limites para ambos: O soft limit e o hard limit. O soft limit costuma ser um limite inferior e prximo ao limite mximo de utilizao de espao de armazenamento. Quando um usurio atinge seu soft-limit, desde que ainda esteja abaixo do hard-limit, ele entra em um perodo chamado grace time, que por padro 7 dias, mas pode ser modificado com o comando edquota -t. O hard-limit o limite mximo de utilizao de armazenamento. Os limites soft e hard existem tanto para a utilizao de espao em quanto para a utilizao de inodes, como podem ver no arquivo de quota do usurio. Para editar as quotas para um grupo, utilizamos: edquota -g grupo disco

Verificando as quotas
___________________________________________________________________________ Pg. 157

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Para listar a utilizao das quotas, utilizamos o comando repquota pontos de montagem com quotas habilitadas).
-a

(Mostra de todos os

Para garantir a correta integridade das quotas, sempre execute o comando quotacheck -av.

Adicionando uma nova swap


necessrio aprender a adicionar uma nova swap no sistema. Mas antes de mais nada, voc sabe o que uma swap? Uma partio swap um espao de troca que completa o sistema de memria virtual do Linux, junto com a memria ram e as memrias cache do(s) processador(es). A soma de todas essas memrias o que forma a memria virtual, que o que fica visvel para os processos em execuo, e o sistema operacional cuida de definir onde escrever fisicamente os dados, na memria ram ou na swap. No Linux, isso funciona da seguinte forma: Os dados que os programas requerem da memria virtual so sempre providos da memria ram ou cache. Caso algum programa requisite dados que estejam numa partio swap, esses dados so trocados por dados ociosos na memria ram. Por isso que o tamanho da swap deve ser no mnimo igual a memria ram. Algumas vezes, pode ser necessrio adicionar mais espao de swap a um sistema a fim de aumentar sua memria virtual, se bem que isso no uma boa prtica, o melhor mesmo adicionar mais memria ram ao sistema. Existem duas maneiras de adicionarmos swap no sistema: atravs de 1 nova partio swap (o que geralmente difcil, pois nem sempre h espao em disco disponvel) ou atravs de um arquivo de swap, que trata-se de um arquivo especial situado em um sistema de arquivos (ext3 por exemplo) montado. Como os procedimentos so praticamente os mesmos para os dois casos, iremos optar pelo modo de arquivo. Primeiro precisamos criar um arquivo vazio que seja do tamanho desejado para a swap (confuso no?), veja como fcil:
# dd if=/dev/zero of=/swap bs=1024 count=128000 128000+0 registros de entrada 128000+0 registros de sada

A funo do comando dd copiar bits de um lado (if) para outro (of). Estamos tirando bits de / dev/zero (que um dispositivo especial que serve esse propsito) e os enviando para o arquivo /swap, com 128000 blocos de 1024 (1KB) de tamanho cada um. Faa as contas e descubra o tamanho de nosso futuro arquivo de swap.
# mkswap /swap Setting up swapspace version 1, size = 131067904 bytes # cat /proc/swaps

___________________________________________________________________________ Pg. 158

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
Filename /dev/sda1 Type partition Size 64256 Used 2244 Priority -1

Utilizamos o comando mkswap para formatar o arquivo /swap no formato de swap. O arquivo /proc/swaps nos d informaes sobre quais dispositivos de swap esto ativos no momento. Repare que o arquivo ainda no est listado.
# swapon /swap # cat /proc/swaps Filename /dev/sda1 /swap

Type partition file

Size 64256 127992

Used 2244 0

Priority -1 -2

Agora sim, aps utilizar o comando swapon finalmente ativamos nosso arquivo de swap. Vejamos abaixo como desabilitar uma swap:
# swapoff /swap # cat /proc/swaps Filename /dev/sda1 Type partition Size 64256 Used 2244 Priority -1

Pronto. muito simples: swapon liga a swap e swapoff desliga. Observao Para ativar uma swap na inicializao, configure-a no arquivo /etc/fstab.

___________________________________________________________________________ Pg. 159

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

PROCESSO DE INICIALIZAO

As riquezas granjeiam muitos amigos, mas ao pobre, o seu prprio amigo o deixa
Provrbios 19.4

importante compreender tudo que envolve o processo de inicializao de um sistema Linux. Isso ajuda muito quando for preciso diagnosticar algum problema durante a inicializao, por exemplo.
drive de disco fle xv el

drive de CD-ROM

processador

chip CMOS
disco rgido

conectores

BIOS I OS

mdulos de memria RAM

placas de expanso

O processo de inicializao consiste basicamente em 3 Etapas: Inicializao do hardware pela BIOS, carregamento do gestor de boot (responsvel por carregar o kernel) e os processos de init. A inicializao do hardware feita pela bios consiste no POST (Power On Self Test) e na busca de informaes de boot no MBR (Master Boot Record) do dispositivo que estiver configurado como inicializvel na BIOS.

___________________________________________________________________________ Pg. 160

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Gerenciadores de boot
Um gerenciador um software que geralmente fica instalado no MBR de um disco rgido e tem a finalidade de gerenciar a carga de sistemas operacionais. No caso do Linux, o gestor de boot tem a misso de carregar o kernel do para a memria e entregar o comando para o sistema operacional. Essa etapa do processo exige que o administrador tenha conhecimento sobre um gestor de boot no Linux. Existem 2 gestores de boot mais famosos para Linux: o lilo e o grub.

Lilo
Esse gestor de boot bem maduro e oferece configurao simples. A maioria das distribuies j optou ou ainda opta por ele, pois algumas j esto definindo o grub como gestor de boot padro. Abordaremos uma configurao bsica do lilo, que permita o sistema inicializar e cumprir seu dever.

Configurando o lilo
A configurao do lilo consiste em apenas 1 arquivo, o /etc/lilo.conf. nesse arquivo que definimos as opes que desejamos para o boot. Seguem um exemplo de um tpico lilo.conf:
lba32 boot=/dev/sda root=/dev/sda2 install=/boot/boot-menu.b map=/boot/map delay=20 vga=normal append=pci=bios default=Linux image=/vmlinuz label=Linux read-only

A opo lba32 diz ao lilo que o sistema est utilizando o modo de endereamento de disco LBA. A opo boot especifica em qual dispositivo instalar o gestor de boot. A opo root configura qual o dispositivo que contm o sistema de arquivos raiz do sistema. O gestor de boot precisa saber disso para que seja possvel localizar o programa /sbin/init, necessrio para dar continuidade ao processo de inicializao. A opo install especifica qual ser o arquivo binrio do gestor de boot que dever ser instalado. O lilo costuma contar com 3, todos dentro do diretrio /boot: bootmenu.b, boot-text.b e boot.b. A diferena entre eles o menu que aparece na inicializao. Se essa opo for omitida, o lilo assume /boot/boot.b. A opo map especifica o caminho para o arquivo de mapa de dos dispositivos. Esse arquivo j ___________________________________________________________________________ Pg. 161

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes acompanha o lilo e no deve ser preocupao. A opo delay especifica o tempo, em dcimos de segundos que o lilo aguardar at carregar a imagem padro. A opo vga configura qual ser a resoluo do console aps carregar o kernel. Se o seu kernel suportar framebuffer, tente valores como vga=771 (800x600), ou vga=773 (1024x768). A opo append permite passarmos parmetros de inicializao para o kernel. A opo default indica qual ser a imagem padro. Podem existir mais de uma entrada do tipo image no arquivo. Cada uma delas refere-se a um sistema operacional (podem ser vrios kernel's para o mesmo sistema). Essa opo aponta para o arquivo de kernel do Linux, que nesse caso aponta para um link simblico presente em todos os sistemas Debian (/vmlinuz). Aps editar o arquivo conforme suas necessidades, podemos test-lo, antes de mais nada, com o comando:
# lilo -t Added Linux * The boot sector and the map file have *NOT* been altered.

Uma vez que o comando no tenha apresentado nenhum erro, podemos prosseguir com a instalao do gestor de boot, basta digitar o comando:
# lilo Added Linux *

Nesse momento, o lilo leu as configuraes do arquivo /etc/lilo.conf e gravou no dispositivo especificado na opo boot. Agora basta reiniciar o sistema e testar.

Restaurando o setor de boot


Sempre que o lilo altera o setor de boot do disco (O MBR por exemplo), feita uma cpia do original no arquivo /boot/boot.0300. Basta retornar esse arquivo para a MBR que tudo estar resolvido. Lembrando que a MBR fica localizada no incio do HD, mais especificamente nos primeiros 512bytes. Podemos utilizar o comando dd para tal faanha:
dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1

___________________________________________________________________________ Pg. 162

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

GRUB
GRUB um gestor de boot mais recente com mais recursos que o lilo. A principal diferena entre o lilo e o grub, alm dos arquivos de configurao, que o grub no requer que o setor de boot seja regravado sempre que modifique alguma configurao. Os arquivos de configurao do grub ficam localizados no diretrio /boot/grub por padro. ATENO O grub no costuma vir instalado por padro em algumas distribuies. Se for esse o caso, instale o pacote que provm o grub para sua distribuio. No Debian, o pacote se chama grub. O principal arquivo de configurao o /boot/grub/menu.lst, onde definimos a aparncia e as opes disponveis no gestor de boot. Segue um exemplo de um arquivo /boot/grub/menu.lst:
default=0 timeout=10 splashimage=(hd1,0)/grub/splash.xpm.gz title Primeira Opo root (hd1,0) kernel /arquivo_do_kernel ro vga=771 root=/dev/hda2 initrd /arquivo_da_initrd.img title Segunda Opo root (hd1,0) kernel /arquivo_do_kernel2 ro vga=771 root=/dev/hda2 initrd /arquivo_da_initrd-2.img

As 3 primeiras linhas contemplam a seo global do arquivo, e definem, respectivamente, qual ser a opo padro de inicializao (Conta-se a partir do 0), quanto tempo (em segundos) devese esperar por interao do usurio at que seja carregada a opo padro, e qual o arquivo de imagem que ser mostrado na tela do grub. As outras entradas do arquivo so as entradas de boot, que definem as opes que ficam selecionveis no menu do grub. Cada uma dessas entradas consiste em um bloco de configurao que comea com a diretiva image. O exemplo acima possui 2 dessas entradas. Vamos analisar as opes presente nesse tipo de entrada:
title Primeira Opo root (hd0,0) kernel /arquivo_do_kernel ro vga=771 root=/dev/hda2 initrd /arquivo_da_initrd.img

Todo o texto localizado aps a opo title o texto que ser exibido no menu de seleo do grub. Para que possamos especificar caminhos de arquivos nas prximas opes do grub, precisamos definir qual ser a partio que o grub ir procurar os dados; fazemos isso com a opo root. Repare que a partio foi especificada de uma maneira proprietria do grub: (hd0,0). Isso acontece porque o grub utiliza uma nomenclatura prpria de dispositivos para facilitar sua configurao. ___________________________________________________________________________ Pg. 163

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Vejamos na tabela abaixo como o grub se comporta nesse aspecto: Sistema de dispositivos do GRUB (hd0) Primeiro disco rgido disponvel (hda ou sda) (hd0,0) Primeira partio do primeiro disco disponvel (hda1 ou sda1) (fd0) /dev/fd0 (hd3,2) Terceira partio do quarto disco rgido (hdd3 ou sdd3) Caso o sistema possua discos de tecnologia diferentes associados, como SCSI e IDE, pode ser necessrio editar o arquivo /boot/grub/ device.map para definir quais sero os respectivos dispositivos no grub.

O parmetro kernel especifica qual ser o arquivo do kernel associado com aquela entrada de boot, lembrando que a principal finalidade de um gestor de boot no Linux carregar um Kernel e entregar o restante do processo de inicializao ao sistema operacional recm-carregado. Repare que so passados alguns parmetros de inicializao para o kernel (todos esses na mesma linha). O mais importante desses parmetros o parmetro root, que especifica qual ser a partio que contm o sistema de arquivos raiz, pois l onde o kernel ir procurar pelo programa /sbin/init, que o prximo passo do processo de inicializao. s vezes necessrio especificar a opo initrd, que aponta para um arquivo de initrd para o respectivo kernel. Uma initrd um arquivo que contm mdulos necessrios para que o kernel consiga enxergar o restante do sistema de arquivos e dar procedncia ao processo de inicializao. Exemplos desses mdulos so controladoras de disco e sistemas de arquivos.

Instalando o GRUB no MBR


Para gravar o sistema do grub no MBR, contamos com o utilitrio grub-install, que bem simples de utilizar, basta especificar o dispositivo em que ser gravado o grub, dessa forma:
# grub-install /dev/hda

Isso instalar o grub no MBR do disco rgido. Com o grub instalado e tudo configurado corretamente, o usurio deve ser presenteado com um menu para a seleo das entradas de boot configuradas no arquivo /boot/grub/menu.lst. Neste menu, podemos editar temporariamente as opes das entradas de inicializao pressionando a tecla [E] sobre uma delas. As outras teclas de navegao so mostradas no rodap da tela. ___________________________________________________________________________ Pg. 164

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

Backup do MBR e da tabela de parties


Para fazer um backup do MBR utilize o seguinte comando:
# dd if=/dev/sda of=/backup_mbr bs=512 count=1

Para restaurar faa o procemento reverso:


# dd if=/backup_mbr of=/dev/sda bs=512 count=1

O processo de init
A terceira etapa de inicializao se d incio assim que o gestor de boot consegue carregar o kernel e passa o controle ao sistema operacional (O kernel...) do restante do processo. A misso agora configurar os dispositivos do sistema e inicializar os programas que estiverem marcados para tal. Logo aps o kernel ser carregado, ele tenta montar como somente leitura a partio raiz do sistema, que foi especificada atravs do parmetro root durante a inicializao pelo gestor de boot. Assim que a partio raiz estiver montada, o kernel procura e executa o programa /sbin/init, com base nas opes encontradas no arquivo /etc/inittab, para inicialmente definir o Nvel de execuo do Kernel.

O que so runlevels (Nveis de execuo)?


O Kernel do Linux trabalha com os chamados nveis de execuo, ou runlevels, que uma maneira organizada e robusta de definir que tipo de trabalho ser exercido com o sistema. O Linux conta com 7 nveis de execuo, contados de 0 a 6. Cada nvel instrui o Kernel a agir de uma forma diferente, conforme tabela abaixo: Nveis de Execuo 0 Modo shutdown. Envia um sinal para o Kernel finalizar e desligar o sistema. Modo Monousurio. Desabilita a habilidade multiusurio do Kernel; muito utilizado em manutenes do sistema, pois s permite que um usurio utilize o sistema de cada vez (o root). Note que isso tambm impossibilita que certos programas entrem em execuo. A maior parte dos servios esto ativos, com exceo dos processos de rede (como nfs, nis, named e httpd).No permitido acesso remoto. Modo multiusurio sem carregar interface grfica. O administrador do sistema pode definir uma configurao alternativa.

2 3 4

___________________________________________________________________________ Pg. 165

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Semelhante ao nvel 3, com todos os processo ativos, porm com uma interface grfica de logon Modo reboot. Envia um sinal para o Kernel finalizar e reiniciar o 6 sistema. de extrema importncia que o administrador conhea bem quais so e para que serve os nveis de execuo. Podemos, a qualquer momento, utilizar o comando runlevel para descobrir que o nvel de execuo atual e tambm utilizar o comando init <nvel desejado> para instruir o kernel a trocar o nvel de execuo atual. 5

O arquivo /etc/inittab
Este , logo aps o prprio kernel, o arquivo mais importante dessa etapa da inicializao. nele que se encontram os parmetros que guiam o sistema por todo o restante do processo. Cada entrada nesse arquivo tem o seguinte aspecto:
identificao:runlevels:ao:comando

Identificao uma string qualquer, geralmente pequena (1 ou 2 caracteres) e que no se deve repetir para nenhuma outra entrada no arquivo. Sua finalidade identificar a entrada no arquivo. O campo runlevels especifica em que nveis de execuo a linha deve ser analisada. J o campo ao especifica como deve ser o comportamento do comando executado no ltimo campo. O campo ao aceita palavras-chave que determinam essa caracterstica. Exemplos de palavras-chave so: respawn diz ao init para reiniciar o comando quando ele for finalizado; boot instrui o init a inicializar o processo durante o boot, ignorando o campo runlevels. Vejamos um exemplo do /etc/inittab em um sistema Debian tpico:
# grep ^[^#] /etc/inittab |nl 1 id:2:initdefault: 2 si::sysinit:/etc/init.d/rcS 3 ~~:S:wait:/sbin/sulogin 4 l0:0:wait:/etc/init.d/rc 0 5 l1:1:wait:/etc/init.d/rc 1 6 l2:2:wait:/etc/init.d/rc 2 7 l3:3:wait:/etc/init.d/rc 3 8 l4:4:wait:/etc/init.d/rc 4 9 l5:5:wait:/etc/init.d/rc 5 10 l6:6:wait:/etc/init.d/rc 6

___________________________________________________________________________ Pg. 166

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
11 12 13 14 15 16 17 18 19 20 21 z6:6:respawn:/sbin/sulogin ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now pf::powerwait:/etc/init.d/powerfail start pn::powerfailnow:/etc/init.d/powerfail now po::powerokwait:/etc/init.d/powerfail stop 1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6

As linhas foram numeradas e os comentrios foram suprimidos para facilitar a leitura. O programa init l uma por uma as entradas e executa as operaes adequadas. Na linha 1 definido o nvel de execuo padro do sistema, na segunda linha invocado o script /etc/init.d/rcS, que desencadeia a estrutura de inicializao dos scripts cujo nome inicie com S no diretrio /etc/rcS.d; A linha 3 um adicional de segurana que impede acesso ao sistema no modo monousurio (O runlevel S igual 1) sem autenticao como root. As linhas 4 10 do procedimento a inicializao dos servios do sistema para cada runlevel (Repare que comente um desses ser executado, pois cada um equivale a um runlevel). Mais detalhes sobre esse processo em seguida. Na linha 12 configurado um trap para a seqncia de teclas [CONTROL]+[ALT]+[DEL], onde o comando shutdown ser invocado para reiniciar o PC. Essa linha pode ser comentada ou editada para as necessidades do administrador. As linhas 13, 14 e 15 configuram como o sistema deve agir no caso de falta de energia3. As ltimas linhas do arquivo configuram os terminais que estaro disponveis aps a inicializao. Repare a palavra-chave respawn nessas linhas... ela responsvel por disponibilizar novamente outro terminal quando samos de um.

Estrutura de inicializao de servios


Essa parte do processo de inicializao que requer mais ateno tem algumas diferenas principais entre algumas distribuies Linux. Basicamente, existem dois modelos de inicializao de servios: SysV e BSD. A maioria das distribuies utilizam o sistema SYSV como padro (RedHat, Debian, Suse, Mandrake, Conectiva, etc...), e so poucos os que utilizam o sistema BSD de inicializao (Somente o Slackware at onde conheo). Portanto, estudaremos o sistema SYSV nesse tpico. Nesse sistema de inicializao, aps ser definido o nvel de execuo atravs do arquivo /etc/inittab e o os scripts de configurao terem entrado em ao (Linhas 1 e 2 do arquivo), a entrada especfica do /etc/inittab cuidar de chamar o script /etc/init.d/rc.

___________________________________________________________________________ Pg. 167

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

O script /etc/init.d/rc
Esse script responsvel por executar, na ordem correta, os scripts contidos no diretrio de inicializao de servios do runlevel atual. simples saber qual esse diretrio. Existe 1 diretrio para cada nvel de execuo, onde devem estar contidos links para os reais scripts de inicializao para cada servio em / etc/init.d.

Os diretrios de inicializao de servios


Esses diretrios so, geralmente, /etc/rc?.d, onde ? o nmero do nvel de execuo. Por exemplo, para o nvel 2 de execuo, o diretrio /etc/rc2.d. O script executa, em ordem alfabtica, todos os arquivos que iniciam com S dentro do diretrio do respectivo nvel de execuo. Vejamos o contedo desse diretrio em um sistema real:
# cd /etc/rc2.d # ls -l lrwxrwxrwx 1 root root 18 2004-12-03 19:46 S10sysklogd -> ../init.d/sysklogd lrwxrwxrwx 1 root root 15 2004-12-03 19:46 S11klogd -> ../init.d/klogd lrwxrwxrwx 1 root root 26 2004-12-04 10:34 S19progress.service -> ../init.d/progress.service lrwxrwxrwx 1 root root 15 2004-12-04 10:34 S20acpid -> ../init.d/acpid lrwxrwxrwx 1 root root 14 2004-12-04 10:34 S20alsa -> ../init.d/alsa lrwxrwxrwx 1 root root 14 2004-12-04 10:34 S20apmd -> ../init.d/apmd lrwxrwxrwx 1 root root 18 2005-01-06 14:45 S20cpufreqd -> ../init.d/cpufreqd lrwxrwxrwx 1 root root 16 2004-12-21 22:47 S20cupsys -> ../init.d/cupsys lrwxrwxrwx 1 root root 16 2004-12-04 10:34 S20dbus-1 -> ../init.d/dbus-1 lrwxrwxrwx 1 root root 20 2004-12-04 10:37 S20irqbalance -> ../init.d/irqbalance lrwxrwxrwx 1 root root 17 2004-12-03 19:46 S20makedev -> ../init.d/makedev lrwxrwxrwx 1 root root 21 2004-12-04 10:34 S25progress.up -> ../init.d/progress.up lrwxrwxrwx 1 root root 14 2004-12-03 19:46 S89cron -> ../init.d/cron lrwxrwxrwx 1 root root 13 2004-12-04 10:36 S99gdm -> ../init.d/gdm lrwxrwxrwx 1 root root 19 2004-12-03 19:46 S99rmnologin -> ../init.d/rmnologin lrwxrwxrwx 1 root root 23 2004-12-03 19:46 S99stop-bootlogd -> ../init.d/stopbootlogd

O comando ls -l j mostra a lista na mesma ordem de execuo, e podemos ter uma base sobre o que ocorre nessa parte da inicializao. Repare que todas as entradas so links simblicos para os scripts contidos em /etc/init.d. O nmero contido no nome dado aos links para cada servio conhecido como nmero de prioridade do servio, pois por estar em ordem alfabtica, os servios com nmero de prioridade menor executaro primeiro.

___________________________________________________________________________ Pg. 168

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

COMPACTADORES E ARQUIVADORES

O que trabalha com mo displicente empobrece, mas a mo dos diligentes enriquece


Provrbios 10.4

Um termo muito comum no mundo GNU/Linux compactadores.So um grupo de ferramentas especializadas em compactar arquivos, tal como o Winzip2 faz no Windows. Iremos aprender a distino entre essas ferramentas e as caractersticas de cada algoritmo de compresso que eles utilizam. Os principais compactadores existentes no GNU/Linux so: gzip e bzip2. Veremos tambm o que significa o termo arquivadores e porque a ferramenta GNU tar um deles, e como ela se relaciona com os compactadores, possibilitando a execuo de backups do sistema.

Compactadores
Compactadores so os programas que apenas compactam os arquivos. A grande diferena entre compactadores e arquivadores deve ser bem observada: Os compactadores no agrupam diversos arquivos em um; Somente compactam separadamente.

A ferramenta gzip
O gzip uma das principais ferramentas GNU. Ele surgiu para ser o zip do Linux, porm, seu algoritmo de compresso no compatvel com o algoritmo do zip, originalmente desenvolvido p/ DOS e utilizado at hoje em sistemas de 32 bits Microsoft (Winzip, por exemplo). Gzip significa GNU zip, e seu algoritmo de compresso j bem superior ao do zip. Sintaxe:
gzip [opo] [-S sufixo] [arquivo...]

O sufixo, nesse caso, o texto que ser agregado ao final do nome do arquivo aps compactado. O padro (se ignorarmos o sufixo) .gz, uma espcie de extenso que identificaria o arquivo como sendo compactado pelo gzip. ATENO Aps compactado, o arquivo original sobrescrito, no restando uma cpia compactada no sistema. Somente depois de descompactar que o arquivo volta e o compactado desaparece. Tabela de parmetros -c --stdout Escreve na sada padro, no altera o arquivo original. -d --decompress Descompacta o arquivo. -f --force Fora a operao. -h --help Exibe a ajuda. -l --list Lista o contedo de um arquivo compactado. -L --license Mostra a Licena do programa. -n --no-name No salva ou restaura o nome original e tempos de acesso do arquivo. -N --name Salva ou restaura o nome original e tempos de acesso do arquivo. ___________________________________________________________________________ Pg. 169

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes -q --quiet -r --recursive -t --test -v --verbose -V --version -1 --fast -9 --best --rsyncable Exemplo A:
$ $ $ $ mkdir /tmp/teste-gzip ; cp -var /etc/*.conf /tmp/teste-gzip gzip -v -5 /tmp/teste-gzip/*.conf ls /tmp/teste-gzip gzip -v -d /tmp/teste-gzip/*.gz

Exibe menos informaes na tela. Age recursivamente em diretrios (No compacta diretrios, somente os arquivos contidos nele recursivamente). Testa a integridade de um arquivo compactado. Exibe mais informaes na tela. Mostra a verso do programa. Utiliza algoritmo de compresso simples. mais rpido, porm compacta menos. Utiliza algoritmo de compresso avanado. mais demorado, porm compacta melhor. Cria arquivos compatveis com o utilitrio rsync.

Exemplo B:
$ cat /etc/passwd |gzip > ~/passwd.gz $ file ~/passwd.gz ~/passwd.gz: gzip compressed data, from Unix

Exemplo muito interessante sobre como trabalhar com fluxos. Enviamos o fluxo de texto do arquivo /etc/passwd para a stdout e emendamos com o gzip atravs de um pipe. O gzip gera os dados em formato binrio para a sada padro dele, a qual redirecionamos para um arquivo de sada. possvel utilizar o comando gunzip para descompactar arquivos gzip tambm. Ele funciona como um gzip -d.

A ferramenta bzip2
Surgiu para ser o substituto do gzip. Serve ao mesmo propsito, porm possui um algoritmo de compresso muito mais eficiente, pois comprime muito mais. A diferena interna que o bzip2 trabalha com blocos de dados, por isso o b no incio do nome. Na verdade o bzip2 uma sute de ferramentas, que consiste em 4 programas: bzip2, bunzip2, bzcat e bzip2recover. O bzip2 o compactador em si, assim como o bunzip2 o descompactador. bzcat exibe o contedo de arquivos compactados pelo bzip2 e tambm serve para descompactar. O bzip2recover serve para recuperar arquivos bzip2 corrompidos. ___________________________________________________________________________ Pg. 170

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Sintaxe:
bzip2 [opes] [arquivos...] bunzip2 [-fkvsVL] [arquivos...] bzcat [-s] [arquivo...] bzip2recover arquivo

Tabela de parmetros -c --stdout Escreve na sada padro, no altera o arquivo original. -d --decompress Descompacta o arquivo. -f --force Fora a operao. -k --keep Mantm arquivos de entrada. -s --small Utiliza menos memria. -L --license Mostra a Licena do programa. -z --compress Fora compresso. -q --quiet Exibe menos informaes na tela. Age recursivamente em diretrios (No compacta diretrios, somente -r --recursive os arquivos contidos nele recursivamente). -t --test Testa a integridade de um arquivo compactado. -v --verbose Exibe mais informaes na tela. -V --version Mostra a verso do programa. Utiliza algoritmo de compresso simples. mais rpido, -1 --fast porm compacta menos. Utiliza algoritmo de compresso avanado. mais demorado, porm -9 --best compacta melhor. Exemplo:
$ $ $ $ mkdir /tmp/teste-bzip2 ; cp -var /etc/*.conf /tmp/teste-bzip2 bzip2 -v -5 /tmp/teste-bzip2/*.conf ls /tmp/teste-bzip2 bzip2 -v -d /tmp/teste-bzip2/*.bz2

Arquivadores
Arquivadores so programas capazes de juntar diversos arquivos e diretrios em um s arquivo. Os mais conhecidos para linux so as ferramentas GNU cpio e tar. Estudaremos aqui o tar.

A ferramenta tar
O tar a ferramenta de backup mais conhecida no mundo Linux. Ele capaz de arquivar diversos arquivos em um s, onde o arquivo de destino pode ser um simples arquivo no disco rgido ou uma unidade de fita, formando uma tima ferramenta de backup. Sintaxe:
tar [opes] [arquivos...]

___________________________________________________________________________ Pg. 171

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Tabela de parmetros Diz ao tar para criar um arquivo de backup, que deve ser especificado -c na opo -f. Instrui ao tar para extrair um arquivo tar, que tambm deve -x ser especificado pela opo -f. -t Testa arquivo tar, especificado pela opo -f. -v Modo verbose. Mostra mais informaes sobre a operao atual. Especifica qual o arquivo o tar ir trabalhar. No caso da opo -c, -f arquivo.tar caso no exista, o arquivo ser criado. Diz ao tar para preservar as permisses dos arquivos dentro do arquivo -p tar. Geralmente no necessrio, pois o tar costuma ter esse comportamento por padro. Instrui o tar a preservar a barra / no incio do nome dos arquivos. Por padro, o tar remove a / no incio dos nomes de -P arquivos que populem um arquivo tar, tornando-os todos os caminhos relativos. Ativa o algoritmo de compresso gzip no arquivo especificado pela -z opo -f. No pode ser utilizado em conjunto com a opo -j (algoritmo bzip2). Ativa o algoritmo de compresso bzip2 no arquivo -j especificado pela opo -f. No pode ser utilizado em conjunto com a opo -z (algoritmo gzip). -r Anexa arquivos no final de um arquivo tar. -u Atualiza o contedo de arquivos tar. -A Concatena outros arquivos tar em um arquivo tar. --help Exibe ajuda Exemplo:
# # # # # tar -cvf /tmp/backup.tar /etc mkdir /tmp/restore cd /tmp/restore/ tar -tvf /tmp/backup.tar tar -xpvf /tmp/backup.tar

Efetuamos o backup de todo o diretrio /etc no arquivo /tmp/backup.tar. Basta que o arquivo de destino seja um dispositivo de fita, como /dev/st0 por exemplo, para efetuarmos um backup em uma unidade de fita. Ao extrairmos o backup, foi criado o diretrio etc dentro do diretrio atual (/tmp/restore).

As famosas tarballs
Muita gente j deve ter ouvido falar de tarballs mas no sabe ao certo o que vem a ser uma delas, ou pelo menos no sabe como cri-las. As tarballs so simples de entender e de lidar, pois so arquivos normais do tar (Um arquivador....), compactados com algum algoritmo de compactao como gzip ou bzip2. Para lidar com tarballs, basta ativar a opo -z (gzip) ou j (bzip2) do tar. No exemplo abaixo, vamos fazer praticamente o mesmo que o exemplo anterior, ___________________________________________________________________________ Pg. 172

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes porm ativando um algoritmo de compactao. Exemplo A:
# # # # # tar -cvzf /tmp/backup.tar.gz /etc mkdir /tmp/restore cd /tmp/restore/ tar -tvzf /tmp/backup.tar.gz tar -xpvzf /tmp/backup.tar.gz

Repare que todas as operaes do tar somente foram acrescidas da opo -z, que ativa o algoritmo de compresso gzip, e utilizado inclusive junto da opo -t, que testa o arquivo tar. Quanto ao nome dos arquivos, de costume associar a extenso .tar.gz ou .tgz para arquivos arquivados pelo tar e compactados pelo algoritmo do gzip, e a extenso .tar.bz2 ou .tbz para arquivos arquivados pelo tar e compactados pelo algoritmo do bzip2. Exemplo B:
# # # # # tar -cvjf /tmp/backup.tar.bz2 /etc mkdir /tmp/restore cd /tmp/restore/ tar -tvjf /tmp/backup.tar.bz2 tar -xpvjf /tmp/backup.tar.bz2

___________________________________________________________________________ Pg. 173

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

SERVIDOR GRFICO X-WINDOW

Na multido das palavras no falta pecado, mas o que modera os seus lbios sbio
Provrbios 10.19

Comumente referenciado como Interface Grfica do Linux, o servidor grfico um componente muito complexo e importante do sistema. Atualmente existem 2 verses de servidor grfico para Linux: XFree86 e X.org. Ambos so configurados da mesma forma, e pelo menos at agora, no existem diferenas drsticas de configurao entre eles.

Funcionamento
A primeira coisa realmente importante nesse assunto saber distinguir o que vem a ser servidor grfico e gerenciador de janelas. O sistema X-WINDOW considerado um sistema cliente-servidor porque realmente ele . A funo do servidor grfico ter configurados ao menos os 4 dispositivos essenciais para gesto grfica (teclado, mouse, monitor e placa de vdeo) e disponibilizar acesso a esses recursos atravs de uma conexo de rede. Inclusive os processos grficos locais utilizam uma conexo de rede para que as aplicaes grficas (clientes do X-WINDOW) obtenham acesso aos 4 dispositivos.

Configurando o XFree86
O arquivo de configurao do XFree86 /etc/X11/XF86Config-4. definimos a resoluo, profundidade de cores e monitor, por exemplo. Vejamos um exemplo desse arquivo:
Section "Files" FontPath "unix/:7100" # local font server # if the local font server has problems, we can fal back on these FontPath "/usr/lib/X11/fonts/misc" FontPath "/usr/lib/X11/fonts/cyrillic" FontPath "/usr/lib/X11/fonts/100dpi/:unscaled" FontPath "/usr/lib/X11/fonts/75dpi/:unscaled" FontPath "/usr/lib/X11/fonts/Type1" FontPath "/usr/lib/X11/fonts/CID" FontPath "/usr/lib/X11/fonts/Speedo" FontPath "/usr/lib/X11/fonts/100dpi" FontPath "/usr/lib/X11/fonts/75dpi" EndSection Section "Module" # Load "GLcore" Load "bitmap" Load "dbe" Load "ddc"

nele

que

___________________________________________________________________________ Pg. 174

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
# Load "dri" Load "extmod" Load "freetype" # Load "glx" Load "int10" Load "record" Load "speedo" Load "type1" Load "vbe" EndSection Section "InputDevice" Identifier "Generic Keyboard" Driver "keyboard" Option "CoreKeyboard" Option "XkbRules" "xfree86" Option "XkbModel" "abnt2" Option "XkbLayout" "br" Option "XkbVariant" "abnt2" EndSection Section "InputDevice" Identifier "Configured Mouse" Driver "mouse" Option "CorePointer" Option "Device" "/dev/psaux" Option "Protocol" "PS/2" Option "Emulate3Buttons" "true" Option "ZAxisMapping" "4 5" EndSection Section "Device" Identifier "NVIDIA" Driver "nv" EndSection Section "Monitor" Identifier "Monitor Genrico" HorizSync 31.5-70 VertRefresh 50-120 Option "DPMS" EndSection Section "Screen" Identifier "Default Screen" Device "NVIDIA" Monitor "Monitor Genrico" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1152x864" EndSubSection EndSection Section "ServerLayout" Identifier "Default Layout" Screen "Default Screen" InputDevice "Generic Keyboard" InputDevice "Configured Mouse" EndSection

A configurao definida em sees, como InputDevice para teclado e mouse, Monitor para o monitor, Device para placa de vdeo e Screen para a aparncia da tela. ___________________________________________________________________________ Pg. 175

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes A seo ServerLayout define quais sees fazem parte da estrutura de configurao. Para configurar esse arquivo no Debian, o dpkg disponibiliza um timo helper. Digite: dpkg-reconfigure xserver-xfree86 para acion-lo.

Inicializando o XFree86
Aps configurado, j podemos utilizar o comando startx (nenhum outro servidor grfico deve estar rodando no momento) para inicializar o servidor grfico. Para se ter algo mais funcional, precisamos de um ambiente desktop completo (gerenciador de janelas) e um gerenciador de login. Para instalar os pacotes necessrios no Debian, utilize:
dselect install gnome-desktop-environment

Isso instalar os componentes principais do gnome junto com seu gerenciador de login, o gdm. Aps os pacotes instalados e configurados, basta iniciar o servio gdm para ter acesso a um ambiente grfico completo e funcional.

Acessando o XFree86 atravs da rede


Devido a natureza network do servidor grfico XFree86, possvel efetuar uma conexo a outro servidor grfico, permitindo que um aplicativo executado localmente utilize dos recursos grficos de outra mquina. Para habilitar tal caracterstica, preciso que o ip do host que tentar a conexo seja liberado no host de destino, com o comando:
# xhost +192.168.X.X

Onde 192.168.X.X o endereo IP do host que tentar a conexo com esta mquina. Agora, no host que originar a conexo, preciso exportar a varivel DISPLAY para que redirecione as chamadas grficas para o outro host. Vejamos:
$ echo $DISPLAY :0.0 $ export DISPLAY=192.168.Y.Y:0.0

Onde 192.168.Y.Y o ip do servidor ao qual pretende se conectar. A partir de agora, todo cliente grfico que for inicializado executado pelo servidor grfico no computador de destino. Faa o teste. nesse host ser

___________________________________________________________________________ Pg. 176

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

AGENDAMENTO DE TAREFAS

A bno do Senhor que enriquece; e no traz consigo dores


Provrbios 10.22

Na gama de conhecimento de um administrador de sistemas GNU/Linux essencial constar Agendamento de Tarefas, uma atividade muito importante que facilita bastante a vida de qualquer administrador. No Linux, contamos com diversos programas que lidam com agendamento de tarefas, mas o prin cipal deles o cron.

Cron
O cron um programa que roda em background (um daemon) e cuida de executar tarefas pragendadas por usurios do sistema periodicamente atravs das chamadas crontabs. Existem, basicamente, 3 maneiras diferentes de se agendar uma tarefa utilizando o cron. Pode- se editar diretamente o arquivo de configurao /etc/crontab, adicionar um script em um dos diretrios de agendamento do cron (/etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly e /etc/cron.d) ou atravs do comando crontab. Veremos as diferenas.

O arquivo /etc/crontab
Esse o arquivo principal de configurao do cron. Somente o usurio root tem permisso para editar esse arquivo diretamente. Esse arquivo pode receber 2 tipos de entradas: Variveis de ambiente que sero vlidas para os comandos agendados no CRON e entradas de agendamento, que devem seguir o padro abaixo:
m h d M s usuario comando

No exemplo acima, cada um dos 5 primeiros campos tem um significado que influencia diretamente na periodicidade do agendamento. Vejamos o significado de cada um desses campos: Significado dos campos m Minuto (0 a 60) h Hora (0 a 23) d Dia do ms (1 a 31) M Ms do ano (1 a 12) s Dia da semana (0 a 7, sendo que 0 e 7 domingo) Dessa forma, basta agendar uma linha de agendamento para cada evento desejado. Vamos verificar alguns exemplos de agendamentos:
35 0 * * *

Diariamente, s 0:35. ___________________________________________________________________________ Pg. 177

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
*/5 8-18 * * 1-5

De segunda a sexta, a cada 5 minutos durante o horrio comercial.


10,50 */2 1 3 *

A cada 2 horas, nos minutos 10 e 50, sempre no dia 1 de maro. ATENO Para que qualquer tipo de agendamento funcione, preciso que o daemon do cron (crond) esteja em execuo.

Diretrios de agendamento do cron


O cron possui agendamentos pr-configurados no arquivo /etc/crontab, cada um deles com uma periodicidade diferente. Cada uma dessas entradas tambm est associada a um diretrio diferente. Os diretrios so: /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly e /etc/cron.monthly, que executam, respectivamente, de hora em hora, diariamente, semanalmente e mensalmente os scripts l postos. Por exemplo. Para se ter um script de backup sendo executado diariamente pelo cron, possvel coloc-lo (ou at mesmo um link simblico) no diretrio /etc/cron.daily.

O diretrio /etc/cron.d
Tambm possvel agendar tarefas no cron criando-se arquivos de agendamento no diretrio /etc/cron.d. Estes arquivos devem seguir o mesmo formato que as entradas de agendamento do arquivo /etc/crontab.

Agendamentos definidos pelos usurios


Atravs do comando crontab, possvel que usurios comuns do sistema (Isso inclui o root) consigam agendar tarefas. As tarefas agendadas pelos usurios comuns do sistema s podem ser agendadas e visualizadas por eles mesmos e o root, sempre. Sintaxe:
crontab [-u usurio] arquivo crontab [-u usurio] { -e | -l | -r }

A opo -u permite que o root gerencie crontabs de outros usurios. A opo -e (edit) abre o modo de edio da crontab para o usurio. A opo -l (list) mostra a crontab do usurio na tela e a opo -r (release) limpa a respectiva crontab. Ao invocar o crontab com a opo -e, aberto o editor padro (geralmente o vim) para permitir editar o arquivo de crontab do usurio, que s pode ser editado dessa forma. ___________________________________________________________________________ Pg. 178

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes A grande diferena de se agendar tarefas dessa forma que no precisamos especificar a qual usurio o agendamento se refere na linha de configurao, pois a crontab inteira pertence a determinado usurio. Vejamos um exemplo:
$ crontab -e 0 0 * * * /home/usuario/bin/script.sh :wq crontab: installing new crontab $ crontab -l 0 0 * * * /home/apostila/bin/script.sh $ crontab -r $ crontab -l no crontab for usuario

Controle de acesso ao cron


O cron conta com um sistema de controle de acesso, que permite restringir quem tem permisses para agendar tarefas no sistema. Esse controle feito atravs de dois arquivos: /etc/cron.allow e /etc/cron.deny. Nenhum destes arquivos existe por padro. Caso o arquivo /etc/cron.allow exista, somente os usurios que estejam listados nele (um por linha) podero agendar tarefas com o cron (inclusive o root !!!). Caso esse arquivo no exista, mas existe o arquivo /etc/cron.deny, este servir de lista negra dos usurios que no tero acesso ao cron. Observao uma boa prtica de segurana criar um arquivo /etc/cron.allow para limitar e ter mior controle sobre quem ter acesso ao cron.

___________________________________________________________________________ Pg. 179

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

BIBLIOTECAS COMPARTILHADAS

O que lavra a sua terra se fartar de po; mas o que segue os ociosos se encher de pobreza
Provrbios 28.19

O sistema GNU/Linux estruturado de forma que bibliotecas de funes de cdigo presentes em determinados programas possam ser compartilhadas para utilizao em qualquer outro programa que saiba fazer uso delas, criando um repositrio de funes de cdigo. Imagine o programa A, que possui bibliotecas com funes de criao de objetos grficos na tela, como janelas, por exemplo. Agora imagine o programa B, que Oferece uma interface grfica para determinadas tarefas administrativas do sistema. Nesse caso, o programa A compartilha suas bibliotecas com o restante do sistema, e o programa B utiliza algumas delas para prover as funes de acesso a interface grfica. As bibliotecas compartilhadas so uma das maiores responsveis pelo sucesso das ferramentas Linux hoje em dia, pois permite que um programador junte caractersticas j existentes de outros programas suas criaes.

Trabalhando com bibliotecas compartilhadas


Apesar de parecer um termo complicado, trabalhar com bibliotecas compartilhadas extremamente simples. preciso saber em quais diretrios elas costumam estar, quais bibliotecas determinado binrio utilizam e saber adicionar novas bibliotecas no sistema.

Localizao das bibliotecas compartilhadas


Por padro, os programas instalados j adicionam as bibliotecas em seus devidos diretrios, que geralmente so: /lib, /usr/lib e /var/lib.

Listando Bibliotecas disponveis


Para listar todas as bibliotecas disponveis e a localizao de cada uma, utilize o comando:
# ldconfig -p

Esse comando mostrar uma lista gigante das bibliotecas.

Descobrindo quais bibliotecas um binrio utiliza


possvel saber quais bibliotecas compartilhadas determinado binrio necessita para funcionar. Basta utilizar o comando ldd, da seguinte forma:
# ldd /bin/tar librt.so.1 => /lib/tls/librt.so.1 (0xb7fd4000)

___________________________________________________________________________ Pg. 180

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes
libc.so.6 => /lib/tls/libc.so.6 (0xb7e9f000) libpthread.so.0 => /lib/tls/libpthread.so.0 (0xb7e90000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xb7fea000) Para uma listagem mais completa, adicione o parmetro -v ao comando ldd, veja: # ldd -v /bin/tar librt.so.1 => /lib/tls/librt.so.1 (0xb7fd4000) libc.so.6 => /lib/tls/libc.so.6 (0xb7e9f000) libpthread.so.0 => /lib/tls/libpthread.so.0 (0xb7e90000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xb7fea000) Version information: /bin/tar: librt.so.1 (GLIBC_2.2) => /lib/tls/librt.so.1 libc.so.6 (GLIBC_2.3) => /lib/tls/libc.so.6 libc.so.6 (GLIBC_2.2.3) => /lib/tls/libc.so.6 libc.so.6 (GLIBC_2.2) => /lib/tls/libc.so.6 libc.so.6 (GLIBC_2.1) => /lib/tls/libc.so.6 libc.so.6 (GLIBC_2.0) => /lib/tls/libc.so.6 /lib/tls/librt.so.1: libpthread.so.0 (GLIBC_2.0) => /lib/tls/libpthread.so.0 libpthread.so.0 (GLIBC_2.1) => /lib/tls/libpthread.so.0 libpthread.so.0 (GLIBC_PRIVATE) => /lib/tls/libpthread.so.0 libc.so.6 (GLIBC_2.1.3) => /lib/tls/libc.so.6 libc.so.6 (GLIBC_2.2) => /lib/tls/libc.so.6 libc.so.6 (GLIBC_2.0) => /lib/tls/libc.so.6 libc.so.6 (GLIBC_2.1) => /lib/tls/libc.so.6 libc.so.6 (GLIBC_2.3.2) => /lib/tls/libc.so.6 libc.so.6 (GLIBC_PRIVATE) => /lib/tls/libc.so.6 /lib/tls/libc.so.6: ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2 ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2 ld-linux.so.2 (GLIBC_2.0) => /lib/ld-linux.so.2 ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2 /lib/tls/libpthread.so.0: ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2 libc.so.6 (GLIBC_2.1.3) => /lib/tls/libc.so.6 libc.so.6 (GLIBC_2.1) => /lib/tls/libc.so.6 libc.so.6 (GLIBC_2.3.2) => /lib/tls/libc.so.6 libc.so.6 (GLIBC_2.0) => /lib/tls/libc.so.6 libc.so.6 (GLIBC_2.2) => /lib/tls/libc.so.6 libc.so.6 (GLIBC_2.1.2) => /lib/tls/libc.so.6 libc.so.6 (GLIBC_PRIVATE) => /lib/tls/libc.so.6

Adicionando novas bibliotecas ao sistema


Caso voc tenho criado ou baixado alguma biblioteca nova, adicione o caminho completo do diretrio em que essa biblioteca se encontra no arquivo /etc/ld.so.conf e digite o comando ldconfig (sem parmetros). Isso ir gerar o arquivo /etc/ld.so.cache, que contm informaes sobre as bibliotecas disponveis no sistema. Aps a operao, confira o resultado com o comando ldconfig -p e veja se sua nova biblioteca consta na lista.

___________________________________________________________________________ Pg. 181

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

GERENCIAMENTO DE PROCESSOS
O que se ccompadece do pobre empresta ao Senhor, que lhe retribuir
Provrbios 19.17

No Linux, ou mais especificamente em todos os sistemas operacionais que seguem o padro POSIX de desenvolvimento (todos os Unix, Linux e BSDs), utilizam um sistema de gerenciamento de processos. esse sistema que permite a execuo simultnea de programas no mesmo computador, e isso transcorre de maneira simples de se entender. Basicamente, cada programa em execuo pode desencadear a execuo de outros sub-programas, mas todos no geral so denominados um a como com sendo processos. Cada processo recebe um identificador numrico crescente que o diferencia dos demais; Esse identificador numrico recebe o nome de PID, e significa Process Identification. O PID nosso termo-chave para gerenciarmos os processos, conforme veremos adiante.

Lidando com processos


essencial que um administrador de sistemas Linux saiba como lidar com processos, isso inclui iniciar, listar, terminar e modificar a prioridade de execuo deles.

Listando processos
Para ter uma viso geral ou em algumas ocasies, especfica sobre quais processos esto em execuo em um computador sob o sistema operacional Linux, contamos com diversas ferramentas, das quais as mais importantes so: ps e top.

O comando ps
A ferramenta ps utilizada para mostrar os processos em execuo no sistema, permitindo listar processos que coincidam com determinados argumentos como o usurio que originou o processo ou o PID. Sintaxe:
ps [opoes]

O comando, apesar de ter um nome pequeno, possui uma grande gama de opes, divididas em 3 grupos: UNIX, BSD e GNU. Isso existe no Linux para manter compatibilidade com o comando ps de outros sistemas, permitindo que administradores experientes em UNIX no encontrem dificuldades em manipulas o ps no Linux, pois as mesmas opes do UNIX tambm so aceitas. Isso complica um pouco a vida de quem est aprendendo o ps agora. Portanto, fique atento nos parmetros para saber a quais grupos eles pertencem. As opes do UNIX so precedidas por hfem, e podem ser agrupadas, desde que a primeira ___________________________________________________________________________ Pg. 182

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes opo do grupo possua o hfem (Ex.: ps -ax). As opes do BSD no so precedidas por nada e podem ser agrupadas facilmente (EX.: os axef). J as opes GNU, que so exclusivas do Linux e tm um formato caracterstico bem diferente, pois so todas precedidas por dois hfens e no podem ser agrupadas (Ex.: ps user usuario). Confundir as opes pode trazer resultados tambm confusos. Por exemplo, o comando ps aux, no tem a mesma interpretao que o comando ps -aux, que sob os padres POSIX do UNIX, mostraria todos os processos (opo -a) que pertenam ao usurio x (a opo -u especifica um usurio. graas a astutez do Linux, os dois comandos teriam o mesmo resultado, desde que o usurio x no exista no sistema, pois o ps verifica isso, e caso o usurio no existe, ele trata a sequncia como se fosse aux (sem hfem).

Tabela de Opes
Opo -A ou -e -a UNIX -u usuario(s) -t -p pid -C comando -g grupo(s) t a r BSD e x f --user usuario(s) --group grupo(s) --pid pid --tty tty Descrio Seleciona todos os processos. Seleciona todos os processos que estejam ligados a algum terminal, exceto lderes de seo (Geralmente o prprio interpretador de comandos do terminal) Mostra processos iniciados por determinado(s) usurio(s). Para especificar mais de um usurio, separe-os por vrgula. Mostra processos vinculados com determinado terminal. Mostra processo com determinado pid Mostra processos cujo nome do executvel coincida com comando Mostra processos iniciados por determinado(s) grupo(s). Para especificar mais de um grupo, separe-os por vrgula. Mostra todos os processos associados com o terminal atual. Mostra todos os processos associados com algum terminal, inclusive lderes de seo. Seleciona somente os processos em execuo (que estejam consumindo recursos de processamento) Mostra variveis de ambiente associadas com cada processo. Lista todos os processos pertencentes ao usurio atual. Bastante utilizado em conjunto com a opo a para mostrar todos os processos. Mostra os processos em hierarquia (Floresta). Idem a opo -u Idem a opo -g Idem a opo -p Idem a opo -t

Exemplo A:
# ps ax

Forma mais comum de se listar todos os processos. Nota: a sada do comando foi suprimida ___________________________________________________________________________ Pg. 183

GNU

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes pois ocuparia muito espao desnecessrio. Exemplo B:
# ps axef

Isso mostrar uma lista completa dos processos em execuo no sistema, de forma hierrquica e com informaes de variveis de ambiente para cada processo. Exemplo C:
# ps -p 6613 # ps -u apostila

Mostra informaes sobre o processo cujo pid seja 6613 (No esquea de mudar esse nmero e escolher um pid vlido no seu sistema no momento em que for testar). Em seguida, mostramos os processos pertencentes ao usurio apostila.

Significado das colunas na sada do comando ps


O comando ps exibe diversas colunas diferentes dependendo das opes passadas ele. Para conhecer o significado de cada coluna (que muitas vezes bvio, como PID por exemplo), consulte a man page do comando). Mostraremos aqui os significados das letras na coluna STAT, que mostra o estado de cada processo na lista atravs de letras, cujo significado veremos na tabela abaixo: Significado das siglas da coluna STAT D O processo se encontra em sono profundo (No morreu mas est em coma) R Running - O processo est rodando, consumindo recursos de processamento S Sleeping - Processo Dormindo. A maioria dos processos fica nesse estado T O processo est parado W Paginando. (No vlido em kernels 2.6) X Morto. Voc provavelmente no o ver mais Processo Zumbi. Quando um processo entra nesse estado, ele j foi finalizado, mas Z ainda ocupa memria por descuido de seu processo pai < O processo tem alta prioridade N O processo tem baixa prioridade L Possui pginas abertas na memria s um lder de sesso l um processo capaz de multi-tarefa + O processo est rodando em primeiro plano

O comando top
De forma parecida com o ps, o top tambm mostra informaes sobre os processos em execuo, s que de uma forma diferente. Primeiro que ele ordena os processos com base em algum critrio (Utilizao de CPU, memria, etc....); Segundo que ele s mostra na tela a lista de processos que nela couber. ___________________________________________________________________________ Pg. 184

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Basta digitar o comando top para entrar no utilitrio. A sada do top dividida em 2 partes, um cabealho como o abaixo e a lista dos processos em si:
top - 01:51:03 up 12:21, 5 users, load average: 1.08, 1.18, 1.12 Tasks: 118 total, 1 running, 117 sleeping, 0 stopped, 0 zombie Cpu0: 11.7% us, 1.3% sy, 0.0% ni, 86.0% id, 0.0% wa, 1.0% hi, 0.0% si Cpu1: 11.0% us, 1.3% sy, 0.0% ni, 87.7% id, 0.0% wa, 0.0% hi, 0.0% si Mem: 515232k total, 513008k used, 2224k free, 36144k buffers Swap: 504968k total, 0k used, 504968k free, 0k cached

Este cabealho exibe informaes importantes sobre a utilizao de recursos do sistema. Podemos observar nesse exemplo, que trata-se de um sistema multiprocessado e que a carga de CPU est em mdia 11% para cada CPU atualmente, que o sistema possui 512mb de ram e que existe pouco mais de 2mb livres (Obs.: perfeitamente normal existir pouca memria ram disponvel num sistema em execuo algum tempo). Importante ressaltar que o top se atualiza automaticamente a cada x segundos (3 por padro). Para forar uma atualizao imediatamente, pressione a barra de [espao]. Para Modificar o tempo de atualizao automtica do top, pressione a tecla [d] e digite o novo valor em segundos. Para obter uma lista dos possveis comandos do top, pressione a tecla [h]. Para sair do top, use a tecla [q].

Nveis de processos
Os processos so executados no sistema em diferentes camadas ao ponto de vista do usurio. Isso permite que o sistema seja realmente multitarefa e multiusurio. Os nveis de processos so: Foreground (Primeiro plano) e Background (Segundo plano). A maioria dos processos em execuo fica em background, mas algumas vezes iniciamos processos em foreground, como o top ou o editor vim, por exemplo. Um processo em foreground no permite utilizarmos o terminal para outras finalidades. Para iniciar um processo j em background, proceda o comando com o sinal de &, conforme abaixo:
# vi & [1] 19872

Isso inicializou um processo do vi, cujo pid 19872 e o identificador do trabalho 1 (veja mais sobre isso adiante). Para visualizar os processos em background, utilizamos o comando jobs:
# jobs [1]+ Stopped vi # jobs -l [1]+ 19872 Stopped (tty output)

vi

Repare que a opo -l do comando mostra tambm o pid do processo. O status Stopped ___________________________________________________________________________ Pg. 185

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes significa que o trabalho est parado, apesar de estar em segundo plano (Nem todo processo suporte ser executado em segundo plano, pois depende de interao do usurio). Para compreendermos melhor o gerenciamento de trabalhos, vamos iniciar mais um em background:
# updatedb & [2] 20002

Agora iniciamos um processo que suporta execuo em background, caso ele termine antes de passarmos pelos exemplos, execute o comando novamente e prossiga. Vejamos como ficou a lista de trabalhos:
# jobs [1]+ Stopped [2]- Running vi updatedb &

Para enviar o trabalho para seguido do nmero do trabalho:


# fg 2 updatedb Pressione [CONTROL]+[Z] [2]+ Stopped # jobs [1]- Stopped [2]+ Stopped

foreground,

utilizamos

comando fg (foreground),

updatedb vi updatedb

Pressionando [CONTROL]+[Z] enviamos o processo que est em foreground para background, mas ele fica com o status Stopped (Parado). Para instruir um trabalho nessa situao a continuar a rodar em segundo plano, digite bg (background) seguido do nmero do trabalho:
# bg 2 [2]+ updatedb & # jobs [1]+ Stopped [2]- Running

vi updatedb &

possvel cancelar a execuo de um trabalho em foreground com a sequncia de teclas [CONTROL]+[C]. Experimente fazer isso com o trabalho 2 do exemplo.

Sinalizando processos
possvel enviar sinais para os processos em execuo. Os sinais de processos foram criados com a finalidade de enviar instrues para os processos, ordenando-os a finalizar ou reiniciar por exemplo. Um comando capaz de enviar esses sinais para os processos o kill. Na pgina de manual possvel obter uma lista completa dos sinais disponveis. Os sinais mais conhecidos so: TERM, que diz ao processo para finalizar todos os seus subprocessos e fechar, KILL, que mata o processo sem esperar nenhuma finalizao e HUP, que diz ao processo para reiniciar. ___________________________________________________________________________ Pg. 186

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

O comando kill
Sintaxe:
kill [ -sinal | -s sinal ] pid ... kill -l [ sinal ]

Os principais sinais possuem um nmero associado: 15 TERM, 9 KILL. A lista completa pode ser vista na man-page do comando kill. Utilizamos o kill -l sinal para traduzir o sinal em seu respectivo nmero de sinal, e vice-versa. O sinal padro do kill o 15 (TERM). Para finalizar um processo som este sinal, basta digitar kill pid, onde pid o nmero do processo que deseja finalizar. Exemplos:
# kill -HUP 16384 # kill -9 14446 14447 15896 17894

No esquea que esses pids do exemplo so fictcios.

O comando killall
De forma semelhante ao comando kill, o comando killall serve ao mesmo propsito: enviar sinais aos processos. S que o killall no recebe como argumentos os pids dos processos que deseja enviar o sinal, e sim o nome dos processos diretamente. Resumindo, ele envia sinais para os processos pelo nome. Nas verses mais recentes do Debian necessrio instalar o pacote psmisc para que o killall funcione. Sua sintaxe semelhante ao comando kill. O sinal padro tambm 15. Sintaxe:
killall [opes] [processo] [processo...]

Exemplo:
# killall -v -HUP cron

Isso enviar o sinal HUP para todos os processos de nome cron (que geralmente executado em todos os sistema). Note a utilizao da opo -v, que mostra na sada quais processos esto sendo sinalizados.

O comando killall5
A finalidade desse comando propagar um sinal (15 por padro) para todos os processos em execuo, com exceo dos iniciados pelo kernel e ele mesmo. Sintaxe:
killall5 [-sinal]

___________________________________________________________________________ Pg. 187

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Exemplo:
# killall 5 -HUP # killall 5 -9

O primeiro reinicia todos os processos, o segundo causa um holocausto nos processos, matando-os sem esperar por respostas. Caso queira executar um comando que permanea ativo mesmo depois de fechar o terminal atual, preceda-o com o comando nohup. Ex.: nohup updatedb &

Gerenciando prioridades dos processos


Todo processo em execuo possui um valor de prioridade, que utilizado para o kernel ordenar os processos na fila de processamento. Esse valor de prioridade, chamado de nice, varia do mais alto -20 at o mais baixo 19. O nice padro para processos iniciados 0, mas somente um usurio root consegue executar processos com prioridade maior que 0 (O que confunde um pouco, pois essas prioridades maiores que zero vo de -1 at -20, que a maior de todas.).

Definindo prioridades com o comando nice


possvel iniciar um programa com prioridade alterada utilizando-se o comando nice. Sintaxe:
nice [-n prioridade] comando

Se no definirmos a prioridade desejada (de 19 -20), o nice assume a prioridade 10, mais baixa que o normal 0. Exemplo:
# nice -n 19 updatedb &

Modificando prioridades com o comando renice


Para modificar a prioridade de execuo de um processo que j esteja sendo executado, utilize o renice. possvel fazer isso com base no pid ou usurio que tenha iniciado o processo, por exemplo. Repare que a sintaxe um pouco diferente em relao ao comando nice. Sintaxe:
renice prioridade [ [ -p ] pids ] [ [ -g ] pgrps ] [ [ -u ] usurios ]

___________________________________________________________________________ Pg. 188

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes Vamos iniciar um processo, tomar nota de seu pid, e utiliz-lo para modificar sua prioridade de execuo. Exemplo:
# updatedb & [1] 7243 # renice 15 -p 7243 7243: prioridade antiga = 0; prioridade nova = 15 # renice -10 -p 7243 7243: prioridade antiga = 15; prioridade nova = -10

Modificamos por duas vezes a prioridade de execuo do processo.

___________________________________________________________________________ Pg. 189

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administrao de Sistemas Prof. Erivelton Rodrigues Nunes

REFERNCIAS
[FERREIRA 2003] Linux Guia do Administrador do Sistema Ferreira, R.E. Editora Novatec So Paulo SP - 2003 [BALL 1999] Usando Linux Ball, H - Editora Campus Rio de Janeiro RJ 1999 [MORIMOTO 2006] Redes e Servidores Linux: guia prtico Morimoto, C.E. Sul Editores Porto Alegre RS - 2006 Guia Foca GNU/LINUX - http://focalinux.cipsga.org.br/ Programa Tcnico Cidado SUN MICROSYSTEMS Viva o Linux http://www.vivaolinux.com.br Guia do Sistema GNU/LINUX para o usurio Desktop Ednei Pacheco de Melo

___________________________________________________________________________ Pg. 190

Você também pode gostar