comandos e sintaxes
DESCRIPTION
Comandos; terminal; linuxTRANSCRIPT
1
Comandos & Sintaxes
LINUX
Ronaldo da Paz Dourado
Instruções teóricas para todas distribuições
1.ª Edição
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: [email protected]
2
SumárioNotas Iniciais.............................................................................................................................................................2Direitos autorais .......................................................................................................................................................2Introdução..................................................................................................................................................................6
O que é Linux.................................................................................................................................................6Linux ou GNU/Linux?...................................................................................................................................6O kernel Linux...............................................................................................................................................6O sistema operacional Linux (ou GNU/Linux)..............................................................................................8
1 Estudo introdutório...............................................................................................................................................11Terminal Virtual (console).................................................................................................................................12Caracteres Curingas...........................................................................................................................................13Tipos de Execução de comandos/programas.....................................................................................................151.1 Manipulando arquivos e diretórios..............................................................................................................16
cd .................................................................................................................................................................16pwd ..............................................................................................................................................................16../..................................................................................................................................................................16./...................................................................................................................................................................16cp .................................................................................................................................................................17dir ................................................................................................................................................................17du .................................................................................................................................................................17ls ..................................................................................................................................................................17ls -l ..............................................................................................................................................................17ls -la .............................................................................................................................................................17ls -lha ...........................................................................................................................................................17mkdir -p .......................................................................................................................................................17touch.............................................................................................................................................................18mv ...............................................................................................................................................................18rm -rdf .........................................................................................................................................................18chmod +x ....................................................................................................................................................18chattr ............................................................................................................................................................18split ..............................................................................................................................................................18cat ................................................................................................................................................................18find ..............................................................................................................................................................19ln -s ..............................................................................................................................................................19who ..............................................................................................................................................................19whoami.........................................................................................................................................................19history .........................................................................................................................................................19
1.2 Compactando arquivos................................................................................................................................20zip ................................................................................................................................................................20unzip.............................................................................................................................................................20tar ................................................................................................................................................................207z .................................................................................................................................................................20
1.3 Editores do sistema......................................................................................................................................21nano..............................................................................................................................................................21vi..................................................................................................................................................................21Explicando melhor o editor vi......................................................................................................................21
2. Sistema................................................................................................................................................................232.1 Comandos do sistema..................................................................................................................................23
date -s ..........................................................................................................................................................23clear .............................................................................................................................................................23uname -a.......................................................................................................................................................23cal ................................................................................................................................................................23lshw..............................................................................................................................................................23fdisk..............................................................................................................................................................23
3
Criando partições com o fdisk ....................................................................................................................24mount ..........................................................................................................................................................25Montando uma imagem de extensão .iso, ...................................................................................................25mkfs .............................................................................................................................................................26df -h..............................................................................................................................................................26Fazendo Backup da MBR utilizando o dd...................................................................................................26
2.2 Entendendo processos..................................................................................................................................27top................................................................................................................................................................27ps aux...........................................................................................................................................................27kill ...............................................................................................................................................................27pstree ...........................................................................................................................................................27
2.3 Memória RAM e administração da memória SWAP...................................................................................27free -m .........................................................................................................................................................27Administrando a swap..................................................................................................................................28
2.4 Usando os programas: genisoimage; dd; cdrecord; cdparanoia; lame.........................................................282.4.1 Criando imagens ISO apartir de dados no computador......................................................................282.4.2 Fazendo cópias de CD's e DVD's de dados........................................................................................292.4.3 Gravando um CD/DVD apartir de uma imagem ISO.........................................................................302.4.4 Gravando CD's de músicas tradicionais via linha de comando..........................................................312.4.5 Convertendo CD's em formato mp3...................................................................................................312.4.6 Gravando CD's de áudio e dados juntos.............................................................................................32
2.5 Entendendo o apt-get...................................................................................................................................322.5.1 Introdução ..........................................................................................................................................322.5.2 Comandos afins do apt-get..................................................................................................................322.5.4 Como utilizar o apt-get ?.....................................................................................................................332.5.5 Instalando pacotes...............................................................................................................................342.5.6 Removendo pacotes com o apt-get.....................................................................................................352.5.7 Atualizando pacotes com o apt-get ....................................................................................................352.5.8 Descobrindo nomes de pacotes...........................................................................................................362.5.9 Mostrando detalhes de um pacote ......................................................................................................372.5.10 Finalizando........................................................................................................................................38
2.6 Configurando RAID no Linux ....................................................................................................................382.6.1 Conhecimentos necessários.................................................................................................................392.6.2 Definindo RAID..................................................................................................................................392.6.3 Tipos de RAID ...................................................................................................................................402.6.4 Usando o mdadm para Configurar o Armazenamento Baseado no RAID e Multi-localidade...........412.6.4.1. Criando um Dispositivo RAID com mdadm...................................................................................412.6.4.2 Editando o FSTAB para automatizar o RAID e montá-lo no boot.................................................432.6.4.3 Criando um Dispositivo Multi-localidade com mdadm...................................................................442.6.4.4 Nota..................................................................................................................................................44
2.7 Trabalhando com usuários, grupos e permissões.........................................................................................462.7.1 Adicionado usuário ao sistema............................................................................................................462.7.2 Entendendo permissões.......................................................................................................................462.7.3 Grupos: adicionando, deletando e alterando o dono...........................................................................47
2.8 Determinando agendamento com o cron.....................................................................................................472.8.1 Introdução...........................................................................................................................................472.8.2 Configurando o cron por usuário........................................................................................................502.8.3 Resumo de aprendizagem do cron......................................................................................................53
2.9 Usando o gnupgp (GPG).............................................................................................................................542.10 Entendendo dispositivos de loop (loop0 a loop7)......................................................................................57
2.10.1 Criando um volume de dados............................................................................................................572.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 “Unix-
5
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 usa-la 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
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.
$ ls -la; date; cal
nautilus → permissão total na janela
que se abre no modo gráfico, depois
fechada tudo normal.
# nautilus
sudo su → dar permissão de usuário
root ao usuário logado.
$ sudo su
man → Fundamental para visualizar
manual de determinado comando.
$ man ls
1.1 Manipulando arquivos e diretórios
cd
Acessa diretórios.
$ cd /home
pwd
Mostra caminho de diretório.
$ pwd
../
Retorna a um nível anterior.
root@linux:/home/usuario/exemplo # ls ../
obs.: listará os arquivos de usuário e não do
diretório exemplo.
./root@linux:/home/usuario/exemplo #
./configure
15
Determina algo no local.obs.: ideal para ativar scripts
cp
Copia arquivos ou diretórios.
$ cp -r minhas-imagens /home/album
Obs.: todos os diretórios entre chaves estão
no / e separados por vírgula.
# cp --preserve -R /
{home/user/test,home/user/videos,/etc}
/home/user/backup
dir
Usado listar arquivos e diretórios.
$ dir -la
du
Lista diretórios e mostra tamanho de
arquivos ou diretórios.
$ du -h; du -h arquivo
ls
Lista arquivos.
$ ls
ls -l
Lista arquivos visualizando o dono
e o grupo e suas permissões.
$ ls -l
ls -la
Lista arquivos ocultos e motra o
dono, grupo e permissões.
$ ls -la
ls -lha
Todas as funções dos ls anteriores,
porém este mostra o tamanho dos arquivos.
$ ls -lha
mkdir -p
Cria árvore de diretórios, obdecendo
o fechamento das chaves.
# mkdir -p teste01/{teste02,teste03/
{teste04,teste05}}
16
touch
Usado para criar arquivos vazios
#touch nome.txt
mv
Renomeia arquivos e também move
se necessário para outro diretório.
# mv arquivo.do file.doc
rm -rdf
Remove arquivos ou diretórios.
# rm -rdf diretório; arquivo.doc
chmod +x
Torna arquivos em executáveis.
# chmod +x <nome do arquivo>
chattr
Protege arquivos, usa argumento +i
para proteger e -i desfaz a proteção).
Depois de inserir a proteção nem mesmo o
usuário root pode alterar o arquivo, somente
quando desfeita.
#chattr +i arquivo; chattr +i -R diretório
split
Quebra arquivos veja o manual
digitando man split no terminal.
Sintáxe: quebrando um arquivo de vídeo de
30MB em três pedaços de 10MB:
# split -b 10m homem_aranha.avi aranha.x
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
# cat aranha.x* > homem_aranha2.avi
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
comando man e estude detalhadamente o
comando, para ver seus argumentos.
# find -name arquivo
ln -s
Usado para criar link's para
arquivos, scripts, diretórios.
Lembre da permissões, estude permissões de
arquivos.
# ln -s nome_do_script /bin/nome_do_script
who
Mostra usuário logado e o nome do
terminal que está logado. Informando
horários de inicialização. Veja man who. E
estude seus atributos.
$ who
whoami
Mostra usuário
$ whoami
history
Visualiza histórico de comandos
usados, ou seja, manipulados pelo usuário.
Para visualizar o histórico por pausa, use o
atributo |more. Para limpa o use history
acrescentando o atributo -c
$ history
$ history |more
$ history -c
18
1.2 Compactando arquivos
zip
Zip é um compactador padrão, ou
seja, o mais conhecidos dos formatos de
compressão é zip.
-r caso for um diretorio para compressão,
-e significa que uma senha será solicitada,
caso não queira uma senha não use;
-v de verbose para ver o andamento;
#zip -r -e -v educativos.zip
/home/usuario/educativos
unzip
É usado para descompactar arquivos
zip's e visualizá-los o que possui em seu
interior.
#unzip educativos.zip
#unzip -v educativos.zip
tar
É um outro compactador muito
eficiente, porém não usa senha.
#tar -cvvf educativos.tar.gz
/home/usuario/educativos
Para descompactar os arquivos tar.gz use o
comando:
#tar -xvvf educativos.tar.gz
7z
É um compactador bastante
eficiente, com possibilidade de uso de senha.
Argumentos:
a → adicionada;
e → extrai somente arquivos;
x → extrai arquivos obedecendo árvore de
Compacatando o diretório educativos
#7z a educativos.7z ./educativos
Para descompactar os arquivos 7z use o
comando:
#7z x educativos.7z
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
sistema.
#nano arquivo
#man nano
vi
É um programa editor do sistema
utilizado para criar ou editar scripts para o
sistema.
# vi arquivo
# man vi
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 quando pressionamos a tecla < i >.
b) Modo de comando 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 elimina a linha corrente, permitindo a inclusão imediata de uma nova linha
ncc 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-do-
arquivo>, 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.
# date -s "12:00"; date -s "02/05/2009"
clear
Usado para limpar a tela, porém as combinações Ctrl + L, é bem mais prático.
$ clear
uname -a
Visualiza a versão do kernel.$ uname -a
cal
Visualiza calendário, se digitado só cal , mostra o mês com dias da semana, se expecíficado o ano, mostra o calendário daquela época.
$ cal $ cal 1990
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
Formata partição ou dispositivos de dados.
# mkfs.ext3 /dev/sda3
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.sfArquivo 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.
$ top
ps aux
Mostra processos ativos.
$ ps aux
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 sub-
diretó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.isocaso 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 -BPara extrai uma faixa específica use:
# cdparanoia 2 faixa.wavPara extrai um grupo de faixas use:
# cdparanoia 2-4O 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 *.mp3Obs.: 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 Multi-localidade
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 setEvent: 0unused 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/sdd1Continue creating array? yesmdadm: 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.00Creation Time : Mon Mar 1 13:49:10 2004Raid Level : raid0Array Size : 15621632 (14.90 GiB 15.100 GB)Raid Devices : 4Total Devices : 4Preferred Minor : 0Persistence : Superblock is persistent
Update Time : Mon Mar 1 13:49:10 2004State : dirty, no-errorsActive Devices : 4Working Devices : 4Failed Devices : 0Spare 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/sdd1Continue creating array? yesmdadm: 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.00Creation Time : Tue Mar 2 10:56:37 2004Raid Level : multipathArray Size : 3905408 (3.72 GiB 3.100 GB)Raid Devices : 1Total Devices : 4Preferred Minor : 0Persistence : Superblock is persistent
Update Time : Tue Mar 2 10:56:37 2004State : dirty, no-errorsActive Devices : 1Working Devices : 4Failed Devices : 0Spare 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 em arquivos e diretórios.
#chmod 777 arquivo.doc
2.7.2 Entendendo permissões
Obs.: Antes de dar permissões a arquivos ou diretóros entenda asmá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, a-wrx 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
#groupadd paz
groupdel Deleta grupo
#groupdel paz
chown -R <nome do usuário.nome do grup /local> altera o dono
# chown - R root.tecnologia /projeto
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 Abrev.
Janeiro Jan 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 0-
59. 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/e-
mail/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 chamada-
se “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