Sumário

1 GNU / Linux, Distribuições e GPL.................................................. ...................4 1.1 Objetivos.......................................................................................... .............4 1.2.Introdução........................................................................................... ..........4 1.3 Distribuições GNU/Linux..............................................................................5 . 1.4 Características de Algumas Distribuições....................................................6 . 1.4.1 RedHat .............................................................. .............6 1.4.2 SuSe................................................................................................. ..........7 1.4.3 Mandriva................................................................................ ....................7 1.4.4 Slackware............................................................................................... ....7 1.4.5 Debian....................................................................................................... .8 1.4.6 Ubuntu............................................................................... ........................8 1.4.7 Fedora....................................................................................... .................8 1.4.8 OpenSuSe..................................................................... .............................9 1.4.9 Knoppix...................................................................................... ................9 1.4.10 Gentoo........................................................................... ..........................9 2 Instalando o sistema GNU/Linux............................................................ ........10 3 Primeiros Passos.................................................................... ........................51 3.1 Objetivos......................................................................................... ............51 3.2 Logon................................................................................. .........................51 3.3 Logout......................................................................................... ................51 3.4 Introdução......................................................................................... ..........51 3.5 T erminal Virtual......................................................................... ..................53 3.6 Desligando o Computador.........................................................................53 . 3.7 Reiniciando o Computador................................................................. ........54 4 Sistema de Arquivos e Diretórios.................................................................. .55 4.1 Objetivos......................................................................................... ............55 4.2 Introdução......................................................................................... ..........55 4.3 Estrutura de Diretórios GNU/Linux..................................................... .........55 4.5 Diretórios Opcionais............................................................................. .......58 4.6 Aprendendo comandos do GNU/Linux.......................... ..............................59 4.6.1 Explorando o sistema.............................................................................59 . 4.6.2 Coringas......................................................................................... ..........61 4.6.3 Usando coringas no Shell..................................................................... ....62 4.6.4 Criação, movimentação, cópia e remoção de arquivos e diretórios........63 5 Buscando Documentação.......................................................... ....................66 5.1 Objetivos......................................................................................... ............66 5.2 Introdução T eórica.................................................................................... ...66 5.3 Comando help.................................................................................... .........66 5.4 Comando man........................................................................................... ..67 5.5 Comando apropos.......................................................................... .............68 5.6 Comando whatis............................................................. ............................68 5.7 Comando info........................................................................................ ......69 5.8 Comando whereis......................................................... ..............................69 5.9 Comando wich............................................................ ................................70

1

5.10 Howto's.............................................................................. .......................70 6 Editor de textos Vi.......................................................... ...............................71 6.1 Objetivos......................................................................................... ............71 6.2 Introdução......................................................................................... ..........71 6.3 Comandos de Edição.................................................................................72 . 6.4 Comandos de Movimentação.................................................................. ....72 6.5 Comandos de Localização........................................................................ ...73 6.6 Comandos de Alteração.................................................................. ............73 6.7 Comandos de Execução.................................................................. ............74 7 Configurando a rede ................................................................. ....................75 7.1 Objetivos......................................................................................... ............75 7.2 Introdução T eórica.................................................................................... ...75 7.3 Prática Dirigida....................................................... ....................................75 8 Manipulando Hardware e Dispositos............................................................. .79 8.1 Objetivos......................................................................................... ............79 8.2 Arquitetura de Computadores e Dispositivos de Hardware........................79 8.3 Acesso aos dispositivos.............................................................................79 . 8.4 Dispositivos em Linux............................................................ .....................80 8.4.1 Explorando o /dev..................................................................... ...............81 8.5 Dispositivos de armazenamento............................................................ .....81 8.5.1 Usando os dispositivos de armazenamento............................................83 8.5.2 Pendrives................................................................... ..............................84 9 Administração de Usuários...................................................... ......................86 9.1 Objetivos................................................................................................. ....86 9.2 Gerenciamento de usuários........................................................ ................86 9.3 Permissões................................................................................. .................87 9.4 Resgistro de usuários no sistema ................................. .............................89 . 9.4.1 Arquivo /etc/passwd............................................................................. ....89 9.4.2 Arquivo /etc/shadow...............................................................................90 . 9.5 Levantamento de informações dos usuários..............................................91 9.5.1 Comando id........................................................................................ ......91 9.5.2 Comando finger.......................................................... .............................91 9.5.3 Comando users...................................................................... ..................91 9.5.4 Comando who....................................................................... ...................91 9.5.5 Comando w............................................................................ ..................92 9.6 Criando Usuários ................................................................................. ........92 9.6.1 Comando adduser.............................................................................. ......92 9.7 Adicionar um usuário a outro grupo.......................... .................................92 9.7.1 Comando gpasswd............................................................................. ......93 9.8 Modificando usuários........................................................... .......................93 9.8.1 Comando passwd.............................................................................. .......93 9.8.2 Comando usermod.............................................................................. .....94 9.9 Removendo usuários................................................................................... 94 10 Administração da Shell............................................................ ....................95 10.1 Objetivos....................................................................................... ............95 10.2 O que é uma shell?........................................................... ........................95

2

10.3.1 Variáveis Locais e de Ambiente (globais)..............................................96 10.4 Alias............................................................................... ...........................97 10.5 Arquivos de Login.................................................... .................................97 10.5.1 Arquivos /etc/issue e /etc/motd............................... .............................98 . 10.6 Tipos de shell........................................................................ ....................99 11 Comandos úteis de linha de comando...................................................... .100 11.1 Objetivos...................................................................................... ...........100 11.2 Trabalhando com entrada e saída de dados......................... ..................100 11.3 Comandos para paginação....................................................................101 . 11.3.1 Mostrando o conteúdo e/ou concatenando.......................................... 01 1 11.3.2 Controlar o fluxo: more e less.............................................................102 . 11.3.3 Porções específicas: head e tail..........................................................102 . 11.3.4 Contagem: wc......................................................................... .............103 11.3.5 Classificação: sort................................................................. ...............103 11.3.6 Mostrar algo: echo............................................................ ...................104 11.4 Filtragem..................................................................................... ............105 11.4.2 Filtrar colunas: cut................................................... ............................106 11.4.3 Determinando o tipo de arquivo: file............................... ...................107 . 11.5.1 Verificar espaço em disco: df................................................... ............107 11.5.2 Verificar espaço de uma pasta ou arquivo: du....................................108 11.5.3 Mostrar o uso de memória RAM: free..................................................109 11.5.4 Mostrar e/ou ajustar a data do sistema: date............................ .........109 . 11.5.5 Mostrar por quanto tempo o computador está ligado: uptime............110 11.6 Diversos............................................................................... ...................110 11.6.1 Diferença entre arquivos....................................................................110 . 11.6.2 T empo de execução de um programa: time........................................111 11.7 Localização............................................................. ................................111 11.7.2 Localização usando base de dados: locate............................... .........113 . 12 Compactadores, Empacotadores e Procedimentos de Backup..................114 12.1 Objetivos...................................................................................... ...........114 12.2 Empacotador TAR..................................................................................114 . 12.3 Compactadores GZIP e BZIP2................................................................116 . 13 Instalando, removendo e atualizando programas.....................................117 13.1 Objetivos...................................................................................... ...........117 13.2 O que é um pacote?............................................................................ ....117 13.3 Gerenciamento de pacotes.......................................................... ...........117 13.4 Espelhos e o arquivo /etc/apt/sources.list..............................................118 13.5 Instalação, Remoção e Atualização........................................................119 13.5.1 Consultas de pacotes...................................................................... .....119 13.6 Atualização via Internet..................................................... .....................119

3

Capítulo 1

GNU / Linux, Distribuições e GPL
1.1 Objetivos
Utilizar um sistema GNU/Linux é muito mais do que optar por uma solução isenta de custos de licença. É usufruir de uma filosofia que antecedeu o software proprietário, e que permitiu, por exemplo, que a internet cresesse de forma aberta como a conhecemos hoje. Como usuário de software livre, precisamos compreender um pouco mais sobre essa ideologia e como ela promoveu o surgimento das várias distribuições.

1.2.Introdução
O sistema GNU/Linux é frequentemente chamado apenas pelo seu segundo nome, Linux. Entretanto, essa designação não faz justiça a todos os desenvolvedores que vêm desenvolvendo o sistema. GNU, que é um acrônimo recursivo de GNU's not Unix, é um grupo que foi fundado em 1984 por seu idealizador, Richard Stallman, com o intuito de criar um sistema operacional “Unix-Like”. Sendo assim, diversos softwares passaram a ser criados e mantidos pela comunidade que se formara, entretanto, havia um pedaço de código essencial que ainda não tinha sido criado: o Kernel. Em 1991, um jovem filandês chamado Linus Torvalds disponibilizou para o mundo a primeira versão do Linux, um kernel “Unix-Like”. A partir desse ponto, foi possível unir o , kernel – Linux – com os softwares GNU, originando o que chamamos de GNU/Linux. O mundo GNU/Linux não é apenas um conjunto de programas mas também uma filosofia de mundo livre e colaborativo, no qual as pessoas podem utilizar esses softwares livremente e, acima de tudo, aprender com eles, uma vez que seu código fonte deve ser disponível a todos que queiram melhorá-lo ou apenas aprender com ele. Para que esse mundo continue livre, Richard Stallman fundou a FSF – Free Software Foundation, que mantém a licença chamada GNU GPL – GNU General Public License.
● ●

liberdade 0 – liberdade para rodar o programa para quaisquer propósitos; liberdade 1 – liberdade para estudar como o programa trabalha e adaptálo às suas necessidades. Ter acesso ao código fonte é essencial para isso. liberdade 2 – liberdade de redistribuir cṕias de forma que você possa ajudar outras pessoas.

4

liberdade 3 – liberdade para melhorar o programa e disponibilizar as melhorias para o público de forma que toda a comunidade possa se beneficiar disso. Ter acesso ao código fonte é essencial também para isso.

Mais informções a respeito do kernel – Linux – podem ser obtidas no site oficial de seus mantenedores: http://www.kernel.org e informações a respeito do GNU e da FSF podem ser obtidas nos sites: http://www.gnu.org e http://www.fsf.org .

1.3 Distribuições GNU/Linux
Você já deve ter ouvido falar em Debian, Redhat, Slackware, Suse, Conectiva, Mandrake, Ubuntu entre outras. Mas, o que é realmente isso? O que são todos esses nomes? Todos esses nomes são o que chamamos de distribuições GNU/Linux. Uma distribuição nada mais é do que o kernel, Linux, softwares GNU e outros aplicativos que são desenvolvidos por outra comunidades ou grupos. Mas, por que tantas distribuições? Justamente porque se você não se identifica com nenhuma delas, você é livre pra fazer a sua própria. Ou seja, em 1993, um rapaz chamado Patrick Volkerding, juntou o kernel e vários outros aplicativos em uma distribuição chamada Slackware, que foi a primeira a ser distribuída em CD. A partir desse ponto, foram surgindo diversas outras distribuições que de alguma forma diferiram da filosofia do Slackware: como Debian ou RedHat, por exemplo. Atualmente existem centenas de distribuições, algumas mais famosas que outras. Em sua maioria, as distribuições GNU/Linux são mantidas por grandes comunidades de colaboradores, entretanto, há outras distribuições que são mantidas por empresas. Dessa forma, podemos dividir as distros, abreviação bastante utilizada na comunidade e que se refere às distribuições, em duas categorias básicas: livres e corporativas.

Distribuições Livres - mantidas por comunidades de colaboradores sem fins lucrativos. Exemplos são: Debian, Ubuntu, Slackware, Gentoo, Knoppix e CentOS, entre outras. Distribuições Corporativas – mantidas por empresas que vendem o suporte ao seu sistema. Exemplos são: RedHat, Suse e Mandriva.

Neste ponto vale ressaltar o fato de que o produto vendido pelas empresas que comercializam sistemas GNU/Linux, são na verdade, os serviçoes relacionados ao sistema vendido, como suporte técnico, garantias e treinamentos, ou seja, o conhecimento do sistema. O fato de o produto não ser mais o software, mas sim o serviço, é devido à Licença GPL que garante as já citadas quatro liberdades básicas. Com isso, por mais que uma empresa queira fazer seu próprio sistema

5

GNU/Linux, enquanto ela estiver utilizando softwares registrados com GPL, serão obrigadas a distribuir o código fonte gratuitamente. Dentro do conjunto de Disttribuições Livres, podemos dividí-las novamente em duas outras categorias: Convencionais e Live.

Distribuições Convencionais – são distribuídas da forma tradicional, ou seja, uma ou mais mídias que são utilizdas para instalar o sistema no disco rígido; Distribuições Live – são distribuídas em mídias com o intuito de rodarem a partir delas, sem a necessidade de instalar no disco rígido.

As distribuições Live ficaram famosas pois têm a intenção de fornecer um sistema GNU/Linux totalmente funcional, de forma fácil e sem a necessidade de o instalar na máquina. O fator que favoreceu essa abordagem é que em uma distribuição Live praticamente todos os componentes já vêm configurados, funcionando e com interface agradáveis aos usuários finais. Exemplos desse tipo de distribuição são o Knoppix, do qual se originaram diversas outras como Kurumin ou Kalango, que são versões brasileiras do Knoppix, e o Ubuntu, bastante difundido atualmente.

1.4 Características de Algumas Distribuições
Será mostrado a seguir a característica de algumas distribuições. Você pode encontrar uma lista das distribuições existentes, bem como das estatística de downloads, no site: http://distrowatch.com

1.4.1 RedHat

tipo: corporativa; descrição: primeira distribuição corporativa a ser criada. Muito utilizada nas empresas por oferecer suporte técnico e ter seu sistema compatível com as diversas tecnologias disponíveis; interface padrão: GNOME; sistema de pacote: RPM – RedHat Package Manager; site oficial: http://www.redhat.com

1.4.2 SuSe

6

4. interface padrão: KDE.com 1. Organizada por seu criador Patrick Volkerding. sistema de pacote: baseado em RPM. sistema de pacote: tgz. sistema de pacote: RPM. interface padrão: GNOME. a fim de manter seu sistema operacional compatível com produtos de terceiros. especializada em serviços e projetos embarcados.é a principal concorrente da RedHat. site oficial: http://www. caracteriza-se por sua filosofia de ser a distribuição mais “Unix-Like” do mundo GNU/Linux. site oficial: http://www. é considerada como sendo a primeira distribuição.tipo: corporativa.4 Slackware tipo: livre. interface padrão: KDE.com/linux 1. descrição: originada da fusão da Mandrake e Conectiva. descrição: comprada pela Novell em 2003.4.novell.com 7 .3 Mandriva tipo: corporativa. Assim como a RedHat. possui parcerias com diversas empresas. site oficial: http://www.slackware. tendo implementado algumas variações.mandriva. atuando no meio corporativo tanto em servidores quanto em desktops. descrição: primeira distribuição GNU/Linux a ser distribuída em CD. mas não segue o formato da RedHat à risca.

debian. o RedHat Enterprise. Patrocinada pelo milionário Mark Shuttleworth é.4.1.6 Ubuntu tipo: livre (convencional e Live). site oficial: http://www. Atualmente é uma das maiores distribuições e a que mais gerou distribuições derivadas.4. descrição: mantida pela RedHat.org 1. Por ser uma referência em sistemas GNU/Linux.com 1. serve de teste para o carro chefe da empresa. interface padrão: GNOME ou KDE (para Kubuntu).7 Fedora tipo: livre. é a distribuição mais utilizada em órgãos públicos e governos. sistema de pacote: DEB – Debian Packge.com 8 . interface padrão: GNOME. interface padrão: GNOME. site oficial: http://www.4. foi uma das primeiras distribuições GNU/Linux a serem criadas. atualmente. sistema de pacote: DEB – Debian Package. descrição: com seu slogan Linux for Human Beings – é voltada para o usuário final.5 Debian tipo: livre.redhat. sistema de pacote: RPM – RedHat Package Manager. apesar de ter versão para servidores.ubuntu. site oficial: http://fedora. a maior distribuição em número de downloads. descrição: criada com o intuito de prover um sistema operacional totalmente livre e gratuito.

9 Knoppix tipo: livre (Live).4.org Bem. descrição: distribuição Live que popularizou distribuições do gênero. sistema de pacote: DEB. devido à sua ferramenta de remasterização que facilitou o processo de gerar novas distribuições. sistema de pacote: RPM.opensuse.10 Gentoo tipo: livre (Live). site oficial: http://www. descrição: todos os programas são compilados na própria máquina.4. que será usada como base para esse curso. interface padrão: GNOME ou KDE.4. baseia-se no SuSe Linux. As principais vantagens são a performance e a personalização conforme as necessidades do usuário.8 OpenSuSe tipo: livre. chegou a hora de começarmos nosso trabalho instalando a distruibuição Debian. site oficial: http://en. sistema de pacote: não utiliza. agora que já conhecemos um pouco de cada distribuição. site oficial: http://www.knoppix. descrição: patrocinada pela Novell. A principal desvantagem é o trabalho e tempo necessários a sua instalação.1. 9 . interface padrão: KDE. interface padrão: a escolha do usuário.org 1.org 1.gentoo.

10 . é necessário alterar a ordem de boot de seu computador acessando sua bios através da tecla Del ou F1 depe ndendo da sua placa mãe. Insira o DVD 1 do Debian Etch 4.0 no seu leitor de CD/DVD e vamos à instalação: Essa é a primeira tela que você verá assim que iniciar o boot Aqui você pode escolher opções de boot tanto para usuários experientes como para iniciantes. em seguida seguiremos com o boot. Altere as configurações para iniciar o boot a partir do "CDROM". Escolheremos a mais simples digitando installgui ou apertando a tecla F3 para ver mais opções e escolhendo a opção installgui.Capitulo 2 Instalando o sistema GNU/Linux Para começar.

Escreva installgui como forma de iniciar a instalação em modo gráfico 11 .

12 .Agora você seleciona a linguagem português do brasil e clique em continue.

Agora você seleciona o país e clique em continuar 13 .

Selecione o layout do teclado portu guês brasileiro (br-abnt2) e clique em continuar 14 .

agora podemos configurar a rede escolhendo a(s) interface(s) de rede (placa(s) de rede). onde será necessário configurar manualmente o endereço IP. máscara de rede. você não precisa configurar a rede agora. Se você for instalar o Debian Linux em sua casa e você não tiver conexão com a internet. será necessário somente se você tiver com uma conexão coma internet (Banda larga) ou se estiver em uma rede. caso você tenha um servidor DHCP na sua rede será atribuído um endereço IP para seu computador. 15 . gateway . DNS e hostname (nome do computador). caso contrário a configuração DHCP automática de IP irá falhar.Após detectar o cdrom e carregar os componentes.

Caso você não tenha um servidor DHCP irá falhar a configuração automática 16 .

Agora você pode escolher em configurar manualmente ou não configurar a rede agora. 17 .

abaixo temos um IP de uma r ede classe C 192.Digite o endereço IP da sua rede.0 18 .168.0.

0 19 .255.Digite a máscara de rede.0.0/255.255. abaixo temos uma máscara de uma rede classe C 192.168.

20 .Digite o endereço IP do gateway. ou seja do computador que está compartilhando a internet na sua rede.

138 21 .0.204.0.Digite o endereço IP do do(s) servidor(es) DNS.10 200.204. Os endereços dos servidores DNS (podem conter até 3 endereços IP DNS). Ex: 200. mas sendo necessário apenas um ou dois endereços IP(DNS1 e DNS2) e podem ser separados por espaço. solicite os endereços com o Administrador da rede ou com o seu provedor de internet.

onde podemos escolher as opções de particionamento assistido on o particionador irá de guiá-lo e oferecendo a opção de revisar e personalizar o particionamento.Agora chegou a hora de particionar o disco rígido. Para instalar o Linux você precisa de pelo menos duas partições: um a partição raiz representado pela ( / ) onde será instalado sistema operacional e outra partição de memória virtual ( SWAP ) sendo que a partição da memória virt ual swap deverá ser o dobro da memória RAM do seu computador.512 MB de SWAP. Ex : 256 MB de RAM . onde você terá que criar as partições manualmente. ou você pode escolher a opção manual. 22 .

Chegamos no particionador onde temos uma visão geral do(s) disco(s) rígido(s) onde podemos escolher o espaço livre. selecione o espaço livre e continuar. 23 . para podermos criar e alterar as partições. Para criar a partição swap (memória virtual) e a partição raiz ( / ) onde será instalado o Linux. ponto de montagem. etc. sistema de arquivos.

Agora você pode criar uma nova partição selecione criar nova partição e depois clique me continuar. 24 .

no caso abaixo temos 512 de RAM e será criado a partição swap com 1 GB. 25 .Aqui você pode primeiramente criar a partição swap. sendo que deverá ser o dobro da sua memória RAM.

26 .Agora selecione o tipo da partição primária ou e xtendida. Neste caso como irá ter apenas duas partições escolha primária.

Agora selecione a opção início. 27 . para criar a partição no início do espaço livre.

onde podemos escolher entre ext3. reiserfs ou swap. Como estamos criando uma partição swap escolha a opção Usar como: sistema de arquivos com journaling ext3 e clique em continuar para poder editar e trocar de sistema de arquivos de ext3 para swap. 28 .Agora você deverá cria o sistema de arquivos para a partição.

Selecione a opção área de troca para a partição SWAP e clique em continuar. 29 .

Agora finalize a configuração da partição SW na opção finalizar e AP clique em continuar. 30 .

Agora selecione o espaço livre e clique em continuar para criar a partição raiz ( / ) onde iremos usar o restante do espaço livre.Repare que foi criada a partição swap com 1.0 GB com a opção F (indicando que a partição irá ser formatada). 31 .

Agora você pode criar uma nova partição selecione criar nova partição e depois clique me continuar. 32 .

Aqui você pode criar a partição raiz ( / ) onde será instalado o Linux . abaixo temos 13. 33 . 30%. Se não for criar mais partições basta clicar em continuar.6 GB que corresponde ao restante do disco se você deseja criar outras partições informe o tamanho em MB ou GB ou em porcentagem 20%. etc.

Agora selecione o tipo da partição primária para a partição raiz ( / ).

34

Agora selecione a opção início, para criar a partição no início do espaço livre.

35

Agora selecione a opção flag inicializável e clique em continuar, para ativar a partição como inicializável onde serão gravadas informações da inicialização do sistema.

36

37 .Agora finalize a configuração da partição raiz ( / ) na opção finalizar e clique em continuar.

38 .indicando que a partição é uma partição inicializável). Agora finalize o particionamento selecionado a opção Finalizar o particionamento e gravar as mudanças no disco e depois clique em continuar.6 GB com a opção F (indicando que a partição irá ser formatada) e B(boot .Repare que foi criada a partição raiz / com 13.

Agora finalize o particionamento selecionado a opção Finalizar o particionamento e gravar as mudanças no disco e depois clique em continuar. 39 .

Agora selecione a opção sim para gravar as mudanças no disco. 40 .

Agora coloque a senha de root (Administrador do sistema) . Após isso clique em continuar. não coloque uma senha muito fácil e anote para não esquecer. 41 .

por exemplo: Linus Tovalds ou apenas Linus.Agora digite o nome de usuário do computador. 42 .

Agora digite o nome de usuário para sua conta no sistema, após a escolha clique em continuar.

43

Agora digite senha de usuário.

44

Caso você deseje informar aos desenvolvedores da distribuição Debian Linux, sobre quais são os programas que você mais utiliza escolha sim, caso contrário escolha não.

45

46 .Nessa seção você poder escolher quais pacotes instalar. para uma instalação básica escolha Ambiente Desktop e Sistema Básico ou você poderá personalizar a instalação com outros pacotes.

Agora ajuste seu fuso horário escolhendo o estado e o relógio para o padrão internacional UTC escolhendo a opção sim. 47 .

Agora será iniciado o processo de instalação de pacotes. será adicionado automaticamente pelo gerenciador de boot GRUB. 48 . Nesse caso escolha sim e depois o computador será reiniciado e aparecerá a tela do gerenciador de boot (GRUB) exibido na imagem abaixo. onde ele irá perguntar se deseja gravar as informações no primeiro setor do disco MBR. caso você tenha outros sistema operacionais instalados no seu disco. onde você poder apertar ENTER e carregar o Debian Linux.

que perguntou anteriormente se havia outros sistemas operacionais instalados na máquina. Selecionando o Debian GNU/Linux. 49 . você estará iniciando o seu sistema Debian recém-instalado.Esse é o menu do Grub.

E daqui para frente aprenderemos como dominar esse sistema operacional. 50 .Agora é só digitar o nome de usuário e senha criado na instalação e entrar no sistema. viu só o Linux não é nenhum bicho de sete cabeças como dizem os mitos. Acabamos de instalar o sistema Debian GNU/Linux em nosso computador.

a culpa não é dele. exit. O shell é a interface entre o usuário e o kernel do sistema e por meio dele.3 Logout Logout é a saída do sistema. 51 . 3.1 Objetivos Neste capítulo iremos aprender os primeiros passos na utiização de um sistema GNU/Linux. ou quando o sistema é reiniciado ou desligado. e logo depois sua senha. Ela é feita pelos comandos logout. chamado de cursor. Inicialmente devemos saber como usá-lo. por exemplo. ksh. csh. irá aparecer uma mensagem de erro e você não será logado no sistema. Se seu GNU/Linux estiver com problemas. não chute seu computador. O kernel é a parte mais próxima do hardware do computador.2 Logon Logon é a entrada do usuário. O shell padrão do GNU/Linux é o bash.Capítulo 3 Primeiros Passos 3. 3. que funciona como interpretador de comandos. Caso você digite algo de forma errada. podemos digitar os comandos. O local onde o comando será digitado é marcado por um traço piscante na tela. <CTRL+D>. onde deve ser digitado seu nome de usuário. utilizamos o shell. root ou comum. Tanto em shells texto como nos shells gráficos é necessário o uso do cursor para sabermos onde devemos in iciar a digitação de textos e nos orientarmos quanto à posição na tela.4 Introdução No mundo GNU/Linux. É o núcleo do Sistema Operacional. tcsh. e zsh. Desde ligar e desligar o computador bem como fazer o login e logout do sistema. Existem também outros shells. como. 3.

Mas se você der um Shift + Page Up você ainda consegue enxergar o conteúdo. Pressione as teclas Ctrl + L para limpar a tela e manter a linha de comando na primeira linha. Para rolarmos a tela para cima. O segundo é o usuário comum. o diretório padrão para os usuários é o /home. Pressione as telcas Ctrl + C para abrir uma nova linha de comando. O usuário root é o administrador do sistema. uma delas é retornar comandos que já foram digitados anteriormente. algumas funcionalidades da linha de comandos (não é necessário se preocupar em decorá-los. Para fazer isso é só pressionar as teclas seta para cima e seta para baixo. da língua inglesa. parecido com o scroll. são elas: Super usuário. Pressione as telcas Ctrl + E para mover o cursor para o final da linha de comandos. Isto é útil para ver textos que rolaram rapidamente para cima. o shell interpreta o usuário que irá efetuar uma ação de duas maneiras. o shell de um usuário comum é identificado com “$” (cifrão). Pressione a telca End para ir ao final da linha de comando. serve para visualizarmos a nossa tela de modo que possamos ir para cima ou para baixo. popularmente conhecido como root. Não se engane. Pressione a tecla Delete para apagar o caractere acima do cursor. para rolarmos a tela para baixo. No próximo capítulo falaremos mais sobre a estrutura de diretórios do GNU/Linux. Outra funcionalidade também muito utilizada. Pressione a telca Home para ir ao começo da linha de comando. na posição atual do cursor. Existem muitas funcionalidades no shell. Pressione as teclas Ctrl + D para sair do shell. que tem a mesma função. pegamos um pouco mais de prática): Pressione a tecla Back Space para apagar um caractere à esquerda do cursor. Antes do cursor. diferentemente dos demais usuários que ficam dentro de /home. Antes do cursor.Popularmente conhecido como linha de comandos. Pressione as teclas Ctrl + R para procurar “x” letra relacionada ao último 52 . O Ctrl + L funciona igual ao comando “clear”. qualquer usuário do sistema que não seja root e não tenha poderes administrativos no sistema. com o passar do tempo. O shell de um usuário root é diferente de um usuário comum. e seu diretório (pasta) padrão é o /root. Como já haviamos dito anteriormente. Pressione as teclas Ctrl + A para mover o cursor para o ínicio da linha de comandos. caso queira retornar. root não é de raiz. A seguir. ele é identificado com “#” (jogo da velha). seguramos o Shift e pressionamos o Page Down. seguramos o Shift e pressionamos o Page Up. Este é equivalente ao comando “exit”. Pressione as telcas Ctrl + U para apagar o Ctrl + y.

Nos dias de hoje. inicialmente por motivos de economia de memória RAM. e pode ser mudado (o sétimo. rsh. Um terminal virtual é uma segunda seção de trabalho completamente independente de outras e que pode ser acessado no computador local ou remotamente. Assim. 3. Você pode utilizar quantos terminais quiser.6 Desligando o Computador Para desligar o computador. o acesso remoto é muito importante. utilizando os programas telnet.comando digitado que tinha “x” letra como conteúdo. Um exemplo prático: se você estiver utilzando o sistema no terminal 1. é usado pelo ambiente gráfico X-WindowSystem). rlogin. em modo texto. do F1 ao F6 (inclusive utilizando o X) e pode ficar “saltando” de terminal para terminal. o GNU/Linux finalizará os programas e gravará os dados em seu disco rígido. O GNU/Linux faz uso de sua característica multi-usuário. acessar outros terminais virtuais. por default. Se você estiver usando o modo gráfico. 53 . O GNU/Linux possui mais de 63 terminais virtuais. deve segurar Ctrl + Alt enquanto pressiona uma tecla de atalho de F1 à F6. vnc. rdesktop. primeiro digite (como root): # shutdown -h now # halt # poweroff A palavra halt vem do comando em assembly chamado HLT. nome da máquina e o terminal que você está. é possível atende-lo. apenas 6 estão disponíveis. isso é por default. etc. suporta vários usuários. que quer dizer “parada de processamento”. No GNU/Linux é possível. A qualquer distância que esteja o cliente. 3. ou seja.segurando a tecla Alt e pressionando F1 até F6. Cada tecla tem função correspondente a um número de terminal do 1 ao 6. e veja na primeira linha nome e versão do sistema operacional. usando os “terminais virtuais”.5 Terminal Virtual Terminal (ou console) é o teclado e a tela conectados em seu computador. pressione Ctrl + Alt + F2. ssh. mas deles.

Exemplo: # shutdown – h now (Delisgar agora) #shutdown -h 12 (Desligar daqui à 12 minutos) 3. existem recursos para reiniciar o sistema sem desligar o computador. Observações: Salve seus trabalhos. Por isso. Utilize comandos e não o dedo. O comando shutdown tem a seguinte sintaxe: # shutdown <ação> <tempo> Onde: ação: o que você quer fazer. Salve seus trabalhos para não correr riscos de perdê-los durante o desligamento do computador. pois podem ocorrer perdas de dados ou falhas no sistema de arquivos de seu disco rígido. Prefira o método de reinicialização explicado acima e use o botão reset somente em último caso. No GNU/Linux você pode usar o comando reboot. # shutdown –r now (Reiniciar agora) # shutdown -r 5 (Reiniciar daqui à 5 minutos) 54 . halt ou poweroff. Os comandos halt e poweroff disparam uma série de procedimentos. tempo: tempo em minutos que você deseja para começar a executar a ação. NUNCA desligue o computador diretamente sem utilizar o comando shutdown. como encerramento de serviços e desmontagem de sistemas de arquivos. shutdown -r now e também pressionar simultaneamente as teclas para reiniciar de forma segura. As opções são -h para desligar e -r para reiniciar. pressione o botão POWER em seu gabinete para desligar a alimentação de energia do computador.7 Reiniciando o Computador Reiniciar quer dizer “Iniciar novamente o sistema”. Não é possível desligar e ligar constantemente o computador pelo botão ON/OFF ou RESET. devido a programas abertos e dados ainda não gravados no disco.Quando for mostrada a mensagem “power down”. que são executados antes da máquina ser desligada.

Atualmente. temos que ter em mente o 55 . muito se tem feito para seguir um padrão em relação à estrutura de diretórios. o FHS está na sua versão 2.3 Estrutura de Diretórios GNU/Linux A estrutura de diretórios também é conhecida como “Árvore de Diretórios” porque tem a forma de uma árvore. e é mantido pelo Free Standard Group. deve ter percebido a presença de vários diretórios (pastas) no sistema. Neste capítulo. ou Hierarquia Padrão do Sistema de Arquivos. eles estão organizados de uma forma talvez não muito familiar.1 Objetivos Quem já teve algum contato com o GNU/Linux.Capítulo 4 Sistema de Arquivos e Diret órios 4. antes de estudarmos a estrutura de diretórios.3.2 Introdução Desde que o GNU/Linux foi criado. que define que tipo de arquivo deve ser guardado em cada diretório. O primeiro esforço para a padronização de sistemas de arquivos para o GNU/Linux foi FSSTND – Filesystem Standard. pois o padrão ajuda manter a compatibilidade entre as versões Linux existentes no mercado. lançado no ano de 1994. Red Hat e Dell. 4. Entretanto. 4. mesmo que superficial. Isso é muito importante. uma organização sem fins lucrativos formada por grandes empresas como HP. IBM. vamos conhecer a organização e explorar a esttutura de diretórios de um sistema GNU/Linux. permitindo que qualquer software escrito para o GNU/Linux seja executado em qualquer distribuição desenvolvida de acordo com os padrões FHS. Cada diretório do sistema tem seus respectivos arquivos que são armazenados conforme regras definidas pela FHS – Filesystem Hierarchy Standard. Mas.

O linux faz a comunicação com os periféricos por meio de links especiais que ficam armazenados nesse diretório. echo. especificados a seguir: / (raiz) Este é o principal diretório GNU/Linux. estão o bash. e é representado por uma “/” (barra). /bin O diretório /bin guarda os comandos essenciais para o o funcionamento do sistema. Um diretório nada mais é do que o local onde os arquivos são guardados no sistema. O arquivo pode ser um texto. A árvore de diretórios do GNU/Linux tem a seguinte estrutura: / bin boot cdrom dev etc home lib media mnt opt proc sbin root srv var tmp usr Da estrutura mostrada acima. Os arquivos devem ser identificados por nomes para que sejam localizados por quem deseja utilizá-los. e o gerenciador de boot. Entre os comandos. o FHS determina que um sistema GNU/Linux deve conter obrigatoriamente 14 diretórios. facilitando assim o acesso aos mesmos. etc. 56 . cp e outros. /boot No diretório /boot estão os aquivos estáticos necessários à inicialização do sistema. Estes diretórios. planilha. Sendo assim. sendo assim. Esse é um diretório público. ls. /dev No diretório /dev ficam todos os arquivos de dispositivos. ele diferencia letras maiúsculas e minúsculas nos arquivos e diretórios. O gerenciador de boot é um programa que carrega um sistema operacional e/ou permite escolher qual será iniciado. Um detalhe importante a ser observado é que o GNU/Linux é case sensitive. isto é.que são diretórios. que vamos conhecer agora. são chamados de subdiretórios pois estão dentro do diretório /. um arquivo chamado Arquivo é diferente de ARQUIVO e diferente de arquivo. É no diretório raiz que ficam todos os demais diretórios do sistema. uma imagem. os comandos que estão nele podem ser utilizados por qualquer usuário do sistema.

etc. tabela do sistema de arquivos. É utilizado principalmente para guardar pequenas informações que precisam estar em 57 . etc. os dados não são específicos de um usuário. Isso quer dizer que esse diretório também é de comandos essenciais. /srv/www (servidor web). reparar. /mnt Esse diretório é utilizado para montagem temporária de sistemas de arquivos. restaurar e/ou recuperar o sistema. pendrive. configuração padrão para logins dos usuários. /sbin O diretório /sbin guarda os comandos utilizados para inicializar. /srv/ftp (servidor ftp). Nesse diretório vamos encontrar vários arquivos de configuração. As bibliotecas são funções que podem ser utilizadas por vários programas. /opt Normalmente. dvd./etc No diretório /etc estão os arquivos de configuração do sistema. disquete. /media Ponto de montgem para dispotivos removíveis. tais como compartilhamentos de arquivos entre Windows e Linux. etc. iptables e outros. câmera digital. mas os mesmos são utilizados apenas pelo usuário r oot. ifconfig. Por exemplo. é utilizado por programas proprietários ou que não fazem parte oficialmente da distribuição. tais como: scripts de inicialização do sistema. etc. /tmp Diretório para armazenamento de aqu ivos temporários. /lib No diretório /lib estão as bibliotecas compartilhadas e módulos do kernel. Linux e Linux. init. Entre os comandos estão o halt. /srv Diretório para dados de serviços fornecidos pelo sistema cuja aplicação é de alcance geral. tais como: cd. ou seja.

dados sobre as redes. etc. Por padrão. /root 58 . o arquivo fica registrado em /tmp. Aqui. mas não precisam obrigatoriamente possuir este nome. é encaminhado para o local correto. temos subdiretórios com o nome que corresponde ao PID (Process ID) de cada processo. e assim que é finalizado.5 Diretórios Opcionais Os diretórios /root e /home podem estar disponíveis no sistema. o diretório /home poderia se chamar /casa. navegadores. Dentro deles.algum lugar até que a operação seja completada. /usr O diretório /usr contém programas que não são essenciais ao sistema e seguem o padrão GNU/Linux. 4. interrupções. /proc O /proc é um diretório virtual. Além de log. os arquivos que estão aguardando em filas. como por exemplo. como é o caso de um download. mantido pelo kernel. que não causaria nenhum impacto na estrutura do sistema. Enquanto não for concluído. gerenciadores de janelas. os programas que geram um arquivo de registro para consulta. também ficam localizados em /var/spool. /var O diretório /var contém arquivos de dados variáveis. Por exemplo. onde encontramos a configuração atual do sistema. etc. endereços e estados das portas físicas. ficam armazenados nesse diretório. Os principais arquivos que se utilizam do diretório /var são as mensagens de email e os arquivos a serem impressos. dispositivos já montados. dados estatísticos. vamos encontrar diversos arquivos texto contendo várias informações sobre o respectivo processo em execução. mais conhecido como log. /home O /home contém os diretórios pessoais dos usuários cadastrados no sistema.

afinal. você pode ser enganado e rodar um programa Cavalo de Tróia (programa que obtém poderes do super usuário) comprometendo a segurança do seu sistema sem que você saiba. o conceito de comandos é diferente do padrão MSDOS. O shell é o responsável pela interação entre o usuário e o sistema operacional. Um comando é qualquer arquivo executável. configurar interfaces de rede. interpretando os comandos.1 Explorando o sistema Veremos agora os comandos básicos para navegação no sistema. No mundo *NIX (Linux. Uma das tantas vantagens do Linux é a variedade de comandos que ele oferece. # pwd O comando pwd exibe o diretório corrente. Dica: Utilize uma conta de usuário normal em vez da da conta r oot para operar seu sistema. para quem conhece comandos.Diretório pessoal do superusuário r oot. É no shell que os comandos são executados. que pode ser ou não criado pelo usuário. 4. a administração do sistema acaba se tornando um processo mais rápido. Unix). O root é o administrador do sistema.6. Uma razão para evitar usar privilégios root é por causa da facilidade de se cometer danos irreparáveis como root. manipular usuários e grupos.6 Aprendendo comandos do GNU/Linux Comandos são instruções passadas ao computador para executar uma determinada tarefa. 4. alterar a prioridade dos processos. e pode alterar a configuração (dele). Ele é muito útil quando estamos navegando pelo sistema e não lembramos qu o diretório atual. Exemplos: # cd # cd ~ 59 . entre outras. al Exemplo: # pwd O comando cd é utilizado para mudar o diretório atual de onde o usuário está. além de que.

O comando ls é utilizado para listar o conteúdo dos diretórios. ou seja. ele irá mostrar o conteúdo do diretório onde estamos no momento./usr..Ir para o início da árvore de diretórios. Falando sobre os campos.. . A primeira dela é o -l que lista os arquivos ou diretórios de uma forma bem detalhada (quem criou. /lib/modules. Retorna ao diretório anterior: # cd Entra em um diretório específico: # cd /usr/include/X11 Sobe 2 níveis da árvore de diretórios: # cd . veremos aqui opções mais utilizadas../ Atenção! Note a diferença entre caminhos absolutos e relativos: Absolutos: /et/ppp. data de criação. dono e grupo a qual eles pertencem). Lista o conteúdo do diretório atual: # ls O comando ls possui muitos parâmetros. o diretório / : # cd / Ir para um diretório específico: # cd /etc Sobe um nível na árvore de diretórios: # cd .. Relativos: etc/ppp. ./. 60 . Ser não for especificado nenhum diretório./. /usr/share/doc. # ls -l / drwxr-xr-x 4 root root 1024 2009-01-15 21 :32 boot Veja que a saída desse comando é bem detalhada. tamanho.../doc.

6. 61 .profile Veja que. (ponto). que no nosso exemplo.Esse coringa pode substituir uma ou mais letras em determinada posição. seja para listar.para os primeiro caractere temos algumas opções: d -> indica que se trata de um diretório l -> indica que se trata de um link (como se fosse um atalho – também vamos falar sobre ele depois) – -> hífen. No Linux. no nosso caso.bashrc .. O campo 1024 indica o tamanho do arquivo. Com relação a diretórios. alguns arquivos são iniciados por . um assunto abordado apenas em cursos mais avançados. Os coringas são utilizados para especificar um ou mais arquivos ou diretórios.aptitude .bash_history . lista também os subdiretórios que estão dentro do diretório /: # ls -R / 4. (ponto). que em certos jogos. é o boot. indica que se trata de um arquivo c -> indica dispositivo de caractere b -> indica dispositivo de bloco O campo rwxr-xr-x lista a permissões. é o administrador do sistema.kde . copiar.2 Coringas O significado da palavra coringa no dicionário é o seguinte: carta de baralho. e o campo 2009-01-15 21:32 informa a data e hora em que o diretório foi criado. arquivos e diretórios ocultos são iniciados por um . ? . da saída do comando anterior. . Esses arquivos são ocultos. . etc. Lista arquivos de forma recursiva. muda de valor e colocação na sequencia. No sistema GNU/Linux é bem parecida a utilização desse recurso. Finalmente.Utilizado para um nome completo ou restante de um arquivo/diretório. ou seja. # ls -a /root . o root. no último campo temos o nome do arquivo ou diretório listado. Eles podem substituir uma palavra completa ou somente uma letra. São usados três tipos de coringas no GNU/Linux: * . é importante ressaltar que o tamanho mostrado não corresponde ao espaço ocupado pelo diretório e seus arquivos e subdiretórios. O número antes do dono indica o número de hard links. Esse espaço é aquele ocupado pela entrada no sistema de arquivos que corresponde ao diretório. enquanto os campos root indica quem é usuário e grupo dono desse diretório que. apagar.

Usado para trabalhar com os caracteres a e z seguidos de um caractere 1 ou 0 naquela posição. é que a existência do arquivo ou diretório é opcional para o resultado final.0] . [a. Lembrando que os 3 tipos de coringas mais utilizados (“*.novo arq5.txt.txt. mas não tem muito sentido utilizar esse comando. tenham qualquer 62 .novo No caso.Faz referência do intervalo de caracteres de a até z ou 1 ou 0 naquela posição.txt Listar todos os arquivos que começam com o nome arq.txt: # ls *.txt arq4.6.É utilizado para referência a uma faixa de caracteres de um arquivo/diretório. Podemos listá-los: # ls arq1. A diferença do método de expansão dos demais.Usado para trabalhar com caracteres de a até z seguidos de um caractere de 0 até 9. 4.novo arq5.1.[padrão] . como mostrado no caso dois.z][1. o comando # ls /tmp/teste/* foi citado.novo Vamos listar todos os arquivos do diretório /home/usuário que tenham “novo” no nome: # ls *novo* arq4. [a-z. é importante ressaltar que a utilização do * se aplica para um diretório cheio de arquivos. Vejamos alguns exemplos: Supondo que existam 5 arquivos no diretório /home/usuário. utilizado para procurar o arquivo em específico. [a-z][0-9] .[]”) podem ser usados juntos.txt arq2.0] .txt arq3. Isto é útil para criação de diretórios.?.3 Usando coringas no Shell Listar todos os arquivos que começam com qualquer nome e terminam com .

txt Para listar todos os arquivos que começam com o nome arq. a última forma resulta na busca mais específica.5]. letras ou intervalo que serão usados. cópia e remoção de arquivos e diretórios Para criar um arquivo.* # ls arq[4. Exemplo: Criar o diretório Eduardo: 63 .novo Existem muitas outras maneiras de fazer a mesma coisa mas depende muito de cada um que vai utilizar.txt: # ls arq?.5]. # ls arq[1-3]. podemos simplesmente abrir um editor de texto e salválo. No exemplo anterior. O uso de coringas é útil para copiar arquivos. tenham qualquer caractere entre o número 1-3 no lugar da 4º letra e terminem com . O que pretendemos é mostrar como visualizar mais de um arquivo de uma só vez.caractere no lugar do coringa. se obtém uma filtragem mais exata.6. Um diretório é como uma pasta onde você guarda seus arquivos. Uma das formas mais simples é usando o comando touch: # touch arquivo O comando mkdir é utilizado para criar um diretório no sistema. Neste caso. renomear e nas mais diversas partes do sistema. 4. A criatividade nesse momento conta muito.novo # ls *novo* # ls arq?.novo # ls arq[4.txt.txt Para listar somente arq4. Mas existem outras formas.novo podemos usar os seguintes métodos: # ls *. mover. apagar.4 Criação. pois o coringa especifica qualquer caractere naquela posição e [] especifica números. movimentação. e terminam com .novo e arq5.

O comando rm é utilizado para apagar arquivos.tx Remove o arquivo eduardo. ou seja. Exemplos: Remove o arquivo teste.txt rm: remove arquivo comum vazio `eduardo. caso não existam.txt: # rm teste. Remove o diretório curso: # rm -r curso A opção -r é recursivo. Observação: Muita atenção ao usar o comando rm! Uma vez que os arquivos e diretórios são removidos não podem mais ser recuperados! O comando rmdir é utilizado para remover diretórios vazios. irá remover o diretório curso e o seu conteúdo. diretórios e subdiretórios que estejam vazios ou que contenham arquivos.txt'? A opção -i solicita a confirmação para remover o arquivo eduardo. Exemplos: Remove o diretório eduardo # rmdir eduardo Remove o diretório curso e o subdiretório aluno: # rmdir -p curso/aluno O comando mv serve tanto para renomear um arquivo quanto para movê-lo: # # # # mv arquivo caminho/diretório-destino/ mv arquivo novo-nome mv diretório novo-nome mv diretório caminho/diretório-destino/ 64 .# mkdir Eduardo Cria o diretório curso e o subdiretório aluno: # mkdir -p curso/aluno A opção -p irá criar o diretório curso e o subdiretório aluno.txt.txt pedindo confirmação: # rm -i eduardo.

O comando cp serve para faze cópias de arquivos e diretórios: # # # # cp cp cp cp arquivo-origem arquivo-destino arquivo-origem caminho/diretório-destino/ -R diretório-origem nome-destino -R diretório-origem caminho/diretório-destino/ 65 .

Essa ajuda é provida por meio dos manuais. é útil para saber que opções podem ser usadas com os comandos internos do interpretador de comandos (shell). é preciso saber aprender para manter-nos atualizados.2 Introdução Teórica O sistem operacional GNU/Linux possui uma vasta biblioteca de documentação. ao teclar de um simples comando. 5. usamos esta outra sintaxe: # help [comando] 66 . vamos aprender a consultar as documentações existentes e como buscar informações sobre o que precisamos.Capítulo 5 Buscando Documentação 5. Para visualizar uma ajuda rápida para todos os comandos internos do sistema. O GNU/Linux cresceu porque a comunidade que contribui para o sistema e sua documentação não tem medo ou receio de compatilhar informações e coloca o que foi desenvolvido no próprio sistema. as famosas Man Pages. Antes de recorrermos a ajuda de outras pessoas. não basta conhecermos bem alguma coisa. bem a nossa frente. Especialmente nas áreas de tecnologia. devido a sua constante evolução. outros comandos que podem nos informar de maneira rápida os parâmetros que podemos utilizar e pelos How-Tos que cada aplicação instalada pode nos fornecer. podemos fazer da seguinte forma: # help Caso desejamos visualizar a ajuda rápida para somente um comando interno. 5.1 Objetivos Hoje em dia. Neste capítulo. Essa documentação em grande parte dos casos é de extrema qualidade. devemos lembrar que podemos ter as repostas que precisamos no próprio sistema.3 Comando help O comando help fornece ajuda rápida.

Observação: O comando help somente mostra a ajuda para comandos internos.4 Comando man O comando man é o responsável por trazer a documentação mais completa sobre determinado comando ou arquivo de configuração no qual estamos trabalhando. man 5 – Arquivos de configuração e convenções. Para comandos externos. devemos fazer da seguinte forma: # [comando] --help O parâmetro --help pode ser utilizado em qualquer comando para ter uma consulta rápida dos parâmetros que determinado comando pode nos oferecer. man 6 – Jogos. man 4 – Arquivos de dispositivo (localizados normalmente no /dev). caso desejemos visualizar uma ajuda rápida sobre um comando externo. o help aparece como parâmetro. man 2 – Chamadas de sistema (funções providas pelo Kernel). man 7 – Variados (incluindo pacotes de macros e convenções). Sintaxe do comando man: # man [coamndo] ou # man [seção] [comando] Observação: Essas informações sobre as seções do comando man podem ser 67 . man 9 – Rotinas de Kernel. man 8 – Comandos de administração do sistema (normalmente usado somente pelo root). man 3 – Chamadas de bibliotecas (funções como bibliotecas do sistema). Desse modo. Os manuais do sistema são dividos em níveis que são os seguintes: man 1 – Programas executáveis e comandos do Shell. 5.

6 Comando whatis O comando whatis tem basicamente a mesma função do comando apropos. Para construir o banco de dados do coma ndo apropos deveremos fazer seguinte forma: # catman 5. então ele aparece primeiro quando digitamos man passwd. O apropos busca as 68 . Veremos agora o manual do arquivo de usuários passwd: # man 5 passwd Podemos ver que para visualizar o manual do arquivo de usuário passwd precisamos informar em qual nível de manual ele se encontra. Esse manual do arquivo passwd está compactado na pasta /usr/share/man/man5 5. o comando apropos utiliza um banco de dados construído com o comando catman (executado pelo administrador do sistema. só que as buscas do comando whatis são mais específicas. A sintaxe utilizada para usar o apropos é a seguinte: # apropos [palavra-chave] Para localizar as man pages. o comando man abre um arquivo que está compactado na pasta /usr/share/man/man1 para o passwd ou outro nível de manual dependendo do comando ou arquivo. Para navegar pelo manual. Caso desejemos visualizar o manual do comando passwd. root). podemos fazer da seguinte forma: # man passwd Estamos consultando o manual do comando passwd.achadas no seu próprio manual digitando o comando man man. O passwd é conhecido no sistema GNU/Linux como um comando que adiciona ou modifica a senha do usuário e como o arquivo de usuários do sistema (/etc/passwd). pois já existe um passwd no nível 1 que é o comando. mostrando as man pages que contém a palavrachave que foi especificada.5 Comando apropos O comando apropos é utilizado quando não se sabe qual documentação acessar para um determinado assunto.

u (up/sobe um nível). Elas são acessadas pelo comando info. A navegação das info pages é feita através de nomes marcados com um “*” (hipertextos) que. podemos fazer da seguinte forma: # info Para exibir as informações somente de um determinado comando. utilizamos a seguinte sintaxe: # whereis [comando] ou # whereis [arquivo] 69 . Caso desejemos exibir a lista de todos os manuais de comandos/programas disponíveis. se digitarmos a palavra passwd ele nos trará tudo que tiver passwd. se pressionarmos Enter. p (previous/anterior). porém são utilizadas com navegação entre as páginas. Para sair do comando info. O comando info é útil quando já sabemos o nome do comando e só queremos saber qual sua respectiva função.7 Comando info As info pages são como as páginas de manuais. e backspace volta à página anterior . Para visualizarmos a localização destes dados para um determinado comando ou arquivo. usaremos a seguinte sintaxe: # info [comando] 5. do arquivo de configuração (caso exista) e a localização das páginas de manuais do determinado comando ou arquivo.páginas de manuais e descrições de maneira mais genérica. basta teclar q.8 Comando whereis O comando whereis é utilizado para mostrar a localização do binário do comando. nos levará até a seção correspondente. Podemos também navegar pelas páginas com as teclas n (next/próximo). A sintaxe utilizada no comando whatis é a seguinte: # whatis [comando] 5. E o whatis nos trará somente o manual com nome exato da palavra pesquisada. seja como nome ou parte do nome do manual ou na descrição.

configurar um servidor web e muitos outros. Para visualizar a localização do binário do comando. podemos consultar os arquivos do diretório: # cd /usr/share/doc/iptables/html/ 70 . O diretório de Howto's do GNU/Linux é o /usr/share/doc. configurar placas de som.9 Comando wich O comando wich é bem semelhante ao comando whereis. ou em algumas vezes existe um pacote específico para a documentação daquela aplicação.5.10 Howto's Os Howt'os são documentos que focam uma necessidade específica. Normalmente esses documentos são instalados junto com suas respectivas aplicações. só que o comando wich só mostra a localização do binário do comando. instalar uma webcam. como montar um firewall. se desejamos saber como configurar um firewall. Por exemplo. utilizamos a seguinte sintaxe: # wich [comando] 5.

Vim is open source and freely distributable Sponsor Vim development! type :help sponsor<Enter> for information type :q<Enter> to exit type :help<Enter> or <F1> for on-line help type :help version7<Enter> for version info 71 . Para podermos fazer isso.0.2 Introdução O Vi é o editor básico do GNU/Linux. ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ VIM . 6. devmos conhecer o editor de texto padrão do GNU/Linux.Vi IMproved version 7.Capítulo 6 Editor de textos Vi 6.1 Objetivos A grande maioria das configurações em sistemas GNU/Linux são feitas editandose diretamente arquivos de configuração em modo texto. Ele está presente em quase todas as distribuições Linux. as distribuições usam uma versão mais completa e com mais recursos do que o Vi que é o Vim (VI iMproved). Segue a tela do vim. mesmo naquelas que vêm em apenas um disquete.235 by Bram Moolenaar et al. Hoje em dia. que é o Vi.

Insere texto no início da linha onde se encontra o cursor. deleção e de substituição. 72 . ------------EDIÇÂO-------> | | | | Esc | | | | ------------COMANDO --> INSERT REPLACE VISUAL ESCRITA ATALHO SHELL 6.3 Comandos de Edição Comandos básicos de inserção de texto: i a r A o O Ctrl + h Insere texto antes do cursor. Adiciona linha acima da linha atual.4 Comandos de Movimentação Comandos básicos de movimentação: Ctrl + f Ctrl + b H M L Move o Move o Move o Move o Move o cursor para cursor para cursor para cursor para cursor para a próxima tela. 6. Apaga o último caractere. Para modificar o arquivo. usam-se os modos de inserção. Adiciona linha abaixo da linha atual. Insere texto depois do cursor. a primeira linha da tela.0-1 All Ao invocar o Vim. este entra direto para o modo “visualização”. Para voltar ao modo de visualização.~ 0. a tela anterior. a última linha da tela. Insere texto no final da linha onde se encontra o cursor. sempre se usa a tecla Esc. o meio da tela.

Deleta a linha a partir da posição atual do cursor até o final. Desfaz todas as modificações feitas na linha atual. copia para área de transferência. 6. Move o cursor para o início da palavra anterior. a linha n. 73 . Copia 1 linha para a área de transferência. a primeira linha do arquivo. 0 (zero) ^ $ nG :n gg G Move o Move o Move o Move o Move o Move o cursor um caractere à esquerda. Repete o último comando / ou ?.6 Comandos de Alteração Comandos básicos para alteração de texto: x dw dd D :A. cursor para a próxima linha. o final da linha atual. b B espaço. a linha n. o número da linha atual e o total de 6. Move o cursor para a ocorrência anterior da palavra. Mostra o nome do arquivo. Repete o último comando / ou ?. da posição atual do cursor até o final. /palavra ?palavra n N Ctrl + g linhas. a última linha do arquivo. Substitui o caractere sob o cursor pelo especificado em x. na direção reversa. Deleta da linha A até a linha B.5 Comandos de Localização Comandos básicos para localizar texto. Busca pela palavra ou caractere em todo o texto. separadas por Move o Move o Move o Move o Move o Move o Move o cursor para cursor para cursor para cursor para cursor para cursor para cursor para o início da linha atual. cursor para a linha anterior. o primeiro caractere não branco da linha atual. cursor para o início da próxima palavra. Une a linha corrente à próxima. cursor para o início da próxima palavra. Deleta a palavra. Desfaz a última modificação. e copia o conteúdo para área de transferência.Bd rx u U J yy Deleta o caractere que está sob o cursor.h j k l w W espaço. cursor um caractere à direita. separadas por Move o cursor para o início da palavra anterior. Deleta a linha atual.

6. p Cola o conteúdo da área de transferência.7 Comandos de Execução Comandos para salvar o texto: :wq ou :x :w nome_do_arquivo :w! nome_do_arquivo :q :q! Salvam o arquivo e saem do editor. Sai do editor. cNc Apaga o conteúdo de N linhas. e copia para área de transferência. Np Cola N vezes o conteúdo da área de transferência. O mesmo que :w. Salva o arquivo corrente com o nome especificado.yNy Copia N linhas para a área de transferência. :%s/string1/string2/g Substitui “string1” por “string2”. cc Apaga o conteúdo da área de transferência. mas forçando sobrescrita. Sai do editor sem salvar as alterações realizadas. 74 .

bem como salvar essas configurações nos seus respectivos arquivos. desde um simples servidor de ssh até um servidor de DNS passando por um servidor de páginas Web. “mas por que raios eu poderia querer um servidor web rodando em uma máquina que não fala com o mundo externo?”. iremos aprender a configurar o IP da máquina e a máscara de rede.3 Prática Dirigida Verifique as configurações de rede que estão ativas: # ifconfig Verifique que rotas estão sendo utilizadas: 75 . Estando essa interface configurada. ainda assim uma máquina GNU/Linux será um sistema de rede.1 Objetivos Neste capítulo. por que não? Ou testar a implantação de um servidor DNS ou um proxy. Ou seja.1 e que sempre deve estar apropriadamente configurada.0.Capítulo 7 Configurando a rede 7. Você pode estar se perguntando. 7. chamada loopback (lo) cujo endereço IP será 127. 7.2 Introdução Teórica A configuração de rede em um sistema GNU/Linux é muito importante pois esses sistemas são. você pode desenvolver suas páginas e sistemas web e testálas localmente. Isso é possível pois em todo GNU/Linux há uma interface lógica. basta que elas estejam presentes e sejam suportadas pelo kernel. intrinsecamente. sistemas de rede. você pode fazer qualquer coisa que você queira e não necessariamente precisa ter contato com o mundo exterior. Resumindo. A resposta é simples.0. Também. mesmo que não haja nenhum tipo de interface de rede ou modem ou qualquer outra coisa do gênero. Além da interface lo podemos configurar outras interfaces. todo tipo de serviço pode ser ativado na máquina. como definir a rota padrão e os DNS.

168.200.200.0.200.168.255. sendo X o número da sua máquina: # ifconfig eth0 192.168.168.200.255.Y Se possível.# route -n Determine quais interfaces de rede estão disponíveis: # ifconfig -a Configure a interface eth0 manualmente para que utilize um IP da rede 192.X Verifique as configurações de rotas: # route -n Adicione uma rota para o gateway 192.168.254 # route add default gw 192. pingue todas as máquinas da rede utilizando o endereço de broadcast: # ping -b 192.254 # route -n Envie um icmp tipo echo-request (ping) para uma outra máquina da rede: # ping 192.200.X com máscara de sub-rede 255.168.255 Determine os endereços MAC das interfaces que responderam ao ping: # arp -n Desative a interface de rede e ative-a novamente: # # # # ifconfig eth0 down ifconfig ifconfig eth0 up ifconfig Vamos configurar nossas interfaces de rede editando o arquivo /etc/network/interfaces (Debian): # vim /etc/network/interfaces Altere o conteúdo dele para satisfazer as configurações da sua rede: 76 .200.

edu.255.0.204.168.255.conf nameserver 200. For more information.168.200.200.168.254 Agora que já estamos com a rede configurada vamos tentar acessar a internet: # ping www.255 network 192.d/networking start # ifconfig Efetue pingues para determinar que você está conseguindo pingar as outras máquinas da rede e a máquina do instrutor: # ping -b 192.204.# This file describes the network interfaces available on your system # and how to activate them.200. see interfaces(5).0.255 # ping 192.200.X netmask 255.138 Tente pingar o site novamente e verifique que a resolução de nomes está funcionando: 77 .200. # The loopback network interface auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.d/networking stop # /etc/init.br Como que o ping sabe qual é o endereço IP do servidor www.168.br? Configure o arquivo para um cliente DNS: # vim /etc/resolv.168.254 Pare o serviço de rede e reinicie-o na sequencia: # /etc/init.10 nameserver 200.0 gateway 192.200.168.fatectatui.0 broadcast 192.fatectatui.edu.

200.treinamento.xxx.254 gateway . serviços internos podem deixar de funcionar.edu.fatectatui. Adicione as linhas apropriadas a esse arquivo 127.X microX.# ping www.br fatec Pingue o servidor da fatec: # ping www.edu.0.0.localdomain localhost 192.200.fatectatui.edu.fatectatui.254 www . reinicie a máquina: # shutdown -r now 78 .168.treinamento.br microX 192.br Agora que determinamos quem são nossos servidores de nomes podemos configurar também nosso mini resolvedor de nomes internos: # vim /etc/hosts Esse aruivo deve sempre conter as informações corretas para o loopback. de forma que a alteração fiue permanente: # vim /etc/hostname Verifique qual é o FQDN (Fully Qualified Domain Name) da sua máquina # hostname -f Para que o novo nome seja estabelecido.br instrutor Realize testes para ver que esses nomes estão funcionando: # ping instrutor # ping localhost Adicione a seguinte linha ao nosso resolvedor de nomes: 192.200.xxx.168.br Configure dinamicamente o hostname (nome da máquina): # hostname <algum_nome> Altere o nome da máquina de microX para maqX.1 localhost.168. caso contrário.

primeiramente veremos alguns conceitos sobre arquitetura de computadores e dispositivos de hardware. Um teclado e um monitor. são exemplos de meios de comunicação. A CPU.Capítulo 8 Manipulando Hardware e Disposit os 8. Entretanto. Até mesmo um simples botão (no lugar do teclado) e uma lâmpada (no lugar do monitor) poderíamos considerar como exemplo. chamada PIO (Programmed Input/Output) envolve a CPU na transferência das informações. apenas para exemplificar. um computador não tem muita utilidade se não for capaz de se comunicar com o mundo exterior. são associados a 79 . Afigura a seguir ilustra a arquitetura típica dos Pcs. que são armazenadas na memória RAM.3 Acesso aos dispositivos O acesso aos dados da memória RAM é feito de forma rápida e eficiente através de otimizados canais de comunicação. A esses elementos damos o nome de dispositivos de hardware. Mas. as próprias unidades de disco.2 Arquitetura de Computadores e Dispositivos de Hardware Podemos dividir um computador em 3 partes parte principais: CPU. e as tecnologias responsáveis por essa função podem ser dividas em duas categorias. e incluem interfaces de rede. o acesso aos dispositivos é mais lento. Para identificar os dispositivos. controladoras de disco. Para que esse assunto faça mais sentido. Arquitetura do computador é o nome que damos à forma como essas 3 coisas são organizadas numa máquina. paralelas e USB. 8. A primeira. portas seriais.1 Objetivos Neste capítulo iremos aprender de que forma os dispositos de hardware são mapeados e manipulados no Linux. ou uma rede. é responsável por executar todo o processamento das informações. muitas vezes denominada como o cérebro do computador. 8. Agora é só digitar o nome de usuário e senha criado na instalação e entrar no sistema. memória RAM e dispositivos.

8. de modo que os canais DMA não são mais necessários. um certo intervalo desses endereços são utilizados para cada dispositivo. Além desses endereços. portas seriais e paralelas. desenvolvida para os antigos barramentos ISA. Para isso. Dispositivo COM1 COM2 COM3 COM4 LPT1 LPT2 Nome no Linux /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3 /dev/lp0 /dev/lp1 3F8 2F8 3E8 2E8 378 278 End. a CPU teria de ficar constantemente consultando o dispositivo para saber quando enviar ou ler o próximo byte. Na verdade. Os canais utilizados podem ser consultados no arquivo /proc/dma. um para cada dispositivo e também uma controladora de DMA. Mas essa tecnologia. em alguns casos temos uma interrupção associada a um dispositivo. Isso porque. Esses endereços podem ser consultados no arquivo /proc/ioports. Dispositivos de hardware legados. Do contrário. precisam de algum mecanismo para infomar à CPU de que o trabalho ter minou. a LPT1 o endereço 378h. etc. Ela é apropriada apenas para dispositivos como teclado. a tecnologia PIO limita a velocidade de transferência de dados. se comunica com os dispositivos de uma maneira muito interessante: praticamente todos os 80 . a COM1 tem o endereço 3F8h. vários ciclos de processamento são perdidos no processo de transferência dos dados. o que se agrava tanto quanto maior for a velocidade dessa transferência. unidade antigas de CD-ROM. são utilizados os chamados canais de DMA. também ficou ultrapassada. e consequentemente per dendo tempo. escrevendo ou lendo dados. Isso porque. Outro problema relacionado a ela é o envolvimento da CPU. Essa tecnologia permite que o dispositivo acesse diretamente a memória RAM. foi criado o DMA (Direct Memory Access). por exemplo. o “kernel”. Essa nova tecnologia permitiu o surgimento do UDMA (Ultra DMA). Assim.eles os chamados endereços de I/O. [Hex] 4 3 4 3 7 5 Int. sem interferência da CPU. Para contornar essa situação. e cedeu lugar ao Nus Mastering. Nesse caso. o próprio dispositivo faz todo o controle de acesso a memória RAM.4 Dispositivos em Linux O núcleo do sistema operacional GNU/Linux. como são mais lentos que a CPU. Entretanto.

8.1 Explorando o /dev Os nomes dos dispositivos e a maneira como são representados na hierarquia do diretório /dev/podem ser bastante difícies a primeira vista. que pode ser interpretado como dispositivo auxiliar na porta PS. em inglês). ilegíveis para humanos. os discos rígidos. representam os dados que o sistema operacional GNU/Linux usa para avaliar a movimentação. Um mouse USB é representado pelo arquivo /dev/input/mice. 8. A intereção com estes arquivos pelo sistema operacional GNU/Linux realiza as leituras dos pedidos. por exemplo. No exemplo abaixo. Existem três tecnologias principais de discos 81 . que pode ser traduzido como: dispositivo (DEV) de entrada (INPUT) do tipo apontador (MICE outro termo para “rato”. a nomenclatura usada fará sentido. processa estes pedidos e retorna as respostas controlando os sinais enviados aos dispositivos. Com um pouco de prática. todos eles representado uma parte do seu computador. Exceções a esta regra são as placas de rede. Para alguns dispositivos como o mouse podemos realmente ver a interação com o arquivo que representa o dispositivo. Um mouse PS/2 segue uma nomenclatura um pouco mais complicada e é representada pelo arquivo /dev/psaux. Uma listagem deste diretório mostrará uma série de arquivos. O local onde são armazenadas estas representações é o diretório /dev. GNU/Linux são representados por um arquivo correspondente dentro do sstema de arquivos.dispositivos e. posicionamento e apertar de botões do mouse.4.5 Dispositivos de armazenamento Outro exemplo importante são os dispositivos de armazenamento principais do seu computador. usamos o comando cat para mostrar o conteúdo do arquivo de dispositivo de mouse (mexa o mouse depois de pressionar ENTER após os comandos abaixo): Para mice USB: # cat /dev/input/mice Para mice PS/2: # cat /dev/psaux As saídas. comandando a placa de vídeo para coordenar as respostas no seu monitor.

para inspecionar o conteúdo da primeira partição. Nos sistemas baseados em representação por letras. particionado de forma a ser visto com as letras C: e D:. são geralmente mais velozes que similares IDE e SATA e mais robustos. pode-se usar o comando abaixo: # cat /dev/hda1 82 . um disco rígido IDE pode se dividido. nesta mesma controladora. Os discos IDE como o SATA são considerados econômicos e mais voltados para computadores pessoais ou estações de trabalho. Os discos do padrão SCSI usam uma tecnologia de acesso mais sofisticada. O disco rígido conectado como mestre na m controladora principal será designado por hda. Os dados mostrados são aquele dados gravados no seu disco. a primeira partição o disco hda é representada por /dev/hda1 e a segunda por /dev/hda2. está mesma divisão levaria aos arquivos representados em /dev/hda1 e /dev/hda2. Qualquer partição adicional seguiria o mesmo padrão. será representado por hdb. Uma partição é uma divisão lógica do seu disco rígido. Podemos verificar o conteúdo de um disco usando novamente o comando cat. Para inspecionar o conteúdo do primeiro disco rígido IDE de um computador. o número máximo de dispositivos é de 15. Para as de 16 bits. estão em uma forma que é compreensível apenas pelo sistema operacional. Uma controladora SCSI de 8 bits pode comportar até 7 dispositivos. Os dispositivos IDE são representados na hierar quia do diretório /dev com um padrão que começa co hd. Assim sendo. Por outro lado.rígidos. Já o escravo. o padrão dos dispositivos SATA e SCSI começam por sd. São usados principalmente em servidores e máquinas de alto desempenho. Assim. podemos usar o comando abaixo: # cat /dev/hda A saída gerada não parece ter nenhum sentido. Analogamente. conveniência. SATA e SCSI. temos hdc e hdd respectivamente para os discos mestre e escravo conectados na controladora secundária. sdb para o segundo. IDE. criada por questões de organização. Contudo. além da própria controladora. etc. flexibilidade ou segurança. temos sda para o primeiro dispositivo SATA ou SCSI. No sistema operacional GNU/Linux. Ou seja.

Para que o sistema operacional GNU/Linux apresente estes dados de uma forma mais legível.Para interromper a saída do comando que pode ser bastante demorada.5. Então para que a partição /dev/hda1 seja usada. é necessário conectar a mídia removível ao seu leitor correspondente e montar o dispositivo adequado. No caso de discos rígidos. Elas representam a maneira como os dados foram armazenados em /dev/hda1. O comando usado para montar dispositivos é o mount. pressione a combinação de teclas Ctrl + C (mantenha a tecla Ctrl pressionada e pressione a tecla C). representado por /dev/fd0. Caso a tela do seu console continue a mostrar caracteres estranhos. que é um diretório no sistema de arquivos. ele mostra os dispositivos de armazenamento que estão montados em seu computador junto com a configuração usada para montá-los. Um leitor de disquetes. uma partição é montada diretamente na raiz do sistema de arquivos ou em um diretório diretamente abaixo da raiz. é chamado de ponto de montagem. # mount Para montar um dispositivo de armazenamento em seu ponto de montagem. contudo. é necessário montar esta partição em algum local e acessá-lo. é necessário solicitar ao sistema um processo de tradução. digite reset. Podemos montar um dispositivo de armazenamento em qualquer diretório do sistema de arquivos. existem algumas convenções: Dispositivos removíveis devem ser montados em /media (em outras épocas em /mnt) Exemplos: Um CD-ROM convencional. pode ser montado em /media/floppy.1 Usando os dispositivos de armazenamento Para termos acesso a um arquivo armazenado em mídia removível. o comando mount pode ser usado da seguinte forma: # mount -t <tipo> -o <opções> <dispositivo> <ponto-de-montagem> 83 . Sem o uo de nenhum parâmetro. 8. O último comando mostra uma saída que seres humanos não conseguem entender. Este local. Este processo é chamado de montagem de dispositivos. representado por /dev/cdrom ou /dev/hdc. pode ser montado em /media/cdrom.

Para um CD-ROM. A simples inserção ou conexão de mídia removíveis faz com que elas sejam montadas e acessíveis pelos navegadores de arquivos gráficos.iso9660 user.2 Pendrives 84 . Para facilitar o processo de montagem de dispositivos e definir regras e opções pré-definidas.errors=remount-ro 0 ext3 /media/cdrom0 udf. Neste caso é possível usar como parâmetro o ponto de montagem ou o dispositivo: Por exemplo: # umount /media/cdrom ou de forma equivalente: # umount /dev/cdrom 8. o disco rígido hda foi dividido e cada partição é montada em seu respectivo ponto de montagem.5. o sistema operacional GNU/Linux usa o arquivo de configuração /etc/fstab: # # <file system> <mount point> <type> <options> proc /dev/hda1 /dev/hda9 /dev/hda8 /dev/hda5 /dev/hda6 /dev/hda7 /dev/hdd /dev/fd0 /proc / /home /tmp /usr /var none proc ext3 ext3 ext3 ext3 swap defaults defaults defaults defaults defaults sw 0 0 0 0 0 0 2 2 0 0 0 0 0 1 2 2 <dump> <pass> defaults. o comando usado é o umount.user. Para desmontar um dispositivo.noauto 0 No exemplo acima.noauto /media/floppy0 auto rw. este processo de montagem é automatizado. a sintaxe do comando seria: # mount -t iso9660 /dev/cdrom /media/cdrom Na maioria dos ambientes gráficos.

desmontar o dispositivo: # umount /media/usbdisk Para aprofundar o assunto recomendo o comando: # info mount (parâmetros de montagem) E o arquivo /etc/fstab # info fstab 85 . Dependendo do número de discos rígidos de seu computador e do tipo de padrão usado. eles podem ser acessados geralmente pelos dispositivos /dev/sda1. Após a inserção destes aparelhos USB no computador.Um caso especial de dispositivo de armazenamento bastante popular são os pendrives. /dev/sda ou variantes. pode ser que os pendrives sejam acessados por dispositivos diferentes como /dev/sdb1. podemos montá-lo usando o comando mount: # mount /dev/sda1 /media/usbdisk É possível então acessar os dados: # ls /media/usbdisk E após o uso. Por exemplo. após a inserção de um pendrive USB.

9. Na verdade. esse esquema de permissões é parte fundamental do sistema. são utilizados para controlar serviços.Capítulo 9 Administração de Usuários 9. Evite usar senhas com datas de aniversário.1 Objetivos O GNU/Linux é um sistema multiusuário e portanto. 2 – Usuários de Sistema: são aqueles que não precisam logar no sistema. É sempre aconselhável que cada usuário comum ou administrador tenha sua própria conta e só utilize a conta root para administração do sistema. Mas devemos ter uma certa cautela ao usá-lo pois com qualquer deslize podemos danificar todo o sistema. São contas criadas para aqueles que utilizam ou operam o sistema. possui um esquema de permissões que provê a privacidade e/ou compartilhamento de arquivos entre usuários. Um exemplo desses usuários é o usuário www-data que é usado exclusivamente para controlar o servidor web Apache. 3 – Usuários Comuns: são utilizados para trabalhar no sistema GNU/Linux. casamento e outras datas que são fáceis de serem descobertas e 86 .2 Gerenciamento de usuários Quando começamos a trabalhar com usuários no sistema GNU/Linux podemos dividí-los em 3 categorias: 1 – Usuário Administrador (Super Usuário): usuário conhecido como root no sistema. Neste capítulo. iremos aprender sobre ele e também como criar e remover contas de usuários. pois isso seria o primeiro passa para o invasor escalar privilégios no sistema e virar o usuário administrador root. Esses usuários não devem possu senhas nem ir Shell's válidas. É esse usuário que controla todo o sistema e ão possui restrição. é sempre aconselhável criar uma boa política de criação de senhas para que um possível invasor não se aproveite de um usuário com uma senha fraca. mesmo que seja um usuário comum. Tanto para o usuáro root quanto para o usuário comum.

Devemos ter em mente que um usuário sempre deve estar vinculado a um grupo.evite usar palavras do dicionário. Diretório Home. cada arquivo contém tês conjuntos de permissões. Nome. pis isso afeta diretamente a questão de permissões dentro do sistema. d indicando um diretório. Grupo Primário. o primeiro caractere pode ser: – indicando que o ue está sendo listado é um arquivo comum. Sendo assim. 9. 87 . Uma boa dica é mesclar a senha com letras maiúsculas e minúsculas. A cada permissão é atribuído um valor. caixa alta e caixa baixa e caracteres especiais. Esses usuários não vêm configurados por padrão. que será utilizado para atribuição de permissões. ele são usuários normais mas que possuem al uns privilégios a mais em algumas g aplicações. são necessários 5 elementos. Para que os usuários comuns e root tenham acesso ao sistema e consigam trabalhar normalmente. Observação: alguns sistemas GNU/Linux podem ter usuários que chamamos de administradores. Shell. Além disso. do grupo (g) – group ao qual pertence e outros (o) – others aqueles que não pertencem ao grupo e não são donos o arquivo. mostrado entre parênteses. l indicando um link simbólico.1 root root 0 2009-01-21 06:33 arquivo Para um arquivo e para um diretório: debian:~# ls -l total 1 drwxr-xr-x 2 root root 1024 2009-01-21 06:34 diretorio Vamos entender o que essas linhas significam.3 Permissões Cada arquivo no sistema possui três permissões básicas: r (4) – read – para leitura. considere a seguinte saída do comando ls -l: debian:~# ls -l total 0 -rw-r--r-. sendo elas: permissão do dono (u) – user do arquivo. Senha. w (2) – write – para escrita e x (1) – execute – para execução.

Por fim. permissões de grupo e permissões para outros usuários. Usamos a letra u para indicar o próprio dono. para o grupo e para outros. A atribuição de permissões é realizada utilizando o comando chmod. o parâmetro que define as permissões é composto de três números de 0 a 7 que correspondem às permissões para o usuário dono. Nesses três conjuntos. indicando um dispositivo de bloco. indicando um socket.p s c b indicando um pipe nomeado. ou seja. o para os outros e ainda a letra a para indicar todos. seno que execução vale 1. O caractere seguinte poderá ser um sinal + para garantir a permissão ou – para retirar a permissão. Vejamos o exemplo abaixo: # chmod u+rw arquivo O parâmetro u+rw é que define o esquema de permissões. Há duas sintaxes possíveis. se o caractere encontrado for um '-' (hífen) significa que a permissão está ausente. Cada número é formado pela soma das permissões atribuídas. detalhamos a permissão: A letra r significa leitura. Neste caso. w escrita e x execução. A segunda sintaxe é a forma numérica. Vejamos mais um exemplo: # chmod g-w arquivo Este comando retira a permissão de escrite para os usuários pertencentes ao mesmo grupo ao qual o arquivo pertence. A primeira delas é a literal. Os próximos três conjuntos de três caracteres indicam as permissões do usuário dono do arquivo. há um número que indica a quantidade de links simbólicos que o arquivo ou diretório tem. Seguindo o conjunto de permissões. o exemplo anterior garante as permissões de leitura e escrita para o usuário dono do arquivo. escrita vale 2 e leitura 4. A tabela abaixo resume esse esquema: r (4) 0 0 0 w (2) 0 0 1 x (1) 0 1 0 Total 0 1 2 Permissões ----x -w- 88 . A primeira letra indica a qual(is) usuário(s) as permissões estão sendo alteradas. vem a indicação do usuário dono do arquivo seguido do grupo ao qual ele pertence.w e x) forem encontradas. Assim. As demais permissões não são alteradas. g para indicar o grupo. Após o número de links. indicando um dispositivo de caractere. Se alguma ou todas as letras (r. como era de se esperar. indicará as permissões que o aruivo tem. não há a respectiva permissão.

estamos atribuindo permissão de leitura e escrita 6 (r=4 + w=2) ao usuário dono.. Os campos são separados pelo caractere ':' (dois pontos). É importante observar que quando usamos a forma literal.1 Arquivo /etc/passwd Cada usuário cadastrado no sistema é identificado por uma linha do arquivo /etc/passwd. Já na forma numérica. Nesse arquivo serão armazenados os grupos e onde ficam registrados quais usuários pertencem a determinados grupos secundários. Não nos aprofundaremos nesse arquivo. 9.. leitura 4 (r=4) ao grupo e 0 (sem permissões) a outros usuários.4 Resgistro de usuários no sistema Os usuários no GNU/Linux são armazenados em dois arquivos de controle: /etc/passwd /etc/shadow O arquivo /etc/group também mantém uma relação com os usuários. não alterando as demais permissões. alteramos todas as permissões simultaneamente. 9.0 1 1 1 1 Vejamos um exemplo: # chmod 640 arquivo 1 0 0 1 1 1 0 1 0 1 3 4 5 6 7 -wx r-r–x rwrwx Neste caso.:/home/eduardo:/bin/bash Onde: 89 . O formato do arquivo é o seguinte: eduardo:x:1000:1000:eduardo.4. alteramos apenas o parâmetro especificado.

Observação: Essas definições de usuários de sistema e usuários normais podem variar nas distribuições. GID de 1000 a 65535 – São os números para grupos normais. Campo 4: GID – Group Identify é o número de identificação do grupo primário do usuário. pois ela fica armazenada em outro arquivo. Caso encontremos algum servidor GNU/Linux sem as senhas shadow configuradas. Essa identificação é também dividida em 3 categorias como o UID: GID 0 – É o número do grupo administrador root. Campo 3: UID – User Identify) é o número de identificação do usuário.Campo 1: Login do usuário. No caso de /etc/shadow. se forem instaladas no modo expert. podemos utilizar o comando pwconv para ativá-las e pwunconv para desativá-las. No arquivo /etc/passwd qualquer usuário pode visualizá-las e copiá-las para outro diretório ou máquina remota. As senhas ficam nele pois é um arquivo mais seguro que o arquivo /etc/passwd. UID de 1 a 999 – São os números para usuários de sistema. Essa identificação é dividida conforme a categoria dos usuários: UID 0 – É o número do usuário administrador root.2 Arquivo /etc/shadow As senhas dos usuários ficam armazenadas no arquivo /etc/sahdow conhecido como senhas sombras (shadow passwords). Campo 5: Comentários e informações adicionais sobre os usuários. 90 . Em algumas delas. pode-se optar por ativar ou não esse suporte. Campo 7: Shell. UID de 1000 a 65535 – São os números para usuários normais. GID de 1 a 999 – São os números para grupos de sistema. O suporte a senhas shadow costuma vir por padrão nas distribuições. Campo 2: Referência da senha do usuário. É sempre recomendado deixar as senhas shadow ativadas. suas permissões são muito mais restritas não permitindo que sejam copiadas e nem visualizadas. Isso é uma grande ajuda na questão de segurança pois se as senhas estivessem no próprio /etc/passwd seria muito fácil para um invasor com um usuário comum copiar esse arquivo para outro sevidor e aplicar uma ferramenta de brute force para quebrar as senhas. Campo 6: Diretório pessoal.4. somente o UID 0 é padrão em todas as distribuições. 9.

5.1 Comando id O comando id mostra as informações de UID.3 Comando users O comando users mostra de uma maneira bem simples os usuários que estão logados no sistema. A sintaxe do comando users é a seguinte: # users 9. Para ver essas informações do usuário corrente. Traz informações adicionais sobre qual terminal está sendo utilizado.2 Comando finger O comando finger é mais amigável e nos traz maiores informações como: login. nome. fazemos da seguinte foma: # id Para ver as informações de qualquer outro usuário usamos a seguinte sintaxe: # id [usuário] 9. GID e grupos secundários dos usuários. o momento e a partir de qual máquina foi feito o login de cada usuário.4 Comando who O comando who mostra quais usuários estão logados na máquina.5.9.5.5. A sintaxe do comando finger é a seguinte: # finger [usuário] 9. diretório home. # who 91 . shell e os horários dos últimos logins que esse usuário realizou.5 Levantamento de informações dos usuários 9.

normalmente usado dentro de uma estrutura empresarial onde os usuários precisam pertencer a vários grupos para terem acesso a arquivos de outros setores. senha e grupo definido. mas pode ser adicionado a grupos secundários. 9. usaremos o mesmo comando com parâmetros adicionais. Automaticamente.5 Comando w O comando w é similar ao who. iremos começar pelo comando mais prático e. mas a sintaxe mais comum de se trabalhar é a seguinte: # adduser [usuário] Dessa maneira ela adicionará o usuário. 92 . ou seja. tanto local quanto remotamente. já pedindo para definir sua senhas e as informações adicionais. Este comando pode usado de várias formas.7 Adicionar um usuário a outro grupo Um usuário sempre deve pertencer a um grupo primário. Esse comando é muito útil para ver se não existem conexões indevidas em nosso sistema.5. mas traz também informações sobre o que cada usuário está fazendo. A sintaxe do comando w para visualizar todos os usuários logados é a seguinte: #w Para visualizar se somente um usuário está logado a sintaxe é a seguinte: # w [usuário] 9. mais tarde. ele já cria um grupo com o mesmo no me do usuário e copia todos os arquivos que estão no diretório /etc/skel para o diretório home do usuário.6 Criando Usuários 9. com nome. O adduser é bastante utilizado por administradores que precisam cadastrar usuários no formato tradicional. O comando adduser é script customizado que trabalha com o comando shell.9.1 Comando adduser Como esse é um curso para iniciantes.6.

Isso não acontece com o usuário root.8. como troca de senhas. 9. Utilizando a opção -a podemos adicionar um usuário a um grupo secundário e a opção -d para remover um usuário de um grupo secundário. e com alguns parâmetros pode adicionar ou remover um usuário de um grupo secundário.1 Comando gpasswd O comando gpasswd pode ser utilizado para definir a senha de um grupo. O primeiro será o passwd. que pode definir a nova senha diretamente. Iremos aprender aui como mudamos alguns parâmetros que são necessários no dia-a-dia. O passwd possibilita adicionar ou modificar a senha de um usuário.8 Modificando usuários A modificação de usuários é limitada ao usuário root. As sintaxes que podem ser utilizadas nesse comando são as seguintes: Para modificar a senha do usuário corrente: # passwd Observação: Caso esteja modificando a senha de um usuário normal.9.7. primeiro será solicitada a senha corrente para depois digitar a nova senha. Para modificar a senha de outro usuário: # passwd [usuário] 93 . grupos e controle de login.1 Comando passwd Depois do usuário criado podemos usar alguns comandos para modificar a conta dele. Para adicionar um usuário em um grupo secundário a sintaxe é a seguinte: # gpasswd -a [usuário] [grupo] Para remover um usuário de um grupo secundário a sintaxe é a seguinte: # gpasswd d [usuário] [gr upo] 9. tanto para ele quanto para os outros usuários.

A primeira é mantendo o diretório home do usuário e a segunda.9 Removendo usuários A remoção de usuários pode ser feita de duas formas. usando-se a opção -g.9. Ele possibilita modificar qualquer tipo de informação relativa ao usuário.2 Comando usermod Outro comando que pode ser utilizado para modificar parâmetros do usuário é o usermod. apagando o diretório home. 9. A sintaxe para remover o usuário e manter o seu diretório home é a seguinte: # userdel [usuário] Para remover o usuário e o seu grupo. é necessário utilizar a opção -r na seguinte sintaxe: # userdel -r [usuário] 94 . A sintaxe para modificar o grupo primário de um usuário é a seguinte: # usermod -g [grupo] [usuário] As alterações podem ser visualizadas no arquivo /etc/passwd no campo GID. Um dos parâmetros que pode ser modificado é o grupo primário.8. Mas para remover o usuário com seu diretório. já que a delegação de UID's é sequencial. também é aconselhável fazer um backup de tudo o que aquele usuário possu ía ou transferir todos os arquivos para o responsável. Com a opção -G. podemo alterar os grupos secundários. É aconselhável que se remova o diretório do usuário para que um próximo usuário adicionado ao sistema não acabe como dono daquele diretório.

quanto em modo texto. Nos tópicos a seguir.3 Variáveis em Shell As variáveis da shell têm o mesmo objetivo das variáveis que conhecemos na área da computação.1 Objetivos O principal meio de interação do usuário com um sistema GNU/Linux é o terminal de comandos. Neste capítulo iremos aprender como personalizá-la e sobre sua utilização básica. 10. Quando estamos falando de variáveis em shell não precisamos nos preocupar em declará-las nem mesmo defin o seu tipo. A figura abaixo ilustra como podemos posicionar a shell dentro do sistema. veremos como essa personalização. ou seja. 9. que pode ser acessada tanto pelo modo gráfico. As principais modificações são com relação a sua língua padrão. A shell pode ser praticamente 100% personalizada. são áreas de memória que podem conter dados. tambem conhecida como shell.Capítulo 10 Administração da Shell 10. personalização de prompt e processos automáticos. uma variável é definida ir 95 . Em shell. o sistema operacional do computador.2 O que é uma shell? A shell é uma camada de acesso ao sistema básico.

São exemplos de definição de variável local e de ambiente os seguintes: # Local=”sem export na frente” # export Global=”com export na frente” Uma vez definidas as variáveis podemos visualizá-las utilizando os comandos set e env para variáveis locais e de ambiente respectivamente. em shell devemos utilizar o operador $ (cifrão) antes do nome da variável. ou seja ANSWER.simplesmente atribuindo-se um valor a ela. Para definir uma variável local. veríamos as definições de ambas. Com isso. Mas. se tivéssemos definido as variáveis Local e Global e executássemos o comando set. 96 . se desejarmos mostrar na tela o valor da variável ANSWER devemos imprimir o conteúdo armazenado no endereço de memória $ANSWER: # echo $ANSWER Esse tipo de variável que acabamos de definir é conhecida como escalar e pode recebe valores numéricos ou caracteres. se executássemos o comando env. adicionando o comando export antes da definição. Vejamos um exemplo: Se definirmos que ANSWER = 42. 10.1 Variáveis Locais e de Ambiente (globais) Quando falamos em variáveis em shell temos que ter em mente a divisão entre variáveis locais de ambiente (ou globais). A única diferença entre variáveis locais e de ambiente é na hora de definí-las. ou seja. estaremos armazenando o valor 42 em um determinado endereço de memória que podemos acessar utilizando o nome que atribuímos a ela.3. A diferença entre elas é que uma variável local tem visibilidade restrita apenas ao escopo ao qual ela foi definida e uma variável de ambiente tem visibilidade não só no escopo em que foi definida mas também em ambientes derivados do ambiente o qual ela foi definada. # echo ANSWER Para acessarmos o endereço de memória atribuído à variável ANSWER. Para definir uma variável de ambiente o procedimento é basicamente o mesmo. basta atribuir um valor a um nome de variável.

Por exemplo. ele irá procurar por um dos aruivos. Esse arquivo deve conter as configurações gerais que se aplica a todos os usuários do sistema.color -h -l”. um que liste apenas diretórios: # alias lsd='ls --color -h -l | grep ^d' Tanto os alias quanto as definições de variáveis podem ser efetuadas em linha de comando ou. 10. basta criar um alias para o comando ls que defina que cada vez que o usuário digitar um simples ls o que será executado sera o ls --color -h -l. o que seria dele se toda vez que fosse executá-lo tivesse que escrever o comando com todos os parâmetros!!! Ele perderia muito tempo e acabaria se cansando mais. Variáveis de ambiente (as globais) são muito importantes pois definem a forma com que a shell e diversos outros programas irão se comportar. basta usarmos o comando abaixo: # alias ls='ls --color -h -l' Dessa forma fica fácil criar um comando novo.bash_profile ou ~/. Após ler o /etc/profile.veríamos apenas a definição da variável Global. Para resolver esse tipo de situação. Por exemplo. executando o primeiro que estiver disponível e tiver permissão de leitura. Imagine só que um usuário gosta de utilizar o comando ls sempre com os parâmetros “.5 Arquivos de Login Quando uma bash é executada como uma shell de login interativo ela lê e executa o arquivo /etc/profile se ele existir. para maior comodidade. na home o usuário.. Para criarmos esse alias. executa também o 97 .4 Alias Um recurso da shell que facilita muito a vida do usuário é a definição de alias. ~/. a forma com que o prompt é apresentado ao usuário é definido pela variável global PS1. Além desses. 10.profile.bash_login ou ~/. utilizando arquivos apropriados para isso.

o arquivo chamado será apenas o ~/. Quando a bash estiver sendo terminada (usuário fazendo logout). Veja um exemplo de /etc/motd do Debian: Linux debian 2. Sendo assim. ~/.18-6-686 #1 SMP Sun Feb 10 22:11:31 UTC 2008 i686 The programs included with the Debian GNU/Linux system are free software. é que. que contém a mensagem exibida em logins remotos.5. A diferença entre os arquivos /etc/issue e /etc/motd. Através deste arquivo. podemos automatizar procedimentos como por exemplo limpar a tela ao se deslogar do sistema.0 \n \l 98 . Quando uma bash é chamada mas não é uma shell de login.bashrc. ~/. o arquivo ~/. Veja um exemplo de /etc/issue no Debian: Debian GNU/Linux 4. the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.bash_profile. Há ainda o arquivo /etc/issue.profile ou ~/.arquivo ~/.net.6. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY.bashrc.1 Arquivos /etc/issue e /etc/motd Os arquivos /etc/issue e /etc/motd são usados para mostrar mensagens para os usuários e não interferem na parte operacional do sistema. devemos fazer isso no arquivo /etc/profile. ele deve utilizar os arquivos ~/.bash_logout será lido e executado caso ele exista.bash_login.bashrc. se desejarmos criar alias ou definir variáveis ou funções que sejam comuns a todos os usuários. Caso o usuário não deseje utilizar o padrão do sistema. alterá-lo ou adicionar configurações pessoais. o primeiro exibe uma mensagem para o usuário antes que o mesmo faça login no sistema. enquanto o segundo exibe uma mensagem após o usuário se logar no sistema. to the extent permitted by applicable law. 10.

basta visualizar o conteúdo o arquivo /etc/shells.6 Tipos de shell Para saber quais shells estão disponíveis. utilizamos o comando csh. que tem bem poucos recursos. o shell do usuário será o sh. 99 . # csh -s /bin/sh No próximo login.Os caracteres \n \l no arquivo /etc/issue representam respectivamente o nome do servidor e do terminal em que o usuário está logado. A maioria das distribuições GNU/Linux traz a bash como shell padrão. 10. e que é uma evolução do Bourne Shell (/bin/sh). Para alterar o shell atual.

Em geral. 11.Capítulo 11 Comandos úteis de linha de comando 11. Saída de erros. veja abaixo: > . pois se trabalha bastante com isso. a maioria das operações são realizadas por meio de comandos escritos. a entrada do Shell é o teclado. representada por stdin. além de poderem ser incluídos em scripts. a saída a tela. representada por stdout. permitem um maior controle e flexibilidade de operações. representada por stderr. Saída de dados. e os erros são exibidos na tela também. Mas isso pode ser mudado com o uso de caracteres de redirecionamento. Neste capítulo iremos aprender sobre alguns comandos básicos. Por padrão. Os termos geralmente usados são: Entrada de dados.Redireciona a saída em um arquivo apagando o conteúdo anterior (se existir) Exemplo: # ls / > tst # cat tst # ls /var > tst # cat tst 100 .2 Trabalhando com entrada e saída de dados Esta parte é extremamente importante.1 Objetivos No mundo GNU/Linux.

# cat teste.dat aux.dat 101 .dat Mas o comando cat pode ser utilzado também para concatenação de arquivos. usamos o operador de redirecionamento da saída padrão de modo que a saída do comando cat seja gravada no arquivo tudo.(pipe.Redireciona a saída no final de um ar quivo.3.3 Comandos para paginação Quando os arquivos são maiores do que a altura da tela do computador. Por exemplo. Isso ocorre numa velocidade que impede que se consiga ler algo.dat.1 Mostrando o conteúdo e/ou concatenando O comando cat pode ser utilizado para mostrar o conteúdo de um arquivo. pronuncia-se paipe): Serve para canalizar a saída de dado para outro comando. é mostrado na tela o conteúdo dos arquivos teste. 11. o comando abaixo mostra o conteúdo do arquivo teste. Para esse tipo de arquivo grande. 11. Eles controlam a maneira que os dados de um arquivo são exibidos. Exemplo: # ls / > tst # cat tst # ls /var >> tst # cat tst Comandos auxiliares: | .dat aux.dat. usamos os comandos de paginação. No primeiro exemplo abaixo.>> . seja permitindo uma navegação elementar ou permitindo atingir porções específicas de um arquivo.dat. # cat teste. preservando-o. eles são mostrados sequencialmente e até seu final. No segundo exemplo.

Por exemplo. podemos usar um editor de textos como vi ou emacs. Não é possível retornar (subir) usando o comando more. Pressionando ENTER uma linha a mais é mostrada. queremos ter acesso a porções específicas de um arquivo. Para ler as 10 primeiras linhas de um arquivo. Sempre que a tela é preenchida.3. E às vezes queremos um pedaço definido do arquivo. para 102 . Contudo.3 Porções específicas: head e tail Frequentemente. Para essas necessidades. # less /var/log/syslog 11. Às vezes queremos apenas as linhas iniciais ou as linhas finais.# cat teste. para uma leitura rápida na linha de comando podemos usar os comandos more e less. # more /var/log/syslog O comando less é mais sofisticado e permite ir e voltar na leitura de um arquivo.3.dat > tudo. usamos os comandos head para ler porções superiores de um arquivo e tail para ler as porções inferiores. podemos usar: # tail /var/log/syslog Os comandos podem ser combinados usando o | (lê-se pipe).2 Controlar o fluxo: more e less Para que a leitura de um arquivo grande na linha de comando seja possível. O comando more permite a leitura contínua de um arquivo. o comando more espera por uma ação do usuário para mostrar mais conteúdo.dat 11. pressionando a barra de espaços uma nova página é mostrada. podemos usar: # head /var/log/syslog Para ler as 10 últimas linhas de um arquivo.dat aux.

5 Classificação: sort Para diversas ações como eliminação de itens repetidos e rápida visualização de nomes é interessante que possamos classificar um arquivo texto.3. 11. Por exemplo. a saída abaixo: # wc /etc/passwd Indica que o arquivo contém 32 linhas. Caso seja necessário apenas o número de linhas. podemos usar: # head -n 40 /var/log/syslog | tail -n 20 O comando acima lê as 40 primeiras linhas do arquivo /var/log/syslog que são pasadas para o comando tail que retorna as 20 últimas linhas deste intervalo (as 20 últimas das 40 primeiras = da 20 à 40). A contagem destas linhas pode nos fornecer informações muito interessantes.3.4 Contagem: wc Grande parte dos arquivos de configuração e de dados usa uma linha por registro. os arquivos textos podem ser classificados usando o comando sort.ler o pedaço entre as linhas 20 e 40 de um arquivo. A saída do comando abaixo não segue a ordem alfabética # cat /etc/passwd 103 . 11. 49 blocos (palavras) e 1528 caracteres. Na linha de comando. o comano wc pode ser usado com o parâmetro -l. como abaixo: # wc -l /etc/passwd Outros parâmetros possíveis são -w para blocos (palavras) e -c para caracteres.

Na linha de comando o echo é útil para inspecionar variáveis de ambiente. 104 . Isso é bastante útil para automação. para saber qual o diretório pessoal definido em $HOME do usuário atual: # echo $HOME Para saber qual o idioma definido no console: # echo $LANG Usando o caractere de redirecionamento >. que são parâmetros guardados em memória e que definem o ambiente em uso.Podemos mostrar a saída classificada em ordem alfabética. como abaixo: # sort /etc/passwd O comando sort pode ser modificado usando os parâmetros: -f não considera se as letras estão em caixa alta ou baixa -n classificação numérica -r classifica na ordem invertida 11. o arquivo teste contém o valor da variável de ambiente $LANG.3. podemos enviar a saída do comando echo para outro destino: # echo $LANG > /tmp/teste # cat /tmp/teste No exemplo acima.6 Mostrar algo: echo O comando echo é usado para ecoar algo na tela ou direcionado para um arquivo. Por exemplo.

-i Ignora diferença entre maiúsculas e minúsculas. Para isso. Para ilustrar. -h Omite o nome do arquivo nas buscas. -v Inverte a busca.4 Filtragem Uma necessidade constante dos administradores é encontrar informações dentro dos arquivos.:/home/eduardo:/bin/bash Outra situação possível é procurar pelas entradas que não possuem bas no h arquivo passwd.11. 105 .. encontra apenas as linhas onde o padrão não existir. ou seja.. -n Mostra o número de cada linha encontrada. usamos o parâmetro -v (inVerter). podemo localizar o texto bash no arquivo /etc/passwd: # grep bash /etc/passwd root:x:0:0:root:/root:/bin/bash eduardo:x:1000:1000:eduardo. -B [n] Mostra n linhas antes. que inverte a filtragem do grep: # grep -v bash /etc/passwd daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh Outros parâmetros do comando grep: -A [n] Mostra n linhas depois.

6.: E. podemos usar o comando: debian:/home/eduardo# cut -f1 -d: /etc/passwd root daemon bin sys sync games 106 . # ifconfig | grep end. a seguir.18-6-686 11.15:50 (01:02) Tue Jan 20 14:47 . o grep é aplicado para filtrar os últimos usuários logados no terminal tty7 (ambiente gráfico): # last | grep :0 eduardo :0 eduardo :0 eduardo :0 eduardo :0 eduardo :0 eduardo :0 Wed Jan 21 14:32 still logged in Wed Jan 21 10:29 .11:05 (00:36) Wed Jan 21 09:55 . Por exemplo.20:36 (02:51) Tue Jan 20 14:48 .18-6-686 reboot system boot 2.4.10:17 (00:22) Wed Jan 21 05:55 . Por exemplo. cujo delimitador de colunas é o sinal :. o grep filtra as linhas de endereços IP da saída do comando ifconfig.15:50 (01:03) reboot system boot 2. no comando abaixo.6.11:05 (00:36) Wed Jan 21 10:29 .O grep pode ser combinado com a saída de outros comandos com o uso do | (pipe). para conseguir a primeira coluna do arquivo /etc/passwd.2 Filtrar colunas: cut O comando cut pode ser muito útil para conseguir listagens a partir de arquivos com separadores de colunas definidos.09:22 (03:26) Tue Jan 20 17:45 .

jpg para cursolinux.ppm um arquivo de imagem que foi renomeado sem sua extensão. se renomearmos um arquivo de imagem de cursolinux. O comando file determina o tipo de arquivo analisando o seu próprio conteúdo.11.1 Verificar espaço em disco: df # df -h <arquivo/diretório/partição> Aproxima para a unidade de medida mais próxima. # df -k <arquivo.5. extensões de arquivos têm apenas a função de nos auxiliar a nomear os aruivos. Por exemplo. Não é a extensão que determina o tipo do arquivo.5 Administração 11.3 Determinando o tipo de arquivo: file No Linux. diretório ou partição> Mostra em megabytes. 107 . diretório ou partição> Mostra em kilobytes.4. O exemplo abaixo mostra o uso deste comando: debian:/home/eduardo# file Slackware Slackware: Netpbm PPM "rawbits" image data O arquivo Slackware se chamava Slackware. ele continuará sendo um arquivo de imagem JPEG. mas sim o seu conteúdo. 11.html. mais legível para o ser humano. a identificá-los facilmente. # df -m <arquivo.

# du -k <arquivo. # du -l <arquivo.11. diretório ou partição> Mostra a quantidade de links que arquivo/diretório/partição tem. não mostra subdiretórios. # du -s <arquivo. mais legível para o ser humano. # du -m <arquivo.2 Verificar espaço de uma pasta ou arquivo: du # du -h <arquivo. 108 .5. diretório ou partição> Mostra em megabytes. # du -b <arquivo. ou seja. diretório ou partição> Modo silencioso. diretório ou partição> Mostra em kilobytes. diretório ou partição> Aproxima para a unidade de medida mais próxima. diretório ou partição> Mostra em bytes.

Obviamente.%d-%m-%Y” ”07:54. e também para ajustá-las. HH é a hora. A sintaxe é: # date mmddHHMMYYYY Onde mm é o número do mês.5. dd é o dia do mês.4 Mostrar e/ou ajustar a data do sistema: date O comando date pode ser utilizado para mostrar a data e a hora atuais do sistema.22-01-2009” A outra utilidade do comando date é ajustar a hora do sistema. Há várias formas de se utilizar esse comando.5. MM os minutos e YYYY o ano 109 . isso pode ser feito apenas pelo usuário administrador. A primeira delas é a mais simples: # date +”%H:%M.11.3 Mostrar o uso de memória RAM: free O comando free mostra o consumo de memória R AM e os detalhes sobre o uso de memória virtual (SWAP): # free A saída do comando será # free total Mem: Swap: used free shared 4592 139612 746024 buffers 0 cached 5092 129928 256784 746980 252192 117172 956 -/+ buffers/cache: 11.

12 10.41. Além disso. 2 users.6.6 Diversos 11.5. 0.1 Diferença entre arquivos O programa diff nos permite verificar a diferença entre arquivos e diretórios.5. mostra informações sobre o uso do processador: # uptime 07:57:48 up 31 min.11.6. load average: 0. No caso de diretórios. 0.14. # diff arquivo1 arquivo2 # diff -r dir1 dir2 110 . é importante o uso da opção -r para assegurar a comparação de todos os subdiretórios.6 Mostrar informações sobre o sistema: uname O comando uname pode ser usado para mostrar informações sobre a versão do kernel em uso e a arquitetura: # uname -a Linux debian 2.5 Mostrar por quanto tempo o computador está ligado: uptime O comando uptime mostra por quanto tempo o computador está ligado.18-6-686 #1 SMP Sun Feb 10 22:11:31 UTC 2008 i686 GNU/Linux 11.

procura por arquivos que foram acessados entre [num] dias atrás e a data atual. Ele pode procurar arquivos pela sua data de modificação. # find /etc -name *. irá procurar apenas no diretório especificado e não irá incluir nenhum subdiretório.conf -maxepth [num]: limite a profundidade de busca na árvore de diretórios.11. usa opções longas por meio de um “-”. Caso seja antecedido por “-”. limitando a 1.7 Localização O comando find procura por arquivos/diretórios no disco. com o uso de opções.conf -amin [num]: procura por arquivos que foram acessados [num] minutos atrás. # find /etc -maxdepth 1 -name *. Sua sintaxe é: # time programa 11. tamanho. 111 . # find ~ -amin -5 -atime [num]: procura por arquivos que foram acessados [num] dias atrás. etc.2 Tempo de execução de um programa: time O comando time permite medir o tempo de execução de um programa. Caso seja antecedido por “-”.6. ao contrário de outros programas. procura por arquivos que foram acessados entre [num] minutos atrás e o momento atual. Sintaxe: find [diretório] [opções/expressão] -name [expressão]: procura pelo nome [expressão] nos nomes de arquivos e diretórios processados. Find. Por exemplo.

Você pode usar os sufixos k. [num] Pode ser antecedido de “+” ou “-” para especificar um arquivo maior ou menor que [num] # find / -size +1M -type [tipo]: procura por arquivos do [tipo] especificado. Megabytes ou Gigabytes. Os seguintes tipos são aceitos: -b bloco -c caractere -d diretório -p pipe -f arquivo regular -l link simbólico -s socket 112 . Os [modo] de permissão podem ser numérico (octal) ou literal.# find ~ -atime -10 -uid [num]: procura por arquivos que possuem a identificação numérica do usuário igual a [num] # find / -uid 1000 -user [nome]: procura por arquivos que possuem a identificação de nome do usuário igual a [nome] # find / -user aluno -perm [modo]: procura por arquivos que possuem os modos de permissão [modo]. # find / -perm 644 -size [num]: procura por arquivos que tenham o tamanho [num]. O tamanho é especificado em bytes. M ou G para representar em kilobytes.

que inclusive poderá ser agendado para que a base de dados seja sempre atualizada. Para o comando locate.docbook /usr/share/doc/python-xml/examples/test/output/test_howto /usr/share/doc/python-xml/examples/test/test_howto .2 Localização usando base de dados: locate O comando locate é um comando rápido de busca de arquivos.cls 113 .# find /dev -type b Outros exemplos: find / -name grep : procura no diretório raiz e nos subdiretórios um arquivo/diretório chamado grep find / -name grep -maxdepth 3 : procura no diretório raiz e nos subdiretórios até o 3º nível.docbook /usr/share/doc/kde/HTML/en/k3b/cdcopy-howto. -size +1000k : procura no diretório atual e nos subdiretórios um arquivo com tamanho maior que 1000 kbytes (1 Mbyte) find / -mmin -10 : procura no diretório raiz e nos subdiretórios um arquivo que foi modificado há 10 minutos atrás ou menos 11. usamos a seguinte sintaxe: # locate howto /usr/share/doc/kde/HTML/en/k3b/audiocd-howto.gz /usr/share/doc/python-xml/howto. um arquivo/diretório chamado grep find .7. Para utilizá-lo. porém não usa busca recursiva na sua árvore de diretórios. Ele cria uma base de dados para que a busca seja mais rápida pelo comando updatedb.py. primeiro é necessário criar a sua base de dados usando a seguinte sintaxe: # updatedb Quando esse comando é executado pela primeira vez costuma demorar um pouco.

1 Objetivos A compressão e empacotamento de arquivos e diretórios é muito importante em qualquer sistema computacional. A utilização da ferramenta tar é bastante simples e pode ser resumida da seguinte forma: # tar <operações/opções> f <arquivo_tar> [<arquivo_de _entrada>] Onde o significado dos parâmetros são: 114 . o tar é utilizado hoje em dia como uma ferramenta de empacotamento. 12. podendo ser utilizado em conjunto com compactadores como gzip ou bzip2. Empacotadores e Procedimentos de Backup 12. isto é seus metadados. O programa tar. Ambos os procedimentos são necessários desde o ponto de vista de distribuição de softwares. Veremos neste capítulo o principal programa de empacotamento GNU/Linux e os dois principais compactadores. até backup do sistema. cujo nome deriva de “tape archiver”. Em ambientes Unix-Like. Um programa que “zipa” um arquivo. essas duas tarefas são realizadas de forma logicamente distintas.2 Empacotador TAR A forma mais conhecida de realizar compressão e empacotamento em ambiente Windows é utilizando o programa zip. Criado com propósito de backup em dispositivos de acesso sequencial (unidades de fita). ou diversos arquivos. na realidade está realizando dois procedimentos distintos: Empacotar e comprimir. quanto de economia de banda e de espaço de armazenamento.Capítulo 12 Compactadores. realiza a tarefa de concatenar todos os arquivos e diretórios preservando as informações do filesystem.

Deve ser precedido pela letra f de file. r : adicionar (concatenar) conteúdo a um arquivo tar. Dessa forma. tanto na criação como na extração de um arquivo tar.tar | head -n 30 115 . Esquematicamente. t : listar o conteúdo de um arquivo tar. especialistas em compressão de dados. Podemos ver o header de um arquivo tar utilizando o comando od # od -t c arquivo. quando utilizamos os parâmetros z e j estamos na realidade fazendo uma ch amada externa aos comandos gzip e bzip2. <arquivos_de_entrada> listagem dos ar uivos que serão adicionados ao arquivo q tar. a utilização básica do comando tar pode ser ilustrada da seguinte forma: | |c| |r | z| tar | x | j | [v] f <arquivo_tar> [<arquivos_de_entrada>] |t |Z | | Seguindo a filosofia Unix “faça apenas uma tarefa. <arquivo_tar> é o nome do arquivo tar sob o qual se está trabalhando. mas faça bem feito” o tar é um programa especialista em empacotar vários arquivos. Z : utilizar com compressão compress. z : utilizar com compressão gZip. j : utilizar com compressão bzip2. tanto na criação como na extração de um arquivo tar. tanto na criação como n extração de um arquivo tar. x : extrair o conteúdo de um arquivo tar. <opções> podem ser: v : Verbose tar.<operações> podem ser: c : criar o arquivo tar.

o compress utiliza o algoritimo LZW. aqueles a serem empacotados e comprimidos. vídeo e áudio. A forma de utilização desses comandos são bastante simples. Já em arquivos de imagens. há casos que podemos nos dar ao luxo de perdas de infomações em detrimento da qualidade. para o gzip. Eis uma diferença entre o tar e esses programas. 12. estaríamos diminuindo o número de bits necessários para armazenar essa apostila. zip e compress.Outros programas que trabalha de forma análoga ao tar são o dump e cpio. se o zip á realiza o trabalho de empacotar e comprimir. gzip. basta fornecer o arquivo de entrada que a compressão se dará no próprio arquivo. Entretanto. ou seja. Todos esses algoritimos fazem parte do grupo dos algoritimos que não ocasionam perdas de dados. Obviamente quando o assunto é backup de informações vitais devemos utilizar algoritimos sem perdas. O bzip2 utiliza os algoritimos Burrows-Wheeler transform e Huffman coding: já o gzip e o zip utilizam os algoritimos LZ77 e Huffman coding. Você deve estar se perguntando. para que você pudesse entender que o “comp” significa você teria que estar ciente dessa convenção. bzip2 e compress. m Ambos foram criados com a mesma finalidade. que em geral é praticamente imperceptível para os não especialistas da área. mas são pouco utilizados hoje em dia. Por exemplo. do algoritimo de compressão. o mesmo utilizado pelo formato de imagens gif. se definíssemos que a palavra “compressão” passaria a ser abreviada por “comp”. para que eu utilizaria o comando tar em conjunto com um programa de compressão?!?! A resposta é simples: o zip não armazena os metadados! 116 . o arquivo de saída .3 Compactadores GZIP e BZIP2 Compressão de dados é o processo de codificar a informação de forma que seja possível armazená-la em um número menor de bits. ou seja.zip e os arquivos de entrada. pois não são tão versáteis quanto o tar. Há dois tipos básicos de compressão. aquele em que não há perdas de informações e aquele em que elas ocorrem. Como o programa zip realiza a tarefa de empacotar e comprimir ele recebe dois argumentos. Os principais programas de compressão que utilizaremos são o bzip2.

scripts para configuração. específicos para cada distribuição. O sistema APT utiliza um inteligente sistema de resolução de dependê ncias. O Red Hat Package Manager utiliza pacotes rpm e também conta com um sistema de resolução de dependências. 13.3 Gerenciamento de pacotes Em distribuições baseadas em Debian.2 O que é um pacote? Pacotes são conjuntos de arquivos necessários à execução de um software agrupados de forma a facilitar a instalação e distribuição do programa. O sistema APT pode ser usado para instalação. removendo e atualizando programas 13. A primeira etapa é usar o comando: 117 . Os sistemas baseados em Red Hat utilizam outro sistema de gerenciamento de pacotes. O aptitude é um frontend para o sistema APT. o RPM. atualização e consulta de pacotes. a maneira mais simples de gerenciar os pacotes de software é usando o comando aptitude.deb. Eventualmente podem conter sistemas de listagem/checagem de dependê ncias.1 Objetivos Os diversos programas GNU/Linux são distríbuidos em forma de paoctes. Os pacotes nos sistemas baseados em Debian têm uma extensão característica: . remoção.Capítulo 13 Instalando. Uma outra característica torna as distribuições baseadas em Debian bastante populares: o sistema APT de gerenciamento de pacotes. o sistema APT instala esse outro programa. Caso um programa necessite de outro para seu correto funcionamento. 13. Neste capítulo aprenderemos um pouco sobre esses pacotes e como instalá-los e removê-los do sistema.

000 pacotes de software disponíveis.org/ etch/updates main contrib Após fazer as configurações será necessário fazer um update. A localização dos repositórios poderá ser diferente.0 r3 _Etch_ . 13.list # # deb cdrom:[Debian GNU/Linux 4. Segue um exemplo de arquivo de configuração # cat /etc/apt/sources. a versão da distribuição que será verificada (stable. # aptitude update 118 .Official i386 DVD Binary-1 20080217-11:31]/ etch contrib main # Line commented out by installer because it failed to verify: #deb http://security. non-US). unstable) e a seção que será copiada (main.org/ etch/updates main contrib # Line commented out by installer because it failed to verify: #deb-src http://security.# aptitude update A saída do comando será algo similar à listagem abaixo.debian. testing.Official i386 DVD Binary-1 20080217-11:31]/ etch contrib main deb cdrom:[Debian GNU/Linux 4.0 r3 _Etch_ .list Este arquivo contém os locais onde o APT encontrará os pacotes.debian. contrib.4 Espelhos e o arquivo /etc/apt/sources. non-free. Existem mais de 14. conforme sua configuração: O comando acima sincroniza a lista de pacotes disponíveis para instalação nos servidores remotos com a lista de disponíveis local.

O aptitue pode ser usado para consultar a base de pacotes disponíveis relacionados ao texto JPG. digitamos: # aptitude remove lynx 13. Remoção e Atualização Para instalação deve-se usar o comando aptitude com a instrução install e fornecer o nome do pacote desejado. # aptitude safe-upgrade 119 .5 Instalação. este processo pode levar bastante tempo. Por exemplo. # aptitude search jpg 13. Para instalar todas as atualizações disponíveis. Dependendo da velocidade de conexão. digitamos: # aptitude install lynx Para remover um pacote instalado deve-se usar o comando aptitude com a instrução remove e fornecer o nome do pacote desejado.1 Consultas de pacotes Imagine que necessite de um pacote que trabalhe com arquivos JPG.13. para instalar o programa de navegação em linha de comando lynx. Por exemplo.6 Atualização via Internet O sistema pode ser atualizado de tempos em tempos ou por questões de segurança.5. para remover o programa de navegação em linha de comando lynx. usa-se o aptitude com a instrução safe-upgrade.

120 .

Sign up to vote on this title
UsefulNot useful