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

LINUX SYSTEM ENGINEER

Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br


28/08/2006 aula 1
Origem do Linux:
UNIX a origem de tudo, mas depois que passou a ser pago, surgiu a
Free Software Foundation que lanou o GNU (GNU = Gnu is Not Unix).
O Linux vem do Minix a ltima verso do kernel a 2.6.
Ver www.compartilhando.org jpoeta / shakespeare - site de hackers
LINUX STANDARD BASE (LBS) padronizao para as distribuies.
FILE HIERARCHY SYSTEM (FHS) definio da estrutura de diretrios,
ltima verso 2.3.
GENERAL PUBLIC LIENSE (GPL) ltima verso 2.
Ver www.vau.com e www.mandriva.com.br site com informaes sobre
certificao.
Verses do kernel:
2.4.33 2.4 grandes modificaes; segundo dgito par (4)=verso
estvel, mpar=verso instvel (ltima verso instvel 2.3.75); terceiro
nmero: patch.
A verso 2.4 j acabou, no ser mais modificada, j foi lanada a verso
2.6.17.2 2.6 grandes modificaes (major); 17 srie; 2 atualizao.
Ver www.kernel.org site do kernel do Linux.
Verso instalada no Mcury: Debian GNU/LINUX 2.4.27.2
No GRUB edit acrescentar "vga=701 na linha de comando
"/boot/vmlinuz-2.4.17-2-386 root/dev/hda1 ro para configurao de
vdeo 1024x768 ou "vga=788 para 800x600.
User root, password senhasenha.
Minha mquina: debian 14, IP 10.11.1.14, DNS 10.11.1.254, Gateway
10.11.1.254.
"debian14~# - ~ significa diretrio pessoal do usurio e # que o usurio
o root, se fosse outro usurio, o smbolo seria $.
Para sair do sistema:
~# logout
~# exit
~# Ctrl + D
shell o interpretador de comandos. O bash o padro do Linux, existem
tambm KSH, TSH, ASH, CSH. Tem as facilidades de history (setinha) e
completion (Tab).
Desligando o sistema: ~# halt
Reiniciando o sistema: ~# reboot
shutdown desliga oo reinicia o sistema; pode enviar mensagens a
todos os usurios.
-h desliga o sistema
-r reinicia o sistema
1
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
-k apenas testa
now executa a ao imediatamente
~# shutdown -h 16:00 "manuteno
16:00 = hora de desligar e "manuteno = texto da mensagem
~# shutdown -r +5 "manuteno
+5 = reiniciar daqui a 5 minutos
~# shutdown -k = testar apenas
~# shutdown -kr +5 "testando
mostra mensagem "testando a cada minuto dos 5 prximos, mas no
reinicia.
Cancelar a execuo de um comando: Ctrl + C.
Listar o contedo de um diretrio: ~# ls (pode ser tambm ~# dir)
-l lista em colunas
-a lista todos, inclusive os arquivos ocultos.
Arquivos ocultos tm um ". no incio do nome.
~# pwd mostra o diretrio correte
o home do usurio root /root.
Mudar de diretrio:
# cd /var/log (absoluto, a partir da raiz)
# cd var/log (relativo, a partir do diretrio corrente)
referncias: ao diretrio atual: `., ao diretrio pai: `..
ir para o diretrio pessoal ou do usurio corrente:
# cd ~ ou # cd .
Criar diretrio: # mkdir
# mkdir dir1 (cria abaixo do diretrio corrente)
# mkdir ~/dir1 (cria abaixo do diretrio pessoal)
# mkdir p dir2/dir3 (cria o diretrio pai caso ele no exista)
Remover diretrio: # rm
-r remove recursivamente o contedo do diretrio
-f fora a remoo sem perguntar
# rm rf dir2
2
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
29/08/2006 aula 2
Criar os seguintes diretrios:
dir1
dir2
dir3
dir4
dir5
dir6
dir7
mkdir p dir1/dir3/di5/dir6/dir7
mkdir dir1/dir2
mkdir dir1/dir3/dir4
touch altera a data e a hora de criao de um arquivo, caso o arquivo
no exista ele ser criado.
#touch teste.txt
Extenso de arquivo no e obrigatria no Linux.
Nome de arquivo "case sensitive e pode ter at 255 caracteres.
cp - copiar o arquivo para o dir6
~#cp teste.txt dir1/dir3/dir5/dir6
No precisa dar o caminho porque o arquivo est no diretrio atual, o
pessoal do root, que pode ser representado por:
/root/teste.txt ou ~/teste.txt
Copiar com outro nome:
~# cp teste.txt dir1/dir3/dir4/sugestao.txt
Mover arquivo ou diretrio: ~# mv teste.txt ~/dir1
O comando mv tambm renomeia: ~# mv teste.txt novoteste.txt
FHS no diretrio raiz: /# ls -lF
/bin arquivos binrios do sistema, todos os usurios tm acesso.
/bin# ls F
Os arquivos com * aps o nome so binrios executveis e com @ so
links. O parmetro F mostra o tipo de arquivo.
/boot contm as imagens do kernel e os arquivos de boot loader (GRUB
ou LILO)
config-2.4.27-2-386 (arquivo de configurao de compilao do
kernel)
3
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
grub/
initrd.img-2.4.27-2-386 (imagem inicial RAM disk)
system-map-2.4.27-2-386 (mapeamento do kernel - smbolos)
vmlinuz-2.4.27-2-386 (kernel)
grub/menu.lst configurao do gerenciador de boot
/dev dispositivos (devices)
/etc arquivos de configurao e scripts de inicializao do sistema
/home contm os diretrios pessoais de todos os usurios, exceto o
root
/lib bibliotecas utilizadas pelos binrios armazenados em /bin e /sbin;
contm tambm os mdu;los (drivers) do kernel
/lost+found arquivos recuperados pelo programa FSCK (o scandisk do
Linux)
/media dispoditivos removveis
/mnt ponto de montagem; o sistema de arquivos do Linux muito
flexvel e permite montar vrios sistemas em pontos de montagem.
Win 98 VFAT / FAT32
Win XP NTFS
/opt pacotes opcionais, programas que no fazem parte da distribuio
/proc sistema de arquivo do kernel
~# cat exibe o contedo de um arquivo e tambm utilizado para
concatenar arquivos.
/proc # cat cpuinfo
/proc # cat dma
/proc # cat meminfo
/root diretrio pessoal do superusurio
/sbin comandos de admnistrao do sistema, somente o root tem
acesso.
/srv outros pontos de montagem. Samba smb
/tmp arquivos temporrios; seu contedo apagado a cada
inicializao.
/usr programas da distribuio so armazenados nesta estrutura de
4
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
diretrio.
/var arquivos variveis; arquivos de log, e-mail, arquivos dos
gerenciadores de pacotes, servidor web e proxy.
~# date mostra data e hora do sistema
acertar data e hora:
~# date 082911512006 (msdiahoraminutoano)
~# date s "08/29/2006 1151 (string ms/dia/ano horaminuto)
~# cal mostra o calendrio do ms atual
~# cal 12 2006 mostra o calendrio de dezembro de 2006-09-05
Obtendo ajuda:
--help alguns programas mostram uma pequena ajuda.
man programa utilizado para obter ajuda on line de alguns programas;
dividido em 9 sees e armazenado em /usr/share/man (prova 102)
~# man man
sees:
1 bin programas binrios do sistema (/bin), comandos do shell
2 sys chamadas do sistema (kernel)
3 lib chamadas das bibliotecas
4 dev arquivos especiasi, como os armazenados em /dev
5 conf arquivos de configurao e algumas convenes
6 games jogos
7 misc qualquer programa que no se encaixe em outra seo
8 adm cmandos relacionados administrao do sistema;
normalmente somente o root tem acesso
9 kernel rotinas no padronizadas do kernel (ksoftirqd)
~# cat /etc/passwd
~# man 5 passwd o 5 se refere seo de configuraes que cont o
manual do comando
~# man 5 fstab informaes estticas sobre arquivos de sistema
info mantido pelo projeto GNU, cobre grande parte dos programas
~# info grub
apropos busca nas "manpages pelo nome e descrio do comando
~# apropos mail
whatis busca nas "manpages apenas na descrio do comando
Documentao de programas: /usr/share/doc
Buscar coisas de Linux em www.google.com.br/linux
5
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
30/08/2006 aula 3
Ver brindes em www.linuxmall.com.br
Terminais tty (teletype) 6 terminais
Ctrl + Alt + F2 - acesso ao tty2 a partir da interface grfica
Alt + F2 - acesso ao tty2 a partir de outro terminal
Ctrl + Alt + F2 - acesso interface grfica a partir de um terminal
Linux multitarefa. Podem ser configurados mais terminais. S existem
12 teclas de funo (F1 a F12), mas se forem necessrios mais terminais,
usa-se o comando:
chvt muda para o terminal especificado (change virtual terminal)
~# chvt 30
alias cria um atalho para comandos
~# alias la=ls -la
unalias remove um atalho
~# unalias la=ls -la
getty cria um terminal virtual (pode no existir em todas as
distribuies)
~# getty 38400 tty30 &
38400 bps
deallocvt desaloca da memria terminal no utilizado.
Condutor e Redirecionadores
pipe (|) utilizado para conectar dois programas; pega a sada de um e
passa para a entrada de outro.
~# ls | more
(0) stdin < entrada padro
(1) stdout > sada padro
(2) stderr 2> sada de erro
Criar um arquivo e escrever nele:
~# cat > teste.txt para finalizar Ctrl + D
Enviar o arquivo por e-mail:
~# mail root@localhost < teste.txt
O e-mail vai para o diretrio /var/mail arquivo chamado mail.
~# cat mail - mostra o contedo de teste.txt
/var/spool/mail aponta para /var/mail da distribuio Debian por questo
de compatibilidade.
Qualquer valor de retorno de um programa diferente de 0 erro.
~# mkdir dir4/dir5/dir6 2> erro.txt
6
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
o arquivo erro.txt criado e recebe:
mkdir: no possvel criar diretrio ` dir4/dir5/dir6: arquivo ou diretrio
no encontrado.
Dar erro e criar o arquivo erro.txt:
~# mkdir dir1/dir2 2> erro.txt 1> normal.txt
No dar erro e criar os diretrios e o arquivo normal.txt:
~# mkdir p dir4/dir5 2> erro.txt 1> normal.txt
~# cp /etc/passwd /root
Se no lugar de "/root tiver ". ou "~ copia para o diretrio do usurio
corrente, que o root.
~# cat passwd mostar o contedo do arquivo
~# tac passwd - mostra o contedo do arquivo do final para o comeo
bom para arquivos de log.
Diretrio /var/log
~# cat syslog (log do sistema)
~# tac syslog (mostra a partit do fim)
head lista as 10 primeiras linhas de um arquivo.
-n <quant de linhas>
tail lista as 10 ltimas linhas de um arquivo.
-n <quant de linhas>
-f exibe o arquivo ao mesmo tempo em que atualizado; o terminal
fica preso at que se cancele a execuo do programa.
var/log# tail f auth.log
mudar para tty2 (Alt + F2) e logar com uma senha errada; ao voltar para
tty1, v-se o erro registrado no arquivo, que de log de autenticao.
sarg mostar os acessos dos IP das mquinas.
Modificando o terminal
setterm utilizado para modificar a configurao de um terminal.
-background modifica a cor do fundo
-foreground modifica a cor da fonte
cores: green, blue, cyan, red, magenta, yellow, black and white.
-bfreq ajusta o som do beep (0 - 2000)
-blenght ajusta o tempo do som do beep (0 - 2000)
-store fixa as modificaes
/usr/share/consolechars modifica a fonte do terminal
-f <fonte> arquivo contendo a fonte
fonte padro: lat9u-16.psf.gz
/usr/share/keymaps/i386/qwerty mapas de teclado
Modificar a configurao do teclado:
~# loadkeys br-latin1.kmap.gz
~# loadkeys br-abnt2.kmap.gz
~# loadkeys us-intl.iso01.kmap.gz
7
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
31/08/2006 aula 4
echo exibe o contedo de uma varivel e tambm serve para exibir
mensagens.
~# echo "Dindo
~# echo $PS1 (prompt primrio - $ indica que uma varivel)
ecoa /h/w/$
~# echo $PS2 (prompt secundrio)
ecoa >
O prompt secundrio aparece se digitar um comando em duas linhas:
~# ls \ <Enter> - a "\ ignora o significado da prxima tecla digitada
> -la
~# echo "isto um teste > teste.txt cria o arquivo e escreve nele
~# touch ricardo pinheiro cria 2 arquivos (ricardo e pinheiro)
~# touch ricardo\ pinheiro ou ~# touch "ricardo pinheiro cria apenas 1
arquivo (ricardo pinheiro) com espao no nome no uma boa dar
nomes assim a arquivos.
expand troca [Tab] por espaos
[Tab] equivale a 8 espaos
-t <quantidade de espaos>
-i somente o 1 [Tab]
~# cat > arquivo.txt
eliane barreto
raimundo nascimento
Ctrl + D
Mostra o arquivo com as alteraes de [Tab], mas no o altera:
~# expand t 20 arquivo.txt
eliane barreto
raimundo nascimento
~# cat arquivo.txt
eliane barreto
raimundo nascimento
Efetua as modificaes de [Tab] e grava em novoarquivo.txt
~# expand t 20 arquivo.txt > novoarquivo.txt
~# cat A novoarquivo.txt
Mostra os caracteres no imprimveis:
^ - incio I [Tab] $ - fim
~# echo "isto um teste > file.txt
~# echo "isto outro teste > file.txt sobrescreve
~# echo "isto mais um teste >> file.txt adiciona no final do arquivo
8
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
fmt ajusta um texto, adicionando ou removendo espaos; trabalha com
a argura da pgina.
-w <largura da pgina>
join junta arquivos com colunas iguais.
-j <n da coluna>
~# cat > arq1
1 sala 1
2 sala 2
3 sala 3
~# cat > arq2
1 nome 5
2 nome 78
3 nome 25
~# join j 1 arq1 arq2 > arq3
~# cat arq3
1 sala nome 5
2 sala nome 78
3 sala nome 25
paste une 2 arquivos; podemos adicionar um delimitador para unir as
linhas de cada arquivo. Se no colocar d, ele insere o delimitador padro,
[Tab]
-d <delimitador>
~# cat > arq4
vitor
raimundo
luiz
~# cat > arq5
ig.com.br
globo.com
terra.com.br
~# paste d "@ arq4 arq5 > email.txt
~# cat email.txt
vitor@ ig.com.br
raimundo@ globo.com
luiz@ terra.com.br
pr formata um texto cru para impresso
-h "cabealho
9
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
-d espao duplo
-l <total de linhas> - total de linhas da pgina
-w <total de colunas> - largura da pgina
~# pr l 25 w 25 dh "salas/instrutores arq3
-D formata a data do cabealho
-D %A\ %d\ %B\ %Y\ %H:%M
quinta 31 agosto 2006 10:55
-D %A-feira,\ %d\ `de\ %B\ `de\ %Y\ `s\ %H:%M
quinta-feira, 31 de agosto de 2006 s 10:55
wc conta linhas, palavras e caracteres de um arquivo. Se mais de um
arquivo for passado, ele mostra uma estatstica.
~# wc arq3
mostra 3, 15, 51 (linhas, palavras, caracteres)
-m conta somente caracteres
-l conta somente linhas
-w conta somente palavras
-L mostra o tamanho da maior linha do arquivo
seq cria uma seqncia numrica.
<ltimo> seqncia comea de 1 e vai at "ltimo
<primeiro> <ltimo> seqncia comea em "primeiro e vai at
"ltimo
<primeiro> <incremento> <ltimo> seqncia com passo igual a
"incremento
~# seq 100
~# seq 100 200
~# seq 100 2 200
~# seq 3000 > numeros.txt
split divide o arquivo em n partes; o padro dividir o arquivo a cada
1000 linhas.
split <arquivo> <prefixo>
~# split numeros.txt arq_
cria 3 arquivos: arq_aa, arq_ab, arq_ac
-l <numero de linhas>
-d utiliza numeros como sufixo em vez de letras
-a <numero> quantidade de letras ou tamanho do nmero inteiro
(padro 2, ou seja, vai de aa at zz ou de 0 a 99)
~# split numeros.txt l6 d a 3 arq_
gera 500 arquivos de arq_000 at arq_499
10
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
Exerccio:
Juntar os arquivos arq_aa, arq_ab e arq_ac em um nico arquivo
chamado num.txt.
wildcards
* - substitui todos os caracteres direita
? substitui apenas um caracter
Solues possveis:
~# cat arq_aa arq_ab arq_ac > num.txt
~# cat arq_* > num.txt
~# cat arq_?? > num.txt
cut no sentido literal da palavra, o comando serve para cortar, separar
colunas de um arquivo.
-d <delimitador> o delimitador (separador de campos) padro
[Tab]
-f <campo> nmero da coluna que se quer visualizar
--output_delimiter=<delimitador> delimitador usado na sada
~# cut d ": f 1 passwd
Mostra os nomes dos usurios que esto na primeira coluna do arquivo
passwd. Os campos no arquivo passwd so delimitados por ":.
~# cut d ": f 1,5 -output-delimiter=-- passwd > resumo
~# cat resumo
Mostra a primeira e a quinta colunas do arquivo passwd copiadas para o
arquivo resumo, separadas por --.
Se quiser imprimir, direcionar para o dispositivo > /dev/lp0
nl numera linhas
~# ls l / | nl - lista o contedo do diretrio raiz numerando as linhas
~# ls l /root | nl - lista o contedo do diretrio do usurio root
numerando as linhas
~# ls l ~ | nl - o mesmo que o anterior
~# nl arq.txt
Opes:
\:\:\: - cabealho
\:\: - corpo
\: - rodap
~# cat > notas.txt
\:\:\:
---------------------
nome[Tab]nota
---------------------
\:\:
leandro[Tab]80
vitor[Tab]70
luiz[Tab]60
\:
11
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
---------------------
Ctrl + D
~# nl notas.txt
----------------------
nome nota
----------------------
1 leandro 80
2 vitor 70
3 luiz 60
----------------------
12
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
04/09/2006 aula 5
Mudando o prompt de comandos
PS1 uma varivel
\h hostname
\d date
\t time
\w exibe o caminho completo do diretrio corrente
\W exibe apenas o diretrio atual
\u exibe o usurio atual
/$ mostra o smbolo $ para usurios e # para o root
~# echo $PS1 - para ver o contedo da varivel tem que preced-la de $
~# PS1=\u@\h:\w\t\$ atribuir valor varivel (sem $ antes da
varivel)
~# PS2=<
~# ls \
< -la
sort utilizado para ordenar um arquivo texto
-r ordem reversa
~# cp /etc/passwd .
~# cat passwd
~# sort passwd
~# sort -r passwd
uniq remove uma seqncia repetida de linhas de um arquivo texto
~# act > nico.txt
isto um teste
isto um teste
teste
isto um teste
teste
Ctrl + D
~# uniq nico.txt
S remove seqncias repetidas adjacentes. Resultado:
isto um teste
teste
isto um teste
teste
~# sort nico.txt | uniq > nico2.txt
Ordena, elimina linhas repetidas e grava no arquivo unico2.txt. Resultado:
isto um teste
teste
13
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
tee utilizado para redirecionar a sada de um comando para um arquivo
e para a sada padro.
~# ls la | tee lista.txt (no usar o redirecionador >)
~# sort nico.txt | uniq | tee nico.txt
Expresses Regulares uma express regular usada quando
queremos expandir um comando, o que no seria possvel utilizando
apenas as opes do comando.
^ incio de linha
$ final de linha
. qualquer caracter nesta posio
[0-9] ou [A-Z] intervalos
{lista} lista separada por vrgula
tr realiza pequenas transformaes em arquivos, converte ou apaga
caracter. No funciona sozinho, somente com outro comando.
<opes> <varivel de busca> <varivel de troca>
Trocar letras minscilas por maiculas:
~# cat passwd | tr [a-z] [A-Z]
~# echo "Raimundo Nascimento de Souza > nome.txt cria o arquivo e
escreve nele.
~# tr [a-z] [A-Z] < nome.txt
-s suprime ocorrncias repetidas de um caracter
-d apaga o garacter especificado
~# tr -s o < passwd (suprime um `o de root - rot)
~# tr -d o < passwd (suprime todas as letras `o de root - rt)
~# tr -s o k < nome.txt (troca o `o por k Raimundk Nascimentk de
Skuza)
xargs l o contedo de um arquivo texto e executa um comando.
~# cat > comandos.txt
dir1
dir1/dir2
dir1/dir3
dir1/dir3/dir4
dir1/dir3/dir5
Ctrl + D
~# cat comandos.txt xargs mkdir (cria todos os diretrios)
grep utilizado para filtrar um arquivo ou texto.
Opes:
-i no diferencia maisculas de minsculas
-v no mostra as linhas da chave de busca
~# grep ^root passwd (mostra a linha que comea com root)
~# grep false$ passwd (mostra a linha que termina com false)
~# cat /etc/modules.conf (linhas de comentrios iniciadas por #)
~# cp /etc/modules.conf ~ (copiar o arquivo para o diretrio /root)
14
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
~# grep v ^# modules.conf > newmodules.conf (cuidado)
Sada de grep (as linhas que no comeam por #, ou seja, linhas
comentadas) redirecionada para o arquivo newmodules.txt.
ifconfig mostrar informaes sobre as interfaces de rede instaladas
~# ifconfig
Mostrar apenas o n IP da placa de rede eth0:
~# ifconfig | grep inet | grep Bcast | cut d ": f 2 | cut d " f 2
(minha soluo)
~# ifconfig | grep inet | head -1 | tr s " | cut d " f 4 (soluo do
intrutor) linhas com inet; apenas a 1 linha; retira espaos repetidos;
corta e mostra a coluna 4 com espao em branco como delimitador.
~# ifconfig | grep i Bcast | cut d " f 13 (soluo do Puerari)
~# ifconfig | grep i Bcast | cut d ": f 2 | cut d " f 2 (soluo do
Helder)
Atribuir resultado de um comando a uma varivel:
end_ip=`comando` (entre acentos graves que estranho) Se colocar
entre aspas simples, ele atribui a string do comando varivel.
end_ip=`~# ifconfig | grep i Bcast | cut d " f 13`
echo $end_ip
10.11.1.14
who mostra quem est logado (para o caso de se estar logado como
usurios diferentes em vrios tty).
w mostra quem est logado e o que est fazendo
last mostra quem logou no sistema e o que fez; mostra se o
usurio ainda est logado.
uptime mostra a quanto tempo a mquina est ligada e tambm
algumas estatsticas.
whoami mostra quem o usurio logado (crise de identidade).
uname mostra informaes sobre o sistema.
-a mostra todas as informaes
-s nome do kernel
-m tipo de processador (i386, i586, i686, K7, K8, etc.)
~# uname -a
Linux debian2.4.27-2-386 #1 Mon May 1616:47:51 JST 2005 i686
GNU/LINUX
15
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
05/09/2006 aula 6
sed stream editor (editor de fluxo) realiza pequenas transformaes
em arquivos texto.
~# cat > teste.txt
O Linux no livre. O Linux no pago.
O Linux da Microsoft.
Ctrl + D
~# sed `s/Linux/Windows/ teste.txt (o `s de search)
O Windows no livre. O Linux no pago.
O Windows da Microsoft.
Troca apenas a 1 ocorrncia da palavra em cada linha. Se quiser trocar
todas as ocorrncias:
~# sed `s/Linux/Windows/g teste.txt (`g s Deus sabe de qu)
Instalao de pacotes DEBIAN = DEbra (Ians wife) + IAN Murdock
O gerenciador de pacotes do Debian o apt (advanced package tool)
utilizado por muitas distribuies, como: Kanoppix, Kurumin, Ubuntu.
A Conectiva, antes de ser comprada pela Mandrake Soft, utilizava o apt
como gerenciador de pacotes. O gerenciador de pacotes do Mandriva o
rpm.
O arquivo de configurao do apt est em /etc/apt/sources.list. O apt
trabalha com o conceito de source (fonte), onde ele vai buscar o pacote,
que pode estar no CD-ROM/DVd ou na internet.
O gerenciador de pacotes serve para resolver dependncias entre pacotes
na instalao. O Debian tem cerca de 15 mil pacotes.
O Debian trabalha com 3 verses:
stable: verso estvel, que passou por longos testes antes de ser
lanada, por isto esta verso no contm os pacotes mais atuais.
Leva normalmente 2 anos para ser lanada.
testing: verso teste, antes de ser lanada como estvel; os pacotes
so testados por vrios meses; quando esta verso est prxima de
ser lanada, ela congelada e no aceita mais novos pacotes, apenas
correes.
unstable: verso com pacotes mais novos e pouco testados est em
constante modificao.
Testes para diversas provas, inclusive LPI: testking
Ver www.certificacaolinux.com.br simulados para LPI.
Cada verso estvel lanada tem um nome j trazido da verso em
testes. A verso estvel atual a SARGE (3.1). J houve verses potato,
wood, etc. A verso de teste atual a ETCH e a verso instvel sempre
ser a SID. Estes nomes vm do filme Toy Story.
16
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
sources.list arquivo de configurao do gerenciador de pacotes apt
~# cat /etc/apt/sources.list
Mostra uma linha com: deb file:///cd-rom/ sarge main (indica instalao a
partir do CD-ROM).
Para instalar a partir da internet, mudar a linha para:
deb http://ftp.br.debian.org/debian stable main contrib non-free
"stable pode ser substitudo pelo nome da verso estvel "sarge;
main: repositrio de pacotes oficiais as distribuio
contrib: repositrio de pacotes extras
non-free: repositrio de pacotes que possuem alguma restrio, como
Java, drives Nvidia, Flash Player, que no obedecem a licena GPL.
O arquivo sources.list pode ser editado manualmente como mostrado ou
por meio da ferramenta de gerenciamento de pacotes, que s usa o main
(no coloca os repositrios contrib e non-free).
Vamos fazer a instalao a partir do mirror do Mcury:
http://10.11.1.25/debian stable main contrib non-free
apt-setup programa utilizado para configurar o arquivo
/etc/apt/sources.list.
~# apt-setup
Pode-se escolher o mirror conforme o pas. Aqui no curso, selecionar
"informar manualmente e entrar com o IP do mirror local 10.11.1.254.
Ele mostra que podem ser instalados 15.145 pacotes (pouquinho).
Escolher "no em utilizar atualizaes de segurana security.debian.org.
~# cat /etc/apt/sources.list
O arquivo foi atualizado pelo apt-setup e mostra:
deb file:///cd-rom/ sarge main
deb http://10.11.1.254/debian stable main
# deb http://security.debian.org/ testing/updates main
A primeira linha j existia; a segunda foi acrescentada sem os outros
repositrio e a terceira foi inserida e comentada.
Para modificar o arquivo da maneira que se quer fazer a instalao:
~# echo "deb http://ftp.br.debian.org/debian stable main contrib non-
free > /etc/apt/sources.list
Agora o arquivo tem somente esta linha, mas preciso que ele seja
reconhecido aps esta mudana sem ter que dar boot.
~# apt-update (compila o sources.list e atualiza a lista de pacotes)
~# apt-install instala pacotes
17
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
~# apt-remove remove pacotes
Instalando o primeiro pacote:
~# apt-install vim
resolve dependncias e instala libgpmg1, vim e vim-common.
Verificar pacotes disponveis, caso no se saiba o nome do pacote a
instalar:
~# apt-cache search all (mais ou menos 15 mil pacotes)
~# apt-cache search gnome | more
~# apt-cache search apache (mostra os pacotes do apache e as suas
dependncias)
~# apt-cache search all | grep apache (mostra somente os pacotes que
possuem apache no nome)
Editor vi (visual interface) muito utilizado na dcada de 80 para edio
de arquivos em ambiente UNIX; atualmente todas as distribuies,
execeto o Debian, utilizam o vim (vi improved) que o vi melhorado, o
que no l grande coisa.
O vi/vim trabalha em dois modos:
modo de edio: digitar `i, aparece INSERT no rodap. A tecla
Insert muda de INSERT para REPLACE.
dd apaga a linha em que o cursor estiver.
u desfazer (sem dois pontos antes).
/texto busca pelo texto.
Visual (aparece no rodap)
v marcar texto; utilizar as setas para marcar.
y copiar texto marcado para a memria.
x recortar texto, apaga o texto selecionado e joga na memria.
p colar texto que est na memria para a localizao atual do
cursor
modo de comando: a partir do modo de edio, pressionar a tecla
`Esc.
:w <nome do arquivo> - salva o arquivo com o nome especificado, no
diretrio atual.
:e <nome do arquivo> - abre um arquivo para edio.
:split <nome do arquivo> - divide a tela em duas janelas e abre o
arquivo especificado em uma delas. Ctrl + w para trocar de janela.
:wq salva e sai.
:x salva e sai.
:q sai, caso o arquivo no tenah sido alterado.
:q! sai sem salvar.
18
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
Habilitar sintaxe utilizado em scripts.
:sintaxe on
Habilitar numerao de linhas.
:set number
Abrir o arquivo de configurao do vim em /etc/vim/vimrc, descomentar a
linha 35 (syntax on) e na linha de baixo adicionar "set number. :wq
19
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
06/09/2006 aula 7
Ferramentas de instalao de pacotes
As distribuies trabalham com pacotes de software, sendo os mais
comuns deles o deb e o rpm. Um pacote nada mais do que alguns
arquivos, regras para que eles sejam instalados corretamente e uma
relao de quais outros pacotes este pacote depende.
Para que seja possvel instalar um pacote, necessrio um software que
conhea o tipo de pacote, confira as dependncias e aplique as regras de
instalao. Estes software so o rpm para pacotes rpm e o dkpg para
pacotes deb. S que estes software dispe somente de recursos bsicos,
no fazendo coisas como fazer automaticamente o download de pacotes
que faltam para resolver as dependncias. ai que entram softwares de
gerenciamento de pacote, o qual tem como representante mais conhecido
o apt-get da Debian.
O urpmi algo correspondente ao apt-get para o Mandriva e o YaST a
ferramenta de administrao integrada utilizada na distribuio SUSE da
Novell.
As ferramentas de instalao de pacotes so usadas para criar, instalar,
desinstalar, pesquisar, verificar e atualizar pacotes individuais de
software. Um pacote consiste em armazenagem de arquivos e
informaes, incluindo nome, verso e descrio. As dependncias dos
arquivos so verificadas automaticamente e tudo o que for necessrio
ser instalado antes de instalar o programa principal.
Instalar less e tree:
~# apt-get install less
~# apt-get install tree
Editar o arquivo /etc/vim/vimrc e habilitar sintaxe e numerao de linhas:
sintaxe on
set number
less programa similar ao more, porm mais fcil de utilizar pode usar
as setinhas para percorrer a tela.
~# less /etc/bash_completion
<chave de busca> - busca pela palavra especificada
digitar q para sair (quit).
tree mostra, em forma de rvore, os diretrios e os arquivos de cada
20
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
diretrio.
-d mostra somente os diretrios
~# tree d /etc | less (mostra 95 diretrios embaixo de /etc)
Editar o arquivo ~/.bashrc
Para ver cores no comando ls s digitar: ~# ls color=auto,ou ento
descomentar as linhas 7 a 9 do arquivo .bashrc.
As linhas 10 e 11 geram alias para ls e as linhas 14 a 16 geram alias para
rm, cp e mv com a opo i (perguntar antes), exemplo: rm=rm -i.
Para fazer valer as alteraes de tirar comentrios das linhas sem fazer
logout/login, usar `source ou `. que l o contedo de um arquivo e
executa o que estiver dentro dele.
~# source .bashrc
Cores do ls:
azul -pastas verde -executveis
azul claro -links preto -texto/outros
vermelho -compactados marrom -pipe
rosa -imagens/sockets amarelo -dispositvos
7 export LS_OPTIONS=-color=auto
8 eval "dircolors
9 alias ls=ls $LS_OPTIONS
10 alias ll=ls $LS_OPTIONS -l
11 alias l=ls $LS_OPTIONS -la
bash_completion - editar o arquivo dentro do vim:
:e /etc/bash_completion
Shift + G ir para o final do arquivo: linha 6104 (arquivo bem grande).
Este arquivo completa alguns comandos no apt-get e facilita a vida de que
no sabe os nomes dos pacotes.
Executar o arquivo:
~# . /etc/bash_completion
~# apt-get install kernel [Tab] [Tab]
Display all 255 possibilities? y or n
mc 13 possibilidades
vi 51 possibilidades
aptitude - mostra pacotes atualizveis, instalados, no instalados,
virtuais e tambm tarefas.
~# aptitude
Dispositivos de hardware no ambiente UNIX so identificados e
21
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
acessados por meio de arquivos armazenados em /dev. Alguns
dispositivos comuns:
Linux DOS/Windows
/dev/fd0 drive A:
/dev/lp0 ltp1
/dev/psaux
protocolo ps2 sem scroll
protocolo imps2 com scroll
mouse PS2
/dev/ttyS0n....ttyS3 COM1 ... COM4
Modems:
hard modem hardware a porta serial;
soft modem software win modem porta serial emulada (ver
www.linuxmodems.org)
Discos:
IDE (PATA) hd (a taxa de transferncia, por exemplo 133 MB/s,
dividida entre todos os dispositivos e a controladora PCI)
SCSI sd (discos, scanners, CD-ROM, fita DAT cada dispositovo
tem seu canal prprio, muito mais rpido e caro que o IDE)
SATA sd (usar placa me com controladora na ponte sul)
discos IDE Linux DOS/Windows
IDE1 Primary Master - hda C:
Primary Slave - hdb D:
IDE2 Secondary Master hdc E:
Secondary Slave - hdd F:
~# ls la /dev/hda* | less mostra todas as parties do disco hda; h
20 parties neste disco do curso.
Parties possveis:
3 primrias com sistema operacional cada, sem divises;
1 estendida com parties lgicas.
O Windows s pode ser instalado em partio primria ativada. O Linux
no precisa de partio primria nem de ativao.
Particionando um disco de 20 GB, por exemplo:
22
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
tamanho tipo nome contedo
5 GB primria hda1 Windows XP - NTFS
2.5 GB primria hda2 Windows 98 FAT 32
2.5 GB primria hda3 Linux raiz /
10 GB
estendida
hda4
lgica hda5 hda4 no recebe sistema de arquivos. As
parties lgicas em que hda4 foi dividida
recebero sistema de arquivos.
lgica hda6
lgica hda7
lgica hda8
Pode haver somente 4 parties primrias. Para a prova de certificao s
pode haver 15 parties, no entanto pode-se ter 63 parties atualmente.
O hda3 poderia ter o Windows 2000 instalado e o Linux seria instalado em
uma partio lgica, que nem precisa estar ativa.
Partition magic software de particionamento e redimensionamento.
Faa backup antes de usar ferramentas de particionamento.
Instalando o Debian
F1 .... F9 - mostram parmetros da instalao.
Linux vga=788
Placas de rede eth0
DHPC falhou - continuar
Sempre editar o particionamento manualmente. Opes:
configurar RAID via software
configurar o Gerenciador de Volumes Lgicos
particionamento assistido
ajuda sobre particionamento
IDE1 primria hda 40.1 GB
#1 primria 5.0 GB ext3
pri/log 35.1 GN espao livre
desfazer as mudanas nas parties
finalizar o particionamento e gravar mudanas no disco
Criar uma partio de 5 GB lgica (o Linux vai nome-la hda5 e coloc-
la automaticamente dentro de uma partio estendida hda1 - sem ser
necessrio criar esta ltima manualmente).
Sistema de arquivos - ext3.
Criar partio de 1 GB swap hda2
23
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
11/09/2006 aula 8
Instalao GNU/LINUX
Debian
Madriva
Fedora
Red Hat
Inserir o CD 1 e dar reboot.
Tela inicial debian mostra F1 a F9 para verificar os parmetros que podem
ser passados. Vamos passar os seguintes parmetros: linux vga=788.
Escolher o idioma e o teclado.
DHPC falhou porque no servidor de rede.
Configurar rede manualmente:
IP 10.11.1.14 Mscara:255.255.255.0 Gateway e DNS 10.11.1.254
Nome da mquina: Debian14
Nome de domnio: deixar em brando
debian.globo.com: debian seria o hostname; globo.com o domnio e
tudo junto seria o Full Qualified Domain Name - FQDN
Editar particionamento manualmente. Comear do zero.
Criar partio primria de 5 GB no incio do espao disponvel. Sistema de
arquivos ext3, ponto de montagem /. Blocos reservados para o usurio
root 5%.
Formatar a partio. Flag inicializvel desligado (o Windows precisa do
flag ligado, o Linux, no).
Criar uma partio para troca (swap). Pode-se criar uma rea de troca por
meio de arquivo na partio do Linux, mas melhor criar a partio,
melhor ainda ter muita memria RAM.
Partio de 512 MB, lgica, no fim do espao disponvel.
Instalar GRUB e retirar o CD.
Boot fuso horrio usurio root.
Configurar o apt: editar fontes manualmente.
Em casa escolher http para buscar na internet (USA debian.org).
No curso deb http://10.11.1.254/debian sarge main contrib non-free
Finalizar a configurao.
base-config - programa de configurao do sistema bsico.
Instalao da parte grfica servidor x:
~# apt-get install x-window-system
Tentar autodetectar o hardware de vdeo? Sim
Se ele no detectar automaticamente a placa de vdeo, abrir o tty2 (Alt +
F2), logar e digitar lspci que lista os dispositivos PCI da mquina:
~# lspci
24
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
Escolher o teclado. Regras XKB de teclado: xfree86.
Danger: se o mouse no for escolhido corretamente, a parte grfica no
funcionar direito.
mouse USB - /dev/input/mice nas verses mais novas do kernel, esta
opo reconhece qualquer mouse.
mouse PS2 - /dev/psaux
protocolo OS/2 sem scroll
protocolo ImPS/2 com scroll
mouse serial
COM1 ttyS0
COM2 ttyS1
COM3 ttyS2
COM4 ttyS3
Caractersticas do monitor:
medium
1024 x 768 @ 60 Hz
resoluo marcada com a barra de espao.
Resoluo de impresso: 600 dpi.
startx - dar partida no servidor x:
~# startx -- :0 &
O servidor x j instalou um gerenciador de janelas cado, mas ns vamos
instalar um melhor.
~# apt-get gnome gdm
gerenciadores de login:
xdm xfree86 (projeto x)
gdm gnome
kdm KDE
Delegar gerenciamento de fontes ao defoma? Sim.
Instalar cdrecord com SUID ativado? No uma boa deixar o usurio
comum queimar CD-ROM com o cdrecord.
Display padro: gdm.
Tamanho do papel: A4.
~# apt-get install gdm-themes
~# reboot
Menu Action Configure
Aba Security marcar Allow root to login with GDM.
Aba General mudar greeter para graphical.
25
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
Aba Greeter escolher o tema.
Para montar um pen-drive:
~# mkdir /media/pendrive
~# mount t vfat /dev/sda1 /media/pendrive
Instalao do Madriva deu erro no CD3.
Instalao do Red Hat tambm deu erro.
Vamos ver estas instalaes novamente em aula futura.
26
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
12/09/2006 aula 9
Para reconfigurar o servidor x:
~# dpkg reconfigure xserver-xfree86 (para a verso estvel)
~# dpkg reconfigure xserver-xorg (para a verso teste - SID)
Para reconfigurar o teclado:
~# dpkg reconfigure console-data
Selecionar um teclado da lista:
qwerty
brazilian
/br-latin1 (teclado sem )
standard-abnt2
Instalei o xwindow e o gnome. Para iniciar, chamar o gerenciador de
login:
~# /etc/init.d/gdm start
Com o KDE instalado, chamar:
~# /etc/init.d/kdm start
Ctrl + Alt + F1 - trocar da interface grfica para o terminal
Ctrl + Alt + F7 - trocar do terminal para a interface grfica
Tipos de sistemas de arquivos:
Todo sistema de arquivos UNIX possui algumas caractersticas comuns,
tais como:
setor menor unidade de armazenamento tamanho 512 bytes.
bloco o bloco, normalmente, composto de vrios setores. Para
os sistemas de arquivos ext2 e ext3 o normal 4096 kytes (4 KB),
mas podem ser utilizados blocos de 1 e 2 KB tambm.
superbloco contm todas as informaes sobre a partio: inodes
e blocos (total, livres e usados). Caso o superbloco seja danificado,
a partio se perder. O kernel do Linux mantm uma cpia em
memria e tambm em lugares espalhados pela partio.
inodes (ns ndices) toda vez que um arquivo criado, alocado
um inode para ele, que contm algumas informaes sobre o
arquivo e os blocos ocupados por ele. O inode normalmente tem 64
bytes de tamanho e contm:
uid n de identificao de dono do arquivo
gid n de identificao do grupo
o tipo do arquivo:
arquivo comum (texto, scripts, binrios, vdeo, etc)
27
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
diretrio
dispositivo (bloco ou caracter)
pipe (usado para comunicao entre processos)
socket (usado tambm para comunicao entre processos,
comunicao essa que pode vir de uma mquina da rede)
permisses do arquivo
data e hora de acesso, modificao
localizao dos blocos utilizados pelo arquivo e seu tamanho
Sistemas de arquivos mais comuns
ext2 extended file system 2 sistema de arquivos padro do Linux,
atualmente est sendo substitudo pelo ext3, que oferece mais
segurana.
ext3 extended file system 3 sistema de arquivos similar ao ext2 ao
qual foi acrescentado o sistema de "journaling que consiste de uma
rea no incio do disco onde so armazenadas, num arquivo "journal,
todas as alteraes de arquivos do disco, sem que as alteraes
tenham sido gravadas no disco, de modo a permitir a recuperao de
arquivos quando de uma eventual falha eltrica.
xfs da Silicon Graphics, fornece tambm um sistema de journaling e
suporte a arquivos de mais de 2 GB, normalmente utilizados em
banco de dados de grande porte e filmes. Tem problemas com
armazenamento em memria quando falta energia, portanto use
nobreak.
jfs da IBM, tambm fornece um sistema de journaling e suporte a
arquivos grandes.
Reiserfs desenvolvido inicialmente por Hans Reiser e atualmente
mantido pela equipe da distribuio Suse. Tem suporte a journaling e
no possui blocos de tamanho fixo, aproveitando ao mximo o espao
em disco. A verso 3.6 suportada por todas as distribuies do
kernel 2.6. A verso 4.0 o sistema de arquivos mais rpido de
todos, porm ainda no est disponvel.
Para estudos de certificao LPI, conhecer ext2 e ext3 bem.
fdisk programa utilizado para criar e modificar parties.
-l mostra as parties de um disco
~# fdisk l /dev/hda
fstab - arquivo que contm informaes sobre sistema de arquivos:
~# cat /etc/fstab
file system mount point type option
/dev/hda / ext3 defaults, error=remount -ro
28
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
df comando que mostra informaes sobre parties:
-h human reading
~# df h
partio tamanho usado disponvel uso % montado em
/dev/hda 4.6 G 1.9 G 2.6 G 43 % /
Particionando um disco
~# fdisk /dev/had
m - help
p mostra a tabela atual de parties
n criar nova partio (para rea de troca - swap)
e extended
p primary (1-4) - escolher 2
tamanho (+sizeM) - +512M
t troca o tipo de partio
L lista os cdigos 82 = Linux Swap / Solaris
n criar nova partio: estendida, 3, +5120M
n criar nova partio: lgica, o sistema numera automaticamente
em 5 porque a primeira lgica, +2048M
n criar nova partio: lgica, o sistema numera automaticamente
em 6 porque a prxima, tamanho default (3GB) o que falta para
completar os 5GB da partio estendida
device boot start end blocks Id system
/dev/hda1 1 608 4883728+ 83 Linux
/dev/hda2 609 671 506047+ 82 Linuxswap / Solaris
/dev/hda3 672 1294 5004247+ 5 Extended
/dev/hda5 672 921 2008093+ 83 Linux
/dev/hda6 922 1294 2996091+ 83 Linux
Disco de 40 GB
partio ponto de montagem
hda1 5 GB
primria
/
hda2 512 MB
primria
swap
hda3 5 GB
hda5 2 GB
lgica
hda6 3 GB
lgica
estendida
/dados
/sistema
Se a partio hda5 for deletada, a hda6 passa a ser hda5 e fica com o
29
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
ponto de montagem /dados automaticamente e os 2 GB da hda5 ficam
livres.
Se forem criadas 2 parties na nova rea livre elas tomaro os nmeros
menores (5 e 6) e a hda5 passar a ser hda7. MUITA ATENO com a
criao de parties com fdisk.
O arquivo fstab criado durante a instalao do Linux e no reflete
automaticamente as mudanas feitas pelo fdisk. O Mestre ainda no
ensinou a mudar o fstab.
Formatando uma partio:
mkswap formata uma partio para ser usada como rea de troca.
-c formata e verifica blocos defeituosos
-L <nome da partio>
~# mkswap c L areatroca /dev/hda2
free mostra a quantidade de memria total, disponvel e usada
-b mostra em bytes
-k mostra em KB
-m mostra em MB
Depois de formatar a rea de troca, tem que avisar ao kernel seno o
comando free no mostra.
swapon ativa a partio de rea de troca
swapoff desativa a partio de rea de troca
~# swapon /dev/hda2
~# swapoff /dev/hda2
apt-get install fbi - instala pacote que permite visualizar imagens no
terminal.
30
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
13/09/2006 - aula 10
Formatando Parties
mkfs - programa utilizado para formatar parties
-t - <tipo do sistema de arquivos><opes do sistema de arquivos>
<dispositivo>
-c verifica, na formatao, se existem badblocks
-L - <label>
-b - block size
Duas formas de executar o mkfs para uma partio ext3:
~# mkfs -t ext3 -c -L dados /dev/hda5
~# mkfs.ext3 c L dados /dev/hda5
mke2fs - formata parties como ext2
-j formata e cria sistema de arquivos ext3
-c - verifica na formatao, se existem badblocks
-L - <label>
Outra formas de formatar uma partio ext3:
~#mke2fs -j -c -L dados /dev/hda5
"This filesystem will be automacally checked every 23 mounts or 180
days, whichever comes first. Use tune2fs c ou I to override
Para formatar parties:
MSDOS - Instalar o pacote dosfstools
REISERFS - Instalar o pacote reiserfsprogs
NTFS - Instalar o pacote ntfstools
XFS - Instalar o pacote xfsprogs
Obtendo informaes de sistema de arquivos ext2/3
dumpe2fs - mostra informaes sobre a partio formatada com ext2/3
-h - informaes resumidas.
~#dump2fs -h /dev/hda5
Ajustando parmetros das parties ext2/3
tune2fs - realiza ajustes em parties ext2/3
-c <max-mount-count> - montagem mxima; ultrapassado esse
limite, no prximo boot o sistema de arquivos ser verificado com o
programa fsck).
Obs: para desabilitar, setar com 0 (zero).
31
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
-C - utilizado para alterar o contador de montagem manualmente.
-j - adicionar o journaling a uma partio ext2, tornando-a uma
partio ext3.
-L <label> - troca a label.
-m <porcentagem> - blocos reservados para o superusurio.
-i <d, m, w> - intervalo entre checagens:
d - dias
m - meses (mximo 12)
w - semanas
~#tune2fs -c 50 -C 49 -i 12m -m 1 /dev/hda5
~# dumpe2fs h /dev/hda5
Obs: Se o tipo do sistema de arquivos for alterado, no esquecer de
alterar o arquivo /etc/fstab, caso o mesmo seja montado
automaticamente na inicializao.
Montando Parties
mount - montar um sistema de arquivos para ser utilizado.
mount -t <tipo><dispositivo/partio><ponto montagem> -o <opes>
~#mount -t ext3 /dev/hda5 /mnt/dados
Montar um CD_ROM
dmesg - mostra mensagens do kernel
~#dmesg | grep hd (motra quem so hda, hdb, hdc...).
O CD-ROM hdb; este comando foi para descobrit quem o CD-ROM.
~# mount t iso9660 /dev/hdb
~# cd /cdrom ; ls lista os arquivos do CR-ROM
hda1
/bin
/etc/dev hda5 ext3
/media
/cdrom hdb iso9660
/pendrive sda1 - vfat
iso9660 o formato de arquivos do CD-ROM; o de pen drive vfat
supermount ou mountfs - servio que em Kernel mais atuais, efetuam
montagem automaticamente ao se inserir uma media.
Obs: se o dispositivo estiver especificado em /etc/fstab, basta digitar:
~# mount /media/cdrom
Desmontar o CD-ROM
32
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
umount - desmonta sistema de arquivos
eject - ejeta CD-ROM
eject t fecha a gaveta do drive
Fazer imagem binria (cpia idntica) do CR-ROM em disco:
dd - comando utilizado para converses e cpias
dd if=<input file> of=<output file> bs=<tamanho do bloco>
count=<multiplicador>
~#dd if=/dev/hdb of=~/cd.iso
Esta imagem binria, cd.iso, pode ser montada:
mount -t iso9660 ~/cd.iso /media/cdrom -o loop
Obs: -o loop utilizado para atribuir major/minor para o arquivo.
major - n que identifica o dispositivo/interface.
minor - n que identifica a partio/arquivo dentro do dispositivo.
~# cd /dev
~# ls la hda*
Tem uma coluna s com nmeros 3 que o nmero major.
Na coluna seguinte tem vrios nmeros, correspondentes partio.
~# ls -ls hdb*
Tambm tem uma coluna com 3 porque os dois dispositivos compartilham
a mesma controladora IDE.
O major de hdc e hdd 22.
~# ls ls loop* tem major 7 e minor de 0 a 7; pode-se ento montar at
8 imagens que no correspondam a dispositivos fsicos.
~# mknod /dev/hda60 b 3 60 cria a partio 60 no disco.
33
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
14/09/2006 - aula 11
cfdisk - front-end para o fdisk
~#cfdisk /dev/hda
new - cria uma nova partio (Primria / Lgica).
type - muda o tipo da partio (ext2/3, reiserfs, xfs, jfs...).
delete - apaga uma partio.
write - grava as mudanas no disco.
bootable - marca a partio com o flag inicializvel.
quit - sai sem salvar.
Criar parties iguais s da aula passada.
Formatar e ligar rea de troca:
~# mkswap c L areatroca /dev/hda2
~# swapon /dev/hda2
Verificar:
~# free /dev/hda2
Formatar a partio lgica hda5 com o rtulo dados:
~# mkfs t ext3 c L dados /devhda5
Verificar:
~# dumpe2fs h /dev/hda5
mount: montagem de partio:
mount t <tipo> <dispositivo/partio> <ponto de montagem> -o
<opes>
Opes de Montagem (ext2/3)
rw - leitura e gravao.
ro - somente leitura.
auto - tenta montar na inicializao.
noauto - no tenta montar na inicializao.
sync - grava as alteraes diretamente no disco.
async - no grava as mudanas diretamente no disco, armazena em
memria (cache) e depois o kernell despeja no disco.
dev - permite que dispositivos sejam criados em /dev.
nodev - no permite que dispositivos sejam criados.
users - permite que os usurios, no root, montem/desmontem a
partio.
nousers - no permite que os usurios comuns montem/desmontem
a partio.
exec - permite que arquivos binrios sejam executados na partio.
noexec - no permite que arquivos binrios sejam executados na
partio.
suid - binrios com permisses especiais (suid e sgid) so permitidos
34
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
nesta partio.
nosuid - no permite que binrios com permisses especiais (suid e
sgid) sejam executados nesta partio.
owner - torna um usurio dono dessa partio
defaults - rw, auto, swid, exec, async, dev, nouser
Criar ponto de montagem (diretrio /dados):
~# mkdir /dados
Editar o arquivo /etc/fstab:
Configurao da montagem dos sistemas de arquivos
Dispositivo Ponto de Montagem Tipo Opes Dump Ordem
/dev/hda1 / ext3 defaults 0 1
/dev/hda2 none ou swap swap sw 0 0
Partio swap no tem ponto de montagem.
Campo Dump - permite ou no backup
Campo Ordem - sequncia em que o fdisk verifica o disco, 0 no verifica.

#mount -a - monta as parties especificadas em "/etc/fstab" ou ento
reboot.
badblocks - verifica se h blocos defeituosos em uma partio
-o<arquivo> - grava em arquivo a referncia aos blocos com
defeito.
-p<n de vezes> - repete a verificao n vezes
~# badblocks -o defeito.txt /dev/hda6
fsck - Verifica a integridade de um sistema de arquivos. recomendvel
que a partio no esteja montada
-A - verifica em /etc/fstab todas as parties e segue a ordem de
checagem do campo "Ordem".
-C - mostra o processo da verificao.
-y - responde afirmativamente todas as perguntas.
-f - fora a verificao do sistema de arquivos, mesmo que este
parea estar limpo.
-t<tipo> - qual o tipo do sistema de arquivos (default ext2/ ext3).
-V - mostra qual operao de checagem est sendo feita.
Desmontar a partio antes de rodar o fsck:
~# umount /dados ; fsck -t ext3 -CfV /dev/hda5
Montar a partio novamente:
~# mount a ou ~# mount t ext3 /dev/hda5 /dados o defaults
dd - criar SWAP em arquivo, sem criar nova partio
35
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
#dd if=/dev/zero of=/troca.swp bs=1024 count=256000
Cria um arquivo binrio de nome "troca.swp" na raiz, contendo somente
zeros em 256000 blocos de 1024 Bytes.
Formata o arquivo "troca.swp" como swap.
#mkswap /toca.swp
~# free
Exibe memria livre/usada pelo sistema, neste caso mostra apenas
/dev/hda2 498004 MB como rea de troca.
Habilita o arquivo "troca.swp" para ser utilizado como memria swap.
#swapon /troca.swp
~# free
Mostra /dev/hda2 e /troca.swp - 753996 MB como rea de troca.
hdparm - ajusta e verifica os parmetros de velocidade dos HDs
-i - mostra informaes resumidas do disco.
-I - informaes detalhadas.
-c1 - ativa o modo de suporte a I/O de 32 bits (c0 - desativa).
-d1 - ativa o uso de DMA (d0 - desativa).
~# hdparm i /dev/hda
~# hdparm c1 d1 /dev/hda
~# hdparm I /dev/hda | more
36
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
18/09/06 aula 12
Criar uma partio primria de 512 MB e mudar o tipo para Linux Swap
com fdisk.
preciso dar reboot.
Formatar a partio como swap e ativ-la:
~# mkswap c L troca /dev/hda2
~# swapon /dev/hda2
Criar uma partio lgica de 2GB cfdisk cria sem ter que criar uma
partio estendida antes, o prprio programa cria a estendida.
Formatar como ext2 e adicionar um label: dados
~# mkfs c L dados /dev/hda5
Criar o ponto de montagem /dados
~# mkdir /dados
Adicionar ao arquivo de configurao essas duas parties para que sejam
automaticamente montadas na inicializao. Editar /etc/fstab:
/dev/hda2 none swap sw 0 0
/dev/hda5 /dados ext2 defaults 0 2
Transformar a partio /dev/hda5 de ext2 em ext3 e ajustar o mximo de
montagens para 50 e o mximo de dias para 200.
~# tune2fs c 50 j i 200d /dev/hda5
Tem que mudar no fstab tambm seno no prximo boot ele monta a
partio como ext2.
Montagem de arquivo como partio
Criar um arquivo vazio (zeros) de 128MB chamado "sistema.ext3"
#dd if=/dev/zero of=/sistema.ext3 bs=1024 count=128000
Formatar o arquivo criado com sistema ext3
#mke2fs -j /sistema.ext3
/sistema.ext3 is not a block special device. Proceed anyway? YES.
Criar o ponto de montagem "/sistema"
#mkdir /sistema
Montar sistema.ext3 em /sistema
#mount -t ext3 /sistema.ext3 /sistema -o loop
Tem que usar o "-o loop porque o arquivo no uma partio fsica e no
tem os nmeros major e minor.
37
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
Usurios
Como em qualquer sistema UNIX, o Linux permite que mais de um
usurio utilize o sistema. O arquivo que contm as contas de usurios est
localizado em: /etc/passwd.
Antigamente as senhas criptografadas eram armazenadas neste arquivo, o
que tornava a segurana do sistema frgil.
O arquivo passwd precisa ser lido por todos , pois muitos programas
precisam l-lo, como por exemplo o ls, quando executado por um usurio.
O arquivo passwd est dividido em 7 campos separados por ":":
login - nome do usurio cadastrado no sistema
senha - campo reservado antigamente para armazenar as senhas
uid - Identificao numrica do usurio no sistema.
gid - Identificao numrica do grupo pessoal do usurio.
gecos (comentrios) - campo normalmente utilizado para
identificao do usurio. Ex.: Nome completo e outras informaes
separados por ",". gecos = General Electric Comprehensive
Operational System.
diretorio pessoal - diretrio pessoal do usurio. Se no quiser que o
usurio tenha um diretrio pessoal, modifique para /dev/null
shell - interpretador de comandos do usurio. Se no quiser que o
usurio tenha acesso a shell, troque por /bin/false.
Grupos
Os grupos do sistema ficam armazenado no arquivo "/etc/group", o qual
dividido nos 4 campos abaixo:
nome - nome que identifica o grupo
senha - apesar de ser possvel atribuir uma senha para o grupo,
normalmente no se faz isso. Assim como no arquivo /etc/passwd, a
senha no armazenada neste arquivo.
gid - identificao numrica do grupo.
lista de membros - lista de todos os usurios que fazem parte do
grupo, separado por ",".
Nas distribuies modernas, o arquivo que contm as senhas de usurios
criptografadas est armazenado em /etc/shadow, que est dividido em
9 campos. Este arquivo s lido pelo superusurio e pelo programa
responsvel pelo login. Os campos so:
login o mesmo nome em /etc/passwd. Este campo serve para ligar
um arquivo ao outro.
senha senha criptografada. No incio as senhas eram
cripptografadas com o algoritmo DES, que era muito fcil de ser
quebrado por fora bruta, uma vez que os sistemas dobram de
capacidade em 3 meses. As senhas, hoje, so criptografadas com
MD5 que confere mais segurana. Para identificar se a senha MD5,
basta olhar se no seu incio h a string $1$.
38
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
19/09/06 aula 13
Ateno: quando alterar o arquivo /etc/kde3/kdm/kdmrc para permitir o
root logar, dar restart ou Crtl+Alt+Backspace.
Continuao dos campos do arquivo /etc/shadow:
3 campo data da ltima mudana de senha. A data contada em
dias a partir de 01/01/1970.
4 campo aps a mudana de senha, informa quando poder
mud-la novamente mnimo de dias de uso.
5 campo mximo de dias que o usurio pode usar a senha.
6 campo informa ao programa login quantos dias antes dever
informar ao usurio que sua senha ir expirar.
7 campo perodo em que o usurio poder utilizar a senha,
mesmo que ela esteja expirada.
8 campo data de expirao da senha, contada em dias a partir de
01/01/1970.
9 campo reservado para uso futuro.
/etc/gshadow - arquivo com as senhas dos grupos (pouco utilizadas).
Possui quatro campos:
grupo nome do grupo, deve ser o mesmo que em /etc/group.
senha senha criptografada.
administrador do grupo usurio que administra o grupo.
lista de usurios lista de componentes do grupo separados por
",.
Existe um grupo chamado "users com gid = 100 que, antigamente,
continha todos os usurios, o que causava problemas. Atualmente, para
cada usurio criado criado um grupo pessoal.
Superusurio root tem uid=0 e gid=0. Se for cadastrado outro usurio
com estes identificadores, ele se tornar root com outro nome.
Adicionando um usurio ao sistema:
useradd <opes> <nome usurio>
-c <comentrios>(gecos).
-d <home dir> diretrio pessoal do usurio.
-m - cria o diretrio pessoal do usurio caso ele no exista.
-s <shell> interpretador de comandos que ser utilizado
(/bin/false para no ter shell).
-g <gid> informa manualmente o identificador do grupo
(que ja deve existir).
-u <uid> informa manualmente o identificador do usurio.
39
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
-p <password> a senha armazenada sem criptografia
-e <data expira senha> YYYY-MM-DD
-o permite duplicao do uid (uid=0 -> root com outro nome)
~#useradd -c "Ricardo Pinheiro" -d /home/ricardo -m -s /bin/bash ricardo
passwd - troca a senha do usurio ou do grupo
passwd <opes> usurio/grupo
-g - adiciona senha para um grupo especfico.
-r - remove a senha do grupo
-l - trava a conta do usurio
-u - destrava a conta do usurio
~#passwd ricardo
adduser - script utilizado para criar usurio de forma interativa.
--no-create-home - no cria o diretrio pessoal do usurio.
--home - informa o diretrio pessoal manualmente.
--shell - informa o interpretador de comandos manualmente.
--disable-login - trava a conta do usurio.
~#adduser alunos - faz perguntas sobre nome complete, senha, telefone..
groupadd - adiciona um grupo ao sistema
-g <gid> informa o identificados do grupo manualmente
~#groupadd -g 500 pendrive
O useradd cria o usurio mas no cria automaticamente o grupo com
nome igual (coloca o usurio no grupo user gid=100), o adduser cria.
~#groupadd teste - cria o grupo teste com gid seguinte ao ltimo grupo
criado com adduser (comea em 1000).
groupdel - apaga um grupo do sistema
~#groupdel teste
Editar o arquivo /etc/group e digitar alunos no final da linha do grupo
pendrive. pendrive:x:500:alunos (usuario alunos passou a fazer parte
do grupo pendrive).
Editar o arquivo /etc/gshadow.
pendrive:!::alunos (para poder logar, tem que colocar alunos no grupo
pendrive aqui tambm).
id - mostra a identificao dos grupos, alm dos nomes
~#id alunos
40
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
groups - mostra os grupos do usurio
~#groups alunos -> alunos: alunos pendrive
Logado como alunos:
~$newgrp pendrive - troca o grupo atual do usurio.
~$id alunos - mostra os grupos.
~$touch teste - cria o arquivo teste
~$ls -la - mostra o arquivo teste como do usurio alunos, grupo
pendrive.
~$exit - sai do grupo pendrive.
~$touch teste2 - cria o arquivo teste2.
~$ls -la - mostra o arquivo teste2 como do usurio alunos, grupo
alunos.
usermod - modifica as configuraes do usurio.
-c - troca o comentario (gecos).
-s - troca o shell
-l - troca o nome de login
-d - troca o diretorio pessoal
~#usermod -s /bin/false alunos - o usurio alunos no mais
conseguir logar no terminal, somente na interface grfica, mas no abre
o terminal grfico.
~#usermod -s /bin/bash alunos - atribui o shell bash ao usurio
alunos.
chage - modifica informaes sobre a expirao da senha
-m <mindays> mnimo de dias para a nova troca de senha.
-M <maxdays> mximo de dias em que a senha vlida.
-d <lastday> data da ltima troca, em dias, desde 01/01/1970.
Formato: YYYY-MM-DD
-W <warndays> dias de aviso de expirao da senha.
-E <expiredate> data de expirao da senha. Formato: YYYY-MM-DD
-l - lista as configuraes atuais.
~#chage -l alunos
~#chage ricardo - modifica tudo interativamente
su - permite logar como outro usurio.
~#su alunos
logado como usurio:
~$su root (pede a senha) ou ~$su -
~$su -c date (executa um comando como root - pede senha).
Se tentar ver o arquivo como usurio comum:
~$cat /etc/shadow
41
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
permisso negada
Para ver como root:
~$su -c "cat /etc/shadow" (entre aspas)
/etc/adduser.conf - controla os parmetros do script adduser
/etc/login.defs - controla os parmetros dos programas useradd e
expirao de senha.
42
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
20/09/2006 aula 14
groupdel - Apaga um grupo.
#groupadd teste
#groupadd -g 500 dados
#groupdel teste
#adduser teste
userdel <opo> usuario - apaga um usurio do sistema
-r - remove todos os arquivos do usurio alm do seu diretrio
pessoal
#userdel -r teste
gpasswd - adiciona senha e/ou usurios a um grupo
-a - adiciona usurio ao grupo
-d - apaga um usurio de um grupo
-r - remove a senha de um grupo
# adduser alunos
#gpasswd -a alunos dados (inclui alunos no rupo dados em ambos os
arquivos: group e gshadow)
$ newgrp dados
$ id
finger - programa utilizado para obter informaes sobre um usurio,
tanto local, quanto remotamente.
Obs.: Normalmente as distribuies no liberam informaes para
mquinas remotas.
#finger root
#finger root 10.11.1.16 (host remoto recusa conexes)
chfn - troca informaes do campo "gecos"
-f - nome completo
-r - n da sala
-w- telefone do trabalho
-h telefone de casa
-o outras permisses
Obs.: O usurio no poder trocar o nome completo, para que isso seja
possvel teremos de editar o arquivo /etc/login.defs linha 224
(CHFN_RESTRICT f r w h)
~# chfn aluno (pede senha e depois permite as modificaes definidas
com CHFN_RESTRICT)
43
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
pwconv - converte as senhas encontradas em /etc/passwd para o arquivo
/etc/shadow
grpconv - converte as senhas encontradas em /etc/group para o
arquivo /etc/gshadow
pwunconv - faz o processo inverso do comando pwconv.
grpunconv - faz o processo inverso do comando grpconv.
Obs.: Antigamente esse procedimento tinha de ser feito manualmente.
Hoje em dia as distribuies ja fazem automaticamente este
procedimento.
pwck - Verifica a integridade de seus arquivos de senhas.
-r - somente verifica.
-s - pe em ordem alfabtica os usurios.
grpck - Verifica a integridade de seus arquivos de grupo.
-r - somente verifica.
users - Mostra os nomes dos usurios logados.
Permisses
Todo sistema operacional tipo UNIX trabalha com multi-tarefas e
multi-usurios. Para que um usurio possa invadir o espao do outro, foi
criado um sistema de permisses sobre arquivos e diretrios.
#ls -la /
permisses links absolutos
tipo do
arquivo
dono grupo outros quant.
subdiretrios
usurio grupo tam. nome do
diretrio
d r w x r - x r - x 2 root root 4096 bin
Tipos de arquivos:
d - diretrio
- - arquivo comum
p - pipe
s - socket
l - link simblico ou direto
b - bloco - dispositivo /dev
c - caracter - dispositivo /dev
Permisses para arquivos:
44
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
r - somente leitura
w - escrita
x - execuo
- - desligado
Permisses para diretrios:
r - permite listar o contedo
w - permite criar, apagar e mover arquivos
x - permite entrar no diretrio
- - desligado
Debian usa mscaras padro na criao de:
diretrio drwxr-xr-x
arquivo rw-r--r--
Mandriva usa rwxr-x---, que o mais correto.
Modificando permisses
-u dono do arquivo ou diretrio (user)
-g grupo do arquivo ou diretrio (group)
-o outros usurios (other)
-a todos (all)
+ - adiciona uma permisso sem alterar as outras
- - remove uma permisso sem alterar as outras
= - iguala as permisses, ou seja, pe exatamente como foi listado
chmod utilizado para modificar permisss de arquivos e diretrios
chmod <opes> <permisses> <arquivo/diretrio>
-R - recursivamente (tudo abaixo do diretrio)
-c - reporta quando uma modificao feita
-f - suprime mensagens de erro
~# touch teste.txt
~# ls la teste.txt (permises do arquivo teste.txt) -rw-r--r--
~# chmod o-r teste.txt
~# chmod a=rw teste.txt
~# chmod g=w teste.txt
45
u g o
r w x r w x r w x
a
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
~# chmod u=rw,g=r,o= teste.txt
Problema com duas placas de rede habilitadas e o debian no conseguia
instalar programas. Soluo do Instrutor:
~# mii-tool (mostra se as duas placas de rede esto habilitadas)
Editou o arquivo /etc/network/interfaces e trocou eth0 por eth1.
Iniciou o servio de novo:
~# /etc/init.d/networking restart
Desabilitou a eth0:
~# ifconfig eth0 down
46
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
21/09/2006 aula 15
Permisses
Exemplos:
#mkdir /dados - O diretrio ser criado com as seguintes permisses:
rwx | r - x | r - x
#cd dados
#touch teste.txt - O arquivo ser criado com as seguintes permisses:
rw - | r - - | r - -
#chmod o-r teste.txt - O arquivo ficar com as seguintes permisses:
rw - | r - - | - - - -> tirou a permiso de leitura de 'outros'.
#chmod g=u - grupo ficar com as mesmas permisses do dono.
Criar usurio alunos:
#adduser alunos
Criar o grupo dados e incluir o usurio nele:
#groupadd dados
#gpasswd -a alunos dados
ou
#adduser alunos dados
chown - muda o dono e grupo de um arquivo/diretrio.
Opes:
-R -> recurssivamente.
-c -> reporta somente as mudanas.
-f -> no mostra mensgens de erro.
-v -> verbose, mostra um diagnstico de cada arquivo processado.
#chown root.dados /dados ou #chown .dados /dados
mantm o root como dono e muda o grupo do diretrio /dados para o
grupo dados. (se usar `: no lugar de `. tambm funciona)
chgrp - muda o grupo de um arquivo/diretrio
Opes:
-R -> recursivamente
-c -> reporta as mudanas
-f -> no mostra mensgens de erro
-v -> verbose, mostra um diagnstico de cada arquivo processado.
#chgrp dados /dados
Criar novo usurio raimundo. Criar 2 arquivos, 1 com o usurio aluno e
outro com o uaurio raimundo.
47
Permisses
r leitura
w gravao
x execuo
Alvo
u usurio
g grupo
o outros
a todos
Ao
+ adiciona
- remove
= iguala
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
Temos agora em /dados:
drwxrwxrwx 2 root dados .
-rw-r--r-- 1 aluno aluno arqaluno.txt
-rw-r--r-- 1 raimundo raimundo arqraimundo.txt
Teoricamente, outros no podem apagar arquivos, mas consegue por
causa da permisso geral dada no diretrio.
Se for feita a mesma coisa no diretrio /tmp, no ser possvel a um
usurio apagar um arquivo do outro porque as permisses do diretrio so
rwxrwxrwt. Veremos em permisses especiais.
Muito cuidado ao atribuir permisses em diretrios.
PERMISSES NUMRICAS OCTAIS
r = 4
w = 2
x = 1
#chmod 750 /dados - o diretrio ficar com as seguintes permisses:
rwx | r - x | - - -
7 = r (4) + w (2) + x (1)
5 = r (4) + x (1)
0 = - - -
~# mkdir m 750 /sistema cria o diretrio e estabelece as permisses.
PERMISSES ESPECIAIS
SUID - s -> vem no campo x do dono
Aplicado em arquivos binrios, permite que o programa seja executado
como se fosse o dono do arquivo.
Para um processo ser executado pelo dono do arquivo, mesme sendo
48
octal binrio permisses
0 000 - - -
00 - - x
2 00 - w -
! 0 - w x
4 00 r - -
" 0 r - x
6 0 r w -
# r w x
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
chamado por outro usurio, dever ser setado o suid para o processo.
chmod u+s /bin/sleep
#top - mostra os processos que esto em memria/execuo
u - abre prompt para digitar o nome do usurio onde sero
mostrados somente os processos executados pelo usurio.
Trocar de tty e rodar um comando para ver na tela do comando top:
#sleep 2m - pausa de 2 minutos.
SGID - s -> vem no campo x do grupo
Permite que um binrio rode como de fizesse parte do grupo do
binrio (no faz muito sentido).
Em diretrio, permite que todos os subdiretrios/arquivos sejam criados
com o grupo do diretrio.
Obs: O diretrio /home pertence ao grupo staff e tem permisses rwx |
rws | r-x , qualquer subdiretrio criado pelo root, ter como grupo o staff.
STICK BIT - t -> vem no campo x de outros
Quando um binrio no mais utilizado, se estiver com essa
permisso ativa, ser mantido em memria. Caso seja solicitado
novamente ele ser rapidamente utilizado, pois no precisa ir ao disco
buscar o binrio.
Em diretrio, permite que somente o dono do arquivo possa apag-
lo, mesmo que a permisso do diretrio permita.
Ex.: o diretrio /tmp
Criar o arquivo ricardo.sh no diretrio /sistema e mudar as permisses
para rwxrwxrwx.
~# touch /sistems/ricardo.sh
~# chmod 777 ricardo.sh
Copiar o arquivo para /root e ele ir com as permisses 755, as mesmas
do ditretrio /root.
~# cp /sistema/ricardo.sh ~
Criar arquivo outroarq.txt com permisses 777 e copiar para /root com o
parmetro p e ele manter as permisses originais.
~# cp -p /sistema/ outroarq.txt ~
Ver tudo sobre provas de certificao em www.vue.com.br
Mscara Padro de Usurio
~# mkdir teste permisses do diretrio: rwxr-xr-x = 755
~# touch teste.log permisses do arquivo: rw-r--r-- = 755
49
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
Para mostrar a mscara:
~# umask
022
Definio de mscara padro:
arquivo diretrio
total 666 777
mscara 022 022
permisses 644 755
Se a mscara for 027:
arquivo diretrio
total 666 777
mscara 027 027
permisses 640 750
~# umask 027
~# mkdir teste2
~# teste2.log
Para mudar geral a mscara, alterar o arquivo /etc/profile, mudar a
linha que contm umask e depois execut-lo.
Para mudar a mscara especificamente de um usurio, modificar os
arquivos .bashrc e .bash-profile.
Para mudar a mscara de novos usurios, alterar o arquivo
/etc/adduser.conf, na linha DIR_MODE 0755.
Criar 3 diretrios no diretrio /etc/skel:
~# mkdir downloads videos imagens
Alterar o arquivo /etc/skel/.bashrc, descomentando as linhas de alias
de `ls e as 3 ltimas linhas correspondentes ao `if do bash_completion.
Adicionar um usurio:
~# adduser eliane
Tudo que se fez no /etc/skel foi criado no diretrio /home/eliane, ou seja,
os 3 diretrios e o .bashrc com as linhas descomentadas.
50
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
25/09/2006 - aula 16
CRIANDO LINKS
H dois tipos de links:
Links simblicos - apenas um atalho para o arquivo/diretorio. O link
simblico no tem permisso prpria.
Links diretos (hardlinks) - um hardlink como se um arquivo tivesse
dois nomes. Cada arquivo/diretrio possue um INODE (numero que
identifica o arquivo) com informaes sobre o mesmo; quando criamos
um hardlink estamos criando uma entrada no diretrio, mas apontando
para um INODE de um arquivo existente. Quando apagamos o arquivo
original, o hardlink continua funcionando.
Obs: no h hardlink para diretrios.
ln - cria links
ln<opoes> localizao arquivo/diretrio nome do link
opes
-s - cria link simblico
-f - fora a criao do link mesmo que j exista.
#touch teste
#ln -s teste teste1
#ln teste teste2
#ls --color=auto -la
#ln teste teste3
#ls --color=auto -la
Obs.: somente o root pode criar hardlinks.
Para ver para onde o link aponta, mostrando o inode no incio da linha:
~# ls lai teste* (-i mostra o inode)
Remover o arquivo inicial:
~# rm teste
O link teste1 continua apontando para teste, que no existe mais; se
tentar editar no consegue.
~# cat teste1 - erro: arquivo no encontrado
.bashrc descomentar as linhas para colorir o comando ls e as linhas de
alias de ls e depois o executa:
~# . .bashrc
ls mostra o link quebrado em vermelho.
51
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
Propriedades especiais de arquivos/diretrios (ext2/ext3)
chattr - modifica atributos especiais do arquivo/diretrio (somente para
ext2/3).
-R - recursivamente
Atributos:
A - arquivo/diretrio com este atibuto ativado no tem a data/hora
de acesso modificados; til quando se quer aumentar a
performance de acesso a discos e no se preocupa com
auditoria.
obs.: para usar este atributo para uma partio, deve-se
modificar/acrescentar no campo options do /etc/fstab a opo
"noatime".
a - ativa o modo append, no qual s se pode acrescentar ao
arquivo/diretrio.
c - quando o arquivo for gravado no disco, ele ser compactado.
obs.: o kernel Linux no honra este atributo.
D - quando aplicado a diretrio, qualquer modificao no contedo
deste ser gravada no disco diretamente (gravaso sncrona). No
/etc/fstab ou mount, a opo "dirsync".
d - o arquivo no marcado para backup; o programa dump verifica
este atributo para fazer backup ou no do arquivo.
E - usado tambm para compresso, mas necessita de um patch no
kernel para tal.
i - imutvel. O arquivo no pode ser modificado, nem mesmo pelo
root.
s - quando ativado, o arquivo ao ser apagado ter seus blocos
zerados.
Obs.: o kernel no honra este atributo.
S - gravao sncrona de arquivo diretamente no disco.
u - se o arquivo for apagado, a rea do disco (blocos) no fica
disponvel para gravao, possibilitando que o arquivo seja
recuperado posteriormente.
Obs.: o kernel no honra este atributo.
#chattr +i teste2
www.cdmsshare.org concorrente do compartilhando.
lsattr - mostra os atributos especiais do arquivo.
-R - recursivamente
-a - lista todos os arquivos do diretrio, inclusive os que comeam
com "."
-d - lista os diretrios como arquivos, em vez de listar seus
atributos.
~# lsattr aR
52
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
26/09/2006 - aula 17
PROCESSOS
Todo programa em disco quando solicitado passa a rodar em
memria como um processo. Podemos classificar os processos em dois
grupos:
interativos - processos normalmente iniciados a partir de um terminal e
que prendem o terminal at o encerramento do programa; requerem
tambm a ateno do usurio, aguardando uma interao.
Exemplos: vi, mcedit, kdisc, cfdisk, adduser, etc.
segundo plano - processos que rodam sem um terminal e em 2 plano;
servios do sistema so executados em segundo plano.
Exemplo: apache, postfix, syslogd, etc.
ps - Programa utilizado para visualizar os processos em execuo.
opes:
-a - todos os processos do kernel.
-e - mostra o parent process id - ppid (nmero do processo pai).
-u - de todos os usurios
-f - mostram uma hierarquia de processos pai e processo filho
(thread), como o apache que inicia outra instncia para atender
requisio de usurios
-x - todos os processos sem terminal (tty = ?)
-w - quando a linha for grande e no couber na tela, continua na
linha de baixo.
~# ps auxwf | grep apache
colunas do ps:
user - usurio que executou ao processo
pid - identificao nica de cada processo.
ppid - nmero de identificao do processo pai (quando usadas as
opes -ef)
%cpu - percentual de uso da CPU.
%mem - percentual de uso da memria.
vsz e rss - paginao do processo em memria.
tty - terminal onde o processo est sendo executado. Caso no tenha
terminal, indica que o processo um servio.
stat - status do processo, onde:
R - em execuo.
S - dormindo.
T - parado.
X - morto.
Z - defunct (zombie).
W - paginado (swap).
53
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
L - bloqueado.
adicionais:
< processos de alta prioridade
N processos de baixa prioridade
s processo pai
+ - rodando em 1 plano.
Se o processo pai for morto, o filho vira "zombie, fica preso em
memria e adotado por outro processo.
start - hora de incio do processo
time - tempo de durao
command - linha de comando que executou o processo.
~# ps ef | grep apache
user pid ppid .....
root 16951 1 .....
www-data 16952 16951 .....
www-data 16953 16951 .....
~# ps -auxfw
user pid %
cpu
%3
mem
vsz rss tty stat start time command
root 9895 0.0 0.3 2952 1560 tty1 S 09:22 0:00 /bin/bash
raimundo10326 0.0 0.3 2996 1656 pts/0 Ss+ 09:34 0:00 -rcfile
root 10118 0.0 0.0 0 0 ? S< 09:23 0:00 [kapmd]
gdm 15705 0.0 0.1 16568 10948 ? Ss 10:26 0:01 /usr/bin/gdm
top - mostra os processos em execuo; a diferena para o ps que o
top fica monitorando os processos em execuo; tem alguns campos a
mais que o ps.
Campos iguais ao ps
pid - user - virt (vsz) - res (rss) - s(stat) - %cpu - %mem
Campos que no esto no ps
pr - prioridade em que o processo iniciou - ordem de execuo.
ni - tempo de ateno que o programa ter da CPU. Pode variar de
-20 a 19. O normal 10 (no top aparece "0").
shr - memria compartilhada.
~#top
f - exibe as opes para escolher a coluna que se quer mostrar.
u <usurio> - exibe os processos do usurio digitado.
k <pid> - mata o processo. O sinal pode ser 15 terminado
(default); 9 morto; ou 1 - desconexo
O - permite escolher coluna de ordenao. Shif+r inverte a ordem
criar o grupo pendrive
#addgroup pendrive
54
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
criar outro usurio
#adduser puerari
adicionar o usurio ao grupo
#adduser puerari pendrive
logar com o novo usurio
#su puerari
D pra ver no top em que grupo o usurio est rodando um programa.
~# newgrp pendrive
~# mc
sg - permite executar um comando com a identificao de grupo diferente
do atual.
~$ sg pendrive "sleep 2m" - tem que ter aspas
nice - ajusta a prioridade que um programa ter ao ser executado.
(somente root pode mudar a prioridade de execuo)
opes
-n<prioridade> - a prioridade vai de -20 a 19, o padro 10.
~# nice -n -15 sleep 5m no precisa ter aspas
Rodar agora sem o nice e ver o pid no top
~# sleep 10m (pid = 17264)
renice - muda a prioridade de um programa em execuo.
renice <prioridade> <pid>
~#renice -12 17264
kill - utilizado para enviar sinais aos programas em execuo, ou seja,
normalmente utilizado para interromper programas.
sinal nmero descrio
-term -15 pede educadamente que o programa feche.
-hup -1 fora a releitura de seu arquivo de configurao.
-kill -9 elimina o processo, seja qual for o seu status.
kill <sinal> pid
~# kill -15 17296 ou ~# kill -term 17296
~# kill kill 17295
killall - mata processos usando o nome.
killall <sinal> <nome do processo>
#killall -term top
#killall -15 apache
55
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
Executando um programa em segundo plano
Utilizar "&" no final do comando
#sleep 5m & - no prende o terminal
job pid
[2] 17465
[1] Exit 127
#kill %2
mata o job 2 da seo
jobs - mostra os processos que esto rodando em segundo plano
~#sleep 10m
~# jobs
[1]- Running sleep 5m &
[2]- Running sleep 10m &
Ctrl+z - suspende um processo
bg - coloca o ltimo processo suspenso em background (2 plano) e
rodando.
bg <n do job> - pega o processo cujo n de job foi passado.
fg <nmero do processo em segundo plano> - coloca em 1 plano o
processo que est rodando em 2 plano.
Ctrl+c - cancela um processo que est rodando em primeiro plano.
56
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
27/09/2006 - aula 18
RAID - Aranjo redundante de discos independentes (Redundant
Array of Independent Disks)
H duas maneiras de se montar um RAID:
Hardware - Quando utilizamos placa me com suporte a RAID embutido
ou atravs de controladoras prprias adicionadas placa-me. Toda a
configurao do RAID feita na BIOS da placa-me ou da controladora;
para o sistema operacional o RAID invisvel.
Software - O sistema operacional passa a ter o controle de
criar/gerenciar o RAID. No Linux o RAID pode ser feito entre parties do
mesmo disco (no windows s pode em discos diferentes), mas isto no
tem a menor utilidade, a no ser para dar aula sem ter mais de um disco.
Nveis de RAID
RAID 0 - Data striped - Nesse nvel de RAID temos 2 discos de tamanho
idnticos e os dados so divididos e gravados nos 2 discos . H um
aumento de performance, mas no h redundncia de dados e no h
tolerncia a falhas. O tamanho do RAID a soma dos 2 discos. 20GB +
20GB = 40GB.
Se um dos discos falhar, todos os dados sero perdidos.
RAID 1 - Data Mirror - Os dados nesse arranjo so duplicados em 1 ou
mais discos, ou seja, h uma redundncia de dados. O tamanho do
arranjo igual ao tamanho de apenas um disco, caso um disco seja maior
que do outro, o tamanho do arranjo ser o do menor disco. 10GB = 10GB
-> 10GB
RAID 4 - Data Striped - Nesse nvel de RAID os dados so divididos
entre os discos do aranjo e um dos discos utilizado como paridade, no
qual so armazenadas informaes dos discos que compe o arranjo, a
fim de possibilitar a recuperao dos dados. Caso um dos discos do
arranjo queime, e haja um disco reserva, os dados so automaticamente
recuperados nesse disco reserva. Se o disco de paridade falhar, perde-se
tudo. 20GB + 20 GB 20GB (PARIDADE) 20GB (DISCO RESERVA) = 40GB
RAID 5 - Data striped
Nesse nvel de RAID, os dados so divididos entre os discos do
arranjo, no h um disco de paridade; h, em cada disco, uma parte
reservada para gravao da paridade dos outros discos do arranjo. No
caso de um disco falhar e se houver um disco reserva, a recuperao dos
dados ser feita automaticamente no disco reserva, utilizando as
informaes de paridade de um dos discos do arranjo.
20GB(a+(b+c)) + 20GB(b+(a+c)) + 20GB(c+(a+b)) 20GB(RESERVA) =
57
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
60GB menos a soma paridade de cada disco (cerca de 30%).
mdadm - Ferramenta para controle e manipulao de RAID.
Opes - criao.
-C <dispositivo> - cria um dispositivo RAID. Normalmente /dev/md0
para o 1 dispositivo RAID criado (podem existir at 8
dispositivos - de md0 a md7).
-l <nvel> - qual RAID ser utilizado (0,1,4,5,linear)
-n <parties> - quais as parties que iro compor o arranjo.
-x <qtd.reservar><parties> - define quantos discos reservas
sero utilizados e quais as parties.
-c <tamanho> - chunk - funciona como um block size para parties
ext2/3. Pode variar de 4KB a 4MB (pado 64KB). O tamanho
de 4KB compatvel com o usado no sistema de arquivos
ext2/ext3.
Preparao do disco para RAID
~# fdisk l /dev/hda disco tem 40 GB
Criar um partio extendida de 2GB (com fdisk) e 3 parties lgicas de
500MB (com cfdisk, que no deixa criar parti). Mudar o tipo para "RAID
auto detect" (FD).
#cfdisk /dev/hda
Criar o dispositivo RAID com as 3 parties ciradas anteriormente. Tem
que reiniciar a mquina, seno d erro: partition too small.
#mdadm -C /dev/md0 -c 4 -n 2 /dev/hda5 /dev/hda6 -l 5 -x 1
/dev/hda7
Logar terminal 2 rodar:
#watch -n 1 cat /proc/mdstat - executa um comando a cada 'n'
segundos
Ver detalhes do dispositivo RAID.
#mdadm -D /dev/md0 mostra hda5 e hda6 ativos
Criar o diretrio /dados
#mkdir /dados
Formatar o arranjo RAID com ext3
#mkfs.ext3 -L dados /dev/md0
Montar o RAID em /dados
#mount -t ext3 /dev/md0 /dados
Copiar alguns arquivos
~# cp R /bin /dados
Simular falha em uma das parties
#mdadm /dev/md0 -f /dev/hda5
Visualizar o RAID acusando partio/disco com falha
58
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
#mdadm -D /dev/mdo mostra hda6 e hda7 ativos e hda5 em falha
Remover o dispositivo com falha
#mdadm /dev/md0 -r /dev/hda5
Adicionar um novo dispositivo RAID
#mdadm /dev/md0 -a /dev/hda5
Verificar
#mdadm -D /dev/mdo mostra hda5 como reserva
Parar o dispositivo RAID
#mdadm -S /dev/md0
Iniciar o dispositivo RAID
#mdadm -R /dev/md0
Ao reiniciar o computador, o mdadm no ir inicializar automaticamente o
RAID, portanto deve-se editar o arquivo /etc/mdadm/mdadm.conf,
inserindo as seguintes linhas:
DEVICE /dev/hda5 /dev/hda6 /dev/hda7
ARRAY /dev/md0 devices = /dev/hda5, /dev/hda6, /dev/hda7
MAILADDR root@dominio.com.br
Adicionar ao /etc/fstab o ponto de montagem /dados
/dev/md0 /dados ext3 defaults 0 0
reboot
59
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
28/09/2006 - aula 19
LVM - Gerenciador de volumes lgicos (Logical Volume
Manegement)
O LVM adiciona uma camada a mais no gerenciador de parties do kernel
e permite que possamos adicionar parties ao sistema, mesmo que estas
parties estejam em outro disco.
Quando aplicado em sistema de arquivos, permite que possamos adicionar
mais discos ao sistema sem que tenhamos que reformatar a mquina para
adicionar esse novo disco.
O LVM trabalha com 3 camadas:
phisical volume - volume fsico - nessa camada adicionada a partio
que ir fazer parte do LVM. atribudo a essa partio um nmero
identificador unico que utilizado pelo LVM.
volume group - grupo de volume - a reunio de uma ou mais parties
que iro compor o volume; podemos entender essa camada como se fosse
o nosso disco rgido (hda, hdb, hdc, hdd...).
logical volume - volume lgico - nica camada que realmente acessvel
ao usurio. Essa camada funciona como uma partioem nosso disco
(hda1, hda5...).
Os comandos relacionados ao phisical volume, comeam com "pv", os do
volume group comeam com "vg" e os do logical volume, com "lv".
Instalar o pacote lvm2
#apt-get install lvm2
Criar 3 parties lgicas de 500MB
#cfdisk /dev/hda
marcar a partio como "Linux LVM"
(8E)
Reiniciar a mquina
#reboot
Adicionar as parties ao LVM
#pvcreate /dev/hda5 /dev/hda6
Visualizar os volumes fsicos criados
#pvdisplay
Criar o grupo LVM
#vgcreate disco_lvm /dev/hda5 /dev/hda6
Visualizar o grupo LVM
#vgdisplay ou
vgdisplay disco_lvm mostra o tamanho do volume criado 952MB
Criar a partio LVM
#lvcreate --name dados -L 952M disco_lvm
60
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
Visualizar a partio LVM
#lvdisplay
Formatar a partio LVM como ext3
#mkfs.ext3 -L dados /dev/disco_lvm/dados
Criar ponto de montagem, montar a partio e adicionar a partio ao
/etc/fstab
~# mkdir /dados
~# mount t ext3 /dev/disco_lvm/dados /dados
/dev/disco_lvm/dados /dados ext3 defaults 0 2
Aumentando um grupo LVM (adicionando uma nova partio)
Desmontar a partio LVM
#umount /dados
Adicionar a partio hda7 ao LVM criar um novo volume fsico
#pvcreate /dev/hda7
Extender a partio disco_lvm adicionando hda7
#vgextend disco_lvm /dev/hda7
Visualizar a adio do hda7 ao LVM
#pvdisplay mostra o tamanho de /dev/hda7 = 476MB
Visualizar o grupo disco_lvm
#vgdisplay
Aumentar o tamanho da partio LVM "/dev/disco_lvm/dados"
#lvresize -L +476M /dev/disco_lvm/dados
Montar a partio
#mount -a
Visualizar as parties montadas
#df -h
Aparentemente est tudo correto, porm o kernel no sabe que a partio
LVM foi aumentada.
Desmontar a partio
#umount /dados
Forar verificao na partio LVM
#fsck.ext3 -f /dev/disco_lvm/dados
ou #fsck -t ext3 -f /dev/disco_lvm/dados
ou #e2fsck -f /dev/disco_lvm/dados
Informar ao kernel a partio LVM j redimencionada
#resize2fs /dev/disco_lvm/dados
Montar a partio novamente
#mount -a
Visualizar as parties montadas
#df h
61
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
02/10/2006 - aula 20
Configurar LVM na instalao do Debian
Excluir todas as parties;
Criar uma partio primria de "5GB", com sistema de arquivos "ext3" e
ponto de montgem em "/" (hda1);
Criar partio lgica de "10GB", com sistema de arquivos "LVM" (hda5 -
gerado o volume fsico);
Criar partio "swap" lgica de 512MB (hda6);
Abrir o gerenciador de volumes lgicos para criar o grupo "disco_lvm";
Criar volumes lgicos:
Nome do volume: usuario
Tamanho: 4GB
Nome do volume: dados
Tamanho: 5,31GB (oque sobrou)
Manter - volta tela de particionamento
#1 primria 5.0 GB ext3 /
#5 lgica 10.0 GB lvm
lgica 24.5 GB espao livre
# 6 lgica 509.9 MB swap swap
vg lvm disco_lvm lv dados 5.7 GB unknown
#1 5.7 GB
vg lvm disco_lvm lv usuario 4.3 GB unknown
#1 4.3 GB
Definir sistema de arquivos e pontos de montagem dos volumes lgicos
LVM: dados=ext3 em /home e usurios=ext3 em /dados (informar
manualmente nas clulas sombreadas acima)
Finalizar o particionamento e gravar no disco.
Agora, a qualquer momento, podemos instalar um novo disco e
acrescent-lo ao volume lgico.
#fsck
#vgextend
#lvresize
Quotas
Limitar espao em disco, tanto para usurio quanto grupo.
Editar o arquivo /etc/fstab acrescentando:
/dados ext3 defaults,grpquota (controle de quotas por grupo)
/home ext3 defaults,usrquota (controle de quotas por usurio)
62
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
Salvar as alteraes e executar os comandos:
#mount -o remount /dados
#mount -o remount /home
Gerar o banco de dados para controle de quotas e dar permisso
apenas ao root
Criar no diretrio do ponto de montagem da partio os arquivos:
quota.user (usurio verso 1)
quota.group (grupo verso 1)
ou
aquota.user (usuario verso 2)
aquota.group (grupo verso 2)
Somente o root poder ler e gravar neste arquivo rw-------
#touch /home/aquota.user
#chmod 600 /home/aquota.user
#touch /dados/aquota.group
#chmod 600 /home/aquota.user
Criar o usurio alunos
#adduser alunos
Criar o grupo dados com gid 500
#addgroup -g 500 dados
Adicionar o usurio alunos ao grupo dados
#adduser alunos dados
Mudar a permisso do diretrio /dados para 770 rwxrwx---
#chmod 770 /dados
Mudar o grupo do diretrio /dados para o grupo dados
#chgrp dados /dados ou
#chown root.dados /dados
Instalar o pacote quota
#apt-get install quota
Carregar o mdulo para quota verso 2
#modprobe quota_v2 warning no license
Criar o banco de dados: grupo e usurio
#quotacheck <opes> <ponto de montagem>
-g - cria/verifica banco de dados do ponto de montagem marcado
com controle por grupo.
-u - cria/verifica banco de dados do ponto de montagem marcado
com controle por usurio.
-v - verbose
63
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
-m - no monta como apenas leitura
-F - formato do banco de dados (vfsv0-aquota / vfsold-quota)
#quotacheck -gmv /dados
#quotacheck -umv /home
Habilitar quotas
~#quotaon <opes> <ponto de montagem>
-u - habilitar quotas por usurio na partio marcada no fstab com
usrquota.
-g - habilitar quotas por grupo na partio marcada no fstab com
grpquota.
-v -verbose
#quotaon -gv /dados
#quotaon -uv /home
Edita quotas
~#edquota <opes><usurio/grupo>
-u - edita quotas para usurio
-g - edita quotas para grupo
-t - perodo de utilizao aps exercer quota soft.
#edquota alunos (ou edquota -u alunos)
$spa%o permitido quantidade de arquivos
dispositivo blo&os limite so't limite
(ardware
inodos so't (ard
)(ome 2 0000 000 ! 0 0
No terminal 2 logado como alunos...
~$dd if=/dev/zero of=~/teste1.bin bs=1k count=10050
exceder o limite soft
~$ ls -lah
~$dd if=/dev/zero of=~/teste2.bin bs=1k count=10050
exceder o limite hardware. (o arquivo ser criado truncado)
#edquota -g dados
$spa%o permitido quantidade de arquivos
dispositivo blo&os limite so't limite
(ardware
inodos so't (ard
)dados 2 0000 000 " 0 0
64
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
No terminal 2 logado como alunos...
$dd if=/dev/zero of=/dados/teste3.bin bs=1k count=90000
exceder o limite soft
$ls -lah
$dd if=/dev/zero of=/dados/teste4.bin bs=1k count=90000
exceder o limite hardware. (o arquivo ser criado truncado)
#edquota -t (para usurios)
#edquota -gt (para grupos)
~#repquota <opes> <ponto de montagem>
-v - todas as quotas
-g - todos os grupos
-u - somente usurios
-a - todos marcados com quotas em /etc/fstab
~#quotaoff <opo><ponto de montagem>
-u - habilitar quotas por usurio na partio marcada no fstab com
usrquota.
-g - habilitar quotas por grupo na partio marcada no fstab com
grpquota.
-v -verbose
65
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
03/10/2006 - aula 21
find - realiza pesquisa de arquivos/diretrios
#find <diretrio> <expresso/opo>
opes
-name - pesquisa por uma palavra chave.
-iname - pesquisa por uma palavra chave; ignora
maisculas/minsculas.
-depth - processa o contedo do diretrio primeiro e depois os
subdiretrios.
-maxdepth<num> - nmero mximo de subdiretrios verificados
(profundidade de pesquisa).
testes
-empt - verifica se o arquivo/diretrio est vazio.
-gid - localiza pelo id do grupo.
-group - localiza pelo nome do grupo.
-uid - localiza pelo id do usurio.
-links <n> - pesquisa por arquivos que possuem "n" links
-perm <mode> - pesquisa pela permisso especificada (modo octal)
-size <n(bk)> - pesquisa pelo tamanho (pode ser especificado por
"b" de bytes e "k" de kilobites).
-user <nome do usuario> - pesquisa pelo nome do usurio.
-type <tipo> - pesquisa pelo tipo do arquivo.
tipos
f - arquivo
d - diretrio
b - dispositivo de bloco
c - dispositivo de caracter
p - pipe
s - socket
l - link simblico
aes
-exec <comando> - executa um comando
#find / ls - mostrar todos os arquivos do sistema
#find / -name ls - mostrar somente os arquivos de nome ls
#find / -iname "*.conf" - todos os arquivos terminados com .conf
#find / -iname "*.conf" -exec ls -l {} \; - busca todos os arquivos
terminados com .conf e executa o ls sobre eles. No lugar de \; pode-se
usar ";.
Processo de inicializao
Aps o sistema executar seu teste interno (POST), a BIOS inicia a busca
no disco pelo setor 0, que contm o setor de inicializao, e carrega o
gerenciador de boot e este, por sua vez, carrega o kernel do sistema
66
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
operacional, no caso o GNU/LINUX. Aps todo esse procedimento
carregado o 1 processo do sistema que o init, que sempre ter pid 1.
O init o pai de todos os processos e responsvel pela inicializao do
sistema GNU/LINUX. O kernel tem pid 0.
~# kill -9 1 tentativa de matar o processo init ignorada pelo kernel.
Quando um processo perde o pai, adotado pelo init.
O arquivo de controle/configurao do init o /etc/inittab. Quando o
sistema inicializado, ele entra num nvel de execuo especificado neste
arquivo.
Existem 7 nveis de execuo; so eles:
(No Debian)
0 - desligar (halt)
1 - modo mono usurio
2-5 - modo multi-usurio (padro o 2)
6 - reinicializao (reboot)
(No RedHat, Mandriva) LPI se baseia nesta distribuio
0 - desligar (halt)
1 - modo mono usurio
2 - modo multi-usurio sem NFS
3 - modo multi-usurio
4 - reservado
5 - inicia na parte grfica ou gerenciador de login (padro o 5)
6 - reinicializao (reboot)
runlevel - mostra o nvel de execuo anterior e o atual:
N 2
N - nome (nvel anterior)
2 - nvel atual
init ou telinit - muda o nvel de execuo atual.
#init 1 ou #init s (s single user)
Voltar ao modo multi-usurio
~# init 2
Reiniciar a mquina
~# init 6
Desligar a mquina (shutdown)
~# init 0
O diretrio de scripts de inicializao esto armazenados em /etc/init.d
No Debian para:
67
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
Iniciar um servio:
#/etc/init.d/gdm start
Para um servio
#/etc/init.d/gdm stop
Reiniciar um servio
#/etc/init.d/gdm restart
No RedHat para:
Iniciar um servio:
#service gdm start ou #/etc/init.d/gdm start
Para um servio
#service gdm stop ou #/etc/init.d/gdm stop
Reiniciar um servio
#service gdm restart ou #/etc/init.d/gdm restart
Diretrios dos nveis de execuo
/etc/rc0.d a rc6.d - diretrios dos servios que sero iniciados/parados
no nvel de execuo selecionado.
Ver diretrio /etc/rc2.d com os links para os servios:
#ls -la /etc/rc2.d
s99gdm -> ../init.d/gdm
k - kill
s - start
99 - ordem de execuo (se 2 servios tm o mesmo nmero, so
executados em ordem alfabtica)
gdm - script do servio que est armazenado em /etc/init.d
Ver diretrio /etc/rc0.d com os links iniciados por k.
Arquivo /etc/inittab - est dividido em 4 campos:
identificao : nvel de execuo : ao : processo
id : runlevels : action : process
id - identificao da linha no arquivo inittab. Contm 104 caracteres; caso
inicie com um nmero o processo ser iniciado no terminal especificado
pelo referido nmero.
nveis de execuo - nveis de execuo nos quais o processo poder ser
iniciado.
68
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
ao
respawn - quando o processo terminar, ser executado novamente.
3:23:respawn:/sbin/getty 38400 tty3
ctrlaltdel - aco a ser tomada quando pressionado a combinao de
teclas mencionada.
ca:12345:ctrlaltdel:/sbin/shutdown t1 a r now
wait - o processo ser iniciado no nvel de execuo especificado e
init aguarda sua finalizao.
~~:S:wait:/sbin/sulogin
once - o processo ser executado uma nica vez ao entrar no nvel
de execuo especificado.
boot - o processo ser iniciado durante o boot do sistema e o init no
aguarda sua finalizao. O campo runlevel ignorado.
bootwait - o processo ser iniciado durante o boot do sistema e o
init aguarda sua finalizao, o campo runlevels ignorado.
initdefault - nvel de execuo padro aps o boot, o campo
processo ignorado.
id:2:initdefault:
sysinit - o processo ser iniciado durante o boot do sistema, mas
antes de boot e bootwait. O campo runlevels ignorado.
si::sysinit:/etc/init.d/rcS
69
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
04/10/2006 - aula 22
Compactadores e Pacotes de Arquivos
cpio - comando usado para copiar arquivos para dentro de outro arquivo.
O comando utiliza um arquivo texto contendo a listagem de arquivos a
serem armazenados. O arquivo criado no compactado.
-o - sada
-i - entrada
Criar um arquivo .txt com a lista dos arquivos a serem copiados.
#find / -iname "*.conf" > ~/backup.txt
Criar o arquivo backup contendo todos os arquivos da lista.
#cpio < ~/backup.txt -o > backup.cpio
tar - comando utilizado para criar pacote com diretrios e arquivos. Tar
vem de "tape archive", utilitrio muito utilizado para backup em fita. O
programa tar no oferece compactao, mas com a utilizao de
programas externos (gzip, bzip), pode criar o pacote e depois com o
auxlio destes programas pode compactar o arquivo pacote.
Principais opes:
-c - cria o arquivo de pacote.
-f - trabalha com arquivos.
-x - extrai todo o contedo de um pacote.
-C <diretorio> - em conjunto com a opo -x, permite extrair o
arquivo para o diretrio especfico.
-T<arquivo> - copia o pacote a partir de um arquivo contendo a
listagem dos arquivos.
-z - compacta/descompacta utilizando o programa gzip.
-j - compacta/descompacta utilizando o programa bzip2.
-v - verbose
-u - atualiza o pacote somente com os arquivos que foram
modificados.
-t - lista o contedo de um arquivo tar.
-r - adiciona arquivos ao final do arquivo de pacote.
#tar -cvf backup.tar -T ~/backup.txt
gzip - programa utilizado para compactar arquivos.
-9 - fora compactao mxima.
-d - descompacta o arquivo.
Obs.: ao compactar, o arquivo original destrudo .
#gzip -9 backup.tar
bzip2 - compactar que oferece melhor compactao em arquivos grandes,
tais como o cdigo fonte do kernel.
-9 - melhor compactao (padro)
-d - descompactar (bunzip2)
70
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
--keep - mantm o arquivo original
#bzip2 --keep backup.tar
Para navegar na internet pelo terminal, instalar o pacote links2
#links2 -G 10.11.1.254
Compilando o Kernel
Copiar o cdigo do kernel em: /linux/kernel/source/linux.2.4.32.tar.bz2
Descompactar o cdigo do kernel
#tar -xjvf linux-2.4.32.tar.bz2 -C /usr/src
As distribuies vm o mais genricas possvel, funcionam para qualquer
processador i386 e podem ser otimizadas para o processador da mquina
em que for instalada.
A principal finalidade de compilar o kernel a atualizao de segurana. O
kernel tambm compilado para incluir drivers e para estudar.
#uname -a - exibe a verso atual do kenel.
Criar um link simblico para o cdigo do kernel em /usr/src/linux
#ln -s linux-2.4.32 linux
#cd /usr/src/linux
Configurar o kernel
#make config - configura o kernel em modo texto, onde cada opo do
kernel mostrada uma a uma, e o arquivo de configurao s ser criado
ao final da configurao.
#make menuconfig - configura o kernel atravs de menus, no modo
texto a melhor maneira de se configurar o kernel. Necessita a biblioteca
ncurses.
#make xconfig - configura o kernel na parte grfica. Necessita da
biblioteca qt3.
Instalar make gcc binutils bin86 libncurses5-dev
apt-get install make gcc binutils bin86 libncurses5-dev
H duas maneiras de compilar
Mdulo - parte do kernel que ser adicionada posteriormente. No
compilado junto ao kernel.
Built-in - ser compilado junto ao kernel somente adicionar quando
necessrio
#make menuconfig
71
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
Para marcar como mdulo pressionar "m"
Para marcar como built-in pressionar "y"
O que adicionar como built-in:
Interface IDE
Sistema de arquivos (ext3)
Placas de rede
Habilitar cdigos experimentais
Linux Gentoo - verso que instala o linux otimizado para a arquitetura
de hardware disponvel.
72
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
05/10/2006 - aula 23
instalar o ssh
scp - copia arquivos remotos
#scp root@10.11.1.13:/media/pendrive/.config /usr/src/linux
se o informar o destino, copia para o diretrio corrente.
#sftp root@10.11.1.13
password
get /media/pendrive/.config
copia para o diretrio corrente
Para acessar a internet na M.Cury
#echo "nameserver 10.11.1.254" > /etc/resolv.conf
#route add default gw 10.11.1.254
#links2 -> file -> go url
Recomear a compilao do kernel.
No final de tudo, verificar as dependncias:
~# make dep
Se j tiver compilado o kernel, este comando faz com que comece tudo do
incio:
~# make clean
Tudo marcado como built-in ser compilado e compactado no arquivo
bzImage, o kernel:
~# time nice n -20 make bzImage
Tudo marcado como modules ser compilado em mdulos:
~# time nice n -20 make modules
Junta os mdulos em /lib/modules/2.4.32 e cria um mapeamento no
arquivo system.map:
~# make modules_install
Copiar o kernel e o config renomeado:
~# cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.32
~# cp .config /boot/config-2.4.32
~# cp system.map /boot/ system.map-2.4.32
Editar o arquivo /boot/grub/menu.lst e copier as ltimas linhas e alterar
o arquivo de boot.
73
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
09/10/2006 - aula 24
Instalar gcc, make, bin86, libcurses5-dev, bzip2, links2, module-init-tools
~#apt-get install gcc, make, bin86, libcurses5-dev, bzip2, links2, module-
init-tools
Baixar o kernel 2.6.15
~#links2 -G 10.11.1.254
/linux/kernel/source
Instalar a imagem do kernel
~#apt-get install kernel-image-2.6.8-2-686
Para ver todas as imagens: /etc/bash_completion
~#apt-get install kernel-image <tab><tab>
Descompactar o kernel em /usr/src
~#tar -xjvf linux-2.6.15.tar.bz2 -C /usr/src
Criar o link simblico
~#ln -s linux-2.6.15 linux
Reiniciar e dar boot com o kernel 2.6.8-2-686
~#reboot
~# make mrproper - verifica as dependncias e limpa compilaes
anteriores.
Copiar o arquivo .config
~#cp /boot/config-2.6.8-2-686 /usr/src/linux/.config
Configurar o kernel de dentro da pasta /usr/src/linux
~# cd /usr/src/linux
~# make menuconfig
No precisa rodar o make dep, pois j foi rodado o make mrproper, o qual
j verifica as dependncias.
#time nice -n -20 make all (all substitui bzimage e modules)
Aps a compilao
~# make modules_install
~# cp .config /boot/config-2.6.15
~# cp system.map /boot/system.map-2.6.15
~# cp arch/i386/boot/bzimage /boot/vmlinuz-2.6.15
Criar imagem ramdisk
74
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
~# mkinitrd -o /boot/initrd.img-2.6.15 2.6.15
Bizurio para copiar o kernel compilado de uma distribuio para
outra:
Copiar:
/boot/vmlinuz-x.x.x
/boot/system.map-x.x.x
/boot/config-x.x.x
/boot/initrd.img-x.x.x
/lib/modules/x.x.x
editar /boot/grub/menu.lst
incluir as linhas para inicializao do novo kernel...
executar:
# depmod -a - varre o diretorio /lib/modules/x.x.x e cria as dependncias
de cada mdulo. Arquivo /lib/modules/x.x.x/modules.dep
75
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
10/10/2006 - aula 25
Mdulos:
lsmod - lista os mdulos carregados.
insmod - insere mdulos, carrega modulos para serem utilizados.
-f - fora a instalao do mdulo, mesmo que este seja de outra
verso.
-p - verifica se o mdulo pode ser carregado.
-L - Evita que o mdulo seja carregado novamente.
-k - fora o mdulo a ser carregado como auto clean. Se no for
utilizado por um perodo de tempo, ser descarregado.
rmmod - remove um mdulo da memria.
-a - remove todos os mdulos marcados como autoclea e que no
estejam em uso no momento.
modinfo - mostra informaes sobre um determinado mdulo.
-a mostra o autor
-d mostra a descrio
-l mostra a licena
-n mostra o nome do arquivo
Sem parmetro, mostra tudo.
modprobe - ferramenta utilizada para carregar/descarregar um mdulo
da memria. Esta ferramenta funciona melhor que insmod/rmmod, pois
resolve dependncias.
-k - autoclean (o mesmo que rmmod).
-r - remove um mdulo da memria.
-l - lista os mdulos do kernel atual.
-v - verbose.
Inserir mdulo com insmod
#insmod usb-storage (pendrive)
Remover mdulo com rmmod
#rmmod usb-storage
Instalar o modulo visor (palm) -> utilizar modprob, pois este mdulo
possui dependncias e o insmod no funciona.
#modprobe visor
Baixar o cdigo fonte do kernel atual.
uname -r -> comando que retorna a verso do kernel.
76
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
#apt-get install kernel-source-2.4.27
Baixar somente os cabealhos do kernel atual
#apt-get install kernel-headers-`uname -r`
Baixar o pacote at76c503a-source
#apt-get install at76c503a-source -> mdulo para dispositivos wireless
usb (Xterasys)
Descompactar o pacote que esta localizado em /usr/src
#cd /usr/src
#tar -xzvf at76c503a.tar.gz
Para compilar o mdulo no Debian:
Criar as variveis KVERS e KSRC utilizadas pelo script /debian/rules
#export KVERS=`uname -r`
#export KSRC=/usr/src/kernel-headers-`uname -r`
Visualizar o contedo da varivel
#echo $KVERS
#echo $KSRC
No diretrio do fonte do mdulo, executar o script rules binary_modules
#cd /usr/src/modules/at76c503a
#debian/rules binary_modules
Copiar os arquivos criados para:
#cp *.o /lib/modules/2.4.27-2-386/kernel/drivers/net/wireless
Verifica dependencies de todos os mdulos carregveis do kernel:
~# depmod a
Compilao de Programas
Instalar o ssh e g++
~# apt-get install ssh g++
Copiar da mquina do instrutor o arquivo:
~# scp root@10.1.1.16:/usr/src/mldonkey-2.8.1
Descompactar dentro de /usr/src
~#tar -xjvf mldonkey-2.8.1.tar.bz2 /usr/src
make - programa utilizado para compilar um projeto, utiliza um arquivo
chamado Makefile ou makefile onde esto as regras para compilar o
programa, bem como as dependncias desse programa.
As verses mais novas dos programas fonte vm com um script chamado
77
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
"configure", que faz a checagem das dependncias e ajusta o makefile
do cdigo fonte.
~# /usr/src/mldonkey-2.8.1 ./configure
Se tudo desse certo, rodaramos:
~# make
~# make install
que colocaria tudo em /usr/src
complicado, por isto existe o apt-get.
Biblioteca (esttica/compartilhada)
Esttica - quando criamos um programa, e este depende de algumas
bibliotecas para o seu correto funcionamento, o programa pode compilar
seu programa com essa biblioteca sem necessitar de bibliotecas externas.
O cdigo tende a ficar maior.
Compartilhada - Quando um programa criado usando bibliotecas
externas, ou seja, para o correto funcionamento do programa as
bibliotecas j devem estar instaladas na mquina que iria executar o
programa.
ldd - programa utilizado para ver quais as bibliotecas compartilhadas um
programa necessita para funcionar.
~# ldd bin/ls
ldconfig - cria um banco de dados com todas as bibliotecas do sistema.
Cria um arquivo de cache com as bibliotecas encontradas. O arquivo de
configurao com os diretrios est em: /etc/ld.so.conf e o cache em
/etc/ld.so.cache
78
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
11/10/2006 - aula 26
Agendamento de Tarefas
cron - Permite agendar tarefas; normalmente utilizado na manuteno do
sistema. O cron um servio que de minuto a minuto verifica seu arquivo
de agendamento. A localizao do arquivo /etc/crontab.
O cron permite a edio do arquivo de agendamento, bem como utilizar o
programa crontab para agendar uma tarefa. Caso os arquivos cron.allow
e cron.deny no existam, normalmente, todos os usurios do sistema
podem utilizar o cron.
Os agendamentos dos usurios por meio do comando cron, so
armazenados em /var/spoll/cron/crontabs.
crontab - Programa utilizado para editar/adicionar um agendamento.
-u <usuario> - usurio utilizado no agendamento.
-e - edita/adiciona um agendamento.
-r - remove o agendamento.
-l - lista um agendamento.
Formato do arquivo crontab (requerido para o exame LPI)
#vi /etc/crontab
m ( dom m dow user &ommand
minuto (ora dia)m*s m*s dia)semana usurio &omando
0-"9 0-2! -! -2 0 a 6
0)# + dom
# , , , , root run-ports -report )et&)&ron.(ourl.
2" 6 , , , root run-ports -report )et&)&ron.dail.
4# 6 , , # root run-ports -report )et&)&ron.weekl.
"2 6 , , root run-ports -report
)et&)&ron.mont(l.
O que for colocado no diretrio /etc/cron.hourly ser executado no minuto
17 de cada hora; em /etc/cron.daily ser executado todo dia s 06:25;
em /etc/cron.weekly ser executado semanalmente aos domingos s
06:47 e em /etc/cron.monthly ser executado mensalmente no dia 1 s
06:52.
Em /etc/cron/daily existem vrios scripts: *bsdmainutils, *logrotate
~# crontab -e
* -> todos os minutos/horas/dias/semanas.
, -> cria uma lista.
79
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
- -> intervalo.
Criar um agendamento para executar o comando (find / -iname "*.conf" >
~/conf.txt), hoje s 10:55.
m
( dom m dow user &ommand
"" 0 0 ! root /ind ) -iname 0,.&on'1 2 )&on'.txt'
Foi criado o arquivo conf.txt na pasta /root com todos os aruivos com
extenso .conf.
preciso ter uma linha em branco no arquivo crontab.
Agendar o comando echo "$(date) Hoje nossa sexta-feira >>
~/msg.txt para ser executado de 2 em 2 minutos.
m
( dom m dow user &ommand
0-"9)2 , , , , 034date5 6o7e 8 nossa sexta-'eira1
22 9)msg.txt
at - comando utilizado para simples agendamentos, s sero disparados
uma nica vez. Ao digitar o comando at ele entra no modo de edio
(linha de comando), qunado voc deve colocar os comandos/scripts e para
finalizar pressionar a combinao de teclas Ctrl+d.
O at pode executar comandos de uma arquivo contendo a listagem com os
comandos a serem executados, um em cada linha. Se a mquina estiver
desligada na hora de um agendamento, o agendamento ser executado
aps a mquina ser ligada.
Exemplos de data/hora
mmddyy
mm/dd/yy
dd.mm.yy
teatime - 4 horas da tarde
midnight - meia noite
hh:mm
noon - meio-dia
am/pm - manh/tarde
tomorrow - amanh
+ n unidade - minutes/hours/days/weeks
80
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
~# at + 5 minutes
Abre o console:
echo "funcionou" > /dev/tty2
Ctrl+d
job 2 at 2006-10-11 12:15
atq - mostra agendamento
~# atq
2 2006-10-11 12:15 a root (2 o nmero do job)
atrm <job> - remove o agendamento especificado.
Executar mais de um comando na mesma linha
ponto-e-vrgula:
~# mkdir dados ; cd ~/dados
e lgico (S executa o 2 comando se o 1 funcionar).
~# mkdir /sistema && echo "O comando funcionou"
ou lgico (S executa o 2 comando se o 1 no funcionar).
~# mkdir /papai/mamae || echo "O comando no funcionou"
Copiar arquivos .ppt sobre wireless na mquina do instrutor.
81
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
16/10/2006 - aula 27
Varivel - espao em memria reservada. H dois tipos de variveis no
sistema:
Local - s existe para a shell corrente, caso seja feito logout, deixa
de existir.
Global - tipo de varivel vlida para todo o sistema em todas as
sees.
O comando "env" mostra somente as variveis locais e o comando "set",
as variveis globais.
Por conveno os nomes das variveis so definidos em letras
MAISCULAS.
Definindo uma varivel local:
~# DIA_SEMANA=`date +%A` ou $(date +%A)
Definindo uma varivel global:
~# export DIA_SEMANA=$(date +%A)
A varivel no foi reconhecida em outro terminal; preciso rodar um
outro comando de que o Mestre no sabe os parmetros no momento.
DATA=`date +%d/%m/%y`
HORA=`date +%H:%M`
Protegendo uma varivel:
~# readonly DIA_SEMANA
A varivel no poder ser modificada, apagada ou alterada a propriedade
de somente leitura.
Apagando uma varivel:
~# unset DIA_SEMANA
Quoting
~# FRASE="Hoje est um lindo dia\!"
~# echo $FRASE
~# FRASE="Hoje dia $DATA $DIA_SEMANA" (aspas duplas)
~# echo `Hoje dia $DATA (aspas smples)
aspas duplas - substituem a varivel pelo seu contedo.
aspas simples - no fazem a substituio pelo contedo de uma varivel.
crase - executa o comando delimitado por ela. O mesmo que $
82
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
(comando).
~# echo "Hoje est muito \quente\
~# echo `Hoje est muito quente
Ambos imprimem: Hoje est muito "quente
Shell script
Parametros posicionais
$0 - Nome do script;
$1 ... $9 - Parmetros de 1 a 9
${10}... - Parmetros de 10 ou mais.
$$ - PID do script
$# - Quantidade de parmetros.
$* - Mostra todos os parmetros passados.
$? - Cdigo de retorno do script. Se 0 (zero) o script foi executado
sem erros; diferente de 0 (zero), um erro foi encontrado.
Vamos escrever nosso primeiro script:
Normalmente, a 1 linha de um script deve ser:
#!/bin/bash
Continua com comentrios:
# parmetros.sh
# data: 10/10/2006
# Raimundo Nascimento
# dindo@globo.com
# no sei ainda para que vai servir este script
echo "o 1 parmetro foi: $1
echo "o 2 parmetro foi: $2
echo "o 3 parmetro foi: $3
echo "o 4 parmetro foi: $4
echo "o nome do script $0 e seu pid $$
echo "o total de parmetros $# e os parmetros so $*
preciso dar permisso para execuo:
~# chmod +x parmetros.sh
ou ento
~# chmod 700 parametros.sh
Para executar o script:
~# ./parmetros.sh um dois trs quatro
ou ento
~# sh parametros.sh um dois trs quatro
83
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
A varivel PATH contm o caminho para os arquivos executveis:
~# echo $ PATH
/usr/local/sbin:/ /usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11
Incluir o root no PATH:
~# export PATH=$PATH:/root
Agora, para rodar o script no precisa mais de "./, s:
~# parmetros.sh eu tu ele ns vs eles
Verificar se o script rodou com sucesso:
~# echo $?
Testes
test <expresso> (ver em /etc/crontab)
[ expresso ] (ver em /etc/profile)
Testes de string
= - igual
!= - diferente
> - maior
< - menor
>= - maior ou igual
<= - menor ou igual
Testes numricos
-eq - igual
-ne - diferente
-gt - maior que
-lt - menor que
-ge - maior ou igual
-le - menor ou igual
Testes de arquivo
-f - se existe e um arquivo.
-d - se existe e um diretrio.
-s - se existe e maior que zero.
-x - se tem permisso de execuo.
-w - se tem permisso de escrita.
-r - se tem permisso de leitura.
Testes booleanos
-a - and (e).
-o - or (ou).
! - not (no).
84
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
Teste condicional
if [ expresso ]; then
comando (expreso verdadeira)
else
comando (expresso falsa)
fi
outro tipo:
if [ expresso 1 ]; then
comando (expresso verdadeira)
elif [ expresso 2 ]; then
comando (expresso 1 falsa e expresso 2 verdadeira)
elif [ expresso 3 ]; then
comandos (expresses 1 e 2 falsas)
fi
Laos
for varivel in lista_de_valores
do
comando
done
while expresso
do
comando (executa enquanto a expresso for verdadeira)
done
Outros
case valor in
padro 1)
comandos;;
padro 2)
comandos;;
*)
comandos;; (valor diferente dos padres listados)
esac
85
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
17/10/2006 - aula 28
Expresses aritmticas (somente inteiros)
let expresso ou ((expresso))
/ diviso
* multiplicao
+ adio
- subtrao
Exemplo: #echo $((240/2)
Menu Simples
select varivel in lista_de_valores
do
comando
done
Script simples de menu:
#!/bin/bash
#---------------------------------------------------------------
#script de exemplo
#menu.sh 17/10/2006
#M.Cury Informtica
#---------------------------------------------------------------
select arq in /etc/fstab /etc/inittab /etc/passwd
do
mcedit $arq
exit 0
done
Para um menu mais incrementado pesquisar: dialog
Exemplo de usos de case
#!/bin/bash
#---------------------------------------------------------------
#script de exemplo
#case.sh 17/10/2006
#M.Cury Informtica
#---------------------------------------------------------------
echo "Digite D para mostrar data"
echo "Digite L para listar raiz"
echo "Digite W para listar usurios logados"
86
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
read OPC
case $OPC in
[Dd]) date;;
[Ll]) ls -la /;;
[Ww]) who;;
*) echo "Opo invlida\!" exit 1;;
esac
[Dd] quer dizer que tanto faz digitar maiscula ou minscula.
Exemplo do uso de if
#!/bin/bash
#---------------------------------------------------------------
#script de exemplo
#testanum.sh usando if
#M.Cury Informtica
#---------------------------------------------------------------
echo "Digite um nmero entre 1 e 100"
read NUM1
echo "Digite um nmero entre 1 e 100"
read NUM2
if test "$NUM1" -eq "$NUM2";
then
echo "$NUM1 igual a $NUM2"
elif [ "$NUM1" -lt "$NUM2" ];
then
echo "$NUM1 menor que $NUM2"
else
echo "$NUM1 maior que $NUM2"
fi
Livro:
Scripts de shell linux com BASH R$ 88,20
Ken O. Burtch
www.lcm.com.br
site: www.portaladsl.com.br
ssh - shell segura, o arquivo de configurao est localizado em
/etc/ssh/sshd_config
linha descrio
5 Port 22 -> porta de acesso ao ssh
26 Permit Root Login yes mudar para no
43 PermitEmptypasswords no
71 Subsystem sftp /usr/lib/sftp_server comentar a linha se no
quiser usar sftp no recomendado
87
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
sftp - tranferncia de arquivos por ftp seguro (criptografado)
sftp root@10.11.0.14
get nome_arquivo (baixa um arquivo)
mget nome* (baixa vrios arquivos)
lcd (muda diretrio corrente da mquina local)
Instalar pacote proftp ftp ncftp
Arquivo /etc/proftpd.conf
linha descriao
6 ServerName "Puerari - FTP server"
18 DisplayLogin welcome.msg (/home/ftp/welcome.msg)
(para deixar as letras grandes, utilizar o pacote "figlet")
(#figlet puerari >> /home/ftp/welcome.msg)
37 Port 21
64-103 Acesso para usurio annimo (descomentar 64 a 103)
Reiniciar o servio
/etc/init.d/proftpd restart
88
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
18/10/2006 - aula 29
Intalar o apache.
Habilitar suexec = sim
O arquivo de configurao do apache est localizado em
/etc/apache/httpd.conf
linha descrio
238 Port 80 (Porta de acesso ao servidor web)
260 ServerAdmin adm@mcury.com.br (e-mail do administrador)
273 ServerName localhost (domnio do servidor)
282 DocumentRoot /var/www
(Diretrio do servidor, onde as pginas do site sero lidas)
773 LanguagePriority pt-br pt (prioridade do idioma das pginas)
Aps fazer alteraes no arquivo, reiniciar o apache:
# /etc/init.d/apache restart
Acesso pgina do apache:
http://localhost ou file:///var/ww/index.html
NFS - Network File System
Protocolo criado pela Sun Microsystem para micros sem discos (diskless),
usando a rede e um servidor central para armazenar os dados das
estaes. A Sun Microsystem liberou o cdigo fonte e logo foi
implementado no Linux.
Para instalar o NFS no Debian precisamos do pacote: nfs-kernel-server;
com este pacote instalado sua mquina funcionaria como um servidor de
arquivos. Se a sua mquina fosse apenas um cliente, bastaria instalar o
pacote nfs-common.
Para o NFS funcionar ele precisa que o servio portmapper esteja
instalado e funcionando. O portmapper traduz os endereos criados pela
Sun, em endereos TCP/IP
O NFS como servidor utiliza o arquivo /etc/export com os diretrios que
sero exportados para a rede especificada no arquivo.
Na mquina servidor:
instalar o nfs:
~# apt-get install nfs-kernel-server
editar o arquivo /etc/exports e, na primeira linha, digitar:
/srv/nfs 10.11.1.0(ro,async)
Isto exporta o contedo do diretrio /srv/nfs para as mquinas da rede
10.11.1.x no modo somente leitura e gravao assncrona.
89
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
reiniciar o servio:
~# /etc/init.d/ nfs-kernel-server restart
Na mquina cliente:
verificar os diretrios exportados da mquina servidor:
~# showmount e 10.11.1.16
Resultado:
Export list for 10.11.1.16
/srv/nfs 10.11.1.0/8
criar um diretrio para ponto de montagem:
~# mkdir /srv/servidor
montar o dispositivo:
~# mount -t nfs -o hard,bg,intr 10.11.1.16:/srv/nfs /srv/servidor
No possvel criar nada neste diretrio local /srv/servidor porque ele foi
exportado como read only.
Opes comuns do export
ro - somente leitura
rw - leitura e escrita
root_squash - Por segurana o usurio root no deve montar um
sistema de arquivos remotamente, ento seu UID e GID, que so 0,
substituido por 65534 (nobody/nogroup). abilitado por padro.
no_root_squash - Permite que o usurio root grave arquivos/diretrios
com o seu uid/gid.
all_squash - Todos os usurios teriam seu uid/gid trocados por 65534
(nobody/nogroup).
Opes do mount para NFS
bg - se ao montar o nfs falhar, tenta montar em 2 plano liberando o
mount para outras montagens.
hard - se o servidor nfs sair do ar, as operaes que tentam utilia-lo
sero bloqueados e somente sero liberados se o servidor voltar a
funcionar.
soft - se um servidor nfs sair do ar, as operaes que tentam utiliza-lo
iro falhar.
intr - permite que os usurios interrompam operaes bloqueadas, faz
com que retorne um erro.
nointr - no permite que os usurios interrompam operaes bloqueadas.
tcp - utiliza o protocolo de transmisso TCP ao invs do UDP (padro).
ifconfig - comando utilizado para configurar uma interface de rede;
90
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
permite a troca de IP, mascara broadcast etc...
Exemplos:
troca o IP/mascara
#ifconfig eth0 192.168.0.2 netmask 255.255.255.0
desabilita a interface eth0 (sem ip)
#ifconfig eth0 down
habilita a interface eth0
#ifconfig eth0 up
cria interface virtual para a mquina
#ifconfig eth0:1 192.168.0.n netmask 255.255.0.0
visualizar as configuraes de todas as redes ativas
#ifconfig
91
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
19/10/2006 - aula 30
Instalar: x-window-system, make, gcc, binutils, bin86, ...
Arquivo de configurao ds interfaces de rede
#vi /etc/sysconfig/network-scripts/if-cfg-eth0 (red-hat)
#vi /etc/network/interfaces (debian)
outo lo
/face lo inet loopback
auto eth0
/face eth0 inet static (ou dhcp)
# address 10.11.1.13
# netmask 255.255.0.0
# network 10.11.0.0
# broadcast 10.11.255.255
# gateway 10.11.1.254
Servidor DNS = bind
Arquivo de configurao: /etc/bind/db.root
Nome da mquina - /etc/hostname
Associa o IP a um nome (DNS) - /etc/hosts
Bloqueio de acesso a servios de rede - /etc/hosts.deny
ssmd: 10.11.1.0/16
ssmd: 10.11.1.10
Permisso de acesso - /etc/hosts.allow
Superservidor - /etc/inetd.conf
listagem de portas e servios - /etc/services
Relao de arquivos de log - /etc/syslog.conf
Diretrio dos arquivos de log - /var/log
last - mostra os acessoa a mquina.
ethereal - Sniifer para captura de pacotes.
Servidor de impresso:
Instalar os pacotes cupsys, cupsys-bsd, cupsys-driver*, footic* xpp
#vi /etc/cups/cupsd.conf
linha descrio
71 descomentar para log
427 porta padro 631
772 adicionar a linha Allow From 10.11.1.0/16
92
LINUX SYSTEM ENGINEER
Instrutor Ricardo Pinheiro ricardopinheiro@mcury.com.br
#vi /etc/cups/client.conf
linha descrio
41 ServerName 10.11.1.16
63 adicionar: <location />
Order Deny, allow
Deny From All
Allow From 127.0.0.1
Allow From 10.11.1.0/16
</location>
<location /printers>
Auth Type None
Order Deny, allow
Deny From All
Allow From 127.0.0.1
Allow From 10.11.1.0/16
</location>
Reiniciar o cups
#/etc/init.d/cupsys restart
93

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