Вы находитесь на странице: 1из 188

Captulo 1

Introduo ao Linux
Quando se fala em Linux, comenta-se nos termos GNU, open source, software livre, usurios e grupos, entre outros tpicos. papel fundamental de um usurio Linux conhecer e entender estes assuntos, mesmo que basicamente. Ao final do captulo, o aluno dever ser capaz de: Conhecer e compreender como e quem criou o Linux, bem como suas principais caractersticas; Conhecer a filosofia do software livre de um modo geral, bem como conhecer quais as licenas utilizadas no mundo linux; Entender o que so distribuies Linux, e quais delas so mais difundidas; Entender o que so e quem criou os movimentos GNU e open source; Compreender para que servem as padronizaes FHS e LSB; Identificar e compreender o que so e quais as diferenas entre o modo texto e o modo grfico e os conceitos relacionados; Entender os conceitos de usurios e grupos.

1.1 - Histrico e Caractersticas do Linux O Linux originou-se por intermdio de um projeto pessoal de Linus Torvalds. O Universitrio finlands em 1991, baseado no kernel do sistema operacional Minix escrito por Andrew Tanenbaum , gerou interesse em escala mundial. Com isso, Linus fez que o kernel verso 1.0 ganhasse vida prpria e passou a ser chamado de Linux. Pelo fato do Linux possuir grandes semelhanas com o Unix, ainda sim diferenciasse por ser gratuito, cdigo-fonte aberto e desenvolvido de maneira cooperativa, com contribuies provenientes de centenas de pessoas e organizaes. Tambm vale ressaltar: Como principais caractersticas do Linux, podemos destacar: Multitarefa e multiusurio: Realiza vrias operaes (tarefas) simultaneamente e permite acesso de mltiplos usurios ao computador; Portado para vrias arquiteturas de hardware (Abstrao de hardware ): Abstrai o software de qualquer arquitetura particular de hardware e garante que o sistema operacional possa ser facilmente portado para vrias plataformas de hardware. Utiliza os conceitos de software livre: o Software que pode ser usado, copiado, estudado, modificado e redistribudo sem restrio. Pode ser usado em uma estao de trabalho ou em um servidor; Baseado no padro POSIX ( um conjunto de padres para interface de sistemas operacionais ). Diante da sua caracterstica livre e aberta, o software livre ( em particular o Linux ) tem conquistado muito espao junto a

governos, empresas e entidades sociais. Alm da economia com licenciamento, o software livre proporciona independncia e compartilhamento de conhecimento, estando hoje presente em todos os segmentos da computao, desde sistemas embarcados at supercomputadores. 1.2 - Filosofia do Software Livre O Termo software livre (em ingls , free software ) pode gerar alguma confuso, pois a palavra free tanto pode ter o sentido de gratuidade quanto o sentido de liberdade. Contudo, software livre refere-se liberdade dos usurios em executar, copiar, distribuir, estudar, modificar e melhorar o programa. Mais precisamente, este termo refere-se a quatro tipos de liberdade, para os usurios do software livre: Liberdade para instalar o programa para qualquer finalidade; Liberdade para estudar e modificar o programa; Liberdade para copiar o programa; Liberdade para melhorar o programa e divulgar suas melhorias para o pblico, de modo que a comunidade inteira se beneficie. Para que um programa possa ser considerado livre, os usurios devem ter estas quatro liberdades. Qualquer usurio dever ser livre para redistribuir cpias do programa, com ou sem modificaes, cobrando ou no por este ato. Alm disto, no deve ser possvel para o autor do programa revogar estas liberdades. Se isto puder acontecer, o programa no livre . No h problema algum em cobrar para distribuir software livre, desde que o usurio tenha sempre liberdade para copi-lo e modific-lo sem solicitar permisso para qualquer pessoa que seja. Apesar disso, podem existir regras restritivas, desde que essas no entrem em conflito

com as quatro liberdades centrais. O copyleft, por exemplo, uma dessas regras, e garante que as liberdades sempre existam. O copyleft um copyright que, em seus termos de distribuio, garante que qualquer usurio tenha direito de copiar, modificar e redistribuir o cdigo de um programa, ou qualquer trabalho derivado do mesmo, mas apenas se estes termos de distribuio no forem modificados. Em outras palavras, pode-se dizer que o copyleft exatamente o oposto do copyright, no sentido de visualizao, distribuio e modificao do cdigo-fonte dos programas. 1.3 - Licenas de Software Livre As licenas foram criadas com o intuito de garantir a manuteno das caractersticas do software livre. A mais difundida a Licena Pblica Geral ( ou General Plublic License GPL ), utilizada pelo projeto GNU. Ela define os termos de distribuio utilizando o conceito do copyleft . A GPL regulamenta as liberdades centrais, definindo as condies para cpia, distribuio e modificao dos programas. Embora qualquer pessoa possa modificar uma cpia do programa, obrigatrio que: Exista um aviso destacado, em cada arquivo modificado, informando que os dados originais foram alterados. Exista um aviso informando que o trabalho distribudo ou publicado deriva totalmente ou em parte do programa original. Caso o programa seja executado de forma interativa, no incio de sua execuo devem ser apresentadas informaes de copyright e de ausncia de garantias ( ou de que a garantia corre por conta de terceiros ). Em qualquer caso, a licena no poder ser modificada e o usurio sempre dever ter acesso mesma, na ntegra. importante salientar que no h garantias para software livre, pois caso o

programa seja modificado por algum e redistribudo, no refletir mais o trabalho original do autor. Existem muitas outras licenas de softwares, podendo ou no ser compatveis com a GPL. No site http://www.gnu.org/licenses/licenselist.pt.html#SoftwareLicenses possvel visualizar uma lista destas licenas, divididas em categorias, de acordo com a compatibilidade que possuem com a GPL. Atravs deste site possvel tambm verificar quais licenas se qualificam como software livre, e porque algumas no podem ser qualificadas como tal. As licenas de documentao foram criadas com o intuito de garantir que um manual, texto ou documento fique disponvel para cpia ou redistribuio, com ou sem modificaes, comercialmente ou no. A licena de Documentao Livre GNU ( GFDL ) uma licena de documentao, que mantm para o autor e editor uma forma de ter crdito por seu trabalho, sem ser considerado responsvel pelas modificaes feitas por terceiros. 1.4 - Distribuies Linux O Linux em si no passa do Kernel ( responsvel, entre outras coisas, pela camada de gerenciamento do hardware ). O que faz do Linux uma ferramenta til para um administrador do sistema ou usurio, o conjunto de programas que so executados junto com o Kernel, e a comunidade de software livre que, muito antes do Linux surgir, vem criando verses livres de todos os utilitrios do mundo UNIX e de outros programas maiores, como servidores Web, editores de imagens, interfaces grficas, etc. Uma coleo destes utilitrios, trabalhando em conjunto com o Kernel, o que chamamos de Distribuio Linux. Cada distribuio possui suas peculiaridades. Uma breve descrio de algumas delas ser vista na seqncia: Debian: A distribuio Debian comeou em 1993, com a proposta de manter uma distribuio o mais livre possvel a maior distribuio

de Linux no associada a uma empresa. Por este motivo, uma das mais utilizadas no meio acadmico. Ela utiliza o formato DEB, e disponibiliza um enorme nmero de programas para seus usurios. Alm disso, o time de desenvolvimento Debian foi responsvel pela criao do sistema APT (Advanced Package Tool ), para a atualizao de programas pela internet. RedHat: O RedHat Linux surgiu em 1994 e foi a distribuio responsvel por introduzir o formato de pacotes RPM ( RPM Package Manager), que foi depois utilizado em vrias outras distribuies. Atualmente, a empresa patrocina o projeto Fedora, que tem por objetivo disponibilizar para a comunidade ferramentas para que ela desenvolva uma distribuio completa: o Fedora Core. A RedHat mantm o RedHat Enterprise Linux como produto principal. Suse: O Suse Linux surgiu em 1992 e seu foco o mercado europeu. Em meados de 2003, a empresa foi comprada pela Novell, continuando a manter desenvolvedores no aprimoramento de seu sistema. Em especial, a empresa foi responsvel por grande parte da adaptao do Linux para processadores SPARC. Slackware: O Slackware teve a sua primeira verso liberada em 1993. a distribuio que sempre buscou se aproximar o mximo possvel do UNIX. At 1994-1995, foi uma das distribuies Linux mais famosas, principalmente no Brasil. Sua principal caracterstica a simplicidade, no sentido de no disponibilizar ferramentas e programas de configurao na distribuio. TurboLinux: Fundada em 1992, fornece solues para ambientes operacionais Linux. A empresa TurboLinux o principal fornecedor Linux na sia e Pacfico. Entre seus produtos, esto includos softwares multiplataforma e de sistema distribudo.

1.5 - Exerccios 1-) Marque as alternativas corretas: Sobre o GNU e a GPL: ( ) O GNU um movimento criado por Richard Stallman ( ) GNU significa Guest is Not for Unix ( ) A GPL no permite modificar o cdigo-fonte do programa ( ) A GPL permite a redistribuio do software ( ) GPL um acrnimo para General Public License ( ) A GPL uma licena utilizada somente para documentao ( ) A GPL garante as 4 liberdades do software livre ( ) GPL significa GNU Private License ( ) A GPL garante que os preceitos do movimento GNU sejam aplicados ( ) A GPL define seus termos utilizando o conceito de copyleft O Linux: ( ) um software livre ( ) Deve ser disponibilizado exclusivamente de graa ( ) Criado por Richard Stallman ( ) Pode ser utilizado em modo texto e modo grfico ( ) Para ser utilizado, deve ser composto pelo Kernel mais aplicativos ( ) Tem como uma das caractersticas ser multitarefa ( ) No interessante para empresas, pois grtis ( ) Linus Torvalds foi o criador do Kernel do Linux ( ) empacotado e personalizado em vrias distribuies

Captulo 2
Instalao do Sistema
Nesse captulo executaremos a instalao da distribuio Debian GNU/Linux. importante estar atento a cada detalhe e procedimento dessa atividade. Ao final do captulo, o aluno dever ser capaz de: Conhecer os procedimentos de instalao de um sistema Linux; Instalar a Distribuio Debian em um computador.

2.1 Antes de instalar Antes de iniciar o processo de instalao vamos esclarecer alguns conceitos importantes: O sistema operacional um conjunto de programas que faz com que o usurio consiga se comunicar com o hardware e realizar tarefas atravs do computador. Em sistemas Linux, ele composto pelo kernel (o ncleo do sistema) e um conjunto de ferramentas chamado GNU (as aplicaes do sistema). Nesse captulo e durante todo o livro, iremos utilizar a distribuio Debian GNU/Linux na sua verso 5 ou simplesmente o Debian Lenny. Se voc estiver utilizando uma verso prxima do Lenny (a verso 4 ou futuramente a 6), no notar tanta diferena no processo de instalao e na utilizao do sistema. Existem dois processos de instalao, um com modo grfico mais apurado (recomendado para usurios iniciantes) e outro menos intuitivo, executado atravs de menus. Iremos utilizar o segundo, pois, em um computador mais modesto, a instalao com modo grfico poderia causar lentido. Dadas essas observaes, mos obra!

2.2 Instalando a Distribuio Partiremos do princpio que o seu computador est configurado para iniciar pelo dispositivo de cd/dvd e que voc possui um dvd do Debian Lenny. Assim que o cd iniciado, exibida a tela com as opes iniciais de instalao. Iremos utilizar a opo Install conforme a figura abaixo. A opo Graphical install utiliza o modo grfico para realizar a instalao.

Agora devemos escolher o idioma no qual a instalao ir transcorrer, definiremos o idioma Portugus do Brasil.

Em seguida, escolha o Brasil como o pas onde o Debian est sendo instalado. No mapa de teclado, escolha Portugus Brasileiro (layout ABNT2) Aps essa opo, o Debian ir detectar o hardware e descompactar alguns arquivos para a instalao.

Digite o nome do computador conforme a figura abaixo. No meu caso, escolhi o nome Livro-Linux, sugestivo no?

Em seguida, ele solicita um nome de domnio, no nosso caso deixaremos em branco, mas, no caso desse computador ser um servidor com um nome registrado na web, seria interessante a insero do seu domnio. No prximo passo, a instalao tenta encontrar um servidor na internet que possa lhe fornecer a hora. Aps esse processo, ela solicita a cidade que possua o fuso horrio de onde o computador ser instalado. Se a sua cidade no estiver representada, escolha uma outra que compartilhe do mesmo fuso horrio. Aps essa escolha, o processo de instalao carrega mais alguns arquivos e instala o particionador de disco. Logo aps, vem a opo da escolha do particionamento.

Na opo Assistido usar disco inteiro o sistema operacional ser instalado, ocupando todo o disco sem nenhum particionamento especial. Na opo Manual, poderemos escolher algumas configuraes de tamanho e diviso de parties. As outras opes so assunto para o nosso captulo de LVM. Escolheremos a opo Manual. Dentro da opo Manual, so apresentadas as duas parties que o particionador sempre separa. A partio primria, (onde fica o sistema e todos os arquivos) e a partio swap, (uma espcie de memria de paginao, veremos mais no captulo sobre Sistemas de Arquivos). Selecione e clique Enter na opo #1 primria.

Agora clique na opo Remover esta partio e faa o mesmo com a partio de swap, para que possamos configurar o nosso particionamento do zero. O resultado deve ser parecido com esse:

Agora escolha a opo ESPAO LIVRE para realizarmos o particionamento.

Clique na opo Criar uma nova partio. Aqui iremos criar todas as parties do disco rgido. Escolha a opo Particionar automaticamente o espao livre.

Agora escolha a opo Criar as parties home, /usr, /var e /tmp separadas, pois essa opo ajuda no gerenciamento dessas parties e faz com que uma delas no ocupe um espao maior do que realmente necessrio.

O particionador dividir automaticamente as parties. Se voc no gostar do tamanho de alguma, basta editar o seu particionamento. Nesse caso, vamos finalizar o particionamento.

Confirme o particionamento para que ele possa ser executado. Em seguida, o particionador criar as parties configuradas no disco.

E logo aps instalar o sistema bsico que representa o mnimo necessrio para um sistema Debian Linux.

Aguarde at esse processo terminar.

Digite a senha do usurio root, o administrador do sistema.

E confirme a senha novamente. Digite o nome do usurio, nesse caso colocarei aluno. Confirme o nome de usurio. Agora escolha a senha desse novo usurio. E Confirme-a logo depois.

Em seguida, ser configurada a ferramenta apt, responsvel pela instalao de pacotes no sistema. Surge ento uma mensagem solicitando que seja inserido outro cd de instalao para ser catalogado. Se voc no possuir um cd ou dvd com pacotes adicionais para o Debian, clique em no. Caso tenha uma dessas outras mdeas, clique em sim e insira o outro dvd. Nesse caso, escolheremos a opo No.

Agora vem a solicitao da configurao de um espelho de rede para que o instalador de pacotes baixe aplicativos atualizados pela Internet. Vamos escolher No, pois iremos utilizar os recursos do prprio dvd. Escolha se as suas estatsticas de utilizao de pacotes sero enviadas para os desenvolvedores Debian. Para ajudar a comunidade escolha Sim. A prxima opo deve ser escolhida de acordo com a finalidade do sistema, se ser um computador com ambiente grfico, um servidor ou mesmo um laptop. Deixaremos somente a opo Sistema Bsico marcada, a qual instalar somente o modo texto do Debian. Escolha a opo Continuar.

Ento s tomar aquele cafezinho e aguardar o trmino da instalao, que no demora muito. Instalao finalizada!

2.3 Exerccios 1-) Execute a instalao pelo Graphical Install e perceba as diferenas. 2-) Procure cd's e dvd's de outras distribuies Linux e realize suas instalaes para obter um maior conhecimento. Fica a sugesto: Ubuntu DreamLinux Slackware OpenSuse RedHat Fedora

Captulo 3
Sistema de Arquivos e Estrutura de Diretrios
O Linux organiza o seu disco e diretrios de uma forma bem diferente dos sistemas Windows e bem parecida com a organizao dos sistemas Unix. Tambm existe uma grande diferena quanto formatao do disco e ao sistema de arquivos utilizado. Ao final do captulo, o aluno dever ser capaz de: Conhecer e compreender as caractersticas e peculiaridades de alguns sistemas de arquivos no Linux; Instalar um sistema de arquivos em uma partio vazia; Conhecer comandos para a exibio do contedo de diretrios; Conhecer a rvore de diretrios e a organizao dos arquivos em sistemas Linux.

3.1 Sistemas de Arquivos Um Sistema de arquivos uma estrutura lgica que define como os dados so gravados, armazenados e recuperados em uma mdea, seja Disco Rgido (HD), Pen-drive ou at mesmo os quase extintos disquetes. Ele tambm controla a fragmentao e utilizao desse disco, e todas essas tarefas vo se tornando cada vez mais difceis conforme vo se acumulando os dados na mdea. Nenhum programa ou sistema pode trabalhar diretamente no disco rgido sem um sistema de arquivos, nem em uma partio ou setor que no tenha sido inicializado por um sistema de arquivos. O sistema de arquivos o software que vai trabalhar com o disco rgido em si, vai escrever, sobrescrever, apagar e ler os blocos e setores de um HD. O Sistema de Arquivos escolhido antes do Sistema operacional ser instalado, durante o processo de formatao do disco, o Sistema de Arquivos implementado. Cada sistema operacional tem seus Sistemas de Arquivos padres, no caso do Linux existe uma grande variedade, cada um com uma particularidade especial como podemos ver os principais sistemas abaixo: - Minix: O mais antigo sistema de arquivos para Linux. Criado por Andrew S. Tanembaum para o seu sistema operacional Minix e adaptado por Linus Trovals para a primeira verso do Linux. Bastante limitado, podendo trabalhar em volumes de no mximo 64 MB (Megabytes). - Ext2: uma evoluo do sistema de arquivos Ext. Foi criado por Rmy Card e Stephen Tweedie e lanado em 1993. Pode ser utilizado em discos com at 16 TB (Terabytes) de espao de armazenamento. Utilizado at hoje em algumas distribuies mais antigas e tambm opo para distribuies mais novas, porm recomenda-se que seja utilizada a sua evoluo em sistemas de arquivos, o Ext3. - Ext3: Evoluo do Ext2. Foi desenvolvido pelo Dr. Stephen Tweedie e outros colaboradores da empresa RedHat. Pode ser utilizado em discos de at 32 TB. totalmente compatvel com o formato Ext2. A principal vantagem sobre o Ext2 o recurso de journaling que mantm

uma espcie de log contendo todas as atividades executadas no disco, havendo queda de energia, o Sistema Operacional verifica somente esse log para descobrir qualquer problema ocorrido no disco, ao invs de verificar todo o disco, ganhando muito mais tempo, alm de conseguir recuperar at mesmo os arquivos que estejam sendo gravados no momento da queda de energia. - Ext4: Evoluo do Ext3. Lanado em 2006. Pode ser utilizado em discos com o limite de aproximadamente 1EB (Exabyte). Alm do tamanho de disco maior, esse sistema de arquivos possui outras vantagens sobre o Ext3 como a quantidade de subpastas possveis que dobra (de 32.000 no Ext3 para 64.000 no Ext4) e tambm a verificao de integridade no journal (journal checksums) que o torna bastante seguro contra defeitos no log mantido pelo journal. - ReiserFS: Criado por Hans Reiser. Esse sistema de arquivos utiliza a tcnica de rvore balanceada para buscar os arquivos no disco, tornando assim o processo de busca e leitura mais eficiente. O uso de arquivos pequenos pode tambm melhorar ainda mais o desempenho desse sistema de arquivos. O ReiserFS mais rpido que o Ext3 ou Ext4, porm no caso de falta de energia haver uma grande possibilidade do arquivo que esteja sendo gravado acabe corrompido. Foi o primeiro Sistema de Arquivos a implementar o Journaling. - XFS: Lanado em 1994 junto com o Sistema Operacional IRIX 4.1 (um S.O. baseado em UNIX), comeou a ser usado com o Linux a partir de 2001. um Sistema de Arquivos criado para arquiteturas de 64 bits, porm adaptado tambm a 32 bits. O tamanho mximo de volume de 8 EB (Exabytes) para arquiteturas de 64 bits, e de 16 TB (Terabytes) para arquiteturas de 32 bits. Possui recurso de jouranling. A escolha de um sistema de arquivos deve ser feita de acordo com a necessidade ou com o sistema a ser instalado ou com o servio a ser implementado. No havendo uma necessidade pr-definida, deve ser escolhido um dos mais utilizados hoje por Administradores de Sistemas Linux, que so o Ext4 e o ReiserFS. O ReiserFS leva vantagem sobre o Ext4 principalmente quanto a

velocidade e ao desempenho e isto melhora ainda mais quando o sistema de arquivos trabalha com arquivos pequenos. Porm o ext4 est em um estgio de desenvolvimento e atualizaes bem mais avanado que o ReiserFS, o que lhe garante uma confiabilidade e segurana maior. Ainda existe outro sistema de arquivo que no utilizado para formatar todo o disco rgido e nem para armazenar arquivos, mas tem uma funo especfica e bem especial no sistema Linux. Esse sistema de arquivos o Swap. - Swap: uma partio de troca usada para funcionar como uma extenso da memria RAM, onde so colocados os programas e aplicativos em execuo que no esto em uso constante pelo usurio. uma espcie de memria de paginao dos sistemas Windows. O Swap deve ter sempre o dobro da capacidade da memria RAM, ou seja, se a memria RAM possui 256 MB, a partio SWAP deve ter 512 MB. Computadores com 1 GB ou mais de memria RAM no necessitam de SWAP, exceto em casos de servidores que necessitem de muita memria RAM para o funcionamento de algum servio. 3.2 Criando um Sistema de Arquivos A partio principal geralmente vai ser formatada e definido o sistema de arquivos durante o processo de instalao do sistema operacional (Captulo 2), porm, havendo a necessidade de adicionar um novo HD ao sistema ou at mesmo formatar um disco existente, podero ser utilizados os comandos fdformat e mkfs descritos a seguir. fdisk: Realiza uma formatao fsica no disco rgido, apagando todos os dados, criando ou excluindo parties, porm no instala um sistema de arquivos. Este comando sozinho deixa o disco inutilizvel. mkfs: Formata uma partio criada pelo utilitrio fdisk, instalando um sistema de arquivos de acordo com a opo desejada, deixando o disco pronto para ser utilizado.

3.3 Estrutura de Diretrios em Sistemas Linux Antes de analisarmos e conhecermos a rvore de diretrios do Linux bem importante ter em mente o conceito de diretrio. O diretrio em sistemas Linux tem o mesmo conceito de pasta dos sistemas Windows, ou seja, um recipiente onde so armazenados os arquivos ou outros diretrios (sub-diretrios). Falando em um nvel mais baixo, um diretrio um arquivo que contm os nomes e a localizao dos arquivos ou diretrios encontrados dentro dele. A estrutura de diretrios seguida pela grande maioria das distribuies Linux adotam um padro chamado FileSystem Hierarchy Standart (FHS), criado para atender os sistemas operacionais Unux-like como o BSD e o prprio Linux. Essa estrutura de diretrios tambm conhecida como rvore de Diretrios pelo fato dela ser parecida com uma rvore de cabea para baixo. Nos sistemas operacionais Windows os discos, parties, drives de disquete, drives de CD ou de DVD e pendrives so representadas por letras, como por exemplo: C:, D:, E:, etc. J no Linux (e em qualquer sistema operacional que siga o padro FHS) o diretrio principal representado por uma barra ( / ) e os outros diretrios com seus nomes aps a barra (exemplo: /home, /var). Todas as parties, drives de CD ou DVD, Disquetes, Pendrives estaro dentro do diretrio /. Veremos como isso realmente funciona a seguir. Ento o / a raiz dessa rvore e todos os diretrios padro ou criados partem dele. Existem vrios diretrios criados automaticamente pelo sistema, cada um com a sua funo especfica. Segue a seguir uma lista com a localizao e a funo de cada diretrio.

/ /bin /boot

Diretrio Raiz do Sistema (como falado anteriormente). Contm arquivos de programas utilizados por usurios e pelo sistema. frequentemente

Nesse diretrio, ficam armazenados todos os arquivos

necessrios para a inicializao do sistema. Dentro desse diretrio, podem ser encontrados tambm os arquivos de imagem do kernel (vmlinuz). /dev /etc /lib /lost+found Possui os arquivos de acesso ao hardware, para o sistema acessar os perifricos conectados ao computador Nele esto contidos os arquivos de configurao do sistema. Ficam armazenadas todas as bibliotecas compartilhadas, utilizadas pelo kernel e pelos programas do sistema. Nesse diretrio, so gravados os arquivos ou diretrios recuperados pelo utilitrio fsck. Esse utilitrio (fsck) executado quando o sistema operacional encontra alguma inconsistncia no sistema de arquivos e faz a checagem e recuperao desses arquivos ou diretrios, gravando-os no diretrio /lost+found. Dentro desse diretrio, ficam localizados os pontos de montagem dos vrios dispositivos do sistema, como por exemplo CD/DVD (/media/cdrom), pendrive (/media/nome_pendrive), outros discos rgidos ou parties de um disco (/media/nome_partiao), compartilhamentos de rede (/media/nome_copartilhamento). Lembrando que esse diretrio s existe em algumas distribuies mais novas. Tem a mesma funo do /media. Algumas distribuies mais novas utilizam somente o /media para montar seus dispositivos, porm comum encontrar distribuies com o /mnt como ponto de montagem. Diretrio criado para armazenar programas que no fossem nativos da distribuio Linux que esteja em uso. Porm essa separao pouco usada. Esse diretrio , na verdade, uma partio virtual que contm todos os processos e parmetros do kernel. Pode ser acessado pelo diretrio /proc e no ocupa nenhum espao no disco rgido. O /proc torna mais simples

/media

/mnt

/opt

/proc

algumas atividades do sistema como, por exemplo, listar os processos do sistema. /root /sbin Diretrio do usurio root, que o usurio administrador em sistemas Linux. Nesse diretrio, se encontram os arquivos dos comandos mais importantes para o super-usurio root nas tarefas administrativas do sistema. Esse diretrio foi idealizado para guardar dados que fossem manipulados por qualquer programa servidor utilizado no sistema. Porm, esse diretrio praticamente no utilizado. Esse diretrio guarda informaes sobre os dispositivos de hardware instalados no computador. No confunda com o /dev, no /sys so gravadas informaes sobre os dispositivos, j no /dev esto armazenados os arquivos de acesso aos dispositivos de hardware. Armazena os arquivos temporrios criados pelos programas e pelo sistema operacional. Esse diretrio limpo durante o reboot da mquina. A grande maioria dos programas esto instalados dentro desse diretrio. Os programas desse diretrio no so necessrios para uma inicializao mnima do sistema. Diretrio onde so gravados dados que so alterados constantemente pelo sistema como, por exemplo, log ou spool de impressora. chamado de diretrio de dados variveis.

/srv

/sys

/tmp

/usr

/var

No diretrio / tambm existem outros itens que no so diretrios, so link's (atalhos) para subdiretrios, arquivos ou pontos de montagem especficos. So eles: /cdrom Um atalho para o ponto de montagem do dispositivo de cd/dvd que fica localizado no /media/cdrom ou no /mnt/cdrom

/floppy

Um atalho para o ponto de montagem do dispositivo de disquete que fica localizado no /media/floppy ou no /mnt/floppy um atalho para a imagem do kernel que carregada durante a inicializao do sistema.

/vmlinuz

Esses conceitos de rvore de diretrios devem estar sempre bem vivos na sua memria, pois durante o desenrolar do livro eles sero utilizados e maiores detalhamentos e descobertas viro. Voc pode tambm criar e apagar diretrios em qualquer lugar, inclusive na raiz do sistema. Porm, vale ressaltar a importncia da manuteno dos diretrios listados anteriormente, pois muitos deles so essenciais para o funcionamento do sistema, por isso muito cuidado ao manipular e excluir diretrios. 3.4 Dicas O Linux um sistema que utiliza a tcnica case sensitive, ou seja, ele diferencia letras maisculas de letras minsculas. Por exemplo, HOME, Home e home so diretrios diferentes. A existncia de espaos nos nomes de diretrios possvel. A tecla TAB completa o nome do diretrio a ser utilizado como parmetro em um comando. Por exemplo, digite o comando ls /ho e aperte a tecla TAB, no mesmo instante o sistema completar o comando ficando assim ls /home. Alm de parties, pendrives, disquetes ou CD's/DVD's, o diretrio /media ou o /mnt pode conter unidades que estejam em outros computadores atravs do compartilhamento via NFS (Network File System), claro que isso s possvel se a unidade for montada no computador.

Voc pode ver os diretrios existentes no seu diretrio raiz utilizando o comando ls / (sem aspas). 3.5 Exerccios 1) Cite os dois sistemas de arquivos mais utilizados hoje. _________________________________________________ 2) Qual foi o sistema de arquivos utilizado na primeira verso do Linux? Quais as suas caractersticas? __________________________________________________ __________________________________________________ __________________________________________________ 3) Qual comando utilizado para criar um sistema de arquivos em uma partio? __________________________________________________ __________________________________________________ 4) Explique com suas palavras as diferenas entre o sistema de arquivos Ext3 e o Reiser FS. __________________________________________________ __________________________________________________ __________________________________________________

5) Relacione a primeira coluna com a segunda: (1) /dev (2) /media (3) /boot (4) /tmp (5) /home ( ) Contm os arquivos temporrios do sistema Linux. ( ) Nele existe o arquivo vmlinuz. ( ) Todos os arquivos de acesso com dispositivos se encontram nesse diretrio ( ) Dentro desse diretrio esto localizados os diretrios dos usurios ( ) Nesse diretrio, esto disponveis os dispositivos removveis como disquete, pen-drive e CD/DVD ou outras parties.

Captulo 4
Tipos de Arquivos
O arquivo o elemento estrutural primrio em um sistema Linux. O sistema de arquivos apresenta e guarda todas as informaes em forma de arquivos, sejam eles dispositivos, arquivos de rede ou de qualquer outro tipo. Ao final do captulo, voc dever ser capaz de : Compreender o conceito e as caractersticas de arquivos no Linux; Saber identificar as informaes sobre um arquivo; Compreender o que so links e quais os tipos de links existentes; Entender o que so arquivos de dispositivo e conhecer os dispositivos importantes de um sistema Linux.

4.1 - Caractersticas dos Arquivos no Linux Uma descrio simples de um sistema Unix, tambm aplicvel ao

Linux, a seguinte: Em um sistema UNIX, tudo um arquivo; se algo no um arquivo, ento um processo. '' Isto verdadeiro porque esta uma das principais caractersticas de um sistema operacional Linux: tudo tratado como um arquivo. Dispositivos de hardware, comandos executados, os diretrios em Abaixo segue uma lista das principais caractersticas de arquivos em ambientes Linux: Extenses so apenas informativas, no definindo caractersticas dos arquivos. Na verdade, formalmente no existe o conceito de extenso, uma vez que podemos utilizar pontos no nome de arquivos ( qualquer nmero de vezes). Nomes de arquivos so case-sensitive , ou seja, h distino entre maisculas e minsculas. O nico caractere no permitido em um nome de arquivo o / . Por conveno, arquivos iniciados por . no so listados por padro na maioria dos programas. Em outras palavras, so arquivos ocultos. 4.2 - Informaes Sobre os Arquivos Quando um novo arquivo criado, o sistema de arquivos do Linux guarda suas informaes em um inode ( estrutura particular do sistema operacional ), que conter informaes como: Proprietrio e grupo do arquivo (UID User identification e GIDGroup Identification ) Tipo do arquivo

Permisses do arquivo Data e hora da criao, e tambm da ltima modificao Nmero de links deste arquivo Tamanho do arquivo Um endereo, definindo a localizao real dos dados do arquivo A nica informao que no includa no inode o nome do arquivo/diretrio, que armazenado em diretrios de arquivos especiais. Comparando os nomes dos arquivos e o nmero dos inodes, o sistema pode construir uma estrutura em rvore, na qual o usurio pode compreender. 4.3 - Caractersticas de Arquivos no Linux A maioria dos arquivos do sistema so os chamados arquivos regulares. Eles contm dados convencionais, como, por exemplo, arquivos texto, arquivos de programas e imagens. Entretanto, outros arquivos so diferenciados dentro do sistema, dependendo da sua funo. Os arquivos em Linux podem ser classificados em seis grupos, so eles: Arquivos Comuns: So arquivos de texto (ASCII); arquivos de dados como msicas, vdeos, planlias, e outros; arquivos de comandos (Shell Script) e arquivos binrios executveis (programas instalados). Diretrios: Como j citado no captulo anterior, diretrios so arquivos que contm os nomes e endereos (no disco) dos arquivos que esto armazenados, criando uma espcie de grupo. Esse agrupamento pode ser alterado a qualquer momento pelo usurio.

Links: um arquivo que funciona de forma similar a um atalho em sistemas Windows. Existem dois tipos de Link's em sistemas Linux, os diretos (hard links) e os simblicos (soft links). Os links diretos associam dois ou mais arquivos com nomes diferentes a um mesmo endereo no disco, e esses links no so reconhecidos pelo usurio. J os links simblicos so arquivos que apontam para o endereo de um arquivo de origem. Esse caminho pode ser visto atravs do comando ls -l. Arquivos de Dispositivos: Tambm conhecidos como Device Files. Os sistemas Linux tm uma peculiaridade que deve nos chamar a ateno, tudo o que existe dentro do sistema representado por um arquivo. Os dispositivos ligados ao computador so representados atravs dos arquivos de dispositivos. Esses arquivos podem ser vizualizados no diretrio /dev, utilizando o comando ls /dev. Os arquivos de dispositivos podem ser de dois tipos: de caractere (podem ser acessados somente byte a byte, como, por exemplo, a porta paralela ou serial) e os de bloco (so acessados em blocos de bytes como, por exemplo, o disco rgido ou o CD/DVD). Pipes: Utilizados para prover comunicao entre processos no computador e ficam localizados no diretrio /dev. Sockets: Tem uma funo parecida com os Pipes, mas tambm intercomunica processos entre computadores ligados em rede.

Os tipos de arquivos podem ser vizualizados atravs do comando ls -F. Execute os comandos ls -F /dev, ls -F /etc e ls -F /bin, voc poder vizualizar o tipo de cada um dos arquivos representado por um smbolo no final do nome do arquivo. O smbolo * significa que o arquivo executvel. O smbolo ~ significa que o arquivo um backup. O smbolo / significa que o arquivo um diretrio. O smbolo @ significa que o arquivo um link simblico. O smbolo = significa que o arquivo um socket. O smbolo | significa que o arquivo um pipe.

Os arquivos que no possuem nenhum smbolo so os comuns como, por exemplo, arquivos de texto, planilhas, slides, vdeos, fotos, etc. Outro mtodo comum de verificar o tipo de um arquivo atravs do comando ls, como exemplificando a seguir: $ ls -l documento.txt -rw-r--r-1 aluno grupo01 36720 Jul 22 14:25 documento.txt O Comando mostrado serve para exemplificar como listar as informaes sobre bum arquivo. A primeira informao retornada por esta listagem um conjunto de 10 caracteres. Para este captulo, ser analisado apenas o caractere inicial, que indica o tipo de arquivo:

Atributos de arquivos d l b c s p 4.4 Exerccios

Descrio Arquivo regular Diretrio Link simblico Dispositivos orientados a bloco ( discos , memria , CD-ROM) Dispositivos orientados a caracteres (modem, porta serial ) Socket Pipe

1-) Verifique os tipos de arquivos presentes no diretrio /etc e escreva

abaixo quais voc encontrou. ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ 2-) O que so Links? ____________________________________________________________ ____________________________________________________________ 3-) Defina arquivos em sistemas Linux. ____________________________________________________________ ____________________________________________________________

Captulo 5
Introduo ao Shell
Todo o usurio deve ser capaz de trabalhar com a linha de comando e seqncias de comandos vlidos possibilitando definir, referenciar e exportar variveis de ambiente, usar os recursos que podem aplicar os mais diversos comandos. A interface principal de um usurio Linux com o sistema operacional, no modo texto, a linha de comando, e o interpretador de comandos que fornece esta interface, recebendo os dados do usurio e enviando-o para o sistema. Ao final do captulo, voc dever ser capaz de: Compreender o que um shell Compreender quais so os propsitos Relacionar e entender conceitos como console, caminho e comando.

5.1 Shell Interativo O Shell Interativo um ambiente poderoso de programao no qual capaz de automatizar operaes no sistema Linux.Tornando-se com isso , a forma mais comum de se interagir com o sistema .Quando voc solicita a execuo de um shell, apresenta-se um prompt de comando possibilitando aceitar os comandos a partir de um dispositivo de entrada, geralmente o teclado. Fundamentos das variveis de shell O Shell fornece uma camada de interface entre o kernel e o usurio.O Shell bash o padro GNU, bastante intuitivo e flexvel.Usado tanto por usurios iniciantes como por usurios experientes e programadores. O Sistema Linux apresenta um prompt,cujo o qual proporciona aceitar comandos , atravs de um nico caracter, como $ ou #. 5.2 O Shell Bash O bash tem, basicamente, trs caractersticas importantes para se destacar: Automatizar: no uso interativo, o shell fornece uma linha de comando para o usurio e espera seus comandos serem digitados para process-los e repass-los para serem executados pelo sistema. Personalizao de sesso: o shell define muitas variveis, para localizao do diretrio inicial, para o spool de correio, para controle da sesso, etc. Programao: Para se programar no shell, utilizam-se scripts, que nada mais so do que a combinao de comandos do shell com comandos do sistema.

5.3 Prompt de comando Os comandos emitidos ao se logar em um sistema Linux via modo texto ser apresentado ,como abaixo: Exemplo: [usuario@linux usuario]$ usuario: indica o nome do usurio no momento antes do arroba. linux: nome da mquina depois do arroba. usuario: diretrio no qual o usurio se encontra no momento. Observao: Para o usurio root, a nica diferena no sinal final, ser mostrado uma cerquilha ( # ). Exemplo: [aluno@user aluno]# Digitando comandos no prompt de comando: $ ls $ ls l $ ls l a $ ls -la 5.4 Conceitos de Caminho No sistema Linux os arquivos podem ser localizados / visualizados de duas formas: atravs de seu caminho relativo ou de seu caminho absoluto. O caminho absoluto o caminho completo, desde o diretrio raiz at onde o usurio se encontra, e o caminho relativo o caminho para qualquer diretrio, mas a partir do diretrio onde o usurio se encontra atualmente. Um exemplo genrico: caso o usurio desejasse voltar um diretrio, ele poderia usar o caminho absoluto (digitando desde o diretrio / at o diretrio desejado), ou digitando .. , que seria o equivalente a voltar um diretrio, relativo ou atual.

5.5 - Conceito: Terminal ou Console a rea onde mostrado o layout do shell. Em modo texto, ele chamado tambm de terminal virtual (consistindo apenas de linha de comando do Shell).No GNU/linux possvel alternar entre os terminais virtuais utilizando as teclas ALT+Fn, onde n pode variar de 1 at 6 na configurao padro, pois beneficia a economia de memria RAM.

5.5 Exerccios 1-) Pesquise o motivo pelo qual o Bash o shell mais utilizado em sistemas Linux. ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ 2-) Conceitue comando. ____________________________________________________________ ____________________________________________________________

Captulo 6
Usar Permisses e Propriedades de Arquivos
Os usurios e administradores de sistema de uma forma geral

devem ser capazes de controlar o acesso aos arquivos e diretrios atravs de permisses apropriadas.Os arquivos do sistema como os dos usurios precisam ser protegidos contra modificaes no-autorizadas e principalmente ter o controle de acesso para que se permita operaes seguras, proporcionando assim a integridade de todo o sistema . Nesse captulo voc ser capaz de: Distinguir nveis e tipos de permisso em arquivos e diretrios; Utilizar os comandos chmod e chown para modificar propriedades e permisses de arquivos e diretrios; Distinguir os modos octal e textual para os parmetros dos comandos de mudana de permisso; Entender e utilizar permisses especiais, como stick bit e suid bit

6.1 Controle de Acesso do Linux A segurana no sistema Linux um sistema multiusurio e necessrio ter uma conta de acesso para utiliz-lo. Alm da autenticao para acesso ao sistema, uma outra funcionalidade relativa ao conceitos de usurios e grupos o de permisses de arquivos, onde definido quem e como pode acessar determinados arquivos e diretrios. As permisses so as informaes que indicam que tipo de acesso pode ser realizado em determinado diretrio ou arquivo. No Linux o sistema de arquivos possibilita que sejam atribudos direitos de acesso diferenciados para os usurios do sistema. A cada arquivo ou diretrio do sistema associado um proprietrio, um grupo e seus respectivos direitos de acesso, ou permisses.

O Controle de acesso definido por trs classes de usurios: Usurio/User:Define-se como sendo o usurio proprietrio do arquivo. Grupo/Group: o grupo proprietrio do arquivo. Outros/Other:Aplica-se a todos os outros usurios do sistema.

Para cada uma dessas trs classes de usurios,existem trs tipos de permisses,tanto para arquivos e diretrios: Leitura (read): Permisso para visualizar (examinar) o contedo do arquivo e listar o contedo do diretrio, simbolizada por r; Escrita (write): Permisso para alterar o contedo do arquivo e criar e remover arquivos no diretrio, simbolizada por w; Execuo (execution): Permisso para executar o arquivo, simbolizada por x.

As trs permisses (r,w,x)se destinam s trs classes de usurios: usurio, grupo e outros. Observando que cada uma tem permisses de leitura, escrita e execuo. Usurio w Grupo w Outros w

Exemplo: rw-rw-r-Obs.: Este exemplo de arquivo configurado dar permisses de leitura/escrita para o usurio e ao grupo, e permisso de somente leitura para todos os demais. A combinao dos nveis de permisso com os tipos de permisso forma o conjunto de propriedades para cada arquivo ou diretrio. Estas propriedades so atribudas com o objetivo de determinar quem pode

acess-lo, ler seu contedo ou mesmo executar algum programa. 6.2 Exibindo as Permisses As permisses de um arquivo so visualizados por comandos como ls. Basta digitar no prompt: ls l, que realizar uma listagem longa e detalhada no diretrio atual, ou seja, usa formato longo para listagem, permisses, data, dono, grupo e etc. Vamos utilizar esse comando para verificar as permisses no diretrio /etc. -rw-r--r-- 1 root root 149 2009-07-13 21:25 00-header drwxr-xr-x 4 root root 4096 2009-10-28 17:02 acpi -rw-r--r-- 1 root root 2986 2009-10-28 16:55 adduser.conf -rw-r--r-- 1 root root 48 2010-06-29 14:42 adjtime drwxr-xr-x 2 root root 20480 2010-06-29 16:04 alternatives -rw-r--r-- 1 root root 395 2009-09-17 15:32 anacrontab drwxr-xr-x 7 root root 4096 2010-08-04 15:09 apache2 drwxr-xr-x 6 root root 4096 2009-10-28 16:58 apm drwxr-xr-x 2 root root 4096 2010-02-02 14:53 apparmor drwxr-xr-x 7 root root 4096 2010-03-24 20:56 apparmor.d drwxr-xr-x 4 root root 4096 2010-02-02 14:49 apport drwxr-xr-x 5 root root 4096 2010-03-24 20:27 apt -rw-r----- 1 root daemon 144 2009-09-15 09:09 at.deny drwxr-xr-x 3 root root 4096 2010-02-02 14:49 avahi -rw-r--r-- 1 root root 3770 2009-05-04 02:58 axelrc -rw-r--r-- 1 root root 1802 2010-03-31 15:38 bash.bashrc -rw-r--r-- 1 root root 1754 2009-09-14 01:09 bash.bashrc~ -rw-r--r-- 1 root root 219331 2009-10-05 12:37 bash_completion drwxr-xr-x 2 root root 4096 2010-08-04 15:09 bash_completion.d -rw-r--r-- 1 root root 344 2009-10-07 02:01 bindresvport.blacklist -rw-r--r-- 1 root root 321 2009-10-22 17:54 blkid.conf lrwxrwxrwx 1 root root 15 2010-01-28 14:51 blkid.tab -> /dev/.blkid.tab drwxr-xr-x 2 root root 4096 2009-10-28 17:02 bluetooth A primeira coluna (da esquerda para a direita ) a que contm todas

as permisses; a segunda indica os links diretos do arquivo, a terceira e quarta colunas especificam o nome do usurio e grupo ao qual pertencem o arquivo. As demais colunas mostram informaes adicionais sobre o arquivo. 6.3 Modo de Permisso Octal e Textual Para alterar as permisses e propriedades de arquivos e diretrios, existem vrios comandos disponveis. Uma similaridade entre eles que os parmetros de nveis e tipos de permisses podem ser indicados de duas formas: Modo Octal: No formato octal, as permisses so representadas por nmeros , onde leitura representado pelo valor: 4, a escrita por 2 e execuo por 1. Somando-se os valores obtm-se a permisso desejada para cada nvel. Usurio Read-r 4 Modo de Representao Octal Grupo Outros Write-w Execute-x 2 1

Exemplo: Definindo o modo de um arquivo como: -rw-r--r--, utilizando a representao octal. $ chmod 644 arq.txt Modo Simblico: No modo simblico, utilizam-se os caracteres u para representar o usurio dono do arquivo, g para grupo dono do arquivo , o para outros e o a para todas as classes, com um sinal de mais ( + ) para adicionar a permisso e menos ( - ) para retirar a permisso e ( = ) para definir permisso exatamente. Por exemplo: $ chmod g=rwx arquivo

Modificando os Modos de Acesso O comando chmod usado para alterar os modos de acesso para arquivos, os quais podem ser especificados de modo de acesso octais ou simblicas. importante ressaltar que o usurio dever ter permisso para fazer as modificaes ( como por exemplo: deve ser root, deve ser dono do arquivo, ou deve estar no grupo do arquivo, com permisso de escrita). Sintaxe: chmod [opes] modo_octal arquivos chmod [opes] modo_simblico arquivos Opes usadas: -c : semelhante ao modo verbose, mas s relata as modificaes. -R : usa o modo recursivo, -v : usa o comportamento verbose, relatando todas as aes para todos os arquivos. Exemplo: chmod u+rw, g+x documento.txt chmod 610 documento.txt chmod +x binario.sh 6.4 - Modificando Proprietrios e Grupos O comando chown permite a alterao do dono e do grupo relacionado ao arquivo, ou arquivos, selecionados (change owner). Por Exemplo: chown :grupo02 documento.txt chown aluno2:grupo02 documento.txt O comando chgrp altera apenas o grupo para o(s) arquivo(s)

indicados (change group). O grupo deve ser vlido, e o usurio deve ter permisses para executar isto. chgrp coisas texto1 texto2 Imagens/ 6.5 - Permisses Padro ( umask ) Todo o arquivo ou diretrio em um sistema Linux, ao ser criado, recebe permisses iniciais, indicando o acesso para o proprietrio do arquivo, para o grupo ao qual pertence, bem como para os outros usurios. umask: Este comando define as permisses padro dos arquivos que sero criados ou copiados pelo usurio. Sintaxe: umask [opes ] modo Onde modo informa a mscara de criao que ser fornecida ao usurio/grupo/outros. Ele pode ser informado de duas maneiras: Como um nmero octal (022) Como uma mscara semelhante utilizada pelo comando chmod ( u=rwx,g=rx,o=rx)

Desta maneira, possvel controlar automaticamente as permisses dos arquivos que so criados pelo usurio. O comando executado sem parmetros exibe a mscara atual. Permisses Especiais SUID: $ chmod u+s arquivo_executvel SGID: $ chmod g+s arquivo_executvel

Stick Bit: $ chmod +t diretrio_compartilhado 6.6 - Exerccios: 1-) O comando utilizado para alterar as permisses de arquivos ou diretrios : a) chown b) ln c) chmod d) charset e) chgrp 2-) As permisses de um arquivo definem ( em sequncia ) as propriedades a: a) b) c) d) Dono do arquivo, membros do grupo e identificao de diretrio. Membros do grupo, dono do arquivo e outros usurios. Dono do arquivo, membros do grupo e outros usurios. Identificao de diretrio, dono do arquivo, membros do grupo, outros usurios.

3-) O comando utilizado para fazer alteraes relativas ao dono e grupo relacionados a um ou mais arquivos : a) b) c) d) chmod chown chgrp umask

4-) O comando ____________ define a permisso padro para arquivos novos, criados pelo usurio. a) chmod

b) chown c) umask d) chgrp

Captulo 7
Administrao de Sistemas Linux
Alm de manter as mquinas e os sistemas funcionando, um administrador tambm tem que saber lidar com pessoas, problemas e presso. Tambm dever ser ativo e pesquisador, alm de resolver as falhas com rapidez.Ao final deste captulo, voc dever capaz de: Saber o que ser um Administrador de Sistemas e qual o seu papel dentro de uma empresa Saber quais so os canais de relacionamento e obteno de informaes

7.1 - O Administrador de Sistemas Linux O Administrador de Sistemas o tcnico responsvel por instalar, configurar e manter funcionando um ou mais servidores. Sua funo vital para o andamento normal do trabalho em qualquer empresa que tenha computadores em rede local. Apesar de quase nunca aparecer, sem o cuidado e dedicao de um administrador, um empresa pode simplesmente parar. Diferentemente de um computador pessoal, que, mesmo sem manuteno alguma pode continuar funcionando por anos a fio, um servidor tem outra realidade: Vrios usurios acessando o mesmo sistema simultaneamente; Cada usurio acessa vrios dados e aplicativos do servidor durante todo o dia de trabalho; E-mails, documentos internos, sistemas corporativos, tudo fica centralizado no servidor; Tambm fica no servidor toda a conectividade da empresa com o mundo externo (internet); A tendncia cada vez mais concentrar tarefas e procedimentos no servidor, tornando-o cada dia mais importante e essencial empresa; O servidor praticamente uma bomba armada, pronta para explodir e causar estragos caso algo d errado.

A responsabilidade de um administrador imensa: dados, aplicativos, usurios e conectividade. Tudo o que a empresa precisa para funcionar est sob seu comando. Tudo tem que simplesmente funcionar, todos os dias da semana, o ano todo, a obrigao do administrador. Por isso esse mantenedor da infra-estrutura corporativa geralmente lembrado apenas quando algo falha, e nessas horas preciso ter calma para lidar com a impacincia e irritao alheia. Ser um administrador lidar com presso. A presso de estar tudo sempre funcionando e a presso do resto da empresa quando algo para. Geralmente est em planto 24(horas)/7(dias da semana) pois as mquinas no tm hora para dar problemas. Apesar da presso, a importncia de seu trabalho indiscutvel e o administrador pea-chave em uma empresa. Com o tempo, a familiaridade com os servidores e seus servios tornam o dia-a-dia mais calmo e a automatizao de tarefas padroniza e garante a qualidade na execuo. Um administrador experiente tem tempo de sobra para pesquisar e se aperfeioar, enquanto as mquinas fazem seu trabalho e scripts cuidam dos problemas mais simples. 7.2 - Tarefas do Administrador Um administrador precisa compreender o funcionamento e dominar as ferramentas de gerenciamento e configurao do sistema. ele o responsvel tanto pela configurao inicial como, principalmente, pela manuteno do bom funcionamento do sistema. Uma vez que um bom administrador precisa compreender o funcionamento do sistema e precisa resolver problemas, no h uma frmula mgica para sua formao. Os principais requisitos de um bom administrador so profundos conhecimentos e ampla experincia. Portanto, o contedo deste e de qualquer outro material deve ser sempre considerado introdutrio. De maneira resumida, podemos dizer que so requisitos de um

administrador de sistemas: Conhecer o sistema a fundo, para no s resolver problemas rapidamente, mas tambm preveni-los atravs de boas polticas de administrao. Gerenciar o sistema como um todo, o que inclui a escolha e instalao de softwares, criao e gerenciamento de usurios, polticas de segurana, polticas de backups, etc. Oferecer documentao e suporte aos usurios do sistema. Escrever scripts em Shell para automatizar tarefas e padronizar procedimentos. Pacincia e bom trato com os usurios.

Captulo 8
Edio de Arquivos Texto com o VI/VIM
Como j vimos antes, praticamente tudo que existe dentro do Linux quanto a configurao de sistema, tarefas de administrao e customizao do sistema representado atravs de arquivos de texto. Durante esse captulo, vamos discorrer sobre a utilizao dos editores de texto Vi e Vim, criados h muito tempo e at hoje utilizados por administradores e usurios de sistemas Linux. Ao final do captulo, o aluno dever ser capaz de: Conhecer a histria dos editores de texto Vi e Vim; Conhecer os principais comandos utilizados nesses editores; Ser capaz de digitar e editar textos atravs do Vi e Vim.

8.1 Por que VI ? Por volta de 1980, no era nada comum a existncia de editores de texto, principalmente na variedade de hoje. Na grande maioria dos editores de texto dessa poca no era possvel ver o texto, isso mesmo, era necessrio editar o texto sem vizualiz-lo. Um exemplo disso o editor de texto Ed existente at hoje em distribuies Linux. No terminal digite o comando ed /boot/grub/menu.lst , aparecer somente um nmero que representa a quantidade de caracteres existentes no arquivo, mas o texto em si, nada. Digite Q e pressione a tecla enter para sair do Ed. No incio da dcada de 80, foi criado VI ( Visual Interface), um dos primeiros editores de texto onde o usurio poderia ver todo o texto e realizar as alteraes necessrias. Lembre-se que nessa poca no existia interface grfica, portanto e Vi (assim como o Vim) um editor de texto que utiliza comandos para realizar as edies e demais tarefas. Em 1992, foi criado um novo editor de texto chamado Vim (VI iMitator), ele era uma cpia do Vi, porm com muitas funcionalidades a mais. Com o tempo, muitas outras funcionalidades foram sendo adicionadas ao Vim que, a partir da, passou a ser chamado de VI iMproved (Vi melhorado). Hoje, na grande maioria das distribuies Linux, o Vi foi substitudo pelo Vim. Muitos usurios acham que utilizam o Vi, porm na verdade, esto usando o Vim. At mesmo o arquivo executvel do Vi aponta para o arquivo do Vim. 8.2 Utilizao Bsica Para executar o editor Vim basta digitar Vim no terminal e pressionar a tecla enter. Ser aberta a tela de apresentao do Vim com o texto abaixo:

~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

VIM - Vi IMproved

version 7.1.314 by Bram Moolenaar et al. Vim is open source and freely distributable Help poor children in Uganda! :help iccf<Enter> for information :q<Enter> :help<Enter> or <F1> :help version7<Enter> to exit for on-line help for version info

type type type type

Lembrando que essa tela pode ser diferente de acordo com a verso. Nessa tela, j vm alguns comandos bsicos do Vim, como o comando help que exibe tpicos de ajuda ou o comando q que sai do editor. Qualquer comando utilizado no Vim deve ser precedido por : (dois pontos), ou seja, para abrir o help do Vim digite :help pressione enter. Agora digite :q para sair do help do Vim e novamente :q para finalizar o Vim. Agora vamos criar um texto no Vim. Digite no terminal: vim texto e pressione enter. Pronto, agora o vim est pronto para ser utilizado. Note que no rodap do aplicativo apareceu o seguinte texto: "texto" [New File], mostrando que texto um arquivo novo. Pressione a tecla i do teclado para iniciar o modo de insero de texto. Voc poder notar que, ao pressionar a tecla i, apareceu a palavra -INSERT --, mostrando que o modo de insero est ativado e esperando que o usurio digite o texto. Vamos digitar a frase: Curso de Administrao de Sistemas Linux. Dica: no Vim existem dois modos de execuo. O modo de comando e o modo de insero. simples saber em qual modo o Vim se encontra, sempre que estiver utilizando o modo de insero a palavra -INSERT estar aparecendo no rodap do aplicativo, quando no estiver aparecendo porque estamos no modo comando. Para salvar esse arquivo, primeiramente necessrio sair do modo de insero de texto e voltar para o modo de comando. Para isso, pressione

a tecla Esc, note que a palavra -- INSERT sumiu do rodap do Vim. Agora digite :w e pressione enter para salvar o arquivo. Digite :q e pressione enter para sair do Vim. Alm dos comandos :w e :q existem outros para salvar e sair do Vim, so eles: :wq Salva e sai; :x ZZ :q! Salva e sai; Salva e sai; Sai forado, ou seja, sai do programa imediatamente sem salvar seu contedo.

Abra novamente o arquivo texto atravs do comando vim texto e digite o texto abaixo para que voc possa utilizar as outras funes e comandos do vim.
Curso de Administrao de Sistemas Linux SENAC - Rondnia, Formando mais que alunos, profissionais. Diga no pirataria!!! Use software LIVRE!!

Salve o arquivo e feche o mesmo. Agora abra o arquivo da seguinte forma: vim texto +, note que o arquivo foi aberto com o cursor posicionado no incio da ltima linha. Feche novamente o arquivo e utilize as formas abaixo descritas para abrilo: vim texto +3 Abre o texto com o cursor no incio da terceira linha.

vim texto +/LIVRE Abre o texto com o cursor no incio da primeira linha que possua a palavra LIVRE. Essas formas descritas acima so recomendadas para textos muito grandes a fim de agilizar uma possvel edio.

Alm do comando i, existem outros comandos que tambm abrem o modo de insero, mas cada um de uma forma diferente. Para test-los, abra o texto que foi criado anteriormente e utilize os comandos descritos abaixo pressionando Esc para sair do modo de insero quando necessrio. A o O Inicia o modo de insero com o cursor no final da linha. Insere uma linha vazia abaixo da linha onde se encontra o cursor e inicia o modo de insero. Insere uma linha vazia acima da linha onde se encontra o cursor e inicia o modo de insero.

8.3 Comandos principais Voltando ao modo comando, podemos utilizar algumas teclas e combinaes para movimentar o cursor pelo texto a fim de facilitar o trabalho de edio do mesmo. Vejamos alguns atalhos: Ctrl+f No caso de um texto muito grande, que ocupe vrias linhas, o Vim ir dividi-lo em telas, e esse comando avana para a tela seguinte; No mesmo caso do comando anterior, porm ele retorna para a tela anterior; Faz com que o cursor seja movido para a primeira linha da tela; Leva o cursor para o meio da tela; Faz com que o cursor seja movido para a ltima linha da tela; Movimenta o cursor para o prximo caractere esquerda; Movimenta o cursor para o prximo caractere direita;

Ctrl+b H M L h l

j k w b 0 (zero) $ G nG u Ctrl+r Ctrl+g /

Movimenta o cursor para a prxima linha abaixo; Movimenta o cursor para a prxima linha acima; Movimenta o cursor para a prxima palavra; Movimenta o cursor para a palavra anterior; Leva o cursor ao incio da linha corrente; Movimenta o cursor para o ltimo caractere da linha corrente; Leva o cursor ltima linha do texto; Leva o cursor linha de nmero n (deve substituir o n por um nmero inteiro qualquer); Desfaz a ltima ao; Refaz a ltima ao desfeita; Mostra o nome do arquivo, a linha atual e o total de linhas; Localiza uma palavra no texto, procurando a partir da posio do cursor indo para baixo. Exemplo: /Linux procura pela palavra Linux; Localiza uma palavra no texto, procurando a partir da posio do cursor indo para cima. Exemplo: ?Linux procura pela palavra Linux; Repete a execuo dos comandos / e ?; Apaga o caracter onde o cursor se encontra; Apaga toda a linha onde o cursor estiver posicionado; Apaga o contedo da linha a partir da posio do cursor at o fim; Faz a unio entre a linha onde o cursor est posicionado e a linha abaixo; Seleciona o texto de acordo com o movimento do cursor. Copia o texto selecionado.

n x dd D J v y

d p

Recorta o texto selecionado. Cola o que foi copiado ou recortado.

Ainda existem uma enorme srie de comandos para o editor Vim, porm com certeza nenhum humano conseguiria decorar todos os comandos, porm fica uma dica de estudo e um material de referncia para que voc possa analisar e utilizar quando necessrio. Sugiro a utilizao de cada um desses comandos para a fixao e, principalmente, a utilizao dos comandos de copiar e colar. 8.4 Outros editores Existem outros editores de texto em sistemas Linux bem conhecidos, como o emacs, o mcedit ou o nano. O editor nano tambm um dos mais utilizados em sistemas Linux, principalmente por ser bastante simples e as suas funes mais importantes esto escritas abaixo da tela do aplicativo. Para utilizar esse editor, digite o comando nano e tecle enter.

8.5 Exerccios 1-) Para que serve o sinal ! no comando :q! Dentro do Vim? ________________________________________________ ________________________________________________ 2-) Quais as diferenas entre o modo de insero e o modo de comando? ________________________________________________ ________________________________________________ ________________________________________________ 3-) Alm do comando i, quais outros comandos alternam para o modo de insero? ________________________________________________ ________________________________________________ 4-) Quais so as opes existentes para salvar um arquivo? ________________________________________________ ________________________________________________ 5-) Descreva os comandos que podem ser utilizados no editor nano. ________________________________________________ ________________________________________________ ________________________________________________ ________________________________________________

Captulo 9
Gerenciamento de Pacotes
Mais do que simples executveis, os programas no Linux so compostos por vrios arquivos, como tradues, documentao e dados, tornando complexa a tarefa de instalar e remover programas manualmente. Para melhorar o processo, os programas so empacotados em um nico arquivo, e um gerenciador utilizado para tomar conta da manuteno deles. Ao final deste captulo, dever ser capaz de: Entender o que so pacotes RPM Utilizar o comando RPM para instalar, remover, atualizar e extrair informaes de pacotes Utilizar a ferramenta APT para instalar, remover, atualizar e extrair informaes de pacotes Manter o sistema sempre atualizado com os pacotes mais recentes

9.1 - O Conceito de Pacotes Em um sistema como o Linux, centenas de programas e ferramentas so instalados e rodam em um mesmo ambiente para que tudo funcione conforme esperado. A manuteno dessa base de programas instalados sempre um desafio: a complexidade alta e um descuido pode deixar o sistema inoperante. impraticvel que o administrador tenha que manualmente copiar arquivos para os diretrios corretos, definir permisses, configuraes e outras tarefas que envolvem a instalao de um programa. Posteriormente, quando precisar remover o programa, ainda resta lembrar de todos os arquivos utilizados para apag-los um a um. Usar pacotes uma maneira de distribuir programas de forma padronizada. Um pacote um arquivo nico que contm vrios outros arquivos, e que, tambm guarda informaes variadas sobre o programa , bem como as instrues de como instal-lo e remov-lo do sistema. Muito mais complexo que um simples tarball( juntar vrios arquivos em um s com o comando tar ), um pacote carrega procedimentos de instalao que podem envolver a execuo de programas, testes, configurao do sistema e at mesmo a remoo de verses anteriores, programas antigos ou incompatveis. De maneira similar, uma atualizao ou remoo de um pacote pode necessitar de procedimentos a serem executados antes de ser efetivada. Um pacote tambm traz informaes sobre pr-requisitos para seu funcionamento, chamadas dependncias. Um nico pacote pode precisar de que vrios outros j estejam instalados no sistema para funcionar corretamente. Usando requisitos, o programa fica mais enxuto, aproveitando partes do sistema, sem precisar recodific-las. Outra vantagem de se ter um esquema de dependncias, que um pacote grande pode ser dividido em vrios pacotes menores, possibilitando ao usurio instalar somente os componentes desejados e agilizando os procedimentos de download.

Cada pacote traz diversas informaes sobre o programa que abriga, como: sua verso, licena, arquitetura, endereo de internet, descrio, espao em disco necessrio e listagem dos arquivos que o compem com suas respectivas permisses. 9.2 - O Gerenciador de Pacotes Um pacote sozinho no faz nada, ele no um executvel ou um instalador como os .EXE do mundo Windows. Ele traz consigo o programa, seus dados e os procedimentos de instalao, mas no os executa. O banco de dados de pacotes tambm no tem aes, ele serve para armazenamento e busca somente. Est faltando uma pea para fechar o conceito: um gerenciador. O gerenciador de pacotes o programa que efetivamente faz. Ele o responsvel por extrair os dados e informaes de um pacote, executando os procedimentos de instalao, atualizao e remoo deles no sistema. E mais, o gerenciador tambm consegue lidar com situaes complicadas como a mudana de nome de um pacote, alterao de sua estrutura interna de arquivos e instalao simultnea de vrios pacotes interdependentes em um nico passo. Os dois principais gerenciadores de pacotes disponveis no mundo Linux so: dpkg: criado pela distribuio Debian e usado por todos os seus clones. RPM: criado pela distribuio Red Hat

9.3 - O Comando rpm O gerenciador de pacotes RPM usado na console atravs do comando rpm, que possui diversas opes, sendo uma sute completa de manipulao de pacotes. Os pacotes feitos para este gerenciador chamam-

se pacotes RPMe sua nomenclatura tem um formato especial: Formato: nome-verso-release.arquitetura.rpm Exemplo: bash-2.05b-56711cl.rpm Opes principais: -q -qa -qi -ql -qlv -qf -p -ivh -Uvh -e Exemplos: # rpm ivh tree-1.4b3-26810cl.i386.rpm Preparando.. ##############################[100%] 1:tree ##############################[100%] # rpm q tree tree-1.4b3-26810cl # rpm e tree # rpm q tree Pacote tree no est instalado rpm [opes] [pacotes] Informa a verso atual do pacote informado, caso instalado Lista todos os pacotes instalados Mostra as informaes gerais do pacote informado Mostra os arquivos que compem o pacote informado Mostra os arquivos que compem o pacote informado, em detalhes Informa o nome do pacote ao qual o arquivo informado pertence Aplica a pesquisa em um arquivo de um pacote no instalado Instala um ou mais pacotes, mostrando status Atualiza um pacote j instalado para uma verso nova Remove um ou mais pacotes do sistema

9.4 - A Ferramenta APT A ferramenta APT foi criada para suprir a necessidade de automatizao do procedimento de baixar pacotes e instal-los, j resolvendo todas as dependncias e conflitos que possam existir. Inicialmente escrita para funcionar com o gerenciador dpkg do Debian, a ferramenta foi adaptada para funcionar com o rpm. Alm de resolver dependncias, o APT funciona com o conceito de repositrios de pacotes RPM. O repositrio um lugar onde o APT busca pelos pacotes e a grande vantagem poder configurar a pesquisa em vrios repositrios. Assim, mesmo que cada pacote esteja em um local diferente, para o usurio transparente, pois a ferramenta procura, baixa e instala automaticamente. A ferramenta APT composta de vrios comandos, sendo os mais utilizados: apt-get: O comando principal, usado para a maioria das tarefas que envolvem pacotes. apt-cache: Pesquisa e extrai informaes sobre a base de pacotes ( instalados ou no ). apt-cdrom: Adiciona um CD com pacotes RPM lista de repositrios. apt-get [opes] Atualiza o banco de dados com a lista de pacotes do repositrio. Checa a integridade do seu sistema. Instala o pacote PACOTE e suas dependncias.Se o pacote j estiver instalado, tenta atualiz-lo. Remove o pacote PACOTE e todos os outros pacotes que dependem dele. Baixa os fontes do pacote PACOTE

update check install PACOTE remove PACOTE source PACOTE

upgrade dist-upgrade clean

Atualiza todos os pacotes instalados no sistema que possuam verso mais recente disponvel. Similar ao upgrade, porm atualiza tudo, inclusive kernel. Remove os arquivos de pacotes j instalados, no mais necessrios.

9.5 - Exerccios 1-) Relacione os comandos com a sua descrio:


(A) rpm ql bash (B) rpm e bash (C) rpm qf bash (D) apt-get source bash (E) rpm qa | grep bash (F) rpm qi bash (G) apt-get depends bash (H) apt-get clean ( ) Lista todos os pacotes que tm bash no nome ( ) Baixa os fontes do pacote bash ( ) Extrai informaes do pacote bash ( ) Lista os pr-requisitos do pacote bash ( ) Nome do pacote ao qual o arquivo bash pertence ( ) Remove arquivos .rpm de pacotes j instalados ( ) Remove o pacote bash ( ) Lista os arquivos do pacote bash

2- ) Para manter o sistema sempre atualizado com os pacotes mais recentes, basta executar os seguintes comandos: ( ) apt-get update upgrade ( ) rpm update ; rpm upgrade ( ) apt-rpm upgrade ; apt-rpm upgrade ( ) apt-get upgrade ; apt-get update ( ) apt-get update ; apt-get upgrade

Captulo 10
Expresses Regulares
Uma Expresso Regular ( ER ) um mtodo formal de se especificar um padro de texto. Este padro pode ter tamanho varivel, ser abrangente ou at prever falhas de digitao. Ao final deste captulo, dever ser capaz de: Entender o que so e como funcionam as expresses regulares; Utilizar essas expresses nos comandos necessrios

10.1 As Expresses Regulares As expresses so formadas por caracteres como *, + e ^. Cada um possui uma funo especial, funcionando como uma ferramenta para auxiliar na busca de textos. Usando apenas palavras e texto normal, impossvel fazer pesquisas genricas como: um nmero de trs dgitos , ou linhas que comecem com uma vogal . Vrios aplicativos do sistema entendem as expresses, entre eles: Leitores de e-mail Navegadores Editores de texto Sutes Office Linguagem de programao Filtros de servidores de e-mail e Proxy Ferramentas de linha de comando ( grep, find, sed, awk )

Por ser um conceito largamente utilizado em uma diversidade de aplicativos, o tempo investido em seu aprendizado recompensado rapidamente. O editor VIM tem suporte total a Expresses Regulares. E seu domnio agiliza em muito o uso do editor. Na programao, as expresses facilitam a validao e busca de dados. Para o administrador, as expresses so especialmente teis para pesquisar e extrair informaes de arquivos de log do sistema e para configurar sistemas com possibilidades de filtragem e barramento como o filtro Procmail e o Proxy Squid.

10.2 Metacaracteres So os caracteres especiais utilizados em ERs, chamados metacaracteres. Eles podem ser combinados entre si e com outros caracteres normais para formar uma expresso completa. Meta ^ $ Meta [abc] [a-d] [^abc] Nome circunflexo cifro Nome lista lista lista negada Posicionamento
Representa o comeo da linha Representa o fim da linha

Texto
Casa as letras aou bou c Casa as letras aou bou cou d Casa qualquer caractere, excetoa,be c

10.3 Como Testar Expresses na Linha de Comando Na linha de comando, a melhor ferramenta para se testar o uso de ERs o comando grep. Aplicando a ER em um texto, o comando mostra todas as linhas que casam com aquela expresso. Um arquivo bom de se usar para praticar o banco de dados de usurios do sistema, o arquivo passwd. Arquivo: /etc/passwd Por exemplo, para extrair somente a linha do usurio root: cat /etc/passwd | grep root O resultado ser: root:x:0:0:root:/root:/bin/bash

10.4 Exerccios: 1-) Qual a expresso que combinada com o comando grep, procura por linhas que contenham as palavras squide error? ( ) squid AND error ( ) (squid&&error) ( ) squid | error ( ) squid.*error ( ) squid + error 2-) Qual expresso casa com nmeros de telefone de 8 dgitos, como 99887766 ou 9119-1234? ( ) [0-9] [0-9] [0-9] [0-9] - [0-9] [0-9] [0-9] [0-9] ( ) [0-9] {4} - [0-9] {4} ( ) .... - .... ( ) [0-9] {2}[0-9] [0-9] - [0-9] {4} ( ) Todas as anteriores

Captulo 11
Gerenciamento de usurios e grupos
Uma caracterstica bem conhecida dos sistemas Linux o fato de ser multiusurio assim como os sistemas Unix (do qual ele se originou) e Windows. Essa caracterstica permite que vrios usurios possam usar o sistema simultaneamente sem atrapalhar as atividades e sem modificar os documentos uns dos outros. Para o administrador de sistemas essencial conhecer todos os recursos e requisitos para gerir contas de usurio e os grupos que iro comportar esses usurios de forma eficiente e principalmente segura. Ao final do captulo, o aluno dever ser capaz de: Definir o que um usurio e quais as suas propriedades; Criar e remover usurios alm de alterar as suas configuraes; Aplicar comandos para gerenciar usurios; Conhecer e alterar os arquivos de usurios e grupos.

11.1 O que um usurio? Essa a pergunta que se encaixa muito bem para iniciar o estudo dessa parte to importante da administrao de um sistema, seja ele qual for, pois sem um usurio no haveria motivo nenhum para existirem sistemas ou qualquer software. Podemos definir um usurio como uma pessoa que possui uma identificao (na maioria das vezes um nome e uma senha), a qual permite que ela entre no sistema e faa as alteraes e interaes necessrias. Porm, esse usurio nem sempre ser uma pessoa, bem comum em sistemas linux que um servio de rede ou at mesmo um software tenha contas de usurio para que possa manipular e acessar arquivos que sejam de sua responsabilidade. Um exemplo o servidor de pginas de internet chamado Apache. No momento de sua instalao, definido um usurio (na maioria das vezes, esse usurio se chama Apache) e uma senha a fim de que o Apache possa ler as pginas web, realizar consultas a banco de dados e retornar dados a algum que est requisitando essa pgina web. Mas, independente do tipo de usurio, os comandos sero os mesmos, alterando-se apenas algumas opes, mas isso ser abordado em mais detalhes nas prximas sees desse captulo. importante frisar que existe dentro dos sistemas Linux um usurio que tem permisso total dentro do sistema, o usurio root. O root o usurio administrador do sistema, tem permisso de executar qualquer tarefa, desde criar usurios, configurar o sistema, alterar informaes do kernel, e at mesmo destruir o sistema com uma ao errada. O usurio root deve ser protegido com uma senha altamente segura e deve ser usado somente em tarefas administrativas, pois a execuo de um script malicioso com o seu grau de permisso pode acabar com um sistema. Cada usurio do sistema linux possui um diretrio padro onde so guardados os seus documentos e no qual ficam protegidos contra a ao de outros usurios. Esses diretrios ficam localizados dentro do diretrio home. Por exemplo, ao criar o usurio gabriel, ser criado o diretrio /home/gabriel. O super-usurio root possui seu diretrio padro fora da

pasta home, ele fica localizado no diretrio /root. Esses usurios so organizados dentro de grupos, os quais compartilham permisses. Essa organizao em grupos facilita o administrador de sistemas a selecionar usurios que devem ter ou no permisses a determinados recursos do sistema. Uma conta de usurio composta por 7 propriedades, sendo elas: Login: o nome com que o usurio autentica-se no sistema, cada usurio deve ter um nome diferente. Password: a senha do usurio. UID (User Identification): o nmero do usurio no sistema, esse nmero atribuido pelo sistema no momento do cadastro do usurio e nico para cada um. GID (Group Identification): o nmero do grupo ao qual o usurio pertence. Comment: a descrio ou nome completo do usurio. Home Directory Path: a localizao do diretrio padro do usurio Shell: o interpretador de comandos executado quando o usurio acessa o sistema. comum ser utilizado o /bin/bash. Para servios de rede ou softwares, comum utilizar o /bin/null ou o /bin/nologin. Um grupo composto por 4 propriedades, so elas: Name: o nome do grupo. Password: a senha do grupo, porm, na maioria das vezes, esse campo no preenchido pois no h necessidade.

GID (Group Identification): o nmero que identifica o grupo. User list: a lista de usurios pertencentes ao grupo. 11.2 Arquivos de Usurios Agora que ficou claro o que um usurio e um grupo, faz-se necessrio que utilizemos comandos para inserir, alterar ou deletar usurios e grupos do sistema. Nos sistemas Linux, todas as configuraes de usurios e grupos so guardadas em 3 arquivos e os comandos de gerenciamento trabalham manipulando esses arquivos, so eles: /etc/passwd : Esse arquivo contm todas as propriedades da conta de usurios, exceto a senha. As informaes so separadas pelo smbolo de dois pontos (:). Os dados de usurios so escritos da seguinte forma dentro desse arquivo: login:senha criptografada ( representada por um x quando armazenada no /etc/shadow ):UID:GID:comment:Home Directory Path:Shell . Vamos tomar, por exemplo, essa linha que representa o meu usurio dentro do sistema: gabriel:x:1000:1000:gabrielcarrijo:/home/gabriel:/bin/bash Execute o comando cat /etc/passwd e verifique o resultado. /etc/shadow : Foi implementado para dar uma segurana maior s senhas armazenadas no sistema. Todas as senhas eram gravadas no arquivo /etc/passwd, porm esse arquivo tem permisso de leitura para todos os usurios do sistema. Por isso o /etc/shadow tem permisso somente para o usurio root. Esse arquivo possui a seguinte sintaxe: login:senha criptografada:nmero de dias a partir de 01/01/1970 em que a

senha foi modificada pela ltima vez:nmero de dias depois da criao do usurio em que a senha pode ser alterada:nmero de dias depois da criao do usurio em que a senha deve ser alterada:nmero de dias antes da senha expirar em que o usurio deve ser notificado:dias em que a conta de usurio deve ser desabilitada aps a expirao da senha:nmero de dias a partir de 01/01/1970 em que a conta ser encerrada:campo reservado . Verifiquemos uma linha do arquivo /etc/shadow :
gabriel:$6$mEdlcULHMtF68g0I7ejGU2aR50:14639:0:99999:7:::

Execute o comando sudo cat /etc/shadow e verifique o arquivo com as senhas criptografadas. /etc/group : o arquivo que guarda os grupos e usurios pertencentes a cada grupo. Qualquer usurio tem acesso de leitura nesse arquivo. Os dados de grupos esto dispostos da seguinte forma: nome do grupo:senha criptografada:GID:User list . Essa senha difcilmente definida para um grupo. Verifiquemos uma linha do arquivo /etc/group : gabriel:x:1000:gabriel Execute o comando cat /etc/group e verifique o arquivo com os grupos do sistema. 11.3 Comandos de Gerenciamento Existem comandos especficos para a adio, remoo e gerenciamento de um usurio no sistema. Vamos estudar alguns deles, as suas variaes e opes mais utilizadas. Todos os comandos utilizados para gerenciar usurios e grupos devem ser executados pelo superusurio root,

exceto nos casos de alterao da conta particular do usurio. Para adicionarmos usurios no sistema, podemos utilizar o comando useradd. Sintaxe: useradd linux Atravs do comando acima relacionado, o usurio linux ser criado com o diretrio padro localizado em /home/linux, o interpretador de comandos ser o /bin/bash, no haver nenhum comentrio, a conta no ter data de expirao e ser criado um grupo com o mesmo nome do usurio (grupo linux) e esse usurio ir pertencer a esse grupo. Vejamos agora algumas opes que auxiliam e determinam as configuraes de cada usurio. Opes: -d : Define o diretrio padro do novo usurio. -g : Indica o grupo ao qual o novo usurio ir pertencer -G : Define os outros grupos aos quais o usurio ir pertencer -s : Interpretador de comandos que o usurio ir utilizar. -c : Adiciona um comentrio ao novo usurio. -e : Define a data (mm/dd/aa) em que a conta ser desativada. -f : Quantidade de dias em que a conta ser desabilitada aps a expirao da senha. Exemplo1: Criaremos a conta do usurio gabriel definindo o diretrio padro do usurio em /var/www/htdocs/gabriel, definindo o interpretador de comandos como o /bin/null e colocando no comentrio a seguinte sentena Gabriel Carrijo. useradd gabriel -d /var/www/htdocs/gabriel -c Gabriel Carrijo -s /bin/null Exemplo2: Criaremos a conta do usurio nelson, fazendo parte do grupo linux e com a data para expirao da conta em 19/01/2015. useradd nelson -g linux -e 01/19/15

At agora criamos as contas de usurio, porm nenhuma das contas possui senha definida. Se verificarmos o arquivo /etc/shadow, veremos que em ambas as contas um ponto de exclamao (!) estar ocupando o local da senha criptografada, isto significa que o usurio no possui senha definida. Para criar ou alterar uma senha, utilizaremos o comando passwd. Esse comando pode ser executado por qualquer usurio para alterar a sua prpria senha e somente o usurio root pode alterar a senha de qualquer usurio. A sintaxe do comando passwd simples: passwd usurio. Por exemplo se fossemos definir senha para o usurio gabriel, utilizaramos o comando passwd gabriel. No caso da execuo desse comando por parte do usurio root, o console solicitar a nova senha do usurio e uma confirmao da mesma. Quando o usurio dono da conta utiliza desse comando para alter-la, ser solicitada a senha antiga, a senha nova e a confirmao da senha nova. No caso de um usurio sem permisses de administrador tentar alterar a senha de outro usurio, o comando no executar a tarefa. Exemplo3: Defina a senha AdMLnX para o usurio nelson. root@debian:~# passwd nelson Digite a nova senha UNIX: Redigite a nova senha UNIX: passwd: senha atualizada com sucesso. interessante ressaltar que o comando passwd cria as senhas criptografadas e as guarda no arquivo /etc/shadow. Verifique o arquivo /etc/shadow e veja a senha criptografada do usurio nelson. No meu caso, a senha ficou dessa forma: $6$Zui7D5Zq$OBILnu4BvCYAB2f/zagg5JdC1MNdDK5ZFS/paMmSGqdg Q20fzzfz8ZvnmR8mmjqOp4B9GzVSAtSwofCxXWGQi0 Alm de modificar a senha, tambm possvel modificar as

configuraes e informaes de cada usurio, atravs do comando usermod. O comando usermod possui as mesmas opes do comando useradd e mais algumas, so elas: -l : Altera o login do usurio; -u : Altera o UID do usurio; -L : Adiciona um ponto de exclamao (!) na frente da senha, desabilitando-a (o usurio no consegue mais logar no sistema); -U : Remove o ponto de exclamao da frente da senha criptografada. A sintaxe desse comando da seguinte forma: usermod opes usurio. Exemplo4: nelsonnascimento. Alterar o login do usurio nelson para

usermod -l nelsonnascimento nelson Exemplo5: Alterar o shell e o grupo do usurio gabriel para /bin/bash e user respectivamente: usermod -s /bin/bash -g user gabriel Para remover um usurio do sistema, utilizaremos o comando userdel. A sintaxe desse comando bem simples: userdel opo usurio. Esse comando possui apenas duas opes, so elas: -f : Fora a remoo do usurio, mesmo que ele esteja logado no sistema. -r : Remove a pasta do usurio dentro de /home e todos os seus arquivos. O comando userdel utilizado sem nenhuma opo ( userdel usuario) remove apenas o usurio, conservando a sua pasta home e os seus

diretrios. Exemplo5: Remover o usurio nelson e os seus arquivos. userdel -r nelson O comando users lista os usurios ativos no sistema. Sua sintaxe simplesmente o uso do comando sem nenhum parmetro: users. Alm de criar, editar e excluir usurios muitas vezes na tarefa de administrar sistemas, precisamos organizar esses usurio em grupos a fim de facilitar tarefas administrativas. Ao invs de precisar dar uma determinada permisso de arquivo a vrios usurios de um a um, podemos alterar a permisso de um grupo e assim alcanar todos os usurios que forem necessrios. O primeiro comando a ser utilizado, que tem a tarefa de criar um grupo, o groupadd. Esse comando pode ser utilizado somente por usurios com permisso de administrador. A sintaxe desse comando : groupadd grupo opes. O comando groupadd possui as seguinte opes: -r : Adiciona um grupo como sendo um grupo do sistema. -g : Define um GID para o grupo. Exemplo6: Adicionar um grupo chamado linux com o GID 788 groupadd linux -g 788 Para manipular, inserir senha, adicionar ou remover usurios do grupo, utilizaremos o comando gpasswd. A sintaxe desse comando : gpasswd opes usurio grupo. O comando gpasswd utilizado sem nenhum parmetro, apenas com o nome do grupo (gpasswd grupo) utilizado para definir uma senha para o grupo. Alm dessa funo o comando possui as seguintes opes:

-a : Adiciona um usurio ao grupo. -d : Remove um usurio do grupo. -M : Escolhe os membros do grupo. -A : Seleciona um usurio que ser administrador do grupo. -r : Remove a senha do grupo. Exemplo7: Adicionar o usurio gabriel ao grupo linux. gpasswd -a gabriel linux Exemplo8: Criar uma senha para o grupo linux. gpasswd linux Para remover um grupo o comando utilizado o groupdel. Sua sintaxe : groupdel grupo. Exemplo9: Remover o grupo linux. groupdel linux Ainda existe outro comando indispensvel, o comando sudo. Esse comando faz com que um usurio possa executar comandos com a permisso do superusurio root. A sua utilizao bem simples e sem nenhum parmetro: sudo comando. 11.4 Gerenciando usurios manualmente Podemos efetuar alteraes nas configuraes e parmetros dos usurios diretamente em seus arquivos de configurao. Uma funo bem importante suspender um usurio por algum tempo. Para isso, basta realizar uma alterao simples, coloque um smbolo de # na frente do nome de usurio dentro do arquivo /etc/passwd. Exemplo10: Suspender o usurio gabriel.

# gabriel:x:1003:1003::/home/gabriel:/bin/bash Podemos tambm dar poder de root um usurio comum, para isto, basta editar o arquivo passwd e alterar o UID e o GID do usurio para 0. Exemplo11: Dar poder de root ao usurio gabriel gabriel:x:0:0::/home/gabriel:/bin/bash

11.5 Exerccios

1-) Cite as sete propriedades que compem um usurio. _________________________________________________ _________________________________________________ 2-) Para que serve um grupo? Quais as suas propriedades? __________________________________________________ __________________________________________________ __________________________________________________ 3-) Qual comando utilizado para criar um usurio no sistema? __________________________________________________ __________________________________________________ 4-) Porque as senhas passaram a no ser mais escritas no arquivo /etc/passwd? __________________________________________________ __________________________________________________ 5-) Realize os passos abaixo no sistema: 1- Crie um usurio com o nome Dinux; 2- Defina a senha 123 para o usurio Dinux; 3- Crie o grupo userlinux; 4- Adicione o usurio Dinux e o seu usurio ao grupo userlinux; 5- Remova a senha do usurio Dinux; 6- Remova o usurio Dinux.

Captulo 12
Variveis de Ambiente e Configurao do Bash
O ambiente Shell personalizvel. Pode-se mudar o idioma do sistema, o prompt de comando e definir comandos novos. Basta definir variveis de ambiente ou alterar arquivos de configurao. Ao final, dever ser capaz de: Definir e utilizar variveis de ambiente Alterar arquivos de configurao do Shell Criar apelidos de sistemas ( aliases )

12.1 - Variveis de Ambiente Sendo a linha de comando o ambiente onde o administrador de sistemas passa a maior parte de seu dia, importante poder personaliz-lo para um uso mais confortvel. O shell bash bastante flexvel no quesito configurabilidade, e as duas maneiras de se fazer isso so: definindo variveis de ambiente e editando arquivos de configurao. Quando o usurio entra no sistema, o prompt mostrado e o shell fica esperando por comandos a executar. Tanto o shell quanto os comandos do usurio rodam sob um ambiente, composto por variveis especiais que definem o comportamento da execuo. Definindo e alterando o valor de variveis de ambiente, altera-se o ambiente como um todo e os programas que rodam sobre ele tambm podem ter seu comportamento modificado. Assim se personaliza o shell ao gosto do usurio. 12 .2 Sobre Variveis Uma varivel um nome especial ( sem acentos, espaos ou smbolos ) que est associado a um valor. Este valor pode ser um nmero, uma palavra ou um texto. O seguinte comando: HOJE=quarta-feira Associa o valor quarta-feira varivel HOJE. A partir deste momento, a varivel est disponvel para uso pelo shell. Para acessar o valor de uma varivel, basta colocar o caractere $na frente de seu nome: echo $HOJE O resultado ser: quarta-feira. Para remover uma varivel, basta usar o comando unset: unset HOJE

Duas dicas bem importantes sobre variveis: Ao definir a varivel, no colocar espaos ao redor do sinal de = Para evitar problemas, sempre coloque o valor entre aspas 12.3 - Variveis de Ambiente Variveis de ambiente so aquelas que j esto definidas assim que o login do usurio feito. Elas podem ser vistas com o comando env, sem argumentos: env O resultado em um sistema Linux seria assim, por exemplo:
SSH_AGENT_PID=1718 TERM=xterm DESKTOP_STARTUP_ID= SHELL=/bin/bash XDG_SESSION_COOKIE=ae2cd234add874993ce721b04b61e0b0-1280981158.7487052117419867 KONSOLE_DBUS_SERVICE=:1.19 GTK_RC_FILES=/etc/gtk/gtkrc:/home/gabriel/.gtkrc-1.2-gnome2 WINDOWID=39845911 GTK_MODULES=canberra-gtk-module USER=gabriel LS_COLORS=rs=0:di=01;34:ln=01;36:hl=44;37:pi=40;33:so=01;35:do=01;35:bd=40 ;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:s t=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lz ma=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz =01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31: *.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01 ;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*. xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01 ;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;3 5:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35: *.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=0 1;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=0 1;35:*.yuv=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*. au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc= 00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*

.xspf=00;36: DESKTOP_AUTOSTART_ID=103db2dd549d03386a12809811598678410000001676000 4 SSH_AUTH_SOCK=/tmp/keyring-nkxjV1/socket.ssh GNOME_KEYRING_SOCKET=/tmp/keyring-nkxjV1/socket SESSION_MANAGER=local/gabriel-laptop:@/tmp/.ICE-unix/1676,unix/gabriellaptop:/tmp/.ICE-unix/1676 USERNAME=gabriel PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gem s/1.8/bin DESKTOP_SESSION=gnome PWD=/home/gabriel GDM_KEYBOARD_LAYOUT=br LANG=pt_BR.UTF-8 GNOME_KEYRING_PID=1661 GDM_LANG=pt_BR.UTF-8 KONSOLE_DBUS_SESSION=/Sessions/1 GDMSESSION=gnome SPEECHD_PORT=7560 SHLVL=1 COLORFGBG=15;0 HOME=/home/gabriel LANGUAGE=pt_BR.UTF-8 GNOME_DESKTOP_SESSION_ID=this-is-deprecated LOGNAME=gabriel XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/ DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbuszoF0tuLP8Z,guid=3b66e713465e6b33d871aa254c5a38a7 LESSOPEN=| /usr/bin/lesspipe %s PROFILEHOME= DISPLAY=:0.0 LESSCLOSE=/usr/bin/lesspipe %s %s XAUTHORITY=/var/run/gdm/auth-for-gabriel-AkqwCL/database _=/usr/bin/env

Todas as variveis definidas na linha de comando passam a fazer parte do ambiente imediatamente. Porm, para shell scripts e outros programas que possam ser invocados, criado um ambiente novo, composto apenas pelas variveis padro de ambiente. Para que uma varivel criada pelo usurio tambm seja vlida para os programas, necessrio export-la com o comando export:

HOJE=quarta-feira export HOJE Este comando indica que a varivel de nome HOJEfar parte do ambiente de todos os processos que forem executados deste ponto em diante. Agora podemos verificar novamente com o comando env e que a varivel HOJE aparece junto com as demais variveis de ambiente. Execute o comando seguinte comando para verificar a varivel HOJE dentre as variveis de ambiente do sistema: env | grep hoje Mas ao sair da shell original por meio de um logout ou at mesmo de um desligamento, todas as variveis definidas pelo usurio na linha de comando so perdidas.

12.4 - Exerccios 1-) Complete as lacunas: O comando _______________serve para remover uma varivel de ambiente. O comando _________________serve para mostrar o contedo de uma varivel. O comando _________________serve para mostrar todas as variveis de mabiente do sistema.

Captulo 13
Inicializao do Sistema
Nos sistemas Linux existe todo um processo at chegar a inicializao completa do sistema operacional. Neste captulo, ser nossa tarefa compreender o funcionamento desses processos. Ao final do captulo, o aluno dever ser capaz de: Compreender o processo de inicializao do sistema Linux. Conhecer os scripts de inicializao do sistema. Conhecer e poder alterar as opes do arquivo inittab

13.1 Viso geral da inicializao do sistema de conhecimento geral que o primeiro software que executado a partir do momento em que ligamos o computador, o BIOS (Basic Input/Output System), que reconhece o hardware e executa o programa armazenado em uma rea reservada do Disco Rgido, a MBR (Master Boot Recorder). Na MBR, esto as instrues de inicializao do sistema operacional, ou no caso de haver mais de um S.O. instalado no computador provavelmente um programa gerenciador de boot (como o Lilo e o Grub) que ir apresentar uma tela para que o usurio escolha o sistema a ser carregado. Partindo do princpio de que o sistema selecionado pelo usurio um Linux, o kernel do sistema carregado na memria e descompactado. Aps esse processo, vem o reconhecimento do hardware pelo kernel e sucessivamente a montagem do diretrio raiz (/). A partir da, entra em ao o processo init, que o grande pai de todos os processos no Linux. Esse processo coordena e monitora todos os outros e o nico que nunca pode ser parado. O init o processo nmero 1 dos sistemas Linux (execute o comando ps -A e verifique o processo com o PID 1) e, a partir dele, todos os outros so criados no sistema. O processo init torna o kernel multitarefa, l e executa todas as instrues contidas no arquivo /etc/inittab e a partir da, define o modo de execuo em que o sistema ser inicializado e executa todos os scripts de inicializao de processos e aplicativos que compem o Linux.

Figura 13.1 Inicializao do Sistema Linux. Existem 7 modos de execuo para o processo init. Desses modos, um escolhido dentro do arquivo inittab. So eles:

Nvel de Execuo 0 1 2 3 4 5 6 Monousurio

Descrio Halt Desliga o sistema Multiusurio sem NFS (Network File System) Multiusurio No utilizado Modo Grfico X11 Reboot Reinicia o sistema

Abra o arquivo /etc/inittab com um editor ou visualizador de texto e verifique o modo em que o seu sistema est sendo executado. Para isto, verifique o nmero encontrado na quinta linha do arquivo, logo aps o item id: . Os modos de execuo 0 e 6 no devem ser indicados dentro do arquivo inittab, porm podem ser utilizados junto com o comando init. Por exemplo, o comando init 0 desliga o computador, o comando init 6 reinicia, o comando init 1 inicia a seo no modo monousurio e o init 3 inicia a seo no modo multiusurio. 13.2 O arquivo inittab Como j foi falado anteriormente, dentro desse arquivo se encontra a indicao do modo de execuo no qual o sistema ser executado, porm existem algumas outras informaes importantes dentro desse arquivo, as quais explanaremos nesse tpico. Todas as linhas do arquivo inittab possuem uma notao padro e importante que seja conhecida para uma anlise completa do arquivo. Essa notao padro composta da seguinte forma:

id:runlevel:ao:processo ou comando Onde: id: o cdigo identificador de cada linha do arquivo, composto por 2 caracteres e no pode ser repetido. runlevel: Mostra os nmeros de runlevel em que a linha dever ser executada. ao: Define a ao que deve ser tomada quando a linha for executada. Essas aes podem ser: boot O sistema executar o processo durante o boot; bootwait Uma mistura dos comandos boot e wait. O sistema executar o processo durante o boot e esperar o trmino do processo; Ctrlaltdel O processo ser executado quando as teclas Ctrl Alt e Del forem pressionadas juntas. initdefault Na linha que contm essa ao ser determinado o modo de execuo do sistema. A indicao do processo no se faz necessria. Se essa linha no estiver contida no arquivo inittab, o sistema requisitar o modo de execuo a ser utilizado. off No realiza nenhuma ao; once - O processo somente ser executado a partir do momento em que o sistema entrar no runlevel determinado; powerfail utilizada na mesma situao do powerwait, porm, em seu caso, o init no espera o trmino do processo; powerfailnow Executar o processo assim que o init for informado que a bateria ou no-break est com pouca energia ou em casos de oscilao de energia; powerokwait Executa o processo quando a energia for restabelecida;

powerwait No caso de interrupo na alimentao eltrica (atravs da informao de um no-break gerencivel ou outro dispositivo que passe essa informao), o init executar esse processo e esperar o seu trmino; respawn Reinicia o processo assim que for finalizado; sysinit Essa ao indica que o processo entrar em execuo antes de qualquer outro processo que contenha a ao boot ou bootwait. O runlevel no necessrio para essa ao; wait - O sistema aguardar a finalizao deste processo; processo ou comando: Geralmente conter a localizao do script a ser executado pela ao. Para compreender melhor, vamos analisar algumas linhas do arquivo inittab da distribuio Debian Lenny, lembrando que algumas distribuies podem ter alteraes e algumas linhas a mais ou a menos. Id:3:initdefault: Define que o sistema ser iniciado no runlevel 3 (Multiusurio). si::sysinit:/etc/init.d/rcS Essa linha define a primeira ao que o processo init ir executar. ~~:S:wait:sbin/sulogin Essa ao executada no modo monousurio (single user), e o processo init ir esperar o trmino desta para realizar outra. l0:0:wait:/etc/init.d/rc 0 l1:1:wait:/etc/init.d/rc 1 l2:2:wait:/etc/init.d/rc 2 l3:3:wait:/etc/init.d/rc 3 l4:4:wait:/etc/init.d/rc 4 l5:5:wait:/etc/init.d/rc 5 l6:6:wait:/etc/init.d/rc 6 Essas linhas executam os scripts de

inicializao para o modo de execuo escolhido. ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now Essa linha define a funo da combinao de teclas Ctrl Alt Del. Nesse caso, a funo escolhida o comando shutdown com os parmetros de reinicializao. pf::powerfail:/etc/init.d/powerfail start pn::powerfailnow:/etc/init.d/powerfail now po::powerokwait:/etc/init.d/powerfail stop Essas trs linhas cuidam do gerenciamento de energia e executam o processo powerfail com um parmetro correspondente. 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 Essas linhas criam os terminais, esses terminais podem ser acessados pelas combinaes de teclas Alt F1, Alt F2, Alt F3, Alt F4, Alt F5 ou Alt F6. importante ter muito cuidado ao editar o arquivo inittab, o recomendado que seja alterada somente a linha que seleciona o runlevel no qual o sistema ser executado. 13.3 Scripts de inicializao O arquivo inittab nas linhas com id l1, l2, l3, l4, l5 e l6 chamam o script rc localizado no diretrio /etc/init.d/ e passam para esse script um parmetro numrico. Parmetro este que representa o modo de execuo do sistema, para que esse primeiro script possa chamar todos os demais scripts de inicializao do sistema operacional. De acordo com o parmetro, o init ir executar os scripts que estiverem dentro de um dos diretrios localizados em /etc/rcX.d/, onde o X representa o nmero do modo de execuo selecionado, ou seja, se o modo de execuo escolhido foi o 3, os scripts do diretrio /etc/rc3.d sero

executados. Dentro desses diretrios, os scripts seguem uma sequncia lgica. Esses scripts podem ser iniciados pela letra K ou pela letra S. Os scripts iniciados por K so responsveis por matar processos (K vem da palavra kill) e so executados sempre primeiro e na ordem apresentada pelo nmero que vem na sequncia. Os scripts que possuem a letra S no incio do nome so responsveis por criar novos processos (S vem da palavra start) e so executados aps os scripts K na sequncia do nmero que vem aps a letra. Abaixo segue como exemplo os scripts encontrados no diretrio /etc/rc0.d/, que so responsveis pelo desligamento da mquina e so executados atravs do comando init 0. Esses scripts esto organizados por ordem de execuo. K11atd K20exim4 K20nfs-common K20openbsd-inetd K25hwclock.sh K63mountoverflowtmp K90rsyslog S20sendsigs S30urandom S31umountnfs.sh S32portmap

S35networking S36ifupdown S40umountfs S60umountroot S90halt

13.4 Exerccios Qual a funo da MBR? _________________________________________________ _________________________________________________

Quantos e quais so os modos de inicializao do sistema? __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ O que faz a linha l3:3:wait:/etc/init.d/rc 3? __________________________________________________ __________________________________________________

Relacione a primeira coluna com a segunda: (1) Runlevel 0 (2) Runlevel 1 (3) Runlevel 2 (4) Runlevel 3 (5) Runlevel 4 (6) Runlevel 5 (6) Runlevel 6 ( ) No utilizado ( ) Reboot ( ) Monousurio ( ) Halt ( ) Multiusurio ( ) Modo Grfico X11 ( ) Multiusurio sem NFS

Captulo 14
Gerenciamento de Processos e Servios
Ao iniciar programas em um sistema Linux, o usurio est de fato iniciando servios e processos no sistema. H bastante detalhes a serem vistos em como a execuo acontece e como gerenci-la. Ao final, dever ser capaz de: Entender o que so processos e servios Controlar os processos do sistema e seus estados Controlar os servios e seus estados

14.1 - Processos do Sistema A execuo de programas faz parte da rotina bsica de uso de um computador, mas poucos sabem o que acontece no sistema, quando se clica em um cone ou se digita um comando. Aqui ser visto parte desse mundo oculto: os servios e processos. E ainda, como manipul-los, o que inclui: iniciar, interromper, pausar, retornar, recarregar, parar, matar, priorizar, sinalizar, consultar e jogar em segundo plano. Para se colocar no ar um servio como o Apache por exemplo, necessrio iniciar o servio httpd. Este servio dispara vrios processos no sistema. Cada um desses processos possui um nmero de identificao (PID), privilgios de execuo (geralmente herdados do usurios que o iniciou), reas de memria (programa, dados), arquivos e conexes de rede por ele abertos, etc. O Linux um sistema multitarefa e com isso vrios processos esto em execuo ao mesmo tempo, disputando o uso dos recursos da mquina. Cada processo tem sua prioridade em relao aos outros e o kernel avalia todas para calcular quais processos so mais importantes. H comandos para alterar a prioridade de um processo, dando ao administrador a possibilidade de tornar determinados programa mais ou menos importante para o kernel. A prioridade dos processos dada por nmeros de -20 (prioridade mais alta) at 20 (prioridade mais baixa) e necessrio um forte cuidado ao manipular essa prioridade, para que um processo no acabe por ter uma prioridade to alta, a qual faa parar os outros, e nem to baixa do modo que ele pare de ser executado em algum momento. Alm de filhos, um processo pode conter vrias threads. A diferena de uma thread para um processo filho que, apesar de possuir seu prprio PID, ela compartilha os mesmos recursos usados pelo processo pai, como reas de memria e arquivos abertos. Para exemplificar melhor, podemos dizer que uma thread uma linha de processo, um pequeno pedao dele que executado parte e utiliza-se dos mesmos recursos.

Vamos exibir os processos executados no sistema atravs do comando ps -A, o parmetro -A faz com que o ps exiba todos os processos executados no sistema. Segue abaixo um quadro com um resumo de alguns termos e conceitos encontrados no gerenciamento de processos em sistemas Linux: Resumo dos Conceitos em Gerenciamento de Processos Processo Programa em execuo. PID Nmero de identificao de um processo (Process ID). Estado Um processo pode estar: em execuo, parado ou aguardando por eventos. Ambiente de Cada processo executado est inserido em um ambiente execuo que possui variveis especiais que configuram aspectos do sistema, como o idioma e perifricos. Processo pai, Todo processo se origina a partir de um processo anterior processos (processo pai) e pode dar origem a novos processos filhos Thread Processo que compartilha recursos com o processo pai. Sinal Enviar um sinal (signal) a um processo inform-lo de um evento externo, como uma interrupo ou uma parada, possibilitando a mudana de seu comportamento. Prioridade Cada processo tem a sua prioridade em relao aos outros . No Linux, possvel alterar a prioridade de um processo, tornando-o mais ou menos importante no uso dos recursos da mquina. 14.2 - Comandos de Gerenciamento de Processos No ltimo procedimento acima, pudemos utilizar o comando ps para listar os processos, porm existem outros comandos importantes para gerenciar esses processos e manipul-los no sistema. Vejamos na lista a seguir alguns deles:

Sobre os Processos

Obter Informaes

Comando ps pstree top fuser pidof

Alterao de Estado Mudana de Prioridade

kill killall nice renice fg bg jobs

Plano de Execuo

Descrio Lista os processos do sistema Lista os processos hierarquicamente Lista os processos em tempo real Lista os processos que usam o arquivo informado Mostra o PID do processo informado pelo nome Envia sinais a processos, pelo PID Envia sinais a processos, pelo nome Inicia um processo com prioridade definida Altera a prioridade de um processo em execuo Manda o processo para o primeiro plano Manda o processo para o segundo plano Lista os processos parados ou em segundo plano

A rotina de gerenciamento geralmente segue dois passos: Lista as informaes sobre o processo em questo Executar uma ao sobre o processo, baseado nas informaes obtidas Na obteno de informaes, destaque para o comando top, que interativo e serve para monitorar em tempo real a execuo dos processos, podendo-se ver rapidamente aqueles que esto consumindo mais memria RAM ou CPU. Utilize o comando top no terminal e veja o seu resultado como a seguir:

Se precisar de rapidez na execuo de um determinado processo, possvel lhe dar prioridade mxima no momento da sua inicializao com o comando:

nice -n -20 comando Para mudar a prioridade de um processo j existente, podemos utilizar o comando renice para lhe atribuir uma nova prioridade. renice -n 12 PID Convm no abusar deste recurso, pois, se vrios processos tiverem prioridade mxima, todos continuaro disputando os recursos em igualdade. Vamos exemplificar com a utilizao do comando nice combinado ao comando top, atribuindo a ele uma prioridade -10: nice -n -10 top Para matar um processo, podemos usar o comando kill, que o tira imediatamente da execuo. A sintaxe desse comando kill PID, por exemplo: kill 22 Em caso de emergncia, quando um processo estiver ocupando todos os recursos da mquina, o comando kill -9 utilizado para finaliz-lo de maneira drstica, porm imediata. 14.3 Gerenciando Servios Alm dos processos, os servios so tambm de suma importncia. Eles so aplicativos so executados j na inicializao do sistema operacional, ou pela vontade do administrador. Geralmente banco de dados, e-mail, ftp, pginas web, etc possuem um servio que atende as requisies que chegam at essas aplicaes. Inicialmente vamos aprender a parar, iniciar e restartar alguns servios. Para isso, antes de tudo, vamos instalar um para que possamos manipul-lo. Vamos instalar um servio de pginas web, o apache: apt-get install apache2

Depois de instalado, o apache j se tornar um servio e estar iniciado no computador. Vamos executar o comando para parar o servio do apache: /etc/init.d/apache2 stop Para iniciar o servio apache, basta utilizar o comando: /etc/init.d/apache2 start E, para dar um restart no servio, ou seja, parar e inciar automaticamente, utilizamos o seguinte comando: /etc/init.d/apache2 restart Podemos definir tambm quais servios devero iniciar junto com o sistema ou no. Esse gerenciamento pode ser feito de uma forma bem simples atravs do comando rcconf. Esse pacote no vem instalado por padro no Debian, porm iremos instal-lo atravs do comando: apt-get install rcconf Depois de instalado, basta digitar no terminal o comando rcconf para que a tela de gerenciamento possa abrir, como no exemplo abaixo:

Para que o servio inicie com o sistema, basta marcar a opo na

frente de seu nome. Caso contrrio basta deixar em branco. Para marcar ou desmarcar um servio utilize as setas de direo para chegar at ele e a barra de espao para marc-lo ou desmarc-lo. Aps a definio de quais iniciaro ou no, aperte Tab at a opo Ok e tecle Enter.

14.4 - Exerccios 1-) Diferencie processo de servio. ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ 2-) Atribua ao processo Xorg a prioridade -5. ____________________________________________________________ 3-) Exclua o servio apache2 na inicializao.

Captulo 15
Log's do Sistema
Todas as atividades realizadas em um sistema Linux possuem um registro, um armazenamento que guarda tudo que ocorreu no sistema, como por exemplo, instalao de programas, autenticaes, falhas, erros, alertas e enfim qualquer acontecimento relevante ao sistema. As informaes gravadas em log so de extrema importncia aos administradores de sistemas Linux para um acompanhamento frequente e uma inspeo sobre o que realmente tem acontecido de errado ou de inseguro dentro do sistema. Ao final do captulo, o aluno dever ser capaz de: Entender a utilidade de um log; Conhecer o daemon Syslog.

15.1 Os log's do sistema Imagine um servidor com milhares de acessos de vrios lugares diferentes, tudo funcionando 100%, e de repente um erro e tudo para. Como saber o que realmente ocasionou a parada? Como diagnosticar o problema ou um ataque? Para essas e outras situaes, existem os log's do sistema. Eles so um registro de tudo que acontece dentro do sistema operacional. Os log's do sistema so armazenados no diretrio /var/log (execute o comando ls /var/log), nele so encontrados vrios arquivos, cada um com informaes de um aplicativo ou de vrios acontecimentos do sistema. Esses arquivos de log possuem um formato padro, e so exibidos da seguinte forma: data hora nome_do_computador daemon mensagem. Segue abaixo um exemplo: Mar 30 11:53:59 debianpc kernel: [ 41.948024] eth0: no IPv6 routers present Nesse exemplo acima, podemos ver: a data ( Mar 30), a hora (11:53:59), o nome do computador (debianpc), o daemon que gerou a mensagem (kernel:) e a mensagem ([ 41.948024] eth0: no IPv6 routers present) O campo nome do computador pode trazer o computador local, ou at mesmo um computador na rede, desde que eles registrem num servidor de log. J o campo daemon, geralmente o programa que gera a mensagem, ou um programa intermedirio que tem a tarefa de escrever as mensagens que nele chegam por solicitao de outro software o sistema.

15.2 O Syslog O syslogd o programa responsvel por gerar todos esses log's vistos na seo anterior. Ele foi escrito originalmente por Eric Allman com dois objetivos principais: 1- Facilitar a vida dos programadores, j que, antes dele existir, cada programa deveria ter o seu arquivo de log especfico que teria que ser criado pelo seu desenvolvedor. 2- Facilitar o controle e auditoria do sistema por parte do Administrador, pois ali esto todas as informaes referentes aos ltimos acontecimentos no sistema. O syslog dividido em trs partes principais: Syslogd: o processo do syslog que roda enquanto o computador estiver ligado, coletando todas as aes tomadas por usurios locais ou mesmo remotos. Openlog: so linhas de cdigo com rotinas utilizadas para o funcionamento do syslog e acesso aos arquivos de log. Logger: um comando que permite que o usurio insira linhas de log manualmente. Quando o syslog foi desenvolvido, os kernel's no passavam do tamanho de 400KB. Com o passar do tempo, esses kernel's foram aumentando de tamanho de uma forma exponencial e mais softwares foram surgindo, fazendo com que fosse gerado cada vez mais log. Essa necessidade fez com que o syslogd fosse dividido em duas partes: o prprio syslogd, que constri log's do sistema, e o klogd que cria e gerencia os log's do kernel. O klogd gera um arquivo dentro do diretrio /proc com as mensagens geradas pelo kernel. Esse arquivo o kmsg. Para visualiz-lo, basta utilizar o comando cat /proc/kmsg.

J o syslogd capta mensagens de todo o sistema incluindo algumas mensagens do kernel e organiza-as no diretrio /var/log como visto anteriormente. No existe uma padronizao completa desse aplicativo, por isso, a estrutura de diretrios criada por ele pode variar de uma distribuio para outra. Segue abaixo uma listagem com os diretrios encontrados no /var/log e sua descrio: Nome messages syslog Xorg.log maillog user Descrio Um dos principais arquivos de log do sistema (kernel/sistema) Um dos principais arquivos de log (kernel) Log das atividades de vdeo do computador Arquivo de log do servidor de email Arquivo de log dos processos do usurio

Esses so s alguns diretrios encontrados no /var/log, dependendo da distribuio podem haver mais.

15.3 Exerccios 1-) Explique as diferenas entre os aplicativos syslogd e klogd. ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ 2-) Escolha um arquivo de log e descreva com detalhes as suas cinco primeiras aes. ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ ____________________________________________________________

Captulo 16
Configurao de Dispositivos de Hardware
At alguns anos atrs, configurar um dispositivo qualquer no Linux, como impressora, mouse ou placa de som no era uma tarefa trivial. A tarefa exigia um vasto conhecimento em hardware para ser feita. Mas, atualmente, tudo est mais fcil, simples at. Neste captulo voc dever: Entender como funciona a configurao de dispositivos no Linux Extrair informaes sobre os equipamentos acoplados na mquina

16.1 - Conceitos Bsicos de Hardware Vejamos alguns conceitos bsicos referentes a hardware: Hardware: a parte fsica da mquina, tal como placa-me, processador, memria, teclado e mouse. Componentes estes que, muitas vezes, interagem fisicamente com o usurio ou so responsveis pelo processamento das informaes. Software: a parte lgica da mquina. Normalmente composto pelo sistema operacional e aplicativos, ou seja, a tarefa a ser realizada pelo hardware. BIOS ( Basic Input Output System ): o primeiro software executado pela mquina durante o boot do sistema. Seu cdigo normalmente reside na prpria placa me do computador em uma memria no-voltil. Contm as instrues bsicas para executar o Post ( Power On Self Test ), inicializar alguns dispositivos ( atravs do Plug-and-play ) e carregar o sistema operacional. Alm disso, o BIOS prov uma camada de comunicao entre software e hardware acessvel ao sistema operacional. Plug-and-play: Funo presente no BIOS dos computadores atuais que procura configurar automaticamente o hardware existente, sem a necessidade de interveno do usurio. IRQ ( Interrupt ReQuest ): o mtodo pelo qual o dispositivo gera uma interrupo para o processador, a fim de que este obtenha os dados deste dispositivo e os processe. Endereos de I/O ( Input/Output ): So as regies da memria por onde ocorrem as transferncias dos dados entre este dispositivo e o processador. DMA ( Direct Memory Access ): um canal por onde os dados podem transitar diretamente pelos dispositivos, sem que haja a necessidade de interveno do processador. Este mtodo utilizado

primariamente por dispositivos de armazenamento e de multimdia. Chipset: O chipset um componente das placas dos computadores que realiza determinadas funes. Diz-se, por exemplo, chipset de vdeo famlia de chips que responsvel pela exibio de vdeo ( chipset Nvidia GeForce por exemplo). Barramentos: So canais por onde o processador interage com os dispositivos, recebendo e transmitindo dados. Os mais comuns so: AGP, PCI, ISA, PCI Express,AMR e outros. 16.2 - O /dev Por seguir o mesmo padro de outros Unixes, no Linux praticamente tudo representado por arquivos. Por exemplo: o /proc e o /sys so sistemas de arquivos virtuais, por onde o Kernel aceita modificao de parmetros instantaneamente, bem como permite a consulta de outros parmetros que esto sendo usados pelo kernel naquele momento. O mesmo acontece com o /dev. Mesmo ele no sendo virtualcomo o proc, os arquivos l presentes so representados por inodes especiais, sendo que cada um desses arquivos, ou um grupo deles faz referncia a um ou mais dispositivos existentes no sistema. Em linhas gerais, temos dois grupos de dispositivos no /dev: Dispositivos de bloco: so dispositivos pelos quais o acesso s informaes feito atravs de transferncia de blocos de dados, podendo estes serem acessados aleatoriamente. Alguns exemplos: discos IDE (hda, hdb, hdc, etc), SCSI (sda , sdb, sdc, etc), floppy disk (fd0,fd0H1440, etc ), e outros. Dispositivos de caracteres: so aqueles que o acesso s informaes feito atravs de leitura sequencial de caracteres, byte a byte. Exemplos: portas seriais (ttySO, ttyS1, etc), o prprio console

(tty1,tty2, etc), e vdeo. O Kernel do Linux armazena informaes sobre recursos de dispositivos no diretrio /proc, nos arquivos: /proc/dma /proc/interrupts /proc/ioports /proc/pci

16.3 - Comandos para inspecionar dispositivos sempre importante que o Administrador de Sistemas Linux tenha a capacidade de vistoriar e inspecionar os dispositivos de hardware conectados ao micro e o seu correto funcionamento. Existem uma srie de comandos que auxiliam essa gesto e do ao sysadmin um panorama completo da situao do seu hardware. lspci : Lista informaes de chipset dos componentes PCI. Com a opo v lista I/O e IRQ dos dispositivos. lsusb : Lista informaes dos dispositivos usb conectados ao micro. lscpu : Mostra informaes relacionadas ao processador do computador. lspcmcia : Lista os dispositivos pcmcia conectados ao computador. lshw : Mostra todos os dispositivos de hardware separado por categorias. dmesg : Mostra as mensagens do kernel, da identificao do hardware em diante. Essas informaes esto disponveis em /var/log/dmesg e /var/log/messages. Para execut-lo basta digitar o comando dmesg no terminal.

16.4 Configurando dispositivos de rede Todo o computador precisa estar conectado a uma rede para poder compartilhar dados e informaes, por isso que a configurao dos dispositivos de rede merece uma meno especial. Primeiro, vamos verificar o nome dos dispositivos de rede conectados ao computador. Para isso, utilizaremos o comando ifconfig -a. Execute esse comando e verifique o seu resultado. Por exemplo: ifconfig -a eth0 Link encap:Ethernet Endereo de HW 00:03:0d:8f:a6:32 UP BROADCAST MULTICAST MTU:1500 Mtrica:1 pacotes RX:0 erros:0 descartados:0 excesso:0 quadro:0 Pacotes TX:0 erros:0 descartados:0 excesso:0 portadora:0 colises:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) IRQ:19 Endereo de E/S:0xdead lo Link encap:Loopback Local inet end.: 127.0.0.1 Masc:255.0.0.0 endereo inet6: ::1/128 Escopo:Mquina UP LOOPBACK RUNNING MTU:16436 Mtrica:1 pacotes RX:1388 erros:0 descartados:0 excesso:0 quadro:0 Pacotes TX:1388 erros:0 descartados:0 excesso:0 portadora:0 colises:0 txqueuelen:0 RX bytes:447102 (447.1 KB) TX bytes:447102 (447.1 KB)

No caso listado acima, o meu dispositivo de rede atende pelo nome de eth0, pode ser que o seu sistema utilize eth1, eth2 ou qualquer outro nmero. Vamos, primeiramente, configurar o ip manualmente, para isso execute o seguinte comando: ifconfig eth0 nmeroIP netmask mscara_de_rede Por exemplo, vou configurar minha interface de rede eth0 com o ip

192.168.0.2 e com a mscara 255.255.255.0. Vejamos esse exemplo na prtica: ifconfig eth0 192.168.0.2 netmask 255.255.255.0 Assim o computador j se comunica com os outros dispositivos conectados rede local, porm, para ter o acesso internet, necessrio configurar um gateway (sada de rede) que disponibilize acesso intenet. Para isso, vamos utilizar o comando abaixo: route add default -gw ip_do_gateway Por exemplo, digamos que o meu gateway seja o ip 192.168.0.1, o comando ficaria assim: route add default -gw 192.168.0.1 Por ltimo, vamos incluir o servido de nomes (DNS) para que o sistema consiga encontrar pginas e endereos na internet pelo uso das url's (ex. www.ro.senac.br). Para isso, vamos adicionar o DNS do google que resolver os nomes de todos os sites da internet: echo nameserver 8.8.8.8 > /etc/resolv.conf Assim o nosso dispositivo de rede est configurado e pronto para ser utilizado. Existe tambm uma outra forma de adicionar as configuraes de rede, atravs de um servio chamado DHCP, que nos entrega as configuraes de rede automaticamente. Para que esse tipo de configurao funcione necessrio saber se a rede oferece esse servio. Caso oferea, basta executar o seguinte comando: dhclient Ao fim da execuo desse comando a sua rede estar configurada.

16.5 Exerccios 1-) Liste os seus dispositivos usb. 2-) Insira um pen-drive no computador, liste novamente os dispositivos usb e encontre onde ocorreu a mudana. 3-) Configure sua placa de rede com a seguinte informao: Nmero IP: 192.168.122.132 Mscara de Rede: 255.255.255.0 Gateway: 192.168.122.254 DNS: 201.10.1.2

Captulo 17
Agendamento de Tarefas
Para um administrador de sistemas, imprescindvel que o seu sistema possa executar algumas tarefas importantes, sem que seja necessria a execuo de um comando no exato momento. Ou que o seu sistema execute uma tarefa a cada minuto, sem que ele tenha que executar esse comando durante esse tempo. Para isso existe o Agendamento de Tarefas, do qual discutiremos a importncia e a sua utilizao. Ao final do captulo, o aluno dever ser capaz de: Agendar Tarefas em sistemas Linux de maneiras diferentes; Compreender como funcionam os programas que fazem esses agendamentos.

17.1 A importncia do Agendamento de Tarefas Imaginem uma empresa que tem uma rotina de backup (cpias de segurana) executada todos os dias meia-noite, por conta da diminuio do trfego de rede e da sub-utilizao dos servidores, ento todos os dias o administrador de sistemas religiosamente tem que fazer uma conexo remota a uma mquina da empresa e executar o comando para a realizao do backup. Com certeza, essa situao no acontece (ou pelo menos no deveria acontecer), porque os sistemas operacionais, em sua grande maioria (se no for na totalidade), possui o recurso de agendamento de tarefas, que se torna uma ferramenta muito importante e de extrema necessidade para a administrao do sistema. Vale ressaltar que, em Linux, essa atividade extremamente simples e possui uma grande quantidade de recursos. Para dominar o agendamento necessrio conhecer o comando at e o arquivo crontab. 17.2 Comando at O comando at utilizado para agendamento rpido de tarefas, ele recomendado para realizar tarefas que no necessitem ser repetidas em horrios ou dias ordenados. Uma outra caracterstica do comando at bem interessante e til, ele executa a tarefa agendada aps o horrio estipulado. No caso, por exemplo do computador estar desligado no momento em que o agendamento deveria ter sido executado. A sintaxe desse comando simples e pode executar tarefas contidas em um script ou tarefas que forem escritas dentro do prompt de agendamento. Antes de comear a realizar agendamentos, vamos verificar a data e o horrio corrente do sistema. Para isso, basta executar o comando date que exibe a data e a hora corrente do sistema. Segue abaixo como exemplo

uma sada desse comando: Sex Fev 5 10:49:16 AMT 2010 Ao executar o comando date, voc deve ter tido uma sada parecida como essa acima, muito importante saber a data e hora atual do sistema para que possamos agendar e ver o resultado do nosso agendamento. O comando at vem acompanhado da opo -f no caso de ser necessrio executar um script com os comandos. Em seguida, a localizao desse script e por fim a hora e data de execuo. Tomando por exemplo a necessidade de executar um script localizado em /home/gabriel no dia 25 de fevereiro de 2010 s 13 horas, o comando ficaria da seguinte forma (no se preocupe agora em entender a especificao de horrio e data): at -f /home/gabriel/script.sh 13:00 02/25/2010 Seguindo a mesma idia do exemplo anterior, apenas mudando do script para a escrita dos comandos no prompt do at, ficaria da seguinte forma: at 13:00 02/25/2010 Com a execuo do comando acima, ir aparecer um prompt at> e ao lado desse prompt devem ser escritos os comandos a serem executados, como exemplo, digite o comando ls -a e pressione Enter, Aparecer uma nova linha com o prompt at> onde pode ser adicionado um outro comando que ser executado aps o comando anterior. Pressione Ctrl + d para finalizar o at e salvar o agendamento. Agora que j esclarecemos o uso de script e a insero de comandos no prompt at, falta entendermos como o at especifica os horrios e as datas de execuo dos comandos. O horrio definido de acordo com a representao normal de hora, dois campos para a hora e dois campos para os minutos com o smbolo de : (dois pontos) separando a hora dos minutos. Exemplo: 13:58 (treze horas e cinquenta e oito minutos).

J a data definida de uma forma um pouco diferente. Primeiro se coloca o ms representado por dois nmeros, depois vem a / (barra) para separar os campos, ento segue o dia representado tambm por dois nmeros, mais uma / e por fim o ano representado por quatro nmeros. Exemplo: 03/15/2010 (15 de maro de 2010). Alm da data no formato numrico, podemos tambm usar algumas palavras que representam os dias, por exemplo, a palavra today que significa hoje ou tomorrow que significa amanh. Por exemplo: at 13:00 tomorrow Executa os comandos especificados no dia seguinte s 13 horas. at 09:30 today Executa os comandos no dia atual s 9 e meia da manh. Vamos realizar mais alguns exemplos para fixar o conceito e praticar os agendamentos: Exemplo 1: Vamos agendar uma tarefa de mudana de ip na placa de rede do computador para o nmero 192.168.200.10 com a mscara de rede em 255.255.255.0, a ser realizada no dia 31 de dezembro de 2011 s 6 horas da manh. at 06:00 12/31/2011 at> ifconfig eth0 192.168.200.10 netmask 255.255.255.0 Pressione Enter Pressione Ctrl + d Exemplo 2: Vamos agendar um comando para desligar o computador hoje s 23 horas. at 23:00 today at> halt Pressione Enter Pressione Ctrl + d

Depois de inserir esses agendamentos, vem o momento de verificar e remover alguns deles que se tornem desnecessrios. Para verificar a lista de agendamentos que ainda no foram executados, utilizamos o comando atq. Utilizando esse comando no prompt, teremos um resultado como esse abaixo: 11 10 9 Fri Dec 31 23:00:00 2010 a gabriel Mon Apr 5 23:00:00 2010 a gabriel Tue Apr 6 13:00:00 2010 a gabriel

Nessas linhas, encontramos os seguintes parmetros: Nmero do agendamento, dia da semana (em ingls), ms, dia, horrio em que ir ocorrer, ano e o usurio que o gravou. Para excluir um agendamento utilizaremos o comando atrm. Esse comando deve ter como parmetro o nmero do agendamento. Por exemplo, vamos excluir o agendamento do dia 31 de dezembro, no meu caso representado pelo nmero 11 (verifique com o comando atq o nmero que representa o seu): atrm 11 Pronto, o agendamento nmero 11 foi excludo, para verificar execute mais uma vez o comando atq e veja se o agendamento foi realmente excludo. 17.3 Crontab O crontab um arquivo de configurao, onde ficam armazenados os agendamentos que o daemon (programa que executado em plano de fundo background) cron deve executar, ou seja, a cada minuto o cron l o arquivo crontab e executa as tarefas nele escritas para aquele determinado horrio. O arquivo crontab fica localizado no diretrio /etc e pode ser

editado por qualquer editor de texto, como por exemplo o j estudado Vim, porm somente pelo superusurio root. Sem a necessidade de nenhum comando especial, a tarefa que for escrita nesse arquivo ser executada de acordo com o perodo descrito, perodo esse que no precisa ser uma data especfica (para agendar em data especfica deve-se usar o at), mas sim em um determinado perodo, como por exemplo: de dez em dez dias, ou de ms em ms, ou uma vez na semana, a cada hora e assim por diante. Vamos ler o contedo de um arquivo crontab para entender a forma na qual ele escrito. Execute o comando cat /etc/crontab .
SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) #

A primeira linha seleciona o shell que ir executar os comandos descritos no arquivo (conforme o captulo que trata sobre shell script). A segunda linha trata sobre algumas variveis de ambiente. J a linha seguinte um comentrio que possui uma espcie de legenda s informaes armazenadas no bloco dos agendamentos. Essa legenda composta por: m (minutos), h (hora), dom (dia do ms), mon (ms), dow (dia da semana), user (usurio) e command (comando). E abaixo da legenda vm todos os agendamentos peridicos. Vamos pegar um como exemplo para podermos entender o arquivo:
Minuto Valor de 0 a 59 Hora Valor de 0 a 23 Dia do Ms Valor de 1 a 31 Ms - Valor de 1 a 12 Dia da Semana Valor de 0 a 7 (sendo o 0 e o 7 correspondentes a Domingo) Usurio Comando

17 *

* * * root cd / && run-parts --report /etc/cron.hourly

Vamos analisar algumas linhas das especificaes de horrios e datas do crontab para entender e dominar a forma de especific-los. 17 * * * * O comando ser executado aos 17 minutos de todas as horas em todos os dias de todos os meses. Por exemplo: 00:17, 01:17, 02:17, etc. 25 6 * * * O comando ser executado s 6 horas e 25 minutos em todos os dias de todos os meses. 47 6 * * 7 O comando ser executado s 6 horas e 47 minutos somente nos domingos em todos os meses. 52 6 1 * * O comando ser executado s 6 horas e 52 minutos no dia 1 de todos os meses. 0,15,30,45 * * * * O comando ser executado a cada 15 minutos em todas as horas, todos os dias e em todos os meses. 0 13 31 12 * O comando ser executado s 13 horas no dia 31 de dezembro no importando o dia da semana. Enquanto a linha que corresponde ao agendamento inserido no for apagada, esse comando continuar sendo executado no prazo estipulado. Para desfazer um agendamento, basta apagar uma linha do arquivo, ou ento adicionar um smbolo de # (cerquilha) no incio da linha do seu agendamento. Vamos demonstrar alguns exemplos para fixar a idia do agendamento: Exemplo 1: Vamos agendar como usurio root, a execuo de um shell script chamado semana.sh localizado no diretrio /root de segunda sexta s 2 horas da manh. 0 2 * * 1-5 root /root/semana.sh

O trao simboliza at, ento no caso acima ele vai executar do dia da semana 1 (segunda-feira) at o dia 5 (sexta-feira), ou seja, executar tambm nos dias 2 (tera-feira), 3 (quarta-feira) e 4 (quinta-feira). Exemplo 2: Vamos agendar como usurio root, uma tarefa de execuo de um script todo o dia 2 dos meses de janeiro, maio e setembro s 23 horas. 0 23 2 1,5,9 * root /root/quadrimestral.sh A vrgula faz com que o agendamento seja executado somente nos meses determinados, lembrando que no se deve colocar espaos entre os nmeros de uma mesma propriedade quando se usa vrgula ou trao. Cada usurio tambm pode ter o seu arquivo crontab, porm essa opo complica na hora das permisses, pois um usurio normal pode ter algumas restries ao executar alguma tarefa. Porm, importante conhecer tambm os comandos que fazem essa parte de agendamento para usurios comuns. Para abrir e editar o arquivo crontab do seu usurio, basta utilizar o comando crontab -e , ser aberta uma tela utilizando um editor de texto para que o crontab possa ser editado. Para verificar o crontab do seu usurio utilize o comando crontab -l . E para remover o arquivo utilize o comando crontab -r .

17.4 Exerccios 1-) Cite alguns exemplos de situaes onde o agendamento se torna indispensvel. _________________________________________________ _________________________________________________ _________________________________________________ 2-) Explique as diferenas entre o agendamento rpido e o agendamento peridico. _________________________________________________ _________________________________________________ _________________________________________________ 3-) Crie um agendamento rpido para um desligamento do computador que ir ocorrer amanh s 22 horas. _________________________________________________ 4-) Crie uma linha do crontab para que o computador seja reiniciado todos os sbados e domingos dos meses de janeiro, abril, julho e outubro s 12 horas e 30 minutos. _________________________________________________ _________________________________________________

Captulo 18
Miscelnea
Alm das grandes tarefas e sistemas do servidor, a vida do administrador tambm composta de ferramentas auxiliares e outras rotinas como backup de arquivos e configurao em geral. Ao final desse captulo, voc ser capaz de: Escrever documentao do servidor e usurios Criar discos de emergncia Planejar o procedimento de backup do sistema Melhorar o desempenho do servidor

18.1 - Criao de Documentao Ignorada por muitos administradores, a criao de documentao uma tarefa laboriosa, mas que a longo prazo compensa o tempo investido. H dois tipos de documentao que o administrador deve criar e manter atualizadas: Documentao do Servidor: Guias tcnicos que descrevem procedimentos a serem executados no servidor Cpias comentadas de arquivos de configurao funcionais Diagramas que descrevem de maneira geral o ambiente do servidor e da rede local Documento que descreve aes a serem tomadas em caso de situaes de emergncia Qualquer outro registro de dados importantes que o prprio administrador vai consultar no futuro, em caso de esquecimento.

Documentao para o Usurio: Normas de conduta e regras de uso do servidor e seus componentes Guias em linguagem acessvel, estilo tutorial e com screenshots, descrevendo os procedimentos e configuraes necessrias na mquina cliente FAQ interno com respostas para as perguntas mais comuns sobre o servidor e a rede interna

bem simples a distino entre os dois tipos de documentao. A primeira, o administrador escreve para que ele mesmo leia em caso de necessidade, pois com o passar dos meses, comum se esquecer de como tudo funciona. A outra o administrador escreve para evitar ao mximo ser interrompido para resolver problemas de usurios, dando instrues de como eles podem se virar sozinhos. Fora o contedo e objetivos de cada documento, outro ponto importante quanto ao formato no qual ele vai ser escrito e no qual vai

estar disponibilizado. Para uma manuteno tranquila, desejvel que o formato de escrita seja o mais simples possvel, para que o administrador se preocupe apenas com o contedo, e no com sua formatao. Como o console o ambiente primrio de uso do sistema, recomendvel a escolha de um formato que possa ser escrito num editor como o VI. Para a disponibilizao, hoje uma unanimidade os formatos HTML e PDF, sendo que o primeiro geralmente satisfaz a grande maioria dos casos. O PDF mais utilizado para disponibilizar documentos para download, por ser apenas um arquivo com todos os textos e imagens. 18.2 - Criao de Discos de Emergncia essencial que o administrador tenha mo discos de recuperao do sistema para casos de emergncia. Seja um simples disquete de inicializao ou uma distribuio inteira em um CD, uma forma de iniciar uma mquina danificada essencial. Para criao de um disco de inicializao, pode-se utilizar o comando mkbootdisk, que uma ferramenta bsica do sistema encontrada em qualquer distribuio. Vamos criar um disco de emergncia para o Kernel atravs do comando: mkbootdisk 2.4.21-31301U90_11cl Agora vamos fazer o mesmo do anterior, porm em modo detalhado e especificando o dispositivo do disquete que ir receber o arquivo de inicializao: mkbootdisk v device /dev/fd1 2.4.21-31301U90_11cl um Outro recurso muito til ter um CD-ROM, ZIP drive ou mesmo disquete com uma mini-distribuio que possa ser

bootadodiretamente sem necessidade de uso no disco rgido. 18.3 - Estratgias de Backup Fazer backups o ato de criar cpias de segurana dos arquivos importantes do sistema, para poder restaur-los em caso de perda. A perda de arquivos pode ocorrer devido a vrios fatores como: edio descuidada, remoo acidental, falha de hardware e at desastres ( incndio, desabamento), tornando o backup uma tarefa essencial ao servidor. O procedimento de backup simples em sua essncia: uma cpia dos arquivos importantes do sistema. Mas na prtica, vrios detalhes devem ser levados em conta e podem fazer a diferena entre um backup funcional ou problemtico. O que Copiar? O momento mais importante do backup , antes mesmo de ele ser feito. Primeiro deve-se fazer uma anlise detalhada no sistema, identificando todos os arquivos e diretrios que no podem ser perdidos. De nada adianta um backup peridico se quando for preciso restaur-lo, perceber que um arquivo importante ficou de fora. A melhor maneira de se encontrar os arquivos necessrios, simular uma situao de emergncia. Imagine que o disco rgido do servidor vai queimar amanh e todos os dados sero perdidos. Quais os arquivos que devem ser copiados hoje para um disco novo, de maneira que ao trocar os discos, o sistema continuar funcionando normalmente ? Cada servidor tem a sua particularidade, mas algumas dicas gerais so importantes: a) Obtenha a lista de todos os pacotes instalados ( rpm qa ) no sistma, para reinstal-los no disco novo. b) Algum programa foi instalado manualmente ? Se sim, salve tambm suas fontes e configuraes para reinstal-los no disco

novo. c) Copie todo o contedo do diretrio /etc. d) Faa uma anlise dos programas utilizados e confira se algum deles no usa outro diretrio fora o /etc para guardar suas configuraes. Tambm verifique onde estes programas guardam os dados de usurios e transaes. e) Copie os arquivos e diretrios com os dados de usurios. Geralmente o diretrio /home o ponto central onde estes dados esto concentrados. Quando copiar? Outra deciso importante a se tomar na definio da poltica de backup, o horrio no qual o procedimento ser feito e com qual frequncia ele ser executado. Dependendo da quantidade de dados do servidor, todo o procedimento de backup pode levar minutos ou at mesmo horas. Geralmente, o horrio mais oportuno durante a madrugada, quando no h usurios logados no sistema e a carga do servidor est baixa. Isso evita se copiar arquivos em uso pelo sistema, bem como deixar o servidor lento, pois o procedimento de backup toma conta dos recursos do sistema. Definindo o horrio do backup, o prximo passo analisar qual freqncia necessria de sua execuo. Semanal, dirio, duas vezes por dia ? Cada caso nico, o ideal encontrar um meio termo que alie a economia de mdias usadas para armazenar as cpias e o intervalo de tempo que cause pouco impacto em caso de perda dos dados ocorrida entre um backup e outro. Onde armazenar? Arquivos de backup tendem a ser grandes, necessitando de uma mdia de alta capacidade para armazen-los. Para servidores de pequeno e mdio porte, o backup em CD-R a opo recomendada, pois o preo da

mdia acessvel e a gravao rpida. Para servidores de maior porte, pode-se utilizar DVD ou fita magntica.

18.4 Exerccios 1-) Crie uma estratgia de backup para a sua empresa baseando-se nesse captulo. ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ 2-) Aps a leitura do Captulo 20, volte a esse exerccio e com a ajuda do seu professor, monte um script para automatizar o backup.

Captulo 19
Programao Shell
Quando falamos de programao, muitos profissionais das reas de redes de computadores e administradores de sistemas tendem a se esquivar e tentar fugir desse assunto, porm a programao shell script muito importante principalmente para ajudar o administrador a automatizar tarefas e tambm encontrar e criar solues para seus usurios. A programao shell bem simples e o intuito desse captulo ensinar o necessrio para que voc comece a detonar nos scripts. Ao final do captulo, o aluno dever ser capaz de: Compreender a estrutura de um shell script; Criar seus scripts para automatizar tarefas.

19.1 Conceitos Gerais Como j foi detalhado no captulo 5, o shell uma interface de comandos de alto nvel que realiza a interao entre o usurio e o kernel, que, por sua vez, se comunica e controla o hardware. USURIO SHELL KERNEL HARDWARE A programao shell script bem diferente do estilo de programao de uma linguagem comercial, at porque possui um foco bem diferenciado. A funo principal do shell script executar comandos de forma sequencial e tambm interagir com o usurio. Tenho certeza que, ao comear a ler esse captulo, veio uma lembrana do MS-DOS, porm o shell script muito mais completo, pois possui alm de seus comandos nativos as estruturas de condio (IF) e repetio (FOR, WHILE) alm de variveis e funes. importante lembrar que o shell script uma linguagem case sensitive, ou seja, echo diferente de Echo ou ECHO. Ento muito cuidado com os comandos e tambm com as variveis utilizadas, pois $vairavel diferente de $VARIAVEL. 19.2 Escolhendo um Interpretador No Linux existem alguns tipos de shell diferentes, o Kernel pode ser o mesmo porm a interface de comandos pode ser diferenciada. Existem vrios shell's disponveis para Linux, vamos conhecer alguns dos mais conhecidos e utilizados no mundo Linux: sh o interpretador padro dos sistemas UNIX ..... csh Criado por Bill Joy em .... baseado na linguagem de programao C. ksh Conhecido como Korn Shell, desenvolvido por David Korn

... bash A sigla de Bourne Again Shell, desenvolvido por .. , hoje o shell mais popular e utilizado em Linux, e ser o shell utilizado por ns durante esse captulo. Em qualquer shell script a primeira linha utilizada para especificar o interpretador de comandos. de suma importncia que essa linha no seja esquecida para que possamos evitar erros por conta do interpretador. Se vamos iniciar um script no qual o seu interpretador ser o bash, escrevemos assim na primeira linha: #!/bin/bash Essa linha seleciona o interpretador bash que se encontra no diretrio /bin (para visualizar o arquivo bash basta utilizar o comando ls /bin). 19.3 Variveis Um conceito bem interessante em shell script o uso de variveis. A varivel em sistemas computacionais tm o mesmo conceito de variveis na matemtica, quem no se lembra do x ou y, eram letras que representavam um nmero em questo. Uma varivel um conjunto de caracteres que correspondem a um nmero ou uma palavra armazenada na memria e podem mudar de valor quantas vezes for necessrio. No shell script, temos duas formas de utilizar a varivel. A primeira acontece quando decidimos atribuir um valor varivel, para isso utilizamos o nome da varivel (j existente ou a que ser criada) acompanhada de um sinal de igualdade (=) e o valor que ela ir comportar.

Exemplo: VARIAVEL = 2 A segunda forma acontece quando temos que utilizar essa varivel, seja para exibir, calcular ou qualquer outra forma desde que no seja atribuir valor. Nesses casos, acrescentamos um smbolo de $ no incio do nome da varivel. Exemplo: echo $VARIAVEL Execute no shell esses dois comandos mostrados acima e perceba a ao que foi realizada. Outro detalhe que, diferente de outras linguagens de programao, como o C por exemplo, as variveis em shell script no precisam de uma declarao quanto ao seu tipo. Por exemplo, se eu atribuo o nmero 2 a varivel TESTE, ela automaticamente assume o formato do nmero dois que inteiro, se logo depois eu atribuo a palavra dois a mesma varivel, ela assumir o formado de texto. O contedo o que importa na varivel do shell. 19.4 Escrevendo o primeiro script Vamos criar um primeiro script relativamente simples, para que possamos entender um pouco da sintaxe. Esse script ter por funo exibir algumas informaes do sistema. #!/bin/bash echo echo Script de Exibio de Informaes do sistema echo echo Para iniciar tecle ENTER read tecla clear echo Nome do computador: uname -n

sleep 3 echo echo Data e Hora Atuais date sleep 3 echo echo Usurios logados no sistema who -q sleep 3 echo echo Quantidade de memria utilizada e disponvel em Megabytes free -om sleep 3 echo echo Espao em disco df -h sleep 3 echo echo Fim do scritp. Pressione ENTER para encerrar read tecla clear Copie esse script e salve com o nome de sistema.sh dentro do diretrio temporrio /tmp. A extenso (conjunto de letras aps o ponto no nome do arquivo) no faz diferena na hora de executar o script. Esse script poderia se chamar sistema.txt que mesmo assim seria executado, porm recomendamos o uso da extenso como forma de organizao e melhor visualizao dos arquivos shell script. Agora vamos dar permisso de execuo para esse script utilizando o comando chmod: chmod +x /tmp/sistema.sh Nunca esquea de atribuir permisso, sem essa atribuio o script no funcionar.

Vamos executar o script atravs do comando /tmp/sistema.sh utilize o script at a sua finalizao. Caso ocorra algum erro, revise a escrita do script e tente aplicar novamente a permisso. Vamos analisar agora as partes que compem o script e os comandos utilizados. echo Exibe alguma informao na tela. Caso seja utilizado sem nenhuma mensagem como parmetro, apenas pula uma linha. read L alguma informao digitada pelo usurio e a guarda em uma varivel. No nosso caso, o objetivo era apenas esperar pela tecla Enter e por isso no utilizamos o valor da varivel descrita (tecla) no restante do script. clear Comando que limpa a tela. sleep Esse comando aguarda o tempo (em segundos) que for mostrado no seu parmetro antes de executar a prxima ao. Os outros comandos utilizados tem a sua descrio no prprio script. Se houver dvida sobre algum desses comandos utilize o comando man acompanhado do nome do comando para ver a sua funo, opes e sintaxe. Exemplo: man free 19.5 Estruturando um script Pegando o mesmo exemplo do script acima, vamos melhor-lo e criar um menu e uma estrutura de condio (IF) para definir a opo a ser utilizada. Vamos ver como ficaria esse script com a estrutura IF, e logo abaixo vem a descrio dos comandos utilizados.

#!/bin/bash echo echo Script de Exibio de Informaes do sistema clear echo MENU echo echo Escolha uma das opes abaixo teclando o seu nmero echo 1 - Exibir o nome do computador echo 2 - Exibir a data e hora atuais echo 3 - Exibir os usurios logados no sistema echo 4 - Exibir a Quantidade de Memria em Megabytes echo 5 - Exibir o espao em disco echo 0 - Sair echo read tecla if [ $tecla -eq 1 ] then clear echo Nome do computador: uname -n sleep 3 fi if [ $tecla -eq 2 ] then clear echo Data e Hora Atuais date sleep 3 fi if [ $tecla -eq 3 ] then clear echo Usurios logados no sistema

who -q sleep 3 fi if [ $tecla -eq 4 ] then clear echo Quantidade de memria utilizada e disponvel em Megabytes free -om sleep 3 fi if [ $tecla -eq 5 ] then clear echo Espao em disco df -h sleep 3 fi echo echo Fim do scritp. Pressione ENTER para encerrar! read tecla clear Copie esse script, salve com o nome de sistema2.sh dentro do diretrio temporrio /tmp e no esquea de atribuir permisso de execuo. Esse script possui uma espcie de menu para que o usurio possa escolher qual tarefa deve ser executada atravs de uma opo numrica e a instruo IF responsvel por testar essa opo e saber o que o usurio escolheu. O IF (SE em portugus) uma estrutura de condio, ou seja ela testa se uma determinada condio verdadeira ou falsa e executa aes dependendo da veracidade ou no da condio.

Vamos realizar um exemplo para testar o IF, atravs do script if.sh: #!/bin/bash echo Digite 1 para verdadeiro ou qualquer outro valor para falso. read condicao if [ $condicao -eq 1 ] then echo Verdadeiro else echo Falso fi Creio que com esse exemplo fica mais fcil de explicar a condio IF. O if faz na verdade, uma pergunta, traduzindo seria mais ou menos assim: Se a varivel condio for igual a 1 ento exiba Verdadeiro caso contrrio exiba Falso fim do se Essa a construo padro da expresso IF, sempre que for necessrio verificar o contedo de uma varivel para executar uma determinada ao, o IF tambm pode ler o resultado de um comando, desde que esse resultado esteja gravado em uma varivel. A expresso -eq significa igual, utilizada para comparar nmeros inteiros, no caso de comparar palavras (strings) tero que ser utilizados outros smbolos de comparao. Vejamos na prxima tabela, esses smbolos e a utilizao de cada um:

Nmeros Strings Igual diferente maior que menor que maior ou igual menor ou igual nulo No nulo -eq -ne -gt -lt -ge -le == != > < >= <= -z -n

Vamos exemplificar o uso de strings na condio IF nome=gabriel if [ $nome == gabriel ] then echo nome correto else echo nome incorreto fi Vale lembrar que ao trabalhar com strings em shell script, se faz necessrio utilizar aspas duplas () antes e depois da string. Esse pequeno trecho de script acima, compara uma varivel que contm uma string a uma outra palavra. Outro tipo de estrutura em scripts linux so as estruturas de repetio. Existem dois tipos de estrutura de repetio (FOR e WHILE), cada uma para atender uma tarefa especfica. A estrutura FOR (Para) utilizada quando precisamos repetir uma ao em um nmero determinado de vezes, por exemplo, se eu preciso executar uma tarefa por 10 vezes consecutivas, poderia utilizar a estrutura FOR.

Para exemplificar a estrutura FOR, vamos gerar um script que crie 10 diretrios com o nome a ser escolhido pelo usurio dentro do diretrio /tmp. #!/bin/bash echo Script de criao de diretrios dentro de /tmp cd /tmp for numero in $(seq 5) do echo digite o nome do diretrio nmero $numero read diretorio mkdir $diretorio done clear echo Fim do Script Salve esse script com o nome diretorio.sh e lembre de atribuir permisso de execuo no mesmo. Execute o script, d nome aos diretrios e veja o resultado. O for executa quantas vezes for determinado pela(s) varivel(is) encontrada(s) aps o in. Nesse caso, o comando seq 5 executa o lao for 5 vezes e atribui os valores de 1 a 5 varivel $numero. Para ver isso melhor s notar que a varivel $numero chamada aps o comando echo exibiu cada um dos nmeros da $(seq 5) durante a execuo do for. Se aps a sentena in, houvesse as palavras senac sesc fecomercio, o lao for seria executado trs vezes e a varivel com o nome aps o for, receberia o nome de cada uma das trs palavras. sempre importante lembrar da necessidade da utilizao das palavras do e done no incio e fim do lao respectivamente. A estrutura WHILE tambm trabalha com repetio, porm com um diferencial. No necessrio conhecer o nmero de vezes que o lao ser

executado, porm, preciso que haja uma condio de sada ao lao, para que o mesmo no se torne infinito. Para exemplificar o uso do WHILE, vamos utilizar o nosso script sistema2.sh e realizar algumas modificaes a fim de gerar o script sistema3.sh. Veja como deve ficar o novo script, e, mais abaixo, explicaremos as modificaes ocorridas. #!/bin/bash

tecla=6 while [ $tecla -ne 0 ] do echo echo Script de Exibio de Informaes do sistema clear echo MENU echo echo Escolha uma das opes abaixo teclando o seu nmero echo 1 - Exibir o nome do computador echo 2 - Exibir a data e hora atuais echo 3 - Exibir os usurios logados no sistema echo 4 - Exibir a Quantidade de Memria em Megabytes

echo 5 - Exibir o espao em disco echo 0 - Sair echo read tecla

if [ $tecla -eq 1 ] then clear echo Nome do computador: uname -n sleep 3 fi

if [ $tecla -eq 2 ] then clear echo Data e Hora Atuais date sleep 3

fi

if [ $tecla -eq 3 ] then clear echo Usurios logados no sistema who -q sleep 3 fi

if [ $tecla -eq 4 ] then clear echo Quantidade de memria utilizada e disponvel em Megabytes free -om sleep 3 fi

if [ $tecla -eq 5 ]

then clear echo Espao em disco df -h sleep 3 fi

echo Pressione ENTER para continuar read enter clear done echo echo Fim do scritp. sleep 3 clear Salve esse script, atribua a permisso de execuo e execute o script para conhecer a sua nova funcionalidade. O comando while possui um parmetro que determina a continuidade do lao. Nesse caso, o lao while executado todas as vezes em que a varivel $tecla diferente de 0. Antes do lao while atribudo o

valor 6 varivel $tecla para que no haja nenhum problema quanto ao incio da execuo do mesmo. Ento, enquanto o usurio no digitar o nmero 0 como opo do menu, o programa repetir. sempre importante frisar que o contedo do lao while, ou seja, o que vai ser repetido deve ficar sempre entre as palavras do e done assim como o for. Existe ainda uma outra forma de passar parmetros para o script, sem ter que utilizar a sentena read, podemos passar esse parmetro junto ao nome do script. Sempre que um parmetro passado junto ao nome do script (exemplo: script.sh 2 3), ele automaticamente colocado dentro das variveis $1 e $2 respectivamente. No caso de haverem 4 parmetros (exemplo: script.sh 2 4 1 7) as variveis sero $1, $2, $3 e $4 e assim por diante, o shell sempre atribuir nessa ordem. Vamos criar um script simples, que some dois valores passados junto com o nome do script. #!/bin/bash soma=$(($1+$2)) echo $soma Salve este script com o nome de soma.sh e d permisso de execuo. Para executar o script digite ./soma.sh 2 3 , ao clicar Enter voc ver que o script retornar o valor 5 que a soma dos nmeros 2 e 3. Sempre que for necessrio realizar uma soma, ou qualquer outra operao matemtica, necessrio utilizar a notao $(( )). Por exemplo: $((2*2)), $((6/2)), $((3-1)).

19.6 Exemplos Vamos ver agora alguns exemplos de utilizao da linguagem shell script: Exemplo 1: Crie um script para realizar configuraes de rede. #!/bin/bash echo Digite a interface de rede read INT sleep 1 echo Digite o ip atribudo ao computador read IP sleep 1 echo Digite a mscara de rede read MASK sleep 1 echo Digite o Gateway read GW clear echo "Configurando, Aguarde..." sleep 3 ifconfig $I $IP netmask $MASK route add -net 0.0.0.0 gw $GW Exemplo 2: Crie um script que inicie ou pare servios. #!/bin/bash clear echo Qual servio voc deseja manipular? read serv echo Digite 1 para iniciar ou 0 para parar o servio read status if [ $status -eq 1 ] then

/etc/init.d/$serv start else if [ $status -eq 0 ] then /etc/init.d/$serv stop else echo Digite uma opo vlida fi fi

19.7 Exerccios 1-) Descreva a funo do shell script. ________________________________________________ ________________________________________________ ________________________________________________ 2-) Crie um script que funcione como uma calculadora para dois nmeros. 3-) Crie um script que insira e remova usurios do sistema.

Captulo 20
Gerenciamento de Discos
O Gerenciamento de discos e de outros dispositivos de armazenamento uma das principais tarefas do administrador de sistemas. Seja na Instalao, manuteno ou resoluo de problemas, o particionamento e a criao e manuteno de sistemas de arquivos so tarefas extremamente comuns. Ao final voc dever ser capaz de: Reconhecer alguns dos problemas relacionados ao gerenciamento de discos Utilizar comandos do sistema para gerenciar o armazenamento de dados, discos e sistemas de arquivo.

20.1 - Discos e Parties Parties so reas contguas do disco rgido que podem ser utilizadas para fins diversos, tais como a instalao de diferentes sistemas operacionais ou diferentes sistemas de arquivos para um mesmo sistema. O sistema de particionamento de discos do PC permite o uso de apenas quatro parties, ditas primrias. Para permitir um nmero maior de parties, foram criadas as parties estendidas, permitindo que uma partio primria seja subdividida em parties lgicas. De acordo com o dispositivo, teremos nomes diferentes dentro do diretrio /dev. Por exemplo, no dispositivo /dev/hda1 a sigla hd mostra o tipo do mesmo. No caso um disco IDE, a letra a diz que do primeiro disco do computador e o nmero 1 mostra que a primeira partio desse disco. Vejamos uma lista abaixo com alguns nomes de dispositivos: /dev/hdb1 Primeira partio do segundo disco IDE. /dev/sda2 Segunda partio do primeiro disco SCSI ou SATA. /dev/fp0 Primeiro drive de disquete.

20.2 Verificando o sistema de arquivos O administrador de sistemas deve estar sempre preocupado com a utilizao e o estado de seus dispositivos de armazenamento, pois, no caso de um banco de dados por exemplo, se o disco estiver cheio, o servidor parar de receber incluses de dados, o que traria uma perda financeira para a empresa. sempre importante que ocorra essa verificao quase que diariamente, ou que haja um script que possa realiz-la e avisar quando a situao estiver chegando a um estado crtico.

O Linux possui vrios utilitrios que auxiliam na verificao de discos. Um utilitrio dos mais conhecidos e que vem instalado por padro no Debian o df. Vamos utilizar o comando df -h para verificar nossos dispositivos de armazenamento. O resultado desse comando poder ser parecido com esse: Sist. Arq. /dev/sda6 udev none none none none Tam Usad Disp Uso% Montado em 54G 46G 5,0G 91% / 437M 256K 437M 1% /dev 437M 936K 436M 1% /dev/shm 437M 76K 437M 1% /var/run 437M 0 437M 0% /var/lock 437M 0 437M 0% /lib/init/rw

O parmetro -h passado frente do comando, faz com que ele d essa sada compreensvel e muito simples. Ele mostra o tamanho do disco, o espao utilizado, o espao disponvel e a porcentagem de uso. Lembrando que, para um servidor, essa utilizao de 91% j seria algo completamente preocupante e perigoso, necessitando de uma manobra para o aumento de espao de disco. 20.3 Montando e Desmontando Parties Uma das boas funcionalidades do Linux o fato de poder montar e desmontar dispositivos de armazenamento de acordo com a sua necessidade. Se eu conecto uma unidade de disco ao meu hardware, ela somente estar disponvel aps ocorrido o processo de montagem. E a partir do momento que eu queira retirar o acesso a ela, basta desmont-la, simples assim. Vamos montar uma partio, seu sistema de arquivos ntfs e est

localizada no /dev com o nome de sda1. Antes de executar o processo de montagem, vamos criar o ponto de montagem, que nada mais que um diretrio onde essa partio ser montada. Para isso, vamos utilizar o comando mkdir para criarmos um diretrio dentro de /media. Utilizaremos o seguinte comando: mkdir /media/ntfs Vamos ento montar o /dev/sda1 no diretrio /media/ntfs atravs do comando mount: mount /dev/sda1 /media/ntfs Para acessar o contedo desse dispositivo basta utilizar o comando cd /media/ntfs e listar os seus arquivos e diretrios com o comando ls. Ao fim da utilizao desse disco, iremos desmont-lo atravs do comando umont: umount /media/ntfs

20.4 - Exerccios 1-) Insira um pendrive no computador montagem/desmontagem do dispositivo no sistema. e pratique a

2-) Verifique as outras opes do comando df e descubra novos tipos de verificao de discos.

Captulo 21
LVM
O LVM (Gerenciamento de Volume Lgico) um recurso encontrado em sistemas Linux que permite a criao e o gerenciamento de discos lgicos associados a um disco fsico ou mesmo parties de um HD. Esse conceito um pouco complicado primeira vista, porm ser possvel compreende-lo melhor no decorrer do captulo Ao final do captulo, o aluno dever ser capaz de: Entender o conceito e a terminologia do LVM; Criar uma estrutura de LVM.

21.1 Conceitos Iniciais Normalmente um sistema organizado em parties que facilitam a organizao do disco e dos arquivos que devero ser armazenados. Porm, existe um grande problema nisso: E quando o espao acaba?. Cpia de dados, incluso de novos discos, planejamento da utilizao de um novo servidor, criao de uma nova partio, todas essas estratgias poderiam solucionar esse problema, porm, em todos os casos seria necessrio tempo de planejamento e execuo, o que tambm, em alguns casos, pode resultar em parada do servio. Os sistemas Linux possuem um recurso que pode acabar com todas as dificuldades desse processo. Esse recurso o LVM e est baseado em um conceito que, se abstrado corretamente, facilitar a implementao. O LVM uma implementao lgica sobre os dispositivos fsicos de armazenamento e, para isso, existem quatro camadas a serem implementadas, so elas: PV (Volume Fsico): o conjunto de discos e dispositivos de armazenamento disponveis no computador sobre os quais ser construdo o LVM. PE (Extenses Fsicas): a diviso do PV em espaos menores. As PE's so geralmente pedaos de 4 MB (o que pode ser alterado de acordo com a implementao) que sero alocados aos meus volumes lgicos. LV (Volumes Lgicos): o conjunto de PE's alocados pertencentes a um mesmo PV ou no que representam uma partio do sistema. Por exemplo, se eu constru minhas PE's com 4 MB cada e eu quero criar um LV para o diretrio /home de 800 MB, devo utilizar 200 PE's para construir esse volume. VG (Grupo de Volumes): ele composto por todo o ambiente de LVM, ou seja, por todos os itens descritos acima.

Vamos utilizar o desenho abaixo para entender melhor esse conceito apresentado anteriormente.

Como podemos ver no desenho acima, temos dois Volumes Fsicos (PV), o Disco 1 e Disco 2 divididos em quatro extenses fsicas (PE) cada. O primeiro volume lgico (LV) que compe o diretrio /home composto por duas extenses fsicas (PE) localizadas no volume fsico (PV) Disco 1, o segundo volume lgico (LV) que compe o diretrio /log composto por uma extenso fsica (PE) localizada no volume fsico (PV) Disco 1 e duas extenses fsicas (PE) localizadas no volume fsico (PV) Disco 2 e por ltimo o ltimo volume lgico (LV) que compe o diretrio /var composto por duas extenses fsicas (PE) localizadas no volume fsico (PV) Disco 2. 21.2 Instalando o LVM Para instalar o suporte a LVM no seu computador bem fcil, basta

ter acesso internet e instal-lo atravs do comando apt-get da seguinte forma: apt-get install lvm2 Feito isso aguarde o trmino do download e instalao desse pacote. Execute o comando lvscan para verificar se o lvm est instalado corretamente. Aps a instalao e sua verificao, vamos criar as extenses fsicas dentro e o volume fsico que ir agrup-las no disco, lembrando que sempre a criaremos numa partio inteira. Utilize o seguinte comando: pvcreate /dev/partio Lembrando que partio deve ser substituida pelo conjunto de letras e nmero que o Linux atribuiu a ela, por exemplo: hda1, hdb2, sda2, sdb4, etc. Verifique se o volume fsico foi realmente criado com o comando pvdisplay. Criaremos agora o Grupo de Volumes (VG) onde poderemos criar posteriormente os nossos volumes lgicos. Execute o prximo comando: vgcreate nome_do_grupo /dev/partio Lembrando que voc dever substituir sentena nome_do_grupo pelo nome que dever ter o VG e a palavra partio pelo nome da partio onde foi criado o volume fsico anteriormente. E, finalmente, criaremos o volume lgico, que receber os dados. Para isso ser utilizado o seguinte comando: lvcreate -L 100M nome_do_volume nome_do_grupo

Substitua o 100M pelo tamanho do LV a ser criado, por exemplo: 100K (100 kilobytes), 10G (10 gigabytes), etc. A sentena nome_do_volume deve ser substituda pelo nome do novo volume lgico e o nome_do_grupo substitudo pelo nome do grupo criado anteriormente. Para remover um volume lgico basta executar o seguinte comando: lvremove /dev/nome_do_grupo/nome_do_volume

21.3 Exerccios 1-) Crie em uma partio vazia do seu hd um volume lgico com o nome tux. 2-) Crie abaixo um desenho que exemplifique o seu LV criado no exerccio 1.

Captulo 22
Raid
Certas aplicaes exigem alto desempenho e confiabilidade no armazenamento de dados. O RAID uma das ferramentas disposio do administrador para atingir esse objetivo, atravs da construo de arranjos redundantes de discos. Ao final desse captulo voc dever ser capaz de: Entender conceitos bsicos sobre sistemas RAID Identificar os diferentes nveis de RAID

22.1 Conceitos Iniciais O termo RAID ( Redundant Array of Inexpensive ) : Designa diferentes arranjos de discos em que se pode obter maior confiabilidade, maior capacidade de armazenamento e reduo no tempo de acesso aos dados. Desempenho: discos so acessados em paralelo, operaes de leitura e escrita podem ser feitas simultaneamente em vrios discos fsicos. Armazenamento: diversos discos fsicos podem ser combinados para uso conjunto de sua capacidade de armazenamento. Confiabilidade: os dados so armazenados com redundncia (espelhamento ou paridade) permitindo que discos com defeito sejam substitudos sem perda de informao.

RAID por hardware e software Sistemas RAID podem ser implementados em hardware ou software. RAID por hardware: realizada pela controladora de discos, transparente para o sistema operacional. visvel como um nico disco e no consome recursos do sistema para a obteno de redundncia ou reconstruo. RAID por software: feito pelo kernel, no exigindo hardware especial, mas utilizando recursos do sistema para clculo de paridades e reconstruo do arry em caso de inconsistncia.

22.2 - Nveis de RAID Cinco nveis de RAID foram originalmente propostos para organizar discos em diferentes graus de capacidade, redundncia e desempenho: RAID1, RAID2, RAID3, RAID4 E RAID5.

RAID0 (Data striping): o conjunto de discos visto como um grande disco, sem redundncia. Os dados so distribudos em chunks por todos os discos. Quando um disco falha, todos dos dados so perdidos. RAID1 (Espelhamento): dados armazenados so duplicados em dois (ou mais) discos. Quando um disco falha, a totalidade dos dados est disponvel em outro disco. RAID3 (Striping de dados por bit com paridade em disco dedicado): os dados so distribudos em bits pelos discos ( por exemplo, em um array com 5 discos, dois bits de cada byte so armazenados em cada um dos quatro primeiros discos e dois bits de paridade so armazenados no quinto disco). RAID4 (Striping de dados com paridade em um disco dedicado): como RAID0, tem informao de paridade armazenada em um disco separado. Quando um disco falha, os dados podem ser recuperados usando a informao da paridade. Apenas um disco pode falhar ou os dados sero perdidos. RAID5 (Striping de dados com paridade distribuda): como RAID4, mas com a informao de paridade distribuda entre os discos do RAID.

22.3 - Exerccios: 1-) Associe as caractersticas a RAID por software ou hardware: (1) RAID por software ( ) Baixo custo (2) RAID por hardware ( ) Alto desempenho ( ) Sem impacto no uso de CPU ( ) Exige uma controladora especializada 2-) Cite diferenas entre RAID e LVM ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ 3-) Quanto utilizao de RAID, assinale a alternativa INCORRETA: I. RAID (Random Acess lnstruction Data) um recurso que permite aumentar a velocidade de leitura e escrita de dados na memria RAM; II. A utilizao de RAID melhora consideravelmente a tolerncia s falhas; III. RAID-l tambm pode ser chamado de espelhamento; IV. RAID consiste em uma maneira de armazenar o mesmo dado em vrios locais diferentes. A quantidade de afirmativas corretas igual a: a) 0 b) 1 c) 2 d) 3 e) 4

Captulo 23
Kernel do Linux
O kernel o ncleo do sistema, a camada mais baixa de interao direta com o hardware e recebe instrues do shell que a interface desse kernel com o usurio. O kernel do sistema Linux foi desenvolvido por Linus Trovalds e rapidamente adicionado ao projeto GNU, que j possua todo o sistema operacional, exceto o seu ncleo, nascendo assim o sistema operacional GNU/Linux que hoje j ganhou diversas distribuies e usurios. Ao final do captulo, o aluno dever ser capaz de: Compreender o funcionamento do kernel Linux; Compilar um kernel.

23.1 Conceitos Iniciais O kernel faz a interface mais baixa de comunicao do hardware. Para isso, ele precisa conter todos os drives e comandos a serem utilizados nos mais diferentes tipos de dispositivos. O kernel sempre versionado com um conjunto de, no mnimo, 3 nmeros separados por ponto, por exemplo 2.4.31, 2.6.20 ou, como no caso do kernel que vem por padro na distribuio Debian Lenny o 2.6.26 (verifique isso atravs do comando uname -a). O nmero que fica no meio dessa identificao, entre o primeiro e o segundo ponto (no caso do kernel utilizado no Debian Lenny esse nmero 6), define se o kernel estvel, no caso de utilizar um nmero par ou instvel se utiliza um nmero mpar. O kernel estvel menos sujeito a travamentos e incompatibilidades. Aps o a inicializao do sistema, podemos ver os arquivos e diretrios que compem o kernel dentro do ponto de montagem /proc atravs do comando ls /proc. Dentro desse diretrio, podemos encontrar alguns arquivos e subdiretrios, vamos citar alguns deles abaixo: Diretrios representados por nmeros Os nmeros desses diretrios no so meramente aleatrios, antes so compostos pelos PID's (nmeros que identificam um processo) de alguns processos que esto sendo executados naquele momento. Por exemplo, o diretrio 1 possui todos os parmetros do processo com o PID 1 que o processo init. cpuinfo Contm dados sobre a CPU (unidade central de processamento) do computador. devices Armazena dados sobre os dispositivos utilizados no sistema. dma Armazena dados e parmetros de utilizao dos recursos de DMA (acesso direto memria). filesystems Esse arquivo contm os sistemas de arquivos utilizados no sistema.

interrupts Contm os nmeros das interrupes utilizadas pelos dispositivos. ioports Lista as portas de entrada e sada configuradas para os dispositivos. kcore Tem o mesmo tamanho da memria RAM do computador, e a mesma funo dela para o kernel. kmsg Exibe todas as mensagens do kernel. Para visualizar essas mensagens, basta utilizar o comando cat /proc/kmsg e para sair dessa visualizao, utilize as teclas Ctrl+c. loadavg Esse arquivo contm uma mdia sobre a carga de processamento aplicada ao sistema. meminfo Exibe a utilizao de memria no sistema. modules Mostra os mdulos carregados atualmente no kernel. uptime Exibe a quanto tempo o sistema est ligado. version Exibe a verso atual do kernel. Diretrio net Possui arquivos com dados sobre a rede. Diretrio sys Possui arquivos com dados sobre outros aspectos do sistema. Existem outros diretrios e arquivos dentro de /proc, porm esses listados acima so os mais importantes. O kernel composto por vrios mdulos, onde alguns so carregados por padro e outros so carregados apenas quando necessrio. Essa caracterstica muito importante, pois, se essa modulao no ocorresse, o kernel seria muito grande para ser carregado todo na memria do micro, o que poderia causar lentido, travamento ou at mesmo impossibilidade de carregar o sistema operacional.

Os mdulos do kernel esto guardados no diretrio /lib/modules/verso_do_kernel , onde verso_do_kernel corresponde numerao da verso desse kernel. No Debian Lenny, o kernel que vem por padro na instalao o 2.6.26 ento se voc verificar o contedo do diretrio /lib/modules (atravs do comando ls) ver que o diretrio que contm a verso do kernel o 2.6.26-1-686, portanto os mdulo dessa verso do kernel estaro guardados no diretrio /lib/modules/2.6.26-1-686. Atravs da execuo do comando lsmod podemos verificar os mdulos que esto sendo carregados pelo kernel. Para verificar, execute esse comando (lsmod) no terminal. 23.2 Compilando o kernel manualmente A compilao ou recompilao do kernel nos sistemas Linux traz algumas vantagens para o administrador de sistemas, como por exemplo: Melhor adaptao do kernel com o hardware do computador, j que os kernel's presentes e instalados automaticamente pelas distribuies possuem configuraes prontas a funcionar em qualquer tipo ou conjunto de dispositivos. Atualizar o sistema e obter novos recursos disponveis nas novas verses. Correo de erros contidos em kernel's anteriores. Esse processo no nada simples, por isso exige-se total ateno e cumprimento de todas as etapas descritas. Primeiramente se faz necessrio o download do cdigo fonte do kernel a ser instalado. Para isso basta entrar no site http://www.kernel.org e procurar pela verso desejada. Ou ento, basta utilizar o comando wget conforme o exemplo abaixo:

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.1.tar.bz2 Aps esse download, importante frisar que todas os comandos executados daqui pra frente devem ser atravs do superusurio root. Em seguida, descompacte o arquivo baixado atravs do comando tar, indicando a localizao da descompresso para o diretrio /usr/src: tar xjvf linux-2.6.34.1.tar.bz2 -C /usr/src No diretrio /usr/src ficam os cdigos fontes dos kernel's j utilizados no sistema e tambm do kernel atual. Vamos criar agora um link com o endereo /usr/src/linux apontando para o nosso diretrio recm descompactado. Podemos fazer isso com o seguinte comando: ln -sf /usr/src/linux-2.6.34.1 /usr/src/linux Esse atalho facilitar o nosso processo de compilao e de adequao do sistema para iniciar com o novo kernel. Entre no diretrio do kernel atravs do comando: cd /usr/src/linux Agora vamos conferir os requisitos mnimos que o kernel em questo exige para que possa ser compilado. Esses requisitos esto dentro do arquivo Change que fica localizado no diretrio Documentation. Utilize um editor de texto (vim por exemplo) para visualizar essa lista que deve ser semelhante a esta: o o o o o o Gnu C Gnu make binutils util-linux module-init-tools e2fsprogs 3.2 3.80 2.12 2.10o 0.9.10 1.41.4 # gcc --version # make --version # ld -v # fdformat --version # depmod -V # e2fsck -V

o o o o o o o o o o o o o o o o

jfsutils reiserfsprogs xfsprogs squashfs-tools btrfs-progs pcmciautils quota-tools PPP isdn4k-utils nfs-utils procps oprofile udev grub mcelog iptables

1.1.3 # fsck.jfs -V 3.6.3 # reiserfsck -V 2>&1|grep reiserfsprogs 2.6.0 # xfs_db -V 4.0 # mksquashfs -version 0.18 # btrfsck 004 # pccardctl -V 3.09 # quota -V 2.4.0 # pppd --version 3.1pre1 # isdnctrl 2>&1|grep version 1.0.5 # showmount --version 3.2.0 # ps --version 0.9 # oprofiled --version 081 # udevinfo -V 0.93 # grub --version 0.6 1.4.1 # iptables -V

No obrigatrio que voc tenha todos esses softwares instalados, por exemplo, se no for utilizado o protocolo PPP no necessrio que ele esteja ou precise ser instalado. Existe um script dentro do pacote do kernel, que verifica os softwares (que importam na instalao do kernel) instalados e suas verses atuais. Para verificar e atravs disso comparar com a lista Change, basta executar dentro do diretrio do cdigo fonte do kernel o seguinte comando: sh scripts/ver_linux Ento surgir uma lista com os softwares requeridos que esto instalados e suas verses atuais. Agora comea a compilao propriamente dita. Primeiro deve-se escolher o que ser instalado como mdulo e o que far parte do kernel e essa escolha poder influir diretamente no desempenho do kernel instalado. Por exemplo, o sistema de arquivos a ser utilizado deve ser incorporado ao kernel, pois ser utilizado a todo o momento, j outros sistemas de arquivos devem ser instalados como mdulos, pois s sero carregados numa eventual necessidade como a leitura de uma partio de um outro

sistema. Para escolher os mdulos que sero incorporados ao kernel ou no, basta executar o comando make menuconfig para configurao a partir de menus ou o comando make xconfig para a configurao no modo grfico, ou ainda o comando make oldconfig para configurar no modo texto atravs de perguntas. Marque com um * o que for instalado como parte do kernel e com m o que for instalado como mdulo. Agora vamos realmente compilar o kernel atravs do comando: make Aps o trmino do processo de compilao, vamos executar o prximo comando para instalar os mdulos do sistema: make modules_install Pronto, o kernel j est compilado e instalado, bastando agora somente criar os links para o seu funcionamento e realizar algumas configuraes para que ele seja iniciado corretamente. O prximo passo copiar o arquivo bzimage (o kernel compilado e compactado) para o diretrio /boot onde ele ser descompactado e lido na inicializao, como vimos no captulo sobre o init. Para realizar essa tarefa, vamos utilizar o comando cp. cp /usr/src/linux/arch/x86/boot/bzImage /boot/vmlinuz-2.6.34.1-i386-1 Copie tambm o arquivo System.map para o diretrio /boot cp /usr/src/linux/System.map /boot/System.map-2.6.34.1-i386-1 Agora vamos criar um link para apontar para o nosso System.map ln -sf /boot/System.map-2.6.34.1-i386-1 /boot/System.map

Vamos copiar agora o arquivo oculto .config tambm para o nosso diretrio /boot. cp /usr/src/linux/.config /boot/config-2.6.34.1-i386-1 Por ltimo vamos criar o arquivo init para essa nova compilao atravs do comando: mkinitrd -o /boot/initrd.img-2.6.34.1-i386-1 Pronto! Agora s se faz necessrio adicionar ao gerenciador de boot (lilo ou grub) as linhas para a inicializao do sistema com o novo kernel (vide captulo 25). 23.3 Atualizando o kernel via apt e dpkg Voc que achou muito complicado o processo anterior de compilao de um kernel, existe uma forma bem mais fcil de realizar essa tarefa em sistemas Debian. Primeiro vamos utilizar a ferramenta apt (vide captulo 9) para pesquisar e fazer o download do kernel a ser instalado. Para realizar a pesquisa vamos utilizar o atp-cache search da seguinte forma: apt-cache search linux-source Agora vamos utilizar o comando apt-get para baixar o cdigo fonte do kernel. sudo apt-get install linux-source O comando anterior criou uma pasta dentro do diretrio /usr/src com o cdigo fonte do novo kernel. Agora descompacte o arquivo baixado atravs do comando tar, indicando a localizao da descompresso para o diretrio /usr/src:

tar xjvf linux-2.6.34.1.tar.bz2 -C /usr/src Vamos criar agora um link com o endereo /usr/src/linux apontando para o nosso diretrio recm descompactado. Podemos fazer isso com o seguinte comando: ln -sf /usr/src/linux-2.6.34.1 /usr/src/linux Esse atalho facilitar o nosso processo de compilao e de adequao do sistema para iniciar com o novo kernel. Entre no diretrio do kernel atravs do comando: cd /usr/src/linux Vamos utilizar o comando make menuconfig para configurar os mdulos a serem instalados. Agora vamos compilar de uma forma um pouco diferente: make-kpkg --initrd kernel_image Esse comando gerou uma srie de pacotes .deb. Agora basta execut-los para que a nova compilao fique pronta. dpkg -i kernel-image*.deb Com isso o kernel ser compilado e instalado.

23.4 Exerccios 1-) Defina o kernel. ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ 2-) Qual a funo do comando uname -a? ____________________________________________________________ ____________________________________________________________ 3-) Qual a verso do kernel instalado em seu sistema? ____________________________________________________________ 4-) Qual a funo do comando make xconfig? ____________________________________________________________ ____________________________________________________________

Captulo 24
Gerenciador de Boot
O processo de inicializao do computador, tambm chamado de boot, foi descrito no captulo 13 (Inicializao do Sistema) e uma das partes que compem esse processo controlada pelo Gerenciador de Boot. Ele tem por tarefa dar ao usurio o direito de escolher qual dos sistemas (no caso de haver mais de um instalado) dever ser inicializado e determina as opes desta inicializao. Ao final do captulo, o aluno dever ser capaz de: Conhecer e entender o processo de boot do sistema; Configurar os gerenciadores de boot.

24.1 O funcionamento dos Gerenciadores de Boot O Gerenciador de boot um programa responsvel pela escolha e inicializao do sistema operacional, ele fica alocado numa regio especfica do disco rgido conhecida como MBR (Master Boot Recorder). Nele tambm esto inseridas as informaes sobre a unidade de disco que dever ser iniciada e as opes dessa inicializao. Nos sistemas Linux existem dois gerenciadores de boot bem difundidos e utilizados. So eles o Lilo e o Grub. Abordaremos esses dois gerenciadores durante esse captulo. 24.2 Lilo De todos os gerenciadores de boot existentes hoje, o lilo o mais antigo e tambm o mais conhecido e difundido entre as distribuies Linux. Seu nome significa Linux Loader, ou seja, carregador de Linux. O Lilo pode ser configurado e customizado atravs da edio do arquivo lilo.conf que fica no diretrio /etc. Segue abaixo um modelo do arquivo lilo.conf: boot=/dev/hda vga=788 prompt default=Debian timeout=100 append = "splash=silent apm=power-off nomce quiet devfs=mount" image=/boot/vmlinuz-2.6.26-1-686 label=Debian root=/dev/hda1 read-only initrd=/boot/initrd.img-2.6.26-1-686

Para compreender melhor esse arquivo de configurao, vamos entender o que esses comandos representam. Os primeiros 5 itens correspondem aos parmetros globais de configurao do Lilo, e as linhas seguintes correspondem aos sistemas instalados que estaro como opo de boot de cada sistema. boot=/dev/hda Define o dispositivo no qual se encontra(m) o(s) sistema(s) a ser(em) iniciado(s); vga=788 Define a resoluo de tela na qual o lilo ir mostrar as opes. Nesse caso (788), a resoluo se encontra em 800x600; prompt default=Debian Seleciona o sistema que ser iniciado por padro, ou seja, se nenhuma opo for selecionada, o sistema com o label Debian iniciar; timeout=100 O tempo que o lilo aguardar que seja escolhido o sistema operacional. Esse tempo dado em dcimos de segundo, o padro 100 (10 segundos). Aps o trmino desse tempo, ser iniciado o sistema default. append = Essa linha possui parmetros que so enviados ao kernel. A partir daqui, os parmetros sero correspondentes aos sistemas operacionais instalados no computador. image=/boot/vmlinuz-2.6.26-1-686 Corresponde localizao da imagem do kernel do sistema a ser inicializado. label=Debian O nome que far referncia ao sistema operacional e que poder ser selecionado no momento do boot. root=/dev/hda1 A localizao da partio onde se encontra o sistema. read-only Um parmetro passado ao kernel durante a

inicializao, mostrando que durante esse processo ele deve somente ler as informaes e no escrever nada no kernel. initrd=/boot/initrd.img-2.6.26-1-686 A localizao da imagem do processo init, que deve ser descompactada e executada. Aps realizar as modificaes no lilo.conf necessrio utilizar o comando lilo para que ele possa atualizar as informaes na MBR. Para remover o lilo do seu sistema, basta utilizar o comando lilo -u. 24.3 Grub O Grub vem como gerenciador de boot padro em vrias distribuies Linux, inclusive no Debian. Ele mais fcil de instalar e manipular do que o Lilo. O nome Grub vem do conjunto de palavras GRand Unifield Bootloader (-----------------), foi desenvolvido por Erich Stefan Boleyn e adicionado ao projeto GNU. Uma das suas grandes vantagens o suporte a vrios sistemas de arquivos. O arquivo padro para a configurao do Grub o /boot/grub/menu.lst, ele pode se editado por qualquer editor de texto. Em algumas distribuies o nome do arquivo pode ser diferente, como por exemplo grub.conf ou menu.conf. Existe uma outra peculiaridade no arquivo de configurao do grub, a forma que ele nomeia os discos e suas parties. Veja na tabela abaixo como acontece essa nomeclatura:
Padro Linux hda1 hda2 hda3 hdb1 Padro Grub hd0,0 hd0,1 hd0,2 hd1,0

hdb2 hdc1 hdc2

hd1,1 hd2,0 hd3,1

Segue abaixo a sintaxe bsica de um arquivo menu.lst: default 0 timeout 5 color cyan/blue white/blue title root kernel initrd title root kernel initrd Debian GNU/Linux, kernel 2.6.26-1-686 (hd0,0) /boot/vmlinuz-2.6.26-1-686 root=/dev/hda1 ro quiet /boot/initrd.img-2.6.26-1-686 Debian GNU/Linux, kernel 2.6.26-1-686 (single-user mode) (hd0,0) /boot/vmlinuz-2.6.26-1-686 root=/dev/hda1 ro single /boot/initrd.img-2.6.26-1-686

Esse arquivo o menu.lst padro da distribuio Debian Lenny. Vamos analisar as partes que compem esse arquivo: default O nmero indicado nesse parmetro determina qual opo ser iniciada por padro, lembrando que a contagem inicia pelo nmero 0. timeout Representa o tempo em segundos que o grub esperar que o usurio escolha o sistema a ser inicializado. color Representa a cor que ser mostrada na tela do grub. title Mostra o nome que ser exibido como opo a ser selecionada pelo usurio na tela de inicializao do grub. root mostra a localizao do disco e partio na qual o sistema

est instalado. kernel Tem como opo a localizao do kernel a ser iniciado e possui tambm os parmetros a serem passados a esse kernel. initrd Possui o caminho da imagem do processo init. Nesse arquivo, existem duas opes de inicializao para o Debian. A primeira a inicializao normal e a segunda a inicializao no modo monousurio, geralmente utilizada para resolver algum problema de inicializao ou do sistema. Aps realizar as modificaes necessrias no arquivo menu.lst no necessria a execuo de nenhum comando, como no caso do Lilo. Existe uma outra funo muito interessante e importante no grub a opo de colocar senha no boot. Existem duas formas de inserir essa senha: Senha no criptografada: Basta adicionar abaixo da linha color, a palavra password com a sua senha ao lado. Exemplo: password senhadogrub. Agora adicione a palavra lock abaixo do campo title do sistema escolhido para ficar com senha. Senha criptografada: Primeiro necessrio criptografar uma senha antes de coloc-la no arquivo do grub. Para isso, digite o comando grub-md5-crypt no terminal, digite e confirme a senha, ento o comando retornar a senha criptografada. Copie a senha e abra o arquivo menu.lst, digite abaixo da linha color a sentena password md5 e ao lado cole a senha criptografada. Ex. password md5 $9$e107d/9d372bb682. Agora adicione a palavra lock abaixo do campo title do sistema escolhido para ficar com senha criptografada.

24.4 Exerccios 1-) Qual a funo de um Gerenciador de Boot? ________________________________________________ ________________________________________________ ________________________________________________ 2-) Faa um comparativo entre o Lilo e o Grub. ________________________________________________ ________________________________________________ ________________________________________________ ________________________________________________

Вам также может понравиться