Comandos e Sintaxes

Page 1

LINUX

Comandos & Sintaxes Instruções teóricas para todas distribuições

1.ª Edição Ronaldo da Paz Dourado 1


Notas Iniciais Esta documentação relata sobre a utilidade do modo console com base no linux Debian/ubuntu, ou seja, foi documentada sob demanda do terminal. Servirá teoricamente para uma abrangência a todos os terminais, sendo que o treino no terminal é muito importante para uso de todas distribuições linux. Este documento não relata nada sobre redes envolvendo linux e windows, no momento é destinado a quem está começando no Linux. Enfim, dedico está obra aos meus colegas de faculdade e amigos interessado no mundo da liberdade linux. Em breve será lançado uma edição documentando sobre redes.

Direitos autorais As condições de uso está sob os termos da GPL- General Public License. É permitido fazer cópias, enviar para amigos, colocar para download, fazer divulgação deste trabalho, enfim, distribuí-lo sem interesse comercial. Portanto a modificação deste documento somente deve acontecer sob os termos do GNU Free Documentation License.

Copyright © 2010 Ronaldo da Paz Dourado – Tecnólogo em Redes. Brazil. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License: Linux Comandos e Sintaxes. e-mail's: ron_dourado@hotmail.com rondapaz@gmail.com

2


Sumário Notas Iniciais.............................................................................................................................................................2 Direitos autorais .......................................................................................................................................................2 Introdução..................................................................................................................................................................6 O que é Linux.................................................................................................................................................6 Linux ou GNU/Linux?...................................................................................................................................6 O kernel Linux...............................................................................................................................................6 O sistema operacional Linux (ou GNU/Linux)..............................................................................................8 1 Estudo introdutório...............................................................................................................................................11 Terminal Virtual (console).................................................................................................................................12 Caracteres Curingas...........................................................................................................................................13 Tipos de Execução de comandos/programas.....................................................................................................15 1.1 Manipulando arquivos e diretórios..............................................................................................................16 cd .................................................................................................................................................................16 pwd ..............................................................................................................................................................16 ../..................................................................................................................................................................16 ./...................................................................................................................................................................16 cp .................................................................................................................................................................17 dir ................................................................................................................................................................17 du .................................................................................................................................................................17 ls ..................................................................................................................................................................17 ls -l ..............................................................................................................................................................17 ls -la .............................................................................................................................................................17 ls -lha ...........................................................................................................................................................17 mkdir -p .......................................................................................................................................................17 touch.............................................................................................................................................................18 mv ...............................................................................................................................................................18 rm -rdf .........................................................................................................................................................18 chmod +x ....................................................................................................................................................18 chattr ............................................................................................................................................................18 split ..............................................................................................................................................................18 cat ................................................................................................................................................................18 find ..............................................................................................................................................................19 ln -s ..............................................................................................................................................................19 who ..............................................................................................................................................................19 whoami.........................................................................................................................................................19 history .........................................................................................................................................................19 1.2 Compactando arquivos................................................................................................................................20 zip ................................................................................................................................................................20 unzip.............................................................................................................................................................20 tar ................................................................................................................................................................20 7z .................................................................................................................................................................20 1.3 Editores do sistema......................................................................................................................................21 nano..............................................................................................................................................................21 vi..................................................................................................................................................................21 Explicando melhor o editor vi......................................................................................................................21 2. Sistema................................................................................................................................................................23 2.1 Comandos do sistema..................................................................................................................................23 date -s ..........................................................................................................................................................23 clear .............................................................................................................................................................23 uname -a.......................................................................................................................................................23 cal ................................................................................................................................................................23 lshw..............................................................................................................................................................23 fdisk..............................................................................................................................................................23

3


Criando partições com o fdisk ....................................................................................................................24 mount ..........................................................................................................................................................25 Montando uma imagem de extensão .iso, ...................................................................................................25 mkfs .............................................................................................................................................................26 df -h..............................................................................................................................................................26 Fazendo Backup da MBR utilizando o dd...................................................................................................26 2.2 Entendendo processos..................................................................................................................................27 top................................................................................................................................................................27 ps aux...........................................................................................................................................................27 kill ...............................................................................................................................................................27 pstree ...........................................................................................................................................................27 2.3 Memória RAM e administração da memória SWAP...................................................................................27 free -m .........................................................................................................................................................27 Administrando a swap..................................................................................................................................28 2.4 Usando os programas: genisoimage; dd; cdrecord; cdparanoia; lame.........................................................28 2.4.1 Criando imagens ISO apartir de dados no computador......................................................................28 2.4.2 Fazendo cópias de CD's e DVD's de dados........................................................................................29 2.4.3 Gravando um CD/DVD apartir de uma imagem ISO.........................................................................30 2.4.4 Gravando CD's de músicas tradicionais via linha de comando..........................................................31 2.4.5 Convertendo CD's em formato mp3...................................................................................................31 2.4.6 Gravando CD's de áudio e dados juntos.............................................................................................32 2.5 Entendendo o apt-get...................................................................................................................................32 2.5.1 Introdução ..........................................................................................................................................32 2.5.2 Comandos afins do apt-get..................................................................................................................32 2.5.4 Como utilizar o apt-get ?.....................................................................................................................33 2.5.5 Instalando pacotes...............................................................................................................................34 2.5.6 Removendo pacotes com o apt-get.....................................................................................................35 2.5.7 Atualizando pacotes com o apt-get ....................................................................................................35 2.5.8 Descobrindo nomes de pacotes...........................................................................................................36 2.5.9 Mostrando detalhes de um pacote ......................................................................................................37 2.5.10 Finalizando........................................................................................................................................38 2.6 Configurando RAID no Linux ....................................................................................................................38 2.6.1 Conhecimentos necessários.................................................................................................................39 2.6.2 Definindo RAID..................................................................................................................................39 2.6.3 Tipos de RAID ...................................................................................................................................40 2.6.4 Usando o mdadm para Configurar o Armazenamento Baseado no RAID e Multi-localidade...........41 2.6.4.1. Criando um Dispositivo RAID com mdadm...................................................................................41 2.6.4.2 Editando o FSTAB para automatizar o RAID e montá-lo no boot.................................................43 2.6.4.3 Criando um Dispositivo Multi-localidade com mdadm...................................................................44 2.6.4.4 Nota..................................................................................................................................................44 2.7 Trabalhando com usuários, grupos e permissões.........................................................................................46 2.7.1 Adicionado usuário ao sistema............................................................................................................46 2.7.2 Entendendo permissões.......................................................................................................................46 2.7.3 Grupos: adicionando, deletando e alterando o dono...........................................................................47 2.8 Determinando agendamento com o cron.....................................................................................................47 2.8.1 Introdução...........................................................................................................................................47 2.8.2 Configurando o cron por usuário........................................................................................................50 2.8.3 Resumo de aprendizagem do cron......................................................................................................53 2.9 Usando o gnupgp (GPG).............................................................................................................................54 2.10 Entendendo dispositivos de loop (loop0 a loop7)......................................................................................57 2.10.1 Criando um volume de dados............................................................................................................57 2.10.1 Criando um volume de dados com criptografia................................................................................60 Referências Bibliográficas......................................................................................................................................61

4


Introdução O que é Linux Linux é ao mesmo tempo um kernel (ou núcleo) e o sistema operacional que roda sobre ele, dependendo do contexto em que você encontrar a referência. O kernel Linux foi criado em 1991 por Linus Torvalds, então um estudante finlandês, e hoje é mantido por uma comunidade mundial de desenvolvedores (que inclui programadores individuais e empresas como a IBM, a HP e a Hitachi), coordenada pelo mesmo Linus, agora um desenvolvedor reconhecido mundialmente e mais representativo integrante da Linux Foundation. O Linux adota a GPL, uma licença de software livre – o que significa, entre outras coisas, que todos os interessados podem usá-lo e redistribuí-lo, nos termos da licença. Aliado a diversos outros softwares livres, como o KDE, o GNOME, o Apache, o Firefox, os softwares do sistema GNU e o OpenOffice.org, o Linux pode formar um ambiente moderno, seguro e estável para desktops, servidores e sistemas embarcados.

Linux ou GNU/Linux? A Free Software Foundation advoga que o sistema operacional formado pelo núcleo Linux e o conjunto de utilitários e aplicativos que incluem aqueles desenvolvidos pelo seu projeto GNU deve ser chamado de GNU/Linux, e não simplesmente de Linux. A questão tem sido objeto de intensos debates há anos, sem que um posicionamento geral e definitivo seja alcançado. Naturalmente a posição da FSF não é a única existente. São conhecidas as declarações de Linus Torvalds (que acharia interessante a existência de uma distribuição chamada GNU Linux e mantida pelo projeto GNU), de Eric Raymond e de John Dvorak, entre outros. Há ainda uma interessante citação da própria FSF afirmando que um nome como GNU/X11/Apache/Linux/TeX/Perl/Python/FreeCiv seria absurdo, portanto é necessário estabelecer um limite. Mas, diz ela, “Não pode ser justo dar todo o crédito para uma contribuição secundária (Linux) enquanto se omite a contribuição principal (GNU).” Outra citação digna de nota vem de um editorial do veterano Linux Journal: “Talvez Richard Stallman esteja frustrado porque Linus recebeu as glórias por ter feito aquilo que Stallman pretendia fazer.” O kernel Linux Inicialmente, o kernel Linux foi desenvolvido como um hobby por Linus Torvalds (então um estudante) com o objetivo de desenvolver seu próprio sistema operacional “Unix5


like” que rodasse em processadores Intel 80386. Linus chegou a estudar o Minix, um sistema similar de autoria do famoso acadêmico Andrew Tanenbaum, mas não ficou satisfeito com a arquitetura deste (que não era um software livre, inclusive) e resolveu criar o seu próprio sistema. O projeto Linux foi publicamente lançado em 1991 em uma famosa mensagem para a Usenet.

Tux, o logo e mascote do Linux Hoje o Linux é um kernel híbrido monolítico. Drivers de dispositivo e extensões do kernel tipicamente rodam com acesso total ao hardware, embora alguns rodem em espaço de usuário. Ao contrário dos kernels monolíticos padrão, os drivers de dispositivo são facilmente configurados como módulos, e carregados e descarregados enquanto o sistema está rodando. Também ao contrário de kernels monolíticos padrão, drivers de dispositivo podem ser pré-inseridos sob certas condições. Essa última característica foi adicionada para corrigir o acesso a interrupções de hardware, e para melhorar o suporte a multiprocessamento simétrico. Embora Linus Torvalds não tenha tido como objetivo inicial tornar o Linux um sistema portável, ele evoluiu nessa direção. Linux é hoje, na verdade, um dos kernels de sistema operacional mais portados, rodando em sistemas desde o iPaq (um computador portátil) até o IBM S/390 (um volumoso e altamente custoso mainframe), passando por várias arquiteturas: Intel, StrongARM, PowerPC, Alpha etc., com grande penetração também em dispositivos embarcados, como handhelds, PVR, vídeogames e centrais de entretenimento. De qualquer modo, é importante notar que os esforços de Linus foram também dirigidos a um outro tipo de portabilidade. Portabilidade, de acordo com Linus, era a habilidade de facilmente compilar aplicativos de uma variedade de origens no seu sistema; portanto o Linux originalmente se tornou popular em parte devido ao esforço para que fosse fácil fazer com que códigos de aplicativos disponíveis para outros sistemas (inclusive no Unix e no sistema GNU) rodassem no Linux. Hoje, Linus Torvalds continua a dirigir o desenvolvimento do kernel, enquanto outros subsistemas (como ferramentas de desenvolvimento, ambientes gráficos e aplicativos) são desenvolvidos independentemente. A tarefa de integrar todos estes componentes para formar um sistema completo é desempenhada pelas empresas e organizações que mantêm distribuições de Linux.

6


O sistema operacional Linux (ou GNU/Linux) Logo que Linus Torvalds passou a disponibilizar o Linux, ele apenas disponibilizava o kernel (núcleo) de sua autoria juntamente com alguns utilitários básicos. O próprio usuário devia encontrar os outros programas, compilá-los e configurá-los e, talvez por isso, o Linux tenha começado a ter a fama de sistema operacional apenas para técnicos. Foi neste ambiente que surgiu a MCC (Manchester Computer Centre), a primeira distribuição Linux, feita pela Universidade de Manchester, na tentativa de poupar algum esforço na instalação do Linux. Hoje em dia, um sistema operacional Linux completo (ou uma “distribuição de Linux”) é uma coleção de softwares (livres ou não) criados por indivíduos, grupos e organizações ao redor do mundo, tendo o Linux como seu núcleo. Companhias como a Red Hat, a Novell/SUSE, a Mandriva (união da Mandrake com a Conectiva), bem como projetos de comunidades como o Debian, o Ubuntu, o Gentoo e o Slackware, compilam o software e fornecem um sistema completo, pronto para instalação e uso. As distribuições de GNU/Linux começaram a ter maior popularidade a partir da segunda metade da década de 1990, como uma alternativa livre para os sistemas operacionais Microsoft Windows e Mac OS, principalmente por parte de pessoas acostumadas com o Unix na escola e no trabalho. O sistema tornou-se popular no mercado de servidores, principalmente para a Web e servidores de bancos de dados, inclusive no ambiente corporativo – onde também começou a ser adotado em desktops especializados. No decorrer do tempo várias distribuições surgiram e desapareceram, cada qual com sua característica. Algumas distribuições são maiores outras menores, dependendo do número de aplicativos e sua finalidade. Algumas distribuições de tamanhos menores cabem em um disquete com 1,44 MB, outras precisam de vários CDs, existem até algumas que tem versões em DVD. Cada uma tem seu público e sua finalidade. Descrição das principais distribuições linux no dia a dia: 1.Mandriva, o saudosista do Conectiva - garanto que muitos entusiastas de Linux que você conheça já usou o Conectiva alguma vez, pois eles mudaram a história do open source no Brasil. É uma robusta distribuição, tanto para desktop como para servidores. 2.Fedora, o saudosista do Red Hat - antes do Conectiva existir, a distribuição que era mais usada na época era o Red Hat ( que hoje é pago e está mais voltado para servidores ) criou um projeto para a comunidade de codinome Fedora ( que significa chapéu de feltro, aquele que o Indiana Jones usa ). 3.openSUSE, o administrador preciso - a distribuição alemã SuSE apesar de ser paga, sempre se mostrou com excelente documentação e suportada por empresas grandes para usala como servidor. O projeto opensuse oferece uma versão open source com a mesma qualidade da paga. 7


4.Slackware, o simplista KISS - para que usar um milhão se scripts se com meia dúzia de arquivos é possível configurar quase tudo no sistema? Essa é a filosofia Slackware, ser bem aberto para poder configurar a máquina, compilar e instalar as coisas do jeito que quiser, sem ficar muito preso à programas gerenciadores de pacotes. Essa distribuicão é sugerida para quem já conhece um pouco de Unix e deseja algo mais parecido com os outros tipos de Unix existentes. 5.Gentoo, o louco por performance - além de ser bem simples também, o Gentoo oferece um esquema de compilação de pacotes baseado no Ports do FreeBSD, que permite uma configuração específica para cada arquitetura . 6.Xandros, o Linux ala XP - essa distribuição veio do descontinuado Corel Linux, uma distribuição que visava trazer muitos usuários do Windows para o seu sistema operacional. O Xandros segue essa mesma linha e por no mínimo 99 dólares você compra uma versão para seu desktop. 7.Debian, o devoto do GNU - essa é a distribuição preferida do criador do Linux, que preza sempre a adoção de software livre para os seus aplicativos. 8.Knoppix, o gamer - essa distribuição é baseada no Debian, mas ela foi uma das primeiras a ser um LiveCD, que permite o seu uso em qualquer computador sem a necessidade de instalar nada,apenas bootar a máquina com um CD. Muitos LiveCDs de jogos e emuladores usam essa distribuição. 9.Kurumin NG, o brasileiro orgulhoso - essa distribuição é uma das coisas mais notáveis a quantidade de scripts criado para os diversos tipos de hardware e diversos provedores de acesso a Internet que temos aqui no Brasil. Baseada no Debian com interface KDE, uma excelente opção sem dúvida! 10.Ubuntu, o cara da moda - hoje a mais famosa distribuição e muito difundida pelo mundo, apesar de levar a fama por estar na moda ela tem características que outras distribuições tem há anos, ela simplesmente foi criada focando a usabilidade. Se procura algo somente para uso em desktop, essa é uma excelente opção. Eu sugiro ainda o uso do Kubuntu, que utiliza a interface KDE ao invés do GNOME. 11.Linuxmint – Uma distribuição derivada do ubuntu, com objetivo de facilitar as coisas para o usuário. Todos os sistemas GNU/Linux possui a seguinte estrutura básica de diretórios organizados segundo o FHS (Filesystem Hierarchy Standard): /bin Contém arquivos programas do sistema que são usados com freqüência pelos usuários. /boot Contém arquivos necessários para a inicialização do sistema. /cdrom Ponto de montagem da unidade de CD-ROM. /media Ponto de montagem de dispositivos diversos do sistema (rede, pen-drives, CD-ROM em distribuições mais novas). 8


/dev Contém arquivos usados para acessar dispositivos (periféricos) existentes no computador. /etc Arquivos de configuração de seu computador local. /floppy Ponto de montagem de unidade de disquetes /home Diretórios contendo os arquivos dos usuários. /lib Bibliotecas compartilhadas pelos programas do sistema e módulos do kernel. /lost+found Local para a gravação de arquivos/diretórios recuperados pelo utilitário fsck.ext2. Cada partição possui seu próprio diretório lost+found. /mnt Ponto de montagem temporário. /proc Sistema de arquivos do kernel. Este diretório não existe em seu disco rígido, ele é colocado lá pelo kernel e usado por diversos programas que fazem sua leitura, verificam configurações do sistema ou modificar o funcionamento de dispositivos do sistema através da alteração em seus arquivos. /root Diretório do usuário root. /sbin Diretório de programas usados pelo superusuário (root) para administração e controle do funcionamento do sistema. /tmp Diretório para armazenamento de arquivos temporários criados por programas. /usr Contém maior parte de seus programas. Normalmente acessível somente como leitura. /var Contém maior parte dos arquivos que são gravados com freqüência pelos programas do sistema, e-mails, spool de impressora, cache, etc.

9


1 Estudo introdutório

Para entendermos melhor o linux, leia atentamente este tópico introdutório, com atenção, então vejamos: O que é o terminal? Nada mais é do que uma área de console, ou seja, é onde tenho controle total do meu linux. Terminal é o meio onde posso configurar o meu linux para um bom funcionamento através das linhas de comando e edição de scripts. Comando é um pequeno programa, que tem por finalidade a intenção de provocar algo, ou seja, quando executado retorna a um resultado. Um sistema operacional é constituído por vários programas, sendo que um programa é constituído por vários comandos. O terminal também conhecido como "shell". Isto é, um programa responsável em interpretar as instruções enviadas pelo usuário e seus programas ao sistema operacional (o kernel). Ele que executa comandos lidos do dispositivo de entrada padrão (teclado) ou de um arquivo executável. É a principal ligação entre o usuário, os programas e o kernel. O GNU/Linux possui diversos tipos de interpretadores de comandos, entre eles podemos destacar o bash, ash, csh, tcsh, sh, etc. Entre eles o mais usado é o bash. O interpretador de comandos do DOS, por exemplo, é o command.com. Os comandos podem ser enviados de duas maneiras para o interpretador: interativa e não-interativa: Interativa Os comandos são digitados no aviso de comando e passados ao interpretador de comandos um a um. Neste modo, o computador depende do usuário para executar uma tarefa, ou próximo comando. Não-interativa São usados arquivos de comandos criados pelo usuário (scripts) para o computador executar os comandos na ordem encontrada no arquivo. Neste modo, o computador executa os comandos do arquivo um por um e dependendo do término do comando, o script pode checar 10


qual será o próximo comando que será executado e dar continuidade ao processamento. Este sistema é útil quando temos que digitar por várias vezes seguidas um mesmo comando ou para compilar algum programa complexo. O shell Bash possui ainda outra característica interessante: A completação dos nomes. Isto é feito pressionando-se a tecla TAB. Por exemplo, se digitar "ls tes" e pressionar <tab>, o Bash localizará todos os arquivos que iniciam com "tes" e completará o restante do nome. Caso a completação de nomes encontre mais do que uma expressão que satisfaça a pesquisa, ou nenhuma, é emitido um beep. Se você apertar novamente a tecla TAB imediatamente depois do beep, o interpretador de comandos irá listar as diversas possibilidades que satisfazem a pesquisa, para que você possa escolher a que lhe interessa. A completação de nomes funciona sem problemas para comandos internos. Exemplo: ech (pressione TAB). ls /vm(pressione TAB) Terminal Virtual (console) Terminal (ou console) é o teclado e tela conectados em seu computador. O GNU/Linux faz uso de sua característica multi-usuária usando os "terminais virtuais". Um terminal virtual é uma segunda seção de trabalho completamente independente de outras, que pode ser acessada no computador local ou remotamente via telnet, rsh, rlogin, etc. No GNU/Linux, em modo texto, você pode acessar outros terminais virtuais segurando a tecla ALT e pressionando F1 a F6. Cada tecla de função corresponde a um número de terminal do 1 ao 6 (o sétimo é usado por padrão pelo ambiente gráfico X). O GNU/Linux possui mais de 63 terminais virtuais, mas apenas 6 estão disponíveis inicialmente por motivos de economia de memória RAM . Se estiver usando o modo gráfico, você deve segurar CTRL+ ALT enquanto pressiona uma tela de <F1> a <F6>. Para voltar ao modo gráfico, pressione CTRL+ALT+ <F7>. Um exemplo prático: Se você estiver usando o sistema no Terminal 1 com o nome "joao" e desejar entrar como "root" para instalar algum programa, segure ALT enquanto pressiona <F2> para abrir o segundo terminal virtual e faça o login como "root". Será aberta uma nova seção para o usuário "root" e você poderá retornar a hora que quiser para o primeiro terminal pressionando ALT+<F1>. 11


Caracteres Curingas Curingas (ou referência global) é um recurso usado para especificar um ou mais arquivos ou diretórios do sistema de uma só vez. Este é um recurso permite que você faça a filtragem do que será listado, copiado, apagado, etc. São usados 4 tipos de curingas no GNU/Linux: ➢ "*" - Faz referência a um nome completo/restante de um arquivo/diretório. ➢ "?" - Faz referência a uma letra naquela posição. ➢ [padrão] - Faz referência a uma faixa de caracteres de um arquivo/diretório. Padrão pode ser:  [a-z][0-9] - Faz referência a caracteres de a até z seguido de um caracter de 0 até 9.  [a,z][1,0] - Faz a referência aos caracteres a e z seguido de um caracter 1 ou 0 naquela posição.  [a-z,1,0] - Faz referência a intervalo de caracteres de a até z ou 1 ou 0 naquela posição. A procura de caracteres é "Case Sensitive" assim se você deseja que sejam localizados todos os caracteres alfabéticos você deve usar [a-zA-Z]. Caso a expressão seja precedida por um ^, faz referência a qualquer caracter exceto o da expressão. Por exemplo [^abc] faz referência a qualquer caracter exceto a, b e c. ➢ {padrões} - Expande e gera strings para pesquisa de padrões de um arquivo/diretório.  X{ab,01} - Faz referência a seqüencia de caracteres Xab ou X01  X{a-z,10} Faz referencia a seqüencia de caracteres Xa-z e X10. O que diferencia este método de expansão dos demais é que a existência do arquivo/diretório é opcional para geração do resultado. Isto é útil para a criação de diretórios. Lembrando que os 4 tipos de curingas ("*", "?", "[]", "{}") podem ser usados juntos. Para entender melhor vamos a prática: 12


Vamos dizer que tenha 5 arquivo no diretório /usr/teste: teste1.txt, teste2.txt, teste3.txt, teste4.new, teste5.new. Caso deseje listar todos os arquivos do diretório /usr/teste você pode usar o coringa "*" para especificar todos os arquivos do diretório: cd /usr/teste e ls * ou ls /usr/teste/*. Não tem muito sentido usar o comando ls com "*" porque todos os arquivos serão listados se o ls for usado sem nenhum Coringa. Agora para listar todos os arquivos teste1.txt, teste2.txt, teste3.txt com excessão de teste4.new, teste5.new, podemos usar inicialmente 3 métodos: ➢ Usando o comando ls *.txt que pega todos os arquivos que começam com qualquer nome e terminam com .txt. ➢ Usando o comando ls teste?.txt, que pega todos os arquivos que começam com o nome teste, tenham qualquer caracter no lugar do coringa ? e terminem com .txt. Com o exemplo acima teste*.txt também faria a mesma coisa, mas se também tivéssemos um arquivo chamado teste10.txt este também seria listado. ➢ Usando o comando ls teste[1-3].txt, que pega todos os arquivos que começam com o nome teste, tenham qualquer caracter entre o número 1-3 no lugar da 6a letra e terminem com .txt. Neste caso se obtém uma filtragem mais exata, pois o coringa ? especifica qualquer caracter naquela posição e [] especifica números, letras ou intervalo que será usado. ➢

Agora para listar somente teste4.new e teste5.new podemos usar os seguintes métodos:

➢ ls *.new que lista todos os arquivos que terminam com .new ➢ ls teste?.new que lista todos os arquivos que começam com teste, contenham qualquer caracter na posição do coringa ? e terminem com .new. ➢ ls teste[4,5].* que lista todos os arquivos que começam com teste contenham números de 4 e 5 naquela posição e terminem com qualquer extensão. Existem muitas outras formas de se fazer a mesma coisa, isto depende do gosto de

13


cada um. O que pretendi fazer aqui foi mostrar como especificar mais de um arquivo de uma só vez. O uso de curingas será útil ao copiar arquivos, apagar, mover, renomear, e nas mais diversas partes do sistema. Alias esta é uma característica do GNU/Linux: permitir que a mesma coisa possa ser feita com liberdade de várias maneiras diferentes. Tipos de Execução de comandos/programas No linux existe dois tipos de usuário, o comum identificado pelo símbolo $ e o administrador identificado pelo símbolo #. Isto é, certos comandos são executados pelos usuários comuns e o administrador pode executar todos os tipos de comandos. Aviso de comando [Administrador # (root) ] ou [Usuário comum $(usuário simples)]. Um programa pode ser executado de duas formas: ➢ Primeiro Plano - Também chamado de foreground. Quando você deve esperar o término da execução de um programa para executar um novo comando. Somente é mostrado o aviso de comando após o término de execução do comando/programa. ➢ Segundo Plano - Também chamado de background. Quando você não precisa esperar o término da execução de um programa para executar um novo comando. Após iniciar um programa em background, é mostrado um número PID (identificação do Processo) e o aviso de comando é novamente mostrado, permitindo o uso normal do sistema. O programa executado em background continua sendo executado internamente. Após ser concluído, o sistema retorna uma mensagem de pronto acompanhado do número PID do processo que terminou. Para iniciar um programa em primeiro plano, basta digitar seu nome normalmente. Para iniciar um programa em segundo plano, acrescente o caracter "&" após o final do comando. OBS: Mesmo que um usuário execute um programa em segundo plano e saia do sistema, o programa continuará sendo executado até que seja concluído ou finalizado pelo usuário que iniciou a execução (ou pelo usuário root). Exemplo: find / -name boot.b & O comando será executado em segundo plano e deixará o sistema livre para outras 14


tarefas. Após o comando find terminar, será mostrada uma mensagem.

COMANDOS

SINTÁXES (# =usuário root e $=usuário comum)

; → O ponto e vírgula (;) não é um

$ ls -la; date; cal

comando, mas é usado para indicar a finalização de comandos. Pois assim podemos executar dois ou mais comandos ao mesmo tempo na mesma linha no terminal. nautilus → permissão total na janela

# nautilus

que se abre no modo gráfico, depois fechada tudo normal. sudo su → dar permissão de usuário

$ sudo su

root ao usuário logado. man → Fundamental para visualizar

$ man ls

manual de determinado comando.

1.1 Manipulando arquivos e diretórios

cd

$ cd /home Acessa diretórios.

pwd

$ pwd Mostra caminho de diretório. root@linux:/home/usuario/exemplo # ls ../

../

obs.: listará os arquivos de usuário e não do Retorna a um nível anterior.

./

diretório exemplo. root@linux:/home/usuario/exemplo # ./configure

15


Determina algo no local.

cp

obs.: ideal para ativar scripts

$ cp -r minhas-imagens /home/album Copia arquivos ou diretórios.

Obs.: todos os diretórios entre chaves estão

# cp --preserve -R /

no / e separados por vírgula.

{home/user/test,home/user/videos,/etc} /home/user/backup

dir

$ dir -la Usado listar arquivos e diretórios.

du Lista diretórios e mostra tamanho de

$ du -h; du -h arquivo

arquivos ou diretórios. ls

$ ls Lista arquivos.

ls -l Lista arquivos visualizando o dono

$ ls -l

e o grupo e suas permissões. ls -la Lista arquivos ocultos e motra o

$ ls -la

dono, grupo e permissões. ls -lha Todas as funções dos ls anteriores,

$ ls -lha

porém este mostra o tamanho dos arquivos. mkdir -p

# mkdir -p teste01/{teste02,teste03/

Cria árvore de diretórios, obdecendo {teste04,teste05}} o fechamento das chaves. 16


touch #touch nome.txt Usado para criar arquivos vazios mv Renomeia arquivos e também move

# mv arquivo.do file.doc

se necessário para outro diretório. rm -rdf

# rm -rdf diretório; arquivo.doc Remove arquivos ou diretórios.

chmod +x

# chmod +x <nome do arquivo>

Torna arquivos em executáveis. chattr Protege arquivos, usa argumento +i para proteger e -i desfaz a proteção).

#chattr +i arquivo; chattr +i -R diretório

Depois de inserir a proteção nem mesmo o usuário root pode alterar o arquivo, somente quando desfeita. split Quebra arquivos veja o manual digitando man split no terminal.

# split -b 10m homem_aranha.avi aranha.x

Sintáxe: quebrando um arquivo de vídeo de 30MB em três pedaços de 10MB: # cat aranha.x* > homem_aranha2.avi

cat Este comando tem várias funções como por exemplo de visualizar o contéudo de arquivos, criar lista do resultados de comandos e agrupar arquivos quebrados pelo

17


comando split. Na sintáxe está montando as partes do arquivo de 30 M, quebrado antes em partes de 10M. find Pesquisa arquivos no disco, use o

# find -name arquivo

comando man e estude detalhadamente o comando, para ver seus argumentos. ln -s

Usado para criar link's para

# ln -s nome_do_script /bin/nome_do_script

arquivos, scripts, diretórios. Lembre da permissões, estude permissões de arquivos. who Mostra usuário logado e o nome do terminal que está logado. Informando

$ who

horários de inicialização. Veja man who. E estude seus atributos. whoami

$ whoami Mostra usuário

history Visualiza histórico de comandos

$ history

usados, ou seja, manipulados pelo usuário.

$ history |more

Para visualizar o histórico por pausa, use o

$ history -c

atributo |more. Para limpa o use history acrescentando o atributo -c

18


1.2 Compactando arquivos

zip Zip é um compactador padrão, ou seja, o mais conhecidos dos formatos de compressão é zip.

#zip -r -e -v educativos.zip

-r caso for um diretorio para compressão,

/home/usuario/educativos

-e significa que uma senha será solicitada, caso não queira uma senha não use; -v de verbose para ver o andamento;

unzip É usado para descompactar arquivos zip's e visualizá-los o que possui em seu

#unzip educativos.zip #unzip -v educativos.zip

interior. #tar -cvvf educativos.tar.gz

tar

/home/usuario/educativos É um outro compactador muito

eficiente, porém não usa senha.

Para descompactar os arquivos tar.gz use o comando: #tar -xvvf educativos.tar.gz Compacatando o diretório educativos

7z

#7z a educativos.7z ./educativos É um compactador bastante

eficiente, com possibilidade de uso de senha. Para descompactar os arquivos 7z use o Argumentos: comando: a → adicionada; e → extrai somente arquivos;

#7z x educativos.7z

x → extrai arquivos obedecendo árvore de

19


diretórios. u → faz update; d → deletar; l → listar arquivos contidos; t → testar; -p → inserir senha. 1.3 Editores do sistema

nano É um programa editor do sistema utilizado para criar ou editar scripts para o

#nano arquivo #man nano

sistema. vi É um programa editor do sistema utilizado para criar ou editar scripts para o

# vi arquivo # man vi

sistema. Explicando melhor o editor vi O editor de textos (modo caracter) vi é muito utilizado no mundo Linux para editar arquivos de configuração, embora este é o mais conceituado quando se trata de estudos para certificação linux. O vi apresenta 2 modos de uso: a) Modo de edição b) Modo de comando

quando pressionamos a tecla < i >. quando “chamamos” o vi ou desabilitamos o modo de

edição pressionando a tecla <ESC>. Operações básicas do modo de comando: Obs.: Conceito de linha: Considerasse linha o texto digitado até o próximo enter. x → apaga um caracter yy → copia a linha corrente nyy

copia n linhas 20


D

remove a linha corrente para posterior “colagem”

nD

remove n linhas para posterior “colagem”

Obs.: Notar que é necessário pressionar a tecla <shift> para obter D (maiúsculo) p

cola o texto copiado ou removido para a memória, após o cursor

P

cola o texto copiado ou removido para a memória, após o cursor

Obs.: Notar que é necessário pressionar a tecla <shift> para obter P (maiúsculo) dd

remove a linha corrente

ndd

remove n linhas

dDD

apaga do cursor até o final da linha

Obs.: Notar que é necessário pressionar a tecla <shift> para obter DD (maiúsculo) cc ncc

elimina a linha corrente, permitindo a inclusão imediata de uma nova linha elimina n linhas, permitindo a inclusão imediata de uma nova linha

o

insere linha em branco abaixo da linha corrente e habilita edição

O

insere linha em branco acima da linha corrente e habilita edição

Obs.: Notar que é necessário pressionar a tecla <shift> para obter O (maiúsculo) u

desfaz as últimas alterações

.

refaz o que “u” desfez

/

procura palavra

n

continua (next) a procura da palavra, para frente

N

continua (next) a procura da palavra, para trás

Obs.: Notar que é necessário pressionar a tecla <shift> para obter N (maiúsculo) e

avança para a próxima palavra (final da palavra) após o cursor

b

retrocede para a palavra (início da palavra) anterior ao cursor

<shift> :% s / termo-antigo / termo-novo

substitui o termo-antigo pelo termo-novo

<shift> :e nome-do-arquivo

edita outro arquivo (novo ou já existente)

<shift> :r nome-do-arquivo

insere na posição do cursor o arquivo

especificado <shift> :q!

sai sem salvar

<shift> :wq (ou x)

sai gravando

<shift> :wq! (ou x!)

sai gravando, forçando

<shift> :w

salva sem sair

<shift> :w!

salva sem sair, forçando 21


Obs.: Se digitarmos no prompt do Linux apenas vi, o editor entrará em operação com um arquivo em branco e sem nome. Se digitarmos no prompt do Linux vi <nome-doarquivo>, o editor entrará em operação com um arquivo em branco e com nome. Se digitarmos no prompt do Linux vi +8 <nome-do-arquivo>, abriremos o arquivo específico na linha 8. 2. Sistema

2.1 Comandos do sistema

date -s Ajusta a data e hora entre aspas. Porém mostra a data quando digitado somente date. clear Usado para limpar a tela, porém as combinações Ctrl + L, é bem mais prático. uname -a

# date -s "12:00"; date -s "02/05/2009"

$ clear

$ uname -a

Visualiza a versão do kernel. cal Visualiza calendário, se digitado só $ cal $ cal 1990 cal , mostra o mês com dias da semana, se expecíficado o ano, mostra o calendário daquela época. lshw Visualiza todos os dispositivos de hardware no computador.

# lshw

fdisk 22


Este é um programa para criar e manipular partições, muito utilizado no linux. Para visualizar as partições correntes no disco e dispositivos extras. Use o comando: # fdisk -l Estude seu manual use o comando: #man fdisk

Criando partições com o fdisk Acesse o dispositivo usando o comando: # fdisk /dev/sdb Onde /dev/sdb é o dispositivo. Depois surge: Comando (m para ajuda): m → digite para visualizar o menu. Comando - ação a alterna a opção "inicializável" b edita rótulo BSD no disco c alterna a opção "compatibilidade" d exclui uma partição l lista os tipos de partição conhecidos m mostra este menu n cria uma nova partição o cria uma nova tabela de partições DOS vazia p mostra a tabela de partições q sai sem salvar as alterações s cria um novo rótulo de disco Sun vazio t altera a identificação da partição para o sistema u altera as unidades das entradas mostradas v verifica a tabela de partições w grava a tabela no disco e sai x funcionalidade adicional (somente para usuários avançados) Comando (m para ajuda): n → digite para criar uma nova partição. Comando - ação e estendida p partição primária (1-4) p → digite para primária. Número da partição (1-4): 1 → digite para primeira partição primária. Primeiro cilindro (1-1016, padrão 1): 1 → digite para padrão 23


Last cilindro, +cilindros or +size{K,M,G} (1-1016, padrão 1016): 1016 M → para determinar o tamanho da partição. Note que estou criando uma única partição. Se desejasse mais de uma no mesmo dispositivo, deveria escolher um valor menor onde a soma desses valores resultaria o tamanho total. Exemplo: caso duas partições uma de 200M e outra de 815M no dispositivo que tenha 1016 cilindros, ficaria assim. a) Partição 1: Número da partição (1-4): 1 Primeiro cilindro (1-1016, padrão 1): 1 Last cilindro, +cilindros or +size{K,M,G} (1-1016, padrão 1016): 200M b)Partição 2: Número da partição (1-4): 2 Primeiro cilindro (201-1016, padrão 201): 201 Last cilindro, +cilindros or +size{K,M,G} (201-1016, padrão 1016): 815M Comando (m para ajuda): w → para gravar as alterações no dispositivo e sair. A tabela de partições foi alterada! # mkfs.vfat /dev/sdb1 → Formatando a partição em fat32 para leitura em todos os SO's. mkfs.vfat 3.0.3 (18 May 2009)

mount Monta dispositivos de armazenamento de dados: /dev/sda3 é o dispositivo; /mnt/disco é o ponto de montagem.

# mount /dev/sda3 /mnt/disco

Montando uma imagem de extensão .iso, No linux podemos visualizar o conteúdo de uma imagem, sem a necessidade de queimar um CD, veja: O “ mp3.iso” é a imagem, “/mnt” é o ponto de montagem. Sintáxe: # mount -o loop mp3.iso /mnt Para desmontá-la uso o comando “umount , que é usado para desmontar 24


dispositivos. Sintáxe: # umount /mnt/disco

mkfs

# mkfs.ext3 /dev/sda3 Formata partição ou dispositivos de

dados. df -h Mostra o tamanho de partições ou dispositivos montados.

# df -h

Fazendo Backup da MBR utilizando o dd

# dd if=/dev/sda of=./backup.mbr bs=512 count=1 O “dd” é um programa capaz de acessar qualquer parte do disco até mesmo a MBR, o “if” significa entrada de fluxo (input flow) e o “of” significa saída de fluxo (out flow), “bs” determina a quantidade de bytes em bloco, no caso da MBR, o bs=512 porque ela contém 512 bytes com a tabela de partição, “count” é o contador, ou seja, determina quais blocos, a MBR fica no primeiro bloco do HD então o “count=1”. Criando assim o arquivo backup.mbr. Obs.: quando visualizo o meu disco com o “fdisk -l”, ele mostra /dev/sda e suas partições. Pois meu disco é sata. Veja: #sfdisk -d /dev/sda > sda.sf Arquivo de Informações adicionais, na realidade dois arquivos serão gerados o de backup da MBR já explicado e o sda.sf. Restaurando a cópia de segurança da MBR, use as duas situações abaixo como root, utilizando um live-cd, estes argumentos são necessários quando o grub está com erro, por causa de uma atualização mal sucedida. Tenha cópia também do menu.list, bastando simplesmente acessar a pasta do /boot/grub e fazer uma cópia deste arquivo.

#dd if=backup.mbr of=/dev/sda 25


#sfdisk -force /dev/sda < sda.sf

2.2 Entendendo processos

Processo é um programa em execução. Aqui aprenderemos como gerenciar processos no sistema. top Visualiza processos, correntes no sistema. Para sair pressione Q.

ps aux

$ top

$ ps aux Mostra processos ativos.

kill Usado para mata processo com o número do processo. Utilize argumento -9.

# kill -9 1234

pstree Usado para ver árvore de processos. #pstree

2.3 Memória RAM e administração da memória SWAP

free -m Visualiza o tamanho da memória RAM e memória SWAP.

# free -m

26


Administrando a swap

Você pode acompanhar o uso de memória do sistema através do comando"free" que exibe um relatório de quanta memória (física e swap) está sendo usada e quanto ainda está disponível. Um recurso que vem a ser necessário é que você pode criar, a qualquer momento, um arquivo de memória swap temporário, usando o espaço livre do HD. Para isso basta usar os comandos (como root): 1. criando o arquivo: # dd if=/dev/zero of=./swap bs=1M count=512 2. formatando como memória de troca: # mkswap ./swap 3. ativando: # swapon ./swap 4. use o comando free -m para visualizar. Substitua o número 512 pela quantidade de memória swap desejada em MB. São 512 MB, mas não é preciso usar um número exato, você pode usar "734" por exemplo). O arquivo temporário é desativado automaticamente ao reiniciar o micro, mas você pode fazê-lo a qualquer momento usando os comandos: # swapoff ./swap # rmdir ./swap 2.4 Usando os programas: genisoimage; dd; cdrecord; cdparanoia; lame 2.4.1 Criando imagens ISO apartir de dados no computador

27


O “genisoimage” é usado para criar imagens com extensão iso apartir de dados existentes no computador. Então veja:

-r -J → são argumentos de compatibilidade com outros sistemas operacionais;

-o → determina o nome do arquivo iso;

-R → de recursivamente, ou seja, determinará que todos os diretórios e subdiretórios serão inclusos na imagem.iso;

-v → de verbose;

-V → para determinar o título da imagem.

Sintaxe: # genisoimage -r -J -o backup.iso -R -v -V Meu_backup -L /{/etc,/usr,/home/usuario,/lib} Abaixo estou fazendo uma cópia de segurança do meu sistema, não incluindo na minha imagem alguns diretórios: O argumento “-x” impedirá a cópia dos diretórios /mnt, /proc, /dev, /lost+found, /tmp. Sintáxe: # genisoimage -a -o backup.iso -R -v -V Meu_backup -L -x /mnt -x /proc -x /dev -x /lost+found -x /tmp / Isto criará sua imagem, para gravar em cd use o cdrecord como abaixo: Sintáxe: cdrecord -v -dao dev=1,0,0 backup.iso caso não saiba a identificação da sua gravadora de cd que é o dev e uns números use o comando : cdrecord -scanbus

2.4.2 Fazendo cópias de CD's e DVD's de dados Note: isto não é válido para cd's de audio tradicional, pois estes exige uma correção na transferência. Porém é válido para DVD's de filmes pois estes são puro dados . Para gravar cd's tradicionais será explicado mais adiante.

28


# dd if=/dev/cdrom of=./imagem.iso Esta linha de comando acima criará uma imagem do CD no diretório corrente, o único inconveniente deste comando é que ele não aceita o -v de verbose, e não existe nenhum outro para visualizarmos o andamento.

2.4.3 Gravando um CD/DVD apartir de uma imagem ISO Primeiro devemos ter a imagem que representa o CD, já explicado antes como criar a imagem e então usamos os comandos cdrecord ou wodim via terminal. Sintáxe: # cdrecord -v -fs=16M speed=8 dev=0,0,0 -data trabalhos.iso -v : Exibe informações durante a gravação. -fs=16M : Especifica o tamanho do buffer na memória RAM em megabytes. Substitua o 16 por um tamanho maior se tiver uma quantidade de memória agradável. Graças ao cache de memória e à multitarefa real, o Linux oferece umatolerância muito maior durante a gravação. Quase sempre você conseguirá gravar a 8x ou mais, mesmo que continue usando o PC normalmente. speed=8 : A velocidade de gravação. Pode ser qualquer número suportado pelo gravador. dev=0,0,0 : Especifica a localização do gravador. O 0,0,0 é o padrão para gravadores IDE na maioria das distribuições. Se não funcionar, use o comando “cdrecord -scanbus” (como root) para ver onde está instalado o seu gravador. -data : Especifica o arquivo ISO que será gravado, no caso estamos gravando trabalhos.iso

29


2.4.4 Gravando CD's de músicas tradicionais via linha de comando. Para extrai todas as faixas do CD no diretório corrente use o comando: # cdparanoia -B Para extrai uma faixa específica use: # cdparanoia 2 faixa.wav Para extrai um grupo de faixas use: # cdparanoia 2-4 O comando abaixo gravará o cd de audio tradicional com todas as faixas que foi extraída. # cdrecord -v -fs=16M speed=8 dev=0,0,0 -audio * Se você preferir especificar manualmente as faixas a serem gravadas, uma a uma, basta substituir o asterisco pelos nomes das faixas, separadas por espaços: # cdrecord -v -fs=16M speed=8 dev=0,0,0 -audio 01.wav 02.wav 03.wav

2.4.5 Convertendo CD's em formato mp3 Como já explicado extraia as músicas de um cd comum usando o comando: cdparanoia -B , e em seguinda utilizaremos as faixas, convertendo-as em formato mp3 usando programa lame, caso não esteja instalado dar um apt-get install lame. O lame converte arquivos wav em mp3, veja o Manual do lame Sintáxe: # man lame Para utilizar o lame acesse o diretório que contém os arquivos wav e converta todos em mp3 usando: Sintáxe: # lame -V 6 *.wav *.mp3 Obs.: o asterisco representa o nome do arquivo que será informado. - V 6 é a qualidade da música que estou confirmando para o formato mp3. Se desejar maior qualidade o arquivo de audio mp3 ocupará mais espaço e ficará melhor. Uso o V6, fica ótimo. Porém varia de 1 a 9. Obs.: Para gravar um cd de músicas MP3. Os passos são os mesmo utilizados para

30


gravar um cd de dados, já explicados acima.

2.4.6 Gravando CD's de áudio e dados juntos Você também pode gravar CDs mistos, com faixas de dados e de música, como em alguns Cds de jogos, onde as músicas podem ser tocadas em CD-Players comuns. Para isto, basta indicar as faixas de dados e de áudio a serem gravadas, colocando sempre a(s) faixa(s) de áudio no final: # cdrecord -v -fs=16M speed=8 dev=0,0,0 -data imagem.iso -audio track1.cdr Outro que substitui o cdrecord é o wodim porém usa os mesmos argumentos.

2.5 Entendendo o apt-get

2.5.1 Introdução O apt-get é um recurso desenvolvido originalmente para a distribuição Debian que permite a instalação e a atualização de pacotes (programas, bibliotecas de funções, etc) no Linux de maneira fácil e precisa. Este artigo, dividido em duas partes, mostrará como utilizar seus principais recursos. 2.5.2 Comandos afins do apt-get •

#apt-get update; → atualiza o sistema;

#apt-get install <nome do programa>; → instala programas;

#apt-get remove <nome do programa>; → remove programa;

#apt-cache search <nome do pacote>; → pesquisa pacote;

#apt-get --purge remove <nome do programa>; → remove o programa e todas as

suas informações;

#apt-cache show <nome do pacote>; → mostra detalhadamente informações do 31


pacote.

#apt-get clean → libera o cache do apt-get Vale frisar que o apt-get deve ser utilizado através de um usuário com privilégios de

administrador, ou seja, usuário root. 2.5.3 O que é apt-get ? Em qualquer sistema operacional há a necessidade de se instalar programas para que o uso do computador faça sentido. O problema é que, muitas vezes, o processo de instalação é trabalhoso, forçando o usuário a procurar arquivos indispensáveis ao software (dependências) ou a editar scripts, por exemplo. Para poder lidar com esses e com problemas oriundos, desenvolvedores da distribuição Debian Linux criaram o APT (Advanced Packaging Tool), uma ferramenta para instalar e atualizar pacotes (e suas dependências) de maneira rápida e prática. Não demorou para que o APT fosse utilizado em outras distribuições, sendo padrão no Debian e no Ubuntu (já que este é baseado no Debian).

2.5.4 Como utilizar o apt-get ? Atualizando a lista de pacotes. Quando o apt-get é utilizado no Linux, o comando consulta um arquivo denominado sources.list, geralmente disponível no diretório /etc/apt/. Esse arquivo informa onde estão os locais (repositórios) nos quais ele obterá os pacotes requisitados pelo usuário. Pelo arquivo /etc/apt/sources.list o APT sabe onde procurar os pacotes solicitados. O problema é que ele precisa conhecer o que está instalado no sistema operacional para saber exatamente o que procurar. Se não tiver essas informações, o APT não saberá que um determinado pacote essencial a um programa não está instalado e não providenciará sua instalação, por exemplo. Para lidar com essa situação, o APT utiliza um banco de dados 32


próprio e o compara aos repositórios registrados no sources.list para saber quando um pacote está atualizado ou quando há uma nova versão de um determinado aplicativo. Para fazer o APT executar essa tarefa, basta digitar em um terminal o seguinte comando: #apt-get update;

2.5.5 Instalando pacotes Antes de instalar um programa, é necessário executar o comando mostrado no tópico anterior para o APT saber o que está e o que não está instalado no computador. É por isso que esse comando foi explicado primeiro. Depois de ter executado o apt-get update, basta digitar o seguinte comando para instalar os pacotes desejados:

#apt-get install <nomedoprograma>; Por exemplo, suponha que você queira instalar o cliente de e-mail Mozilla Thunderbird. Para isso, basta dar o comando:

#apt-get install mozilla-thunderbird; Quando esse comando é executado, o APT procura nos repositórios os pacotes correspondentes e os instala imediatamente após baixá-los. Caso o programa necessite de um outro pacote, o APT o procurará e perguntará se você deseja instalá-lo, no que você deverá responder com Y (sim) ou N (não), como mostra a situação abaixo: 0 packages upgraded, 6 newly installed, 0 to remove and 2 not upgraded. Need to get 6329kB of archives. After unpacking 14.1MB will be used. Do you want to continue? [Y/n]

33


2.5.6 Removendo pacotes com o apt-get Se você não quer mais utilizar um determinado programa, pode desinstalá-lo através do comando apt-get. Para isso, basta digitar:

#apt-get remove <nome do programa>; Por exemplo, suponha que você queira desinstalar o Mozilla Thunderbird. O comando ficará então da seguinte forma:

#apt-get remove mozilla-thunderbird;

É importante destacar que o comando acima remove o programa, mas mantém os arquivos de configuração, caso estes existam. Para uma desinstalação total do programa, incluindo arquivos extras, deve-se usar o comando:

#apt-get --purge remove <nomedoprograma>;

2.5.7 Atualizando pacotes com o apt-get Versões novas de programas são lançadas periodicamente por conterem correções de segurança, disponibilizarem novos recursos ou por executarem de forma melhor. Com o comando apt-get é possível obter e instalar versões mais novas de pacotes. Para isso basta digitar o comando:

#apt-get -u upgrade; O parâmetro -u serve para o apt-get mostrar os pacotes que estão sendo atualizados, portanto, seu uso é opcional. Um detalhe importante: na atualização de pacotes, também é importante executar antes 34


o comando apt-get update.

2.5.8 Descobrindo nomes de pacotes Você viu que é necessário conhecer o nome de um pacote para poder instalá-lo. Em muitos casos, o nome segue a mesma denominação do aplicativo. Por exemplo, se você quer instalar o programa para bate-papo XChat, basta digitar:

#apt-get install xchat; Entretanto, nem sempre o nome do pacote é trivial e muitas vezes não sabemos sequer o nome do programa, apenas estamos à procura de um software que atenda a uma determinada necessidade. O que fazer então? No APT pode-se usar o seguinte comando:

#apt-cache search termo; Por exemplo, suponha que você queira procurar jogos para o Linux. O comando a ser usado é:

#apt-cache search games; Ao fazer essa pesquisa, o APT mostrará uma lista dos pacotes encontrados exibindo seus respectivos nomes seguidos de uma descrição. Se você quer ter uma descrição mais detalhada de um dos pacotes listados, basta digitar o seguinte comando:

#apt-cache show nomedopacote;

35


2.5.9 Mostrando detalhes de um pacote É importante frisar que existem outras formas para descobrir nomes de pacotes, porém essa é uma das mais conhecidas. Uma alternativa interessante para quando você não sabe ao certo a denominação do software, é digitar as primeiras letras do nome deste e pressionar a tecla Tab duas vezes no teclado para ele auto-completar até a denominação desejada aparecer. Arquivo sources.list Você viu no início deste artigo que o arquivo sources.list indica os locais ou repositórios onde o APT deve buscar pacotes. É possível indicar vários servidores, por isso é importante entender como esse arquivo funciona para acrescentar, ou se necessário, retirar repositórios. Ao abrir o arquivo sources.list (no editor de textos de sua preferência, como o emacs ou vi), você encontrará algo mais ou menos semelhante a: deb http://us.archive.ubuntu.com/ubuntu breezy main restricted universe multiverse deb-src http://us.archive.ubuntu.com/ubuntu breezy main restricted universe multiverse O sources.list contém uma lista de repositórios, sendo cada um adicionado linha por linha. O primeiro termo - deb - indica o tipo de pacote disponível naquele repositório. O termo "deb" é indicado porque esse é o tipo de arquivo usado como pacote. A alternativa é a extensão deb-src, que indica que o repositório oferece pacotes com código-fonte dos programas (útil a programadores e desenvolvedores). O termo seguinte é o endereço do servidor do repositório. Ele pode ser HTTP, FTP, file (arquivos locais), entre outros. No final da linha vem os atributos, que indicam, por exemplo, a que versão da distribuição o repositório se refere.

36


Note que você também encontrará várias linhas com o símbolo # em seu início. Neste caso, a linha será ignorada pelo APT, tal como se não existisse, permitindo desativar temporariamente repositórios ou a inclusão de comentários com orientações. Você poderá obter em fóruns, em sites oficiais de distribuições que usam APT ou em listas de discussão quais são os repositórios que valem a pena serem adicionados no sources.list de seu Linux. Usuários do Debian, por exemplo, contam com o endereço www.debian.org/distrib/packages para isso. É importante não esquecer de executar o comando apt-get update após alterar esse arquivo, do contrário, o sistema irá executar a versão antiga até ser encerrado e ligado novamente.

2.5.10 Finalizando Usuários acostumados com outros sistemas operacionais costumam dizer que instalar programas no Linux é uma tarefa difícil, o que não é verdade. O APT mostra-se muito intuitivo nessa tarefa e aprender a usá-lo requer pouco esforço, mesmo porque, com ele, não é preciso visitar um determinado site, baixar os pacotes e depois instalá-los; o APT conta com milhares de programas e, por isso, resume bastante o trabalho de instalação (dependendo do caso, ela baixará o software e uma janela com botões Next/Avançar aparecerá para você prosseguir com a instalação).

2.6 Configurando RAID no Linux Ao final deste artigo, o leitor vai aprender como configurar o RAID no Linux de forma prática. Este artigo funciona para qualquer distribuição que usa o mdadm. É importante salientar que as partições/discos precisam ser de tamanhos semelhantes.

Se você deseja segurança a pedida é RAID1 ou RAID5 (este último precisa de 3 HD’s 37


pelo menos), mas é possível utilizar RAID0 em casa para o ganho de performance: ele não lhe dará segurança, mas diminui o tempo de acesso aos discos. Por fim, software RAID é uma boa pedida tanto para pequenos servidores como para computadores caseiros, trazendo segurança e performance a estas máquinas.

2.6.1 Conhecimentos necessários É necessário um conhecimento intermediário no Linux ou saber como trabalhar com partições, saber usar um editor do sistema como vi ou nano. É necessário um computador com duas partições livres de pelo menos 1GB cada ou dois discos rígidos apenas para testes, ou até mesmo usar o dispositivo de loop do próprio linux, para criar arquivos de bloco, onde simulará as partições.

2.6.2 Definindo RAID Você quer ter redundância de dados? Quer aumentar o desempenho de acesso aos discos? Então, use RAID.

Redundant Array of Independent Disks. Traduzindo: Arranjo Redundante de Discos Independentes. É uma forma de você fazer arranjos entre discos para obter maior confiabilidade, maior capacidade de dados e também redução de tempo de acesso aos dados.

Então, três características do RAID:

1. Confiabilidade;

2. Desempenho;

3. Armazenamento.

38


2.6.3 Tipos de RAID Por Hardware - Através de controladoras especiais. O ideal é usar controladora e discos SCSI, devido a performance e segurança. Na maioria das vezes, usamos esta opção, pois, além de ser mais seguro, a performance é melhor. Claro que é bem mais caro, pois será necessários placas especiais e discos scsi.

Por Software - Através de módulos do kernel do Linux. Aqui, quem vai fazer o RAID é o kernel do Linux. Útil quando não temos discos scsi e nem controladoras especiais. Testei RAID via software com HD IDE e funciona de forma consistente.

Vamos implementar Raid via Software, pois existem casos que é necessário fazer desta forma.

Primeiro vamos aprender sobre os níveis de RAID existentes:

RAID LINEAR: é transformar vários discos em um único. Não tem redundância.

RAID-0: é igual ao linear. A grande diferença é que no RAID-0 o desempenho é melhor. Ele usa o conceito de Data Stripping -> segmentação de dados. Não é considerado o RAID verdadeiro.

RAID-1: mais conhecido como espelhamento (mirror). Este sim, tem tolerância a falhas. Os dados são duplicados em outro HD. Aqui, existe perda de 50%. Caso um disco falhe o outro estará com os dados duplicados.

RAID-2 e RAID-3: Este dois tipos raramente são utilizados. O Linux também não oferece suporte a RAID-3 por software. 39


RAID-4: Um disco guarda informações de paridade. Quando um disco falha os dados podem ser recuperados usando a informação de paridade.

RAID-5: Este é o modelo ideal. Mas as informações de paridade são guardadas em todos os discos. São necessários 5 discos.

2.6.4 Usando o mdadm para Configurar o Armazenamento Baseado no RAID e Multilocalidade

Similar a outras ferramentas contidas no pacote raidtools, o comando mdadm pode ser usado para executar todas as funções necessárias relacionadas à administração de conjuntos multi-dispositivos. Nesta seção mostramos como o mdadm pode ser usado para: • Criar um dispositivo RAID • Criar um dispositivo multi-localidade 2.6.4.1. Criando um Dispositivo RAID com mdadm Para criar um dispositivo RAID, edite o arquivo /etc/mdadm/mdadm.conf para definir valores DEVICE e ARRAY apropriados: DEVICE /dev/sda1,/dev/sdb1,/dev/sdc1,/dev/sdd1 ARRAY /dev/md0 devices=/dev/sda1,/dev/sdb1,/dev/sdc1,/dev/sdd1 Neste exemplo, a linha DEVICE está definindo os dispositivos SCSI seguintes: • /dev/sda1 • /dev/sdb1 • /dev/sdc1 • /dev/sdd1

A linha ARRAY define um dispositivo RAID (/dev/md0) composto pelos dispositivos SCSI definidos na linha DEVICE. 40


Antes de criar ou usar qualquer dispositivo RAID, o arquivo /proc/mdstat não exibe nenhum dispositivo RAID ativo, visualize utilizando cat /proc/mdstat: Personalities : read_ahead not set Event: 0 unused devices: none Obs.: depois do RAID criado visualize este arquivo novamente. Depois da edição do arquivo /etc/mdadm/mdadm.conf, explicado acima, use o comando mdadm da seguinte forma para criar um conjunto RAID 0: mdadm -C /dev/md0 --level=raid0 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 \ /dev/sdd1 Continue creating array? yes mdadm: array /dev/md0 started. Uma vez que tenha sido criado, o dispositivo RAID pode ser questionado a qualquer momento para o fornecimento de informações de estado. O exemplo seguinte exibe a saída do comando mdadm --detail /dev/md0: /dev/md0: Version : 00.90.00 Creation Time : Mon Mar 1 13:49:10 2004 Raid Level : raid0 Array Size : 15621632 (14.90 GiB 15.100 GB) Raid Devices : 4 Total Devices : 4 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Mon Mar 1 13:49:10 2004 State : dirty, no-errors Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0 Chunk Size : 64K Number Major Minor RaidDevice State 0 8 1 0 active sync /dev/sda1 1 8 17 1 active sync /dev/sdb1 2 8 33 2 active sync /dev/sdc1 3 8 49 3 active sync /dev/sdd1 UUID : 25c0f2a1:e882dfc0:c0fe135e:6940d932 Events : 0.1 41


O comando usado para criar o sistema de arquivo com ext3 é este: # mke2fs -j /dev/md0

Este comando verifica o número de verificações do sistema de arquivos: # tune2fs -c 20 /dev/md0

Criando um diretório para montar o RAID mkdir /mnt/raid1 mount -t ext3 /dev/md0 /mnt/raid1 cd /mnt/raid1

Neste momento, já é possível realizar testes no seu RAID, ou seja: copiar dados etc. Faça os testes. Este comando serve para dar um stop ao RAID, ou seja, pará-lo: mdadm --stop /dev/md0

mdadm –run /dev/md0

2.6.4.2 Editando o FSTAB para automatizar o RAID e montá-lo no boot Vamos colocar nosso Raid no fstab para caso, seja necessário fazer algum boot, ao ligar o Linux tudo já funcione automaticamente. Veja como é simples: vi /etc/fstab /dev/md0 /mnt/raid1 ext3 defaults 0 0 42


2.6.4.3 Criando um Dispositivo Multi-localidade com mdadm

Além de criar conjuntos RAID, o mdadm também pode ser usado para tirar proveito do hardware suportando mais de uma localidade de E/S para LUNs (drives de disco) SCSI individuais.

O objetivo do armazenamento multi-localidade é a disponibilidade contínua de

dados no caso de falha de hardware ou saturação de uma localidade. Como essa configuração contém diversas localidades (cada uma atuando como um controlador virtual independente) acessando um LUN (drive de disco) SCSI comum, o kernel do Linux detecta cada drive compartilhado uma vez "através" de cada localidade. Em outras palavras, o LUN (drive de disco) SCSI conhecido como /dev/sda também pode estar acessível como /dev/sdb, /dev/sdc e assim por diante, dependendo da configuração específica. Para fornecer um único dispositivo que possa permanecer acessível se um caminho de E/S falhar ou tornar-se saturado, o mdadm inclui um parêmetro adicional à opção level. Este parêmetro multipath instrui a camada md do kernel do Linux para que faça o redirecionamento de pedidos de E/S de um caminho para outro no evento de uma falha num caminho de E/S. Para criar um dispositivo multi-localidade, edite o arquivo /etc/mdadm.conf para definir os valores das linhas DEVICE e ARRAY que refletem a configuração de seu hardware. 2.6.4.4 Nota Ao contrário do exemplo RAID anterior (no qual cada dispositivo especificado em /etc/mdadm.conf deve representar drives de disco físicos diferentes), cada dispositivo deste arquivo refere ao mesmo drive de disco compartilhado. O comando usado para a criação de um dispositivo multi-localidade é similar àquele usado para criar um dispositivo RAID; a diferença é a substituição do parâmetro de um nível do RAID pelo parâmetro multipath. mdadm -C /dev/md0 --level=multipath --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 Continue creating array? yes mdadm: array /dev/md0 started. Obs.:A linha de comando do mdadm comando foi dividida em duas linhas devido à sua extensão. 43


Neste exemplo, o hardware consiste de um LUN SCSI apresentado como quatro dispositivos SCSI separados, cada um acessando o mesmo armazenamento por uma localidade diferente. Uma vez criado o dispositivo multi-localidade /dev/md0, todas as operações de E/S que façam referência a /dev/md0 são direcionadas para /dev/sda1, /dev/sdb1, /dev/sdc1 ou /dev/sdd1 (dependendo de qual localidade estiver ativa e operacional no momento). A configuração do /dev/md0 pode ser examinada em mais detalhes usando o comando mdadm --detail /dev/md0 para verificar se é , de fato, um dispositivo multi-localidade: /dev/md0: Version : 00.90.00 Creation Time : Tue Mar 2 10:56:37 2004 Raid Level : multipath Array Size : 3905408 (3.72 GiB 3.100 GB) Raid Devices : 1 Total Devices : 4 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Tue Mar 2 10:56:37 2004 State : dirty, no-errors Active Devices : 1 Working Devices : 4 Failed Devices : 0 Spare Devices : 3 Number Major Minor RaidDevice State 0 8 49 0 active sync /dev/sdd1 1 8 17 1 spare /dev/sdb1 2 8 33 2 spare /dev/sdc1 3 8 1 3 spare /dev/sda1 UUID : 4b564608:fa01c716:550bd8ff:735d92dc Events : 0.1 Uma outra característica do mdadm é a habilidade em forçar um dispositivo (seja um membro de um conjunto RAID ou uma localidade numa configuração multi-localidade) a ser removido de uma configuração em operação. No exemplo seguinte, o /dev/sda1 é marcado como falho, então é removido e finalmente adicionado de volta à configuração. Numa configuração multi-localidade, estas ações não impactariam nenhuma atividade de E/S ocorrendo no momento: # mdadm /dev/md0 -f /dev/sda1 mdadm: set /dev/sda1 faulty in /dev/md0 44


# mdadm /dev/md0 -r /dev/sda1 mdadm: hot removed /dev/sda1 # mdadm /dev/md0 -a /dev/sda1 mdadm: hot added /dev/sda1

2.7 Trabalhando com usuários, grupos e permissões

2.7.1 Adicionado usuário ao sistema adduser Adiciona usuário ao sistema.

# adduser Ronaldo

deluser Deleta usuário do sistema.

# deluser Ronaldo

chmod Usado para dar ou alterar permissões #chmod 777 arquivo.doc em arquivos e diretórios. 2.7.2 Entendendo permissões Obs.: Antes de dar permissões a arquivos ou diretóros entenda as máscaras? Veja abaixo: r=leitura w=escrita e x=execução: Nesse caso é mais prático mudar permissões pois utilizo apenas as letras de permissões, pois sei o que significa cada letra, veja quando utilizo a+wrx significa adicionar permissões, awrx tirar permissões a letra (a+ ou a-) significa a todos os usuários sintáxe: ( # chmod a+wrx <nome do arq. ou dir. ) ( # chmod a-wrx <nome do arq. ou dir. ) ( # chmod a-rx <nome do arq. ou dir. ) ( # chmod a-x <nome do arq. ou dir. ) Para dar permissões somente para o dono use a letra u (u+ ou u-) sintáxe: ( # chmod u+wrx <nome do arq. ou dir. ) ( # chmod u-wrx <nome do arq. ou dir. ) r=4 ;w=2; x=1 . Obs.: quando usa permissões para o dono é importante saber quem é o dono do arquivo ou diretório, estude melhor o comando que muda o dono: # chown a soma deles = 4+2+1= 7 que resulta na máscara = rwx (todas as permissões) é dividido de três em três nesse caso o primeiro 7 é dono, o segundo 7 é o grupo, o terceiro 7 é o usuário comum. 777=rwxrwxrwx a soma de 4+2=6 , no caso usar o chmod 666 = rw-rw-rw-(permissão de leitura e escrita). → Se não quiser da nenhuma permissão a sintáxe é : # chmod 000 <nome do arquivo ou diretório>. 000 = --- <significa nenhuma permissão> 45


→ Quando tiver á máscara com as iniciais (d,l, -) isto significa: d = diretório ou pasta; l = link simbólico; - = arquivos comuns. 2.7.3 Grupos: adicionando, deletando e alterando o dono groupadd Adiciona grupo

groupdel Deleta grupo

#groupadd paz

#groupdel paz

chown -R <nome do usuário.nome do grup # chown - R root.tecnologia /projeto /local> altera o dono gpasswd -a <nome de usuário> <nome do grupo> adiciona um usuário no grupo → Sintáxe: # gpasswd -a teste tecnologia gpasswd -d <nome do usuário> <nome do grupo> deleta um usuário no grupo → Sintáxe: # gpasswd -d teste tecnologia ls -l <ver arquivos diretórios> com suas máscaras de permissões, dono, grupo e data. ls -la <ver arquivos ocultos e diretórios> com suas máscaras de permissões, dono, grupo e data.

2.8 Determinando agendamento com o cron 2.8.1 Introdução

O "cron" é um programa usado para "agendar tarefas". Você pode programar um ou vários eventos no linux para serem executados numa certa periodicidade ou até mesmo em um exato dia, numa exata hora. Um uso bem comum do cron é o agendamento de tarefas 46


administrativas de manutenção do seu sistema e backup. Estas tarefas são programadas para todo dia, toda semana ou todo mês, serem automaticamente executadas através do crontab e um script shell comum. A configuração do cron geralmente é chamada de crontab. Os sistemas Linux possuem o cron sempre presente. Pelo menos eu nunca vi nenhuma distribuição que não incluísse o tão útil cron. A configuração tem duas partes: Uma global, e uma por usuário. Na global, que é o root quem controla, o crontab pode ser configurado para executar qualquer tarefa de qualquer lugar, como qualquer usuário. Já na parte por usuário, cada usuário tem seu próprio crontab, sendo restringido àpenas ao que o usuário pode fazer (e não tudo, como é o caso do root).

O cron implementa uma agenda de tarefas para cada usuário. Sendo assim o comando ou programa será executado sob o UID do usuário. O root pode determinar agendamento para se próprio e para usuários comuns. Depois de executar a tarefa agendada, o cron envia um e-mail para o usuário relatando a saída do que foi agendado, este e-mail seŕa enviado para o diretório /var/mail. O servidor cron deve estar rodando para que as tarefas sejam executadas. Para agendar as tarefas usamos o comando crontab com a sintaxe descrita a baixo: crontab [-u usuário] { -e | -l | -r } A opção -u permite que o superusuário agende tarefas para outros usuários, pois o comando su pode atrapalhar o crontab. Um usuário comum não precisa usar essa opção para especificar ele próprio. A opção -e edita o arquivo de tarefas agendadas pelo usuário. A formatação desse arquivo será descrita mais adiante. A opção -l lista o arquivo de tarefas agendadas pelo usuário. A opção -r apaga o arquivo de tarefas agendadas pelo usuário. Basicamente, para agendarmos uma tarefa deveremos editar o nosso arquivo “agenda” com o comando: crontab -e O formato de um comando do cron é em grande parte o padrão V7. Cada linha tem cinco campos de hora e data, seguidos por um comando. Os comandos são executados pelo 47


servidor cron quando os campos minuto, hora, e mês correspondem à hora atual, e quando pelo menos um dos campos de dia (dia do mês, ou dia da semana) correspondem ao dia atual. Os campos de hora e data são:

campo

valores permitidos

minuto

0-59

hora

0-23

dia do mês

0-31

mês

0-12 (ou nome)

dia da semana 0-7 (0 ou 7 é domingo, ou nome)

Podemos usar intervalos de número usando o hífen “-” (ex: 1-10), um asterisco “*” indica um intervalo do primeiro ao último valor permitido. Dentro do intervalo poderemos determinar o passo (incremento) com uma barra “/” (ex: 1-10/2 ou */2). Podemos, também, usar listas de números usando vírgula “,” (ex: 1,3,10). É interessante a possibilidade de mesclarmos intervalos e listas (ex: 1-10/2,15,20-22,30). Lembre-se que não são permitidos intervalos ou listas de nomes. Os nomes dos meses e dos dias da semana são as primeiras três letras dos nomes correspondentes em inglês. Veja as tabelas: Mês

Abrev. dia

Janeiro

Jan

Abrev.

Domingo Sun

Fevereiro Feb

Segunda Mon

Março

Mar

Terça

Tus

Abril

Apr

Quarta

Wed

Maio

Mai

Quinta

Thu

Junho

Jun

Sexta

Fri

Julho

Jul

Sábado

Sat

Agosto

Ago

Setembro Sep Outubro

Oct

Novembro Nov Dezembro Dec 48


Observação: o dia de execução de um comando pode ser especificado em dois campos (dia do mês/dia da semana). Se ambos os campos são determinados, isso é, diferentes de “*”, o comando será executado quando qualquer dos dois campos corresponder à data atual. Exemplos de entradas para o arquivo agenda: A linha abaixo copia todo o conteúdo do home do usuário para o disquete todo domingo às 13h e 40min. (backup de dados) 40 13 * * Sun cp $HOME/* ./floppy -R -f A linha abaixo apaga os arquivos core do home do usuário todos os dias à meia noite 0 0 * * * rm $HOME/core -f

2.8.2 Configurando o cron por usuário

Para configurar um crontab por usuário, utiliza-se o comando "crontab", junto com um parâmetro, dependendo do que você quiser fazer. Abaixo uma relação: root@linux:~# crontab -u usuário arquivo Comando Função crontab -e Edita o crontab atual do usuário crontab -l Exibe o atual conteúdo do crontab do usuário crontab -r Remove o crontab do usuário crontab -u Determina regras para um usuário

Se você quiser verificar os arquivos crontab dos usuários, você precisará ser root. O comando crontab coloca os arquivos dos usuários no diretório: /var/spool/cron/usuario Onde "usuario" corresponde ao usuário dono do arquivo crontab. Agora se você quiser editar o crontab global, este fica no arquivo "/etc/crontab", e só pode ser manipulado pelo root. E agora que já sabemos onde ficam os arquivos de 49


configuração, vamos estudar o formato da linha do crontab, já explicada antes que é quem vai dizer o que executar e quando. Vamos ver um exemplo: 0

4

*

*

*

who

Então como se pode ver, a linha é dividida em 6 campos separados por tabs ou espaço: Campo Função 1o.

Minuto

2o.

Hora

3o.

Dia do mês

4o.

Mês

5o.

Dia da semana

6o.

Programa pra execução

Todos estes campos, sem contar com o 6o., são especificados por números. Veja a tabela abaixo para os valores destes campos: Campo

Função

Minuto

0-59

Hora

0-23

Dia do mês

1-31

Mês

1-12

Dia da semana 0-6 (o "0" é domingo, "1" segunda, etc)

Então o que nosso primeiro exemplo estava dizendo? A linha está dizendo: "Execute o comando 'who' todo dia de todo mês sendo o dia qualquer dia da semana, às 4 horas e 0 minutos.". Vamos pegar mais exemplos para analisar: 1,21,41 *

*

*

*

echo "Meu crontab rodou mesmo!"

Aqui está dizendo: "Executar o comando do sexto campo toda hora, todo dia, nos minutos 1, 21 e 41". 30

4

*

*

1

rm -rf /tmp/*

Aqui está dizendo: "Apagar todo conteúdo do diretório /tmp toda segunda-feira, as 4:30 da manhã.". 50


45

19

1,15

*

*

/usr/local/bin/backup

Aqui está dizendo: "Executar o comando 'backup' todo dia 1 e 15 às 19:45.". E assim você pode ir montando inúmeros jeitos de agendamento possível. No arquivo do crontab global, o sexto campo pode ser substituído pelo nome do usuário, e um sétimo campo adicionado com o programa para a execução, como mostro no exemplo a seguir: 0-59/5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg Aqui está dizendo: "Executar o mrtg como usuário root, durante 5 e 5 minutos dos minutos 059. Ou seja, executar de 5 em 5 minutos o mrtg sempre.". Em alguma distribuições, os agendamentos mais comuns estão programados para serem executados. Veja as linhas abaixo: 01

*

*

*

*

root run-parts /etc/cron.hourly

02

4

*

*

*

root run-parts /etc/cron.daily

22

4

*

*

0

root run-parts /etc/cron.weekly

42

4

1

*

*

root run-parts /etc/cron.monthly

O programa "run-parts" executa todos os scripts executáveis dentro de um certo diretório. Então com essas linhas, temos diretórios programados para executar programas de hora em hora, diariamente, semanalmente ou mensalmente. Abaixo a tabela: Diretório

Período

/etc/cron.hourly

De hora em hora

/etc/cron.daily

Diariamente

/etc/cron.weekly Semanalmente /etc/cron.monthly Mensalmente

Então todos os arquivos executáveis dentro de cada diretório serão executados no seu correspondente período. Ou seja, posso colocar um certo conteúdo no arquivo "/etc/cron.daily/teste", depois torná-lo executável através do comando "chmod +x /etc/cron.daily/teste", e então ele será executado todo dia as 4:02 da manhã.

51


2.8.3 Resumo de aprendizagem do cron

Veja como funciona cron: Devemos criar com o usuário root um arquivo com as regras ou seja, o agendamento: Sintáxe: root@linux:~# touch regras → criando o arquivo. root@linux:~# ls → verificando ou listando. regras root@linux:~# vi regras → editando o arquivo com o editor vi escrevendo o seguinte: #min|hora|dia|mês|semana|comando 0-59/5 * * * * cp /home/teste /mnt/disco; depois salve o arquivo em um local de sua preferência. No meu caso salvei em /home/usuario/regras Neste exemplo quem vai executar o arquivo é um usuário comum, o root apenas criou o arquivo denominado regras. Podemos determinarmos que o root execute também este arquivo se quisermos. Agora vamos determinar que um usuário comum chamado de usuario execute as regras agendadas no arquivo criado pelo root. Ainda como root devemos usar o seguinte comando: root@linux:~# crontab -u usuario /home/teste/regras → determinado que o usuário comum execute as regras. Agora saímos de root dando exit, e ficamos como usuário comum: usuario@linux:~$ crontab -l → Aqui estamos verificando se as regras estão ativas para este usuário e não para root. Para removermos as tais regras determinada pelo root, basta usar o seguinte comando como usuário comum mesmo. Veja: usuario@linux:~$ crontab -r

52


2.9 Usando o gnupgp (GPG) 1) Instalando o PGP nas distribuições Debian/ubuntu:

apt-get install gnupg 2)Criando um par de chaves pública/privada:

gpg --gen-key 3) Encriptando dados:

gpg -e arquivo.txt (usando compactação) --> Resultado: arquivo.txt.gpg gpg -e -a arquivo.txt( sem compactação) --> Resultado: arquivo.txt.asc gpg -r dourado -e arquivo.txt (chave pública do usuário "dourado" no seu chaveiro, somente ele abrirá o arquivo, veja adicionando chave públicas seção 8) 4) Decriptando dados com o gpg:

gpg -d arquivo.txt.asc >arquivo.txt gpg -d arquivo.txt.gpg >arquivo.txt 5) Assinando arquivos Assinar um arquivo é garantir que você é a pessoa que realmente enviou aquele arquivo. gpg -s arquivo.txt gpg -s --clearsign arquivo.txt 6) Checando assinaturas Verificar quem nos enviou o arquivo é realmente quem diz ser e se os dados foram de alguma forma alterados. deverá ter a chave pública do usuário. gpg --verify arquivo.txt.asc

53


Se a saída for "Assinatura Correta", significa que a origem do arquivo é segura e que ele não foi de qualquer forma modificado. gpg --verify arquivo.txt.gpg Se a saída for "Assinatura INCORRETA" significa que ou o usuário que enviou o arquivo não confere ou o arquivo enviado foi de alguma forma modificado. 7) Extraindo sua chave pública do chaveiro para distribuí-la: gpg --export -a usuario >chave-pub.txt 8) Adicionando chaves públicas ao seu chaveiro pessoal: gpg --import chave-pub-usuario.txt 9) Listando chaves de seu chaveiro: gpg --list-keys 10) Apagando chaves de seu chaveiro: gpg --delete-key usuario 11) Mudando sua FraseSenha Execute o comando: gpg --edit-key usuário Quando o programa entrar em modo de comandos, digite passwd. Será lhe pedida a "Frase Senha" atual e a nova "Frase Senha". Explore o programa digitando "?" para exibir todas as opções disponíveis. 12) Assinando uma chave digital A assinatura de chaves é um meio de criar laços de confiança entre usuários PGP. Assinar uma chave de alguém é algo sério, você deve ter noção do que isto significa e das consequências que isto pode trazer antes de sair assinando chaves de qualquer um. O próprio teste para 54


desenvolvedor da distribuição Debian requer como primeiro passo a identificação do candidato, caso sua chave pgp seja assinada por algum desenvolvedor desta distribuição, imediatamente o teste de identificação é completado. A partir disso você deve ter uma noção básica do que isto significa. Para assinar uma chave siga os seguintes passos: 1. Importe a chave pública do usuário (veja Adicionando chaves públicas ao seu chaveiro pessoal, Seção 8). 2. Execute o comando gpg --edit-key usuario (onde usuario é o nome do usuário/email/IDchave da chave pública importada). 3.Digite list, e selecione a chave pública (pub) do usuário com o comando uid [numero_chave]. Para assinar todas as chaves públicas do usuário, não selecione qualquer chave com o comando uid. 4.Para assinar a chave pública do usuário digite sign, será perguntado se deseja realmente assinar a chave do usuário e então pedida a "FraseSenha" de sua chave privada. 5.Digite "list", repare que existe um campo chamado trust: n/q no lado direito. O primeiro parâmetro do "trust" indica o valor de confiança do dono e o segundo (após a /) o valor de confiança calculado automaticamente na chave. As seguintes possuem o seguinte significado: o

- - Nenhum dono encontrado/confiança não calculada.

o

e - Chave expirada/falha na checagem de confiança.

o

q - Quando não conhece o usuário.

o

n - Quando não confia no usuário (é o padrão).

o

m - Pouca confiança no usuário.

o

f - Totalmente confiável.

o

u - Indiscutivelmente confiável. Somente usado para especificar a chave pública do

próprio usuário. O valor de confiança da chave pode ser modificado com o comando trust e selecionando uma das opções de confiança. Os valores de confiança para a chave pública pessoal é -/u (não é necessário calcular a confiança/indiscutivelmente confiável). 13) Listando assinaturas digitais Execute o comando gpg --list-sigs para listas todas as assinaturas existentes no seu chaveiro. Opcionalmente pode ser especificado um parâmetro para fazer referência a assinatura de um

55


usuário:gpg --list-sigs usuario. O comando gpg --check-sigs adicionalmente faz a checagem de assinaturas. 2.10 Entendendo dispositivos de loop (loop0 a loop7) Dispositivos de “Loop” (Loop devices, loopback devices) são drivers dedispositivo que permitem que arquivos de imagens (“images files”) sejam montados como se fossem dispositivos de blocos normais. Quando montamos um arquivo “iso”, utilizando o comando “mount”Exemplo:

# mount -o loop -t iso9660 mp3.iso /mnt/iso Montamos uma imagem iso que contém músicas no formato mp3(o arquivo chamadase “mp3.iso”), dentro de um diretório chamado “/mnt/iso”. A partir desse momento, um “ls /mnt/iso” irá mostrar todos os arquivos que estão dentro do sistema de arquivos contido na imagem.

2.10.1 Criando um volume de dados Um volume de dados quando montado com a ferramenta loop escolhida (loop0 a loop7), simula uma partição real no sistema, onde possa criar diretórios, arquivos, dentro desse volume. Um ponto forte de um volume é que você possa transportá-lo para outra máquina, montá-lo e alterá os arquivos contidos nesse volume, como se fosse uma partição presente no computador. Pois o mesmo como já dito, depois de montado se comporta como um dispositivo de blocos normal, e pode até mesmo usar criptografia para proteger os dados, explicado mais adiante. Um volume de dados pode ter o tamanho que desejar. Porém sempre gosto de criá-los seguindo o tamanho de CD's e DVD's, isso no caso de transportá-los para Máquinas Linux, é mais comodo. O exemplo acima mostra como montar uma imagem, isso todos que trabalham

56


com linux já sabem. Agora vamos aprender a criar arquivos de bloco, no momento sem criptografia. Para tal procedimento necessitaremos das ferramentas “dd” e “losetup”. Vamos criar um arquivo com o tamanho desejado. Isto é feito com o comando “dd” e o dispositivo “zero” (/dev/zero):

# dd if=/dev/zero of=volume1 bs=1M count=700 Criamos um arquivo chamado “volume1” dentro do diretório home do usuário. Esse arquivo será usado para armazenar dados utilizando o sistema de arquivo ext3 com um tamanho máximo de 700M. Mas antes que um sistema de arquivo possa ser criado no nosso “volume1”, devemos fazer com que o nosso volume se comporte como um sistema de bloco. Isto é feito com o comando “losetup”. Assim: # losetup /dev/loop0 volume1 Existem 8 possibilidades de montar dispositivos de loop ao mesmo tempo, contados apartir de “loop0 a loop7”, por isso você precisa ter certeza que o dispositivo que deseja utilizar não esteja em uso. Para isso podemos utilizar o comando que nos permite ver os dispositovos de loop em uso: # losetup -a # losetup /dev/loop0 /home/usuario/volume1 Agora que “/dev/loop0” é um dispositivo de bloco legítimo, comportando como uma partição no computador, então vamos formatá-la, para isso utilizaremos o “mkfs.ext3” para criar o sistema de arquivos “ext3”: # mkfs.ext3 /dev/loop0 O resultado deve ser algo do tipo: mke2fs 1.40.2 (12-Nov-2009) 57


Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 16 inodes, 100 blocks 5 blocks (5.00%) reserved for the super user First data block=1 1 block group 8192 blocks per group, 8192 fragments per group 16 inodes per group

Writing inode tables: done

Filesystem too small for a journal Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 24 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. * Com o arquivo de imagem criado, podemos monta-lo escolhendo um ponto de montagem com o comando “mount”: lembrando que um ponto de montagem é um diretóro no computador, caso deseje criar um ponto faça: # mkdir /mnt/imagem/ # mount /dev/loop0 /mnt/imagem/ Acesse-o ou dê um *ls* irá confirmar que a imagem está montada, mostrando o diretório lost+found: De agora em diante vc poderá criar arquivos dentro do seu volume ou copiá-los de outro lugar

58


para o seu volume e alterá-los se necessáro. # ls /mnt/imagem lost+found Para desmontalo use: # umount /dev/loop0 Depois o comando abaixo para libera o dispositivo de loop: # losetup -d /dev/loop0

2.10.1 Criando um volume de dados com criptografia Muito útil para proteger dados quando transportados pela internet ou correio. Se houver um interceptador este deverá ter a senha para manipular os arquivos. Use senha longas alfanuméricas para maior segurança. Aviso: não esquecer a senha, não há possibilidade de alterá-la, caso necessite, um novo volume deve ser criado, e depois só motar os dois e copiar os dados de um para o outro. 1. → Primeiro criamos o arquivo volume de 700MB já explicado:

# dd if=/dev/zero of=volume1 bs=1M count=700 2. → É necessário carregar os modulos de criptografia: # modprobe des # modprobe cryptoloop 3. → Agora é o uso da ferramenta losetup com os argumentos de criptografia: # losetup -e aes /dev/loop0 ./volume1 “-e” significa encriptar e “aes” é o algoritmo criptográfico, nesse momento pedirá uma senha, informe a senha, é pedida uma única vez. Importante: Não á possibilidade de alterá-la depois, não pode esquecê-la. Se de alguma forma

59


esquecê-la ou tiver que alterá-la não existirá esta possibilidade, seus dados inseridos nesse volume ficarão presos áte que lembre a senha. 4. → Agora formate-o no sistema de arquivo desejado. Exemplo o ext3. # mkfs.ext3 /dev/loop0 5. → Agora monte-o: # mount /dev/loop0 /mnt/imagem/ 6 → Quando desejar desmontá-lo use: # umount /dev/loop0 Este comando é para libera o dispositivo de loop0 # losetup -d /dev/loop0

Referências Bibliográficas Sites de dicas linux: •

http://www.vivaolinux.com.br

http://www.clubedohardware.com.br

http://www.guiafoca.org

http://www.hunder-linux.org.br

BR-Linux

• • • •

The Linux Home Page at Linux Online Linux.com: The Enterprise Linux Resource The Linux Documentation Project O que é uma distribuição de Linux

60


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.