You are on page 1of 190

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Erivelton Rodrigues Nunes INDICE PREFÁCIO............................................................................................................................9 INTRODUÇÃO AO LINUX...............................................................................................10 Origem do Linux......................................................................................................................................10 Licenciamento e Versões do kernel do Linux................................................................................11 Distribuições Linux..................................................................................................................................12 Linux Standard Base (LSB).....................................................................................................................13 Visão geral do Sistema Operacional Linux..........................................................................................13 Vantagens do Linux.................................................................................................................................13 Conceitos Unix.........................................................................................................................................14 Tudo é Arquivo....................................................................................................................................14 Case Sensitive.......................................................................................................................................14 Comandos.............................................................................................................................................14 Primeiros Passos.......................................................................................................................................14 Prompt de Login..................................................................................................................................14 bash........................................................................................................................................................15 logout.....................................................................................................................................................16 shutdown...............................................................................................................................................17 halt..........................................................................................................................................................17 reboot....................................................................................................................................................17 INSTALAÇÃO DO DEBIAN GNU/LINUX....................................................................18 Um pouco sobre o Debian.....................................................................................................................18 De onde surgiu o nome “Debian”?..................................................................................................18 Pronúncia..............................................................................................................................................18 Quando surgiu?....................................................................................................................................18 Qual o significado dos codinomes das distribuições Debian?.....................................................18 Stable, Testing e Unstable..................................................................................................................19 Main, Contrib e Non-Free.................................................................................................................19 Iniciando a Instalação..............................................................................................................................20 Inicializando o instalador...................................................................................................................20 ESTRUTURA DE DIRETÓRIOS......................................................................................28 Hierarquia..................................................................................................................................................28 Caminho Absoluto..............................................................................................................................29 Caminho Relativo................................................................................................................................29 Localização na Estrutura de Diretórios................................................................................................29 pwd.........................................................................................................................................................29 ls..............................................................................................................................................................29 cd............................................................................................................................................................31 $PATH..................................................................................................................................................32 Histórico de Comandos......................................................................................................................33 Teclas de Atalho..................................................................................................................................34 Tecla TAB.............................................................................................................................................34 Filesystem Hierarchy Standard..............................................................................................................35 /bin........................................................................................................................................................36 /boot......................................................................................................................................................36 /dev........................................................................................................................................................36 ___________________________________________________________________________ Pág. 2

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Erivelton Rodrigues Nunes /etc.........................................................................................................................................................37 /home....................................................................................................................................................37 /root......................................................................................................................................................38 /lib..........................................................................................................................................................38 /mnt.......................................................................................................................................................38 /opt........................................................................................................................................................38 /sbin.......................................................................................................................................................38 /tmp.......................................................................................................................................................38 /usr.........................................................................................................................................................39 /var........................................................................................................................................................39 /proc......................................................................................................................................................39 GERENCIAMENTO DE PACOTES................................................................................42 O gerenciador de pacotes do Debian...................................................................................................42 dpkg............................................................................................................................................................43 Listando os pacotes instalados no sistema......................................................................................43 Obtendo detalhes sobre um pacote Debian...................................................................................44 Exibindo status dos pacotes do sistema..........................................................................................45 Instalando e atualizando pacotes binários do Debian...................................................................46 Padrão de nomes dos arquivos binários do Debian......................................................................47 Removendo pacotes binários Debian..............................................................................................47 O Advanced Package Tool (APT)........................................................................................................48 Repositórios de pacotes do Debian..................................................................................................48 Adicionando um cdrom no sources.list...........................................................................................49 Adicionando repositórios web no sources.list................................................................................50 Utilizando o apt-get para gerenciar pacotes....................................................................................50 Programas auxiliares................................................................................................................................52 aptitude..................................................................................................................................................52 apt-show-versions................................................................................................................................53 apt-cache...............................................................................................................................................53 Exercício...............................................................................................................................................54 O gerenciador de pacotes RedHat (RPM)...........................................................................................55 Consulta de pacotes RPM..................................................................................................................55 Instalação, desinstalação e atualização de pacotes RPM...............................................................57 Instalação/Atualização.......................................................................................................................58 Desinstalação........................................................................................................................................58 COMPILAÇÃO DE PROGRAMAS....................................................................................59 As Ferramentas do Projeto GNU.........................................................................................................59 Bibliotecas.................................................................................................................................................60 Gnu C Library......................................................................................................................................60 Gnu Libtool..........................................................................................................................................60 Ferramentas De Automação..................................................................................................................60 Autoconf...............................................................................................................................................60 M4..........................................................................................................................................................60 Automake..............................................................................................................................................60 Make.......................................................................................................................................................60 Compiladores............................................................................................................................................61 Gnu C Compiler..................................................................................................................................61 Diversos.....................................................................................................................................................61 Binutils...................................................................................................................................................61 ___________________________________________________________________________ Pág. 3

.........................................................................................................................................................................69 mkdir.......................................................................................................................................................................................67 make clean....................................................................................................................................................................................................... 4 ............................64 Readme / Install.................64 Copyright..................................................................................................61 Obtenção do Código-Fonte.................................71 touch.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................63 Limpando o Diretório do Pacote Compilado.............70 rmdir................................................................................................64 Copying.................................................................................................................83 ___________________________________________________________________________ Pág................................................................................................................81 Adicionando usuários com useradd..................................................71 cp......................................................................................................................................................................................................................67 MANIPULAÇÃO DE ARQUIVOS E DIRETÓRIOS.........................................................................................................................................63 A Configuração......67 Aplicativos & Utilitários........81 Gerenciamento de usuários...............................................................................................................................................................................................................................................................................................................................................................................................80 /etc/group..........................................................................................................................................................74 cat.....................................................................................................65 ............................................................................................................................67 make uninstall...................................................................................................................................62 Local de Armazenamento................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................/configure............................66 make install...........................................................................................................................................................................................................79 /etc/passwd..................................................................................................................................77 GERENCIAMENTO DE USUARIOS E GRUPOS................. Erivelton Rodrigues Nunes Patch............................................................................................................................................65 make.......................................................................................................81 Definindo senhas com passwd................62 Descompactação Do Código-Fonte..................................................................................72 mv......................................................................................................................................................................................76 Links Simbólicos.................................................................................................................75 tac...................67 Manutenção do Código-Fonte....................................................................................................................................................................................................................................................................................................64 O Diretório docs........77 Hardlinks....76 INODES................. Compilação e Instalação do Pacote..............................AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.........................................65 Credits.............................................................63 Desinstalando um Pacote Compilado.................................................................................................................66 make deps / make depend..................................................................................................................65 Changelog...........................................................................76 ln............................69 tree.................................................................................................................................................................................................................................................................................80 /etc/gshadow................................................................................. Módulos e Kernel.....67 Observações Importantes para o Processo de Compilação...........................................64 Release.........70 rm.........................................................................................................................................................................64 Conteúdo da Documentação..........................................79 /etc/shadow......................................................................................................................................................................................................67 Drivers................................................79 Identificadores de Usuários e Grupos (UID e GID)...................65 Funcionalidades Detalhadas............................................................................................................

.................................................................................................................................................................................................................................................................................................................................104 SUID ( Set User ID )............................................................................................................................110 Saída de dados padrão (/dev/stdout).............111 Operadores de Redirecionamento...............................................................................................................................88 Convertendo/Revertendo o sistema de senhas shadow..................................................117 Paginadores.............................................................................................98 Tipos de arquivo...............................................................................................................................................................................96 Conceitos....................................................................................100 Definindo Permissões com chmod............................. 5 ..................................97 Bits de proteção..............................................111 Redirecionando a saída de erros padrão (stderr).........AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof....................................................................................................84 Aumentando a segurança com o comando chage..............118 Executando múltiplos comandos em ordem determinada ......................................................................88 Verificando integridade dos arquivos de senhas com pwck.....................................99 Entendendo as permissões na prática.........101 Modo Simbólico de Permissões............104 SGID ( Set Group ID ).............................................................................................................................................................................................................................................................................................................................................................106 Máscara de usuário (umask)......................105 Sticky ( Sticky bit ).........................................................................................................................................................92 Definindo administradores de grupos com gpasswd....................................117 Caracteres especiais do bash (Metacaracteres).........................................................................108 O SHELL BASH (BOURNE AGAIN SHELL).......................................................................................................................................................................................................................................................................................................................92 Modificando informações sobre grupos..................................................................122 ___________________________________________________________________________ Pág......................96 Bits de atributo......................114 Redirecionamento com pipes: “|”.............90 Obtendo Informações com o comando id...............................................................110 Redirecionamento.91 Removendo grupos com groupdel.............................................................................................................................................................103 Permissões de Acesso Especiais:..............................................................................................89 Gerenciamento de grupos.............................................................................................................................91 Adicionando usuários aos grupos.......................................................101 Modo octal de permissões.....................................................110 Entrada de dados padrão (/dev/stdin).............................................93 Trocando o grupo principal temporariamente com newgrp.....................................................................................87 Modificando o shell do usuário com chsh...........................................................................................................................................................................................................................................................................................................85 Gerenciando informações de usuários com chfn e finger.................................................................................................89 Modificando contas de usuários com usermod......................................................................................................................................................................................................................................................................................................................................................................................................90 Adicionando grupos com groupadd..................122 Utilização.....................................................................................................................................94 PERMISSÕES DE ARQUIVOS E DIRETÓRIOS.....................................................121 Expressões Regulares...............................................................................................................................97 Notações.................................................................................................119 Operadores de controle lógico: && e || (AND e OR)..............................115 Diferenças entre o “|” e o “>”...................................................................................................................................111 Saída de erros padrão (/dev/stderr)............116 Tabela de Redirecionamentos..........................................................................................................................93 Verificando Integridade dos arquivos de grupos com grpck.....................92 Removendo usuários dos grupos................................................................................................................................................ Erivelton Rodrigues Nunes Troca de Senhas.......83 Removendo usuários com userdel................

......................145 PARTICIONAMENTO E SISTEMAS DE ARQUIVOS....................................................................147 A tabela de partições.............................153 Criando um sistema de arquivos......................................................................................................................................................................................................................................................................................................................................................................................................................................................................150 Sistemas de arquivos...............................................................................................138 EDITORES DE TEXTO....................................................................................................................................................................................................................................................................................................................139 VI............................................................................................................................................128 Escape de Comandos no bash.........................................................................................................................................................................................131 Info Pages..........153 O sistema de arquivos reiserfs: Nascido para ser rápido.........148 Endereçamento e geometria dos discos rígidos........................................................................................................................142 ARQUITETURA DE HARDWARE...154 Verificando a integridade de sistemas de arquivos.................................................................................................................133 Sistema de buscas na documentação do sistema..142 Dicas preciosas do Vim....................................................................bashrc ou /etc/bashrc.............................................................................156 Gerenciando quotas de sistemas de arquivos................................149 Modo LBA de endereçamento.....................................................................................................................................127 Arquivo ~/......................148 As partições lógicas.................................................................................................................................................................................................................................148 A partição extendida.......................................................................................AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.........................................................................................................................................................................................................................................131 Man pages...............138 Comando locate.....................................................................................................................................................................................................139 Modo de Edição......147 Partições primárias.......154 Definindo um ponto de montagem............125 Arquivo ~/............141 Modo de linha..............................................................................................................................149 Particionando o disco rígido com fdisk...................................................................................149 Modo CHS de geometria............................................................................133 Criando a base de dados.................................................................................................................................................................................................................................................................................128 Arquivo ~/......................................................................................................................................128 Aliases de shell.............................................................................................126 Arquivo /etc/bash.........................................................................bash_history...........................................................156 ___________________________________________________________________________ Pág...............125 Arquivo /etc/profile...................................................................................................................135 Comando find............................................................139 Modo de comando..........................................................................................................................................................................................................................................................................123 Configuração do shell bash..................................................................................................................134 Efetuando pesquisas na documentação..............153 O sistema de arquivos ext3: A revolução.........................................134 LOCALIZANDO ARQUIVOS NO SISTEMA.................. Erivelton Rodrigues Nunes Entendendo a RE "^d"........................................152 O sistema de arquivos ext2: O início de tudo............................................................................................................................................................................ 6 ...............................................................................129 DOCUMENTAÇÃO.............................147 Particionamento...............144 setserial....................................................................................................bash_profile.......................................................bash_logout.........................................................................................................................................................bashrc......................................131 Páginas de manual....153 Funcionamento do journaling.....................................................................................................................................................................................122 Exemplos .......................................................................................................................................................135 Comando whereis..............................126 Arquivo ~/....................................................................................................

.....................179 BIBLIOTECAS COMPARTILHADAS...........................................................169 A ferramenta bzip2.........................................................................182 Significado das colunas na saída do comando ps...............................................................180 Listando Bibliotecas disponíveis.................................................................................................................178 O diretório /etc/cron..............................................................................................................................................................................................................................181 GERENCIAMENTO DE PROCESSOS...........................................................161 Configurando o lilo.................................................................................................................................................177 O arquivo /etc/crontab.......................................................161 Restaurando o setor de boot....................................176 AGENDAMENTO DE TAREFAS........165 O que são runlevels (Níveis de execução)?.180 Descobrindo quais bibliotecas um binário utiliza......................................................................................................................................................................................................................................180 Localização das bibliotecas compartilhadas....................................................................................................................................................177 Diretórios de agendamento do cron..................... Erivelton Rodrigues Nunes Habilitando as quotas...............161 Lilo.................................................158 Adicionando uma nova swap............................................................................................................................AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.......................................................................................................................................................................................166 Estrutura de inicialização de serviços..........................................171 A ferramenta tar...............................................................................................................................................................174 Funcionamento........................d...............................180 Trabalhando com bibliotecas compartilhadas.......................................................................................................................................................180 Adicionando novas bibliotecas ao sistema.....................................................................................178 Agendamentos definidos pelos usuários..................................................................174 Inicializando o XFree86.........................185 ___________________________________________________________________________ Pág..................................................................................................................................................................................................................................................................163 Instalando o GRUB no MBR...................................................167 Os diretórios de inicialização de serviços............................................................................................................................................................................................................. 7 .................160 Gerenciadores de boot....................................................................................................................174 Configurando o XFree86...........................................................................................................................................................................................................170 Arquivadores................................................................................................182 O comando ps............................169 Compactadores.............176 Acessando o XFree86 através da rede..............................................................................................................................................................................................................177 Cron..........................................................................................................................................................182 Lidando com processos.....................................................................................157 Configurando quotas p/ usuários e grupos.......................................................................................d/rc.........................184 Níveis de processos...........................................................................167 COMPACTADORES E ARQUIVADORES........................................................................164 O processo de init......................................................................................................................................................................................................................................................172 SERVIDOR GRÁFICO X-WINDOW.............................................167 O script /etc/init...................................................................................................................................162 GRUB......................................................................................................................................................................................................................................................................................158 PROCESSO DE INICIALIZAÇÃO......................................................184 O comando top.................................................................165 O arquivo /etc/inittab..........................................................................................................................................................................................................................................................178 Controle de acesso ao cron.....................................................................................................................................................................................................169 A ferramenta gzip........................................................................171 As famosas tarballs.157 Verificando as quotas...............182 Listando processos.............................................................................

............................186 O comando kill...................... 8 ....................................................................................................................................................................AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.......................................187 O comando killall5............................ Erivelton Rodrigues Nunes Sinalizando processos................................................................................................................................188 REFERÊNCIAS.............................187 O comando killall.........................................................................................................................187 Gerenciando prioridades dos processos....190 ___________________________________________________________________________ Pág.......................................................................................................................................................................................................................................188 Modificando prioridades com o comando renice....................................................................188 Definindo prioridades com o comando nice..

4 vers. John W. bem como fruto de minha experiência profissional na área de administração de redes de computadores e sistemas operacionais. aos meus queridos alunos. finalmente. pois. quero agradecer primeiramente a Deus a quem devo a honra. se não exigir a aplicação dos conhecimentos transmitidos estarei comentendo o erro da negligência2. estarei cometendo o erro da omissão1. descritas no último capítulo. espero que você aproveite estas informações para transformá-las em conhecimento útil. livros. Reunir todas estas informações e organizá-las de forma didática levaram muito tempo e muito trabalho. 17) “Maldito aquele que fizer a obra do Senhor relaxadamente! (. por outro lado. Erivelton Rodrigues Nunes PREFÁCIO Esta apostila é uma compilação de diversos trabalhos. aplicados neste material de forma prática.)” (Bíblia – Jeremias cap. 48 vers. pesquisas. nas referências.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Prof. faça e dê o seu melhor sempre! Enfim. (Bíblia – Tiago cap. glória e o louvor por tudo o que sei. sou e tenho. Portanto. Por isso. Agradeço aos professores Antero Todesco e Valdinei Castelan que sempre me apoiaram e confiaram na minha capacidade e. 9 . Erivelton Rodrigues Nunes 1 2 “Aquele. Os assuntos abordados são de extrema importância e visam mostar os principais conceitos da administração de sistemas baseados no Unix (Unix Like). Na medida em que aprendo novas técnicas. ou seja... Também agradeço a minha esposa Geny pelo apoio e compreensão. artigos. que dia-a-dia contribuem para o aperfeiçoamento de minhas aulas e da didática aplicada. que sabe fazer o bem e o não faz comete pecado”. Se assim o fizer. 10) ___________________________________________________________________________ Pág. Gardner disse: “Excelência é fazer coisas ordinárias (comuns) de maneira extraordinária”. não consigo guardá-las apenas comigo.

no final da década de 80.os. quando homens serão homens e escreverão seus próprios drivers de dispositivos? Você está sem um bom projeto e está morrendo para colocar as mãos em um S. Richard Stallman fundou uma organização chamada Free Software Fundation (Fundação de Software Livre). vários esforços alternativos para se atingir o mesmo objetivo proposto pelo projeto GNU estavam em andamento. Era um trabalho gigantesco para apenas uma pessoa. Linus então se dispôs a criar um kernel clone do Unix que fosse capaz de lidar com memória virtual. mesmo não sendo uma alternativa barata p/ a época. um aluno da Universidade de Helsinque.minix: “Você suspira por melhores dias do Minix-1. Não há nada de novo neste mundo” Eclesiastes 1. e que não conseguiria dar continuidade sozinho. liderado pelo Dr. mas que fosse desenvolvido a partir do zero. cujo projeto denominado “projeto GNU” (GNU Is not Unix) tinha por finalidade criar um clone melhorado do sistema operacional Unix. na Finlândia.O. Porém. O que foi antes será feito novamente. era necessário desenvolver o kernel (coração do sistema operacional) e os aplicativos (comandos) que compôe um sistema operacional completo. Na mesma época. Ele limitou-se a criar um “Minix melhor que o Minix”. viabilizando uma alternativa barata e funcional de se rodar um sistema operacional amplamente compatível com Unix sem ter que pagar os altos custos de licenciamento. Linus iniciou seu projeto particular inspirado no Minix. o que possibilitava que os universitários pudessem dar continuidade aos seus estudos no PC de casa.1. No ano de 1983. Percebendo a grandiosidade do projeto. Na primavera de 1991. sem utilizar o código-fonte do Unix. Linus conseguiu criar um kernel capaz de executar utilitários de programação e comandos padrão do Unix já previamente clonados pelo projeto GNU. Um desses projetos foi o projeto Minix. Andrew Tanenbaum que desenvolveu o minix como instrumento de ensino. Após algum tempo de trabalho. 10 . no qual você possa modificar de acordo com suas necessidades? Você está ___________________________________________________________________________ Pág. Para alcançar tal objetivo. somente os aplicativos essenciais estavam prontos.9 Linux é um sistema operacional baseado no Unix. Erivelton Rodrigues Nunes INTRODUÇÃO AO LINUX Origem do Linux “O que aconteceu antes vai acontecer outra vez. chamado Linus Benedict Torvalds percebeu que o 80386 era o único processador na época capaz de executar um clone de Unix. que na verdade era um sistema operacional Unix portado para arquitetura x86 (até 80386 na época). pois os programadores não haviam conseguido criar o kernel do sistema.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. ele enviou a seguinte mensagem para a lista de discussão comp. multitarefa e multiusuário. o projeto havia fracassado. Nessa mesma época.

o número 2. A partir daí. As pessoas sua distribuição. trata-se de uma versão considerada estável pelo time de desenvolvimento. no exemplo da versão 2. finalmente. obtive êxito rodando bash. sempre que há alguma mudança do código não muito significativa. e patch level retorna a 0 (zero). gcc. Se ocorrerem mudanças significativas.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. e eu estou disposto a colocar os fontes para ampla distribuição.. próximo do estágio em que poderá ser utilizado (embora não possa ser o que você esteja esperando). Licenciamento e Versões do kernel do Linux O Linux não é um software de domínio público. ___________________________________________________________________________ Pág. Curiosidade: O nome Linux foi escolhido por seu criador através de uma mistura de seu próprio nome com Unix (Linus + Unix = Linux).8. estou trabalhando em um sistema operacional similar ao Minix para computadores AT-386. compress. o número da versão principal é elevado. Quando este número é ímpar.6. gnu-sed. O versionamento é dividido em 2 partes. gnu-make. Outra característica importante sobre versionamento do Kernel é que sempre que a versão principal termina com um número par.6 é a versão principal do kernel. Erivelton Rodrigues Nunes achando frustrante quando tudo trabalha em Minix? Chega de atravessar noites para obter programas que trabalhem correto? Então essa mensagem pode ser exatamente para você. já a versão 2. o kernel ainda está em estágio instável. Como eu mencionei há um mês. Essa licença diz que o código-fonte deve permanecer livremente disponível. é elevado o número do patch level. diversos programadores ao redor do mundo têm colaborado com esse sistema operacional de código aberto até chegar no que é hoje. nada pode impedir a distribuição do software. Ele está na versão 0. etc nele”.8 é o patch level do kernel.02). mas licenciado sob uma licença chamada GPL (General Public License – Licença Pública Geral). Ele está.6. A primeira versão oficial do Linux foi lançada em 5 de outubro de 1991 (versão 0. ou seja.02. 11 . em desenvolvimento. contudo.

um disquete. que pode ser um cdrom já gravado. Suse. Erivelton Rodrigues Nunes Distribuições Linux No início da década de 90. Gentoo e Fedora. RedHat. Mandrake. o Essas A dificuldades contribuíram para dar a fama de “Sistema Operacional de Hackers” ao Linux. um arquivo compactado. “Distribuição” simplesmente faz todo esse “trabalho sujo” e empacota tudo em um de distribuição. dentre elas se destacam algumas como: Debian. ___________________________________________________________________________ Pág. Slackware. começaram a surgir as primeiras distribuições Linux. etc. e diversos downloads e compilações eram necessários para que fosse possível utilizar o sistema instalar operacional. A Idéia de distribuições se tornou necessária devido as dificuldades na época em se obter todas as partes que compunham o sistema operacional completo (Kernel e aplicativos).AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. pois as partes em questão ficavam espelhadas pelo mundo. Atualmente existem mais de 300 distribuições diferentes. 12 . pois somente quem detinha um bom conhecimento meio comum conseguia sistema. Conectiva.

Portabilidade e Escalabilidade. com pouca mudança nos fontes aplicativos simultaneamente. Multiusuário. respectivamente. de modo que os softwares desenvolvidos para “Linux em Geral” possam rodar em qualquer distribuição.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Visão geral do Sistema Operacional Linux Linux é um sistema operacional multi-camadas. Multitarefa. e Multitarefa denota. Nos dias de hoje. geralmente do kernel. como podemos ver no gráfico seguinte: Nesse arranjo. a capacidade do sistema de Lidar com Portabilidade e múltiplos usuários rodando múltiplos ___________________________________________________________________________ Pág. Para que tal fato seja possível. é necessário que a distribuição e o aplicativo sejam compatíveis com o LSB. a esmagadora maioria dos aplicativos disponíveis para Linux é compatível com LSB. os softwares inalterados. Multiplataforma é a capacidade do mesmo mantendo Multiusuário sistema rodar em diferentes plataformas de hardware. o kernel desempenha a função principal de intermediar acessos ao hardware e interfacear com o usuário através do interpretador de comandos. Erivelton Rodrigues Nunes Linux Standard Base (LSB) O Linux Standard Base (LSB) viabiliza a compatibilizar e padronizar as distribuições Linux. Vantagens do Linux O Linux é um sistema operacional que se destaca por diversos fatores como Multiplataforma. 13 .

portanto ROOT. são três formas diferentes de se escrever. Portanto. todos os comandos devem ser digitados exatamente da forma que são. para que sejam compreendidos pelo Interpretador de Comandos (shell). Prompt de Login Como já visto anteriormente. permitindo que estes se organizem de forma hierárquica. 14 . e o Linux entende que são três comandos diferentes. Portanto. distinguindo maiúsculas de minúsculas. Um diretório é um arquivo que contém informações a respeito de um conjunto de arquivos. Root e root. Erivelton Rodrigues Nunes Escalabilidade é a capacidade do sistema de ser facilmente portável e compatível com diversas plataformas de Hardware existentes. Para que o sistema nos libera acesso a um Shell ___________________________________________________________________________ Pág. arquivos binários ou qualquer outro tipo de arquivo. Essas informações consistem basicamente em nome e localização do mesmo. Conceitos Unix Existem algumas características do sistema operacional Linux que foram herdadas do Unix. Comandos A maioria dos comandos são geralmente seguidos de um parâmetro e pode se utilizado de três maneiras diferentes: # comando -parâmetro # comando --parâmetro # comando parâmetro Primeiros Passos Precisamos nos familiarizar com o ambiente de linhas de comando. Um dos arquivos “contidos” em um diretório pode ser também um diretório. AS principais características são listadas adiante: Tudo é Arquivo Um arquivo no UNIX é uma seqüência de 0 ou mais bytes contendo qualquer tipo de informação. Case Sensitive O Linux difere letras maiúsculas e minúsculas. Não existe nenhuma distinção entre um arquivo texto em ASCII.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. iremos conhecer cada uma das partes envolvidas. o bash é um dos shells disponíveis no Linux. É no ambiente do shell que passaremos a maior parte do curso.

a linha do prompt costuma se parecer com o seguinte: host:/var/tmp# Nesse caso. é mostrado o nome da máquinas. Por ser de uma hierarquia Unix. bash O bash é apenas um dentre os diversos interpretadores de comandos (shell's) disponíveis no Linux. Erivelton Rodrigues Nunes texto. ao digitar a senha. tais como csh. o símbolo seria $. antes é preciso autenticar-se no prompt de login. tcsh. [root@host root]# Este é o prompt do Shell. sh. 15 . mas agora iremos apenas nos familiarizar com esse componente tão importante do sistema. onde o usuário esta logado host nome da máquina root é o diretório corrente Portanto essa linha significa: usuário root logado na máquina host no diretório root. o caminho completo do diretório atual mais o símbolo de quem está logado. Futuramente faremos um estudo mais profundo sobre o shell bash. onde host é o nome da máquina. por exemplo. O # é o símbolo de que o root está logado. Este formato de prompt é geralmente utilizado nas distribuições RedHat e Conectiva. nenhum caractere aparece e o cursor não se move mas as informações do teclado estão sendo enviadas. caso fosse um usuário comum. zsh.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. que aparece depois que você esta logado. etc. ___________________________________________________________________________ Pág. seguido de “:” (dois-pontos). ou seja. No caso do Debian. A linha acima significa o seguinte: root é o nome do usuário @ significa at (em). como abaixo: host login: root password: Essa é a tela de login texto.

para acessar o terminal gráfico. logout Para sair do shell atual. pressione [ALT]+[F1](F1 até o F6). Caminho completo do diretório atual. Para qualquer usuário com UID=0 (root por exemplo) aparecerá um sinal de #. se estiver em uso. Nesse caso. tornando o prompt padrão do debian parecido com o prompt padrão do RedHat. Você pode ter mais de um terminal ao mesmo tempo. pressione [CONTROL]+[ALT]+[F1] (Até o [F6] nesse caso). Caracteres de escape para customização do shell usando $PS1: \e Quebra de linha.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. logo depois o conteúdo dessa variável foi modificada com base nos valores especiais descritos na tabela abaixo. ou um sinal de $ para os outros usuários do sistema. Nome do diretório de trabalho atual.br).uniararas. Hora atual no formato de 24horas. O próximo terminal logo após o último terminal texto (Geralmente o F6) é o terminal gráfico. digite o seguinte comando: ___________________________________________________________________________ Pág. Para sair do terminal gráfico e voltar a um terminal texto. pressione [ALT]+[F7]. Usuário logado atualmente. Exemplo: host:/var/tmp# echo $PS1 \h:\w$ host:/var/tmp# PS1="[\u@\h \W]\$ " [root@host tmp]# echo $PS1 [\u@\h \W]\$ [root@host tmp]# No exemplo acima. sendo possível manter terminais texto e gráficos. Para alternar entre os terminais texto.com. 16 . O número de trabalhos atualmente sob controle do shell. Nome longo do Host (Exemplo: host. Símbolo de Usuário. \h \H \j \t \u \W \w \$ Nome curto do Host (Exemplo: host). Erivelton Rodrigues Nunes O prompt de login pode facilmente ser configurado através da variável de ambiente $PS1. primeiro foi mostrado o conteúdo da variável $PS1 (comando “echo $PS1”).

Erivelton Rodrigues Nunes $ logout shutdown Utilizamos o comando shutdown para interromper de alguma forma o funcionamento do sistema (Desligar ou reiniciar. Cancela um shutdown agendado. # shutdown -h now “O sistema será reinicializado agora” Reinicia o sistema Imediatamente e exibe a mensagem “O sistema será reinicializado agora” para os usuários conectados atualmente. # shutdown -r -t secs 20 10 “Reboot em 10 minutos” halt O comando halt tem o mesmo efeito que o comando “shutdown -h now”.allow para definir quem tem permissão para desligar/reiniciar o sistema. Força desligamento rápido (sem terminar os programas em execução). ___________________________________________________________________________ Pág. Reinicia o sistema. reboot O comando reboot tem o mesmo efeito que o comando “shutdown -h now”. 17 . por exemplo). em segundos. Somente “testa” o desligamento. Força a execução do fsck durante a inicialização. Sintaxe: shutdown [-akrhfnc] [-t secs] tempo [mensagem] Tabela de Parâmetros -a -k -r -h -f -F -n -c -t Exemplos: Utiliza o arquivo /etc/shutdown. Reinicia o sistema em modo rápido (Não executa o fsck durante o boot). Desliga o sistema. Especifica o tempo. entre a notificação e a finalização dos processos.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.

que é mantido por cerca de 1000 voluntários ao redor do mundo. Um pouco sobre o Debian Debian é atualmente a maior distribuição Linux “não comercial” do mundo. Ian Murdock. no mesmo espírito do Linux e do GNU (leia seu manifesto fornecido como apêndice nesse documento para maiores detalhes). e sua esposa. Erivelton Rodrigues Nunes INSTALAÇÃO DO DEBIAN GNU/LINUX “Palavras agradáveis são como favo de mel. da Pixar©. Surgiu a partir do nome do criador do Debian. doces para a alma. e cada uma delas utiliza um método próprio ou parecido para fazer a mesma coisa: Instalar o sistema. Pronúncia A pronúncia oficial de Debian é débian. De onde surgiu o nome “Debian”? O nome Debian teve origem de uma junção entre os nomes dos fundadores do sistema operacional. o conceito de uma “distribuição” de Linux era novo. pois existem diversas distribuições.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. ___________________________________________________________________________ Pág. Não existe nenhuma empresa por trás do projeto Debian.24 Abranger de uma forma geral a instalação “do Sistema Operacional Linux” é redundante. Quando surgiu? O Projeto Debian foi oficialmente fundado por Ian Murdock em 16 de Agosto de 1993. buzz (o nome da primeira versão) é o nome do “homem do espaço”. Ian pretendia que o Debian fosse uma distribuição criada abertamente. 18 . o Debian possui toda uma estrutura colaborativa de desenvolvimento e manutenção que torna o software muito robusto e estável. Naquele tempo. Woody é o cowboy. A criação do Debian teve o apoio do projeto GNU da FSF durante um ano (Novembro de 1994 a Novembro de 1995). potato é o homem-batata. e medicina para o corpo” Provérbios 16. seguida de perto pelo Slackware). Debra. Os nomes dados as distribuições Debian Até hoje são baseados nos personagens do desenho animado Toy Story®. Além de ser uma das mais antigas distribuições Linux do mundo (Das “famosas” ela é a mais antiga. em 1993: Debra e Ian Murdock. Qual o significado dos codinomes das distribuições Debian? Essa é bem simples.

Quando uma nova versão de um pacote é lançada. por exemplo.0. é que permitem a alteração de um pacote da distribuição estável. O compromisso é com a qualidade.54. A distribuição oficial do Debian é a que está contida na seção main do repositório do Debian. Isto significa que ele já teve um tempo suficiente para testes e não apresentou problemas. O intervalo de tempo entre o lançamento de duas versões estáveis pode levar 1 ou até 2 anos. ao contrário de outras distribuições que soltam “releases” incompletos. Somente problemas graves. Contrib e Non-Free Os pacotes podem ser classificados quanto ao tipo de Licença de Software que seguem. e uma nova versão estável é lançada.55. O time de desenvolvimento do Debian também vai corrigir o pacote. após algum tempo. que disponibiliza o 2. mas o número versão dele será alterado para 1. 19 . No site do Debian podemos encontrar a seguinte explicação: “Todos os pacotes incluídos na distribuição oficial do Debian são livres de acordo com a Definição Debian de Software Livre.3.26-1. Eles incluem: Contrib Pacotes nessa área são livremente licenciados pelo detentor do copyright mas dependem ___________________________________________________________________________ Pág.0. por exemplo. A versão instável exige grande conhecimento e capacidade de resolver problemas de configuração e instalação. devido as pressões de mercado. O time de desenvolvimento coloca seus pacotes na árvore experimental. Isso assegura uso livre e redistribuição de pacotes com seu código fonte completo. eles são congelados (freeze) na versão em que estão. provemos pacotes em seções separadas que não podem ser incluídas na distribuição main por causa de uma licença restritiva ou problemas legais. Em seguida os pacotes são migrados para a instável e. Quando o conjunto de pacotes atinge esta maturidade. Testing e Unstable O desenvolvimento da distribuição Debian segue um rígido controle de qualidade. É possível fazer a instalação de um sistema com a árvore teste. ele não é incluído na versão estável.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.26. Erivelton Rodrigues Nunes Stable. Main. como um “bug” de segurança. o time de desenvolvimento do Apache vai lançar a versão corrigida com o número 1. eles são migrados para a árvore teste.3. A versão conhecida como estável (stable) é exaustivamente testada e corrigida.3. Alguém não habituado com o Debian vai achar que está usando uma versão errada. Digamos que a versão estável do Debian esteja utilizando o Apache 1. mas isso exige conhecimento para resolver problemas com pacotes “jovens”. digamos o Apache 2. Isto é motivo de alguma confusão para aqueles não habituados a utilizar o Debian. Na estrutura de diretórios dos softwares a nova versão do Debian está nas “árvores” teste e instável. Se um “bug” de segurança for encontrado neste pacote.” Como um serviço para nossos usuários.27.

Non-Free Foram retirados a partir do Sarge.. configurar a BIOS para inicializar a partir do cd e iniciar o computador..) ou pesquisar na Internet. 20 . o debian-installer. Erivelton Rodrigues Nunes de outros pacotes que não são livres. Prosseguiremos nessa tela com o seguinte parâmetro a ser passado para o prompt de inicialização: ___________________________________________________________________________ Pág. Procure saber com o fabricante do equipamento (que nem sempre vê com bons olhos a utilização de Linux. Você deverá ser presenteado com uma tela como com essa: Essa é a tela de boas vindas do cd de instalação do Debian Etch Diversos parâmetros de inicialização podem ser passados nessa tela. mas com números de versão diferentes.” Iniciando a Instalação O primeiro passo para iniciar a instalação do Debian é verificar se o seu Hardware ao menos “aparenta” ser compatível com ele. é através de um cdrom inicializável de instalação do Debian. Esse passo evita dores de cabeça que degradam a reputação do sistema Debian GNU/Linux. Note que os mesmos pacotes podem aparecer em muitas distribuições. A maneira mais simples.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Você pode pressionar a tecla [F3] para ver uma lista dos kernels disponíveis nesse cd de instalação. basta inserir o cd na unidade de cdrom. e utilizada em mais de 95% das instalações. Inicializando o instalador É preciso definir qual será o método utilizado para se inicializar o instalador do sistema. Nesse método.

21 .AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Erivelton Rodrigues Nunes Para instalar no modo padrão (texto) tecle ENTER no prompt boot : Para instalar no modo Gráfico digite installgui no prompt boot : installgui A partir de agora veremos uma tela no modo texto e uma no modo gráfico.Português do Brasil ___________________________________________________________________________ Pág. Choose language : Portuguese (Brazil) . 1.

Alguns componentes do programa instalador serão carregadas. O sistema de instalação tentará detectar o leitor de CDROM. 22 . 5.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. 4. A configuração automática da rede poderá falhar se não encontrar um servidor DHCP. ___________________________________________________________________________ Pág. Erivelton Rodrigues Nunes 2. Selecione um layout de teclado : Português Brasileiro (layout Americano) 3. O instalador tentará detectar um servidor de DHCP para configurar a rede.

gateway. Configurar a rede:  Endereço IP. 23 . nome da máquina. nome do domínio ___________________________________________________________________________ Pág. Máscara de rede. Erivelton Rodrigues Nunes 6.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Endereços dos servidores de nomes (DNS).

escolha a partição indica pelo instrutor Usar como:sistema de arquivos com journaling ext3 Ponto de montagem: / Opções de montagem: defaults Rótulo: / Blocos reservados: 5% Uso típico: padrão Flag Inicializável: desligado Tamanho: X GB  Finalizar a configuração da partição.  Escolha a partição “swap” (área de troca) existente. Particionar discos:  Editar manualmente a tabela de partições  IDE1 principal (hda) . 24 .AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Erivelton Rodrigues Nunes 7. Ela deve ficar com a seguinte ___________________________________________________________________________ Pág.

O Fuso horário deverá ser selecionado: São Paulo 9. 25 . Erivelton Rodrigues Nunes configuração: Usar como: área de troca Flag Inicializável: desligado Tamanho: Y MB  Finalizar a configuração da partição  Finalizar o particionamento e gravar as mudanças no disco  Gravar essas mudanças nos discos? Selecione: Sim 8. Depois será solicitada a senha do usuário root ___________________________________________________________________________ Pág.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.

___________________________________________________________________________ Pág. 11. O sistema também exigirá a criação de um usuário comum com sua respectiva senha. 26 . O sistema básico do Debian será instalado. Erivelton Rodrigues Nunes 10.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.

Também será questionado se deseja participar de um concurso de pacotes. Você será questionado se usará um “Espelho de rede” – Mirror. Erivelton Rodrigues Nunes 12. Instalar o GRUB em um disco rígido: Sim 16. 27 .  O sistema vai rebootar ___________________________________________________________________________ Pág. Na próxima tela você deve selecionar o conjunto de pacotes que deseja instalar. Finalizar a instalação:  Escolha: Continuar. Escolha “Sistema Básico” 15.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Também responda Não 14. Responda NÃO 13.

diferencia maiúsculas de minúsculas. podem ter outros diretórios filhos e também arquivos. estes filhos. ou seja. O diretório no topo da hierarquia é o diretório raiz que é representado por “/”. A forma da estrutura de árvore invertida. o que conserva a inteligência acha o bem” Provérbios 19. de onde saem o “tronco” e os “galhos” que atingem os demais elementos.8 O Linux tem como principais elementos estruturais arquivos e diretórios. ou seja. De cada diretório partem outros “galhos” que podem atingir os demais elementos. Os nomes de arquivos e diretórios devem ser usados lembrando-se que o Linux é case sensitive. que assim se chama porque o elemento no topo é raiz. Estes arquivos e diretórios estão organizados numa estrutura hierárquica na forma de uma árvore invertida. onde arquivos guardam informações e diretórios são os compartimentos que podem conter arquivos e/ou subdiretórios. ___________________________________________________________________________ Pág. 28 . Aqueles diretórios logo abaixo deles são seus filhos. Erivelton Rodrigues Nunes ESTRUTURA DE DIRETÓRIOS Hierarquia “O que adquire entendimento ama a sua alma.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Sempre que um diretório contiver um segundo diretório que vem logo abaixo dele na hierarquia diz-se que este segundo diretório é um subdiretório. por sua vez. possui estrutura hierárquica porque alguns elementos têm ascendência sobre outros.

conforme vemos a seguir. de maneira inequívoca. seu caminho completo. Sempre que um comando necessitar de um nome de arquivo.. Sintaxe do pwd # pwd /root O comando acima mostra que o diretório atual é “/root”. ls Exibe o conteúdo do diretório ou informações sobre um arquivo. um elemento qualquer no sistema de arquivos. ou seja. o comando assumirá que estamos nos referindo a arquivos do nosso diretório corrente. O caminho absoluto localiza. ou seja.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof./spool/mail Podemos utilizar os comandos pwd. de maneira absoluta. caso não especifiquemos seu caminho. ls e cd para auxiliar-nos com a localização na estrutura de diretórios. Exemplo de caminho relativo: . Tabela de parâmetros -l Mostra o conteúdo e as informações dos arquivos do diretório corrente de maneira detalhada ___________________________________________________________________________ Pág. O caminho é relativo ao nosso diretório corrente (ou seja. um arquivo ou diretório no sistema de arquivos. Exemplo de caminho absoluto: /usr/local/bin Caminho Relativo É possível utilizar caminhos relativos para localizarmos arquivos ou diretórios. em que diretório você está no momento. podemos chegar a lugares diferentes usando um mesmo caminho relativo). Erivelton Rodrigues Nunes Caminho Absoluto Para localizar. pwd Este comando vai mostrar na tela o seu diretório corrente. a partir de diretórios diferentes. Localização na Estrutura de Diretórios A seguir estudaremos alguns comandos que são essenciais para a nossa localização na estrutura de diretórios. 29 . deve-se exprimir o seu caminho absoluto.

É possível mostrar o conteúdo de um ou vários diretórios ao mesmo tempo. Classifica por data de alteração. Inverte a ordem de classificação. incluindo os arquivos ocultos (Que iniciam com “. Lista diretórios e sub-diretórios recursivamente. Mostra Identificação de Usuários (UID's) e grupos (GID's) ao invés de nomes. Classifica pela extensão.”). etc.doc O comando acima simplesmente mostra o conteúdo (arquivos) do diretório corrente. ls [parâmetro] <arquivo> Exemplo: [root@host root] # ls diversos evolution latex listamp3 material projetolc teste tlm-4. Lista datas e horas no formato completo. Listagem longa sem o grupo dono dos arquivos (o mesmo que -lG). basta acrescentar o caminho do(s) diretório(s) a frente do comando. vermelho=arquivo compactado. azul=diretório. Ativa exibição colorida de arquivos para ajudar na identificação dos mesmos. verde=executável. azul-claro=link simbólico.gz.doc. Oculta a coluna de grupo dono do arquivo.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. 30 . Erivelton Rodrigues Nunes -a -F -G -h -n -o -R --full-time --color -r -c -X Sintaxe: Mostra o conteúdo do diretório corrente. Por padrão. (Só funciona junto com a opção -l) Mostra o tamanho dos arquivos de forma legível para “humanos” (human-readable). Adiciona Indicadores. conforme abaixo: # ls /mnt /tmp mnt/: cdrom floppy tmp/: DOCUMENTO ___________________________________________________________________________ Pág.

./networking).done. Ambos levam ao mesmo resultado. este comando é usado para trocar de diretório corrente. Esse exemplo mostra como executar um comando que esteja no diretório /etc/init.d/networking restart Reconfiguring network interfaces..d de duas formas./networking restart Reconfiguring network interfaces.d/networking).done.d # ls -l networking -rwxr-xr-x 1 root root 2607 Jun 13 2006 networking # . A entrada “../ Sai do diretório atual (/var/tmp) e vai para o diretório /var. exatamente como no MS-DOS..” refere-se ao diretório logo “acima” do atual. Observe o seguinte exemplo.... # cd /etc/init.” e “. levando em consideração que o diretório home do usuário root é a pasta /root: Exemplo D: # pwd /tmp # cd ~ # pwd /root ___________________________________________________________________________ Pág. 31 . Exemplo B: # cd . Erivelton Rodrigues Nunes cd Significa “Change Directory” (troca de diretório). Exemplo C: # /etc/init. Isso é possível graças a duas entradas especiais que existem em todos os diretórios: “.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Ele refere-se ao diretório HOME do usuário atualmente logado no sistema. Outro caminho relativo especial na estrutura de diretórios é o “~”.” refere-se ao próprio diretório. Sintaxe: cd diretório Exemplo A: # cd /var/tmp Sai do diretório atual e vai para /var/tmp. A primeira utiliza o caminho absoluto (/etc/init. que fica um diretório acima (antes) do atual. o segundo utiliza o caminho relativo (. já a entrada “.”.

Esses e outros arquivos relacionados a configuração do shell bash serão estudados mais a fundo ainda neste treinamento. por exemplo). lembrando que o nome da variável faz distinção entre maiúsculas e minúsculas.. existem 7 diretórios do sistema cadastrados na variável $PATH (separados por “:”). e caso não encontre. 32 . Se quiser alterar somente para um usuário específico.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. ou seja. Quando um comando qualquer é digitado sem o caminho absoluto (o comando ls. o sistema procura o arquivo ls dentro do diretório /usr/local/sbin. O seguinte comando mostra o conteúdo da variável $PATH. que é lido por todos os usuários no sistema no momento do Login.. Tente um echo $PATH ___________________________________________________________________________ Pág. se não encontrar nesse o sistema avisa que o comando não pode ser localizado.bashrc do(s) usuário(s) em questão. diretórios que contém comandos e scripts no sistema. Para exibir o conteúdo de uma variável no console. O caminho dos diretórios que contém executáveis costumam já vir configurados após a instalação do Linux (verifique a variável $PATH). Veja o exemplo. continua a busca no diretório /usr/local/bin. # echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11 Nesse exemplo. adicione a entrada correspondente no arquivo ~/. Ele leva de volta para o último diretório visitado. execute o comando echo $NOME_DA_VARIAVEL. seguindo assim até chegar no último diretório (/usr/bin/X11). Exemplo E: # pwd /tmp # cd /usr/local # pwd /usr/local # cd # pwd /tmp $PATH A variável $PATH armazena o caminho dos arquivos executáveis. é recomendável fazer isso editando o campo correspondente no arquivo /etc/profile. Erivelton Rodrigues Nunes Outro caminho especial utilizado com freqüência é o “-”. Caso seja necessário alterar o conteúdo dessa variável.

utilizamos o comando: # history -w ~/.bash_history No próximo login. Exemplo B: # history 10 531 echo $PATH 532 cd ~ 533 ls -lA 534 ls -la 535 vi .bash_history para a memória. Limpa o histórico da memória (mas não apaga o ~/. Lê o histórico a partir de um arquivo previamente salvo. O procedimento manual para fazer isso seria: # history -r ~/. Para fazer isso manualmente.bashrc 536 vi /etc/profile 537 history 538 history |head 539 history -10 540 history 10 ___________________________________________________________________________ Pág. que fica em memória enquanto utilizamos o console. e quando terminamos a sessão normalmente (logout). ele os armazena no chamado “histórico de comandos”. Devemos isso ao histórico de comandos.. Erivelton Rodrigues Nunes Histórico de Comandos Você pode executar comandos já digitados pressionando as teclas [Seta para cima] e [Seta para baixo]. O comando history. quando chamado sem argumentos. 33 . pois conforme digitamos comandos no bash.bash_history. o bash salva esse histórico no arquivo ~/.bashrc 536 vi /etc/profile 537 history Grava o histórico em um arquivo especificado. mostra todas as entradas no histórico.bash_history). Tabela de parâmetros -w -r -c Exemplo A: # history . 530 echo PATH 531 echo $PATH 532 cd ~ 533 ls -lA 534 ls -la 535 vi .bash_history O bash limita o tamanho máximo de comandos que podem ficar no histórico de comandos através da variável de ambiente $HISTSIZE. o bash carrega o arquivo ~/. restaurando o último histórico salvo.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.

As setas são muito utilizadas no dia-a-dia de um administrador de sistemas Linux. Tecla TAB A tecla [TAB] nos permite completar nomes de arquivos. Exemplo A: ___________________________________________________________________________ Pág. !-n Refere-se ao comando atual “menos” n no histórico. ele mostra os últimos 10 comandos no histórico. Isto é útil para visualizar saídas de comandos que ocupam mais de uma tela no Console. executáveis no $PATH. Erivelton Rodrigues Nunes Nesse caso.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Repare que cada comando nohistórico possui um identificador numérico. etc. !! Repete o último comando digitado. ou [SHIFT]+[PAGE DOWN] para rolar a tela para baixo (a tela já deve ter sido rolada p/ cima nesse momento). Teclas de Atalho A tela do console em modo texto pode ser rolada para cima utilizando [SHIFT]+[PAGE UP]. e [SETA P/ BAIXO] (avança através dos comandos no histórico). diretórios. 34 . pois se tornam muito necessárias conforme digitamos comandos. digamos que seja preciso repetir o comando “echo $PATH” (Número 531 no histórico): Exemplo C: # !531 echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11 Outros comandos como esse podem ser verificados na tabela abaixo: Expansões para o histórico de comandos !n Refere-se a entrada n do histórico. um por um). basta começar a digitar um comando desejado que o bash preenche com o mais provável conforme digita-se. !exemplo Repete o último comando digitado que comece com “exemplo” É possível fazer uma pesquisa reversa no histórico de comandos com a seqüência de teclas [CONTROL]+[R]. Nesse modo. Outra forma de navegar através dos comandos no histórico é com a ajuda de teclas como [SETA P/ CIMA] (volta recursivamente os comandos do histórico. Podemos utilizar desse identificador para executar novamente o comando em questão. Por exemplo.

que visa padronizar o nome e a localização de diretórios e arquivos principais do sistema. como o /var por exemplo. Variáveis e Estáticos Já a distinção entre os dados Variáveis e Estáticos se torna necessária pelos motivos: A) Devido ao diretório / (raiz) conter tanto dados variáveis quanto estáticos. ___________________________________________________________________________ Pág. B) Existem diretórios que recebem modificações constantemente (variáveis). certos arquivos contém informações específicas para cada host. B) em um mesmo ambiente. 2. acionamos o comando ls /usr/share/doc utilizando a tecla tab 3 vezes para completar o caminho. Erivelton Rodrigues Nunes # ls /u[TAB]/sh[TAB]/do[TAB] No exemplo. Um sistema FHS divide os diretórios em 2 categorias principais: 1. ela está homologada nos padrões FHS. é uma muito útil poder compartilhar dados entre diferentes hosts para economizar espaço em disco e facilitar as tarefas de manutenção. Compartilháveis e Não Compartilháveis: A distinção entre dados Compartilháveis e Não-Compartilháveis é necessária pelos seguintes motivos: A) Em um ambiente de rede com várias máquinas. Esse padrão tem algumas características muito importantes. 35 . desde que esses aplicativos também sigam o padrão da FHS. o que proporciona um alto nível de compatibilidade entre aplicativos criados inclusive para outras distribuições.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Quando uma distribuição Linux segue a risca os padrões da FHS. portanto. alguns dados nele contidos precisam ter permissões de leitura e escrita. Filesystem Hierarchy Standard O Linux usa um padrão para a estrutura de diretórios. denominado FHS (Filesystem Hierarchy Standard). como a compatibilidade com outros sistemas e a habilidade na montagem de algumas partições no modo somente de leitura. esses dados não podem ser compartilhados para os outros micros da rede. Exemplo B: # ifco[TAB] O exemplo acima completa o comando ifconfig logo após digitarmos “ifco” (somente as 4 primeiras letras) seguido da tecla [TAB].

/dev Contém os arquivos de dispositivos suportados pelo Linux. Utilizado para modificar dono/grupo de arquivos e diretórios. como por exemplo: Utilizado para mostrar arquivos na saída padrão. portas paralelas e serias. como mostrado na tabela abaixo: Compartilháveis Estáticos Variáveis /usr /opt /var/mail /var/spool/news Não-Compartilháveis /etc /boot /var/run /var/lock Os diretórios contemplados pela FHS são: /bin Contém os comandos que podem ser usados pelo administrador de sistema e pelos usuários. mouse. etc. etc. Isso é possível pois o kernel conta com esses “Arquivos Especiais” que ficam no diretório /dev. como hds. como floppy disk. Utilizado para alterar permissões de arquivos e diretórios. unidades de disco.. ___________________________________________________________________________ Pág. Utilizado para copiar arquivos e diretórios. Conforme visto anteriormente. isso o torna necessário durante uma tarefa de manutenção do sistema. Utilizado para listar conteúdo de diretórios e informações sobre arquivos. É neste diretório que se encontra o Kernel. e isso inclui os dispositivos do sistema. cdrom. 36 . Esses arquivos especiais podem ser de dois tipos: Dispositivos de Bloco e Dispositivos de Caractere. e portanto não pode ficar em uma partição separada da partição que contém o / (raiz).. cat chmod chown cp ls /boot Este diretório contém arquivos importantes para a Inicialização e carregamento do kernel. portas. Também é nesse diretório que ficam localizados os arquivos do Gerenciador de Boot (bootloader). Erivelton Rodrigues Nunes A correlação entre esses tipos de diretórios forma a FHS. modems.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Scripts de Inicialização também fazem uso desses comandos aqui presentes. tudo no linux é tido como arquivo.

as portas seriais e paralelas tem uma nomenclatura diferente do MSDOS®. Neste diretório ficam informações como personalização de desktop. configuração de clientes de e-mail. É nesse diretório que passaremos a maior parte do curso. Exemplos de Dispositivos Bloco /dev/hda /dev/fd0 /dev/sdd11 /dev/tty1 /dev/ttyS0 /dev/zero Caractere Portas Seriais e Paralelas No linux.. Essas diferenças são mostradas na tabela abaixo: MSDOS COM1 COM2 LPT1 LPT2 LINUX /dev/ttyS0 /dev/ttyS1 /dev/lp0 /dev/lp1 /etc Contém os arquivos e os diretórios de configuração que são específicos ao sistema atual. pois tratam os dados em formato binário próprio para armazenagem e leitura posterior. Já os dispositivos de caractere tratam o fluxo de dados em um formato de caracteres texto. etc. possibilitando posterior leitura desses dispositivos. ___________________________________________________________________________ Pág. O próprio terminal texto.. Assim. como discos-rígidos e disquetes. utiliza um dispositivo de caractere para interfacear com o kernel. /home Contém os diretórios de trabalho de todos os usuários do sistema.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. 37 . os dados enviados a esses dispositivos são armazenados em dispositivos de armazenamento. O propósito principal dessa estrutura é facilitar as tarefas de backup. por exemplo. Erivelton Rodrigues Nunes A diferença entre esses dois tipos de dispositivos é que os dispositivos de bloco são dispositivos geralmente associados “armazenamento de dados” (blocos de dados). por exemplo.

Ex. mais especificamente em /lib/modules/<versão do kernel>/. Isso torna possível que o usuário root acesse seus arquivos durante uma tarefa de manutenção no sistema. ___________________________________________________________________________ Pág. Mandrake e Conectiva criam os subdiretórios floppy e cdrom aqui dentro para servir como ponto de montagem para esses tipos de mídias. /opt É reservado para a instalação de pacotes que estão fora da distribuição utilizada. Distribuições como o Debian fazem isso automaticamente. Erivelton Rodrigues Nunes /root Este é diretório home do administrador de sistema (Usuário root). Recomenda-se que ao inicializar o sistema os arquivos contidos neste diretório sejam apagados. /lib Contêm as biblioteca compartilhadas necessárias ao carregar o sistema e para executar os comandos localizados na raiz do sistema de arquivos. Segundo a FHS. Os módulos do Kernel também se localizam neste diretório. Estes pacotes fornecidos por terceiros devem ser instalados em diretórios separados. /sbin Contém os binários essenciais para o inicialização. onde o sistema “deve” ser capaz de funcionar somente com a partição raiz acessível (montada).: /opt/ pacote – onde o pacote deve descrever o nome do software a ser instalado. o root é o único usuário interagível com o sistema (que digita comandos nele) que deve ter seu diretório de trabalho fora da pasta /home. /mnt Este diretório é fornecido de modo que o administrador de sistema possa temporariamente montar um disquete. 38 . Estes binários são usados pelo próprio sistema ou pelo administrador(root). Outras distribuições como o Debian e Knoppix criam esses diretórios (cdrom e floppy) diretamente na raiz. e os utilizam como padrão para servir como ponto de montagem à essas mídias. na recuperação e restauração do sistema. cdrom. Algumas distribuições Linux como a RedHat. ou sistema de arquivos quando necessário. /tmp O diretório tmp é utilizado por alguns programas que requerem arquivos temporários.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.

jogos. Devido a provável grande quantidade de dados e acessos que esse diretório receberá. já os que ficam em /usr sim.. A diferença entre eles é que os que ficam na raiz contém dados que não podem ser compartilhados pela rede. ___________________________________________________________________________ Pág. Erivelton Rodrigues Nunes /usr O diretório /usr é a segunda maior seção do sistema de arquivos. nele estão os dados compartilháveis apenas para leitura. Arquivos de cabeçalho incluídos por programas em C. /proc O diretório /proc é ligeiramente diferente dos diretórios comuns. programas de usuários. Isso significa que não se deve gravar nada “manualmente” neste diretório. mas / usr/local não é). etc. uma boa prática do administrador é alocar uma partição em um disco separado para receber o diretório /var. dados administrativos e logs do sistema. Dados compartilháveis entre os programas. 39 . Encontram-se neste diretório o gerenciador de janelas X. /usr é compartilhável.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. pois os dados nele contidos não estão fisicamente em nenhum disco rígido do sistema. toda a informação que for gerada com o tempo deve ser armazenada em outra parte (existem os diretórios apropriados para isso). Repare que a maioria desses diretórios dentro de /usr também existem na raiz do sistema.. Isto inclui diretórios e arquivos de spool. e é a forma mais direta que o usuário tem de interagir com o kernel. Biblioteca do Sistema Arquivos Não-compartilháveis (Sim. Isso garante mais velocidade (menos acessos no mesmo disco que contém o sistema) e facilita as tarefas de backup. Trata-se de um sistema de arquivos virtual que é criado e gerenciado pelo Kernel em tempo real. /var Contém arquivos de dados de variáveis. Os subdiretórios mais importantes dentro da estrutura /usr são:: bin include lib local sbin share Binários não inerentes ao sistema. Binários Inerentes ao sistema. mas sim na memória ram.

: esse arquivo mostra “todos” os dispositivos que estão interconectados no barramento PCI. como placas de som. Informações sobre a memória do sistema. a existência ou não da maioria deles depende de opções específicas da versão do kernel em uso no sistema. Mostra a linha de parâmetros que foi passada ao kernel durante a inicialização. Erivelton Rodrigues Nunes Os arquivos nele contidos contém basicamente valores de variáveis do kernel. não somente as placas plugadas nos slots PCI da placa mãe. A maioria dos dispositivos on-board. 40 .95 Repare que foi mostrado o conteúdo do arquivo /proc/cpuinfo com o comando cat.6 e nos trazem informações importantes. (Obs. Acompanhe os exemplos: Exemplo A: # cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 8 model name : Pentium III (Coppermine) stepping : 3 cpu MHz : 647. O /proc está repleto de arquivos como esses. portanto. e que nesse arquivo estão contidas informações sobre o processador em uso na máquina. /proc/pci /proc/interrupts /proc/ioports /proc/cmdline /proc/kcore ___________________________________________________________________________ Pág.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. aparecem na listagem). Mostra Informações sobre os dispositivos conectados ao barramento PCI da placa mãe. usb e modem. como na tabela a seguir: /proc/cpuinfo /proc/meminfo Informações sobre a(s) CPU(s) do sistema.304 cache size : 256 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse bogomips : 1277. Os arquivos que costumam existir em sistemas atuais com kernel's 2. Esse arquivo é exatamente o conteúdo da memória ram em binário. não é um arquivo legível por nós humanos.4 e 2. A saída desse comando é semelhante ao comando: lspci -v Mostra quais dispositivos estão utilizando as respectivas Interrupções do Sistema (IRQs). Mostra quais portas de entrada e saída (Portas de IO) os dispositivos estão utilizando.

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Erivelton Rodrigues Nunes Além desses, o diretório /proc contém alguns subdiretórios com funções especiais, começando por diretórios “numéricos” que contém informações sobre os processos rodando na máquina. O diretório /proc/sys contém uma hierarquia de arquivos e diretórios que servem para interagirmos diretamente com o kernel. Geralmente esses arquivos contém um valor de lógica boleano (verdadeiro/falso), valendo 0 (falso) ou 1(verdadeiro). Alguns desses arquivos contém strings que são valores de variáveis passadas diretamente ao kernel. A modificação desses arquivos repercute imediatamente. Exemplo A:
# cat /proc/sys/net/ipv4/ip_forward 0 # echo 1 > /proc/sys/net/ipv4/ip_forward # cat /proc/sys/net/ipv4/ip_forward 1

Nesse exemplo, primeiro foi mostrado o conteúdo do arquivo /proc/sys/net/ipv4/ip_forward, que retornou 0 (desabilitado). Esse arquivo habilita/desabilita a repassagem de pacotes ip no kernel, e vem desabilitado por padrão. No próximo comando, o conteúdo do arquivo foi substituído pelo valor 1, o que instantaneamente ativa a repassagem de pacotes ip no kernel. Todas as alterações feitas dessa forma na estrutura do /proc serão perdidas na próxima reinicialização. Para salvá-las, devemos adicionar as entradas no arquivo /etc/sysctl.conf. Para salvar a modificação feita no exemplo acima, adicionaríamos a seguinte linha no arquivo /etc/sysctl.conf (verifique se a linha já não existe):
net/ipv4/ip_forward=1

O comando sysctl -p confirma a alteração.

___________________________________________________________________________ Pág. 41

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Erivelton Rodrigues Nunes

GERENCIAMENTO DE PACOTES

“O que guarda a sua boca conserva a sua alma, ma o que muito abre os lábios a si mesmo se arruína”
Provérbios 13.3

Um dos assuntos mais relevantes na administração de sistemas Linux é justamente o gerenciamento de pacotes, que resumidamente é o gerenciamento dos programas instalador no sistema. É possível instalar programas de diversas formas no Linux, seja através da compilação código fonte, da cópia de alguns arquivos ou instalação de pacotes. No mundo Linux, um pacote de software nada mais é do que um programa (ou um conjunto deles) já compilado e pronto para funcionar, que está “empacotado” em um único arquivo, denominado pacote. É como agrupar objetos (programas) em uma caixa (pacote). Cabe ao administrador instalar esse pacote de software para disponibilizar o(s) programa(s) contidos nele para o sistema. Manter o conjunto de softwares de um servidor ou estação de trabalho Linux em pacotes facilita e muito o gerenciamento desses sistemas. As atualizações, por exemplo, são facilitadas, pois basta atualizar o(s) pacote(s) afetado(s) para que o sistema fique em dia. Se os softwares compilados diretamente no sistema, o gerenciamento de atualizações poderia se tornar um caos. Para saber, por exemplo, quais softwares estão ou não instalados no computador, instalar programas sem temer as dependências (nem sempre é tão fácil assim), com um gerenciador de pacotes é muito mais fácil e prático. As dependências são o calcanhar de Acquiles para um gerenciador de pacotes. Quando um pacote precisa que já exista um ou mais pacotes específicos instalados no sistema, ele “depende” desses pacotes e não pode ser instalado sem que esses pacotes já estejam antes instalados no sistema. Existem dois gerenciadores de pacotes principais em uso nas distribuições Linux. O RPM (RedHat Package Manager) e o DPKG (Debian Packager). Outras distribuições, como Slackware e Gentoo, utilizam seus próprios gerenciadores de pacotes, não abordados nesse material.

O gerenciador de pacotes do Debian
O Debian possui seu próprio gerenciador de pacotes, o dpkg (Debian Packager). O dpkg é amplamente utilizado por distribuições baseadas em Debian, como Knoppix (Kurumin) e Ubuntu. Os pacotes debian geralmente recebem a extensão .deb, e contém os arquivos e documentação já compilados, assim como informações e scripts que auxiliam no correto dimensionamento do pacote no sistema. ___________________________________________________________________________ Pág. 42

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Erivelton Rodrigues Nunes

dpkg
Utilizamos o comando dpkg para o gerenciamento direto dos pacotes no debian. Suas principais funções em relação aos pacotes são: Instalação, Listagem, Remoção e Status. Apesar de ser um comando para lidar com pacotes binários no debian, o dpkg serve como base para outros comandos como o APT e dselect, que servem para “realmente” gerenciar os pacotes, facilitando e arrojando todo o trabalho. Sintaxe:
dpkg parâmetro [pacote[.deb]]

Tabela de parâmetros -i pacote.deb -r pacote -P pacote -s pacote -l [pacote] -S /arquivo/no/sistema
Instala pacote(s) Desinstalar pacote(s) do sistema, mas mantém arquivos de configuração. Desinstalar pacote(s) do sistema e remove os arquivos de configuração. Mostra o status do pacote. Mostra informações (lista) do(s) pacote(s). Se for utilizado sem um nome de pacote como parâmetro, lista todos os pacotes instalados no sistema. Verifica a qual pacote determinado arquivo no sistema pertence

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

A primeira coluna existem 2 letras que denotam o estado do respectivo pacote (Estado e erro, respectivamente), cujo nome, versão e descrição abreviada estão nas colunas adjacentes. É possível obter informações para determinado(s) pacote(s) também, utilizando o nome completo ou parcial do pacote. Também é possível utilizar coringas (iguais os do shell, * e ? basicamente). Mas lembre-se de enquadrar o nome do pacote entre aspas para que não sejam confundidos com nomes de arquivos no diretório atual, caso utilize coringas, conforme exemplo abaixo: Exemplo:
# # # # dpkg dpkg dpkg dpkg -l -l locales -l "locale*" -l “locale-??”

___________________________________________________________________________ Pág. 43

por exemplo). Os pacote são separados por seções devido ao grande número Section Installed-Size (Algo como o que é feito com os nomes de municípios. Tamanho ocupado pelo pacote após instalado. Este é o nome da seção a qual o pacote pertence.9. as 2 seguintes são listagens com coringas.debian. Priority standard. If you are interested in creating your own packages.9. e fornece informações muito importantes. important. Exibido em KB. que mostrou na tela o conteúdo do arquivo de controle do pacote dpkg-doc. decrescivamente a importância do pacote no sistema. Que denotam. Veja os significados a seguir: Significado dos campos de controle Package Nome do pacote. Erivelton Rodrigues Nunes Utilizamos 4 formas diferentes para listar pacotes no sistema.4.21_all. a opção -p. Esse arquivo segue o mesmo padrão para todos os pacotes Debian.org Architecture: all Source: dpkg Version: 1. Obtendo detalhes sobre um pacote Debian Mesmo que determinado pacote não esteja instalado no sistema. It covers building aswell as the internals functions. Prioridade de Instalação.deb Size: 10724 MD5sum: 130615337b08082c13de3c99b32cd8cc Description: Dpkg Internals Documentation This document describes the internal operations of the dpkg program. Utilizamos a opção -l para verificar se o pacote dpkg-doc está instalado no sistema (Não se esqueça que a saída desse comando foi omitida na apostila). 44 . Essa opção mostra na tela o arquivo de controle do pacote.19) Filename: pool/main/d/dpkg/dpkg-doc_1.1.21 Replaces: dpkg-dev (<< 1. optional e extra. Em seguida.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.org> Bugs: debbugs://bugs. A primeira lista todos os pacotes instalados. # dpkg -l dpkg-doc # dpkg -p dpkg-doc Package: dpkg-doc Priority: optional Section: doc Installed-Size: 44 Origin: debian Maintainer: Dpkg Development <debian-dpkg@lists. Pode valer required. é possível obter informações muito importantes sobre o mesmo com a opção -p do comando dpkg. ___________________________________________________________________________ Pág. a segunda lista somente o pacote locales.debian. Cada campo que inicia uma linha no arquivo é um respectivo campo de controle. then you may be more interested in the packaging-manual documentation package.

Isso garante que o pacote não tenha sido alterado propositalmente ou corrompido por algum motivo. Execute md5sum pacote.. porém lista pacotes que costumam agregar funcionalidades ao pacote atual. Praticamente o mesmo significado que Depends. pois um ou mais arquivos podem entrar em conflito. porém nem todos os campos são baseados no arquivo de controle. porém não é necessário que a(s) dependência(s) esteja(m) completamente instalada(s) quando da instalação.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Este campo possui 2 propósitos distintos: Qual(is) Replaces arquivo(s) ou pacote(s) será(ão) sobrescrito(s) quando da instalação do pacote. Lista qual(is) pacote(s) não podem existir ao instalar o pacote atual.deb e compare o resultado com o mostrado nesse campo. É importante observar o campo “Status”. Versão do pacote. Pre-Depends Conflicts MD5sum Filename Description Exibindo status dos pacotes do sistema É possível obter o status de algum pacote com a opção -s do dpkg.). Hash de verificação da integridade do pacote. Erivelton Rodrigues Nunes Mantainer Architeture Source Version Depends Recommends Suggests Nome e email do Mantenedor (Empacotador. Qual(is) pacote(s) depende(m) deste.. basta que esteja(s) descompactada(s) no sistema. Nome do pacote que traz o código-fonte para este pacote binário. Descrição detalhada do pacote. geralmente também é o criador do pacote). Qual(is) pacote(s) o Mantenedor recomenda serem instalados junto com o pacote atual. e deve(m) estar instalado(s) antes da instalação do pacote atual. Exemplo: # dpkg -s dpkg-doc Package: dpkg-doc Status: purge ok not-installed Priority: optional Section: doc ___________________________________________________________________________ Pág. (Instalado. etc. não-instalado.. Qual a arquitetura do pacote. com ou sem erros de instalação. Quase o mesmo que Recommends. 45 . Caminho completo do pacote no repositório Debian. A saída é ligeiramente parecida com a opção -p. que exibe em palavras simples um ou mais estados em que o pacote se encontra.

geralmente). caso o pacote que esteja tentando instalar já exista no sistema.25 Replaces: dpkg-dev (<< 1.org Architecture: all # dpkg -i dpkg-doc_1. Erivelton Rodrigues Nunes Origin: debian Bugs: debbugs://bugs.org Architecture: all Source: dpkg Version: 1. Repare na saída do comando dpkg -s antes e depois da instalação do pacote.. utiliza o comando “dpkg-reconfigure pacote” com o pacote desejado.4. é preciso obter pelo menos um pacote Debian (um arquivo . Podemos obter o pacote utilizando a ferramenta APT. (Lendo banco de dados .25_all. 46 . visto que utilitários de gerenciamento de pacotes como o APT internamente utilizam esses comandos. Instalar e Atualizar pacotes Debian é muito simples. substituindo o antecessor.1...10. Instalando e atualizando pacotes binários do Debian Embora este não seja a melhor maneira de se instalar pacotes Debian.10.19) Description: Dpkg Internals Documentation This document describes the internal operations of the dpkg program.25) . porém com uma versão anterior. basta utilizar a opção -i do dpkg.deb Selecionando pacote previamente não selecionado dpkg-doc.debian. é preciso ter conhecimento sobre isso.. logo após a sua instalação. para que possamos executar o exercício.10.deb.deb) . Para chamar novamente a tela de configuração do pacote..AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. o dpkg cuida de efetuar a atualização do mesmo.) Descompactando dpkg-doc (de dpkg-doc_1.org> Bugs: debbugs://bugs. Caso algum pacote necessite de configuração para que venha a funcionar no sistema. Instalando dpkg-doc (1.debian. 107104 arquivos e diretórios instalados.. If you are interested in creating your own packages. then you may be more interested in the debian-policy package. Antes de prosseguir. que será estudada adiante: # dpkg -l dpkg-doc # dpkg -p dpkg-doc ___________________________________________________________________________ Pág.debian.10. It covers building as well as the internals functions. atualmente # dpkg -l dpkg-doc # dpkg -s dpkg-doc Package: dpkg-doc Status: install ok instal ed Priority: optional Section: doc Installed-Size: 72 Origin: debian Maintainer: Dpkg Development <debian-dpkg@lists. será lançado um programa que ajudará na configuração do mesmo.25_all.

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

Utilizamos as opções -l e -p para verificar, respectivamente, se o pacote já estava instalado e se possui dependências. O pacote em questão não possui dependências (pelo menos na versão utilizada durante a confecção do material). O comando apt-get clean serve para remover pacotes recentemente baixados no diretório /var/cache/apt/archives, no qual encontraremos o arquivo dpkg-doc_1.10.25_all.deb, que é um pacote binário debian.

Padrão de nomes dos arquivos binários do Debian
Os arquivos binários do Debian seguem um padrão de nomenclatura para o nome do arquivo que o divide em 3 campos, separados por “_” (underline). O primeiro campo é o nome do pacote, o segundo, a versão do mesmo, e o terceiro é a arquitetura para qual o pacote foi compilado. Quando a arquitetura representa “all”, significa que o pacote pode ser utilizado em qualquer arquitetura de hardware sem problemas.

Removendo pacotes binários Debian
É possível remover pacotes binários instalados no sistema de duas maneiras: Mantendo arquivos de configuração e outros arquivos modificados pelo usuário no sistema ou apagando quaisquer arquivos pertencentes ao pacote. A opção -r do comando dpkg cuida apenas de desinstalar o pacote em questão, já a opção -P (Significa “Purge”) remove todos os arquivos relacionados ao pacote. É importante compreender como o dpkg lida com dependências nessas situações. Nestes dois casos de remoção de pacotes, caso você tente remover um pacote que possua dependências (Lembre-se que são outros pacotes que também estão instalados no sistema, e precisam deste para funcionar), o dpkg interromperá imediatamente a operação e emitirá um aviso sobre a anormalidade, e qual(is) é(são) o(s) pacote(s) dependente(s). tentar removê-los não costuma ser uma boa prática. Uma boa analogia para isso é o seguinte: Imagine que o seu sistema é um carro na estrada, em plenos 120Km/h, O pacote que está pretendendo remover é um pneu dianteiro..... Todo o resto do carro depende dele para se locomover, e para oferecer segurança aos ocupantes.

___________________________________________________________________________ Pág. 47

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Erivelton Rodrigues Nunes

O Advanced Package Tool (APT)
No início da era de “pacotes” nas distribuições Linux, só existia o dpkg do Debian, logo depois a RedHat criou o seu próprio gerenciador de pacotes. Mas faltava algo, pois o gerenciamento de pacotes não estava tão fácil assim... Problemas como as dependências e locais onde se encontrar os pacotes precisavam ser resolvidos manualmente. Estes e outros problemas foram solucionados com o Advanced Package Tool, vulgo APT daqui em diante. O APT é uma ferramenta criada por desenvolvedores do Debian para ser a ferramenta oficial de gerenciamento de pacotes, completando as funcionalidades do dpkg, que apesar de ser brilhante, não é fácil de se utilizar e tem os problemas já citados, que o APT soluciona. O APT na verdade é um programa que cuida de solucionar automaticamente as dependências na mesma hora da instalação do(s) pacote(s). O funcionamento é bem simples, devido ao fato do APT manter uma lista de repositórios de pacotes (estudados adiante), o resto ele faz com as informações contidas nos próprios pacotes mantendo-as em cache na máquina local. A mágica ocorre na seguinte situação: Imagine ter que instalar um determinado pacote chamado xyz, que depende dos pacotes abc e 123 para funcionar (malditas dependências...). O APT verifica tal situação, baixa os pacotes do(s) repositório(s) adequado(s), e os instala na ordem que satisfaça as dependências, até conseguir instalar o pacote xyz. Isso tudo pode ocorrer sob confirmação do usuário, de forma interativa. É importante afirmar que atualmente o APT não é uma ferramenta exclusiva do Debian, pois existem algumas versões de APT que foram portadas para outras distribuições Linux que utilizam o gerenciador de pacotes RPM. A brasileira Conectiva® foi a pioneira nesse sentido, criando o apt-rpm (Nome do projeto, apesar dos principais comandos serem praticamente idênticos).

Repositórios de pacotes do Debian
Para permitir que o APT funcione, é preciso que o sistema conheça ao menos um repositório de pacotes. Um repositório de pacotes dispensa muitas explicações, pois trata-se de uma fonte comum que contenha um ou mais pacotes (geralmente milhares...), o que pode ser um cdrom, um diretório em um servidor http ou ftp, etc. Os repositórios mais utilizados são os que ficam disponíveis pela web (ftp e http), pois isso facilita e muito o gerenciamento de pacotes. Basta, por exemplo, pedir ao apt para que instale determinado pacote que ele irá automaticamente buscá-lo no repositório adequado (graças ao cache de informações que ele mantém localmente), assim como todas as suas dependências. O arquivos /etc/apt/sources.list ___________________________________________________________________________ Pág. 48

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Erivelton Rodrigues Nunes A lista de repositórios é armazenada no arquivo de configuração /etc/apt/sources.list. As entradas nesse arquivo seguem este padrão:
deb http://site.http.org/debian distribuição seção1 seção2 seção3 deb-src http://site.http.org/debian distribuição seção1 seção2 seção3

A primeira palavra das linhas (“deb” e “deb-src”) indicam o tipo de repositório: se guarda pacotes binários (“deb” ), ou seja, os pré-compilados que normalmente usamos ou se guarda pacotes fonte (“deb-src”), que contém o código-fonte original do programa mais o arquivo de controle Debian (“.dsc”) e o “diff.gz”, que contém as modificações efetuadas no pacotes que só existem no Debian, não no código-fonte original do programa. Segue um exemplo de um sources.list “real”:
deb http://ftp.debian.org/debian/ stable main deb-src http://ftp.debian.org/debian/ stable main deb http://security.debian.org/ stable/updates main

O segundo campo de cada linha configura o endereço do repositório (repare nos http://, são repositórios web); Em seguida, temos a versão da distribuição, que segue, basicamente 3 nomes: “stable” para a última distribuição estável, “testing” para a distribuição “intermediária”, que um dia será a “stable”, e unstable, que é a versão mais instável disponível. As distribuições são apenas “versões” disponíveis atualmente do Debian, sempre existem 3 (stable, testing e unstable). No momento em que desenvolvo este material, as versões stable, testing e unstable eram, respectivamente chamadas de: Woody (3.0), Sarge (3.1) e Sid (Esse não tem versão, e também nunca troca de nome, pois sempre contém os pacotes mais instáveis disponíveis). Os últimos campos são as seções (deve haver pelo menos um deles), que ajuda a dividir os pacotes em categorias. No exemplo, main é a categoria principal.

Adicionando um cdrom no sources.list
Para adicionar um cdrom que contenha pacotes debian já organizados na forma de repositórios (cdroms oficiais do debian, por exemplo), utilizamos o comando apt-cdrom. Sintaxe:
apt-cdrom [opções] [comando]

Tabela de parâmetros -h -d diretório -r -m

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

___________________________________________________________________________ Pág. 49

list através de uma interface amigável.list. para adicionar um cdrom ao sources..] Tabela de opções -h -q -qq -d Exibe a ajuda do programa Saída “logavel”.list Para adicionar repositórios web (http ou ftp) no sources..AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. 50 . Os arquivos são baixados no diretório var/cache/apt/ ___________________________________________________________________________ Pág. remover e verificar (entre outros) pacotes debian.. É o apt-setup.list com os repositórios desejados. Sintaxe: apt-get [opções] comando apt-get [opções] instal |remove pacote1 [pacote2 . Utilizando o apt-get para gerenciar pacotes Após configurar o arquivo sources. exceto para erros Nenhuma saída. somente erros Instrui o apt-get para apenas efetuar o download do(s) pacote(s). pois cuida de atualizar a lista de pacotes disponíveis nos repositórios. para apenas identificar um cdrom na unidade. atualizar. Exemplos: # apt-cdrom add # apt-cdrom -d /cdrom1 add # apt-cdrom ident Adicionando repositórios web no sources. Erivelton Rodrigues Nunes -f -a Modo rápido. temos tudo preparado para utilizar a principal ferramenta do apt: o apt-get.. Basta digitar apt-setup no shell e seguir as instruções para selecionar o mirror mais apropriado. instalar. basta adicionar linhas correspondentes para eles no arquivo.] apt-get [opções] source pacote1 [pacote2 . o Debian conta com um utilitário capaz de configurar corretamente o sources. Não atualiza a lista de pacotes Modo Minucioso Os comandos podem ser “add”. ou “ident”. Ele é o gerenciador de pacotes em si. Mas para os repositórios oficiais.list.

51 . -s -y -m -u -b -c=arquivo -o=opção Tabela de comandos do apt-get update Atualiza a lista de pacotes disponíveis upgrade Atualiza todos os pacotes desatualizados do sistema install remove source build-dep dist-upgrade clean Instala novos pacotes no sistema. se houver. Especifica um arquivo de configuração p/ o apt. Exemplo B: #apt-get remove nvi #apt-get install vim ___________________________________________________________________________ Pág.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. respectivamente. basicamente). porém utiliza um mecanismo mais inteligente para lidar com dependências. Mostra uma lista de pacotes atualizados Constrói um pacote-fonte após baixá-lo. Define uma opção arbitrária de configuração. Da forma que o comando foi digitado. ex: apt-get install xpdf) Remove pacotes do sistema.list e atualizar todos os que não estiverem atualizados. por exemplo. Faz o mesmo que “clean”. atualizar a lista de pacotes disponíveis nos repositórios listados no arquivo /etc/apt/sources.) autoclean Exemplo A: #apt-get update #apt-get upgrade Esses dois comandos irão. Assume “Yes” como resposta para todas as perguntas e não pede confirmação Tenta continuar mesmo se os arquivos não puderem ser localizados. Mesma sintaxe utilizada para instalar baixa o código fonte de pacotes Constrói a árvore de dependências necessária para permitir a compilação de um pacote O mesmo que “upgrade”. porém não apaga pacotes que porventura serão utilizados em breve (Um conjunto de dependências de um pacote. categorizando as mais importantes. Apaga todos os arquivos de pacotes temporários (em / var/cache/apt/archives. o apt irá pedir confirmação do usuário antes de prosseguir com a instalação de algum pacote. Erivelton Rodrigues Nunes archives Não executa “de verdade” nenhum comando. somente simula. (indicar o(s) pacote(s).

sem oferecer mais nenhuma dependência para nenhum outro pacote. As teclas do teclado numérico não costumam funcionar bem nesses casos. A tecla [G] avança na seleção (Após selecionar os pacotes necessários. que é o editor VIM “de verdade”. vai para a tela de confirmação de instalação) e a tecla [Q] retrocede. 52 . Erivelton Rodrigues Nunes Removemos o pseudo-vi que costuma vir com o Debian no lugar do vim.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Quando for remover um pacote com o apt-get e quiser remover todos os arquivos pertencentes aquele pacote. O aptitude é notavelmente mais inteligente que o apt-get. Os principais são: aptitude Este fantástico gerenciador de pacotes é considerado um apt-get “turbinado”. O modo “gráfico” do aptitude inicialmente pode parecer confuso. A tecla [+] marca o pacote para instalação/atualização. que aceita os comandos como install. Imagine que você instalou o pacote xyz. por exemplo. Já o aptitude é capaz de desinstalar automaticamente esses pacotes ao removermos o “pacote-pai” xyz. os pacotes que só serviram de dependência para ele (o abc e o 123) ficarão ocupando espaço no sistema. Utilize as setas do teclado para navegar pela lista de pacotes categorizada. e em seguida instalamos o vim. e se pressionada na tela inicial do programa. que de quebra trouxe os pacote abc e 123 como dependências. mas logo pegamos a manha. instale da seguinte forma: # apt-get install aptitude Após instalado. Para utilizá-lo. sai dele. já podemos contar com o comando aptitude. update e upgrade do apt-get. a tecla [-] remove. Esses programas geralmente adicionam funcionalidades e/ou facilitam outras ações de outros programas. Para atualizar a lista de pacotes (tal como um aptitude update). utilize a opção --purge. além de adicionar outras características únicas. ou abre a interface “gráfica” de gerenciamento se digitarmos aptitude sem nenhum parâmetro. como uma interface amigável para o gerenciamento de pacotes. pois sua sintaxe á praticamente a mesma. Só que se removermos o pacote xyz com o aptget. pressione [U]. ficando assim: #apt-get remove --purge pacote Programas auxiliares Existem alguns programas que completam o super-esquema de gerenciamento de pacotes do Debian. Um exemplo é como ele lida com pacotes obsoletos do sistema (órfãos). ___________________________________________________________________________ Pág.

AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Instale-o com o comando: # apt-get instal apt-show-versions Depois utilize-o com a desatualizados no sistema: # apt-show-versions -u opção “-u” para descobrir quais pacotes estão apt-cache Utilitário da família apt. Sua principal função é mostrar as versões dos pacotes disponíveis. mas é amplamente utilizado para mostrar quais pacotes estão pendentes de atualização atualmente no sistema. Ele é muito utilizado para procurar por pacotes cujo nome ou descrição contenha determinada palavra (Útil para encontrar um pacote que lide com determinada funcionalidade) e para exibir informações sobre pacotes que ainda não estejam instalados no sistema. 53 . Serve para buscar informações na lista de pacotes dos repositórios. Erivelton Rodrigues Nunes apt-show-versions Este é um programa simples. Sintaxe: apt-cache comando pacote [pacote. porém direto e funcional.. mostrando seu respectivo arquivo de controle.] Tabela de comandos do apt-cache gencaches Gera os caches de informações. showpkg Mostra informações gerais do pacote showsrc Mostra registros fontes stats Mostra estatísticas básicas dump Mostra o arquivo inteiro de forma concisa dumpavail Mostra arquivo de disponíveis unmet Mostra dependências não satisfeitas search Procura por pacotes que casem com algum padrão Show Mostra informações sobre determinado pacote depends Mostra as dependências de determinado pacote pkgnames Mostra nomes dos pacotes policy Mostra configurações de políticas ___________________________________________________________________________ Pág. Ele faz isso comparando as versões dos pacotes instalados com as versões dos pacotes na lista dos repositórios..

ssh. console-data e mdetect. read-edid. tcpdump.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. locales. Erivelton Rodrigues Nunes Exemplos: #apt-cache search xpdf #apt-cache show xpdf-utils #apt-cache depends xpdf-utils Exercício Verifique com o comando dpkg quais desses pacotes não estão instalados e instale os que faltarem: less. ___________________________________________________________________________ Pág. discover. 54 . Verifique também na descrição dos pacotes para que eles servem.

TurboLinux e Suse) são principalmente conhecidas assim porque levam consigo o gerenciador de pacotes RPM. Portanto. O RPM é relativamente simples de gerenciar. Mostra os arquivos de configuração contidos no(s) pacote(s).0-1) é a versão do pacote. A quarta parte é a extensão do arquivo (. Mas isso não é uma boa prática.] Consulta de pacotes RPM O modo de consulta do permite fazermos consultas sobre os pacotes instalados no sistema (através da base de dados mantida pelo RPM) ou sobre pacotes que ainda não estão instalados no sistema. Sintaxe: rpm -opções [pacote] [pacote.rpm Onde fica dividido em 4 partes. Existem distribuições (Debian por exemplo) que por padrão utilizam outro gerenciador de pacotes. As chamadas distribuições “RedHat Like” (como Conectiva.rpm). Lista todos os arquivos contidos no(s) pacote(s). que é compatível com qualquer arquitetura.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. 55 . conhecer o gerenciador de pacotes RPM automaticamente qualifica o administrador a estar gerenciando softwares em todas essas distribuições que utilizem RPM como o Gerenciador de Pacotes padrão. Mostra um cabeçalho de informações sobre o(s) pacote(s) ___________________________________________________________________________ Pág. Erivelton Rodrigues Nunes O gerenciador de pacotes RedHat (RPM) O RPM é um gerenciador de pacotes criado pela RedHat (Inclusive leva seu nome) e é o gerenciador de pacotes mais amplamente aceito entre as distribuições Linux. Mandrake. Mostra os arquivos de documentação contidos no(s) pacote(s). A segunda (1.. Mas o RPM não está disponível somente para estas distribuições. A terceira (i386) representa a arquitetura para qual aquele pacote foi compilado. desinstalação. Alguns pacotes vem com a arquitetura “all”. Suas funções básicas são: instalação. pois existirá mais de uma base de dados contendo a lista dos softwares instalados no sistemas isso é péssimo para a administração (Seria como ter conta-corrente em dois bancos).0-1. A primeira parte (foobar) é o nome do pacote (Não confunda com o nome do arquivo!). consultando diretamente o “arquivo” do pacote. Gerenciamos esses modos através do comando rpm. Tabela de parâmetros -q pacote -qa pacote -qc pacote -qd pacote -ql pacote -qlv pacote -qi pacote Opção obrigatória no modo de consulta.. mas também podem utilizar o RPM “em segundo plano”. Mostra mais informações sobre os arquivos contidos nos pacotes.i386. O formato do “nome” de um arquivo RPM segue o padrão: foobar-1. Diz ao rpm que estamos efetuando uma consulta Refere-se a todos os pacotes instalados. atualização e consulta de pacotes.

Nesse caso. levando a conclusões erradas sobre a existências de tal pacote. porém mostra somente os 2 primeiros campos (Nome do pacote e versão). A saída do exemplo foi suprimida por ser muito grande. para isso. é possível direcionar a consulta para um pacote específico.1.0. Portanto. Exemplo C: # rpm -qa "vim-*" vim-common-6. Funciona também com as opções c.6-2 bzip2-libs-1. Repare que o formato da saída é similar ao formato do nome do pacote rpm. basta especificar seu nome na consulta.4. Verifica qual é o pacote que provê determinado arquivo ao sistema.1-2 vim-enhanced-6. Diz ao RPM para efetuar a busca diretamente no arquivo RPM e não a base de dados do RPM. -d e -l. 56 . Mostra qual(is) pacote(s) requer alguma dependência.rpm --whatrequires --whatprovides Exemplo A: # rpm -qa mailcap-2.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof... Encare a resposta como “Não encontrado na base de dados interna do RPM”.2-2 .1-2 vim-minimal-6.9-2 filesystem-2. O exemplo mostra como listar todos os pacotes instalados no sistema.1.1-2 Podemos efetuar pesquisas utilizando curingas. um nome de pacote qualquer que o rpm diga não estar instalado não significa que ele exista em algum lugar.18-3 Como podem ver. Exemplo B: # rpm -q kernel kernel-2. Erivelton Rodrigues Nunes -qf pacote -qip arquivo. (A opção -a não é necessária aqui). lembre-se sempre de enquadrar os argumentos de pesquisa entre aspas duplas. ___________________________________________________________________________ Pág. Observação Uma consulta como essa diz que o pacote não está instalado mesmo que o pacote não exista. Mostra qual(is) pacote(s) provê alguma dependência.

partiremos do princípio de que já existe um pacote rpm chamado zebra no diretório atual (zebra-0. etc. -v e -l são utilizados para listar os arquivos contidos no pacote (Vide tabela de parâmetros anterior). -d.18 Vendor: Red Hat. Tabela de parâmetros -i arquivo. Utilizamos o argumento -i para mostrar mais informações sobre o pacote “kernel”. Remove um pacote do sistema. Erivelton Rodrigues Nunes Exemplo D: # rpm -qi kernel Name : kernel Relocations: (not relocateable) Version : 2. Necessita da opção -i. Utilizado em conjunto com o -U.com Group : System Environment/Kernel Source RPM: kernel-2. Mostra andamento da instalação do(s) pacote(s). desinstalação e atualização de pacotes RPM Com alguns comandos simples podemos instalar. Inc. The kernel handles the basic functions of the operating system: memory allocation. <http://bugzilla. ou instala o pacote caso nenhuma versão anterior esteja instalada.4.i386. device input and output. Mostra mais informações na saída do comando. mas os exemplos podem ser seguidos para outros pacotes. disquete. Release : 3 Build Date: Qui 18 Abr 2002 09:03:07 GMT+3 Install date: Sex 26 Abr 2002 06:28:03 GMT+3 Build Host: porky. ___________________________________________________________________________ Pág. (O(s) nome(s) do(s) pacote(s) durante uma instalação..redhat. os parâmetros -c. Antes de instalar um pacote rpm.com/bugzilla> Summary : The Linux kernel (the core of the Linux operating system) Description : The kernel package contains the Linux kernel (vmlinuz). Força alguma operação que o rpm não esteja permitindo. 57 .rpm -U arquivo.redhat.src. process allocation.rpm --oldpackage --force -e pacote -h -v --nodeps Instala determinado pacote no sistema. o sistema emitirá um alerta. Da mesma forma.rpm Size : 30243536 License: GPL Packager : Red Hat. Inc. Aqui. por exemplo) Diz ao RPM para ignorar as dependências (Não é recomendável). desinstalar e atualizar pacotes no sistema utilizando o rpm.rpm). baixando da internet. copiando de algum cd. Instalação. precisamos “obter” o pacote rpm. Caso ele já esteja instalado.4. Atualiza a versão de um pacote cuja versão antiga já esteja instalada no sistema.92a-3.18-3. Diz ao rpm para substituir o pacote por uma versão mais antiga. the core of your Red Hat Linux operating system.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.devel. etc. rede.

Erivelton Rodrigues Nunes Instalação/Atualização Com os dados da tabela acima. 58 . Como o parâmetro -U (que serve para atualização) também faz instalação.i386. Outros parâmetros bem-vindos para a instalação são o -h e o -v. Exemplo: # rpm -q zebra zebra-0. O mesmo exemplo serviria para atualização caso já existisse um pacote zebra de uma versão inferior instalado.92a-3 # rpm -e zebra # rpm -q zebra erro: o pacote zebra não está instalado simples do que instalá-los. ####################################### [100%] 1:zebra ####################################### [100%] # rpm -q zebra zebra-0.92a-3 Geralmente é dessa forma que instalamos pacotes rpm no sistema.rpm preparar. Desinstalação Desinstalar pacotes rpm é ainda mais opção -e seguida do “nome do pacote”.92a-3. basta Utilizar a ___________________________________________________________________________ Pág. utilizaremos ele no exemplo. e recomendamos que seja utilizado no dia-a-dia. podemos concluir que é possível instalar pacotes de duas formas.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. que adicionarão mais “verbosidade” a nossa instalação. Exemplo: # o # A rpm -q zebra pacote zebra não está instalado rpm -Uvh zebra-0.. Com o parâmetro -i ou com o parâmetro -U..

59 . conseguiremos alcançar excelentes níveis de otimização. ___________________________________________________________________________ Pág. estabilidade. de acordo com a sua finalidade. e a bebida forte alvoraçadora. A compilação é o processo pelo qual as instruções contidas no código-fonte são convertidas para uma linguagem de máquina. onde o programa principal somente realiza as chamadas de funções necessárias para a execução de suas atividades.1 A compilação do código-fonte disponível de um determinado programa ou driver. Erivelton Rodrigues Nunes COMPILAÇÃO DE PROGRAMAS “O vinho é escarnecedor. é considerada a melhor forma de garantir a boa implementação e a excelência dos resultados que desejamos obter. De acordo com as necessidades (e vantagens). caso elas não constem no sistema. para a instalação destes programas. A principal vantagem está no fato de que não haverá necessidade de instalação de bibliotecas necessárias para o perfeito funcionamento do programa – as conhecidas pendências. apesar de ser menos simples que utilização de binários pré-compilados. estas são instaladas à parte. Dentre elas existem desde compiladores. utilização de pouca memória e ótima performance quando suas bibliotecas necessárias sendo utilizadas pelo ambiente. Em contrapartida. performance. além de ocupar muito mais memória. existem duas formas básicas de compilação para um programa: A estática e a dinâmica. que é somente entendida pelo próprio computador. não é sábio” Provérbios 20. utilitários de automação e uma série de bibliotecas para esta atividade. ou seja. A grande vantagem deste método de compilação está justamente nas desvantagens do método de compilação estática: ganha-se na confecção de pacotes enxutos. onde para isto foram construídas inicialmente diversas ferramentas de desenvolvimento. As Ferramentas do Projeto GNU O Projeto GNU consistia de desenvolver um sistema operacional Unix livre. o tamanho ocupado pelo programa é muito superior à utilização destes mesmos utilizando o processo de compilação dinâmica. Em contrapartida. surge o grande inconveniente das pendências.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. serão necessários a instalação das devidas bibliotecas para a sua utilização. compatibilidade e ajustes altamente personalizados de que necessitamos ou quando não somente poderemos obtê-los com a utilização deste processo. A compilação estática é um processo que apresenta o conceito de integração total do programa. caso dois ou três destes programas utilizem as mesmas bibliotecas e estejam em execução ao mesmo tempo. A compilação dinâmica apresenta conceitos “inversos” da estática: ao invés de incluir as bibliotecas necessárias no corpo principal do programa. Iremos conhecer as ferramentas indispensáveis para a realização do processo de compilação. como é o caso das bibliotecas gráficas Qt e GTK. com todos os seus arquivos e bibliotecas necessárias para o seu funcionamento. Graças à uma correta e eficiente compilação. todo aquele que por eles é vencido. editores.

in.in. onde de acordo com a filosofia de cada uma. apenas deveremos ficar atento às versões exigidas da glibc. 60 . Make Quando Se Compila Um Programa. Sua utilização traz a vantagem de automatizar a tarefa de manutenção dos Makefiles. Ferramentas De Automação Autoconf O autoconf é uma ferramenta que tem por objetivo desenvolver scripts para automatizar a configuração de códigos-fontes para a compilação em diferentes plataformas. Todas as distribuições possuem uma versão da glibc instalada no sistema. Ela é essencial para a compilação dos códigosfonte de seus pacotes. Com ele é criado o script configure. ele irá construir os arquivos Makefiles personalizados. que serão utilizados como regras para a compilação dos programas e assim garantir a compilação do programa específicamente para o sistema em uso. O script configure. Graças à ele torna-se possível utilizar um mesmo código para diferentes arquiteturas.am. Gnu Libtool Desenvolvido por Gordon Matzigkeit. Na consulta das instruções README e INSTALL dos pacotes com os fontes. como também incluir diversas outras instruções (bibliotecas) para compor o corpo funcional do programa.am) para a construção dos arquivos Makefile. M4 O m4 é a implementação de macro-processadores tradicionais dos ambientes Unix. Não Só Existe A Necessidade De Unir (Link) Todo O Código-Fonte e gerar o programa principal. Erivelton Rodrigues Nunes Bibliotecas Gnu C Library A GNU C Library – conhecida como glibc – é usada por praticamente todos os programas desenvolvidos para os sistemas GNU/Linux. Sua presença é indispensável para a compilação de bibliotecas e pendências necessários para a instalação de outros programas. Com estas informações.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Realizar esta operação é algo extremamente trabalhoso. que por sua vez contém as instruções necessárias para que o automake possa construir os Makefile. Automake O automake é um script desenvolvido em Perl que utiliza as definições geradas pelo GNU m4 (Makefile. o GNU Libtool é um conjunto de shell scripts desenvolvidos para facilitar a criação e uso de bibliotecas compartilhadas. a existência de pendências e as especificações da plataforma. onde raramente as distribuições deixam de atender tais requisitos. poderemos ter a versão mais recentes ou não. por sua vez. pois teríamos que realizar diversos procedimentos manuais para ___________________________________________________________________________ Pág. Sua função consiste em gerar os arquivos Makefile. examina as variáveis.

os quais contém todas as instruções para a realização do processo. onde este segue as instruções de um arquivo especial gerado pelo configure (Makefiles). segue as especificações ANSI C. utilize.diff Para remover a atualização. inclusive o executável. atualização propriamente dita. possui excelente performance e portabilidade. Desenvolvido por Richard Stallman com o apoio de voluntários. como o Pentium da Intel. é de longe o compilador mais utilizado pelos sistemas GNU/Linux. o GCC é um dos melhores e mais completos compiladores existentes. Antes de utilizar o pacote com a atualização.. $ patch -p0 < [ATUALIZAÇÃO]. por serem muitas vezes desenvolvidos em C. O GCC encontra-se disponível por padrão em praticamente todas as distribuições GNU/Linux. além de inúmeras outras qualidades. onde o mais famoso (e largamente utilizado) é o GNU C Compiler. é utilizado para a construção dos arquivos que irão compor o corpo do programa em si.. os quais poderão ser baixados normalmente como um arquivo comum. Na compilação dos programas. Patch O comando patch é utilizado para atualizar um “antigo” programa empacotado no formato de código-fonte. Os pacotes de atualização possuem a extensão . Para isto existe o comando make. que por sua vez necessita de uma atualização. Os motivos desta atualização poderão ser diversos: correção de erros. Erivelton Rodrigues Nunes satisfazer suas necessidades. Ele é indispensável para a compilação da grande maioria dos programas desenvolvidos para sistemas GNU/Linux. 61 . deveremos copiá-lo para o diretório-raíz onde se encontra o código-fonte do programa original e dentro deste. etc.. Compiladores Existem diversos compiladores desenvolvidos pelo Projeto GNU. utilizar as seguintes sintaxes: Para atualizar um pacote.diff ___________________________________________________________________________ Pág. por exemplo. Gnu C Compiler Conhecido popularmente como GCC. $ patch -p0 --dry-run [ATUALIZAÇÃO].diff Para testar se a operação foi realizada normalmente. Suporta C. Em algumas existirão compiladores condicionados para serem utilizados especificamente em algumas arquiteturas específicas.. como também no Windows.diff. $ patch -p0 -R < [ATUALIZAÇÃO].AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Diversos Binutils Este pacote contém um conjunto de ferramentas para a manipulação de arquivos binários nos sistemas GNU/Linux. compatibilidade.. O comando make realiza a compilação propriamente dita dos programas os quais desejamos instalar. C++ e Objetive-C..

• Para pacotes compactados no formato ZIP (extensão .Z). $ cd [NOME DO DIRETÓRIO CRIADO] ___________________________________________________________________________ Pág.tar.gz $ tar -xpvf [NOME DO PACOTE].gz .. A extensão .zip Após a realização dos passos demonstrados. como nos CD-ROMs que possuem o código-fonte dos aplicativos e outros dispositivos de armazenamento (cópia de segurança). $ tar -xpZvf [NOME DO PACOTE]..tar.. para descompacta-los.tar • Para pacotes compilados com o Bzip2 (extensão . Para pacotes compactado com o gzip (extensão .tar. ou. 62 . informando ao empacotador que o arquivo à ser desempacotado foi compactado pelo utilitário compress.tar.tar..gz ou .. enquanto o complemento informa que o pacote gerado foi compactado com o gzip (.bz2)..tar.tar.. normalmente é criado um diretório com o nome do programa e o conteúdo do código-fonte desempacotado. porém existe a possibilidade de se obter o pacote do código-fonte compactado com outros utilitários menos conhecidos: • Para pacotes compactados com o compress (extensão . Agora basta apenas entrar neste diretório.tar Observem a utilização do parâmetro Z em maiúsculo.tar. ou. $ tar -xpjvf [NOME DO PACOTE]. $ gunzip [NOME DO PACOTE]..tar. abra um terminal e proceda da seguinte forma. Descompactação Do Código-Fonte O código-fonte geralmente se encontra empacotado e compactado em um único arquivo que pode ter a extensão ... Basta apenas baixá-los e copiá-los para a máquina onde você deseja instalar ou obtê-los de diferentes locais.bz2 $ tar -xpvf [NOME DO PACOTE]..gz) ou Bzip2 (. $ bunzip2 [NOME DO PACOTE].Z $ tar -xpvf [NOME DO ARQUIVO].tar.tar.. $ tar -xpzvf [NOME DO PACOTE]...tar. Erivelton Rodrigues Nunes Obtenção do Código-Fonte Geralmente você obtém o código-fonte dos programas ou drivers desejados na página do desenvolvedor.bz2).AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.Z ..bz2 .gz). ou...bz2.tar...zip): $ unzip [NOME DO PACOTE]..tar informa que o código fonte encontrase empacotado pelo utilitário TAR.tar Estes são os compactadores mais comuns utilizados no sistema GNU/Linux. $ compress -d [NOME DO ARQUIVO].

.. 63 ........... Instalação do pacote compilado... A Configuração. bem como as definições gerais utilizadas durante a execução do script de configuração. Para isto temos à disposição a opção make clean para limpar (apagar) os arquivos gerados durante o processo de compilação..../configure make make install Funções Script responsável para detecção das pendências e geração de relatórios.. # ... talvez seja necessária a limpeza da estrutura do diretório com o código-fonte. Erivelton Rodrigues Nunes Local de Armazenamento Conforme a recomendação técnica da norma FHS...... mas nada o impede de armazená-lo em qualquer outro lugar.. A partir daí..... # make clean Este processo somente se faz necessário quando houver necessidade de reutilizar o códigofonte para realizar novas compilações ou caso tenha ocorrido algum erro em alguma compilação prévia (e depois solucionada).... Compilação e Instalação do Pacote Para compilar o pacote..AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.. Ferramenta de automação necessária para a compilação do código-fonte..... é só digitar os seguintes comandos e aguardar algumas instruções do processo de compilação... já o make install somente poderá ser utilizado com os privilégios do superusuário. chamados makefile...../configure . # make install Os comandos ..... # make ... existem 3 comandos à serem utilizados: Comandos .... de acordo com as nossas necessidades..... os pacotes que contém o código-fonte dos programas deverão estar armazenados no diretório /usr/local/src – pois não pertencem à distribuição –.... de acordo com o pacote... pois é justamente ele que irá realizar a instalação propriamente dita.. ___________________________________________________________________________ Pág. Limpando o Diretório do Pacote Compilado Após a realização da compilação e instalação de um programa./configure e make poderão ser rodados com permissões de usuários comum. baseando-se nas instruções do makefile.

entre outros. a utilização. uma das mais importantes etapas do processo de compilação é a leitura e o entendimento de toda sua documentação. Readme / Install Instruções básicas sobre o programa e o procedimento correto para a instalação. # make uninstall opção make uninstall. Nele poderemos consultar para saber se uma aplicação é disponível sob os termos da GNU GPL. Estarão lá as principais informações pertinentes ao programa em questão. Erivelton Rodrigues Nunes Desinstalando um Pacote Compilado Alguns programas possuem a programas compilados no sistema. suas cláusulas. Como requerimento básico. é imprescindível a sua leitura. termos.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. além de encontrar o nome dos criadores do produto. Para ter acesso ao seu conteúdo. pois muitas dos problemas e dificuldades encontrados estão brevemente descritos nestes documentos. a configuração. O Diretório docs Geralmente a maioria dos desenvolvedores quando não disponibilizam a documentação em um arquivo separado ou quando estes possuem um certo grau de complexidade. Apesar de muitas vezes ser descartado. todos os desenvolvedores de programas devem redigir uma documentação de sua aplicação. o qual deverá descrever todos os processos básicos inerentes como os requerimentos básicos. Copyright O documento COPYRIGHT contém trechos sobre o licenciamento de partes ou aspectos importantes do programa. Nos programas de código-aberto distribuídos livremente. a instalação. necessário para desinstalar os Conteúdo da Documentação Ao contrário do que muitos pensam. basta utilizarmos qualquer aplicação para a sua leitura. geralmente armazenam diversos documentos (arquivos) em um subdiretório chamado docs. geralmente se encontra uma licença GPL ou compatível. 64 . restrições. Muitas vezes são inclusos os dois arquivos distintos: o README para as instruções gerais e o INSTALL para as instruções com enfoque exclusivo para a instalação. ___________________________________________________________________________ Pág. ou pelo menos das partes relevantes do texto. diversas recomendações e muitas outras informações necessárias para o bom uso do programa. Copying O documento COPYING contém a licença do programa.

/configure --help `configure' configures this package to adapt to many kinds of systems. Neste caso. Por exemplo. etc./configure Conforme dissemos anteriormente. existirão casos em que. Funcionalidades Detalhadas Apesar de serem necessárias apenas a utilização da seqüência de comandos padrões para a compilação clássica na maioria das circunstâncias. entre outros. # . Apesar de ser dispensável sua leitura. muitos possuem parâmetros específicos que deverão ser habilitados e/ou desabilitados na própria linha de comando. estão especificados neste documento. teremos que recorrer à utilização de intervenções específicas para propósitos distintos. Poderemos encontrar nestas documentações as principais implementações. Erivelton Rodrigues Nunes Release Todas as implementações. consultem as instruções contidas nos arquivos README ou INSTALL. suportes. seja para habilitar um suporte ou uma funcionalidade extra. ___________________________________________________________________________ Pág. seguem: . melhorias e correções do programa são especificados neste documento. ora existirão outros comandos à mais. o MPlayer é um dos programas que necessitam de diversos parâmetros especificados nesta linha. Para obter maiores informações dos parâmetros disponíveis. que é praticamente um histórico de todas as versões de sua existência. Quando houver necessidade de se consultar se um determinado programa suporta uma tecnologia ou inovação. ora os mesmos comandos necessitarão de um parâmetro extra. a seqüencia de comandos muito provavelmente será modificada para atender à tais circunstâncias. Changelog As principais mudanças realizadas ao longo da existência do programa são comentados brevemente neste documento. Segue um pequeno exemplo das opções disponíveis por padrão: # . além de correções de erros e ainda os principais motivos do porque um programa X não funciona com a versão da biblioteca Y. para instalarmos determinados aplicativos.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Dos comandos e parâmetros geralmente mais utilizados. seus autores sentirão-se lisongeados em serem conhecidos. 65 . seja para adaptar o programa de acordo com as nossas necessidades. o script configure é o responsável pela construção dos Makefiles para que o compilador construa os binários à partir de suas especificações./configure [PARÂMETROS] Apesar da maioria dos programas utilizarem esta opção padrão para a configuração dos pacotes à serem compilados. que vão desde autores à colaboradores. ou utilizem o parâmetro --help na própria linha de comando. é neste arquivo em que deverão ser consultadas estas informações Credits Todos os devidos créditos..

caso ocorra algum erro durante a utilização deste comando...'] Outra situação bastante comum é o interesse do usuário em instalar o programa em locais específicos. $ . Procurem sempre consultar a documentação do programa para evitar maiores inconvenientes. ___________________________________________________________________________ Pág./configure --prefix=/[LOCALIZAÇÃO] Por padrão. Defaults for the options are specified in brackets. os programas compilados são instalados na árvore /usr/local.. Configuration: -h. estas informações serão exibidas no programa. --version display version information and exit -q. porém sua localização pode ser modificada conforme as especificações do parâmetro --prefix=. pois não necessita parâmetro extra para a sua utilização – basta apenas digitar na linha de comando.. To assign environment variables (e.. $ make de nenhum . Para isto bastará a adição do parâmetro..cache' -n. CFLAGS. make deps / make depend Estes comandos possuem a finalidade de checar as pendências gerais do sistema para a satisfação do programa que se deseja instalar.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.. 66 . --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V.. mas alguns programas necessitam destes parâmetros. specify them as VAR=VALUE. --config-cache alias for `--cache-file=config. Erivelton Rodrigues Nunes Usage: . [VAR=VALUE].). Em contrapartida. make O comando make é o mais simples de utilizar. --quiet... existirá uma grande impossibilidade deste problema ser resolvido. São poucos. --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or `. See below for descriptions of some of the useful variables. CC. --silent do not print `checking../configure [OPTION].. Caso falte algum pacote ou modificação necessária.g... para iniciar todo o processo de compilação. onde [LOCALIZAÇÃO] será o novo diretório destino...' messages --cache-file=FILE cache test results in FILE [disabled] -C.

Outro grande inconveniente está nas versões das pendências e bibliotecas necessárias. Será então gerado um pacote compilado no formato desejado. porém com um pequeno agravante: nem todos os programas possuem esta opção para realizar a sua desinstalação. remove (“limpa”) todos os arquivos gerados pela compilação anterior e que se mantiveram presentes na estrutura de diretórios do código-fonte. sendo necessário a atualização destes para a obtenção de bons resultados. Somente poderá ser utilizado depois de se ter obtido sucesso com as etapas anteriores. Aplicativos & Utilitários Praticamente todos os aplicativos e utilitários possuem requerimentos de bibliotecas e APIs para serem corretamente instalados. Erivelton Rodrigues Nunes make install Diferente dos comandos anteriores. ocupando desde vários à centenas de megabytes. Caso tenham que intervir novamente no gerenciamento do programa instalado. o comando make install somente é executado pelo superusuário. e é o principal responsável pela correta instalação do programa. O espaço utilizado pelos arquivos gerados no processo de compilação tende à ser grande. e para obter informações sobre eles. Sem grandes mistérios. Observações Importantes para o Processo de Compilação Manutenção do Código-Fonte À salvo algumas situações especiais. o diretório com o código-fonte do aplicativo após devidamente compilado e instalado. Drivers. Antes de realizar qualquer instalação. Muitas vezes os pacotes que compõe a distribuição se encontram desatualizados para os aplicativos que desejamos instalar. Módulos e Kernel Dentre as necessidades mais importantes para a compilação de drivers e módulos está na ___________________________________________________________________________ Pág. que possibilitará utilizar as ferramentas de gerenciamento de pacotes do sistema e com isto realizar sua remoção tranqüilamente. A melhor forma de suprir esta deficiência é a execução de utilitários para o gerenciamento de programas.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. 67 . poderá ser removido. como o Checkinstall ao invés de utilizar o comando make install. make clean Conforme dito anteriormente. consulte sua página eletrônica ou a documentação que acompanha o código-fonte do aplicativo. certifique-se de que a opção make uninstall encontra-se disponível no programa à ser compilado. reutilizem as opções disponíveis do código-fonte empacotado ou as ferramentas nativas do sistema para gerenciamento de programas. para evitar este tipo de inconveniente. make uninstall Sua função é desinstalar os programas compilados (inverso de make install).

tanto o do sistema como o do próprio programa. será indispensável a manutenção do pacote modutils. existe a necessidade da edição de parâmetros em arquivos de configuração. leitores de DVD. ___________________________________________________________________________ Pág. Diversos periféricos necessitam da criação. Procurem se certificar de que os pacotes kernel-headers e kernel-source se encontram instalados no sistema. edição e modificações na permissão de acesso de seus respectivos dispositivos. CD-R/CD-RW. do cabeçalho) previamente instalado. em comparação ao processo de compilação dos programas e drivers. Além da existência de inúmeros parâmetros. Erivelton Rodrigues Nunes manutenção do código-fonte do kernel (e em alguns casos. que felizmente se encontra em todas as distribuições GNU/Linux. etc. existem uma série de requerimentos necessários para que possamos garantir a obtenção de excelentes resultados. além de ser instalado por padrão. Para o carregamento e descarregamento dos módulos compilados. onde deverão ser baixados e instalados. como é o caso das placas de som. Com menor incidência.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Dependendo da distribuição em uso. 68 . fax-modem. estes pacotes não se encontram no CD-ROM de instalação. Por último. o processo de compilação do kernel de sistemas GNU/Linux é bem diferenciado.

Erivelton Rodrigues Nunes MANIPULAÇÃO DE ARQUIVOS E DIRETÓRIOS “A resposta branda desvia o furor.. você utilizará uma pasta para guardar cada tipo de documento. Para mudar esse comportamento. Exemplo B: # pwd /root # mkdir dir2 # mkdir dir2/gama/beta mkdir: cannot create directory `dir2/gama/beta/teste': No such file or directory # mkdir -p dir2/gama/beta/teste # ls dir2/gama/beta/ teste Primeiro criamos o diretório dir2 dentro da pasta atual (/root). Podem ser criados mais de um diretório com um único comando.] Exemplo A: # mkdir dir1 Cria um diretório chamado dir1 dentro do diretório atual. sem sucesso. Sintaxe: mkdir [parâmetro] <diretorio> [<outro diretorio>] [. Em seguida tentamos criar o diretório dir2/gama/beta. 69 .1 A seguir veremos alguns comandos utilizados para manipular arquivos e diretórios. tarefa comum no dia-a-dia de um administrador de sistemas Linux. pois o mkdir por padrão só cria um diretório se o anterior já existir. Ele pode ser entendido como uma pasta onde você guarda seus papéis (arquivos).. utilizamos a opção -p (parentes). da mesma forma você pode criar um diretório vendas para guardar seus arquivos relacionados com vendas naquele local.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Como uma pessoa organizada. Exemplo: # mkdir /tmp/teste /tmp/teste2 /tmp/teste3 ___________________________________________________________________________ Pág. que cria os diretórios pais caso eles não existam. Um diretório nada mais é do que um arquivo especial contendo a lista de outros diretórios e arquivos nele contidos. mas a palavra dura suscita a ira” Provérbios 15. mkdir Utilizamos o comando mkdir com a única finalidade de criar diretórios no sistema.

/fedora2/disc1/FC2-i386-disc1.desktop |-.letter |-.../fedora2/disc2 | | `-../iptraf./fedora2 | |-. Lista somente diretórios. Mostra grupo dono dos arquivos/diretórios./dir2/gama | `-. Mostra caminho completo dos diretórios e arquivos.. Mostra usuário dono dos arquivos/diretórios..] ___________________________________________________________________________ Pág. inclusive ocultos./fedora2/disc1 | | `-. Habilita saída colorida.iso | `-..iso | |-... Erivelton Rodrigues Nunes tree Exibe a árvore de diretórios e seu conteúdo em um formato hierárquico./dead./Desktop | `-./fedora2/disc2/FC2-i386-disc2.log 10 directories../dir2 | `-. Sintaxe: rmdir <diretorio> [<outro diretorio>] [.. Mostra permissões dos arquivos/diretórios./dir2/gama/beta/teste |-... porém de grande ajuda./fedora2/disc4/FC2-i386-disc4. 70 . Desabilita a Indentação./Desktop/starthere.. É um comando simplório. Não possui argumentos Sintaxe: tree [opções] <diretório> Tabela de parâmetros -a -d -f -i -C -p -u -g Exemplo: Lista todos os arquivos./dir2/gama/beta | `-. O diretório a ser removido deve estar vazio..iso | |-.iso |-.. 8 files rmdir Remove um diretório do sistema.../historico `-./fedora2/disc3 | | `-... |-./fedora2/disc3/FC2-i386-disc3..AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. # tree -f ./fedora2/disc4 | `-.

Remove arquivo(s) e/ou diretório(s) sem perguntar. (Perigoso se associado com o comando $ mkdir -p ~/exercicios/rm. Exemplo B: $ cd / $ rm -rfv ~/exercicios/rm removed directory: `/home/usuario/exercicios/rm' Remove o diretório rm...] Tabela de parâmetros -r -i -v -u -f Exemplo A: Remove Arquivos e Diretórios recursivamente. Também pode ser usado para apagar diretórios e sub-diretórios.txt $ rm -iv teste.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. como no exemplo abaixo: Exemplo: # rmdir /tmp/teste rm Apaga arquivos. Copia somente se o arquivo de origem é mais novo que o arquivo de destino ou quando o arquivo de destino não existe. criado no Exemplo A. Também pode ser usado para criar arquivos vazios. 71 . Erivelton Rodrigues Nunes É necessário estar um nível acima do(s) diretório(s) que será(ão) removido(s). Mostra os nomes dos arquivos que estão sendo movidos. touch Muda a data e hora que um arquivo foi criado. Por exemplo. para remover o diretório /tmp/teste você deve estar fora deste diretório e executar o comando. Necessário quando se quer remover algum diretório não-vazio Pergunta antes de remover.txt no diretório atual. Sintaxe: rm [parâmetro] <arquivo ou diretorio> [<outro arquivo ou diretório> [. cd ~/exercicios/rm $ touch teste. Força a remoção.txt rm: remove arquivo comum vazio `teste.txt' Apaga o arquivo teste.txt'? s removed `teste. Sintaxe: touch [parâmetros] <arquivo[s]> ___________________________________________________________________________ Pág.

1 enunes uniararas 0 2006-10-27 17:22 arquivo2 -rw-r--r-. Observe a data de criação dos arquivos. DD=dia. 72 .1 enunes uniararas # touch -t 0311201245 arquivo1 # ls -l arquivo1 -rw-r--r-..1 enunes uniararas -rw-r--r-. Os ano com dois dígitos no começo são opcionais (AA). Copia ORIGEM para DESTINO.. Criados 3 arquivos vazios... Exemplo B: # ls -l arquivo1 -rw-r--r-.1 enunes uniararas 0 2006-10-27 17:22 arquivo3 Utiliza a hora especificada (MM=mês. Sintaxe: cp [OPÇÃO]. Exemplo C: # ls -l -rw-r--r-. Modifica a data de modificação do arquivo. ORIGEM DESTINO cp [OPÇÃO].1 enunes uniararas # touch -r arquivo1 arquivo3 # ls -l -rw-r--r-...1 enunes uniararas -rw-r--r-. Modifica a data de acesso do arquivo. --target-directory=DIRETÓRIO ORIGEM. <DIRETÓRIO> cp [OPÇÃO]. ORIGEM.. caso o arquivo não exista. ou múltiplas ORIGENS para DIRETÓRIO. às 12:45.1 enunes uniararas 0 2003-11-20 12:45 arquivo1 0 2006-10-27 17:22 arquivo2 0 2006-10-27 17:22 arquivo3 0 2003-11-20 12:45 arquivo1 0 2006-10-27 17:22 arquivo2 0 2003-11-20 12:45 arquivo3 Agora utilizamos o touch para modificar a data de criação de arquivo3 com base em arquivo1. mm=minuto). hh=hora.1 enunes uniararas 0 2006-10-27 17:22 arquivo1 0 2003-11-20 12:45 arquivo1 Continuando o exemplo anterior.1 enunes uniararas -rw-r--r-. Utiliza um arquivo de referencia de data para o arquivo alvo.1 enunes uniararas 0 2006-10-27 17:22 arquivo1 -rw-r--r-. ___________________________________________________________________________ Pág. cp Copia arquivos..1 enunes uniararas -rw-r--r-.. modificamos a data de criação de arquivo1 para dia 20 de novembro de 2003. Não cria um arquivo vazio. Erivelton Rodrigues Nunes Tabela de parâmetros -t [AA]MMDDhhmm -a -c -m -r arquivo_de_referencia Exemplo A: # ls # touch arquivo1 arquivo2 arquivo3 # ls -l total 3 -rw-r--r-..AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.

os arquivos de origem serão copiados para dentro do diretório. Exemplo B: $ mkdir subdir $ cp -var /tmp/arquivos subdir/ `/tmp/arquivos' -> `subdir/arquivos' `/tmp/arquivos/arquivo1' -> `subdir/arquivos/arquivo1' `/tmp/arquivos/arquivo2' -> `subdir/arquivos/arquivo2' `/tmp/arquivos/arquivo3' -> `subdir/arquivos/arquivo3' $ cp -var /tmp/arquivos . ele deve ser especificado (Lembrete: “. Tabela de parâmetros -i -r -v -a -s -l -p -u Pergunta antes de substituir um arquivo existente. -x Antes de prosseguir./arquivos/arquivo1' `/tmp/arquivos/arquivo2' -> `. Cópia de atualização. Podem ser especificados mais de um arquivo para ser copiado e também pode-se usar “Coringas” como ? e *. Faz cópia recursiva dos arquivos. na verdade. vamos criar o ambiente p/ os exercícios: Ambiente: $ mkdir -p ~/exercicios/cp $ cd ~/exercicios/cp $ mkdir /tmp/arquivos $ touch /tmp/arquivos/arquivo{1. Cria link simbólico no destino ao invés copiar o arquivo em si. Se o destino for um diretório. Mantém os atributos do arquivo. Mostra nomes dos arquivos enquanto copia. Erivelton Rodrigues Nunes ORIGEM é o arquivo que será copiado. Não copia arquivos que estejam localizados em partições (Pontos de Montagem) diferentes. `/tmp/arquivos' -> `./arquivos' `/tmp/arquivos/arquivo1' -> `. O cp não copia links simbólicos por padrão. Copia todos os tipos de arquivos. Cria link (hardlink) no destino ao invés copiar o arquivo em si.” significa o diretório atual). 73 . se possível. DESTINO é o caminho ou nome de arquivo onde será copiado. inclusive links simbólicos.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.2. Copia somente se o arquivo de origem é mais novo que o arquivo de destino ou quando o arquivo de destino não existe./arquivos/arquivo2' ___________________________________________________________________________ Pág.3} $ ls /tmp/arquivos arquivo1 arquivo2 arquivo3 Exemplo A: $ ls $ cp /tmp/arquivos/arquivo1 . Mesmo que o DESTINO seja a pasta atual. $ ls arquivo1 Efetuada uma simples cópia do arquivo arquivo1 p/ o diretório atual (~/exercicios/cp).

porém com o destino sendo o diretório atual.arquivo1 |-. esse diretório também é criado. Exemplo C: $ ls arquivo1 arquivos subdir erivelton@nunes:~/exercicios/cp$ cp -i /tmp/arquivos/arquivo1 . ___________________________________________________________________________ Pág.arquivo3 `-.arquivo2 | `-.arquivo3 3 directories. Depois faz a mesma cópia./arquivos/arquivo3' $ tree .AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. $ ls arquivo1 arquivo2 arquivo3 arquivos subdir Copiado o arquivo arquivo1 para o diretório local. A opção -i garante confirmação antes de sobrescrever um arquivo. cp: sobrescrever `. porém já existia um arquivo de mesmo nome.subdir `-. o arquivo arquivo1 foi sobrescrito sem pedir confirmação. mv Move ou renomeia arquivos e diretórios. 7 files Copia recursivamente todo o conteúdo de /tmp/arquivos para subdir/ (recém-criado). |-.arquivos |-. como pode ser visto na saída do comando tree. Depois foi utilizado um coringa (?) para copiar 3 arquivos de uma só vez para o diretório atual.arquivo1 | |-. como não foi especificada a opção -i. Sintaxe: mv [parâmetro] [origem] [destino] Tabela de parâmetros -f -i -v -u Substitui o arquivo de destino sem perguntar. Erivelton Rodrigues Nunes `/tmp/arquivos/arquivo3' -> `.arquivo1 |-. Copia somente se o arquivo de origem é mais novo que o arquivo de destino ou quando o arquivo de destino não existe. assim como toda a estrutura anterior. Mostra os nomes dos arquivos que estão sendo movidos. O processo é semelhante ao do comando cp mas o arquivo de origem é movido de seu local original para o novo local. 74 .arquivo2 `-. mas como estamos copiando uma estrutura completa de um diretório.arquivos | |-./arquivo1'? s $ cp /tmp/arquivos/arquivo? . e dessa vez. Pergunta antes de substituir (padrão).

Repare que o comando mv age de forma idêntica ao cp.txt $ cat teste1. 75 .txt 1 teste1 $ cat -n teste1. Numera todas as linhas da saída. cd ~/exercicios/cat $ cat > teste1. Depois utilizamos o ___________________________________________________________________________ Pág.txt teste2.txt' -> `/tmp/uniararas.txt' removed `uniararas.txt teste2 $ ls teste1.txt. Exemplo B: $ mv -v uniararas.txt. cat Concatena e exibe arquivos.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Erivelton Rodrigues Nunes Exemplo A: $ mkdir -p ~/exercicios/mv. porém ele remove o arquivo logo após a cópia. devemos teclar [CONTROL]+[D] em uma linha abaixo da última contendo texto. cd ~/exercicios/mv $ touch teste.txt $ mv teste. Numera apenas as linhas não-vazias da saída.txt 1 teste1 2 teste2 $ cat -n test* 1 teste1 2 teste2 O primeiro comando cat redireciona a palavra digitada teste1 para o arquivo teste1.txt.txt para dentro do diretório /tmp.txt Muda o nome do arquivo teste.txt teste1 $ cat -n teste1.txt $ ls uniararas.txt para uniararas. $ mkdir -p ~/exercicios/cat.txt' Move arquivo uniararas. Exibe caracteres não-imprimíveis. Exibe caracteres de tabulação.txt uniararas. Sintaxe: cat [parâmetro] <diretorio ou arquivo> Tabela de parâmetros -A -b -n -v -t Exemplo: Exibe todos os caracteres especiais. Para que o texto digitado vá definitivamente p/ o arquivo.txt teste2.txt teste1 $ cat > teste2. O mesmo é feito com teste2.txt /tmp `uniararas.

-d Cria Hardlink para diretórios. <diretório> Tabela de parâmetros -s Cria Link simbólico. -v Mostra o nome de cada arquivo ao fazer o link. <destino> [link] ln [parâmetro].AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. O link é um mecanismo que faz referência a outro arquivo ou diretório em outra localização (Como os atalhos no Microsoft Windows®)..... ___________________________________________________________________________ Pág. Antes de entender os links. Sintaxe: tac [parâmetro] <diretorio ou arquivo> Exemplo: $ mkdir -p ~/exercicios/tac.. Somente o root pode usar essa opção.txt linha1 linha2 linha3 $ tac teste. tac Mostra o conteúdo de um arquivo (como o cat) em ordem inversa. ou seja. as últimas linhas primeiro. devemos compreender um termo sobre os sistemas de arquivos: Inodes. cd ~/exercicios/tac $ cat > teste. Repare na utilização do parâmetro -n. Sintaxe: ln [parâmetro] [origem] [link] ln [parâmetro]. Erivelton Rodrigues Nunes comando cat para visualizar o conteúdo do arquivo teste1. INODES Todo arquivo criado no sistema de arquivos recebe um número que o identifica unicamente dos demais “no mesmo sistema de arquivos (partição).. 76 . <destino>.txt linha3 linha2 linha1 ln Cria links para arquivos e diretórios no sistema. É possível saber o inode de um arquivo específico com a opção -i do comando ls. A esse número damos o nome de inode.txt.

./dir2 $ ls -l total 0 lrwxrwxrwx 1 enunes uniararas 13 2006-10-29 09:42 dir2 -> .txt 554844 teste1. não é criado um arquivo novo no sistema de arquivos como nos links simbólicos./. Se movermos o link de lugar./. se fizermos um hardlink de um ___________________________________________________________________________ Pág./. o que confirma que são realmente arquivos diferentes.. Exemplo A: $ ln -s arquivo1 link1 $ ls -li total 8 554848 -rw-r--r-. e sim adicionada uma nova referência no diretório atual que aponte o link para o “mesmo inode” do arquivo original. Dessa forma. inclusive para diretórios./.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Links Simbólicos O link simbólico cria um arquivo especial no disco (do tipo link) cujo conteúdo é o caminho para chegar até o arquivo alvo (isto pode ser verificado pelo tamanho do arquivo do link. cd ~/exercicios/ln $ touch arquivo1 $ mkdir -p dir1/sub1/sub2 dir2/ Esses comandos criarão o ambiente necessário para aprendermos sobre links.txt é 554844. Repare que ele aparece referenciado na saída do comando ls -li. o inode do arquivo teste1. Ambiente: $ mkdir ~/exercicios/ln. 77 . Constate também que o número dos inodes dos arquivos “linkados” diferem. o link pode perder referência (apontar para um arquivo inexistente) e se tornar um “link quebrado”. Hardlinks A grande diferença entre os Links Simbólicos e os Hardlinks é a forma como eles referenciam o arquivo “linkado”. bem menor do que o arquivo de destino). Exemplo B: $ cd dir1/sub1/sub2/ $ ln -s .1 enunes uniararas 0 2006-10-28 17:29 arquivo1 439830 drwxr-xr-x 3 enunes uniararas 4096 2006-10-28 17:30 dir1 439833 drwxr-xr-x 2 enunes uniararas 4096 2006-10-28 17:30 dir2 554850 lrwxrwxrwx 1 enunes uniararas 8 2006-10-28 17:41 link1 -> arquivo1 Utilizamos o ln para criar um link simbólico (opção -s) do arquivo arquivo1 para link1. No caso dos Hardlinks. Use a opção -s para criar links simbólicos..txt Nesse exemplo../dir2 Repare a possibilidade de se criar links utilizando caminhos relativos. Erivelton Rodrigues Nunes Exemplo: $ ls -i teste1.. Existem 2 tipos de links: Links Simbólicos e Hardlinks..

Erivelton Rodrigues Nunes arquivo. Isso significa que são exatamente os mesmos arquivos. e sim uma nova referência ao mesmo inode do arquivo linkado. 78 . ___________________________________________________________________________ Pág.1 enunes uniararas 0 439830 drwxr-xr-x 3 enunes uniararas 4096 439833 drwxr-xr-x 2 enunes uniararas 4096 554850 lrwxrwxrwx 1 enunes uniararas arquivo1 $ ln arquivo1 hardlink1 $ ls -li total 8 554848 -rw-r--r-. Não é possível criar HardLinks para arquivos que não se encontrem no mesmo sistema de arquivos (partição). não teremos dois arquivos “diferentes” no sistema.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. o que torna o link exatamente o mesmo arquivo que o original. pois o arquivo só será excluído do sistema de arquivos quando o último link também for. Exemplo: $ cd ~/exercicios/ln/ $ ls -li total 8 554848 -rw-r--r-.2 enunes uniararas 0 554850 lrwxrwxrwx 1 enunes uniararas arquivo1 2006-10-28 17:29 arquivo1 2006-10-28 17:30 dir1 2006-10-28 17:30 dir2 8 2006-10-28 17:41 link1 -> 2006-10-28 17:29 arquivo1 2006-10-28 17:30 dir1 2006-10-28 17:30 dir2 2006-10-28 17:29 hardlink1 8 2006-10-28 17:41 link1 -> Criado um link do arquivo arquivo1 para hardlink1. Repare que o inode deles são idênticos (destacados em negrito).2 enunes uniararas 0 439830 drwxr-xr-x 3 enunes uniararas 4096 439833 drwxr-xr-x 2 enunes uniararas 4096 554848 -rw-r--r-.

Nunes. E finalmente. Segue um exemplo de uma linha do arquivo /etc/passwd : erivelton:x:1000:1000:Erivelton R. Os campos 3 e 4 Mostram o UID e GID do usuário. e armazena informações adicionais sobre o usuário. Informações que podem ser o Nome Completo do Usuário. O quinto campo é chamado GECOS. Identificadores de Usuários e Grupos (UID e GID) No GNU/Linux. respectivamente.1 Neste capítulo aprenderemos a utilizar as ferramentas para gerenciar usuários e grupos do sistema. Nesse caso o shell do usuário é /bin/bash.. O caractere “:” divide os campos de cada linha. Sempre quando esse campo contiver apenas a letra x. significa que o sistema está utilizando senhas sombreadas (Shadow Passwords). e sim no /etc/shadow. Para que um usuário seja válido no sistema. não está armazenando as senhas nesse arquivo. telefones. o sétimo e último campo define qual será o interpretador de comandos (shell) do usuário. e o ser estimado é melhor do que prata e ouro” Provérbios 22. assim como no Unix.:/home/erivelton:/bin/bash O primeiro campo (erivelton) é o nome do usuário. No caso dos grupos..” dentro do campo. um por linha. o diretório base do usuário é /home/erivelton. O sexto campo define qual será o diretório base do usuário (diretório home). etc. 79 . Esses arquivos são mostrados a seguir. O segundo campo (x) é a senha criptografada do usuário. será executado o comando /bin/bash. onde cada linha se divide em sete campos. ___________________________________________________________________________ Pág. No exemplo. além de fornecer outras informações. número da sala.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Erivelton Rodrigues Nunes GERENCIAMENTO DE USUARIOS E GRUPOS “Mais vale o bom nome do que as muitas riquezas. Esses sistemas utilizam arquivos texto para “traduzir” o UID e GID para um nome inteligével para humanos. ou seja. /etc/passwd Esse arquivo contém uma lista em modo texto de todos os usuários cadastrados no sistema. Quando o usuário erivelton efetuar login no sistema. visto mais adiante. esse número recebe o nome de GID (Group Identificator). divididas com “. esse número é chamado de UID (User Identificator). No caso dos usuários. os usuários e grupos do sistema possuem um identificador numérico que os diferenciam dos demais. Tarefa crucial em um ambiente de administração Linux. é preciso que hajam registros p/ eles nesses arquivos. devido a isso que é aberto um bash logo após o login.

___________________________________________________________________________ Pág. erivelton:$1$cTdn0tUz$Ck447Zu3nMzo1bPXWQq3g.beltrano O primeiro campo é o nome do grupo. porém contém 9 campos. O último campo. dos usuários que também pertencem a esse grupo. O /etc/shadow segue o mesmo formato de divisão do /etc/passwd.fulano. Esse arquivo também segue o mesmo formato que o /etc/passwd. 6 – Com quantos dias de antecedência o sistema deve avisar que a senha irá expirar. 9 – Esse último campo está reservado para uso futuro. Senhas Sombreadas são usadas nas distribuições atuais e a muito tempo. 5 – Tempo máximo de dias que o usuário pode ficar com a mesma senha. é a lista. 4 – Tempo mínimo de dias que a senha deve permanecer inalterada. o segundo a senha do grupo. seguido do GID do grupo.:12708:0:99999:7::: Os campos estão divididos da seguinte forma: 1 – Nome do usuário: 2 – Senha criptografada.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Erivelton Rodrigues Nunes /etc/shadow Esse arquivo somente é utilizado quando Senhas Sombreadas (Shadow Passwords) estão um uso no sistema. 8 – Uma data para a expiração automática da conta. Utiliza o mesmo formato do campo 3. quase sempre vazio. 3 – Data da última troca de senha (Contada em dias corridos desde 01/01/1970). mas cada linha contém apenas 4 campos. 80 . 7 – Número de dias de inatividade em que o sistema deve considerar o usuário bloqueado. pois oferecem mais segurança guardando a senha em um arquivo que não pode ser lido por usuários comuns no sistema (o /etc/passwd pode ser lido por todos). Conforme abaixo: uniararas:x:1410:erivelton. /etc/group É neste arquivo que são armazenados todos os grupos armazenados no sistema. separada por vírgula.

Adicionar as entradas manualmente editando esses arquivos é uma tarefa difícil e perigosa. Se omitido.. que cria um grupo com o mesmo nome do usuário. mas o grupo no qual informarmos já deve previamente ___________________________________________________________________________ Pág.. separados por vírgula. Erivelton Rodrigues Nunes /etc/gshadow O arquivo gshadow armazena informações de administradores e senhas de grupos. recebe o valor de *. como não está definida. Gerenciamento de usuários Existem diversas formas de gerenciarmos usuários do sistema. O segundo é a senha do grupo. games:*:: O primeiro campo é o nome do grupo. o sistema utiliza o -u uid próximo disponível. pois está mais propensa a erros. Informando esse parâmetro estamos evitando que o sistema crie um grupo no esquema UPG. no qual somente determinado usuário pertence ao grupo.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Sintaxe: useradd useradd [-u uid [-o]] [-g grupo] [-G grupo-secundario. Veremos esses comandos a seguir. Tabela de parâmetros Informa qual deve ser o UID do usuário. /etc/group e /etc/gshadow. Adicionando usuários com useradd Utilizamos o comando useradd para criar um novo usuário no sistema.] [-d home] [-s shell] [-c comentario] [-m [-k template]] [-f inativo] [-e expiração ] [-p senha] usuário -D [-g grupo] [-b base] [-s shell] [-f inativo] [-e expiração ] O useradd trabalha de dois modos. e serve para visualizar e definir os padrões para criação dos usuários. Algumas distribuições aderem ao sistema criado pela RedHat. O terceiro campo armazena os nomes dos administradores desse grupo (Administradores de grupos serão explicados adiante). -o Permite criar usuário com UID duplicado (Usuário Clonado) -g grupo Especifica qual será o grupo principal do Usuário. chamado UPG (Unix Private Group). O segundo modo é ativado quando a opção -D (Defaults) é habilitada. O último campo te a mesma função do último campo do arquivo /etc/group. O primeiro modo adiciona o usuário com as opções específicas. 81 . Em qualquer uma delas. Por isso existem alguns comandos especificamente designados para gerenciar essas entradas dos respectivos arquivos. o objetivo é gerenciar as entradas adequadas dos arquivos /etc/passwd. /etc/shadow..

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Erivelton Rodrigues Nunes existir. Especifica a quais grupos secundários esse usuário deve pertencer Especifica qual será o diretório base do usuário. Especifica qual será o shell do usuário. Adiciona informações no campo GECOS do arquivo /etc/passwd. O sistema criará um diretório base para o usuário caso ele não exista (comportamento padrão). O conteúdo do novo diretório será exatamente o mesmo que o diretório /etc/skel, que, por sua vez, serve como um diretório de perfil para novos usuários criados no sistema. Especifica uma pasta de template (perfil) alternativa ao /etc/skel para o usuário a ser criado. Essa opção só é válida junto com a opção -m. Especifica o número de dias em que a senha expire até que a conta seja permanentemente desabilitada. O valor 0 expira a senha assim que a conta houver expirado. O valor -1 desabilita essa característica (padrão). Especifica uma data na qual a conta irá expirar. o Formato deve ser AAAA-MM-DD, por exemplo: 2006-11-01 seria 01 de novembro de 2006. Especifica a senha criptografada. Inútil nos dias de hoje, pois existem comandos específicos para gerenciar as senhas. Se utilizada sem nenhum outro parâmetro serve para visualizar os padrões atuais para criação dos usuários. Se ativada em conjunto com as opções -g, -b, -s, -f ou -e é possível modificar o valor padrão de grupo, diretório base (home), shell, inativo e expiração, respectivamente.

-G grupo -d home -s shell -c comentário -m -k template -f inativo -e expiração -p senha

-D

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

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

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

___________________________________________________________________________ Pág. 82

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

Modificamos o grupo padrão para novos usuários para o UID 29, que em nosso sistema referese ao grupo audio.

Definindo senhas com passwd
O comando passwd modifica senhas para contas de usuários e grupos. Um usuário normal somente pode trocar sua própria senha. Somente o superusuário root pode trocar a senha de qualquer usuário no sistema. O passwd também é utilizado para modificar informações sobre a conta de usuário, tais como o nome completo, o shell inicial, data de expiração de senha, etc. Sintaxe:
passwd [-f|-s] [usuario] passwd [-x maximo] [-n minimo] [-w aviso] [-i inativo] usuario passwd {-l|-u|-d|-S|-e} usuario

Tabela de parâmetros Serve para trocar o nome do usuário (campo de comentário -f no arquivo /etc/passwd). Age como o comando chfn, visto adiante. Age como o comando chsh, viso adiante. Serve para modificar o shell do -s usuário -l Trava a conta do usuário. (lock) -u Destrava a conta do usuário. (unlock) -d Deleta a senha do usuário (Deixa em Branco). -S Mostra o status da conta de usuário. (Data de expiração, etc...) -e Expira imediatamente a senha do usuário.

Troca de Senhas
Quando um usuário aciona o comando passwd para trocar a senha, o usuário é questionado a si mesmo quanto a senha atual (caso exista). A senha digitada é então criptografada e comparada com a senha criptografada já existente no sistema. O usuário só tem uma chance de inserir a senha correta. Somente o superusuário root pode trocar senhas sem antes confirmar a anterior, pois isso permite que ele possa redefinir senhas “esquecidas”, por exemplo. Logo após a senha antiga ser validada, informações sobre a idade da senha são verificadas no sistema para definir se o usuário tem permissão de trocar a senha naquele momento. Em caso negativo, o passwd se recusa a trocar a senha. Em caso positivo, o usuário é então questionado sobre a nova senha, que após digitada, é verificada quanto a complexibilidade. No geral, senhas devem consistir em 6 a 8 caracteres incluindo um ou mais do seguinte: – – Letras maiúsculas; Letras minúsculas;

___________________________________________________________________________ Pág. 83

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Erivelton Rodrigues Nunes – – Números de 0 a 9; Caracteres de pontuação (Ex.: ~,. !”)

O passwd irá rejeitar qualquer senha que não atender aos requisitos. Se a senha for aceita, o usuário é então questionado para repetir a mesma senha, que é então comparada com a senha nova para evitar que erros de digitação possam impedir que determinado usuário acesse o sistema. Cabe ressaltar que o passwd pode modificar a ordem de verificação em alguns sistemas, mas os passos são os mesmos. Exemplo A:
# passwd aluno Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully

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

Agora, após logarmos como o usuário aluno, tentamos trocar sua senha. repare que foi necessário digitar a senha atual (123). Na nova senha, escolhemos uma com boa complexibilidade: “zxasQW12”, sem as aspas. Exemplo C:
# passwd -de aluno Password changed.

Deletamos e expiramos a senha para o usuário aluno, isso irá requerer que o usuário cadastre uma nova senha na próxima tentativa de login. Muito cuidado com isso, utilize somente em casos extremos em que não exista outra alternativa, pois caracteriza uma grande falha de segurança.

Removendo usuários com userdel
Utilizamos o comando userdel para remover usuários do sistema.

___________________________________________________________________________ Pág. 84

O valor a ser especificado para ultimo_dia é o número de dias desde 01/01/1970. Número de dias de inatividade (Sem efetuar Login no sistema) que a -I inativo senha é automaticamente bloqueada. que instrui ao userdel para remover também todos os arquivos do usuário (na verdade o comando remove a pasta home do usuário). 85 . Por padrão (sem a opção -r). Aumentando a segurança com o comando chage O comando chage serve para gerenciar as entradas de expiração de senha encontradas no arquivo /etc/shadow. da segunda forma (com a opção -l) ele mostra as opções atualmente definidas para determinado usuário. pois isso agrega mais segurança. Especifica qual a data da última alteração de senha do usuário. que estava logado em outro terminal. o userdel mantém os arquivos do usuário. Da primeira forma ele define as opções de expiração de senha do usuário. ou até mesmo que contas de usuários inexistentes permaneçam válidas. Erivelton Rodrigues Nunes Sintaxe: userdel [-r] usuario O único parâmetro disponível para o userdel é o -r. impedindo que usuários permaneçam muito tempo com a mesma senha. Sintaxe: chage [-m min_dias] [-M max_dias] [-d ultimo_dia] [-I inativo] [-E data_expira] [-W dias_aviso] usuário chage -l usuário O comando chage age de duas formas. Número máximo de dias que o usuário pode permanecer com -M max_dias a mesma senha. Tabela de parâmetros -m mim_dias Intervalo mínimo de dias que o usuário pode trocar a senha. É muito importante definir informações de expiração de senha para um sistema linux.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. # userdel -r aluno # ls -ld /home/aluno/ ls: /home/aluno/: No such file or directory Após o usuário efetuar logoff do terminal em que estava já é possível removê-lo. Exemplo: # ls -ld /home/aluno/ drwxr-xr-x 2 aluno users 136 Nov 3 11:43 /home/aluno/ # userdel -r aluno userdel: user aluno is currently logged in O sistema apresentou um erro ao tentar remover o usuário aluno. ___________________________________________________________________________ Pág. ou -d ultimo_dia uma data no formato AAAA-MM-DD (Ex: 2006-12-15 significa dia 15 de dezembro de 2006). Repare que foram removidos também seus arquivos pessoais. Não é possível remover usuários que estejam logados no momento.

AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. quando necessário. Exemplo B: # chage -m2 -M90 -W5 -I30 -E2006-12-15 huguinho Uma outra forma de se chegar no mesmo resultado do exemplo anterior. 2006 Password Expires: Never Password Inactive: Never Account Expires: Never # chage huguinho Changing the aging information for huguinho Enter the new value. 2005 Password Inactive: Mar 10. Repare em como ficaram os valores de expiração de senha após as modificações e associe aos campos adequados. 2006 Especifica até qual data a conta do usuário será válida. desbloqueando a conta com o comando “passwd -u usuario”. 2006 Password Expires: Feb 08. ___________________________________________________________________________ Pág. Útil para usuários de funcionários temporários. Quando uma conta é bloqueada por motivo de expiração de senha. somente o administrador (root) é capaz de desbloqueá-la utilizando novos valores para o chage e. or press ENTER for the default Minimum Password Age [0]: 2 Maximum Password Age [99999]: 90 Last Password Change (YYYY-MM-DD) [2006-11-10]: Password Expiration Warning [7]: 5 Password Inactive [-1]: 30 Account Expiration Date (YYYY-MM-DD) [1969-12-31]: 2006-12-15 # chage -l huguinho Minimum: 2 Maximum: 90 Warning: 5 Inactive: 30 Last Change: Nov 10. Configura com quantos dias de antecedência determinado usuário será avisado sobre a expiração de sua senha. 86 . Lista as opções atuais de expiração de senha. 2005 Account Expires: Dec 15. Erivelton Rodrigues Nunes -E data_expira -W dias_aviso -l Exemplo A: # chage -l huguinho Minimum: 0 Maximum: 99999 Warning: 7 Inactive: -1 Last Change: Nov 10. O valor para data_expira segue o mesmo padrão que a opção -d.

or press ENTER for the default Full Name []: Hugo da Silva Sauro Room Number []: 5 Work Phone []: 5555555 Home Phone []: 6666666 Other []: Usuário de testes da Uniararas # finger huguinho Login: huguinho Name: Hugo da Silva Sauro Directory: /home/huguinho Shell: /bin/sh Office: 5. No Plan. As informações definidas com chfn podem ser consultadas com o comando finger. departamento. No Debian. Essas informações ficam armazenadas em cada uma das entradas do arquivo /etc/passwd.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. mais especificamente no quinto campo de cada entrada. conforme o exemplo. É bastante útil ter essas informações. Erivelton Rodrigues Nunes Gerenciando informações de usuários com chfn e finger Podemos utilizar o comando chfn para editar informações típicas dos usuários. 555-5555 Home Phone: 666-6666 Last login Thu Nov 11 14:35 (BRST) on tty2 No mail. 87 . para instalá-lo. pois é a forma mais fácil de obter informações sobre os usuários cadastrados no sistema. como seu nome completo. digite como usuário root: apt-get install finger ___________________________________________________________________________ Pág. Sintaxe: chfn [-f nome_completo] [-r sala] [-w fone_trabalho] [-h fone_casa] [-o outros] [usuario] Tabela de parâmetros -f nome_completo Configura o Nome completo do Usuário (Ex: Maria de Jesus) -r sala Número da sala em que ele trabalha -w fone_trabalho Telefone Comercial -h fone_casa Telefone Residencial -o outros Outras Informações e Observações Exemplo A: # chfn huguinho Changing the user information for huguinho Enter the new value. etc. telefone. O comando finger não vem instalado por padrão em algumas distribuições Linux.

O comando verifica o seguinte: – – – – – – O número correto de campos. Exemplo A: # chsh huguinho Changing the login shell for huguinho Enter the new value. de forma direta. o shell inicial do usuário. Diretório home válido. Shell inicial válido. Erivelton Rodrigues Nunes Exemplo B: chfn -f "Hugo da Silva Sauro" -r 5 -w 5555555 -h 6666666 -o "Usuário de testes da Uniararas" huguinho A linha de comando acima leva ao mesmo resultado que o exemplo anterior. o novo shell informado deve estar listado no arquivo /etc/shells. ___________________________________________________________________________ Pág. Um usuário normal somente pode trocar o shell principal para sua própria conta. 88 . Nomes de usuários duplicados. UID's e GID's órfãos. Grupo válido. Exemplo B: # chsh -s /bin/bash huguinho Mesmo que o exemplo anterior. Se for invocado pelo root e o comando não existir nesse arquivo.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Verificando integridade dos arquivos de senhas com pwck O comando pwck verifica a integridade de informações de autenticação dos usuários o sistema nos arquivos /etc/passwd e /etc/shadow em busca de erros de formato. Modificando o shell do usuário com chsh O comando chsh lida com o último campo do arquivo /etc/passwd. Somente o root tem permissão para trocar o shell de outros usuários. Sintaxe: chsh [-s login_shell] [user] Quando o comando é invocado por um usuário normal. o comando é automaticamente adicionado no arquivo. or press return for the default Login Shel [/bin/sh]: /bin/bash Modificado o shell inicial do usuário para /bin/bash.

e serve para ativar o modo somente-leitura do pwck. Sintaxe: usermod [-u uid [-o]] [-g grupo] [-G grupo. Erivelton Rodrigues Nunes Sintaxe: pwck [-sr] [passwd shadow] A opção -s serve para ordenar os usuários nos arquivos /etc/passwd e /etc/shadow com base em seu UID.] [-d home [-m]] [-s shell] [-c comentario] [-l novo_nome] [-f inativo] [-e expira ] [-p senha] [-L|-U] nome ___________________________________________________________________________ Pág. porém atua nos arquivos de grupos. Se especificarmos uma das opções passwd ou shadow. Para reverter. Convertendo/Revertendo o sistema de senhas shadow O linux disponibiliza dois comandos que nos permitem converter e reverter o sistema de senhas shadow. mas não efetuou nenhuma modificação no sistema. grpunconv. que apenas mostra o que está errado mas nunca modifica nenhum arquivo.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. utilizamos o comando pwconv. somente alertou. no caso de usuários já existentes. basicamente) utilizamos grpconv. Para migrar um sistema que ainda não utiliza senhas shadow.. Exemplo: # pwck user lp: directory /var/spool/lpd does not exist user news: directory /var/spool/news does not exist user uucp: directory /var/spool/uucp does not exist user postgres: directory /var/lib/postgres does not exist user list: directory /var/list does not exist user irc: directory /var/run/ircd does not exist user gnats: directory /var/lib/gnats does not exist user grpadm: directory /home/grpadm does not exist user huguinho: directory /home/huguinho does not exist user zezinho: directory /home/zezinho does not exist user nobody: directory /nonexistent does not exist pwck: no changes O comando pwck detectou que os diretórios home de alguns usuários não existiam.. Já para reverter um sistema já com shadow ativado. Modificando contas de usuários com usermod Todos os dados que podem ser fornecidos ao comando useradd durante a criação de um usuário no sistema podem ser alterados. com o comando usermod. utilizamos o comando pwunconv. Para migrar também as informações de grupos para shadow (Tirar as senhas do /etc/group e migrar para o /etc/gshadow. 89 . o pwck somente agirá nos respectivos arquivos.. Tem o mesmo efeito que pwconv e pwunconv. A outra opção (-r) não pode ser utilizada junto com -s.

com seus respectivos gids. Erivelton Rodrigues Nunes Exemplo A: # id huguinho uid=10095(huguinho) gid=100(users) groups=100(users). Exemplo B: # id huguinho uid=10095(huguinho) gid=100(users) groups=100(users). 90 . ___________________________________________________________________________ Pág. usermod = user + mod (Modificar usuário). Gerenciamento de grupos Gerenciar grupos de usuários é uma tarefa imprescindível no dia a dia de um administrador Linux. Por exemplo: useradd = user + add (Adicionar Usuário). Tarefas como adicionar e remover grupos.1521(grupo) Modificado o uid do usuário huguinho de 10095 para 10094. determinar administradores de grupos.1521(grupo) Utilizamos o usermod para renomear o usuário huguinho para donald. Verificado que somente o nome do usuário mudou.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. por exemplo. Obtendo Informações com o comando id Uma das principais ferramentas que auxiliam no gerenciamento de usuários e grupos é o comando id. definir a quais grupos determinados usuários devem participar. Uma boa forma de memorizar comandos como esses é associando sua utilização.1521(grupo) # usermod -l huguinho donald # id huguinho uid=10095(huguinho) gid=100(users) groups=100(users). em seguida renomeamos novamente o usuário para o nome original. etc. a quais grupos um determinado usuário pertence.1521(grupo) # usermod -l donald huguinho # id huguinho id: huguinho: No such user # id donald uid=10095(donald) gid=100(users) groups=100(users).1521(grupo) # usermod -u 10094 huguinho # id huguinho uid=10094(huguinho) gid=100(users) groups=100(users). É essencial uma boa compreensão sobre o funcionamento dos grupos de usuários no Linux. Com ele é possível saber. pois o correto funcionamento do sistema depende de grande coerência no que tange gerenciamento de grupos e usuários. Lembrando que o novo uid não pode estar atribuído a nenhum usuário já existente.

Mostra “nomes” ao invés de números (UIDs e GIDs) na saída do -n comando. Mostra somente o UID. os usuários são mantidos no sistema. 91 .1001(uniararas). 1006(suporte). Sintaxe: groupadd [-g gid [-o]] grupo Exemplo: $ groupadd -g 1037 uniararas O comando acima cria um novo grupo no sistema.. Caso o UID (-g) seja omitido. Sintaxe: groupdel grupo ___________________________________________________________________________ Pág.25(floppy). Se removermos um grupo que contenha usuários. A opção “-o” serve para forçar a utilização daquele gid. com GID 1037. Removendo grupos com groupdel Para remover um grupo do sistema utilizamos o comando groupdel. [usuário] Tabela de parâmetros Mostra somente o GID.24(cdrom). porém não terão mais vínculo com o grupo removido.29( audio). mesmo que ele já esteja atribuído a outro grupo.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. o sistema escolhe automaticamente o próximo disponível. mostra os nomes dos grupos. -g mostra o nome do grupo. os demais são os secundários. Exemplos: $ id uid=1052(enunes)gid=1001(uniararas)grupos=6(disk). Erivelton Rodrigues Nunes Sintaxe: id [parâmetro]. O primeiro grupo na listagem é o grupo principal. Se utilizado em conjunto com o parâmetro -n. Se utilizado em conjunto com o parâmetro -n. Mostra todos os grupos (GIDs) que o usuário pertence.. Se utilizado em -G conjunto com o parâmetro -n.1507(apostilas) $ id -G 1001 6 24 25 29 1006 1507 $ id -Gn uniararas disk cdrom floppy audio suporte apostilas $ id root uid=0(root) gid=0(root) grupos=0(root) Adicionando grupos com groupadd Cria novos grupos no sistema. -u mostra o nome do usuário.

Sintaxe: groupmod [-g gid [-o]] [-n novo_nome ] grupo Exemplo: # groupadd linux # gpasswd -a aluno linux Adding user aluno to group linux # id aluno uid=10092(aluno) gid=100(users) groups=100(users).AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. adicionar usuários em grupos já existentes.1001(uniararas) Após adicionado o usuário aluno e o grupo uniararas.1520(pinguim) ___________________________________________________________________________ Pág.1001(uniararas) # gpasswd -d aluno uniararas Removing user aluno from group uniararas Modificando informações sobre grupos Através do comando groupmod é possível renomear um grupo ou trocar o GID. dentre outras coisas. Removendo usuários dos grupos Para remover usuários dos grupos também fazemos uso do gpasswd. Erivelton Rodrigues Nunes Adicionando usuários aos grupos Utilizamos o comando gpasswd para.1511(linux) # groupmod -g 1520 -n pinguim linux # id aluno uid=10092(aluno) gid=100(users) groups=100(users). 92 . utilizamos o comando gpasswd para adicionar o usuário recém-criado ao grupo. da seguinte forma: gpasswd -d usuario grupo Exemplo: # id aluno uid=10092(aluno) gid=100(users) groups=100(users). Sintaxe: gpasswd -a usuario grupos Exemplo: # useradd -m aluno # id aluno uid=10092(aluno) gid=100(users) groups=100(users) # groupadd uniararas # gpasswd -a aluno uniararas Adding user aluno to group uniararas # id aluno uid=10092(aluno) gid=100(users) groups=100(users).

Utilizamos o comando newgrp para essa finalidade..admgrupo $ gpasswd -a huguinho grupo Adding user huguinho to group grupo $ id huguinho uid=10095(huguinho) gid=100(users) groups=100(users). Administradores de grupos são usuários que tem permissão (previamente concedida pelo usuário root) para adicionar usuários do sistema aos grupos que eles administram. Sintaxe: newgrp [-] grupo O parâmetro “-” instrui ao comando para carregar todas as variáveis de ambiente do shell atual. ___________________________________________________________________________ Pág. Para remover esse privilégio do usuário. primeiro criamos o grupo linux e adicionamos o usuário aluno nele. membros e uma senha. Isso pode ser útil quando precisamos ter privilégios específicos de determinado grupo por alguns instantes.. A opção -M faz o mesmo. Sintaxe: gpasswd [-A usuário. Definindo administradores de grupos com gpasswd Todos os grupos no sistema podem ter administradores. Trocando o grupo principal temporariamente com newgrp É possível trocar o grupo principal do usuário somente para a sessão atual (tudo volta ao normal ao término da sessão). O sistema automaticamente atribuiu um GID para o grupo (1511. Exemplo: # useradd -m admgrupo # id admgrupo uid=10094(admgrupo) gid=100(users) groups=100(users) # groupadd grupo # gpasswd -A admgrupo grupo # useradd -m huguinho # su .1521(grupo) $ gpasswd -d huguinho grupo Removing user huguinho from group grupo $ id huguinho uid=10095(huguinho) gid=100(users) groups=100(users) No exemplo foi definido que o usuário admgrupo é administrador do grupo grupo. porém adiciona o usuário como membro do grupo também. é preciso remover o nome do usuário em questão do terceiro campo do arquivo /etc/gshadow. Erivelton Rodrigues Nunes No exemplo..] [-M usuário. É importante lembrar que o usuário a ser adicionado ao grupo já deve existir no sistema..AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.. 93 . Podemos utilizar o comando gpasswd para definir administradores e senha de grupos. Utilizamos o comando groupmod para trocar o GID e o nome do grupo linux.] grupo A opção -A serve para “nomear” um usuário do sistema como administrador do grupo. no exemplo)..

grupo Password: $ id uid=10097(zezinho) gid=1521(grupo) groups=100(users). Para isso lhe foi requisitada a senha do grupo. Quando acionamos o comando “newgrp grupo”. foi aberto um novo shell atrelado ao shell atual. O comando verifica o seguinte nos arquivos: – – – O número correto de campos.zezinho $ newgrp . Exemplo B: # useradd -m zezinho # id zezinho uid=10097(zezinho) gid=100(users) groups=100(users) # su . O usuário é questionado a deletar uma entrada defeituosa que esteja comprometendo a segurança do sistema.huguinho Password: $ id uid=10095(huguinho) gid=100(users) groups=100(users). o usuário zezinho pode utilizar o comando newgrp para temporariamente fazer parte do grupo.1521(grupo) $ newgrp grupo $ id uid=10095(huguinho) gid=1521(grupo) groups=100(users). Nomes de grupos duplicados. não foi necessário digitar uma senha para o grupo. que por padrão pertence somente ao grupo users. ___________________________________________________________________________ Pág. foi definida uma senha para o grupo.1521(grupo) $ exit Nesse exemplo. Como o usuário huguinho pertence ao grupo “grupo”.1521(grupo) $ exit Adicionamos o usuário zezinho. Uma lista válida de membros e administradores. Erivelton Rodrigues Nunes Exemplo A: $ id uid=10096(admgrupo) gid=100(users) groups=100(users) $ gpasswd grupo Changing the password for group grupo New Password: Re-enter new password: $ su . que foi cadastrada no exemplo anterior com o comando “gpasswd grupo”. 94 . Todas as entradas dos arquivos /etc/group e /etc/gshadow são verificadas quanto ao formato correto em cada campo.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Como foi definida uma senha para o grupo “grupo” antes. Verificando Integridade dos arquivos de grupos com grpck O comando grpck verifica a integridade das informações de autenticação do sistema.

Erivelton Rodrigues Nunes Sintaxe: grpck [-r] [group shadow] A opção -r diz para o grpck efetuar os testes em modo somente-leitura. conforme abaixo: grupo:!:1521:huguinho grupo:!:1522: Exemplo: # grpck duplicate group entry delete line `grupo:!:1521:huguinho'? No duplicate group entry delete line `grupo:!:1522:'? Yes grpck: the files have been updated Respondemos “No” para a primeira pergunta e “Yes” para a segunda porque a primeira pergunta referenciava a linha correta (que não devemos apagar). ou seja. partimos do princípio de que exista um problema de nome de grupo duplicado no arquivo /etc/group. Para o Exemplo abaixo. não altera nenhum arquivo. 95 . ___________________________________________________________________________ Pág.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. somente mostra os problemas na tela. O padrão do comando é verificar ambos os arquivos /etc/group e /etc/shadow. basta especificar somente o nome de um dos arquivos como parâmetro. Para forçar ele verificar somente um deles.

cada arquivo possui. obviamente. etc. indicando a ausência ou presença de uma permissão específica. Elas são usadas para vários fins. 96 . Cabe a ele por exemplo. e o restante -9 bits. A primeira divisão que pode ser feita neste número de 12 bits. Mas tal complexidade não deve ser interpretada como dificuldade e sim como grande variedade de configurações. autorizar a fazer uso de. Manipular as permissões é algo muito essencial. seção 3. Estas permissões podem ser entendidas como um número de 12 bits onde. ___________________________________________________________________________ Pág.para a determinação da proteção do arquivo. Naturalmente. Como você deve saber. o que permite criar vários tipos de proteção de arquivos e diretórios. a forma usada para determinar o que o usuário pode fazer é a determinação de permissões. um conjunto de atributos e um deles são as permissões relativas a ele próprio. de acordo com a importância dos mesmos e com o desejo do seu dono. de forma a manter a segurança e integridade do sistema. mas servem principalmente para proteger o sistema e os arquivos dos usuários. justamente por ser o usuário responsável pela configuração. Esta é justamente a intenção das permissões dos arquivos no sistema: limitar o acesso aos arquivos. poder ou licença para. Como já foi dito. modificar. consentir. de todos os sistemas baseados em Unix). porque não sabes o que trará à luz” Provérbios 27. Erivelton Rodrigues Nunes PERMISSÕES DE ARQUIVOS E DIRETÓRIOS “Não te glories do dia de amanhã. somente o super-usuário (root) tem ações irrestritas no sistema. associado a ele.1 As permissões são um dos aspectos mais importantes do Linux (na verdade.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. não obstar. cada bit pode variar entre zero e um. administração e manutenção do Linux. determinar o que cada usuário pode executar. tolerar. criar. separa três bits para determinar os atributos do arquivo. Conceitos Permissão é o ato de dar liberdade.

assim como mostrado na figura abaixo. ou seja. há uma subdivisão destes bits em três grupos de três bits cada. todo arquivo criado em um diretório com o bit setgid ativado. o segundo bit pode ser substituído por outro 's'. de cada um destes bits define quem pode visualizar -ler. faz com que o arquivo possa ser apagado apenas pelo seu dono. se estiver ativado. com valor igual a um. nenhum usuário pode apagá-lo. Os atributos de um arquivo são três e cada um deles desempenha uma função bem específica. ou não. O primeiro é conhecido como bit setuid.e execução -execution-). ou seja. Por fim. por um 't'.o arquivo. Desta maneira. 97 .AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. não faz sentido para diretórios. da esquerda para a direita. A ativação. O segundo atributo é o bit setgid. pode-se reescrever os bits de atributo com sua notação simbólica. onde. Contudo. Sendo assim. que simboliza o bit sticky. que simboliza o bit setuid. se estiver ligado. ___________________________________________________________________________ Pág.e/ou executá-lo -executar-. escrita -write. onde todos os usuários cadastrados no sistema podem utilizar o diretório livremente. Assim como os bits de atributo. visto que ele pertence ao superusuário “root” e possui o seu bit sticky ligado. que. quem pode alterá-lo/apagá-lo -escrever. que simboliza o bit setgid e o terceiro bit. as permissões para os membros do mesmo grupo do dono do arquivo (os três bits da seqüência) e as permissões para os outros usuários do sistema (últimos três bits). pode ser apagado apenas pelo usuário root. o que define as permissões para o dono do arquivo (primeiros três bits. da esquerda para a direita). que. Isto pode ser facilmente visualizado na figura abaixo. Erivelton Rodrigues Nunes Bits de atributo Os bits de atributo definem um controle adicional às permissões de proteção do arquivo. Bits de proteção Os bits de proteção definem as proteções básicas de cada arquivo (leitura -read-. Um grande exemplo da utilização deste bit de atributo está no diretório /tmp. faz com que o arquivo seja executado como se o fosse por um membro do grupo do seu dono. os bits podem substituídos por letras que os simbolizam. se estiver ativado. é criado com o mesmo grupo do diretório. o terceiro atributo é conhecido como bit sticky e. O primeiro bit pode ser substituído por um 's'. faz com que o arquivo seja executado como se o fosse pelo seu dono.

o leitor foi apresentado a duas formas de notação das permissões -duas formas distintas de representar as permissões-. de cada subdivisão. resolveu-se criar um tipo de notação onde se pudesse representar as mesmas permissões. onde cada bit representa uma permissão específica -direito do dono ler o arquivo. Quanto mais caracteres para escrever. além de ser muito suscetível a erros. A notação binária é boa para se entender o funcionamento das permissões. Notações Até agora. em vez de se utilizar de 12 algarismos para representar as permissões. basta ter alguma noção de conversão de bases entre números. o que diminui a probabilidade de erros.basta converter cada seqüência de três bits da base dois para a base oito. a notação simbólica é boa para se representar as permissões de um arquivo e a notação octal é boa para se manipular permissões de arquivos. simbolicamente estes bits. os atributos de proteção são subdivididos em três grupos de três bits cada. 'w' -escrita. 98 . ___________________________________________________________________________ Pág. Por sua vez. Assim. pode-se representar as mesmas permissões na notação octal. para os membros do mesmo grupo do dono do arquivo e para os outros usuários do sistema. Por isso. Erivelton Rodrigues Nunes Cada bit. pode-se utilizar apenas quatro. privilégio para apenas o dono excluir o arquivo e etc. pois cada uma tem uma utilidade. É importante que se entenda bem cada uma destas notações. a notação binária. porque utiliza oito algarismos para representar seus dígitos de zero a sete). escrever ou executar o arquivo. Entretanto.para representar. Assim tem-se um número como 000000000000 representando as permissões. Assim sendo. Uma outra notação vista foi a simbólica. Desta forma. maior a possibilidade de errar. a representação das permissões utilizando a notação binária. Ora. determina se o usuário que a subdivisão representa pode ler. utiliza caracteres para representar cada permissão específica. logicamente divide as permissões em três bits para atributos especiais e nove para os atributos de proteção.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. as permissões (001 111 100 100) na base dois e (1 7 4 4) na base oito são logicamente iguais . Sendo assim. que identifica as permissões como um número de 12 bits. Como já foi visto. que em vez de utilizar bits. totalizando em quatro dígitos para se representar todas as permissões. representando os privilégios para o dono do arquivo. como na figura abaixo.e 'x' -execução. Assim. em vez de se representar as permissões na notação binária como quatro seqüências de três bits -12 dígitos-. para saber que três bits é a quantidade exata de bits necessária para se representar números na base octal (também chamada de base oito. gerando algo como sstrwxrwxrwx. mas utilizando-se de menos caracteres. pode-se utilizar as letras 'r' -leitura-. direito de membros do grupo do dono alterarem o arquivo. tem-se um número de 12 bits que representa as permissões dividido em quatro grupos de três bits (000000000000 -> 000 000 000 000). que utiliza um dígito para cada uma das quatro seqüências. Foi aí que surgiu a notação octal.-. representar permissões desta maneira é muito entediante para as pessoas.

como portas paralelas e/ou seriais.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. São eles: Arquivos comuns (-). São subdivididos em hard (diretos) e soft (simbólicos) links. por exemplo. cada um a um caractere. surgiram os sete tipos de arquivos que existem atualmente no Linux. Normalmente. Assim sendo. bloco (b). são uma subdivisão dos arquivos de dispositivos. A tabela 01 mostra os bits de atributo. Bloco  São arquivos que representam dispositivos físicos que podem ser acessados em blocos de bytes. links (l). surgiu a necessidade de se dividir os arquivos em tipos distintos. caractere (c). ___________________________________________________________________________ Pág. Links  São arquivos que fazem referência a outros arquivos dentro do sistema de arquivos. Sockets  São arquivos utilizados para comunicação entre processos. são uma subdivisão dos device files -arquivos de dispositivos. Tipos de arquivo Pelo fato do Linux representar tudo como se fosse um arquivo. diretórios (d). estes sete tipos são associados. Pipes  Também são arquivos utilizados para a comunicação entre processos. arquivos de dados e arquivos binários. enquanto a tabela 02 mostra os bits de proteção -como os três grupos de proteção são representados da mesma forma. São. Erivelton Rodrigues Nunes As tabelas a seguir mostram a representação das permissões em cada uma das três notações vistas. arquivos de texto.que podem ser acessados seqüencialmente. não é necessário ter uma tabela para cada grupo. Na verdade. Assim como os arquivos do tipo caractere. 99 . para sua identificação. como o HD. sockets (s) e pipes (p). Caractere  São arquivos que representam dispositivos físicos -hardware. São eles: Arquivos comum . Diretórios  São arquivos que contêm nomes de outros arquivos que estão armazenados ou organizados em grupos. A figura abaixo mostra uma tabela com os caracteres designados para cada tipo de arquivo.

2 enunes uniararas 0 2006-10-28 17:29 drwxr-xr-x 3 enunes uniararas 4096 2006-10-28 17:30 drwxr-xr-x 2 enunes uniararas 4096 2006-10-29 10:44 -rw-r--r-.por exemplo) são os caracteres que demonstram as permissões atuais de cada arquivo/diretório.sxw -rwxrw-r-. onde as permissões aparecem em destaque: Exemplo A: $ ls -l apostila. 100 . qualquer outro usuário que não seja o dono do arquivo (erivelton) nem pertença ao grupo office só terá permissões de ler o arquivo ( r ). Exemplo B: $ ls -ld /etc drwxr-xr-x 96 root root 5384 2006-11-01 11:01 /etc ___________________________________________________________________________ Pág. pertence ao usuário erivelton e ao grupo office.sxw é um arquivo comum. O usuário erivelton pode ler.sxw O arquivo apostila.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.1 erivelton office 183627 2006-11-01 13:09 apostila. Esses primeiros 10 caracteres que aparecem (-rw-r--r-. gravar e executar o arquivo ( rwx ). quaisquer outros usuários que pertençam ao grupo office podem ler e gravar no arquivo ( rw. Erivelton Rodrigues Nunes Entendendo as permissões na prática $ ls -l ~/exercicios/ln total 8 -rw-r--r-. Observe a Linha abaixo.). que mostra as permissões dos arquivos na primeira coluna. Portanto.2 enunes uniararas 0 2006-10-28 17:29 arquivo1 dir1 dir2 hardlink1 Repare na saída do comando ls -l.

Tabela de parâmetros Verbose. Pertence ao usuário e grupo root..) de significado. basta unir as permissões com as partes afetadas. Para estabelecer essa união. Aplica as permissões recursivamente O chmod trabalha com dois modos de permissões: simbólico e octal. Mesmo que a opção -v..MODO].. 101 . Antes de estudar os dois modos separadamente. chmod [OPÇÃO]. Ambiente: $ mkdir -p ~/exercicios/chmod. Esses dois modos não mudam a Sintaxe do comando mostrada anteriormente.. Erivelton Rodrigues Nunes Podemos verificar que o arquivo etc na verdade é um diretório ( d ). Nota: Mesmo que as permissões de arquivos restrinjam o usuário root. --reference=ARQUIVOREF ARQUIVO. elas não têm efeito p/ ele. Mesmo que -v as permissões tenham se mantido.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. chmod [OPÇÃO]. gravação e execução ( rwx )para o usuário dono. MODO[. Mostra informações sobre as modificações efetuadas. ___________________________________________________________________________ Pág... Changes. conforme tabela abaixo: u g o a usuário grupo outros todos Com base nisso.. porém só mostra informações se as permissões -c tiverem sido modificadas. Leitura e execução ( r-x ) para o grupo dono e quaisquer outros usuários. Tem permissões de leitura. -R Recursive..... ARQUIVO... MODO-OCTAL ARQUIVO.. Nesse modo. cd ~/exercicios/chmod $ mkdir -p dir1/dir2 $ touch arq1 dir1/dir2/arq2 Modo Simbólico de Permissões O modo simbólico do chmod define as permissões com base em suas letras (r.. w e x. criaremos o ambiente de testes. Sintaxe: chmod [OPÇÃO]. pois só agem no MODO (MODO e MODO-OCTAL) das permissões.. Definindo Permissões com chmod Utilizamos o comando chmod (Change Mode) para configurar as permissões no Linux. as permissões cabíveis a cada uma das partes envolvidas são representadas por letras.

ug+w arq1 $ ls -l arq1 -rwxrw-r-. . Exemplo B: $ ls -l arq1 -r--r--r-. respectivamente). o arquivo arq2. devido ao fato das permissões terem sido aplicadas recursivamente. o “w” significa permissão de escrita. Exemplo C: $ ls -l arq1 -r-xr-xr-x 1 erivelton erivelton 0 2006-11-01 15:40 arq1 $ chmod go-x. grupo e outros ( a ) do diretório dir1 para leitura e execução ( rx ). o sinal de “-” indica que estamos removendo permissões. Exemplo E: $ ls -l total 0 -rwxrw-r-.1 erivelton erivelton 0 2006-11-01 15:40 arq1 $ chmod u-w arq1 $ ls -l arq1 -r--r--r-. Exemplo A: $ ls -l arq1 -rw-r--r-.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.1 erivelton erivelton 0 2006-11-01 15:40 arq1 Na mesma linha de comando. pois não foi especificada qual parte seria afetada pelo comando. remove ou iguala permissões.1 erivelton erivelton 0 2006-11-01 15:40 arq1 O arquivo arq1 teve a permissão de escrita ( w ) removida para o usuário ( u ) dono do arquivo. e em seguida.1 erivelton erivelton 0 2006-11-01 15:40 arq1 $ chmod +x arq1 $ ls -l arq1 -r-xr-xr-x 1 erivelton erivelton 0 2006-11-01 15:40 arq1 Adicionada permissão de execução para todos os campos (usuário. Exemplo D: $ ls -ld dir1 drwxr-xr-x 3 erivelton $ ls -l dir1/dir2/arq2 -rw-r--r-. foi removida a permissão de execução para grupo e outros e também foi adicionada a permissão de escrita para o usuário e grupo. ou seja: o “u” indica que estamos alterando permissões para o usuário. que fica em um subdiretório abaixo de dir1 também recebeu as permissões. grupo e outros).1 erivelton $ chmod -R a=rx dir1 $ ls -ld dir1 dr-xr-xr-x 3 erivelton $ ls -l dir1/dir2/arq2 -r-xr-xr-x 1 erivelton erivelton 72 2006-11-01 16:03 dir1 erivelton 0 2006-11-01 15:40 dir1/dir2/arq2 erivelton 72 2006-11-01 16:03 dir1 erivelton 0 2006-11-01 15:40 dir1/dir2/arq2 Modificamos recursivamente (opção -R) as opções de usuário.e = (adiciona.1 erivelton erivelton 0 2006-11-01 15:40 arq1 dr-xr-xr-x 3 erivelton erivelton 72 2006-11-01 16:03 dir1 $ ls -l dir1 ___________________________________________________________________________ Pág. 102 . Erivelton Rodrigues Nunes utilizamos os sinais de +. Repare que.

que contém a lista de todos os arquivos e diretórios dentro dele.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Sem a permissão de execução não podemos entrar em um diretório. Isso acontece porque quando entramos em um diretório. se quisermos obter resultados específicos. conforme tabela a seguir: Permissão rwx rwr-x r--wx -w--x --Soma Octal 4+2+1=7 4+2+0=6 4+0+1=5 4+0+0=4 0+2+1=3 0+2+0=2 0+0+1=1 0+0+0=0 Por exemplo. basta somar o número de bits correspondente as permissões. Erivelton Rodrigues Nunes total 0 dr-xr-xr-x 2 erivelton erivelton 72 2006-11-01 16:03 dir2 $ chmod -x dir1 $ ls -l dir1 ls: dir1/dir2: Permissão negada total 0 $ cd dir1 bash: cd: dir1: Permissão negada $ chmod +x dir1 $ ls -l dir1 total 0 dr-xr-xr-x 2 erivelton erivelton 72 2006-11-01 16:03 dir2 $ cd dir1 O exemplo mostra que é necessário ter permissões de execução para entrar ou listar o conteúdo de um diretório. na verdade estamos “executando” o arquivo especial que é o diretório. utilizamos o modo 754 no chmod. conforme tabela abaixo: Bits 4 2 1 Permissão Leitura ( r ) Escrita ( w ) Execução ( x ) com o número de bits que compõem as Dessa forma. 103 . para chegar ao resultado rwxr-xr--. Exemplo A: $ chmod 750 arq1 $ ls -l arq1 -rwxr-x--. somente o root rompe essas barreiras. lidamos diretamente permissões. Modo octal de permissões Nesse modo.1 erivelton erivelton 0 2006-11-01 15:40 arq1 ___________________________________________________________________________ Pág.

o usuário que executou o programa é dono do processo. Normalmente o usuário dono do programa executável é também dono do processo sendo executado. A permissão de acesso especial SUID pode aparecer somente no campo Dono. Mas. Veja um exemplo de permissão especial na figura abaixo: SUID ( Set User ID ) A propriedade SUID é somente para arquivos executáveis e não tem efeito em diretórios. pois são extremamente essenciais no dia a dia de um administrador de sistema e seu bom compreendimento evita algumas falhas de segurança. Exemplo: ___________________________________________________________________________ Pág. 104 .1 erivelton erivelton 0 2006-11-01 15:40 arq1 Pratique bastante permissões de acesso.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Por isso o Linux tem mais três modelos especiais para controle de acesso. em arquivo executável com a propriedade SUID aplicada. sgid (set group id) e Sticky (Sticky bit). ele é executado como se ele estivesse iniciado pelo dono do arquivo/programa. não dão toda flexibilidade para controlar acesso aos arquivos e diretórios. não com o ID do usuário que executou o programa. Erivelton Rodrigues Nunes Exemplo B: $ chmod 644 arq1 $ ls -l arq1 -rw-r--r-. Ou seja. Permissões de Acesso Especiais: Mas somente as três permissões básicas (rwx). chamados suid (set user id). quando um arquivo/programa executável tem o controle de acesso SUID. o programa rodará com o ID do dono do arquivo. Nas permissões básicas.

os novos arquivos que são criados dentro do diretório assumem o mesmo ID de Grupo do diretório com a propriedade SGID aplicado.sh Procurando a propriedade SUID em um arquivo executável utilizando formato octal (4): # find /home/roberto -perm -4000 /home/roberto/programa.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.sh # ls -lah programa.sh # ls -lah programa.sh Aplicando a propriedade SUID em um arquivo executável utilizando formato octal (4): # chmod 4750 programa. quando executamos o comando passwd com qualquer usuário normal.sh -rwxr-x--. A permissão de acesso especial SGID pode aparecer somente no campo Grupo. 105 .sh SGID ( Set Group ID ) A propriedade SGID tem a mesma função que o SUID para arquivos executáveis.sh Retirando SUID # chmod u-s programa.sh -rwsr-x--.1 root roberto 0 2006-09-26 22:57 programa.sh # ls -lah programa.sh -rwsr-xr-x 1 root roberto 0 2006-09-26 22:57 programa. o processo é executado com ID do usuário root ( como se o usuário root tivesse executado o comando passwd). ___________________________________________________________________________ Pág. # ls -lah /usr/bin/passwd -rwsr-xr-x 1 root root 27K 2006-04-03 10:37 /usr/bin/passwd Aplicando SUID Aplicando a propriedade SUID em um arquivo executável utilizando formato simbólico (s): # chmod u+s programa. a propriedade SGID tem um efeito especial para os diretórios. Ou seja.sh Procurando SUID Procurando a propriedade SUID em um arquivo executável utilizando formato simbólico (s): # find /home/roberto -perm u=s /home/roberto/programa. pois somente o usuário root tem permissão para alterar o arquivo /etc/passwd. Erivelton Rodrigues Nunes Um exemplo para arquivo executável com a propriedade SUID é o arquivo /usr/bin/passwd.1 root roberto 0 2006-09-26 22:57 programa. Quando SGID é aplicado em um diretório. Mas.

pois será feito um cache do programa para a memória. será carregado mais rápido. Aplicando SGID Aplicando a propriedade SGID em um diretório executável utilizando formato simbólico (s): # chmod g+s /home/equipe # ls -lah /home/equipe total 0 drwxr-sr-x 2 roberto equipe 48 2006-09-26 23:21 . a propriedade Sticky faz com que o sistema mantenha uma imagem do programa em memória depois que o programa finalizar. 106 . então todos os arquivos dentro do diretório /home/roberto serão criados com o grupo casa.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. ___________________________________________________________________________ Pág.2 roberto equipe 48 2006-09-26 23:21 . Erivelton Rodrigues Nunes Exemplo: Se no diretório /home/roberto tem o grupo casa e tem o SGID habilitado. Procurando SGID Procurando a propriedade SGID em um diretório executável utilizando formato simbólico (s): # find /home -perm /g=s /home/equipe Procurando a propriedade SUID em um diretório executável utilizando formato octal (2): # find /home -perm -2000 /home/equipe Sticky ( Sticky bit ) Em arquivos executáveis. Esta é um importante atributo para um equipe. Aplicando a propriedade SGID em um diretório executável utilizando formato octal (2): # chmod 2750 /home/equipe # ls -lah /home/equipe total 0 drwxr-s--. Esta capacidade aumenta o desempenho. assumindo que todos os arquivos compartinhados devem ter o mesmo grupo. Retirando SGID # chmod g-s /home/equipe # ls -lah /home/equipe total 0 drwxr-xr-x 2 roberto equipe 48 2006-09-26 23:21 . e da próxima vez que ele for executado.

sh Aplicando a propriedade Sticky em um diretório utilizando formato simbólico (t): # chmod o+t /tmp # ls -lah /tmp total 5. Aplicando a propriedade Sticky em um diretório utilizando formato octal (1): # chmod 1777 /tmp # ls -lah /tmp total 5. Então é interessante aplicar a propriedade Sticky no diretório /tmp. poderá deletar ou renomear os arquivos dentro de um diretório com a propriedade Sticky aplicada. Aplicando Sticky Aplicando a propriedade Sticky em um arquivo executável utilizando formato octal (1) # chmod 1750 programa_pesado. Erivelton Rodrigues Nunes Em diretórios.9M 2006-09-26 23:51 programa_pesado. ___________________________________________________________________________ Pág.sh # ls -lah programa_pesado. pode ser especificada somente no campo outros usuários das permissões de acesso. A permissão especial Sticky.sh -rwxr-x--T 1 root root 2.0K drwxrwxrwt 8 root root 264 2006-09-26 23:22 . Isso normalmente é utilizado para aumentar a segurança.sh Aplicando a propriedade Sticky em um arquivo executável utilizando formato simbólico (t): # chmod o+t programa_pesado.sh -rwxr-x--T 1 root root 2. somente o usuário que é Dono do arquivo. mas nenhum pode apagar arquivos dos outros. pois o diretório estará em modo append-only ( somente incremente ).0K drwxrwxrwx 8 root root 264 2006-09-26 23:22 .9M 2006-09-26 23:51 programa_pesado. 107 . a propriedade Sticky impede que outros usuários deletem ou renomeam arquivos dos quais não são donos. Sendo assim.sh # ls -lah programa_pesado.0K drwxrwxrwt 8 root root 264 2006-09-26 23:22 Retirando Sticky # chmod o-t /tmp # ls -lah /tmp total 5. todos os usuários devem ter acesso para que seus programas possam criar os arquivos temporários.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Exemplo: No diretório /tmp.

A principal função da umask é impedir que arquivos pessoais criados pelos usuários do sistema sejam legíveis por outros usuários assim que criados. grupo e outros usuários que o arquivo ou diretório receberá quando for criado ou copiado pelo usuário atual. Sintaxe: umask [-p] [-S] [modo] Tabela de parâmetros -p Mostra a palavra umask antes do modo (sem muito sentido. as permissões iniciais seriam 666 (tudo ativado. A umask fica armazenada na memória durante o shell atual. qualquer arquivo criado por um usuário no sistema não recebe permissões de execução. Para chegar as permissões iniciais do arquivo criado após a influência do umask. e o valor modificado em um shell não influencia em outro. para todos os arquivos recém-criados. Erivelton Rodrigues Nunes Procurando Sticky Aplicando a propriedade Sticky em um diretório utilizando simbólico (t): # find /home/roberto/ -perm /o=t /home/roberto/programa_pesado.sh Máscara de usuário (umask) A umask (user mask) são 3 números que definem as permissões iniciais do dono... o umask só modifica as permissões do arquivo de destino se o valor partindo de 777 e subtraído do valor da umask for menor. basta subtrair o valor da umask da permissão padrão (666). com exceção dos diretórios. sem execução). conforme o Exemplo B. Ela consegue esse resultado subtraindo um número de bits (o valor da umask) das permissões do arquivo que for criado. cd ~/exercicios/umask Exemplo A: ___________________________________________________________________________ Pág. Se modificarmos o valor da umask ela será redefinida para o padrão ao abrirmos um novo shell. os arquivos novos teriam permissão 644 ar a permissão padrão de arquivos recém-criados (666 – 22 = 644). se o valor da umask for 22.sh Aplicando a propriedade Sticky em um diretório utilizando formato octal (1): # find /home/roberto/ -perm -1000 /home/roberto/programa_pesado. Por exemplo.) -S Utiliza o modo simbólico de permissões (Igual no comando chmod) Ambiente: $ mkdir ~/exercicios/umask.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. 108 . Por exemplo. É importante frizar que para arquivos copiados. Por padrão.

1 erivelton erivelton 0 2006-11-01 18:42 arq1 $ umask 000 $ touch arq2 $ ls -l total 0 -rw-r--r-.1 erivelton erivelton 0 2006-11-01 -rwxrwxr-x 1 erivelton erivelton 0 2006-11-01 -rwxr-xr-x 1 erivelton erivelton 0 2006-11-01 18:42 18:42 19:12 19:13 arq1 arq2 arq3 arq4 Repare que o umask (22) agiu na permissão do arquivo original (arq3 = 775) e o arquivo arq4 foi criado com permissões 755. Erivelton Rodrigues Nunes $ umask 0022 $ touch arq1 $ ls -l total 0 -rw-r--r-. O valor padrão da umask na maioria das distribuições atuais é 022. Após modificarmos o umask para 000 (anulando sua influência). diretórios ou programas não sendo executados. Exemplo B: $ touch arq3 $ chmod -v 775 arq3 modo de `arq3' mudado para 0775 (rwxrwxr-x) $ umask 0022 $ cp arq3 arq4 $ ls -l total 0 -rw-r--r-.1 erivelton erivelton 0 2006-11-01 18:42 arq1 -rw-rw-rw. ___________________________________________________________________________ Pág.1 erivelton erivelton 0 2006-11-01 -rw-rw-rw. 109 . A umask é de grande utilidade para programas que criam arquivos/diretórios temporários.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.1 erivelton erivelton 0 2006-11-01 18:42 arq2 Com o umask padrão. evitando recorrer ao chmod. um valor mal escolhido pode causar problemas de acesso a arquivos. desta forma pode-se bloquear o acesso de outros usuários desde a criação do arquivo. o arquivo criado (arq2) recebeu permissões 666. É preciso um pouco de atenção antes de escolher a umask. o arquivo criado (arq1) recebeu permissões 644.

Dessa mesma forma. Essa camada recebe o nome de interpretador de comandos. visto anteriormente. mas também podem (e devem) receber dados do terminal. o sh. Mesmo assim. conforme tabela abaixo: Descritor de Arquivo 0 1 2 Nome do Dispositivo Entrada de dados padrão Saída de dados padrão Saída de erros padrão Abreviação stdin stdout stderr O descritor de arquivo é utilizado para identificar “em qual direção” os caracteres irão fluir. existe uma camada entre o sistema operacional (kernel) e o usuário. e que podemos escolher qual shell será o padrão para determinado usuário com o comando chsh. Devido ao fato do shell bash ser o padrão na grande maioria das distribuições. Esse fluxo de caracteres pode fluir em 3 direções. o shell do Linux utiliza algum dispositivo de caracteres (/dev/tty*. Erivelton Rodrigues Nunes O SHELL BASH (BOURNE AGAIN SHELL) “Melhor é morar numa terra deserta do que com a mulher rixosa e irritadiça” Provérbios 21. Tecnicamente. muitas das características do bash existem em outros shells. etc.. 110 . Redirecionamento Tudo que é visto no terminal é formado com caracteres (por isso dispositivos de caracteres). stdout e stderr) estudados adiante para conseguir essa interação com o usuário. Bash significa Bourne Again Shell (Algo como “O shell que nasceu novamente”). O linux conta com diversos interpretadores de comandos (shells). Um shell no Linux utiliza-se de dispositivos especiais de entrada e saída (Vistos na tabela adiante) para se comunicar com o usuário. O bash é um “relançamento” de um antigo shell de UNIX. ou shell..19 Conforme visto anteriormente. que “interpreta” os comandos digitados e os passa para o kernel. porém o mais utilizado nas distribuições é o shell bash.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Vale a pena lembrar que podem existir diversos interpretadores de comandos instalados no sistema operacional (Que tal uma olhada no arquivo /etc/shells?). é ele que estudaremos a seguir.) associado a 3 dispositivos especiais (stdin. Entrada de dados padrão (/dev/stdin) Dispositivo que cuida do fluxo de entrada para os dados que podem ser enviados ___________________________________________________________________________ Pág. e vice-versa. Esses caracteres são resultado da saída de dados padrão dos comandos executados ou do próprio shell. programas também utilizam desse método para interação com o usuário. Mas os comandos não se limitam a enviar caracteres para a tela do terminal (Saída de dados padrão). /dev/pts/*.

Porém. Erivelton Rodrigues Nunes para os programas em execução. através de comandos de redirecionamento de shell (visto adiante) podem associar um arquivo como a entrada de dados padrão. Saída de erros padrão (/dev/stderr) Esse é um dispositivo bastante parecido com a saída de dados padrão.. 111 . stderr. arquivo. etc. por exemplo) para algum arquivo ou dispositivo.. Operadores de Redirecionamento Para controlar a direção em que os dados devem fluir. após criar nosso ambiente de testes. conforme veremos em breve. Assim como a saída de dados padrão. lembrando que no Linux “tudo é arquivo”. por exemplo. A maior parte do tempo é o teclado que fica fica encarregado de “gerar” os dados que acabam sendo enviados para esse dispositivo. Exemplo A: $ mkdir -p ~/exercicios/redirecionamento $ cd ~/exercicios/redirecionamento $ touch arq1 arq2 arq3 $ ls > listagem $ ls arq1 arq2 arq3 listagem $ cat listagem arq1 arq2 arq3 Nesse exemplo. o bash conta com operadores de redirecionamento.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Semelhante a entrada de dados padrão. e serve para os programas enviarem qualquer mensagem de erro durante a execução. Quando listamos arquivos com o comando ls. podemos redirecionar a saída de erros padrão para um arquivo.) e podem estar antes ou depois de um comando. podemos utilizar de comandos de redirecionamento para enviar a saída de um comando para um arquivo ou outro comando. redirecionamos a saída do comando ls para ___________________________________________________________________________ Pág. comando. stdout. São 3 os operadores de redirecionamento: Operadores de Saída de dados padrão (stdout): “>” e “>>” Sua função é redirecionar o fluxo de caracteres da stdout (que pode ser a saída de um comando. que visualizamos no monitor. porém atua em um “canal” diferente. o resultado que o comando nos mostra é justamente a saída padrão. Saída de dados padrão (/dev/stdout) Dispositivo pelo qual os programas normalmente enviam seus resultados de execução. Esses operadores dizem basicamente para onde os caracteres tem que ir (stdin.

Esse arquivo não existia anteriormente. Novo conteúdo Compare com o exemplo anterior. e não para o ___________________________________________________________________________ Pág. Para concatenar o arquivo de saída ao invés de sobrescrever o seu conteúdo. utilizamos “dois” operadores de redirecionamento da stdout (>>). $ echo "Novo conteúdo" >> arquivo.txt $ cat arquivo. Acionamos o comando cat. como no exemplo abaixo: Exemplo D: $ cat arquivo.txt $ cat arquivo-novo. Pressione [Enter] Pressione [CTRL]+[D] $ cat arquivo. o redirecionamento “0>” diz para o fluxo de caracteres ser enviado de volta para a entrada padrão (Descritor de arquivo 0.txt Um simples arquivo de texto. efetuamos outro redirecionamento. Repare que o conteúdo do arquivo foi sobrescrito com o redirecionamento efetuado.txt $ cat arquivo. mas foi criado devido ao redirecionamento. 112 . Na verdade. Erivelton Rodrigues Nunes um arquivo chamado listagem.txt e constatamos isso com o comando cat. Exemplo B: $ cd ~/exercicios/redirecionamento/ $ cat > arquivo.txt algum texto novo $ cat arquivo. Exemplo C: $ cat arquivo. enviamos o redirecionamento da saída padrão “de volta” para a entrada padrão.txt.txt Novo conteúdo Ainda com o mesmo arquivo de testes.txt $ cat arquivo. e instruímos o bash para redirecionar a saída de dados padrão para um arquivo chamado arquivo.txt Um simples arquivo de texto. conforme tabela anterior).txt Um simples arquivo de texto.txt algum texto novo Primeiro sobrescrevemos o conteúdo do arquivo arquivo.txt $ cat arquivo.txt $ echo "algum texto novo" 0> arquivo.txt Um simples arquivo de texto. dessa vez com a saída do comando echo. $ echo "Novo conteúdo" > arquivo.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.txt Um simples arquivo de texto.txt > arquivo-novo. Repare que o conteúdo do arquivo é exatamente a saída do comando ls. Logo depois.txt algum texto $ echo "algum texto novo" 0> arquivo. Exemplo E: $ echo "algum texto" > arquivo. sem nenhum argumento.

Como a função do comando cat é enviar para a stdout o conteúdo que lhe for passado (geralmente um arquivo). é familiarizar o administrador com o fluxo correto das informações no shell bash. podemos concatenar o fluxo de caracteres utilizando dois operadores p/ o mesmo sentido. Este redirecionamento serve principalmente para marcar o fim de exibição de um bloco. Novo conteudo $ cat < arquivo. Exemplo B: $ cat << final > este texto > sera mostrado > ate que a palavra final > seja encontrada > sozinha na linha > final este texto sera mostrado ate que a palavra final seja encontrada sozinha na linha ___________________________________________________________________________ Pág.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. podemos redirecionar novamente ele. mas agora para um “novo arquivo”.txt Um simples arquivo de texto. O primeiro é um simples “cat” no arquivo. Ainda no mesmo ambiente de testes dos exemplos anteriores (~/exercicios/redirecionamento). Erivelton Rodrigues Nunes arquivo de destino.txt Um simples arquivo de texto. por exemplo) para algum comando. 113 . Da mesma forma que o redirecionamento de saída de dados padrão. não muito comuns no dia-adia do administrador. mas também tem outras aplicações. Sua função é redirecionar o fluxo de caracteres da stdin (que pode ser um arquivo contendo argumentos a serem tratados por um comando. chamado arquivo-novo. Operadores de entrada de dados padrão: “<” e “<<” Não são amplamente utilizados quanto os operadores de saída de dados padrão. É por isso que o arquivo arquivo.txt ficou vazio após o redirecionamento com “0>”. o mesmo pode ser feito com um fluxo de dados (caracteres) vindo de um redirecionamento da stdin. só que utiliza o redirecionamento do arquivo arquivo. O segundo tem o mesmo resultado. Este é especialmente usado em conjunto com o comando cat. que agora sim recebe o conteúdo do redirecionamento. vamos aos exemplos: Exemplo A: $ cat arquivo. nesse caso “<<”. Novo conteudo Digitamos dois comandos no exemplo. assunto que tem peso muito alto em uma prova de certificação Linux como a Linux Professional Institute 1 (LPIC-1).txt. O intuito de mostrar redirecionamentos como esses.txt como argumento para o comando cat. Como o fluxo retorna para o shell.

Repare que concatenamos a saída da stderr. No redirecionamento seguinte.txt stdout.txt 2>>stderr. Erivelton Rodrigues Nunes Redirecionando a saída de erros padrão (stderr) Em quaisquer dos redirecionamentos aprendidos até agora.txt ls: inexistente. causando um erro no programa.txt bash: lss: command not found $ ls stderr. os comandos e scripts utilizam-se da saída de dados padrão para enviar o fluxo de caracteres a fim de notificar o usuário sobre o que está havendo no comando (a saída de uma listagem de arquivos com o comando ls.txt $ ls stderr.txt stdout.txt inexistente. Para enviar informações (caracteres) sobre erros provenientes scripts em execução. e assim não sobrescrevemos o conteúdo do arquivo stderr. é o descritor de arquivo.txt.txt $ cat stderr. Esses mesmos comandos e scripts utilizam-se de um “canal” diferente para enviar informações sobre erros em sua execução para o shell.txt).txt >stdout. por exemplo.txt (redirecionamento 2>).txt: Arquivo ou diretório não encontrado Após digitar um comando inexistente (lss). Recapitulando. que nos notifica através da stderr. Exemplo A: $ ls $ ls inexistente.txt Arquivo ou diretório não encontrado 2> erros. Exemplo B: $ rm arquivo. O comando ls utilizou-se da saída de erros padrão (stderr) para enviar um fluxo de caracteres a fim de notificar que não encontrou o arquivo especificado. A saída de nosso comando “inexistente” (vazia) foi redirecionada para o arquivo stdout. podemos utilizar para redirecionar a saída de erros padrão (stderr) ao invés da saída de dados padrão (stdout) utilizando o descritor de arquivo 2.txt $ ls inexistente.txt: > arquivo.txt $ ls stderr.txt 2>stderr. causamos um erro no shell. estes utilizam o descritor de arquivo 2. foram gerados dois fluxos de saída: Um deles envia para a stdout o nome do arquivo stderr.txt: $ cat arquivo.txt erros.txt.txt $ lss > stdout.txt) com o comando ls. ___________________________________________________________________________ Pág. a stderr é mostrada na tela.txt $ cat erros.txt Arquivo ou diretório não encontrado dos comandos e Tentamos propositadamente listar um arquivo inexistente (inexistente. que foi encontrado na listagem. No redirecionamento do comando ls.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.txt $ cat stderr. O segundo fluxo envia para a stderr uma notificação de que não foi possível encontrar o arquivo inexistente. 114 .txt.txt bash: lss: command not found ls: inexistente. nesse caso. que procurava listar 2 arquivos (stderr. redirecionamos a stderr para um arquivo chamado erros.txt e inexistente. e visualizamos assim a mensagem de erro.txt e a saída de erros padrão (stderr) foi redirecionada para o arquivo stderr.txt ls: inexistente. O “canal”.txt. Como o redirecionamento inicial que fizemos apenas redireciona a saída de dados padrão para o arquivo arquivo.txt.

só mostra na tela o nome do arquivo que contém o número 2. 115 . mostrando somente os comandos que contém a palavra mount. observe (e teste) alguns exemplos: $ ps aux |grep ^root |more $ ls -lR /usr/local |grep lib |grep rwxrwxr-x |more ___________________________________________________________________________ Pág. Exemplo B: $ ls /bin |grep mount mount mountpoint umount Listamos o conteudo do diretório /bin e utilizamos um pipe para “filtrar” a saída da listagem com o comando grep. arq2 e arq3. desde que cada um deles leia dados da saída padrão do comando anterior e escreva sua saída na entrada de dados do próximo comando. No decorrer do curso iremos nos deparar com diversas situações assim. a única coisa que muda é a filtragem do grep. mas por enquanto.). formando um encanamento. arq2 e arq3). que passa a mostrar os nomes dos arquivos que contém o número 2 ou 3. sem limitações quanto ao número de comandos a serem conectados. que por sua vez. No dia-adia de um administrador de sistemas Linux. o comando ls envia a lista dos 3 arquivos para a stdin do comando grep. Isso mantém o fluxo entre os comandos. Utilizamos o comando ls unido ao comando grep através de um pipe para filtrar nossa saída de texto (stdout) duas vezes. Na primeira vez. Depois. nesse caso são 2 arquivos. torna-se necessária a utilização de muitos pipes em uma mesma linha de comando para chegar em algum resultado em comum. nesse caso. Exemplo A: $ ls arq1 arq2 arq3 $ ls |grep 2 arq2 $ ls |grep [23] arq2 arq3 No diretório atual existem 3 arquivos (arq1.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. onde a água (fluxo de caracteres) irá passar. onde interconectamos os canos uns aos outros (comandos). arq2. Erivelton Rodrigues Nunes Redirecionamento com pipes: “|” O pipping é um recurso que permite conectar a saída de um comando na entrada de outro comando subseqüente. Encare o pipe como um encanamento (E realmente “pipe” significa “cano” em inglês. Ambiente: $ mkdir ~/redirecionamento/pipe -p $ cd ~/redirecionamento/pipe/ $ touch arq1 arq2 arq3 Primeiro criamos o nosso ambiente de exercícios.

txt. Em qualquer dos exemplos anteriores com pipe. . . Sintaxe: comando| tee [-a] [arquivo] Exemplo A: $ ls -la ~/exercicios | tee /tmp/listagem. é que o pipe envolve processamento entre comandos. a saída de um comando é enviado a entrada do próximo comando e o “>” redireciona a saída de um comando para um arquivo ou dispositivo (lembrando que dispositivos também não passam de arquivos especiais). Erivelton Rodrigues Nunes Diferenças entre o “|” e o “>” A principal diferença entre o “|” e o “>”. teria um resultado completamente diferente. Exemplo B: $ cat /etc/fstab |tee /tmp/listagem.txt total 1 drwxr-xr-x 5 erivelton erivelton 128 2004-11-30 drwxr-xr-x 27 erivelton erivelton 1144 2004-12-01 drwxr-xr-x 3 erivelton erivelton 96 2004-11-01 drwxr-xr-x 2 erivelton erivelton 112 2004-12-01 drwxr-xr-x 2 erivelton erivelton 144 2004-11-01 21:15 16:56 15:40 13:36 19:19 21:15 16:56 15:40 13:36 19:19 .. pois sua função é redirecionar o fluxo de caracteres que lhe foi passado (por um pipe. se o comando “ls /bin |grep mount” fosse substituído por “ls /bin >grep mount” (o pipe trocado por >).user.txt /dev/hda2 / reiserfs defaults /dev/hda5 none swap sw proc /proc proc defaults /dev/fd0 /floppy auto user. ou seja. seria como redirecionar a saída de um comando p/ um arquivo e continuar vendo a saída na tela normalmente. No “Exemplo B”. Comando tee É importante saber do comando tee nesse ponto do estudo.. pois iria redirecionar a saída do comando ls para um arquivo chamado grep. 116 . um resultado diferente seria obtido usando um “>” no lugar do “|”.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.noauto /dev/cdrom /cdrom iso9660 ro. Em miúdos.txt total 1 drwxr-xr-x 5 erivelton erivelton 128 2004-11-30 drwxr-xr-x 27 erivelton erivelton 1144 2004-12-01 drwxr-xr-x 3 erivelton erivelton 96 2004-11-01 drwxr-xr-x 2 erivelton erivelton 112 2004-12-01 drwxr-xr-x 2 erivelton erivelton 144 2004-11-01 $ cat /tmp/listagem.noauto /dev/hda1 /boot ext3 defaults 0 0 0 0 0 0 0 0 0 0 0 2 ___________________________________________________________________________ Pág. chmod redirecionamento umask A saída do comando foi mostrada normalmente na tela e ao mesmo tempo gravada no arquivo listagem. por exemplo) para um arquivo (tal como um simples redirecionamento “>”) e ao mesmo tempo mostra na tela (stdout) o mesmo conteúdo que foi redirecionado. chmod redirecionamento umask .

AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Exemplos: ps ax |more ps ax |less ls /etc |less ___________________________________________________________________________ Pág. ao invés de sobrescrito. Para sair do more pressione [q]. o more efetua uma pausa e permite que você pressione [Enter] ou [espaço] para continuar avançando no arquivo.noauto /dev/cdrom /cdrom iso9660 ro.txt /dev/hda2 / reiserfs defaults /dev/hda5 none swap sw proc /proc proc defaults /dev/fd0 /floppy auto user. Os páginadores são amplamente utilizados para paginar fluxos de texto. porém permite recuarmos o texto que já rolou a tela. Tabela de Redirecionamentos A tabela abaixo mostra um resumo das funções de cada operador de redirecionamento. sendo um “paginador” mais eficiente que o more. Erivelton Rodrigues Nunes $ ls ~/exercicios |tee -a /tmp/listagem. Quando toda a tela é ocupada.user. 117 .noauto /dev/hda1 /boot ext3 defaults chmod redirecionamento umask 0 0 0 0 0 0 0 0 0 0 0 2 Utilizando a opção -a. Redirecionador comando > arquivo comando < arquivo comando >> arquivo comando << arquivo comando 2> arquivo comando 2>> arquivo comando1 | comando2 Função Redireciona a saída de dados padrão (stdout) Redireciona a entrada de dados padrão (stdin) Concatena a saída de dados padrão (stdout) Concatena a entrada de dados padrão (stdin) Redireciona a saída de erros padrão (stderr) Concatena a saída de erros padrão (stderr) Utiliza a stdout do comando1 como stdin do comando2 Paginadores O comando more pode ser utilizado para leitura de arquivos que ocupem mais de uma tela.txt chmod redirecionamento umask $ cat /tmp/listagem. o conteúdo do arquivo de destino será concatenado. O comando less também segue o mesmo propósito geral.

O “*” é antigo conhecido até mesmo dos tempos de DOS. esses caracteres especiais são assim entitulados porque desempenham funções que vão além de simples caracteres. devemos criar o ambiente de testes. somente esses foram mostrados. Para casar uma pesquisa com agrupar o metacaractere “?”. o ls listou os arquivos que contivessem bra. para obter o mesmo resultado. seguidos de qualquer caractere. Como haviam dois arquivos que casavam com os critérios. Exemplo B: $ $ ls bra* brasil brazil $ ls *rasil brasil Brasil O metacaractere * é muito mais fácil de entender. Um bom conhecimento sobre metacaracteres é determinante durante uma prova para certificação em Linux. Erivelton Rodrigues Nunes Caracteres especiais do bash (Metacaracteres) Também conhecidos como metacaracteres (ou wildcards). podemos ___________________________________________________________________________ Pág. Exemplo A: $ ls bra?il brasil brazil $ ls ?ra?il brasil Brasil brazil Brazil No primeiro comando. 118 . basta um único asterisco: *. onde era utilizado da seguinte forma para referenciar todos os arquivos do diretório: *. Ambiente: $ mkdir -p ~/exercicios/metacaracteres $ cd ~/exercicios/metacaracteres/ $ touch brasil brazil Brasil Brazil BRASIL BRAZIL $ ls brasil Brasil brazil Brazil BRASIL BRAZIL Antes de começar com os exercícios. Os principais deles são “?” e “*”. quantas vezes for necessário. e terminavam com il.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. um para o primeiro e outro para o quarto caractere do arquivo. Exemplo C: $ touch casa casas casais casinhas $ ls casa?? Casais $ ls casa* casa casais casas $ rm -fv cas* removed `casa' um determinado número de caracteres. pois casa com qualquer coisa.*. No segundo comando foi utilizado dois metacaracteres. No Linux. O metacaractere “?” substitui um caractere qualquer no nome de um arquivo. O que o diferencia do metacaractere “?” é que este casa com qualquer coisa somente uma vez.

119 . como apenas uma linha de comando. utilizamos o metacaractere “. que listaria arquivos que iniciem com casa e possam ou não conter quaisquer outros caracteres depois (casa*). podemos utilizar outros metacaracteres como “[ ]” para melhor filtrar os critérios a serem passados a linha de comando. diferente do segundo ls. nesse caso. Repare em como utilizamos os metacaracteres para listar os arquivos que contenham dois números no início do nome. pode ser conseguido com [abcdefghijk]. Exemplo D: $ ls brasil Brasil $ ls [Bb]rasil brasil Brasil $ ls ?ra[sz]il Brasil Brazil BRASIL brazil Brazil BRAZIL Repare em todos os arquivos que existem atualmente no diretório e quais arquivos foram selecionados pelo comando ls.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Executando múltiplos comandos em ordem determinada Podemos desencadear a execução de diversos comandos em ordem. pois é de extrema importância em um exame de certificação como o Linux Professional Institute 101 (LPI-101). O próximo ls mostra os arquivos cujo primeiro caractere é um número somente seguido da palavra “brasil”.”. Quando tentamos listar os arquivos cujo primeiro caractere seja alguma letra entre c e z e o restante da palavra seja “rasil”. Também é possível especificar um range de letras ou números dentre os metacaracteres “[ ]” para facilitar nossas buscas. Não esqueça de remover os arquivos conforme o exemplo. Pratique isso bastante. Alternativamente. ___________________________________________________________________________ Pág. para que não atrapalhe nos outros exemplos. O mesmo resultado de [a-k]. Erivelton Rodrigues Nunes removed `casais' removed `casas' removed `casinhas' Os critérios do comando ls era basicamente qualquer arquivo que comece com “casa” e contenha mais dois caracteres quaisquer (casa??). Conforme exemplo abaixo. É apenas uma forma mais fácil de se expressar a mesma coisa. por exemplo. Para tal. Exemplo E: $ touch 1brasil 2brasil 11brasil 22brasil $ ls [a-z]rasil brasil Brasil $ ls [c-z]rasil ls: [c-z]rasil: Arquivo ou diretório não encontrado $ ls [0-9]brasil 1brasil 2brasil $ ls [0-9][0-9]brasil 11brasil 22brasil Listamos primeiramente todos os arquivos cujo primeiro caractere é alguma letra entre a e z (O ls. nenhum é encontrado. não faz distinção de maiúsculas e minúsculas) e o restante da palavra seja “rasil”. seguidos pela palavra “brasil”.

sem interferir no valor das variáveis fora.2. que foi executado assim que o ls executou. echo “Outro Comando” brasil Brasil Outro Comando A primeira linha da saída é resultado do comando ls. Esse sistema não deve ser novidade para nós.txt arquivo3-a. Para tal façanha. em seguida arquivo1b. rm * $ touch arquivo{1.doc arquivo2-c.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.txt arquivo1-b.c}. Exemplo B: $ numero=2 $ (numero=1. e assim por diante.txt arquivo2-a. Erivelton Rodrigues Nunes Exemplo A: $ ls ?rasil .txt arquivo2-c. já a segunda refere-se ao comando echo.b.txt arquivo2-b. mas depois se torna simples. o bash interpretou o seguinte: Primeiro formou-se o parâmetro arquivo1-a. deixando o comando com a seguinte aparência: ___________________________________________________________________________ Pág. Este é um outro tópico de grande peso em provas para certificações Linux de nível básico. echo "Dentro: $numero" ). Repare que dentro dos parênteses essa variável tem o valor 1. É imprescindível um bom domínio sobre esse tipo de metacaracteres.txt arquivo3-b. Graças aos 3 blocos de chaves. Analise os exemplos.doc arquivo2-b. Foi definido o valor 2 para a variável $numero. echo "Fora: $numero" Dentro: 1 Fora: 2 Podemos “agrupar” comandos entre parênteses para “proteger” o conteúdo de variáveis.doc arquivo1-c. pois a “clausura” imposta pelos parênteses impede que qualquer variável ali criada altere as já existentes.doc arquivo2-a.doc arquivo1-b. agrupamos diversas instâncias do mesmo comando. Também é possível simplificar parâmetros dos comandos.doc arquivo3-c. A princípio é um pouco confuso entender.{txt.doc arquivo3-a.doc} $ ls arquivo1-a.txt arquivo1-c. mais precisamente 18 vezes. mas fora continua tendo o valor 2. Exemplo C: $ cd ~/exercicios/metacaracteres. pois questões assim costumam ter um baixo nível de acertos. A ordem completa pode ser constatada apenas trocando o comando touch pelo comando echo.doc. o bash nos dispõe dos metacaracteres “{ }” (chaves).3}-{a. pois já utilizamos por diversas vezes até agora no decorrer do curso. permitindo que o valor de alguma variável de shell seja diferente para os comandos entre parênteses. 120 .doc arquivo3-b.txt arquivo3-c.txt Com apenas um comando touch.txt.doc arquivo1-a. depois arquivo1-a.txt.

AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. o comando echo foi executado. Após a criação do arquivo arquivo.3}-{a.doc arquivo1-b. Mas aqui eles até que são bem simples de compreender.doc arquivo2-c.txt arquivo3-c.txt Causamos um erro no comando ls.doc arquivo2-a.doc arquivo1-c.txt arquivo1-a. Esse tipo de agrupamento é muito importante para criar condicionais para rotinas de administração do sistema. Algo como um comando reserva.c}.doc arquivo2-b.txt 2>/dev/null || echo "Arquivo Nao existe" Arquivo Nao existe $ touch arquivo.txt $ ls arquivo.txt arquivo2-a.txt 2>/dev/null || echo "Arquivo Nao existe" arquivo. por exemplo. O operador de controle AND é representado por dois sinais de “&”. Só ejetar a fita DAT se o backup for concluído com êxito.txt Repare que o comando echo entrou em ação devido ao comando ls ter falhado. pois o arquivo arquivo.txt arquivo2-c.txt 2>/dev/null && echo "Arquivo Encontrado" $ touch arquivo.txt não existia no diretório (Repare que direcionamos a stderr para uma saída nula).txt arquivo3-a.doc arquivo3-b.b. muito utilizado em scripts para notificação caso algum comando falhe.doc arquivo3-a. Devido ao comando ls não ter obtido êxito. Ele age basicamente da seguinte forma: O comando após o operador de controle OR somente será executado caso o primeiro falhe. serve para agrupar comandos e somente executar o próximo comando caso o primeiro tenha obtido sucesso. o que não ___________________________________________________________________________ Pág.doc Agora não esqueça de limpar a bagunça: $ rm * Operadores de controle lógico: && e || (AND e OR) O shell bash também dispõe de metacaracteres operadores de controle lógico. que é representado por dois sinais de pipe “||”.doc arquivo3-c.txt.txt $ ls arquivo.doc} arquivo1-a.txt arquivo1-c. Erivelton Rodrigues Nunes $ echo arquivo{1.txt arquivo1-b. Exemplo B: $ ls arquivo. Temos também o operador de controle OR.{txt. Exemplo A: $ ls $ ls arquivo.2. 121 .txt 2>/dev/null && echo "Arquivo Encontrado" arquivo. os conhecidos AND e OR de diversas linguagens de programação.txt arquivo3-b.txt Arquivo Encontrado $ rm arquivo.txt arquivo2-b. o comando echo não foi executado.

. Caso o nome de um arquivo ou o argumento de um comando contenha um caractere que porventura seja igual a um metacaractere. Expressões Regulares nada mais é do que um conjunto de expressões que podem filtrar e/ou encontrar determinados padrões dentro de arquivos e qualquer outra coisa que você imaginar. basta preceder o caractere com uma barra invertida “\”.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. etc) para encontrar alguns padrões que sejam necessários para o término do programa..txt. Perceba como é fácil listar somente os subdiretórios de /etc utilizando ls e grep e com uma pequena ajudinha de uma RE. Entendendo a RE "^d" O que ocorreu foi que o comando ls listou todo o conteúdo do diretório /etc e passou essa saída para o comando grep (utilizando pipe |) que por sua vez pegou apenas o que nos interessava (subdiretórios) com a RE ^d que significa: ^  início de linha d  a letra "d" no início da linha (o que simboliza um diretório) Vamos conhecer algumas espressões interessantes ___________________________________________________________________________ Pág. AWK e GREP que são encontradas na maioria das distribuições Linux. esse deve ser “escapado” pelo shell. Vamos começar com o básico dos básicos. Utilizando RE's para listar somente subdiretórios com "ls e grep": [usuario@localhost /etc]$ ls -l|grep "^d" drwxr-xr-x 3 root root 4096 Dec 11 18:55 init. ou seja... Mas elas (RE's) também podem ser utilizadas em linhas de comando e com as excelentes ferramentas GNU SED. Utilização Geralmente as RE's são utilizadas dentro de programas (Shell.. C. Perl. Expressões Regulares As Expressões Regulares (RE's) realmente podem facilitar a nossa vida.. Erivelton Rodrigues Nunes ocorreu mais após criarmos o arquivo arquivo. utilizando RE's na linha de comando para efetuar algumas tarefas no Linux.. . Para tal. 122 .d drwxr-xr-x 2 root root 4096 Dec 11 18:46 network drwxr-xr-x 17 root root 4096 Jan 25 20:38 X11 .

Expressão Regular ^ $ [a-z] [a-z]\{1. mais já da para ter uma idéia do que podemos fazer. maiúsculas e números) qualquer literal que NÃO esteja entre "a" e "z" (minúsculas e maiúsculas) qualquer dígito de "0" até "9" qualquer dígito que NÃO esteja entre "0" e "9" qualquer aspas (caracteres especiais precisam ser protegidos pela barra invertida "\") encontra "a" ou "b" ou "c" (proteger pipes e parânteses é fundamental) Essa tabela não mostra todos os tipos de expressões que podem ser utilizados. Exemplos Encontrar todas as ocorrências da palavra "linux" no início de cada linha do arquivo "termcap": [usuario@localhost /etc]$ grep "^linux" termcap linux|linux-lat|linux console:\ Encontrar todas as ocorrências da palavra "linux" que comece e termine na mesma linha dentro ___________________________________________________________________________ Pág. 123 . Isso deve ser feito com a barra invertida "\". Erivelton Rodrigues Nunes OBS: É preciso protejer caracteres especiais em RE's.2\} [a-z]\{2\} [^a-z] [A-Z] [^A-Z] [a-zA-Z] [a-zA-Z0-9] [^a-zA-Z] [0-9] [^0-9] \" \' \? \! \& \* \^ \/ \~ \(a\|b\|c\) Significado início de linha final de linha qualquer literal de "a" até "z" (minúsculas) qualquer literal de "a" até "z" (minúsculas) no mínimo 1 vez e no máximo 2 vezes qualquer literal de "a" até "z" (minúsculas) 2 vezes literal que NÃO esteja entre "a" e "z" (minúsculas) qualquer literal de "A" até "Z" (maiúsculas) qualquer literal que NÃO esteja entre "A" e "Z" (maiúsculas) qualquer literal de "a" até "z" (minúsculas e maiúsculas) qualquer caractere imprimível (minúsculas.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.

4\}-[0-9]\{4\}$" 82-5576 $ echo 8232-5576|grep "^[0-9]\{2. 124 .4\}-[0-9]\{4\}$" 822-5576 $ echo 822-55768|grep "^[0-9]\{2. Erivelton Rodrigues Nunes do arquivo "termcap": [usuario@localhost /etc]$ grep "^linux$" termcap linux Encontrar todas as ocorrências da palavra "linux" no final de cada linha do arquivo "termcap": [usuario@localhost /etc]$ grep "linux$" termcap # * Added 7 newly discovered.4\}-[0-9]\{4\}$" $ echo 82-5576|grep "^[0-9]\{2. Na linha de comando ou em shell scripts é necessário utilizar barra invertida para proteger ___________________________________________________________________________ Pág.8\}$" testando $ echo testando|grep "^[a-z]\{8\}$" testando $ echo testando|grep "^[a-z]\{9.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.4\}-[0-9]\{4\}$" $ echo sim|grep "^\(sim\|não\|talvez\)$" sim $ echo não|grep "^\(sim\|não\|talvez\)$" não $ echo talvez|grep "^\(sim\|não\|talvez\)$" talvez $ echo seilá|grep "^\(sim\|não\|talvez\)$" Esses são pequenos exemplos de como você pode utilizar RE's na linha de comando ou em seus scripts. undocumented acsc characters to linux Uma boa ferramenta para se treinar RE's é o comando echo: $ echo testando|grep "[a-z]" testando $ echo 123|grep "[a-z]" $ echo testando|grep "^[a-n]" $ echo 12345|grep "[0-9]" $ echo testando|grep "^[a-z]\{3.4\}-[0-9]\{4\}$" 8232-5576 $ echo 82325576|grep "^[0-9]\{2. O conceito de RE's é valido para todas as linguagens que a utilizam. como por exemplo a barra invertida que não é utilizada em outras linguagens para proteger caracteres especiais. com excessão de alguns detalhes que mudam.10\}$" $ echo 23333|awk '/[0-9]*/ {print}' 23333 $ echo 22/02/2000|grep "[0-3][0-9][-/][0-1][0-9][-/]2000" 22/02/2000 $ echo 22/02/2001|grep "[0-3][0-9][-/][0-1][0-9][-/]2000" $ echo 22-02-2000|grep "[0-3][0-9][-/][0-1][0-9][-/]2000" 22-02-2000 $ echo 22-02-2000|grep "[0-3][0-9][-/][0-1][0-9][-/]\(2000\|2001\)" 22-02-2000 $ echo 22-02-2001|grep "[0-3][0-9][-/][0-1][0-9][-/]\(2000\|2001\)" 22-02-2001 $ echo 22-02-2002|grep "[0-3][0-9][-/][0-1][0-9][-/]\(2000\|2001\)" $ echo 822-5576|grep "^[0-9]\{2.

apesar de ser um interpretador de comandos. onde digitamos comandos “interativamente”. Quando um shell interativo de login é finalizado. then PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/ bin/X11" else PATH="/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games" fi if [ "$PS1" ]. em seguida no arquivo ~/. shell interativo de login. Estudaremos a seguir cada um desses arquivos. 125 . IMPORTANTE Os arquivos /etc/bashrc e ~/. caso ele exista. Quando o bash é invocado como um shell interativo de login. É possível carregar um shell desse tipo invocando-se o comando bash. primeiro ele verifica a existência do arquivo /etc/profile.bash_profile. O importante a saber é que o bash não procura por esses arquivos nestas circunstâncias.bash_logout.bash_profile podem “chamar” alguns desses arquivos e executá-los. os comandos nele contidos serão lidos e executados. O shell bash pode ser iniciado de forma interativa e não interativa. que é o shell carregado quando efetuamos o login.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. o bash lê e executa os comandos contidos no arquivo ~/. também é um programa instalado no sistema. nessa mesma ordem. Erivelton Rodrigues Nunes caracteres especiais porque o shell vai tentar interpretar esses caracteres e esse não é o nosso interesse. A seguir veremos exemplos dos arquivos comentados nessa seção. Um shell não-interativo é um shell pouco usado. e quais suas respectivas funções.bashrc não são lidos pelo bash quando invocamos um shell interativo de login. e o shell interativo comum. por exemplo). As distribuições Linux já costumam disponibilizar estes arquivos com prévias configurações funcionais do bash. o bash somente lê e executa os comandos contidos nos arquivos /etc/ bash. que não recebe comandos diretamente e só serve para executar um comando ou script (“bash -c comando”. Esses arquivos são lidos quando o bash é invocado. e isto geralmente é feito quando determinado usuário efetua login no sistema. Arquivo /etc/profile if [ "`id -u`" -eq 0 ]. ~/. Configuração do shell bash O shell bash. Após ler e executar esse arquivo.bashrc (ou /etc/bashrc em algumas distribuições). porém alguns scripts como o /etc/profile ou ~/. lendo e executando os comandos presentes nesses arquivos. then ___________________________________________________________________________ Pág. caso exista. é o shell que conhecemos. que é o shell carregado manualmente após um login. o bash faz o mesmo com o arquivo ~/. Se o shell bash for invocado de forma interativa comum (Não é um shell de login). Este tipo de shell se divide em duas formas.bashrc.bash_login e ~/. Um shell interativo. que conta com seus arquivos de configuração.profile.

then # MANPATH=~/man: # export MANPATH #fi Este arquivo possui uma rotina que verifica a existência de um outro arquivo chamado ~/.bashrc. then debian_chroot=$(cat /etc/debian_chroot) fi # set a fancy prompt (non-color) ___________________________________________________________________________ Pág. shopt -s checkwinsize # set variable identifying the chroot you work in (used in the prompt below) if [ -z "$debian_chroot" -a -r /etc/debian_chroot ]. a aparência do prompt (Variável $PS1) e configura a umask padrão. Erivelton Rodrigues Nunes if [ "$BASH" ].defs #umask 022 # include . # To enable the settings / commands in this file for login shells as wel .bashrc ]. if necessary. # the default umask is set in /etc/login. then . # see /usr/share/doc/bash/examples/startup-files for examples. # If not running interactively. 126 . then PS1='# ' else PS1='$ ' fi fi fi export PATH umask 022 Repare que este arquivo configura o PATH dos comandos. e caso este arquivo exista.bash_profile # ~/. # the files are located in the bash-doc package.bashrc file for interactive bash(1) shel s. then PS1='\u@\h:\w\$ ' else if [ "`id -u`" -eq 0 ]. será executado pelo bash.bashrc if it exists if [ -f ~/. don't do anything [ -z "$PS1" ] && return # check the window size after each command and. Arquivo ~/. Arquivo /etc/bash.bash_profile: executed by bash(1) for login shel s.bashrc fi # the rest of this file is commented out.bashrc ou /etc/bashrc # System-wide .AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. # set PATH so it includes user's private bin if it exists #if [ -d ~/bin ] . then # PATH=~/bin:"${PATH}" #fi # do the same with MANPATH #if [ -d ~/man ]. # update the values of LINES and COLUMNS. ~/. # this file has to be sourced in /etc/profile.

don't do anything: [ -z "$PS1" ] && return # don't put duplicate lines in the history. See bash(1) for more options #export HISTCONTROL=ignoredups # check the window size after each command and.${USER}@${HOSTNAME}: ${PWD}\007"' .bashrc # ~/.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.. then # . /etc/bash_completion #fi Repare na existência de opções que podem ser habilitadas apenas descomentando as linhas corretas. # update the values of LINES and COLUMNS. then # .bashrc: executed by bash(1) for non-login shells. #shopt -s checkwinsize # enable color support of ls and also add handy aliases if [ "$TERM" != "dumb" ]. if necessary. if it's already enabled in /etc/bash. esac # enable programmable completion features (you don't need to enable # this. 127 . #if [ -f /etc/bash_completion ].34m\] \w\[\033[00m\]\$ ' # If this is an xterm set the title to user@host:dir case $TERM in xterm*|rxvt*) PROMPT_COMMAND='echo -ne "\033]0. Arquivo ~/.bashrc). # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples # If not running interactively. Este arquivo também foi retirado de um sistema Debian. then # debian_chroot=$(cat /etc/debian_chroot) #fi # set a fancy prompt (non-color) PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' # Comment in the above and uncomment this below for a color prompt #PS1='${debian_chroot:+($debian_chroot)}\[\033[01. Erivelton Rodrigues Nunes PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' # enable bash completion in interactive shells #if [ -f /etc/bash_completion ]. then eval `dircolors -b` alias ls='ls --color=auto' #alias dir='ls --color=auto --format=vertical' #alias vdir='ls --color=auto --format=long' fi # some more ls aliases #alias ll='ls -l' #alias la='ls -A' #alias l='ls -CF' # set variable identifying the chroot you work in (used in the prompt below) #if [ -z "$debian_chroot" -a -r /etc/debian_chroot ].bashrc de uma distribuição Debian. ___________________________________________________________________________ Pág. *) . /etc/bash_completion #fi Arquivo /etc/bash..32m\]\u@\h\[\033[00m\]:\ [\033[01.

que não existe no Linux. que é um dos comandos integrados ao shell bash. Como o comando alias (sem nenhum argumento) podemos listar os alias atualmente configurados no shell atual.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.bash_logout: $ echo “echo Ate Logo. que desaparecerá ao pressionarmos qualquer outra tecla.bash_logout Em seguida.. Aliases de shell Aliases de shell são formas de se “apelidar” comandos.bash_logout Este arquivo não costuma existir por padrão em algumas distribuições Linux. read” > ~/. Erivelton Rodrigues Nunes Arquivo ~/. como tty1. É importante frisar que este arquivo somente será executado ao sairmos de um shell bash interativo de login. Como dito anteriormente. armazena os últimos comandos digitados pelo usuário. Aliases são definidos com o comando alias. Caso deseje apagar um alias. ..bash_history Arquivo já estudado anteriormente. que podem se tornar necessárias com o tempo. será mostrada a mensagem “Ate Logo.” na tela. Sintaxe: alias nome=”qualquer comando valido do shel ” Exemplo A: $ alias alias ls='ls --color=auto' $ alias cls="clear" $ alias alias cls='clear' alias ls='ls --color=auto' $ cls Definimos um alias para o comando cls (velho conhecido do DOS). Ao sairmos. Execute o comando abaixo para criar um novo ~/.. utilize o comando unalias. efetue logout do terminal de login (Faça em um terminal texto.. por exemplo). criamos um alias para que quando o usuário digitar o comando cls. Como o comando clear tem o mesmo efeito em sistemas Linux. criando comandos intermediários de atalho para eles. o sistema execute clear. Arquivo ~/. Exemplo B: alias desligar=’shutdown -h now’ alias reiniciar=’shutdown -r now’ alias ls=’ls –-color’ ___________________________________________________________________________ Pág. a função desse arquivo é executar alguma(s) tarefa(s) ao sairmos do sistema. 128 .

Os principais caracteres de escape são: ' (aspas simples). Para tornar os aliases permanentes. date" Este atalho deve ser escrito no arquivo /etc/bashrc. e \ (barra invertida). 129 .bashrc costuma ter alguns aliases já prédefinidos ou comentados. Exemplo B: $ echo "Um teste 'simples' demais" Um teste 'simples' demais $ echo 'Um teste 'simples' demais' ___________________________________________________________________________ Pág. Qualquer caractere logo após a \ é considerado literalmente. Escape de Comandos no bash É importante que o administrador de sistemas Linux esteja habituado com o escape de comandos no shell. Colocar uma \ no final da linha diz ao bash para não interpretar a quebra de linha.bashrc ou ~/.bashrc caso queira restringir os novos aliases somente para algum(ns) usuário(s) do sistema. crie o arquivo com vi e salve-o no diretório /etc com o nome bashrc. A diferença entre as aspas é que no caso das simples.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Os alias definidos na linha de comando manualmente se perdem ao saírmos do shell atual. O escape de comandos refere-se a tudo que está compreendido entre as aspas duplas no comando. conforme exemplo abaixo: Exemplo A: $ echo "Existem `ls -l |wc -l` arquivos em $(pwd)" Existem 8 arquivos em /home/erivelton Ocorreram 2 substituições e 1 escape de comandos na linha acima.. basta adicioná-los ao arquivo /etc/bash. A segunda substituição refere-se a saída do comando pwd. que listou os arquivos no diretório e em seguida usou o comando “wc -l“para “contar” quantas linhas haviam na saída. A substituição de comandos é uma característica do bash (herdada de outros shells) que permite a um comando utilizar como parâmetro ou parte de um parâmetro a saída de outro comando que esteja enquadrado entre ` (crases) ou no formato $(comando). e continuar o comando na linha de baixo (vide exemplos). Erivelton Rodrigues Nunes alias alias alias alias cd-on=’mount /dev/cdrom’ cd-off=‘umount /dev/cdrom’ x=’startx’ limpa="clear . já entre as aspas duplas isso é permitido. que resultou em 8. Se não existir esse arquivo. Repare que as duas substituições de comandos foram efetuadas de formas diferentes. O mesmo acontece com as aspas duplas. Qualquer string adequada entre aspas simples será interpretada literalmente pelo shell. As duas substituições referem-se a saída do comando “ls -l |wc -l”. sem contar que é um tópico de peso para um exame de certificação Linux do nível proposto pelo treinamento. não é permitida a substituição de comandos (visto adiante). que mostra o caminho do diretório atual. “ (aspas duplas). O próprio ~/.

___________________________________________________________________________ Pág. 130 . Erivelton Rodrigues Nunes Um teste simples demais $ echo 'Um teste "simples" demais' Um teste "simples" demais Repare em como o escape de comandos atua.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Quando as aspas são iguais dentro e fora. o escape de comandos é anulado.

É bem simples. ama-a. existem dois tipos de páginas de manual: As mais antigas. Atualmente. e ela te guardará. utilizamos o comando man. Geralmente os comandos contam com parâmetros de ajuda no formato: “comando --help” ou “comando -h”. Uma página de manual é visualizada na forma de texto com rolagem vertical.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. 131 . Também é comum encontrar documentação para arquivos de configuração do sistema. Os comandos e termos costumam estar documentados nas chamadas páginas de manual e diretório de documentação. Para “acessar” as man pages. No Linux. porém ainda amplamente utilizadas são as “man pages” e o formato mais recente de documentação que são as “info pages”. e ela te protegerá” Provérbios 4. Páginas de manual As páginas de manual definem um padrão com que os programas instalados devem dispor a documentação. basta analisar os arquivos dentro do diretório /usr/share/doc/bash. O diretório de documentação de um sistema Linux costuma ser /usr/share/doc. para obter mais informações sobre o bash. por mais experiente que seja. Essas informações podem ser acessadas pelo próprio sistema. saiba consultar a documentação do sistema. É de grande importância que o administrador. Estudaremos com mais cautela cada uma delas. com seus diversos comandos e termos. Man pages As páginas de manual no formato de “man pages” acompanham quase todos os programas GNU/Linux. As páginas de manual são ligeiramente mais complexas. Dentro desse diretório existem diversos subdiretórios que hospedam documentação sobre os comandos e termos relacionados. Para ler a página de manual do comando ls. mas iremos estudá-las em seguida. existem alguns padrões de documentação que servem como repositório de informações sobre os comandos e termos relacionados ao sistema. por ___________________________________________________________________________ Pág. e não somente para comandos. Por exemplo. Sintaxe: man [seção] termo Sua utilização é bem simples. Erivelton Rodrigues Nunes DOCUMENTAÇÃO “Não desampares a sabedoria.6 Documentação é essencial no que tange o sistema operacional Linux. Isso facilita bastante a busca por informações sobre determinado parâmetro de comando. Elas trazem uma descrição da funcionalidade de cada comando ou programa e detalhes sobre o funcionamento dos parâmetros.

tecla [r]. Caso queira acessar a página de manual do crontab da seção 5 ao qual ele também pertence. para sair [q]. Estas seções estão descritas na tabela a seguir. como as seções são numeradas e estão em ordem crescente. a primeira linha seria assim: CRONTAB(1) CRONTAB(1) Para navegar na página de manual. Para Atualizar a tela. Nesse caso do crontab. que costuma mostrar nas duas extremidades o nome da página de manual seguida do número da seção entre parênteses. muitas vezes organizadas por links simbólicos. A primeira linha da saída é o cabeçalho. Os arquivos de man pages ficam armazenados no diretório /usr/share/man. No caso da seção 5 do comando crontab. o man irá nos mostrar a primeira página de manual sobre o comando crontab que ele encontrar. [PGUP] e [PGDOWN]. talvez mude) Dessa forma. como é o caso do comando crontab que é documentado na seção 1 (sobre o próprio comando) e 5 (formato do arquivo de configuração para o comando). Erivelton Rodrigues Nunes exemplo. utilizamos “man ls”.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. foram definidas seções para as páginas de manual deste formato. ao digitarmos ”man crontab”. nesse caso a seção 1. pois é possível que a documentação de um programa exista em 2 ou mais categorias. o man irá mostrar a primeira seção sobre o comando encontrada. utilizamos as setas do teclado. utilizamos o comando da seguinte forma: man 5 crontab Uma man page segue um formato padrão para dispor as informações na página. 132 . Sendo assim. podemos direcionar nossa busca por documentação para uma página de manual específica. ___________________________________________________________________________ Pág. Seção 1 2 3 4 5 6 7 8 9 Descrição Programas executáveis ou programas do shell Chamadas do sistema (Funções providas pelo Kernel) Chamadas de biblioteca (Funções providas por bibliotecas do sistema) Arquivos especiais (Geralmente arquivos dentro do diretório /dev) Arquivos de configuração Jogos Miscelânea (Qualquer coisa que não se enquadrar nas demais) Comandos de administração do sistema (Geralmente os que ficam em /sbin) Rotinas do Kernel (Ainda não é o padrão. Lá existem diversos subdiretórios que referenciam as respectivas seções em diversos idiomas disponíveis. Para facilitar a organização das man pages.

Sua principal diferença é a inclusão de um novo sistema de navegação através das páginas. Erivelton Rodrigues Nunes Utilize o comando man -w manpage para descobrir em que seções das páginas de manual o termo pesquisado reside. nos levará até a seção correspondente. É um pouco mais simples do que as man pages. que não sabemos exatamente para que serve. a info pages mostra a lista de todos os manuais de comandos e programas disponíveis. pois não está dividida em seções (ainda). Sintaxe: info [comando ou programa] Tabela de Navegação Tecla q ? n p u m d Exemplo: $ info ls Função Sai da info page Mostra a tela de ajuda de navegação Avança uma página Volta uma página Sobe um nível de página Abre mecanismo de busca para localizar uma página dentro das info pages Volta ao índice de documentos Sistema de buscas na documentação do sistema Algumas vezes nos deparamos com alguma situação em que precisamos obter informações sobre “algo”. 133 .AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. ___________________________________________________________________________ Pág. a info page nos levará a seção correspondente. A navegação da info pages é feita através de nomes marcados com um“*” (hipertextos) que se pressionarmos [Enter]. Se o nome do comando ou programa não for digitado. Se pressionarmos [Enter] em cima de uma palavra destacada. Info Pages É considerada a evolução das man pages. que pode ser um comando ou termo relacionado. lembrando muito o conceito de páginas web. que agora permitem links umas entre as outras. (Sempre aparece aquele comando inusitado).

daemon to execute scheduled commands (Vixie $ apropos cron cron (8) . Isso permite efetuarmos buscas com base em termos de pesquisa. Já a outra forma é com o comando apropos. é preciso criar (ou atualizar.tables for driving cron $ whatis scheduled scheduled: nada apropriado. portanto. Criando a base de dados Antes de efetuarmos qualquer pesquisa. $ apropos scheduled cron (8) . o que se torna útil quando não sabemos exatamente o nome do comando.daemon to execute scheduled commands (Vixie Cron) Cron) (V3) Cron) ___________________________________________________________________________ Pág. 134 . que efetua a busca com base no “nome do comando”. que efetua a pesquisa com base em “parte do nome do comando ou sua descrição”.maintain crontab files for individual users crontab (5) . quando a base de dados ainda não existe. A primeira delas é com o comando whatis. por exemplo) ou antes da primeira utilização.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.daemon to execute scheduled commands (Vixie crontab (1) . Erivelton Rodrigues Nunes É possível efetuar buscas por determinados critérios na documentação do sistema. utilizam o comando mandb -c para criar a base de dados ao invés do comando makewhatis. por exemplo. se necessário) a base de dados das páginas de manual com o comando makewhatis. por exemplo). é necessário rodar esse comando sempre que uma nova página de manual for adicionada ao sistema (ao instalarmos programas. podemos efetuar pesquisas de duas maneiras na base de dados das páginas de manual. IMPORTANTE Algumas distribuições Linux (como o Debian. Exemplo A: $ whatis cron cron (8) . É muito utilizada quando já sabemos o nome do comando e queremos obter mais informações sobre ele diretamente. Efetuando pesquisas na documentação Após a base já estar criada. a fim de encontrar a página de manual (manpages ou infopages) correta para o comando ou termo pesquisado.

___________________________________________________________________________ Pág. l (link simbólico). d (diretório). etc. -group grupo Procura arquivos cujo dono seja o grupo determinado. -atime n Procura arquivos que tenham sido acessados “n” dias atrás. Procura arquivos que possuam determinada permissão.28 Existem alguns utilitários no Linux que nos auxiliam a localizar arquivos na estrutura de diretórios com base em critérios. -maxdepth nível Expecifica um nível máximo de subdiretórios para a pesquisa.] [expressão] um determinada ação para cada um dos O caminho padrão é o diretório atual. ou 16 bits) Procura por arquivos que sejam de um tipo específico. é tido por sábio. a expressão padrão é -print. padrão). que podem ser combinados a fim de se encontrar um ou mais arquivos específicos.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. do nome de um arquivo. Gerando assim uma grande flexibilidade na busca de determinados arquivos no sistema. -user usuário Procura arquivos cujo dono seja o usuário determinado.. k (Kilobytes) e w (Palavras de 2 bytes. Executa determinado comando para cada arquivo encontrado na busca. utilizarmos o find para selecionar quais arquivos farão ou não parte de uma rotina de backup no Linux. Erivelton Rodrigues Nunes LOCALIZANDO ARQUIVOS NO SISTEMA “Até o tolo. que permite localizarmos arquivos no sistema como base em critérios como o nome do arquivo. O find também permite executarmos arquivos resultantes da busca.. por exemplo. As principais expressões estão descritas na tabela abaixo: Tabela de parâmetros -name arquivo Procura por algum arquivo chamado “arquivo”. que pode ser -perm permissão especificada em formato de letras ou em formato octal. Ele trabalha basicamente com critérios. Essa característica permite. Para referenciar o arquivo no comando utilize {} no lugar -exec comando \. -cmin n Procura arquivos que tenham sido modificados “n” minutos atrás. tamanho. Comando find O find é uma das mais importantes ferramentas GNU disponíveis. Procura arquivos de um tamanho específico. por entendido” Provérbios 17. c (dispositivo de caractere). O tamanho pode -size tamanho ser especificado em b (blocos de 512 bytes. estando calado. -ctime n Procura arquivos que tenham sido modificados “n” dias atrás. -mindepth nível Especifica um nível mínimo de subdiretórios para a pesquisa. entre outros. e o que cerra seus lábios. Os -type tipo tipos podem ser: b (dispositivo de bloco). 135 . c (bytes). Sintaxe: find [caminho. f (arquivo comum). A ferramenta mais utilizada para essa tarefa é o comando find. -amin n Procura arquivos que tenham sido acessados “n” minutos atrás. datas.

porém são parâmetros dificilmente utilizados.deny /etc/host.d/hostname. ___________________________________________________________________________ Pág.d/hostname. o nome comece com host (host*) e deve ser um arquivo comum.allow /etc/init. Depois refinamos nossa pesquisa dizendo que somente queremos encontrar arquivos cujo nome comece com host e contenha mais 7 caracteres. que podem ser encontrados na man page do comando quando necessário. como o exemplo acima. Sempre que for especificar algum coringa como ls* utilize-o entre aspas.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. em seguida procura por qualquer arquivo que inicie com ls (ls*) no mesmo diretório. Exemplo A: $ find /bin -name ls /bin/ls $ find /bin -name “ls*” /bin/ls /bin/lsmod /bin/lspci /bin/lsmod.sh Agora algumas pesquisas mais complexas que envolvem coringas.sh /etc/hostname /etc/hosts. 136 . Erivelton Rodrigues Nunes O comando find ainda possui outros diversos parâmetros não mostrados nessa tabela.allow /etc/init. Exemplo C: # find /usr -size +10000k Procura por arquivos com mais de 10MB a partir do diretório /usr. onde buscamos arquivos a partir do diretório /etc cujo tamanho seja inferior a 1MB.modutils Procura por um arquivo chamado “ls” dentro do diretório /bin. Exemplo B: # find / -name grep -maxdepth 3 Procura no diretório raiz e sub-diretórios até o terceiro nível um arquivo ou diretório cujo nome seja grep.conf # find /etc -size -1000k -name host??????? -type f /etc/hosts. Exemplo D: # find /etc -size -1000k -name host* -type f /etc/hosts /etc/hosts.

gz” -ctime +10 | xargs rm Este comando tem o mesmo objetivo do anterior mas a diferença é que o xargs recebe uma lista dos arquivos encontrados e apaga de uma só vez. Este modo é mais eficiente que o anterior. A segunda busca é parecida. ___________________________________________________________________________ Pág. b ou c e seja do tipo b (Dispositivo de blocos).gz criados a mais de 10 dias e após cada resultado localizado é executado o comando rm para apagá-lo. cujo nome comece com hd. mas que tenham sido acessados nos últimos 32 dias. 137 . Isso retornou 3 resultados.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Por último. um com a data atual (arq1) e outro com a data de acesso propositalmente modificada para 30 dias atrás (arq2). Exemplo H: # find /var/lib/amavis/virusmails/ -name “*. Exemplo F: # find /dev -group disk -name hd[abc]2 -type b /dev/hda2 /dev/hdb2 /dev/hdc2 # find /dev -group disk -name hd[abc]2 -type b -exec echo "Arquivo {}" \. Exemplo G: # find /var/lib/amavis/virusmails/ -name "*.gz" -ctime +10 -exec rm {} \.1 root root 0 Nov 20 12:04 /tmp/arq2 # find /tmp -name "arq*" -atime -10 /tmp/arq1 # find /tmp -name "arq*" -atime +10 /tmp/arq2 # find /tmp -name "arq*" -atime -32 /tmp/arq1 /tmp/arq2 Repare que foram criados dois arquivos. Erivelton Rodrigues Nunes Exemplo E: # touch /tmp/arq1 # touch -t 11201204 /tmp/arq2 # ls -l /tmp/arq* -rw-r--r-. que executou o comando echo para cada um dos arquivos resultantes. Depois utilizamos a mesma busca como base para o argumento -exec.1 root root 0 Dec 20 12:04 /tmp/arq1 -rw-r--r-. Pesquisamos pelos mesmos arquivos que iniciem com arq. porém se a lista for muito grande o comando não é executado. o que resultou nos dois arquivos. Neste commando localizamos todos arquivos com a extensão . Arquivo /dev/hda2 Arquivo /dev/hdb2 Arquivo /dev/hdc2 Tentamos localizar arquivos dentro de /dev que pertençam ao grupo disk. A primeira busca do find procura por arquivos cujo nome inicie com “arq” (arq*) e que tenha sido acessado nos últimos 10 dias (De dez dias para cá geralmente é mais fácil de memorizar). o que a diferencia é que buscamos por um arquivo que não tenha sido acessado nos últimos 10 dias (Tente lembrar “de dez dias pra lá”). exemplificando como é possível executar comandos para cada resultado individual da pesquisa. o terceiro caractere do nome seja a.

Como a pesquisa é efetuada em um banco de dados próprio do comando. Sintaxe: locate [arquivo] Exemplo: # touch /tmp/meunovoarquivo # locate meunovoarquivo # updatedb # locate meunovoarquivo /tmp/meunovoarquivo Repare que antes de atualização da base de dados do locate com o comando updatedb não era possível encontrar o arquivo meunovoarquivo.gz # whereis -b crontab crontab: /usr/bin/crontab /etc/crontab # whereis -m crontab crontab: /usr/share/man/man1/crontab.5. Erivelton Rodrigues Nunes Comando whereis Localiza os binários e as páginas de manual para algum binário (comando ou biblioteca) do sistema. É útil quando queremos localizar de forma rápida um arquivo qualquer.gz /usr/share/man/man5/crontab. A pesquisa é efetuada com base nos caminhos configurados na variável $PATH do shell e em caminhos que comumente abrigam binários do sistema. Tabela de parâmetros -b Procura por binários. ___________________________________________________________________________ Pág. -s Procura por código-fonte. Exemplo A: # whereis crontab crontab: /usr/bin/crontab /etc/crontab /usr/share/man/man1/crontab.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.1. Sintaxe: whereis [opção] arquivo Onde arquivo é o binário a ser pesquisado. por exemplo.5.gz Comando locate Localiza uma palavra da estrutura de arquivos ou diretórios do sistema a partir de uma base de dados própria previamente indexada.1. 138 .gz /usr/share/man/man5/crontab. sem ter que varrer todo ou parte do sistema de arquivos a cada busca. antes precisamos criar o banco de dados com o comando updatedb. Isso torna o locate muito útil para buscas rápidas. -m Procura por páginas de manual.

O mais utilizado entre eles é o VI. texto e edição. como Telnet e SSH. pois está presente em 99% das distribuições Linux além de também estar presente em sistemas Unix. e quanto menos informações (Teclas. devido ao fato de que na época em que o original foi desenvolvido as redes eram muito lentas.23 O Linux conta com diversos editores de texto que são peça chave no dia a dia de um administrador de sistemas. Neste modo o editor interpreta os caracteres digitados como comandos internos do editor e não como texto a ser inserido no arquivo.) pudessem trafegar pela rede ao se editar um arquivo melhor. o que encontramos na maioria das distribuições Linux atuais é uma reencarnação do Vi original denominado Vim (Vi Improved).. Modo de comando É o modo de operação padrão do Vi. o VI será o foco de nossos estudos. O objetivo desses programadores era criar um editor de textos melhor que o Vi original. A falta de compreensão deste modo geralmente causa maior frustração ao utilizar este editor.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. 139 . O Vi é o editor atualmente utilizado que possui mais tempo de vida (mais de 3 décadas). Erivelton Rodrigues Nunes EDITORES DE TEXTO “A pessoa prudente esconde a sua sabedoria. mas que mantivesse as mesmas características. Na verdade. vistos na tabela abaixo: ___________________________________________________________________________ Pág. OBSERVAÇÃO Em sistemas que possuem o Vim IMproved (vim) instalado. Sintaxe: vim [arquivo] O Vi possui 3 modos básicos de operação: comando. pesquisa. pois é o que os usuários consideravam como sendo um editor visual a mais de 3 décadas atrás. VI O nome Vi vem de visual. A utilização do Vi é bastante baseada em teclas de atalho para executar tarefas de rolagem e edição de texto. pois permite efetuarmos edições de arquivos remotamente (Através de uma conexão remota já estabelecida. geralmente é criado um alias do comando vi para vim. Devido a isso.. As principais características do Vi original são na verdade soluções para as necessidades da época. por exemplo) através de um link de banda estreita. linha e edição. comandos. que foi escrito desde o início por programadores voluntários com base no VI já existente. Os comandos do Vi se dividem em 4 sub-categorias: movimentação. Essas características são bem vindas até hoje. mas os tolos anunciam a própria ignorância” Provérbios 12.

Exclui todo o texto da posição atual do cursor até o final da palavra e coloca o editor no modo de de edição. a pesquisa terá continuidade no início do arquivo. (Recorta) Exclui todo o texto da posição atual do cursor até o final da linha. Posiciona o cursos no início da palavra anterior (ignora pontuação) Posiciona o cursor no início da palavra anterior sem ignorar a pontuação. 140 .) Posiciona o cursor na próxima ocorrência da palavra pesquisada abaixo do cursor. Posiciona o cursor na linha do meio da tela. Comandos de Pesquisa Comando f+c /palavra ?palavra n N [CTRL]+[G] Comando x dw yw cw dd yy D Comandos de Texto e Substituição ___________________________________________________________________________ Pág.: fp posiciona o cursor sobre o próximo caractere p encontrado na linha. Prossegue a busca do último comando “/” ou “?” na próxima ocorrência. (Ex. Posiciona o cursor no início da próxima palavra (ignora pontuação). Posiciona o cursor no início da linha. Movimenta o cursor para a esquerda. A mesma função que o comando N. Posiciona o cursor no início da linha n (Substituir “n” pelo número da linha desejada). Posiciona o cursor no início da próxima palavra sem ignorar a pontuação.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Exclui toda a linha atual. Erivelton Rodrigues Nunes Comandos de Movimentação Comando k j l h 0 (zero) $ G [CTRL]+[F] [CTRL]+[B] H M L w W b B nG Descrição Movimenta o cursor para cima. Posiciona o cursor na próxima ocorrência da palavra pesquisada acima do cursor. (Recorta) Copia toda a linha atual. Caso chegue ao final do arquivo. Descrição Posiciona o cursor no próximo caractere “c” encontrado na linha. Avança uma tela na rolagem de texto. o número da linha atual e o total de linhas do arquivo. porém faz a pesquisa na ordem inversa da última pesquisa efetuada com “/” ou “?”. Copia todo o texto da posição atual do cursor até o final da palavra. Descrição Exclui o caractere que esteja abaixo do cursos. Movimenta o cursor para baixo Movimenta o cursor para a direita. Posiciona o cursor na Última linha do arquivo. Posiciona o cursor no final da linha. Mostra o nome. Posiciona o cursor na última linha da tela. Retroscede uma tela na rolagem de texto. Exclui todo o texto da posição atual do cursor até o final da palavra. Posiciona o cursor na primeira linha da tela.

Apaga o caractere sob o cursor e inicia o modo de edição. Desfaz o último comando. Insere na posição atual do cursor. utilizamos a tecla [ESC]. Para sair do modo de edição e voltar ao modo de comando. Inicia o modo de “substituição de texto”. x é somente um exemplo). até 2 vezes se assim for necessário. pressione [ESC]. [c] e [d] para copiar. Quando estamos no modo de edição. No modo de comando. Limpa toda a linha em que o cursor se encontra e coloca o editor no modo de edição.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. substituir e recortar. Y rx cc R J p v u [CTRL]+[R] O modo de texto é uma forma prática de substituir. Une a linha atual à próxima linha. Cola o texto que esteja em buffer após o cursor. Refaz o último comando. ou a tecla [v] novamente para fechar o modo visual. respectivamente.: Qualquer caractere pode ser utilizado. Modo de Edição Ao entrarmos no modo de edição. Utilize uma das teclas como [y]. recortar uma linha inteira com o comando “dd” e colar na linha logo abaixo do cursor com o comando “p”. 141 . Insere no final da linha. Isso permite. Substitui o caractere abaixo do cursor pelo caractere “x”. nada é mostrado.) Inicia o modo visual para seleção do texto a partir da posição atual do cursor. podemos utilizar quaisquer dos comandos da tabela abaixo para iniciar o modo de edição: Comandos para entrar no modo de Edição Comando o cl a A i Descrição Insere no início da linha abaixo do cursor. (Obs. Insere após o cursor.: Qualquer comando de texto que exclua caracteres os envia para o buffer. A partir do modo de comando. (Obs. Para sair. tudo que digitarmos no teclado será enviado como texto para o arquivo (O mais parecido possível com outros editores de texto). Uma característica importante desse modo é que todo o texto manipulado por esses comandos fica armazenado no buffer. a string “-. organizar e inserir texto sem utilizar o modo de edição (sem precisar digitar texto). por exemplo. Após selecionar o texto desejado. ___________________________________________________________________________ Pág.INSERT --” é mostrada no canto inferior esquerdo da tela. Erivelton Rodrigues Nunes (Recorta) Copia todo o texto da posição atual do cursor até o final da linha.

até um certo limite. Também é possível utilizar a exclamação para forçar a operação. Para entrar em modo de linha deve-se estar em modo de comando e pressionar “:” (Dois-pontos). Substitui a string “antiga” pela string “nova” em todo o documento atual. Opcionalmente podemos colocar o nome de outro arquivo para instruir o via salva o arquivo atual como outro nome (Salvar Como. e diz para o Vi continuar em busca de substituições na mesma linha mesmo após a primeira ocorrência. somente se utilizarmos a exclamação (q!) para forçar a saída sem salvar o arquivo.. O parâmetro “g” no final é opcional. Insere o conteúdo de outro arquivo a partir do cursor. Outra dica importante: Para os comandos de linha que interagem com o texto (substituição por exemplo) é possível especificar um intervalo de linhas onde o comando terá efeito. 142 . Caso tenha feito alguma alteração o Vi não deixará sair sem salvar.154s/gato/cachorro/g ___________________________________________________________________________ Pág. mas somente entre as linhas 100 e 154. Comandos para entrar no modo de Linha Comando :e arquivo :w[!] [arquivo] Descrição Instrui o vi para abrir um arquivo para edição. Digamos que você precise substituir a palavra gato pela palavra cachorro no arquivo em que esteja editando. e diz para o Vi continuar em busca de substituições na mesma linha mesmo após a primeira ocorrência. A solução seria o seguinte comando de linha: :100. Uma dica importante é lembrar que sempre é possível desfazer as alterações efetuadas em um arquivo. Sai do arquivo sem salvar.). Erivelton Rodrigues Nunes Modo de linha O Modo de linha é um modo onde se tem acesso a comandos especiais do vi. com a tecla [u] no modo de comando. Substitui a string “antiga” pela string “nova” na linha atual. Sai do Vi e salva o arquivo atual.. O parâmetro “g” no final é opcional. a numeração de linhas do number no arquivo. Adicionar a exclamação “!” em frente do comando (w!) força a operação.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. O comportamento padrão do Vi (sem o “g”) é proceder para a próxima linha caso substitui alguma palavra) Ativa e desativa. respectivamente. Dicas preciosas do Vim Existem alguns “macetes” de sobrevivência do Vim. Salva o arquivo atual. Desabilita o highlight que marca as palavras de alguma busca efetuada anteriormente. :q[!] :r arquivo :x[!] :s/antiga/nova/g : %s/antiga/nova/ g :set number e :set no :nohl Para voltar do modo de linha para o modo de comando basta pressionar ESC. que devem estar na ponta da língua de um administrador Linux.

25” dia para o comando atuar somente entre as linhas 10 e 25. Também é possível editar dois ou mais arquivos na mesma tela. 143 . Tal proeza se torna verdadeira com o comando :split. O comando de substituição irá substituir o início da linha (Representado pelo caractere “^”) pelo sinal de “#” acrescido de um espaço. O comando de linha do vi abaixo resolveria facilmente o problema. digamos que você já esteja editando um arquivo e queira abrir outro na mesma tela. Erivelton Rodrigues Nunes Uma outra ocasião mais utilizada: Digamos que você precise comentar com o caractere “#” um grande intervalo de linhas em um arquivo (pode ser maçante ficar fazendo isso linha por linha). Por exemplo. :10. Pronto. das linhas 10 até 25 (faça com um arquivo grande para testar. Basta utilizar o comando abaixo dentro do Vim.25s/^/# / O intervalo “10. :split novoarquivo Para alternar entre as telas utilize a sequência de teclas [CONTROL]+[W]+[W].AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. nesse caso. dividindo a mesma ao meio. ___________________________________________________________________________ Pág.

AES
ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Erivelton Rodrigues Nunes

ARQUITETURA DE HARDWARE

“Por mais que o preguiçoso deseje alguma coisa, ele não conseguirá, mas a pessoa esforçada consegue o seu desejo”
Provérbios 13.4

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

Os parâmetros usados para configurar o hardware no linux são a IRQ, I/O e DMA, porém há dispositivos que só usem dois desses parâmetros. As interrupções podem ser visualizadas através do arquivo /proc/interrupts
# cat /proc/interrupts CPU0 0: 824407 1: 20276 2: 0 4: 141947 5: 86091 8: 3 11: 9485 14: 69121 15: 4 NMI: 0 LOC: 824417 ERR: 128 MIS: 0

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

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

Abaixo uma breve explicação sobre as interrupções. IRQ 0 - saída do temporizador (8254) IRQ 1 - controlador usado para teclado IRQ 2 - cascata para IRQ8–IRQ15 no PC-AT IRQ 3 - porta serial secundária, geralmente/dev/ttyS1 ___________________________________________________________________________ Pág. 144

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

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

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

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

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

Isto pode ser muito útil em relação a conflito de hardware, dispositivos que estejam por exemplo usando o mesmo irq. A opção -a imprime na tela todas as informações do dispositivo Os endereços de I/O porem ser visualizados através do arquivo /proc/ioports
# cat /proc/ioports

___________________________________________________________________________ Pág. 145

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

___________________________________________________________________________ Pág. 146

mas o tolo gasta todo o seu dinheiro assim que o recebe” Provérbios 21. definir um correto esquema de particionamento e aplicar o sistema de arquivos mais adequado a cada situação. extendida e lógicas.20 Neste capítulo aprenderemos como lidar com a tabela de partições. e foi aí que definiram os tipos de partições: primárias. Ela fica localizada em uma área específica no início do disco rígido. só era possível criar 4 partições em um disco rígido. Particionamento Antigamente. um sistema era disposto em todo o disco rígido (isso não significa que ele ocupava todo o espaço). A tabela de partições Com o advento dos discos rígidos. tornou-se necessário um número maior de partições. Erivelton Rodrigues Nunes PARTICIONAMENTO E SISTEMAS DE ARQUIVOS “O homem sensato tem o suficiente para viver na riqueza e na fartura. Exemplo: +---------------+----------------+---------------+---------------+ | Partição 1 | Partição 2 | Partição 3 | Partição 4 | +---------------+----------------+---------------+---------------+ Com o tempo. ___________________________________________________________________________ Pág. Inicialmente. chamadas partições. também surgiu o particionamento. que é a capacidade de se “repartir” um disco rígido em diversas fatias de dados. 147 . quando o conceito de particionamento ainda não existia. Onde cada uma delas poderia receber seu próprio sistema de arquivos diferente. Imagine o disco rígido como um grande repositório de dados binários (e é realmente o que ele é).AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. onde o sistema operacional pode ler e saber a localização de todas as partições. A tabela de partições tem a função de dizer onde começa. onde termina e qual o tipo de sistema de arquivos de determinada partição. Essa divisão dos dados é possível “até hoje” devido a tabela de partições. não permitindo utilizarmos melhor o espaço disponível na mídia de armazenamento.

AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. O limite de partições lógicas no disco rígido é de 12 partições. foi desenvolvida a partição primária. Caso haja necessidade de ter mais partições em um sistema. no tempo em que só poderiam existir apenas 4 partições. Não pode existir mais de uma partição extendida no mesmo disco rígido. que não pode receber dados (sistemas de arquivos) diretamente. somente por intermédio de partições lógicas. Repare que não se deve considerar a partição extendida como uma partição válida. se precisarmos ter 6 partições em um disco rígido. A partição extendida Para sanar o problema de limitação de até 4 partições no disco. pois só podem haver 4 partições primárias em um disco rígido. ___________________________________________________________________________ Pág. criaríamos: 3 primárias. mas sua finalidade é alojar “sub-partições”. Vejamos como isso ficaria: Conseguimos ter 6 partições de dados no mesmo disco rígido. Uma partição lógica pode receber sistemas de arquivos normalmente. Essa limitação existe até hoje com esse tipo de partição. as chamadas partições lógicas. Uma partição primária pode receber dados (sistemas de arquivos). 1 extendida e mais 3 lógicas dentro da extendida. e seu principal motivo de existência é a necessidade de se ter mais do que 4 partições num disco rígido. assim como uma partição primária. o que limita um disco à ter no máximo 15 partições de dados mais uma extendida. Erivelton Rodrigues Nunes Partições primárias As partições primárias são as partições que geralmente recebem um sistema operacional. 148 . Foram os primeiros tipos de partições “inventadas”. foram desenvolvidas as partições lógicas. As partições lógicas Como complemento à partição extendida. visto que ela não recebe dados diretamente. e costumam ficar situadas no início de um disco particionado. Por exemplo. mas não outras partições diretamente. é necessário conhecer os outros 2 tipos de partições: extendida e lógicas. que não passam de simples partições alojadas dentro de uma partição extendida.

Isso permite. É importante conhecer esses limites pois o kernel do linux deve estar disposto em uma partição /boot separada de todo o restante e no início do disco. Modo CHS de geometria Este é o modo mais antigo.4gb em micros Intel 586. que é de 1024 cilindros. que mesmo sendo maior do que isso. pois uma vez que o controle é dado ao sistema operacional Linux. utilizarmos discos maiores do que 8. ele consegue “enxergar” toda a capacidade do disco rígido. e conseqüentemente pelo gestor de boot. 16 cabeças e 63 setores. Modo LBA de endereçamento É o método plano (de 1 dimensão) mais simples. É com base no endereçamento ou na geometria do disco que o sistema operacional sabe onde estão os arquivos nas partições arquivos. Dessa forma. O método CHS baseia-se num fator de 3 dimensões para mapear os dados no disco rígido. o que totaliza um limite de 528mb para discos rígidos. e é chamado de bloco. por exemplo. O que ocorre basicamente é o seguinte: a BIOS do computador endereça todo o disco rígido em vários “pedacinhos” que costumam ter 512bytes de tamanho cada um. quando um sistema operacional compatível com LBA (O Linux é) precisa escrever ou ler dados em determinada parte do disco rígido. como os Pentium MMX. ele se localiza pelo respectivo bloco LBA. A única barreira que devemos nos importar em romper é a de permitir que o gerenciador de boot consiga carregar o kernel. Erivelton Rodrigues Nunes Endereçamento e geometria dos discos rígidos Um assunto que deve ser de bom conhecimento de qualquer administrador de sistemas. 256 cabeças e 63 setores. As 3 dimensões são: cilindros (cylinders). a BIOS só conseguirá “enxergar” essa quantidade de dados. onde a bios não consegue mapear mais do que 1024 cilindros. complexo e limitado de mapeamento de dados dos discos rígidos.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. para garantir que essa partição seja visível pela BIOS. Existem duas formas de mapeamento de dados: LBA e CHS. moderno e funcional que um sistema tem para mapear os dados em um disco rígido. o que impõe a limitação de 8. como o limite dos 1024 cilindros que assola computadores antigos. Cada pedacinho desse recebe um número de identificação. Esse modo impõe algumas limitações que devem ser observadas.4gb ao disco. cabeças (heads) e setores (sectors). ___________________________________________________________________________ Pág. Algumas BIOS mais antigas ainda possuem uma limitação ainda maior. 149 . independente do tamanho observado na BIOS. É preciso compreender como a BIOS do computador e o sistema operacional efetuam o mapeamento dos dados em um disco rígido.

AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.ex. Digite [M] (seguido de enter. por exemplo). na maioria das vezes. No linux o utilitário fdisk somente lida com a tabela de partições. basta especificar um dispositivo de blocos válido. de determinado dispositivo ou partição. Uma delas é a opção -l. OS/2 FDISK) Comando (m para ajuda): Na tela inicial do fdisk. mas isto é maior que 1024. O fdisk funciona com base em letras especiais que definem comandos. A opção -s mostra o tamanho.ação a alterna a opção "inicializável" b edita rótulo BSD no disco c alterna a opção "compatibilidade" d exclui uma partição l lista os tipos de partição conhecidos m mostra este menu n cria uma nova partição o cria uma nova tabela de partições DOS vazia p mostra a tabela de partições q sai sem salvar as alterações s cria um novo rótulo de disco Sun vazio t altera a identificação da partição para o sistema u altera as unidades das entradas mostradas ___________________________________________________________________________ Pág.. DOS FDISK. Erivelton Rodrigues Nunes Particionando o disco rígido com fdisk O fdisk é o utilitário do Linux responsável por gerenciar a tabela de partições. Comando . por exemplo.. A tela de ajuda mostra os comandos possíveis com o fdisk.. Não existe nada de errado. caso o disco possua mais do que 1024 cilindros. e pode em certas configurações causar problemas com: 1) programas que executam em tempo de inicialização (versões velhas do lilo) 2) inicialização e programas de particionamento de outros OSs (p.) para visualizar a tela de ajuda. mas são completamente diferentes do nosso fdisk do Linux. que exibe a tabela de partições de determinado dispositivo dado como argumento. e não é capaz de criar sistemas de arquivos. ou de todos os dispositivos conhecidos. Existem outras “encarnações” de fdisk em sistemas operacionais como o MS DOS®. Este é um procedimento que veremos adiante. seremos presenteados com a mensagem de alerta acima. Exemplo: # fdisk /dev/hda O número de cilindros para este disco está configurado para 238216. 150 . Para entrarmos no modo interativo do utilitário fdisk. em blocos. Sintaxe: fdisk [opção] [dispositivo de bloco] Onde “dispositivo de bloco” é um disco rígido (como /dev/hda ou /dev/sdc. O comando suporta poucas opções (pelo menos “do lado de fora”).

Comando (m para ajuda): d Número da partição (1-6): 6 Comando (m para ajuda): p Disk /dev/hda: 122. 122942324736 bytes 16 heads. Agora vamos criar uma nova partição no espaço não particionado. 122942324736 bytes 16 heads. 238216 cylinders Units = cilindros of 1008 * 512 = 516096 bytes Dispositivo Boot Start End Blocks /dev/hda1 /dev/hda2 /dev/hda5 * 1 40641 40641 40640 238216 237214 20482528+ 99578304 99072823+ 83 f 8e Id System Linux W95 Ext'd (LBA) Linux LVM Utilizamos a opção [d] para apagar a partição 6 do dispositivo /dev/hda. é preciso ter espaço “não particionado” no disco e não infringir as regras dos tipos de partições (Tentar criar 5 partições primárias. vamos excluir uma partição antes de criar uma outra. É importante lembrar que todas as alterações feitas na tabela de partições só terão efeito se utilizarmos a opção [w] do fdisk. Comando (m para ajuda): n Comando . tem o seguinte aspecto: Comando (m para ajuda): p Disk /dev/hda: 122.9 GB. que no meu sistema. NOTA Somente o usuário root pode utilizar o fdisk. O Linux conta com diversos tipos.9 GB. por exemplo). utilize a opção [p] para mostrara tabela de partições.ação l lógica (5 ou superior) p partição primária (1-4) l Primeiro cilindro (237214-238216. No exemplo. logo depois vamos modificar seu tipo para 82 (Partição SWAP). No prompt do fdisk. que salva as alterações. Erivelton Rodrigues Nunes v w x verifica a tabela de partições grava a tabela no disco e sai funcionalidade adicional (somente para usuários avançados) Vamos agora seguir um passo a passo para excluir. Antes de criar uma partição. default 237214): Using default value 237214 ___________________________________________________________________________ Pág. adicionar e modificar o tipo de uma partição. 63 sectors/track. dos quais os principais são: 83 para partições de dados e 82 para partições swap. que mostra o código que identifica o tipo de sistema de arquivos presente na partição. 63 sectors/track.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. 151 . 238216 cylinders Units = cilindros of 1008 * 512 = 516096 bytes Dispositivo Boot Start End Blocks Id System /dev/hda1 * 1 40640 20482528+ 83 Linux /dev/hda2 40641 238216 99578304 f W95 Ext'd (LBA) /dev/hda5 40641 237214 99072823+ 8e Linux LVM /dev/hda6 237215 238216 504976+ 82 Linux swap Repare na coluna “Id”.

238216 cylinders Units = cilindros of 1008 * 512 = 516096 bytes Dispositivo Boot Start End Blocks Id System /dev/hda1 * 1 40640 20482528+ 83 Linux /dev/hda2 40641 238216 99578304 f W95 Ext'd (LBA) /dev/hda5 40641 237214 99072823+ 8e Linux LVM /dev/hda6 237214 238216 505102+ 83 Linux Comando (m para ajuda): t Número da partição (1-6): 6 Código hexadecimal (digite L para listar os códigos): 82 O tipo da partição 6 foi alterado para 82 (Linux swap / Solaris) Comando (m para ajuda): p Disk /dev/hda: 122. ou não pergunta quando a única alternativa for “lógica”. pois precisa de um sistema de arquivos. default 238216): Using default value 238216 Comando (m para ajuda): p Disk /dev/hda: 122. Inodes são uma espécie de índice numérico para os arquivos no sistema. onde “XXX” é o tamanho desejado em MB para a partição. caso não queiramos ocupar todo o espaço disponível. pode ser especificado em megabytes. baseados em inodes. no formato +XXXM. na sua maioria. ext3 e reiserfs. extendida ou lógica). Geralmente o setor de início não é preocupação.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. ele ainda não está pronto para receber dados.9 GB. 63 sectors/track. sobre qual será o tipo de partição (primária. o fdisk nos questiona. os sistemas de arquivos são. com base em qual setor do disco ela começa e qual ela termina. ___________________________________________________________________________ Pág. pois o fdisk assume o primeiro livre. Sistemas de arquivos Quando já se tem um espaço particionado. o último. por exemplo. Um sistema de arquivos “prepara o terreno” da partição para que ela possa receber dados (arquivos e diretórios). 238216 cylinders Units = cilindros of 1008 * 512 = 516096 bytes Dispositivo Boot Start End Blocks Id System /dev/hda1 * 1 40640 20482528+ 83 Linux /dev/hda2 40641 238216 99578304 f W95 Ext'd (LBA) /dev/hda5 40641 237214 99072823+ 8e Linux LVM /dev/hda6 237214 238216 505102+ 82 Linux swap / Solaris Comando (m para ajuda): q Ao criarmos uma nova partição. 122942324736 bytes 16 heads. como FAT32 ou NTFS. pois é o sistema de arquivos que gerencia a localização dos arquivos na partição. 122942324736 bytes 16 heads. No Linux. Também somos questionados sobre o tamanho desejado da partição. Mas os principais sistemas de arquivos nativos do Linux são: ext2. se possível.9 GB. Erivelton Rodrigues Nunes Último cilindro ou +tamanho ou +tamanho M ou +tamanho K (237214-238216. 152 . O Linux é compatível com uma vasta gama de sistemas de arquivos. Ele faz isso subdividindo a determinada partição em blocos menores denominados clusters. 63 sectors/track. até mesmo de outros sistemas.

O sistema de arquivos reiserfs: Nascido para ser rápido Esse sistema de arquivos só se assemelha com o ext2/3 pelo fato de serem ambos sistemas de arquivos. Resumidamente. o journaling armazena informações sobre o as operações de escrita que estão para ocorrer. É o sistema de arquivos básico para Linux. o sistema de arquivos verifica as informações que “ficaram” no journaling e então somente as áreas afetadas por essas operações marcadas no journaling que serão verificadas pelo utilitário fsck. Quando a operação de cada um deles é concluída. Caso ocorra uma queda de energia ou qualquer outra coisa que venha a parar o sistema no meio de uma operação de escrita. mais tempo era perdido. Erivelton Rodrigues Nunes Antes de prosseguir. O sistema de arquivos ext3: A revolução Funciona de forma semelhante ao ext2. Funcionamento do journaling O journaling é um recurso presente em diversos sistemas de arquivos. A grande diferença é que o ext3 corrige o maior problema do ext2 com um recurso chamado journaling. e ocupa um determinado espaço para isso. mas isso não vem ao caso agora). ao ser reiniciado. os dados são removidos do journaling. acl's. todos os dados que entram na fila de escrita são “anotados” no journaling antes da operação (alguns sistemas adicionam outros diferenciais mais complicados. Quando um sistema de arquivos conta com journaling. suporta quotas. É importante lembrar que o journaling desses sistemas de arquivos por padrão convive na mesma partição que os dados. ___________________________________________________________________________ Pág.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Internamente. A primeira que fez sucesso. E quanto maior eram as partições. Mas tem um grande problema que mais tarde foi suprido pelo ext3: O sistema de arquivos precisava ser verificado sempre que havia uma queda de energia. O journaling não torna as operações de escrita mais lentas a ponto de causar perca de performance que justifique o ganho de confiabilidade. pois o sistema perdia muito tempo durante a inicialização para a verificação. até compatíveis entre si. etc. não só no ext3. 153 . pois internamente eles são bem distintos. O sistema de arquivos ext2: O início de tudo Esta é a segunda versão do sistema de arquivos extendido do Linux. é preciso conhecer um pouco sobre cada um desses sistemas de arquivos para que possamos selecionar qual melhor se encaixa em determinada situação. são até muito parecidos. Esse problema se torna crítico e serviu como obstáculo para o Linux em grandes corporações e data centers.

para formatar o disquete com o sistema de arquivos ext2. por exemplo. por exemplo). utilizamos: # fdformat -n /dev/fd0 A opção -n instrui ao utilitário para não verificar por bad-blocks no disquete. Saber definir corretamente pontos de montagem para partições de tamanhos corretos em áreas críticas do sistema ajuda a diminuir possíveis falhas no sistema. É o tamanho do dispositivo que irá definir a quantidade máxima de dados que determinado diretório (ponto de montagem) irá comportar. Agora. utilizamos: # mkfs.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.) para ordenar os nomes de arquivos pelo sistema. Erivelton Rodrigues Nunes O reiserfs utiliza um algoritmo interno (que geralmente é o chamado r5. para criar sistemas de arquivos ext3. O mkfs possui um sub-comando para cada sistema de arquivos suportado pela distribuição. basta apontar para a partição que deseja formatar.reiserfs. 154 . utilizamos mkfs.44” para nosso exemplo. Para ___________________________________________________________________________ Pág. Definindo um ponto de montagem O termo “ponto de montagem” precisa ser muito bem compreendido por todos que pretendem seguir carreira com sistemas Linux. trata-se de associar algum diretório (geralmente vazio) no sistema com um dispositivo de blocos. Essa associação entre um diretório e um dispositivo de blocos recebe o nome de montagem. como o ext3. Por exemplo.ext2 /dev/fd0 Esse passo é exatamente igual para partições. Levando em consideração que queremos formatar a unidade /dev/fd0. O conceito é bem simples de compreender. como /dev/hda6. Criando um sistema de arquivos Utilizamos o comando mkfs para criar sistemas de arquivos em partições ou outros dispositivos de blocos (como um disquete. dessa forma. utilizamos o comando mkfs.ext3. Antes de se criar um sistema de arquivos num disquete. os dados enviados para este diretório serão gravados no respectivo dispositivo de blocos. O que o torna muito rápido com arquivos pequenos e uma grande quantidade de arquivos no mesmo sistema. Ele também conta com journaling. já para reiserfs. é preciso formatá-lo com o comando fdformat. r6 ou o rupasov. Vamos utilizar um disquete de 1. tornando-o mais seguro.

ponto de montagem. Sintaxe: mount [opção] [dispositivo] [ponto de montagem] Portanto. utilizamos o comando mount (consulte a man page para maiores detalhes sobre sistemas de arquivos). ___________________________________________________________________________ Pág. opções de montagem (consulte a man page para as opções disponíveis para cada sistema de arquivos). dump (Se o dispositivo pode ou não ter backup através do dump) e o nível de passagem. do menos para o maior.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Erivelton Rodrigues Nunes cumprir essa tarefa. mostra uma lista com detalhes dos sistemas de arquivos montados. utilize o comando sync. Da primeira para a última. basta executar /ponto/de/montagem ou umount dispositivo. O valor 0 desabilita a checagem. sem nenhum argumento. conforme abaixo: # umount /floppy o comando umount O umount não permite desmontarmos dispositivos que estejam em uso. os significados das colunas são: Dispositivo de bloco. da seguinte forma: /dev/hda1 / reiserfs defaults 0 1 São 6 colunas que “devem” estar preenchidas para que a entrada funcione. assim como a utilização de cada um. não tente desmontar caso esteja no ponto de montagem do dispositivo desejado. sem parâmetros. 155 . Contrariar essa regra pode causar perda de dados. Nível de passagem define em que ordem os sistemas de arquivos devem ser verificados pela ferramenta fsck durante a inicialização. O comando mount. vamos utilizar o comando mount para montar o disquete recém-formatado no diretório /floppy (ou /mnt/floppy em sistemas RedHat like) # mount /dev/fd0 /floppy # df -h # mount O comando df -h exibe informações sobre os sistemas de arquivos montados. sistema de arquivos. Os pontos de montagem são definidos um por linha nesse arquivo. Toda vez que adicionarmos uma nova partição de dados no sistema. esse arquivo deve ser editado para as novas necessidades. Para forçar um “sincronismo” momentâneo e gravar os dados pendentes no disquete. Portanto. Só se pode remover o disquete da unidade quando ele estiver “desmontado”. Isso ocorre porque os dados enviados para um ponto de montagem de um disquete ou alguns tipos de unidades de rede não são gravados imediatamente na mídia. Para desmontar um sistema de arquivos. O arquivo /etc/fstab Este arquivo serve de configuração para os pontos de montagem fixos do sistema.

mas existem patches na internet que possibilitam isso. Verificando a integridade de sistemas de arquivos Para verificar a integridade de um sistema de arquivos no Linux. Isso pode causar danos irreversíveis à eles. utilizamos a ferramenta fsck. Pedindo confirmações para todas -r as questões. ___________________________________________________________________________ Pág. só o que precisamos é possuir um kernel. Utilize -y com cuidado. portanto. Utilizado junto à opção -A. O suporte a quotas do reiserfs ainda não está adicionado nos kernel's padrão do Linux. o pacote que provê esse suporte chama-se quota. Modo “verbose”. pois o mount automaticamente busca as outras opções no arquivo.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Exibe mais informações sobre os comandos sendo -V executados. ATENÇÃO O fsck não deve ser utilizado em sistemas de arquivos montados em modo de leitura e escrita. Responde yes (Sim) para todas as questões automaticamente. Elas não vêm habilitadas por padrão. Exemplo: # fsck -y /dev/fd0 Gerenciando quotas de sistemas de arquivos As quotas de sistemas de arquivos existem para que o administrador possa limitar a utilização do recurso mais difícil de se prever em um ambiente computacional: o armazenamento. Força o fsck a rodar interativamente. Diz ao fsck para ignorar a verificação do -R dispositivo que contenha o sistema de arquivos raiz. Sintaxe: fsck [opções] dispositivos Tabela de parâmetros -C Exibe progresso da verificação. basta instalar o utilitário que permite gerenciarmos as quotas. Partindo do princípio que o o sistema já possuam uma partição com suporte a quotas e um kernel também com suporte. No Debian. Erivelton Rodrigues Nunes Todo ponto de montagem presente nesse arquivo pode ser montado com menos opções. O ext2 e 3 suportam quotas. um apt-get install quota deve resolver o problema. 156 . -A Verifica todos os dispositivos encontrados em /etc/fstab. um sistema de arquivos que suporte quotas e um utilitário para gerenciar quotas.

Abaixo adicionamos as duas opções à uma entrada do arquivo /etc/fstab: /dev/sdb1 /home ext3 defaults. 157 . que podem ser por usuários ou por grupos. Para editar as quotas para um grupo. Configurando quotas p/ usuários e grupos Contamos com o utilitário edquota para configurar as quotas. utilizamos: edquota -g grupo disco Verificando as quotas ___________________________________________________________________________ Pág. Erivelton Rodrigues Nunes Habilitando as quotas O primeiro passo é habilitar as quotas. no respectivo ponto de montagem em /etc/fstab. # mount /home # quotacheck -acvug quotacheck: Scanning /dev/sdb1 [/home] done quotacheck: Checked 3 directories and 20 files quotacheck: Old file not found. que por padrão é 7 dias. Para grupos.grpquota 0 1 Agora basta montar e habilitar finalmente as quotas para o ponto de montagem. O soft limit costuma ser um limite inferior e próximo ao limite máximo de utilização de espaço de armazenamento. entramos em uma espécie de edição de arquivo. a opção é grpquota. quotacheck: Old file not found. onde podemos visualizar o quanto em blocos (múltiplo de 1024bytes. Para habilitar quotas para usuários. adicione a opção usrquota ao ponto de montagem. como podem ver no arquivo de quota do usuário. utilizamos: # edquota -u fulano Disk quotas for user fulano (uid 1000): Filesystem blocks soft /dev/sdb1 84 0 hard 0 inodes 21 soft 0 hard 0 Ao executar o comando.usrquota. Para editar as quotas de um usuário. Os limites soft e hard existem tanto para a utilização de espaço em quanto para a utilização de inodes. Este último comando deve ser rodado periodicamente para garantir a integridade das quotas.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. O hard-limit é o limite máximo de utilização de armazenamento. desde que ainda esteja abaixo do hard-limit. ou 1KB) e inodes o usuário está consumindo e definir dois limites para ambos: O “soft limit” e o “hard limit”. ele entra em um período chamado “grace time”. Quando um usuário atinge seu soft-limit. mas pode ser modificado com o comando edquota -t.

que é o que fica visível para os processos em execução. pode ser necessário adicionar mais espaço de swap a um sistema a fim de aumentar sua memória virtual. utilizamos o comando repquota pontos de montagem com quotas habilitadas). Adicionando uma nova swap É necessário aprender a adicionar uma nova swap no sistema. -a (Mostra de todos os Para garantir a correta integridade das quotas. Estamos tirando bits de / dev/zero (que é um dispositivo especial que serve à esse propósito) e os enviando para o arquivo /swap. se bem que isso não é uma boa prática. Erivelton Rodrigues Nunes Para listar a utilização das quotas. Algumas vezes. isso funciona da seguinte forma: Os dados que os programas requerem da memória virtual são sempre providos da memória ram ou cache. que trata-se de um arquivo especial situado em um sistema de arquivos (ext3 por exemplo) montado. pois nem sempre há espaço em disco disponível) ou através de um arquivo de swap. Existem duas maneiras de adicionarmos swap no sistema: através de 1 nova partição swap (o que geralmente é difícil.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. você sabe o que é uma swap? Uma partição swap é um espaço de troca que completa o sistema de memória virtual do Linux. na memória ram ou na swap. Mas antes de mais nada. Faça as contas e descubra o tamanho de nosso futuro arquivo de swap. sempre execute o comando quotacheck -av. 158 . veja como é fácil: # dd if=/dev/zero of=/swap bs=1024 count=128000 128000+0 registros de entrada 128000+0 registros de saída A função do comando dd é “copiar bits de um lado (if) para outro (of). o melhor mesmo é adicionar mais memória ram ao sistema. # mkswap /swap Setting up swapspace version 1. No Linux. Como os procedimentos são praticamente os mesmos para os dois casos. Por isso que o tamanho da swap deve ser no mínimo igual a memória ram. e o sistema operacional cuida de definir onde escrever “fisicamente” os dados. Caso algum programa requisite dados que estejam numa partição swap. com 128000 blocos de 1024 (1KB) de tamanho cada um. iremos optar pelo modo de arquivo. size = 131067904 bytes # cat /proc/swaps ___________________________________________________________________________ Pág. junto com a memória ram e as memórias cache do(s) processador(es). esses dados são “trocados” por dados ociosos na memória ram. A soma de todas essas memórias é o que forma a “memória virtual”. Primeiro precisamos criar um arquivo “vazio” que seja do tamanho desejado para a swap (confuso não?).

___________________________________________________________________________ Pág. 159 . Observação Para ativar uma swap na inicialização. É muito simples: swapon “liga a swap” e swapoff “desliga”. Erivelton Rodrigues Nunes Filename /dev/sda1 Type partition Size 64256 Used 2244 Priority -1 Utilizamos o comando mkswap para “formatar” o arquivo /swap no formato de swap. # swapon /swap # cat /proc/swaps Filename /dev/sda1 /swap Type partition file Size 64256 127992 Used 2244 0 Priority -1 -2 Agora sim. Repare que o arquivo ainda não está listado. após utilizar o comando swapon finalmente ativamos nosso arquivo de swap. configure-a no arquivo /etc/fstab. Vejamos abaixo como desabilitar uma swap: # swapoff /swap # cat /proc/swaps Filename /dev/sda1 Type partition Size 64256 Used 2244 Priority -1 Pronto.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. O arquivo /proc/swaps nos dá informações sobre quais dispositivos de swap estão ativos no momento.

A inicialização do hardware feita pela bios consiste no POST (Power On Self Test) e na busca de informações de boot no MBR (Master Boot Record) do dispositivo que estiver configurado como inicializável na BIOS. por exemplo. o seu próprio amigo o deixa” Provérbios 19. Isso ajuda muito quando for preciso diagnosticar algum problema durante a inicialização.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. ___________________________________________________________________________ Pág. mas ao pobre.4 É importante compreender tudo que envolve o processo de inicialização de um sistema Linux. carregamento do gestor de boot (responsável por carregar o kernel) e os processos de init. drive de disco fle xív el drive de CD-ROM processador chip CMOS disco rígido conectores BIOS I OS módulos de memória RAM placas de expansão O processo de inicialização consiste basicamente em 3 Etapas: Inicialização do hardware pela BIOS. Erivelton Rodrigues Nunes PROCESSO DE INICIALIZAÇÃO “As riquezas granjeiam muitos amigos. 160 .

161 . A opção boot especifica em qual dispositivo instalar o gestor de boot.conf: lba32 boot=/dev/sda root=/dev/sda2 install=/boot/boot-menu.b e boot. todos dentro do diretório /boot: bootmenu. A opção root configura qual o dispositivo que contém o sistema de arquivos raiz do sistema. A maioria das distribuições já optou ou ainda opta por ele. o gestor de boot tem a missão de carregar o kernel do para a memória e entregar o comando para o sistema operacional. Configurando o lilo A configuração do lilo consiste em apenas 1 arquivo. Esse arquivo já ___________________________________________________________________________ Pág.b. o /etc/lilo. pois algumas já estão definindo o grub como gestor de boot padrão. O lilo costuma contar com 3. Existem 2 gestores de boot mais famosos para Linux: o lilo e o grub. É nesse arquivo que definimos as opções que desejamos para o boot. Lilo Esse gestor de boot é bem maduro e oferece configuração simples.b map=/boot/map delay=20 vga=normal append=”pci=bios” default=Linux image=/vmlinuz label=Linux read-only A opção lba32 diz ao lilo que o sistema está utilizando o modo de endereçamento de disco LBA. Seguem um exemplo de um típico lilo. o lilo assume /boot/boot. No caso do Linux. A opção install especifica qual será o arquivo binário do gestor de boot que deverá ser instalado. necessário para dar continuidade ao processo de inicialização.conf.b. boot-text. Erivelton Rodrigues Nunes Gerenciadores de boot Um gerenciador é um software que geralmente fica instalado no MBR de um disco rígido e tem a finalidade de gerenciar a carga de sistemas operacionais. Abordaremos uma configuração básica do lilo. Se essa opção for omitida. que permita o sistema inicializar e cumprir seu dever. O gestor de boot precisa saber disso para que seja possível localizar o programa /sbin/init. A opção map especifica o caminho para o arquivo de mapa de dos dispositivos.b. Essa etapa do processo exige que o administrador tenha conhecimento sobre um gestor de boot no Linux. A diferença entre eles é o menu que aparece na inicialização.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.

A opção delay especifica o tempo. Basta retornar esse arquivo para a MBR que tudo estará resolvido. Se o seu kernel suportar framebuffer. Podemos utilizar o comando dd para tal façanha: dd if=/boot/boot. em “décimos de segundos” que o lilo aguardará até carregar a imagem padrão. Após editar o arquivo conforme suas necessidades. o lilo leu as configurações do arquivo /etc/lilo. que nesse caso aponta para um link simbólico presente em todos os sistemas Debian (/vmlinuz). Erivelton Rodrigues Nunes acompanha o lilo e não deve ser preocupação. tente valores como vga=771 (800x600). podemos testá-lo. Agora basta reiniciar o sistema e testar. é feita uma cópia do original no arquivo /boot/boot. Uma vez que o comando não tenha apresentado nenhum erro.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. ou vga=773 (1024x768).0300 of=/dev/hda bs=446 count=1 ___________________________________________________________________________ Pág. basta digitar o comando: # lilo Added Linux * Nesse momento. com o comando: # lilo -t Added Linux * The boot sector and the map file have *NOT* been altered. A opção default indica qual será a imagem padrão. 162 . Cada uma delas refere-se a um sistema operacional (podem ser vários kernel's para o mesmo sistema). Lembrando que a MBR fica localizada no início do HD. antes de mais nada. Podem existir mais de uma entrada do tipo “image” no arquivo.0300. mais especificamente nos primeiros 512bytes. Restaurando o setor de boot Sempre que o lilo altera o setor de boot do disco (O MBR por exemplo). A opção vga configura qual será a resolução do console após carregar o kernel. A opção append permite passarmos parâmetros de inicialização para o kernel.conf e gravou no dispositivo especificado na opção boot. podemos prosseguir com a instalação do gestor de boot. Essa opção aponta para o arquivo de kernel do Linux.

0) kernel /arquivo_do_kernel ro vga=771 root=/dev/hda2 initrd /arquivo_da_initrd. Repare que a partição foi especificada de uma maneira proprietária do grub: (hd0. As outras entradas do arquivo são as entradas de boot.lst.0) kernel /arquivo_do_kernel2 ro vga=771 root=/dev/hda2 initrd /arquivo_da_initrd-2.0). Isso acontece porque o grub utiliza uma nomenclatura própria de dispositivos para facilitar sua configuração. qual será a opção padrão de inicialização (Conta-se a partir do 0). que definem as opções que ficam selecionáveis no menu do grub. No Debian. e qual o arquivo de imagem que será mostrado na tela do grub. Vamos analisar as opções presente nesse tipo de entrada: title Primeira Opção root (hd0. Segue um exemplo de um arquivo /boot/grub/menu.0) kernel /arquivo_do_kernel ro vga=771 root=/dev/hda2 initrd /arquivo_da_initrd. e definem.img Todo o texto localizado após a opção “title” é o texto que será exibido no menu de seleção do grub. precisamos definir qual será a partição que o grub irá procurar os dados. O principal arquivo de configuração é o /boot/grub/menu.0)/grub/splash. é que o grub não requer que o setor de boot seja regravado sempre que modifique alguma configuração. Os arquivos de configuração do grub ficam localizados no diretório /boot/grub por padrão.img title Segunda Opção root (hd1. ATENÇÃO O grub não costuma vir instalado por padrão em algumas distribuições.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Cada uma dessas entradas consiste em um “bloco de configuração” que começa com a diretiva “image”. fazemos isso com a opção “root”. A principal diferença entre o lilo e o grub. quanto tempo (em segundos) devese esperar por interação do usuário até que seja carregada a opção padrão. onde definimos a aparência e as opções disponíveis no gestor de boot. além dos arquivos de configuração. 163 . o pacote se chama “grub”. ___________________________________________________________________________ Pág. Erivelton Rodrigues Nunes GRUB GRUB é um gestor de boot mais recente com mais recursos que o lilo. Para que possamos especificar caminhos de arquivos nas próximas opções do grub.img As 3 primeiras linhas contemplam a seção global do arquivo.xpm. Se for esse o caso. respectivamente. O exemplo acima possui 2 dessas entradas.lst: default=0 timeout=10 splashimage=(hd1. instale o pacote que provém o grub para sua distribuição.gz title Primeira Opção root (hd1.

que é bem simples de utilizar. lembrando que a principal finalidade de um gestor de boot no Linux é carregar um Kernel e entregar o restante do processo de inicialização ao sistema operacional recém-carregado. pode ser necessário editar o arquivo /boot/grub/ device. Repare que são passados alguns parâmetros de inicialização para o kernel (todos esses na mesma linha).2) Terceira partição do quarto disco rígido (hdd3 ou sdd3) Caso o sistema possua discos de tecnologia diferentes associados.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. dessa forma: # grub-install /dev/hda Isso instalará o grub no MBR do disco rígido. ___________________________________________________________________________ Pág. que especifica qual será a partição que contém o sistema de arquivos raiz. Ás vezes é necessário especificar a opção “initrd”. As outras teclas de navegação são mostradas no rodapé da tela. contamos com o utilitário grub-install. que aponta para um arquivo de initrd para o respectivo kernel.lst.map para definir quais serão os respectivos dispositivos no grub. Neste menu. 164 . basta especificar o dispositivo em que será gravado o grub. como SCSI e IDE. Com o grub instalado e tudo configurado corretamente. O mais importante desses parâmetros é o parâmetro root. Uma initrd é um arquivo que contém módulos necessários para que o kernel consiga “enxergar” o restante do sistema de arquivos e dar procedência ao processo de inicialização. o usuário deve ser presenteado com um menu para a seleção das entradas de boot configuradas no arquivo /boot/grub/menu. O parâmetro “kernel” especifica qual será o arquivo do kernel associado com aquela entrada de boot. Erivelton Rodrigues Nunes Vejamos na tabela abaixo como o grub se comporta nesse aspecto: Sistema de dispositivos do GRUB (hd0) Primeiro disco rígido disponível (hda ou sda) (hd0. podemos editar “temporariamente” as opções das entradas de inicialização pressionando a tecla [E] sobre uma delas. que é o próximo passo do processo de inicialização.0) Primeira partição do primeiro disco disponível (hda1 ou sda1) (fd0) /dev/fd0 (hd3. Exemplos desses módulos são “controladoras de disco” e “sistemas de arquivos”. Instalando o GRUB no MBR Para gravar o sistema do grub no MBR. pois é lá onde o kernel irá procurar pelo programa /sbin/init.

com base nas opções encontradas no arquivo /etc/inittab. O administrador do sistema pode definir uma configuração alternativa. para inicialmente definir o “Nível de execução” do Kernel.. Desabilita a habilidade multiusuário do Kernel. 1 2 3 4 ___________________________________________________________________________ Pág. ou runlevels. Assim que a partição raiz estiver montada.. O que são runlevels (Níveis de execução)? O Kernel do Linux trabalha com os chamados níveis de execução. que é uma maneira organizada e robusta de definir que tipo de trabalho será exercido com o sistema. com exceção dos processos de rede (como nfs. A missão agora é configurar os dispositivos do sistema e inicializar os programas que estiverem marcados para tal. named e httpd). A maior parte dos serviços estão ativos. Modo multiusuário sem carregar interface gráfica. Modo “Monousuário”. nis. Note que isso também impossibilita que certos programas entrem em execução. Cada nível instrui o Kernel a agir de uma forma diferente. ele tenta montar “como somente leitura” a partição raiz do sistema. conforme tabela abaixo: Níveis de Execução 0 Modo “shutdown”. pois só permite que um usuário utilize o sistema de cada vez (o root). Envia um sinal para o Kernel finalizar e desligar o sistema. O Linux conta com 7 níveis de execução. Erivelton Rodrigues Nunes Backup do MBR e da tabela de partições Para fazer um backup do MBR utilize o seguinte comando: # dd if=/dev/sda of=/backup_mbr bs=512 count=1 Para restaurar faça o procemento reverso: # dd if=/backup_mbr of=/dev/sda bs=512 count=1 O processo de init A terceira etapa de inicialização se dá início assim que o gestor de boot consegue carregar o kernel e passa o controle ao sistema operacional (O kernel. 165 . contados de 0 a 6.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.) do restante do processo. que foi especificada através do parâmetro “root” durante a inicialização pelo gestor de boot.Não é permitido acesso remoto. muito utilizado em manutenções do sistema. o kernel procura e executa o programa /sbin/init. Logo após o kernel ser carregado.

d/rc 4 9 l5:5:wait:/etc/init. Podemos. porém com uma interface gráfica de logon Modo “reboot”. o arquivo mais importante dessa etapa da inicialização.d/rc 0 5 l1:1:wait:/etc/init. Cada entrada nesse arquivo tem o seguinte aspecto: identificação:runlevels:ação:comando Identificação é uma string qualquer.d/rc 1 6 l2:2:wait:/etc/init. 5 O arquivo /etc/inittab Este é.d/rc 5 10 l6:6:wait:/etc/init.d/rc 6 ___________________________________________________________________________ Pág. “boot” instrui o init a inicializar o processo durante o boot. Erivelton Rodrigues Nunes Semelhante ao nível 3.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.d/rc 2 7 l3:3:wait:/etc/init. logo após o próprio kernel. Vejamos um exemplo do /etc/inittab em um sistema Debian típico: # grep ^[^#] /etc/inittab |nl 1 id:2:initdefault: 2 si::sysinit:/etc/init.d/rc 3 8 l4:4:wait:/etc/init. 166 . com todos os processo ativos. É nele que se encontram os parâmetros que guiam o sistema por todo o restante do processo.d/rcS 3 ~~:S:wait:/sbin/sulogin 4 l0:0:wait:/etc/init. a qualquer momento. geralmente pequena (1 ou 2 caracteres) e que não se deve repetir para nenhuma outra entrada no arquivo. O campo “runlevels” especifica em que níveis de execução a linha deve ser analisada. Exemplos de palavras-chave são: “respawn” diz ao init para reiniciar o comando quando ele for finalizado. Envia um sinal para o Kernel finalizar e reiniciar o 6 sistema. utilizar o comando runlevel para descobrir que o nível de execução atual e também utilizar o comando init <nível desejado> para instruir o kernel a trocar o nível de execução atual. O campo “ação” aceita palavras-chave que determinam essa característica. Já o campo “ação” especifica como deve ser o comportamento do comando executado no último campo. É de extrema importância que o administrador conheça bem quais são e para que serve os níveis de execução. ignorando o campo “runlevels”. Sua finalidade é identificar a entrada no arquivo.

d/powerfail start pn::powerfailnow:/etc/init. As linhas 4 à 10 dão procedimento a inicialização dos serviços do sistema para cada runlevel (Repare que comente um desses será executado.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. ___________________________________________________________________________ Pág. estudaremos o sistema SYSV nesse tópico. Conectiva. Nesse sistema de inicialização. A linha 3 é um adicional de segurança que impede acesso ao sistema no modo monousuário (O runlevel S é igual 1) sem autenticação como root. após ser definido o nível de execução através do arquivo /etc/inittab e o os scripts de configuração terem entrado em ação (Linhas 1 e 2 do arquivo). ela é responsável por disponibilizar novamente outro terminal quando saímos de um. existem dois modelos de inicialização de serviços: SysV e BSD.d/rc. Portanto. Repare a palavra-chave “respawn” nessas linhas. Na linha 12 é configurado um “trap” para a seqüência de teclas [CONTROL]+[ALT]+[DEL]..d/rcS. Basicamente. pois cada um equivale a um runlevel).. onde o comando shutdown será invocado para reiniciar o PC. Debian. Na linha 1 é definido o nível de execução padrão do sistema.. a entrada específica do /etc/inittab cuidará de chamar o script /etc/init..d/powerfail stop 1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6 As linhas foram numeradas e os comentários foram suprimidos para facilitar a leitura. As últimas linhas do arquivo configuram os terminais que estarão disponíveis após a inicialização.d/powerfail now po::powerokwait:/etc/init. e são poucos os que utilizam o sistema BSD de inicialização (Somente o Slackware até onde conheço). Mais detalhes sobre esse processo em seguida. que desencadeia a estrutura de inicialização dos scripts cujo nome inicie com “S” no diretório /etc/rcS. Essa linha pode ser comentada ou editada para as necessidades do administrador. na segunda linha é invocado o script /etc/init. 167 . As linhas 13. 14 e 15 configuram como o sistema deve agir no caso de falta de energia3. Suse.). O programa init lê uma por uma as entradas e executa as operações adequadas. Erivelton Rodrigues Nunes 11 12 13 14 15 16 17 18 19 20 21 z6:6:respawn:/sbin/sulogin ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now pf::powerwait:/etc/init. Estrutura de inicialização de serviços Essa parte do processo de inicialização que requer mais atenção tem algumas diferenças principais entre algumas distribuições Linux. A maioria das distribuições utilizam o sistema SYSV como padrão (RedHat. Mandrake.d. etc.

d/dbus-1 lrwxrwxrwx 1 root root 20 2004-12-04 10:37 S20irqbalance -> . Por exemplo./init.d../init. Os diretórios de inicialização de serviços Esses diretórios são. Erivelton Rodrigues Nunes O script /etc/init..d/apmd lrwxrwxrwx 1 root root 18 2005-01-06 14:45 S20cpufreqd -> .d/stopbootlogd O comando “ls -l” já mostra a lista na mesma ordem de execução. os serviços com número de prioridade menor executarão primeiro. onde devem estar contidos links para os “reais” scripts de inicialização para cada serviço em / etc/init.d/cupsys lrwxrwxrwx 1 root root 16 2004-12-04 10:34 S20dbus-1 -> ...service lrwxrwxrwx 1 root root 15 2004-12-04 10:34 S20acpid -> . Vejamos o conteúdo desse diretório em um sistema real: # cd /etc/rc2.d/cron lrwxrwxrwx 1 root root 13 2004-12-04 10:36 S99gdm -> . ___________________________________________________________________________ Pág./init..d.d/alsa lrwxrwxrwx 1 root root 14 2004-12-04 10:34 S20apmd -> .. para o nível 2 de execução./init.d/sysklogd lrwxrwxrwx 1 root root 15 2004-12-03 19:46 S11klogd -> . em ordem alfabética.up -> .d/makedev lrwxrwxrwx 1 root root 21 2004-12-04 10:34 S25progress.d/progress./init.... onde “?” é o número do nível de execução. na ordem correta. 168 ./init. e podemos ter uma base sobre o que ocorre nessa parte da inicialização.d/acpid lrwxrwxrwx 1 root root 14 2004-12-04 10:34 S20alsa -> .service -> .d/rc Esse script é responsável por executar./init. o diretório é /etc/rc2.. /etc/rc?.d/klogd lrwxrwxrwx 1 root root 26 2004-12-04 10:34 S19progress../init....d # ls -l lrwxrwxrwx 1 root root 18 2004-12-03 19:46 S10sysklogd -> .d.d/irqbalance lrwxrwxrwx 1 root root 17 2004-12-03 19:46 S20makedev -> . Existe 1 diretório para cada nível de execução./init. O script executa./init.up lrwxrwxrwx 1 root root 14 2004-12-03 19:46 S89cron -> .d/cpufreqd lrwxrwxrwx 1 root root 16 2004-12-21 22:47 S20cupsys -> .d.d/gdm lrwxrwxrwx 1 root root 19 2004-12-03 19:46 S99rmnologin -> . É simples saber qual é esse diretório./init./init./init./init.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. geralmente. O número contido no nome dado aos links para cada serviço é conhecido como número de prioridade do serviço./init..d/progress./init. pois por estar em ordem alfabética. todos os arquivos que iniciam com “S” dentro do diretório do respectivo nível de execução. os scripts contidos no diretório de inicialização de serviços do runlevel atual.d/rmnologin lrwxrwxrwx 1 root root 23 2004-12-03 19:46 S99stop-bootlogd -> .. Repare que todas as entradas são links simbólicos para os scripts contidos em /etc/init.

por exemplo). Gzip significa “GNU zip”. Erivelton Rodrigues Nunes COMPACTADORES E ARQUIVADORES “O que trabalha com mão displicente empobrece.São um grupo de ferramentas especializadas em “compactar” arquivos.gz”.. mas a mão dos diligentes enriquece” Provérbios 10. -N --name Salva ou restaura o nome original e tempos de acesso do arquivo. não altera o arquivo original. O padrão (se ignorarmos o sufixo) é “. Ele surgiu para ser o “zip do Linux”. -L --license Mostra a Licença do programa. porém. A ferramenta gzip O gzip é uma das principais ferramentas GNU. o arquivo original é sobrescrito.. e como ela se relaciona com os compactadores. nesse caso. Somente depois de descompactar é que o arquivo volta e o compactado desaparece.] O sufixo. -d --decompress Descompacta o arquivo. A grande diferença entre compactadores e arquivadores deve ser bem observada: “Os compactadores não agrupam diversos arquivos em um. Compactadores Compactadores são os programas que “apenas” compactam os arquivos. Os principais compactadores existentes no GNU/Linux são: gzip e bzip2. uma espécie de extensão que identificaria o arquivo como sendo compactado pelo gzip. Somente compactam separadamente”. -n --no-name Não salva ou restaura o nome original e tempos de acesso do arquivo. possibilitando a execução de backups do sistema. -l --list Lista o conteúdo de um arquivo compactado. é o texto que será agregado ao final do nome do arquivo após compactado. Iremos aprender a distinção entre essas ferramentas e as características de cada algoritmo de compressão que eles utilizam. originalmente desenvolvido p/ DOS e é utilizado até hoje em sistemas de 32 bits Microsoft® (Winzip. 169 . -f --force Força a operação. seu algoritmo de compressão não é compatível com o algoritmo do zip. ___________________________________________________________________________ Pág. ATENÇÃO Após compactado.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.4 Um termo muito comum no mundo GNU/Linux é “compactadores”. Veremos também o que significa o termo “arquivadores” e porque a ferramenta GNU “tar” é um deles. e seu algoritmo de compressão já é bem superior ao do zip. Tabela de parâmetros -c --stdout Escreve na saída padrão. -h --help Exibe a ajuda. Sintaxe: gzip [opção] [-S sufixo] [arquivo. não restando uma cópia compactada no sistema. tal como o Winzip2 faz no Windows®.

Cria arquivos compatíveis com o utilitário rsync. que consiste em 4 programas: bzip2.conf ls /tmp/teste-gzip gzip -v -d /tmp/teste-gzip/*. É mais rápido.gz: gzip compressed data.conf /tmp/teste-gzip gzip -v -5 /tmp/teste-gzip/*. Mostra a versão do programa.gz $ file ~/passwd. Age recursivamente em diretórios (Não compacta diretórios. Exemplo B: $ cat /etc/passwd |gzip > ~/passwd.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Na verdade o bzip2 é uma suíte de ferramentas. A diferença “interna” é que o bzip2 trabalha com blocos de dados. Erivelton Rodrigues Nunes -q --quiet -r --recursive -t --test -v --verbose -V --version -1 --fast -9 --best --rsyncable Exemplo A: $ $ $ $ mkdir /tmp/teste-gzip . bunzip2. bzcat e bzip2recover. porém possui um algoritmo de compressão muito mais eficiente.gz ~/passwd. 170 . from Unix Exemplo muito interessante sobre como trabalhar com fluxos. O bzip2recover serve para recuperar arquivos bzip2 corrompidos. a qual redirecionamos para um arquivo de saída. O bzip2 é o compactador em si.gz Exibe menos informações na tela. Serve ao mesmo propósito. ___________________________________________________________________________ Pág. Exibe mais informações na tela. porém compacta melhor. Ele funciona como um “gzip -d”. É possível utilizar o comando gunzip para descompactar arquivos gzip também. somente os arquivos contidos nele recursivamente). Utiliza algoritmo de compressão avançado. cp -var /etc/*. pois comprime muito mais. porém compacta menos. É mais demorado. bzcat exibe o conteúdo de arquivos compactados pelo bzip2 e também serve para descompactar. O gzip gera os dados em formato binário para a saída padrão dele. assim como o bunzip2 é o descompactador. Utiliza algoritmo de compressão simples. Testa a integridade de um arquivo compactado. por isso o “b” no início do nome. Enviamos o fluxo de texto do arquivo /etc/passwd para a stdout e emendamos com o gzip através de um pipe. A ferramenta bzip2 Surgiu para ser o substituto do gzip.

. A ferramenta tar O tar é a ferramenta de backup mais conhecida no mundo Linux. -t --test Testa a integridade de um arquivo compactado. Utiliza algoritmo de compressão simples. Sintaxe: tar [opções] [arquivos. Exemplo: $ $ $ $ mkdir /tmp/teste-bzip2 .] bzcat [-s] [arquivo. É mais rápido.. cp -var /etc/*. -L --license Mostra a Licença do programa.conf ls /tmp/teste-bzip2 bzip2 -v -d /tmp/teste-bzip2/*. somente -r --recursive os arquivos contidos nele recursivamente). Erivelton Rodrigues Nunes Sintaxe: bzip2 [opções] [arquivos. onde o arquivo de destino pode ser um simples arquivo no disco rígido ou uma unidade de fita. É mais demorado.. -s --small Utiliza menos memória..conf /tmp/teste-bzip2 bzip2 -v -5 /tmp/teste-bzip2/*. -k --keep Mantém arquivos de entrada. não altera o arquivo original. porém -9 --best compacta melhor. -1 --fast porém compacta menos. Estudaremos aqui o tar.] ___________________________________________________________________________ Pág.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. -d --decompress Descompacta o arquivo. Os mais conhecidos para linux são as ferramentas GNU cpio e tar. Age recursivamente em diretórios (Não compacta diretórios.] bunzip2 [-fkvsVL] [arquivos. 171 .] bzip2recover arquivo Tabela de parâmetros -c --stdout Escreve na saída padrão. Utiliza algoritmo de compressão avançado. Ele é capaz de arquivar diversos arquivos em um só. -v --verbose Exibe mais informações na tela. -V --version Mostra a versão do programa... -z --compress Força compressão. -f --force Força a operação... -q --quiet Exibe menos informações na tela. formando uma ótima ferramenta de backup.bz2 Arquivadores Arquivadores são programas capazes de “juntar” diversos arquivos e diretórios em um só arquivo.

No exemplo abaixo. Diz ao tar para preservar as permissões dos arquivos dentro do arquivo -p tar. --help Exibe ajuda Exemplo: # # # # # tar -cvf /tmp/backup. Para lidar com tarballs. foi criado o diretório etc dentro do diretório atual (/tmp/restore).AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. -u Atualiza o conteúdo de arquivos tar. tornando-os todos os caminhos relativos. -v Modo “verbose”. o arquivo será criado. pois são arquivos normais do tar (Um arquivador.tar /etc mkdir /tmp/restore cd /tmp/restore/ tar -tvf /tmp/backup. Ao extrairmos o backup.tar caso não exista.. ou pelo menos não sabe como criá-las..tar Efetuamos o backup de todo o diretório /etc no arquivo /tmp/backup. Especifica qual o arquivo o tar irá trabalhar. Ativa o algoritmo de compressão gzip no arquivo especificado pela -z opção -f. Por padrão. como /dev/st0 por exemplo. Mostra mais informações sobre a operação atual. Geralmente não é necessário. ___________________________________________________________________________ Pág. As tarballs são simples de entender e de lidar. -r Anexa arquivos no final de um arquivo tar. Instrui o tar a “preservar” a barra “/” no início do nome dos arquivos. -A Concatena outros arquivos tar em um arquivo tar.. No caso da opção -c. para efetuarmos um backup em uma unidade de fita. 172 . As famosas tarballs Muita gente já deve ter ouvido falar de tarballs mas não sabe ao certo o que vem a ser uma delas. Erivelton Rodrigues Nunes Tabela de parâmetros Diz ao tar para “criar” um arquivo de backup. -t Testa arquivo tar. vamos fazer praticamente o mesmo que o exemplo anterior. Instrui ao tar para extrair um arquivo tar. basta ativar a opção -z (gzip) ou –j (bzip2) do tar. que também deve -x ser especificado pela opção -f. -f arquivo.). Ativa o algoritmo de compressão bzip2 no arquivo -j especificado pela opção -f.tar tar -xpvf /tmp/backup. Não pode ser utilizado em conjunto com a opção -z (algoritmo gzip). especificado pela opção -f. que deve ser especificado -c na opção -f. pois o tar costuma ter esse comportamento por padrão. Basta que o arquivo de destino seja um dispositivo de fita. o tar “remove” a “/” no início dos nomes de -P arquivos que populem um arquivo tar. Não pode ser utilizado em conjunto com a opção -j (algoritmo bzip2). compactados com algum algoritmo de compactação como gzip ou bzip2.tar.

é de costume associar a extensão .tar.tar.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.tar. e a extensão . 173 .gz tar -xpvzf /tmp/backup.tar.tar.tar.bz2 ou .bz2 tar -xpvjf /tmp/backup. que ativa o algoritmo de compressão gzip.bz2 /etc mkdir /tmp/restore cd /tmp/restore/ tar -tvjf /tmp/backup. Exemplo B: # # # # # tar -cvjf /tmp/backup.tgz para arquivos “arquivados “ pelo tar e compactados pelo algoritmo do gzip.gz /etc mkdir /tmp/restore cd /tmp/restore/ tar -tvzf /tmp/backup.gz Repare que todas as operações do tar somente foram acrescidas da opção -z.bz2 ___________________________________________________________________________ Pág. que testa o arquivo tar. e é utilizado inclusive junto da opção -t.tar.gz ou . Quanto ao nome dos arquivos.tbz para arquivos “arquivados” pelo tar e compactados pelo algoritmo do bzip2. Exemplo A: # # # # # tar -cvzf /tmp/backup.tar. Erivelton Rodrigues Nunes porém ativando um algoritmo de compactação.

o servidor gráfico é um componente muito complexo e importante do sistema.org. não existem diferenças drásticas de configuração entre eles. we can fal back on these FontPath "/usr/lib/X11/fonts/misc" FontPath "/usr/lib/X11/fonts/cyrillic" FontPath "/usr/lib/X11/fonts/100dpi/:unscaled" FontPath "/usr/lib/X11/fonts/75dpi/:unscaled" FontPath "/usr/lib/X11/fonts/Type1" FontPath "/usr/lib/X11/fonts/CID" FontPath "/usr/lib/X11/fonts/Speedo" FontPath "/usr/lib/X11/fonts/100dpi" FontPath "/usr/lib/X11/fonts/75dpi" EndSection Section "Module" # Load "GLcore" Load "bitmap" Load "dbe" Load "ddc" nele que ___________________________________________________________________________ Pág. mas o que modera os seus lábios é sábio” Provérbios 10. Ambos são configurados da mesma forma. Funcionamento A primeira coisa realmente importante nesse assunto é saber distinguir o que vem a ser “servidor gráfico” e “gerenciador de janelas”. Inclusive os processos gráficos locais utilizam uma conexão de rede para que as aplicações gráficas (clientes do X-WINDOW) obtenham acesso aos 4 dispositivos. Erivelton Rodrigues Nunes SERVIDOR GRÁFICO X-WINDOW “Na multidão das palavras não falta pecado. mouse. A função do servidor gráfico é ter configurados ao menos os 4 dispositivos essenciais para gestão gráfica (teclado. É definimos a resolução. Vejamos um exemplo desse arquivo: Section "Files" FontPath "unix/:7100" # local font server # if the local font server has problems. por exemplo. 174 .19 Comumente referenciado como “Interface Gráfica do Linux”. e pelo menos até agora. Atualmente existem 2 versões de servidor gráfico para Linux: XFree86 e X. profundidade de cores e monitor.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Configurando o XFree86 O arquivo de configuração do XFree86 é /etc/X11/XF86Config-4. monitor e placa de vídeo) e disponibilizar acesso a esses recursos através de uma conexão de rede. O sistema X-WINDOW é considerado um sistema cliente-servidor porque realmente ele é.

Device para placa de vídeo e Screen para a aparência da tela. 175 .AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. como InputDevice para teclado e mouse. ___________________________________________________________________________ Pág.5-70 VertRefresh 50-120 Option "DPMS" EndSection Section "Screen" Identifier "Default Screen" Device "NVIDIA" Monitor "Monitor Genérico" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1152x864" EndSubSection EndSection Section "ServerLayout" Identifier "Default Layout" Screen "Default Screen" InputDevice "Generic Keyboard" InputDevice "Configured Mouse" EndSection A configuração é definida em seções. Erivelton Rodrigues Nunes # Load "dri" Load "extmod" Load "freetype" # Load "glx" Load "int10" Load "record" Load "speedo" Load "type1" Load "vbe" EndSection Section "InputDevice" Identifier "Generic Keyboard" Driver "keyboard" Option "CoreKeyboard" Option "XkbRules" "xfree86" Option "XkbModel" "abnt2" Option "XkbLayout" "br" Option "XkbVariant" "abnt2" EndSection Section "InputDevice" Identifier "Configured Mouse" Driver "mouse" Option "CorePointer" Option "Device" "/dev/psaux" Option "Protocol" "PS/2" Option "Emulate3Buttons" "true" Option "ZAxisMapping" "4 5" EndSection Section "Device" Identifier "NVIDIA" Driver "nv" EndSection Section "Monitor" Identifier "Monitor Genérico" HorizSync 31. Monitor para o monitor.

Após os pacotes instalados e configurados.168. todo cliente gráfico que for inicializado executado pelo servidor gráfico no computador de destino.0” Onde 192. no host que originará a conexão.X é o endereço IP do host que tentará a conexão com esta máquina. permitindo que um aplicativo executado localmente utilize dos recursos gráficos de outra máquina. A partir de agora. Agora. nesse host será ___________________________________________________________________________ Pág. Faça o teste.Y. Para instalar os pacotes necessários no Debian.168. Para habilitar tal característica. Erivelton Rodrigues Nunes A seção ServerLayout define quais seções fazem parte da estrutura de configuração. é preciso exportar a variável DISPLAY para que redirecione as chamadas gráficas para o outro host.168. precisamos de um ambiente desktop completo (gerenciador de janelas) e um gerenciador de login.Y. o gdm. Para configurar esse arquivo no Debian. com o comando: # xhost +192. 176 . Para se ter algo mais funcional. utilize: dselect install gnome-desktop-environment Isso instalará os componentes principais do gnome junto com seu gerenciador de login. Acessando o XFree86 através da rede Devido a natureza “network” do servidor gráfico XFree86. o dpkg disponibiliza um ótimo helper.X Onde 192. é preciso que o ip do host que tentará a conexão seja liberado no host de destino.X.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. é possível efetuar uma conexão a outro servidor gráfico.Y:0. já podemos utilizar o comando startx (nenhum outro servidor gráfico deve estar rodando no momento) para inicializar o servidor gráfico. basta iniciar o serviço gdm para ter acesso a um ambiente gráfico completo e funcional. Inicializando o XFree86 Após configurado. Vejamos: $ echo $DISPLAY :0.168.X. Digite: “dpkg-reconfigure xserver-xfree86” para acioná-lo.0 $ export DISPLAY=”192.Y é o ip do servidor ao qual pretende se conectar.

às 0:35. Esse arquivo pode receber 2 tipos de entradas: Variáveis de ambiente que serão válidas para os comandos agendados no CRON e entradas de agendamento.daily. cada um dos 5 primeiros campos tem um significado que influencia diretamente na periodicidade do agendamento.d) ou através do comando crontab. Existem.hourly. Vejamos o significado de cada um desses campos: Significado dos campos m Minuto (0 a 60) h Hora (0 a 23) d Dia do mês (1 a 31) M Mês do ano (1 a 12) s Dia da semana (0 a 7. Somente o usuário root tem permissão para editar esse arquivo diretamente. ___________________________________________________________________________ Pág. Vamos verificar alguns exemplos de agendamentos: 35 0 * * * Diariamente. adicionar um script em um dos diretórios de agendamento do cron (/etc/cron.se editar diretamente o arquivo de configuração /etc/crontab. basicamente. Veremos as diferenças.weekly e /etc/cron. contamos com diversos programas que lidam com agendamento de tarefas. 177 .AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Cron O cron é um programa que roda em background (um daemon) e cuida de executar tarefas préagendadas por usuários do sistema periodicamente através das chamadas crontabs.22 Na gama de conhecimento de um administrador de sistemas GNU/Linux é essencial constar “Agendamento de Tarefas”. 3 maneiras diferentes de se agendar uma tarefa utilizando o cron. mas o prin cipal deles é o cron. O arquivo /etc/crontab Esse é o arquivo principal de configuração do cron. que devem seguir o padrão abaixo: m h d M s usuario comando No exemplo acima. uma atividade muito importante que facilita bastante a vida de qualquer administrador. basta agendar uma linha de agendamento para cada evento desejado. /etc/cron. Pode. e não traz consigo dores” Provérbios 10. Erivelton Rodrigues Nunes AGENDAMENTO DE TAREFAS “A bênção do Senhor é que enriquece. /etc/cron. sendo que 0 e 7 é domingo) Dessa forma. No Linux.

semanalmente e mensalmente os scripts lá postos. 10.daily. Cada uma dessas entradas também está associada a um diretório diferente. ___________________________________________________________________________ Pág. As tarefas agendadas pelos usuários comuns do sistema só podem ser agendadas e visualizadas por eles mesmos e o root. Agendamentos definidos pelos usuários Através do comando crontab. Diretórios de agendamento do cron O cron possui agendamentos pré-configurados no arquivo /etc/crontab. que só pode ser editado dessa forma.hourly. a cada 5 minutos durante o horário comercial. que executam.daily. é possível colocá-lo (ou até mesmo um link simbólico) no diretório /etc/cron. /etc/cron. Para se ter um script de backup sendo executado diariamente pelo cron.50 */2 1 3 * A cada 2 horas. Estes arquivos devem seguir o mesmo formato que as entradas de agendamento do arquivo /etc/crontab. Por exemplo.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.d. é possível que usuários comuns do sistema (Isso inclui o root) consigam agendar tarefas.weekly e /etc/cron. /etc/cron. é aberto o editor padrão (geralmente o vim) para permitir editar o arquivo de crontab do usuário. Ao invocar o crontab com a opção -e. cada um deles com uma periodicidade diferente. A opção -l (list) mostra a crontab do usuário na tela e a opção -r (release) limpa a respectiva crontab. 178 . diariamente. Os diretórios são: /etc/cron. de hora em hora.d Também é possível agendar tarefas no cron criando-se arquivos de agendamento no diretório /etc/cron. nos minutos 10 e 50. sempre no dia 1 de março. sempre.monthly. é preciso que o daemon do cron (crond) esteja em execução. Sintaxe: crontab [-u usuário] arquivo crontab [-u usuário] { -e | -l | -r } A opção -u permite que o root gerencie crontabs de outros usuários. Erivelton Rodrigues Nunes */5 8-18 * * 1-5 De segunda a sexta. ATENÇÃO Para que qualquer tipo de agendamento funcione. O diretório /etc/cron. A opção -e (edit) abre o modo de edição da crontab para o usuário. respectivamente.

___________________________________________________________________________ Pág.allow para limitar e ter mior controle sobre quem terá acesso ao cron.sh :wq crontab: installing new crontab $ crontab -l 0 0 * * * /home/apostila/bin/script. mas existe o arquivo /etc/cron.sh $ crontab -r $ crontab -l no crontab for usuario Controle de acesso ao cron O cron conta com um sistema de controle de acesso. Observação É uma boa prática de segurança criar um arquivo /etc/cron.allow exista. este servirá de lista negra dos usuários que não terão acesso ao cron. pois a crontab inteira pertence a determinado usuário. Caso esse arquivo não exista.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.deny. 179 . Erivelton Rodrigues Nunes A grande diferença de se agendar tarefas dessa forma é que não precisamos especificar a qual usuário o agendamento se refere na linha de configuração. que permite restringir quem tem permissões para agendar tarefas no sistema. Esse controle é feito através de dois arquivos: /etc/cron. somente os usuários que estejam listados nele (um por linha) poderão agendar tarefas com o cron (inclusive o root !!!). Caso o arquivo /etc/cron. Nenhum destes arquivos existe por padrão.allow e /etc/cron. Vejamos um exemplo: $ crontab -e 0 0 * * * /home/usuario/bin/script.deny.

trabalhar com bibliotecas compartilhadas é extremamente simples. As bibliotecas compartilhadas são uma das maiores responsáveis pelo sucesso das ferramentas Linux hoje em dia. criando um repositório de funções de código.so. quais bibliotecas determinado binário utilizam e saber adicionar novas bibliotecas no sistema. Nesse caso. É preciso saber em quais diretórios elas costumam estar. utilize o comando: # ldconfig -p Esse comando mostrará uma lista gigante das bibliotecas. 180 . os programas instalados já adicionam as bibliotecas em seus devidos diretórios. Erivelton Rodrigues Nunes BIBLIOTECAS COMPARTILHADAS “O que lavra a sua terra se fartará de pão. Trabalhando com bibliotecas compartilhadas Apesar de parecer um termo complicado. o programa A compartilha suas bibliotecas com o restante do sistema. e o programa B utiliza algumas delas para prover as funções de acesso a interface gráfica. /usr/lib e /var/lib. que geralmente são: /lib. Agora imagine o programa B. Listando Bibliotecas disponíveis Para listar todas as bibliotecas disponíveis e a localização de cada uma.1 (0xb7fd4000) ___________________________________________________________________________ Pág. que possui bibliotecas com funções de criação de objetos gráficos na tela. Basta utilizar o comando ldd. mas o que segue os ociosos se encherá de pobreza” Provérbios 28. por exemplo.so. que “Oferece uma interface gráfica” para determinadas tarefas administrativas do sistema. Localização das bibliotecas compartilhadas Por padrão. Descobrindo quais bibliotecas um binário utiliza É possível saber quais bibliotecas compartilhadas determinado binário necessita para funcionar.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Imagine o programa A.19 O sistema GNU/Linux é estruturado de forma que bibliotecas de funções de código presentes em determinados programas possam ser compartilhadas para utilização em qualquer outro programa que saiba fazer uso delas. da seguinte forma: # ldd /bin/tar librt. pois permite que um programador junte características já existentes de outros programas à suas criações.1 => /lib/tls/librt. como janelas.

so.6 (GLIBC_2.so.so.so.so.so.6 (GLIBC_2.6 (GLIBC_2.so.so.so.so. adicione o parâmetro -v ao comando ldd.so.so.6 (GLIBC_PRIVATE) => /lib/tls/libc.0 (GLIBC_2.so.3) => /lib/ld-linux.2) => /lib/tls/libc.2 (0xb7fea000) Para uma listagem mais completa.so.6 libc.so.6 Adicionando novas bibliotecas ao sistema Caso você tenho criado ou baixado alguma biblioteca nova.6 (0xb7e9f000) libpthread.so.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.1.so.so.so.2) => /lib/tls/libc.0) => /lib/tls/libc.3) => /lib/tls/libc.2 (GLIBC_2.6: ld-linux.so.so.6 libc.so.2) => /lib/tls/libc.1) => /lib/ld-linux.so.1) => /lib/tls/libpthread.3) => /lib/tls/libc.0 (0xb7e90000) /lib/ld-linux.2) => /lib/tls/libc.3) => /lib/tls/libc.so.6 (GLIBC_2.2 => /lib/ld-linux. Após a operação.so. adicione o caminho completo do diretório em que essa biblioteca se encontra no arquivo /etc/ld.so.6 /lib/tls/libc.1: libpthread.2 (0xb7fea000) Version information: /bin/tar: librt.6 libc.6 libc.so.cache.6 libc.so.6 (GLIBC_2.6 libc.so.1) => /lib/tls/libc.6 => /lib/tls/libc.so.6 libc.0 (0xb7e90000) /lib/ld-linux.so.0) => /lib/tls/libc.2 => /lib/ld-linux.so.0 libc.so.6 libc.6 libc.0: ld-linux.so.so.2) => /lib/tls/libc.6 (GLIBC_2.so.6 libc.0 (GLIBC_PRIVATE) => /lib/tls/libpthread.6 (GLIBC_2.so.so.0) => /lib/tls/libc. Isso irá gerar o arquivo /etc/ld.6 /lib/tls/librt.6 libc.so. 181 .2 ld-linux.6 libc.0 (GLIBC_2.6 (GLIBC_2.6 (GLIBC_2.6 (GLIBC_2.so.2 (GLIBC_2.so.so.1 (GLIBC_2.so.0 => /lib/tls/libpthread.3) => /lib/tls/libc.1) => /lib/tls/libc.so.0 libpthread.1 libc.so.6 libc.2 (GLIBC_PRIVATE) => /lib/ld-linux.0) => /lib/ld-linux.so.1.so.2 ld-linux.2 /lib/tls/libpthread.6 (GLIBC_2. que contém informações sobre as bibliotecas disponíveis no sistema.so.so.2 (GLIBC_2.6 (GLIBC_PRIVATE) => /lib/tls/libc.0 => /lib/tls/libpthread.1) => /lib/tls/libc.2 libc.3.6 (GLIBC_2.so. veja: # ldd -v /bin/tar librt.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.6 (GLIBC_2.so.2) => /lib/tls/librt.2) => /lib/tls/libc.3.so.so.6 libc.1.so.so.6 libc.2. confira o resultado com o comando “ldconfig -p” e veja se sua nova biblioteca consta na lista.so.conf e digite o comando ldconfig (sem parâmetros).0 libpthread.so.so.so.so.so.1 (0xb7fd4000) libc.1 => /lib/tls/librt.0) => /lib/tls/libpthread.2 ld-linux.so.so.6 (0xb7e9f000) libpthread.6 (GLIBC_2.6 (GLIBC_2.so.so.so.so. ___________________________________________________________________________ Pág.6 (GLIBC_2. Erivelton Rodrigues Nunes libc.6 => /lib/tls/libc.so.so.so.so.so.

O PID é nosso termo-chave para gerenciarmos os processos. listar. mas todos no geral são denominados um a como com sendo processos. e isso transcorre de maneira simples de se entender. Lidando com processos É essencial que um administrador de sistemas Linux saiba como lidar com processos.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. específica sobre quais processos estão em execução em um computador sob o sistema operacional Linux.17 No Linux. ou mais especificamente em todos os sistemas operacionais que seguem o padrão POSIX de desenvolvimento (todos os Unix. BSD e GNU. pois as mesmas opções do UNIX também são aceitas. Listando processos Para ter uma visão geral ou em algumas ocasiões. Erivelton Rodrigues Nunes GERENCIAMENTO DE PROCESSOS “O que se ccompadece do pobre empresta ao Senhor. utilizam um sistema de gerenciamento de processos. permitindo listar processos que coincidam com determinados argumentos como o usuário que originou o processo ou o PID. Linux e BSDs). divididas em 3 grupos: UNIX. Cada processo recebe um identificador numérico crescente que o diferencia dos demais. Portanto. e podem ser agrupadas. Isso existe “no Linux” para manter compatibilidade com o comando ps de outros sistemas. Isso complica um pouco a vida de quem está aprendendo o ps agora. possui uma grande gama de opções. 182 . das quais as mais importantes são: ps e top. apesar de ter um nome pequeno. contamos com diversas ferramentas. desde que a primeira ___________________________________________________________________________ Pág. É esse sistema que permite a execução simultânea de programas no mesmo computador. e significa Process Identification. conforme veremos adiante. Esse identificador numérico recebe o nome de PID. Sintaxe: ps [opçoes] O comando. que lhe retribuirá” Provérbios 19. isso inclui iniciar. cada programa em execução pode desencadear a execução de outros sub-programas. O comando ps A ferramenta ps é utilizada para mostrar os processos em execução no sistema. As opções do UNIX são precedidas por hífem. fique atento nos parâmetros para saber a quais grupos eles pertencem. terminar e modificar a prioridade de execução deles. Basicamente. permitindo que administradores experientes em UNIX não encontrem dificuldades em manipulas o ps no Linux.

exceto líderes de seção (Geralmente o próprio interpretador de comandos do terminal) Mostra processos iniciados por determinado(s) usuário(s).: ps -ax). Seleciona todos os processos que estejam ligados a algum terminal. Mostra processos vinculados com determinado terminal. que sob os padrões POSIX do UNIX. 183 GNU . separe-os por vírgula. Erivelton Rodrigues Nunes opção do grupo possua o hífem (Ex. pois o ps verifica isso. Mostra todos os processos associados com o terminal atual.: os axef). Tabela de Opções Opção -A ou -e -a UNIX -u usuario(s) -t -p pid -C comando -g grupo(s) t a r BSD e x f --user usuario(s) --group grupo(s) --pid pid --tty tty Descrição Seleciona todos os processos. que são exclusivas do Linux e têm um formato característico bem diferente. ele trata a sequência como se fosse aux (sem hífem). não tem a mesma interpretação que o comando ps -aux. inclusive líderes de seção. e caso o usuário não existe. pois são todas precedidas por dois hífens e não podem ser agrupadas (Ex.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. mostraria todos os processos (opção -a) que pertençam ao usuário “x” (a opção -u especifica um usuário. Para especificar mais de um usuário. Bastante utilizado em conjunto com a opção “a” para mostrar todos os processos. Por exemplo. Para especificar mais de um grupo. Seleciona somente os processos em execução (que estejam consumindo recursos de processamento) Mostra variáveis de ambiente associadas com cada processo. Mostra todos os processos associados com algum terminal. desde que o usuário x não exista no sistema. separe-os por vírgula. Lista todos os processos pertencentes ao usuário atual. o comando ps aux. As opções do BSD não são precedidas por nada e podem ser agrupadas facilmente (EX. Já as opções GNU. Idem a opção -u Idem a opção -g Idem a opção -p Idem a opção -t Exemplo A: # ps ax Forma mais comum de se listar todos os processos.: ps –user usuario). Nota: a saída do comando foi suprimida ___________________________________________________________________________ Pág. Mostra processo com determinado pid Mostra processos cujo nome do executável coincida com “comando” Mostra processos iniciados por determinado(s) grupo(s). os dois comandos teriam o mesmo resultado. graças a “astutez” do Linux. Mostra os processos em hierarquia (Floresta). Confundir as opções pode trazer resultados também confusos.

Significado das colunas na saída do comando ps O comando ps exibe diversas colunas diferentes dependendo das opções passadas à ele. A maioria dos processos fica nesse estado T O processo está parado W Paginando. como PID por exemplo). ele já foi finalizado. cujo significado veremos na tabela abaixo: Significado das siglas da coluna STAT D O processo se encontra em “sono profundo” (Não morreu mas está em coma) R “Running” .).. Quando um processo entra nesse estado. 184 .O processo está rodando.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Primeiro que ele ordena os processos com base em algum critério (Utilização de CPU. Segundo que ele só mostra na tela a lista de processos que nela couber. Mostraremos aqui os significados das letras na coluna STAT. consumindo recursos de processamento S “Sleeping” ..6) X Morto. (Não é válido em kernels 2. só que de uma forma diferente. Exemplo C: # ps -p 6613 # ps -u apostila Mostra informações sobre o processo cujo pid seja 6613 (Não esqueça de mudar esse número e escolher um pid válido no seu sistema no momento em que for testar). mostramos os processos pertencentes ao usuário “apostila”. etc. consulte a man page do comando). Erivelton Rodrigues Nunes pois ocuparia muito espaço desnecessário. Em seguida. Para conhecer o significado de cada coluna (que muitas vezes é óbvio. que mostra o estado de cada processo na lista através de letras. memória.Processo “Dormindo”. mas Z ainda ocupa memória por descuido de seu processo pai < O processo tem alta prioridade N O processo tem baixa prioridade L Possui páginas abertas na memória s É um líder de sessão l é um processo capaz de multi-tarefa + O processo está rodando em primeiro plano O comando top De forma parecida com o ps. o top também mostra informações sobre os processos em execução. ___________________________________________________________________________ Pág. Exemplo B: # ps axef Isso mostrará uma lista completa dos processos em execução no sistema. de forma hierárquica e com informações de variáveis de ambiente para cada processo. Você provavelmente não o verá mais Processo Zumbi..

0% si Mem: 515232k total.3% sy. mas algumas vezes iniciamos processos em foreground. 0. 1. Para sair do top. Erivelton Rodrigues Nunes Basta digitar o comando top para “entrar” no utilitário. Os níveis de processos são: Foreground (Primeiro plano) e Background (Segundo plano). Para iniciar um processo já em background. Importante ressaltar que o top se atualiza automaticamente a cada x segundos (3 por padrão). 0.: É perfeitamente normal existir pouca memória ram disponível num sistema em execução à algum tempo). 0k cached Este cabeçalho exibe informações importantes sobre a utilização de recursos do sistema. A saída do top é dividida em 2 partes. pressione a tecla [d] e digite o novo valor em segundos. 513008k used.0% id. cujo pid é 19872 e o identificador do trabalho é 1 (veja mais sobre isso adiante). 0.12 Tasks: 118 total. load average: 1. 0k used. 0. 504968k free. Podemos observar nesse exemplo. que trata-se de um sistema multiprocessado e que a carga de CPU está em média 11% para cada CPU atualmente. Para forçar uma atualização imediatamente. que o sistema possui 512mb de ram e que existe pouco mais de 2mb livres (Obs. 86.0% ni.3% sy.0% hi. 0 zombie Cpu0: 11.0% si Cpu1: 11.0% wa.7% us.0% hi. 117 sleeping.01:51:03 up 12:21. 1. Isso permite que o sistema seja realmente multitarefa e multiusuário. Um processo em foreground não permite utilizarmos o terminal para outras finalidades. 1. Para visualizar os processos em background. pressione a barra de [espaço]. 0 stopped. 36144k buffers Swap: 504968k total.0% ni. 1. 5 users. Para obter uma lista dos possíveis comandos do top. pressione a tecla [h]. 0. O status “Stopped” ___________________________________________________________________________ Pág. 1. A maioria dos processos em execução fica em background. Para Modificar o tempo de atualização automática do top. conforme abaixo: # vi & [1] 19872 Isso inicializou um processo do vi. 87. utilizamos o comando jobs: # jobs [1]+ Stopped vi # jobs -l [1]+ 19872 Stopped (tty output) vi Repare que a opção -l do comando mostra também o pid do processo. Níveis de processos Os processos são executados no sistema em diferentes camadas ao ponto de vista do usuário. 0. por exemplo. como o top ou o editor vim. proceda o comando com o sinal de &. use a tecla [q].18. 0. 185 .08. 1 running.7% id.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. um cabeçalho como o abaixo e a lista dos processos em si: top . 2224k free.0% wa.0% us.

execute o comando novamente e prossiga.Stopped [2]+ Stopped foreground.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Para instruir um trabalho nessa situação a continuar a rodar em segundo plano. caso ele termine antes de passarmos pelos exemplos. pois depende de interação do usuário). que “mata” o processo sem esperar nenhuma finalização e HUP. 186 . Os sinais mais conhecidos são: TERM. Vejamos como ficou a lista de trabalhos: # jobs [1]+ Stopped [2]. Sinalizando processos É possível enviar sinais para os processos em execução. apesar de estar em segundo plano (Nem todo processo suporte ser executado em segundo plano. Os sinais de processos foram criados com a finalidade de enviar instruções para os processos. digite bg (background) seguido do número do trabalho: # bg 2 [2]+ updatedb & # jobs [1]+ Stopped [2]. KILL. utilizamos o comando fg (foreground). Na página de manual é possível obter uma lista completa dos sinais disponíveis. Erivelton Rodrigues Nunes significa que o trabalho está parado. ordenando-os a finalizar ou reiniciar por exemplo. updatedb vi updatedb Pressionando [CONTROL]+[Z] enviamos o processo que está em foreground para background. Experimente fazer isso com o trabalho 2 do exemplo. Um comando capaz de enviar esses sinais para os processos é o kill.Running vi updatedb & Para enviar o trabalho para seguido do número do trabalho: # fg 2 updatedb Pressione [CONTROL]+[Z] [2]+ Stopped # jobs [1]. vamos iniciar mais um em background: # updatedb & [2] 20002 Agora iniciamos um processo que suporta execução em background. ___________________________________________________________________________ Pág. que diz ao processo para reiniciar. mas ele fica com o status Stopped (Parado).Running vi updatedb & É possível cancelar a execução de um trabalho em foreground com a sequência de teclas [CONTROL]+[C]. Para compreendermos melhor o gerenciamento de trabalhos. que diz ao processo para finalizar todos os seus subprocessos e fechar.

Sintaxe: killall [opções] [processo] [processo. que mostra na saída quais processos estão sendo sinalizados. onde pid é o número do processo que deseja finalizar. Para finalizar um processo som este sinal. e sim o nome dos processos diretamente. O comando killall De forma semelhante ao comando kill. 9 é KILL.] Exemplo: # killall -v -HUP cron Isso enviará o sinal HUP para todos os processos de nome “cron” (que geralmente é executado em todos os sistema). Exemplos: # kill -HUP 16384 # kill -9 14446 14447 15896 17894 Não esqueça que esses pids do exemplo são fictícios.. Sua sintaxe é semelhante ao comando kill. Erivelton Rodrigues Nunes O comando kill Sintaxe: kill [ -sinal | -s sinal ] pid . Note a utilização da opção -v. kill -l [ sinal ] Os principais sinais possuem um número associado: 15 é TERM.. o comando killall serve ao mesmo propósito: enviar sinais aos processos. Só que o killall não recebe como argumentos os pids dos processos que deseja enviar o sinal. e vice-versa. Sintaxe: killall5 [-sinal] ___________________________________________________________________________ Pág. O sinal padrão do kill é o 15 (TERM). 187 . Resumindo. ele envia sinais para os processos pelo nome.. Nas versões mais recentes do Debian é necessário instalar o pacote psmisc para que o killall funcione. com exceção dos iniciados pelo kernel e ele mesmo. Utilizamos o “kill -l sinal” para “traduzir” o sinal em seu respectivo número de sinal. O sinal padrão também é 15. A lista completa pode ser vista na man-page do comando kill..AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. O comando killall5 A finalidade desse comando é propagar um sinal (15 por padrão) para todos os processos em execução. basta digitar kill pid”.

). o segundo causa um “holocausto” nos processos. Exemplo: # nice -n 19 updatedb & Modificando prioridades com o comando renice Para modificar a prioridade de execução de um processo que já esteja sendo executado. mas somente um usuário root consegue executar processos com prioridade maior que 0 (O que confunde um pouco. Esse valor de prioridade. que é utilizado para o kernel ordenar os processos na fila de processamento. O nice padrão para processos iniciados é “0”. pois essas prioridades “maiores” que zero vão de -1 até -20. chamado de “nice”. por exemplo. o nice assume a prioridade 10. que é a maior de todas. Sintaxe: nice [-n prioridade] comando Se não definirmos a prioridade desejada (de 19 à -20). Repare que a sintaxe é um pouco diferente em relação ao comando nice.: nohup updatedb & Gerenciando prioridades dos processos Todo processo em execução possui um valor de prioridade. É possível fazer isso com base no pid ou usuário que tenha iniciado o processo. Caso queira executar um comando que permaneça ativo mesmo depois de fechar o terminal atual.AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. Ex. mais baixa que o normal 0. matando-os sem esperar por respostas. Erivelton Rodrigues Nunes Exemplo: # killall 5 -HUP # killall 5 -9 O primeiro reinicia todos os processos. utilize o renice. Definindo prioridades com o comando nice É possível iniciar um programa com prioridade alterada utilizando-se o comando nice. 188 . Sintaxe: renice prioridade [ [ -p ] pids ] [ [ -g ] pgrps ] [ [ -u ] usuários ] ___________________________________________________________________________ Pág. varia do mais alto “-20” até o mais baixo “19”. preceda-o com o comando nohup.

AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof. tomar nota de seu pid. ___________________________________________________________________________ Pág. Exemplo: # updatedb & [1] 7243 # renice 15 -p 7243 7243: prioridade antiga = 0. e utilizá-lo para modificar sua prioridade de execução. prioridade nova = -10 Modificamos por duas vezes a prioridade de execução do processo. prioridade nova = 15 # renice -10 -p 7243 7243: prioridade antiga = 15. 189 . Erivelton Rodrigues Nunes Vamos iniciar um processo.

br Guia do Sistema GNU/LINUX para o usuário Desktop – Ednei Pacheco de Melo ___________________________________________________________________________ Pág.http://focalinux.cipsga. – Sul Editores – Porto Alegre – RS .AES ACADEMIA DE ENSINO SUPERIOR LINUX: Fundamentos de Administração de Sistemas Prof.br/ Programa Técnico Cidadão – SUN MICROSYSTEMS Viva o Linux – http://www. Erivelton Rodrigues Nunes REFERÊNCIAS [FERREIRA 2003] Linux – Guia do Administrador do Sistema – Ferreira.vivaolinux. R.E.org.2003 [BALL 1999] Usando Linux – Ball.com.Editora Campus – Rio de Janeiro – RJ – 1999 [MORIMOTO 2006] Redes e Servidores Linux: guia prático – Morimoto.2006 Guia Foca GNU/LINUX . H .E. C. – Editora Novatec – São Paulo – SP . 190 .