0 оценок0% нашли этот документ полезным (0 голосов)
171 просмотров93 страницы
O documento discute a origem do Linux a partir do Unix e do GNU, listando versões importantes do kernel Linux e componentes fundamentais da estrutura de diretórios e arquivos do sistema Linux como /bin, /dev, /etc e /var.
O documento discute a origem do Linux a partir do Unix e do GNU, listando versões importantes do kernel Linux e componentes fundamentais da estrutura de diretórios e arquivos do sistema Linux como /bin, /dev, /etc e /var.
O documento discute a origem do Linux a partir do Unix e do GNU, listando versões importantes do kernel Linux e componentes fundamentais da estrutura de diretórios e arquivos do sistema Linux como /bin, /dev, /etc e /var.
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