Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila 4linux - 450 - Linux Essentials
Apostila 4linux - 450 - Linux Essentials
Apostila 4linux - 450 - Linux Essentials
www.4linux.com.br
-2
Sumrio
Captulo 1 Introduo ao infinito...............................................................................................................11 1.1. Objetivos ......................................................................................................................11 1.2. Introduo ....................................................................................................................11 1.3. Distribuies GNU/Linux .............................................................................................13 1.4. Caractersticas de Algumas Distribuies ...................................................................16
1.4.1. RedHat ...............................................................................................................................17 1.4.2. SuSe ...................................................................................................................................17 1.4.3. Mandriva ...........................................................................................................................17 1.4.4. Slackware ..........................................................................................................................18 1.4.5. Debian ...............................................................................................................................18 1.4.6. Ubuntu................................................................................................................................18 1.4.7. Fedora ................................................................................................................................19 1.4.8. OpenSuSe ..........................................................................................................................19 1.4.9. Knoppix...............................................................................................................................19 1.4.10. Gentoo .............................................................................................................................19 Exerccios Tericos .......................................................................................................................20
Captulo 2 Primeiros Passos......................................................................................................................22 2.1. Objetivos ......................................................................................................................22 2.2. Entendendo a estrutura do Linux ................................................................................22 2.3. Introduo ao Shelll ....................................................................................................24 2.4. Terminal Virtual ...........................................................................................................25 2.5. Logon ...........................................................................................................................26 2.6. Histrico de comandos .................................................................................................26 2.7. Logout ..........................................................................................................................27 2.8. Desligando o Computador ............................................................................................27 2.9. Reiniciando o Computador ...........................................................................................28 2.10. Prtica Dirigida ..........................................................................................................29 2.11. Exerccio Terico.........................................................................................................31 Captulo 3 Sistema de Arquivos e Diretrios ............................................................................................32 3.1. Objetivos ......................................................................................................................32 3.2. Introduo ....................................................................................................................32 3.3. Estrutura de Diretrios GNU/Linux .............................................................................33
-3
3.4. Diretrio Recomendado ...............................................................................................37 3.5. O diretrio /sys .............................................................................................................38 3.6. Diretrios Opcionais.....................................................................................................38 3.7. Comandos de Movimentao .......................................................................................39 3.8. Prtica Dirigida ............................................................................................................41 3.9. Exerccio Terico ..........................................................................................................43 3.10. Laboratrio .................................................................................................................45 Captulo 4 Aprendendo comandos do GNU/Linux ....................................................................................46 4.1. Objetivos ......................................................................................................................46 4.2. Introduo ....................................................................................................................46
4.2.1. Explorando o sistema .........................................................................................................47
4.4. Criao, movimentao, cpia e remoo de arquivos e diretrios .............................51 4.5. Prtica Dirigida ............................................................................................................53 4.6. Exerccio Terico ..........................................................................................................55 4.7. Laboratrio ...................................................................................................................57 Captulo 5 Comandos teis de linha de comando .....................................................................................58 5.1. Objetivos ......................................................................................................................58 5.2. Trabalhando com entrada e sada de dados .................................................................58 5.3. Comandos para paginao ...........................................................................................60
5.3.1. Mostrando o contedo e/ou concatenando .........................................................................60 5.3.2. Controlar o fluxo: more e less .............................................................................................61 5.3.3. Pores especficas: head e tail .........................................................................................61 5.3.4. Contagem: wc .....................................................................................................................62 5.3.5. Classificao: sort ...............................................................................................................63 5.3.6. Mostrar algo: echo ..............................................................................................................63
5.5. Administrativos.............................................................................................................66
5.5.1. Espao em Disco..................................................................................................................66 5.5.2. Definindo tamanho dos objetos...........................................................................................67 5.5.3. Mostrar o uso de memria RAM: free ................................................................................67 5.5.4. Mostrar e/ou ajustar a data do sistema: date .....................................................................68 5.5.5. Mostrar por quanto tempo o computador est ligado: uptime ...........................................69
-4
5.5.6. Mostrar informaes sobre o sistema: uname ....................................................................69 5.5.7. Diferena entre arquivos: diff .............................................................................................69 5.5.8. Tempo de execuo de um programa: time.........................................................................70 5.5.9. Localizao no sistema: find ...............................................................................................70 5.5.10. Localizao usando base de dados: locate ........................................................................73
5.6. Mais e mais comandos..................................................................................................74 5.7. Prtica Dirigida ............................................................................................................75 5.8. Exerccios Tericos ......................................................................................................81 5.9. Laboratrio ...................................................................................................................82 Captulo 6 Conhecendo a Documentao .................................................................................................83 6.1. Objetivos ......................................................................................................................83 6.2. Introduo Terica .......................................................................................................83 6.3. Formas de Documentao ............................................................................................84
6.3.1. How-to's ..............................................................................................................................84 6.3.2. Manuais ..............................................................................................................................85 6.3.3. Documentao ....................................................................................................................85
6.5. Alternativas para consulta ...........................................................................................92 6.6. Comando whereis .........................................................................................................93 6.7. Comando which ............................................................................................................94 6.8. Prtica Dirigida ............................................................................................................94 6.9. Exerccios Tericos ......................................................................................................96 6.10. Laboratrio .................................................................................................................97 Captulo 7 Editores de texto .....................................................................................................................98 7.1. Objetivos ......................................................................................................................98 7.2. Introduo ....................................................................................................................98 7.3. Editor Nano ..................................................................................................................99 7.4. Editor Vim ..................................................................................................................101 7.5. Prtica Dirigida ..........................................................................................................103
7.5.1. Teste os comandos de Edio .....................................................................................................................................................103
-5
7.7. Laboratrio .................................................................................................................107 Captulo 8 Introduo a Redes ...............................................................................................................109 8.1. Objetivos ....................................................................................................................109 8.2. Os Protocolos TCP/IP ................................................................................................110 8.3. Entendendo o IP .........................................................................................................110 8.4. Entendendo o gateway da rede .................................................................................115 8.5. O servidor DNS ..........................................................................................................115 8.6. Arp e RARP ................................................................................................................116 8.7. Configurando a Rede ..................................................................................................116
8.7.1. Configurando IP e Mscara ..............................................................................................116 8.7.2. Configurando o gateway ...................................................................................................118 8.7.3. Configurao dos DNS Servers ........................................................................................119 8.7.4. Configurao esttica de rede ..........................................................................................119
8.8. Arquivo Hosts .............................................................................................................120 8.9. Comando hostname ....................................................................................................121 8.10. O arquivo nsswitch.conf ...........................................................................................121 8.11. Prtica Dirigida ........................................................................................................122 8.12. Exerccio Terico ......................................................................................................127 8.13. Laboratrio ...............................................................................................................127 Captulo 9 Manipulando Hardware e Dispositivos .................................................................................128 9.1. Objetivos ....................................................................................................................128 9.2. Dispositivos em Linux ................................................................................................128
9.2.1. Explorando o /dev .............................................................................................................129
9.6. Aplicando um Filesystem ...........................................................................................142 9.7. Arquivos de Informaes de Filesystems ...................................................................143 9.8. Configuraes de Teclado e Mouse no Console .........................................................145 9.9. Prtica Dirigida 1 .......................................................................................................145 9.10. Para aprofundar o assunto ......................................................................................146 9.11. Prtica Dirigida 2 .....................................................................................................146 9.12. Exerccios Tericos ..................................................................................................150
-6
9.13. Laboratrio ...............................................................................................................151 Captulo 10 Administrao de Usurios ...................................................................................................152 10.1. Objetivos ..................................................................................................................152 10.2. Gerenciamento de usurios ....................................................................................153 10.3. Permisses ...............................................................................................................154
10.3.1. Exemplos de permisses .................................................................................................157
10.10. Alterao do Dono e Grupo ....................................................................................166 10.11. Removendo usurios ..............................................................................................166 10.12. Umask ...................................................................................................................167 10.13. Permisses Especiais .............................................................................................168 10.14. Prtica Dirigida .....................................................................................................170 10.15. Exerccios Tericos ................................................................................................173 10.16. Laboratrio .............................................................................................................175 Captulo 11 Administrao da Shell .........................................................................................................176 11.1. Objetivos ..................................................................................................................176 11.2. O que uma shell? ...................................................................................................176 11.3. Variveis em Shell ....................................................................................................177
11.3.1. Variveis Locais e de Ambiente (globais) .......................................................................178
-7
11.4.2. Arquivos /etc/issue e /etc/motd .......................................................................................180
11.5. Tipos de shell ...........................................................................................................181 11.6. Prtica Dirigida .......................................................................................................182 11.7. Exerccio Terico ......................................................................................................185 11.8. Laboratrio ...............................................................................................................186 Captulo 12 Compactadores, Empacotadores e Procedimentos de Backup .............................................188 12.1. Objetivos ..................................................................................................................188 12.2. Empacotador TAR ...................................................................................................189 12.3. O empacotador cpio ................................................................................................191 12.4. Compactadores GZIP e BZIP2 ..................................................................................191 12.5. Falando de Backup ...................................................................................................192
12.5.1. O comando dd .................................................................................................................193
12.7. Exerccios Tericos ..................................................................................................199 Captulo 13 Shell Script I .........................................................................................................................200 13.1. Objetivos ..................................................................................................................200 13.2. O que um script? ...................................................................................................200 13.3. Estudando um exemplo ............................................................................................201 13.4. Executando o script .................................................................................................202 13.5. Usando os nmeros ..................................................................................................203 13.6. Prtica Dirigida ........................................................................................................204 13.7. Usando a estrutura SE .............................................................................................205
13.7.1. A varivel $? ..................................................................................................................206 13.7.2. O comando test ...............................................................................................................206 13.7.3. Testando strings..............................................................................................................207 13.7.4. Testando expresses matemticas ..................................................................................207 13.7.5. Testando expresses em arquivos...................................................................................207 13.7.6. Operadores de strings ...................................................................................................208 13.7.7. Operadores de matemticos............................................................................................208 13.7.8. Operadores para arquivos ..............................................................................................208
13.8. Utilizando a estrutura if ..........................................................................................209 13.9. Exerccios Tericos ..................................................................................................212 13.10. Laboratrio .............................................................................................................213
-8
Captulo 14 Agendamento de Tarefas .......................................................................................................215 14.1. Objetivos ..................................................................................................................215 14.2. Introduo Terica ...................................................................................................215 14.3. Prtica Dirigida ........................................................................................................217
14.3.1. Agendamento de Tarefas com AT ...................................................................................217 14.3.2. Agendando Tarefas com o CRON ....................................................................................219
14.4. Exerccios Tericos ..................................................................................................221 14.5. Laboratrio ...............................................................................................................222 Captulo 15 Instalando, removendo e atualizando programas .................................................................223 15.1. Objetivos ..................................................................................................................223 15.2. O que um pacote? ..................................................................................................223 15.3. Mas o que um gerenciador de pacotes? ................................................................224 15.4. Gerenciamento de pacotes .......................................................................................226 15.5. Espelhos e o arquivo /etc/apt/sources.list ................................................................227 15.6. Instalao, Remoo e Atualizao ..........................................................................228 15.7. Consultas de Pacotes ...............................................................................................229 15.8. Atualizao via Internet ...........................................................................................229 15.9. Gerenciamento de pacotes em distros baseadas em rpm. .......................................229
15.9.1. Instalando pacotes: .........................................................................................................230 15.9.2. Removendo pacotes: .......................................................................................................230
15.10. Exerccio Terico ....................................................................................................231 Captulo 16 Servidor X .............................................................................................................................233 16.1. Objetivos ..................................................................................................................233 16.2. Introduo Terica ...................................................................................................233 16.3. Configurando o suporte Interface Grfica ............................................................234 16.4. Varivel de Ambiente DISPLAY ................................................................................236 16.5. Window Managers ....................................................................................................236 16.6. Display Managers ....................................................................................................237 16.7. Protocolo XDMCP .....................................................................................................237 16.8. Xnest ........................................................................................................................238 16.9. Prtica Dirigida .......................................................................................................238
16.9.1. Instalao e Configurao do Servidor X ........................................................................238 16.9.2. Instalando um Window Manager ....................................................................................242 16.9.3. Display Managers ...........................................................................................................244 16.9.4. Usando o Xnest ...............................................................................................................245
-9
16.9.5. Servidor X Remoto ..........................................................................................................247
16.10. Exerccios ..............................................................................................................248 Captulo 17 Instalao Linux em Desktop ................................................................................................249 17.1. Objetivos ..................................................................................................................249 17.2. Instalando o Debian 4.0 - Etch .................................................................................249 17.3. Perfil da instalao: .................................................................................................249
17.3.1. Telas de Instalao .........................................................................................................251
Acessibilidade ...................................................................................................................290
Dasher ........................................................................................................................................291 GOK ............................................................................................................................................292 Festival .......................................................................................................................................293
REFERNCIAS BIBLIOGRFICAS..................................................................................................................294
- 10
1.1. Objetivos
Descobrir o que GNU/Linux; Entender a filosofia do Software Livre; Conhecer um pouco da histria; Entender o que so Distribuies;
1.2. Introduo
Utilizar um sistema GNU/Linux muito mais do que optar por uma soluo isenta de custos de licena. usufruir uma filosofia que antecedeu o software proprietrio, e que permitiu, por exemplo, que a internet crescesse de forma aberta como a conhecemos hoje. Como usurio de software livre, precisamos compreender um pouco mais sobre essa ideologia e como ela promoveu o surgimento das vrias distribuies.
Captulo 1 Introduo ao infinito - 12 O sistema GNU/Linux frequentemente chamado apenas pelo seu segundo nome, Linux. Entretanto, essa designao no faz justia a todos os desenvolvedores que vm desenvolvendo o sistema. GNU, que um acrnimo recursivo de GNU's not Unix, um grupo que foi fundado em 1984 por seu idealizador, Richard Stallman, com o intuito de criar um sistema operacional ``Unix-Like''. Sendo assim, diversos softwares passaram a ser criados e mantidos pela comunidade que se formara, entretanto, havia um pedao de cdigo essencial que ainda no tinha sido criado: o kernel. Em 1991, um jovem finlands chamado Linus Torvalds disponibilizou para o mundo a primeira verso do Linux, um kernel ``Unix-Like''. A partir desse ponto, foi possvel unir o kernel - Linux - com os softwares GNU, originando o que chamamos de GNU/Linux. O mundo GNU/Linux no apenas um conjunto de programas mas tambm uma filosofia de mundo livre e colaborativo, no qual as pessoas podem utilizar esses softwares livremente e, acima de tudo, aprender com eles, uma vez que seu cdigo fonte deve ser disponvel a todos que queiram melhor-lo ou apenas aprender com ele. Para que esse mundo continue livre, Richard Stallman fundou a FSF - Free Software Foundation, que mantm a licena chamada GNU GPL - GNU General Public License. liberdade 0 - liberdade para rodar o programa para quaisquer propsitos; liberdade 1 - liberdade para estudar como o programa trabalha e adapt-lo s suas necessidades. Ter acesso ao cdigo fonte essencial para isso. liberdade 2 - liberdade de redistribuir cpias de forma que voc possa ajudar outras pessoas. liberdade 3 - liberdade para melhorar o programa e disponibilizar as melhorias para o pblico, de forma que toda a comunidade possa se beneficiar disso. Ter acesso ao cdigo fonte essencial tambm para isso.
Aps a criao dessa licena, vrias outras licenas, usando a filosofia de copyleft, foram criadas com o objetivo de defender a liberdade do conhecimento, informao e do cdigo aberto. Abaixo podemos ver alguns exemplos:
Captulo 1 Introduo ao infinito - 13 GFDL - GNU Free Documentation Licence (www.gnu.org/copyleft/fdl.html); OPL - Open Publication License (http://www.opencontent.org/openpub/); CC - Creative Commons (http://creativecommons.org/about/licenses); BSD Berkeley Software (http://www.freebsd.org/copyright/license.html); SPL - Sun Public Licence (http://java.sun.com/spl.html); Distribution
Atualmente a GPL est disponvel em trs verses, GPLv1, GPLv2 e GPLv3. Fique por dentro de suas diferenas em: http://www.gnu.org/licenses/gpl.html Para mais informaes a respeito do kernel - Linux - podem ser obtidas no site oficial de seus mantenedores: http://www.kernel.org A respeito do GNU e da FSF podem ser obtidas nos sites http://www.gnu.org http://www.fsf.org.
Ilustrao 1: Linha de tempo GNU/Linux Atualmente existem centenas de distribuies, algumas mais famosas que outras. Em sua maioria, as distribuies GNU/Linux so mantidas por grandes comunidades de colaboradores, entretanto, h outras que so mantidas por empresas. Dessa forma, podemos dividir as distros, abreviao bastante utilizada na comunidade e que se refere s distribuies, em duas categorias bsicas:
Captulo 1 Introduo ao infinito - 15 Livres Corporativas Distribuies Livres - mantidas por comunidades de colaboradores sem fins lucrativos. Exemplos so: Debian, Ubuntu, Slackware, Gentoo, Knoppix e CentOS, entre outras. Distribuies Corporativas - mantidas por empresas que vendem o suporte ao seu sistema. Exemplos so: RedHat, SuSe e Mandriva. Neste ponto vale ressaltar o fato de que o produto vendido pelas empresas que comercializam sistemas GNU/Linux, so na verdade, os servios relacionados ao sistema vendido, como suporte tcnico, garantias e treinamentos, ou seja, o conhecimento do sistema. O fato de o produto no ser mais o software, mas sim o servio, devido Licena GPL que garante as j citadas quatro liberdades bsicas. Com isso, por mais que uma empresa queira fazer o seu prprio sistema GNU/Linux, enquanto ela estiver utilizando softwares registrados com GPL, sero obrigadas a distribuir o cdigo fonte gratuitamente. Dentro do conjunto de Distribuies Livres, podemos dividi-las novamente em duas outras categorias: Convencionais Live Distribuies Convencionais- so distribudas da forma tradicional, ou seja, uma ou mais mdias que so utilizadas para instalar o sistema no disco rgido; Distribuies Live - so distribudas em mdias com o intuito de rodarem a partir delas, sem a necessidade de instalar no HD. As distribuies Live ficaram famosas pois tm a inteno de fornecer um sistema GNU/Linux totalmente funcional, de forma fcil e sem a necessidade de o instalar na mquina. O fator que favoreceu essa abordagem que em uma distribuio Live praticamente todos os componentes j vm configurados, funcionando e com interfaces agradveis aos usurios finais. Exemplos desse tipo de distribuio so o Knoppix, do qual se originaram diversas outras como Kurumin ou Kalango, que so verses brasileiras do Knoppix, e o Ubuntu, bastante difundido atualmente.
Captulo 1 Introduo ao infinito - 16 Ainda para entender um pouco mais das distribuies, necessrio lembrar de mais duas caractersticas: From scratch Provenientes (Baseadas)
Distribuies From Scratch - So desenvolvidas do zero, ou seja, utiliza um kernel linux, alguns programas GNU e a grande maioria das suas particularidades desenvolvida especficamete para ela. Exemplos: Debian ; RedHat; Gentoo; Slackware; entre outras;
Distribuies Provenientes (Baseadas) - Aproveitam ferramentas e bases j desenvolvidas por outras distribuies. Distribuies baseadas usam distribuies from scratch para alcanar seus objetivos mais rpido, dando maior ateno para ao propsito da distribuio. Exemplos: Ubuntu, DreamLinux, Kubuntu, Kurumin, Slax, BrDesktop entre muitas outras.
1.4.1.
RedHat
Tipo: corporativa; Descrio: primeira distribuio corporativa a ser criada. Muito utilizada nas empresas por oferecer suporte tcnico e ter seu sistema compatvel com as diversas tecnologias disponveis; Interface padro: GNOME; Sistema de pacote: RPM - RedHat Package Manager; Site oficial: http://www.redhat.com
1.4.2.
SuSe
Tipo: corporativa; Descrio: Comprada pela Novell em 2003, a principal concorrente da RedHat, atuando no meio corporativo tanto em servidores quanto em desktops. Assim como a RedHat, possui parcerias com diversas empresas, a fim de manter seu sistema compatvel com produtos de terceiros;
Interface padro: GNOME; Sistema de pacote: baseado em RPM, mas no segue o formato da RedHat risca, tendo implementado algumas variaes; Site oficial: http://www.novell.com/linux
1.4.3.
Mandriva
Distribuio: corporativa; Descrio: originada da fuso da Mandrake e Conectiva, especializada em servios e projetos embarcados; Interface padro: KDE; Sistema de pacote: RPM; Site oficial: http://www.mandriva.com
1.4.4.
Slackware
Distribuio: livre; Descrio: primeira distribuio GNU/Linux a ser distribuda em CD, considerada como sendo a primeira distribuio. Organizada por seu criador Patrick Volkerding, caracteriza-se por sua filosofia de ser a distribuio mais ``Unix-Like'' do mundo GNU/Linux.
1.4.5.
Debian
Distribuio: livre; Descrio: criada com o intuito de prover um sistema operacional totalmente livre e gratuito, foi uma das primeiras distribuies GNU/Linux a serem criadas. Atualmente uma das maiores distribuies e a que mais gerou distribuies derivadas. Por ser uma referncia em sistemas GNU/Linux, a distribuio mais utilizada em rgos pblicos e governos;
Interface padro: GNOME; Sistema de pacote: DEB - Debian Package; Site oficial: http://www.debian.org
1.4.6.
Ubuntu
Distribuio: livre (convencional e Live); Descrio: com seu slogan Linux for Human Beings - voltada para o usurio final, apesar de ter verso para servidores. Patrocinada pelo milionrio Mark Shuttleworth , atualmente, a maior distribuio em nmero de downloads.
Interface padro: GNOME ou KDE (para Kubuntu); Sistema de pacote: DEB - Debian Package; Site oficial: http://www.ubuntu.com
1.4.7.
Fedora
Distribuio: livre; Descrio: mantida pela RedHat, serve de teste para o carro chefe da empresa, o RedHat Enterprise.
Interface padro: GNOME; Sistema de pacote: RPM - RedHat Package Manager; Site oficial: http://fedora.redhat.com
1.4.8.
OpenSuSe
Distribuio: livre; Descrio: patrocinada pela Novell, baseia-se no SuSe Linux. Interface padro: GNOME ou KDE; Sistema de pacote: RPM; Site oficial: http://en.opensuse.org
1.4.9.
Knoppix
Distribuio: livre (Live); Descrio: distribuio Live que popularizou distribuies do gnero, devido sua ferramenta de remasterizao que facilitou o processo de gerar novas distribuies;
1.4.10.
Gentoo
Distribuio: livre (Live); Descrio: Todos os programas so compilados na prpria mquina. As principais vantagens so a performance e a personalizao conforme as necessidades do usurio. A principal desvantagem o trabalho e tempo necessrios a sua instalao.
Captulo 1 Introduo ao infinito - 20 Interface padro: A escolha do usurio; Sistema de pacote: Emerge, cdigo fonte; Site oficial: http://www.gentoo.org
Exerccios Tericos
1) Quais so as liberdades bsicas idealizadas por Richard Stallman? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 2) O que Linux e quem o seu criador? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 3) O que uma distribuio GNU/Linux? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 4) O que GPL? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 5) Qual a finalidade das licenas que defendem o copyleft? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
Captulo 1 Introduo ao infinito - 21 6) Software livre o mesmo que software grtis? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 7) Qual foi a primeira distribuio disponibilizada em CD? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 8) Qual a diferena entre uma distro live e convencional? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 9) Como funciona o processo de desenvolvimento de uma distribuio GNU/Linux? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
2.1. Objetivos
Entender a estrutura do sistema operacional; Descobrir as funcionalidades do Shell; Executar os primeiros comandos no sistema;
Para entendermos melhor vamos descrever cada uma delas: Hardware - Dispositivos que esto disponveis para o uso do sistema, tais como cd-rom, placa de rede, controladora scsi entre outros; Kernel - O ncleo do sistema operacional, essa layer quem faz todas as interaes com o hardware da mquina, interpretando todas as requisies das layers acima; Sistema Operacional - Essa layer tem como funo auxiliar e abrigar todos os aplicativos das layers superiores. Segundo Linux torvalds esse layer no deve ser notada por um usurio leigo final; ttyN - Terminais Virtuais aonde so executados comandos e seta-das configuraes. As tty's interpretam os comandos dados por um humano e converte os mesmos para uma linguagem que a mquina entenda; DM - A Layer de Display Manager responsvel por gerenciar os logins na interface grfica e escolher o tipo de ambiente grfico que deve ser executado; Desktop Environment - Mais conhecido como gerenciador de janela, responsvel por abrigar todos os programas que necessitam um gerenciador de janelas, e por deixar o ambiente mais agradvel.
Captulo 2 Primeiros Passos - 25 rolarmos a tela para baixo, seguramos o Shift e pressionamos o Page Down. Isto til para ver textos que rolaram rapidamente para cima. Existem duas formas de executar comandos como o administrador do sistema, logando como root e usando os comandos su e sudo. su - Para usar o comando su necessrio ter o password do administrador, uma vez executado possvel executar qualquer comado como administrador do sistema. sudo - J para a utilizao do comando sudo necessrio ter a senha do usurio corrente. Esse usurio tambm precisa estar presente na lista de usurios do sudo, que apenas o administrador tem acesso atravs do comando: # visudo
A forma de se utilizar o comando sudo diferente, j que ele da permisses de execuo para apenas um comando. Utilizao com comando su: $ su <user> Utilizao com comando sudo: $ sudo <comando >
Captulo 2 Primeiros Passos - 26 No GNU/Linux possvel, em modo texto, acessar outros terminais virtuais, segurando a tecla ALT e pressionando F1 at F6. Cada tecla tem funo correspondente a um nmero de terminal do 1 ao 6, isso por default, e pode ser mudado (o stimo, por default, usado pelo ambiente grfico X-Window-System). O GNU/Linux possui mais de 63 terminais virtuais, mas deles, apenas 6 esto disponveis, inicialmente por motivos de economia de memria RAM. Se voc estiver usando o modo grfico, deve segurar Ctrl+Alt enquanto pressiona uma tecla de atalho de F1 a F6. Um exemplo prtico: se voc estiver utilizando o sistema no terminal 1, pressione Ctrl+Alt + F2, e veja na primeira linha nome e verso do sistema operacional, nome da mquina e o terminal que voc est. Voc pode utilizar quantos terminais quiser, do F1 ao F6 (inclusive utilizando o X) e pode ficar ``saltando'' de terminal para terminal.
2.5. Logon
Logon a entrada do usurio, root ou comum, onde deve ser digitado seu nome de usurio, e logo depois sua senha. Caso voc digite algo de forma errada, ir aparecer uma mensagem de erro e voc no ser logado no sistema.
2.7. Logout
Logout a sada do sistema. Ela feita pelos comandos $ logout $ exit $ <CTRL>+D ou quando o sistema reiniciado ou desligado.
A palavra halt vem do comando em assembly chamado HTL, que quer dizer ``parada de processamento''. Assim, o GNU/Linux finalizar os programas e gravar os dados em seu disco rgido. Quando for mostrada a mensagem ``power down'', pressione o boto POWER em seu gabinete para desligar a alimentao de energia do computador. NUNCA desligue o computador diretamente sem utilizar o comando shutdown, halt ou poweroff, pois podem ocorrer perdas de dados ou falhas no sistema de arquivos de seu disco rgido, devido a programas abertos e dados ainda no gravados no disco. Os comandos halt e poweroff disparam uma srie de procedimentos, como encerramento de servios e desligamento de sistemas de arquivos, que so executados antes da mquina ser desligada. Salve seus trabalhos para no correr riscos de perd-los durante o desligamento do computador. Tenha um Nobreak.
Captulo 2 Primeiros Passos - 28 O comando shutdown tem a seguinte sintaxe: # shutdown <ao> <tempo>
Onde: ao - o que voc quer fazer, As opes so: -h para desligar -r para reiniciar. tempo - tempo em minutos que voc deseja para comear a executar a ao.
Captulo 2 Primeiros Passos - 29 Prefira o mtodo de reinicializao explicado acima e use o boto reset somente em ltimo caso.
Pressione a tecla Delete para apagar o caractere acima do cursor; Pressione a tecla Home para ir ao comeo da linha de comando; Pressione a tecla End para ir ao final da linha de comando; Pressione as teclas Ctrl + A para mover o cursor para o incio da linha de comandos; Pressione as teclas Ctrl + E para mover o cursor para o fim da linha de comandos; Pressione as teclas Ctrl + U para apagar o que estiver esquerda do cursor. O contedo apagado copiado para uso com Ctrl + y;
Pressione as teclas Ctrl + K para apagar o que estiver direita do cursor. O contedo apagado copiado para uso com Ctrl + y; Pressione as teclas Ctrl + L para limpar a tela e manter a linha de comando na primeira linha. Mas se voc der um Shift + Page Up voc ainda consegue enxergar o contedo. O Ctrl + L funciona igual ao comando ``clear'', que tem a mesma funo; Pressione as teclas Ctrl + C para abrir uma nova linha de comando, na posio atual do cursor;
Captulo 2 Primeiros Passos - 30 Pressione as teclas Ctrl + D para sair do shell. Este equivalente ao comando ``exit'';
Pressione as teclas Ctrl + R para procurar ``x'' letra relacionada ao ltimo comando digitado que tinha ``x'' letra como contedo do comando;
Coloque o computador para desligar em 1 minuto: # shutdow -h 1 Ligue o micro: Faa o login: Usurio: aluno Senha: 123456 Coloque o computador para reiniciar em 1 minuto: # shutdown -r 1 Deu erro??? Por que??? Eleve seus poderes no sistema, vire root atravs do comando: # su password: 123456 E agora, voc consegue reiniciar a mquina: # shutdown -r now
4) Cite qual a principal funo do terminal de comandos? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
5) Qual a quantidade de terminais que esto disponveis no sistema operacional Debian GNU/Linux? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
3.1. Objetivos
Entender o que FHS; Conhecer a estrutura de diretrios do sistema; Descobrir alguns diretrios e suas determinadas finalidades;
3.2. Introduo
Quem j teve algum contato com o GNU/Linux, mesmo que superficial, deve ter percebido a presena de vrios diretrios (pastas) no sistema. Entretanto, eles esto organizados de uma forma talvez no muito familiar. Neste captulo, vamos conhecer a organizao e explorar a estrutura de diretrios de um sistema GNU/Linux. Desde que o GNU/Linux foi criado, muito se tem feito para seguir um padro em relao estrutura de diretrios. O primeiro esforo para padronizao de sistemas de arquivos para o GNU/Linux foi o FSSTND - Filesystem Standard,
Captulo 3 Sistema de Arquivos e Diretrios - 33 lanado no ano de 1994. Cada diretrio do sistema tem seus respectivos arquivos que so
armazenados conforme regras definidas pela FHS - Filesystem Hierarchy Standard, ou Hierarquia Padro do Sistema de Arquivos, que define que tipo de arquivo deve ser guardado em cada diretrio. Isso muito importante, pois o padro ajuda a manter compatibilidade entre as verses Linux existentes no mercado, permitindo que qualquer software escrito para o GNU/Linux seja executado em qualquer distribuio desenvolvida de acordo com os padres FHS. Atualmente, o FHS est na sua verso 2.3, e mantido pelo Free Standard Group, uma organizao sem fins lucrativos formada por grandes empresas como HP, IBM, Red Hat e Dell. A FHS estar bem esclarecida, afinal com ela que ns devemos fazer nossas atividades do dia-a-dia
Captulo 3 Sistema de Arquivos e Diretrios - 34 A rvore de diretrios do GNU/Linux tem a seguinte estrutura:
/ bin boot cdrom dev etc home lib media mnt opt proc sbin root srv var tmp usr
Da estrutura mostrada acima, o FHS determina que um sistema GNU/Linux deve conter obrigatoriamente 14 diretrios, especificados a seguir: / (raiz) Este o principal diretrio do GNU/Linux, e representado por uma ``/'' (barra). no diretrio raiz que ficam todos os demais diretrios do sistema. Estes diretrios, que vamos conhecer agora, so chamados de subdiretrios pois esto dentro do diretrio /.
/bin O diretrio /bin guarda os comandos essenciais para o funcionamento do sistema. Esse um diretrio pblico, sendo assim, os comandos que esto nele podem ser utilizados por qualquer usurio do sistema. Entre os comandos, esto: bash; ls; echo; cp;
/boot No diretrio /boot esto os arquivos estticos necessrios inicializao do sistema, e o gerenciador de boot.
Captulo 3 Sistema de Arquivos e Diretrios - 35 O gerenciador de boot um programa que carrega um sistema operacional e/ou permite escolher qual ser iniciado. /dev No diretrio /dev ficam todos os arquivos de dispositivos. O Linux faz a comunicao com os perifricos por meio de links especiais que ficam armazenados nesse diretrio, facilitando assim o acesso aos mesmos.
/etc No diretrio /etc esto os arquivos de configurao do sistema. Nesse diretrio vamos encontrar vrios arquivos de configurao, tais como: scripts de inicializao do sistema, tabela do sistema de arquivos, configurao padro para logins dos usurios, etc.
/lib No diretrio /lib esto as bibliotecas compartilhadas e mdulos do kernel . As bibliotecas so funes que podem ser utilizadas por vrios programas.
/media Ponto de montagem para dispositivos removveis, tais como: cd; dvd; disquete; pendrive; cmera digital;
Fique atento: Agora o diretrio /media faz parte oficialmente das provas da LPI
/mnt Esse diretrio utilizado para montagem temporria de sistemas de arquivos, tais como compartilhamentos de arquivos entre Windows e Linux, Linux e Linux, etc.
/opt Normalmente, utilizado por programas proprietrios ou que no fazem parte oficialmente da distribuio.
/sbin O diretrio /sbin guarda os comandos utilizados para inicializar, reparar, restaurar e/ou recuperar o sistema. Isso quer dizer que esse diretrio tambm de comandos essenciais, mas os mesmos so utilizados apenas pelo usurio root. Entre os comandos esto: halt ifconfig init iptables
/srv Diretrio para dados de servios fornecidos pelo sistema cuja aplicao de alcance geral, ou seja, os dados no so especficos de um usurio. Por exemplo: /srv/www (servidor web) /srv/ftp (servidor ftp)
Captulo 3 Sistema de Arquivos e Diretrios - 37 /tmp Diretrio para armazenamento de arquivos temporrios. utilizado principalmente para guardar pequenas informaes que precisam estar em algum lugar at que a operao seja completada, como o caso de um download.
Enquanto no for concludo, o arquivo fica registrado em /tmp, e, assim que finalizado, encaminhado para o local correto.
/usr O diretrio /usr contm programas que no so essenciais ao sistema e que seguem o padro GNU/Linux, como, por exemplo, navegadores, gerenciadores de janelas, etc.
O diretrio /usr portvel, perceba que dentro dele, existe praticamente uma outra arvore de diretrios independente da primeira, contendo, lib, bin, sbin dentre outras coisas.
/var O diretrio /var contm arquivos de dados variveis. Por padro, os programas que geram um arquivo de registro para consulta, mais conhecido como log, ficam armazenados nesse diretrio. Alm do log, os arquivos que esto aguardando em filas, tambm ficam localizados em /var/spool. Os principais arquivos que se utilizam do diretrio /var so : mensagens de e-mail; arquivos a serem impressos;
Captulo 3 Sistema de Arquivos e Diretrios - 38 Aqui, temos subdiretrios com o nome que corresponde ao PID (Process ID) de cada processo. Dentro deles, vamos encontrar diversos arquivos texto contendo vrias informaes sobre o respectivo processo em execuo.
O root o administrador do sistema, e pode alterar a configurao (dele), configurar interfaces de rede, manipular usurios e grupos, alterar a prioridade dos processos, entre outras. Dica: Utilize uma conta de usurio normal em vez da conta root para operar seu sistema.
Captulo 3 Sistema de Arquivos e Diretrios - 39 Uma razo para evitar usar privilgios root por causa da facilidade de se cometer danos irreparveis como root; alm do que, voc pode ser enganado e rodar um programa Cavalo de Troia (programa que obtm poderes do super usurio) comprometendo a segurana do seu sistema sem que voc saiba.
# pwd
# cd # cd ~
# cd /
# cd /etc
# cd ..
# cd # ls
# cd /usr/include/X11
# cd ../../
Ateno! Note a diferena entre caminhos absolutos e relativos: Absolutos: /etc/ppp; /usr/share/doc; /lib/modules Relativos: etc/ppp; ../doc; ../../usr;
Fique esperto para conhecer as diferenas entre o . e o .. e o que eles representam para o sistema. Os comandos de movimentao muitas vezes so grandes alvos nas provas, uma boa interpretao desses comandos pode ser necessria, pois voc pode precisar deles para resoler uma questo maior.
10) $ pwd
11) $ cd ~
12) $ pwd
13) $ cd -
14) $ pwd
Captulo 3 Sistema de Arquivos e Diretrios - 44 _____________________________________________________________________________ m) sbin _____________________________________________________________________________ _____________________________________________________________________________ n) srv _____________________________________________________________________________ _____________________________________________________________________________ o) tmp _____________________________________________________________________________ _____________________________________________________________________________ p) usr _____________________________________________________________________________ _____________________________________________________________________________
2) Qual a finalidade do comando pwd? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 3) Escreva a funo de cada um dos comandos abaixo: a) cd _____________________________________________________________________________ _____________________________________________________________________________ b) cd ~ _____________________________________________________________________________ _____________________________________________________________________________ c) cd / _____________________________________________________________________________ _____________________________________________________________________________ d) cd _____________________________________________________________________________ _____________________________________________________________________________ e) cd .. _____________________________________________________________________________ _____________________________________________________________________________ g) cd . _____________________________________________________________________________ _____________________________________________________________________________
3.10. Laboratrio
Alem de todos os diretrios listados acima, na raiz do sistema existe um diretrio chamado lost+found, o que representa esse diretrio? Veja tambm: FHS - http://www.pathname.com/fhs/ Free Standard Group - http://www.linux-foundation.org/en/Main_Page
4.1. Objetivos
Criar e remover arquivos Criar e remover diretrios Criar Links
4.2. Introduo
Comandos so instrues passadas ao computador para executar uma determinada tarefa. No mundo *NIX (Linux,Unix), o conceito de comandos diferente do padro MS-DOS. Um comando qualquer arquivo executvel, que pode ser ou no criado pelo usurio. Uma das tantas vantagens do Linux a variedade de comandos que ele oferece, afinal, para quem conhece comandos, a administrao do sistema acaba se tornando um processo mais rpido.
Captulo 4 Aprendendo comandos do GNU/Linux - 47 O shell o responsvel pela interao entre o usurio e o sistema operacional, interpretando os comandos. no shell que os comandos so executados.
4.3. O comando ls
O comando ls possui muitos parmetros, veremos aqui as opes mais utilizadas. A primeira dela o -l que lista os arquivos ou diretrios de uma forma bem detalhada (quem criou, data de criao, tamanho, dono e grupo a qual eles pertencem). # ls -l / drwxr-xr-x4 root root 1024 2007-01-15 23:17 boot Veja que a sada desse comando bem detalhada. Falando sobre os campos, para o primeiro caractere temos algumas opes: d => indica que se trata de um diretrio l => indica que se trata de um link (como se fosse um atalho - tambm vamos falar sobre ele depois) - => hfen, indica que se trata de um arquivo c => indica dispositivo de caractere b => indica dispositivo de bloco
Captulo 4 Aprendendo comandos do GNU/Linux - 48 O campo rwxr-xr-x lista as permisses, enquanto os campos root indicam quem o usurio e grupo dono desse diretrio que, no nosso caso, o administrador do sistema, o root. O nmero antes do dono indica o nmero de hard links, um assunto abordado apenas em cursos mais avanados. O campo 1024 indica o tamanho do arquivo, e o campo 2007-01-15 23:17 informa a data e hora em que o diretrio foi criado. Finalmente, no ltimo campo temos o nome do arquivo ou diretrio listado, que, no nosso exemplo, o boot. Com relao a diretrios, importante ressaltar que o tamanho mostrado no corresponde ao espao ocupado pelo diretrio e seus arquivos e subdiretrios. Esse espao aquele ocupado pela entrada no sistema de arquivos que corresponde ao diretrio. A opo a lista todos arquivos, inclusive os ocultos: # ls -a /root ..aptitude.bashrc.profile .rnd.ssh.vmware .. .bash_history .kde .qt root_161206 .viminfo .Xauthority Veja que, da sada do comando anterior, alguns arquivos so iniciados por . (ponto). Esses arquivos so ocultos. No Linux, arquivos e diretrios ocultos so iniciados por um . (ponto). Lista arquivos de forma recursiva, ou seja, lista tambm os subdiretrios que esto dentro do diretrio /: # ls -R /
4.3.1. Coringas
O significado da palavra coringa no dicionrio o seguinte: carta de baralho, que em certos jogos, muda de valor e colocao na sequncia. No sistema GNU/Linux bem parecida a utilizao desse recurso. Os coringas so utilizados para especificar um ou mais arquivos ou diretrios. Eles podem substituir uma palavra completa ou somente uma letra, seja para listar, copiar, apagar, etc. So usados trs tipos de coringas no GNU/Linux:
Captulo 4 Aprendendo comandos do GNU/Linux - 49 * - Utilizado para um nome completo ou restante de um arquivo/diretrio; ? - Esse coringa pode substituir uma ou mais letras em determinada posio; [padro] - utilizado para referncia a uma faixa de caracteres de um arquivo/diretrio. [a-z][0-9] - Usado para trabalhar com caracteres de a at z seguidos de um caractere de 0 at 9. [a,z][1,0] - Usado para trabalhar com os caracteres a e z seguidos de um caractere 1 ou 0 naquela posio. [a-z,1,0] - Faz referncia do intervalo de caracteres de a at z ou 1 ou 0 naquela posio. A diferena do mtodo de expanso dos demais, que a existncia do arquivo ou diretrio opcional para resultado final. Isto til para a criao de diretrios. Lembrando que os 3 tipos de coringas mais utilizados (``*,?,[ ]'') podem ser usados juntos. Vejamos alguns exemplos: Supondo que existam 5 arquivos no diretrio /home/usurio. Podemos list-los: # ls arq1.txt arq2.txt arq3.txt arq4.new arq5.new Vamos listar todos os arquivos do diretrio /home/usurio. Podemos usar o coringa ``*'' para visualizar todos os arquivos do diretrio: # cd /home/usurio # ls * arq1.txt arq2.txt arq3.txt arq4.new arq5.new Para listarmos todos os arquivos do diretrio /home/usurio que tenham ``new'' no nome: # ls *new* arq4.new arq5.new
No caso, o comando #ls /tmp/teste/* foi citado, mas no tem muito sentido utilizar esse comando, importante ressaltar que a utilizao do * se aplica para um
Captulo 4 Aprendendo comandos do GNU/Linux - 50 diretrio cheio de arquivos, como mostrado no caso dois, utilizado para procurar o arquivo em especfico.
Listar todos os arquivos que comeam com o nome arq, tenham qualquer caractere no lugar do coringa, e terminem com .txt: # ls arq?.txt
Para listar todos os arquivos que comeam com o nome arq, tenham qualquer caractere entre o nmero 1-3 no lugar da 4 letra e terminem com .txt. Neste caso, se obtm uma filtragem mais exata, pois o coringa especifica qualquer caractere naquela posio e [ ] especifica nmeros, letras ou intervalo que sero usados. # ls arq[1-3].txt
Para listar somente arq4.new e arq5.new podemos usar os seguintes mtodos: # ls *.new # ls *new* # ls arq?.new # ls arq[4,5].* # ls arq[4,5].new O parmetro -i do ls, pode ter um grande valor quando o papo so os inodes. Existem muitas outras maneiras de fazer a mesma coisa mas depende muito de cada um que vai utilizar. A criatividade nesse momento conta muito. No exemplo
Captulo 4 Aprendendo comandos do GNU/Linux - 51 anterior, a ltima forma resulta na busca mais especfica. O que pretendemos mostrar como visualizar mais de um arquivo de uma s vez. O uso de coringas til para copiar arquivos, apagar, mover, renomear, e nas mais diversas partes do sistema.
A grande maioria dos comandos bsicos devem fazer parte da sua base slida de conhecimento, provvel que voc precise dele para resolver problemas maiores.
O comando mkdir utilizado para criar um diretrio no sistema. Um diretrio como uma pasta onde voc guarda seus arquivos. Exemplo: Cria o diretrio yago: # mkdir yago
Captulo 4 Aprendendo comandos do GNU/Linux - 52 A opo -p ir criar o diretrio 4linux e o subdiretrio alunos, caso no existam. O comando rm utilizado para apagar arquivos, diretrios e subdiretrios que estejam vazios ou que contenham arquivos. Exemplos: Remove o arquivo teste.txt: # rm teste.txt
Remove o arquivo yago.txt pedindo confirmao: # rm -i yago.txt rm: remove arquivo comum `yago.txt'? y A opo -i solicita a confirmao para remover o arquivo yago.txt. Remove o diretrio 4linux: # rm -r 4linux A opo -r recursivo, ou seja, ir remover o diretrio 4linux e o seu contedo. Observao: Muita ateno ao usar o comando rm! Uma vez que os arquivos e diretrios so removidos no podem mais ser recuperados! O comando rmdir utilizado para remover diretrios vazios. Exemplos: Remove o diretrio yago: # rmdir yago Remove o diretrio 4linux e o subdiretrio alunos: # rmdir -p hackerteen/alunos
Captulo 4 Aprendendo comandos do GNU/Linux - 53 O comando mv serve tanto para renomear um arquivo quanto para mov-lo: # mv arquivo caminho/diretrio-destino/ # mv arquivo novo-nome # mv diretrio novo-nome # mv diretrio caminho/diretrio-destino/
O comando cp serve para fazer cpias de arquivos e diretrios: # cp arquivo-origem arquivo-destino # cp arquivo-origem caminho/diretrio-destino/ # cp -R diretrio-origem nome-destino # cp -R diretrio-origem caminho/diretrio-destino/
Um opo do comando cp muito til no nosso dia-a-dia o -p, o que faz com que o cp mantenha o timestamp dos arquivos, assim no modificando seus donos nem suas permisses.
Captulo 4 Aprendendo comandos do GNU/Linux - 54 4) Listar todos os arquivos do diretrio /root, inclusive os ocultos: # ls -a /root
9) Crie os arquivos estudo.txt e alunos.txt dentro de /backup/2007/fevereiro. # touch /backup/2007/fevereiro/estudo.txt # touch /backup/2007/fevereiro/alunos.txt
/backup/2007/fevereiro
copie
arquivo
11)
# cp -R /backup/2007/fevereiro /backup/2007/janeiro
Captulo 4 Aprendendo comandos do GNU/Linux - 55 12) Remova o arquivo estudo.txt do diretrio /backup/2007/fevereiro: # cd /backup/2007/fevereiro # rm estudo.txt
13)
14)
# mv /backup/2007/fevereiro /backup/2007/abril
comando
stat
para
descobrir
algumas
informaes
Captulo 4 Aprendendo comandos do GNU/Linux - 56 3) Qual a funo do comando rmdir? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 4) Por que no devemos executar o comando rm com as flags -r e -f? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 5) Qual a opo do comando cp que copiaria arquivos de um diretrio de forma recursiva? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 6) Qual a funo do comando mv? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 7) Qual a funo do comando ln? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 8) Voc um estagirio muito organizado. Ao checar os arquivos do servidor, percebe que alguns arquivos de configurao e arquivos de log esto espalhados no diretrio /root. Quais deveriam ser os diretrios corretos para armazenar esse tipo de arquivo? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
4.7. Laboratrio
1) Liste os arquivos que terminam com a palavra .conf dentro do diretrio /etc; 2) Busque no diretrio raiz [ / ] todos os diretrios que terminem com a letra ``n'';
5.1. Objetivos
Conhecer alguns comandos importantes para o dia-a-dia.
No mundo GNU/Linux, a maioria das operaes so realizadas por meio de comandos escritos. Em geral, permitem um maior controle e flexibilidade de operaes, alm de poderem ser includos em scripts. Neste captulo iremos aprender sobre alguns comandos bsicos.
Captulo 5 Comandos teis de linha de comando - 59 Os termos geralmente usados so: Entrada de dados, representada por stdin; Sada de dados, representada por stdout; Sada de erros, representada por stderr;
Mas isso pode ser mudado com o uso de caracteres de redirecionamento, veja abaixo: Mas isso pode ser mudado com o uso de caracteres de redirecionamento, veja abaixo:
Para mudar sada padro: > - Redireciona a sada em um arquivo apagando o contedo anterior (se existir); Exemplo:
Exemplo: # ls / >> tst # cat tst # ls /var >> tst # cat tst
Captulo 5 Comandos teis de linha de comando - 60 Comandos auxiliares: | (pipe, pronuncia-se paipe): Serve para canalizar sada de dado para outro comando;
Mas o comando cat pode ser utilizado tambm para concatenao de arquivos. No primeiro exemplo abaixo, mostrado na tela o contedo dos arquivos teste.dat aux.dat. No segundo exemplo, usamos o operador de redirecionamento da sada padro de modo que a sada do comando cat seja gravada no arquivo tudo.dat. # cat teste.dat aux.dat # cat teste.dat aux.dat > tudo.dat
De forma anloga, o comando tac tambm serve para mostrar o contedo e concatenar arquivos. Porm, ele mostra o contedo de forma reversa, linha a linha. Em outras palavras, ele imprime primeiramente a ltima linha do arquivo especificado, e finaliza imprimindo a primeira. O exemplo abaixo, mostra o uso do tac
Captulo 5 Comandos teis de linha de comando - 61 para mostrar o contedo reverso do arquivo teste.dat. # tac teste.dat
O comando less mais sofisticado e permite ir e voltar na leitura de um arquivo. # less /var/log/syslog
Captulo 5 Comandos teis de linha de comando - 62 Para ler as 10 ltimas linhas de um arquivo, podemos usar: # tail /var/log/syslog
Os comandos podem ser combinados usando o | (l-se pipe). Por exemplo, para ler o pedao entre as linhas 20 e 40 de um arquivo, podemos usar: # head -n 40 /var/log/syslog | tail -n 20
O comando acima l as 40 primeiras linhas do arquivo /var/log/syslog que so passadas para o comando tail que retorna as 20 ltimas linhas deste intervalo (as 20 ltimas das 40 primeiras = da 20 a 40). Apesar de parecerem simples, os comandos head e tail fornecem opes de valiosa utilidade. Um grande exemplo usar a opo -f no tail para verificar logs em tempo real.
5.3.4. Contagem: wc
Grande parte dos arquivos de configurao e de dados usa uma linha por registro. A contagem destas linhas pode nos fornecer informaes muito interessantes. Por exemplo, a sada abaixo: # wc /etc/passwd Indica que o arquivo contm 32 linhas, 49 blocos (palavras) e 1528 caracteres. Caso seja necessrio apenas o nmero de linhas, o comando wc pode ser usado com o parmetro -l, como abaixo: # wc -l /etc/passwd Outros parmetros possveis so -w para blocos (palavras) e -c para caracteres.
Captulo 5 Comandos teis de linha de comando - 64 Usando o caractere de redirecionamento >, podemos enviar a sada do comando echo para outro destino: # echo $LANG > /tmp/teste # cat /tmp/teste No exemplo acima, o arquivo teste contm o valor da varivel de ambiente $LANG.
5.4. Filtragem
Uma necessidade constante dos administradores encontrar informaes dentro dos arquivos. Para ilustrar, podemos localizar o texto bash no arquivo /etc/passwd: # grep bash /etc/passwd root:x:0:0:root:/root:/bin/bash saito:x:1000:1000:saito,,,:/home/saito:/bin/bash postgres:x:108:113:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash jboss:x:1001:1001:JBoss Administrator,,,:/home/jboss:/bin/bash
Outra situao possvel procurar pelas entradas que no possuem bash no arquivo passwd. Para isso, usamos o parmetro -v (inVerter), que inverte a filtragem do grep: # grep -v bash /etc/passwd daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync
Captulo 5 Comandos teis de linha de comando - 65 Outros parmetros do comando grep: -A [n] Mostra n linhas depois; -B [n] Mostra n linhas antes; -h Omite o nome do arquivo nas buscas; -i Ignora diferena entre maisculas e minsculas; -n Mostra o nmero de cada linha encontrada; -v Inverte a busca, ou seja, encontra apenas as linhas onde o padro no existir.
O grep pode ser combinado com a sada de outros comandos com o uso do | (pipe). Por exemplo, no comando abaixo, o grep filtra as linhas de endereos IP da sada do comando ifconfig. # ifconfig | grep end.:
E, a seguir, o grep aplicado para filtrar os ltimos usurios logados no primeiro terminal (tty1): # last |grep tty1 root tty1 Thu Feb 22 12:19 - 14:21 (02:01) root tty1 Thu Feb 22 10:50 - down(00:00)
Alguns outros tipos de filtros como o grep tambm podem ser encontrados ngrep e pgrep.
Captulo 5 Comandos teis de linha de comando - 66 # cut -f1 -d: /etc/passwd root daemon bin
O comando awk um primo do cut, mas possui mais recursos e opes para expresses regulares.
5.5. Administrativos
5.5.1. Espao em Disco
Aproxima para a unidade de medida mais prxima, mais legvel para o ser humano. $ df -h <arquivo/diretrio/partio> Mostra em kilobytes. $ df -k <arquivo, diretrio ou partio>
Captulo 5 Comandos teis de linha de comando - 67 Mostra em Megabytes. $ df -m <arquivo, diretrio ou partio>
Captulo 5 Comandos teis de linha de comando - 68 A sada do comando ser: total used free shared buffers cached Mem: 2066856 950944 1115912 038920 342612 -/+ buffers/cache: 569412 1497444 Swap: 570268 0 570268
Esse comando mostra a data e a hora atuais do sistema numa formatao padro. Pode-se utilizar uma string como parmetro para formatar a sada. O exemplo abaixo mostra o uso de uma string de formatao e o resultado a seguir. Mais informaes sobre as opes de formatao podem ser encontradas nas pginas do manual. # date +"%H:%M, %d-%m-%Y" 12:44, 27-06-2007 A outra utilidade do comando date ajustar a hora do sistema. Obviamente, isso pode ser feito apenas pelo usurio administrador. A sintaxe : # date mmddHHMMYYYY
A sada do comando ser: 03:20:37 up 16:35, 3 users, load average: 0.16, 0.27, 0.33
# uname -a
A sada do comando ser: Linux professor 2.6.18-3-686 #1 SMP Mon Dec 4 16:41:14 UTC 2006 i686 GNU/Linux
Captulo 5 Comandos teis de linha de comando - 70 # diff arquivo1 arquivo2 # diff -r dir1 dir2
-name [expresso] : Procura pelo nome [expresso] nos nomes de arquivos e diretrios processados. # find /etc -name *.conf
-maxdepth [num] : Limite a profundidade de busca na rvore de diretrios. Por exemplo, limitando a 1, ir procurar apenas no diretrio especificado e no ir incluir nenhum subdiretrio. # find /etc -maxdepth 1 -name *.conf
-amin [num] : Procura por arquivos que foram acessados [num] minutos atrs. Caso seja antecedido por ``-'', procura por arquivos que foram acessados entre [num] minutos atrs e o momento atual. # find ~ -amin -5
-atime [num] : Procura por arquivos que foram acessados [num] dias atrs. Caso seja antecedido por ``-``, procura por arquivos que foram acessados entre [num] dias atrs e a data atual. # find ~ -atime -10
-uid [num] : Procura por arquivos que possuem a identificao numrica do usurio igual a [num]. # find / -uid 1000
-user [nome] : Procura por arquivos que possuem a identificao de nome do usurio igual a [nome]. # find / -user aluno
-perm [modo] : Procura por arquivos que possuem os modos de permisso [modo]. Os [modo] de permisso podem ser numrico (octal) ou literal.
-size [num] : Procura por arquivos que tenham o tamanho [num]. O tamanho especificado em bytes. Voc pode usar os sufixos k, M ou G para representar em quilobytes, Megabytes ou Gigabytes. [num] Pode ser antecedido de ``+'' ou ``-'' para especificar um arquivo maior ou menor que [num].
-type [tipo] : Procura por arquivos do [tipo] especificado. Os seguintes tipos so aceitos: b - bloco c - caractere d - diretrio p - pipe f - arquivo regular l- link simblico s - socket
Outros exemplos: # find / -name grep Procura no diretrio raiz e nos subdiretrios um arquivo/diretrio chamado grep.
Captulo 5 Comandos teis de linha de comando - 73 # find / -name grep -maxdepth 3 Procura no diretrio raiz e nos subdiretrios at o 3 nvel, um
arquivo/diretrio chamado grep. # find . -size +1000k Procura no diretrio atual e nos subdiretrios um arquivo com tamanho maior que 1000 kbytes (1Mbyte). # find / -mmin -10 Procura no diretrio raiz e nos subdiretrios um arquivo que foi modificado h 10 minutos atrs ou menos.
Quando esse comando executado pela primeira vez costuma demorar um pouco. Para o comando locate, usamos a seguinte sintaxe: # locate howto
Captulo 5 Comandos teis de linha de comando - 74 /usr/share/doc/pcmciautils/mini-howto.txt.gz /usr/share/doc/python2.4-xml/examples/test/output/test_howto /usr/share/doc/python2.4-xml/examples/test/test_howto.py.gz /usr/share/doc/python2.4-xml/howto.cls /usr/share/doc/python2.4-xml/xml-howto.tex.gz /usr/share/doc/python2.4-xml/xml-howto.txt.gz /usr/share/vim/vim64/doc/howto.txt
Captulo 5 Comandos teis de linha de comando - 75 Dica LPI: Ateno: A maioria desses comandos so bastante simples de ser utilizados e possuem poucos parmetros, entretanto alguns como awk, sed, find, grep, xargs, uniq, join, paste e cut possuem manuais bastante extensos dada a quantidade de tarefas que podem realizar. Dessa forma a leitura de suas pginas de man so altamente sugeridas.
Os comandos e estrutura de shell script aqui citados so utilizados tambm no Red Hat.
# cp /etc/passwd /tmp
2) Entre
no
diretrio
/tmp
para
iniciarmos
os
testes:
# cd /tmp
3) Agora, dentro do diretrio /tmp, utilizaremos o awk para separar o contedo do arquivo passwd utilizando o caracter ``:'' como separador e imprimir na tela o usurio e sua respectiva shell adicionando a palavra ``uses'' entre uma coluna e outra: # awk -F : '{print $1 " uses " $7}' passwd
Captulo 5 Comandos teis de linha de comando - 76 4) Utilizemos o comando cat para ver o contedo do arquivo passwd: # cat passwd
5) Com o comando cut vamos realizar um procedimento anlogo ao do awk; entretanto com este comando no possvel inserir a palavra ``uses'' entre as colunas: # cut -d : -f 1,7 passwd
6) Utilizemos o comando date para listar a hora atual do sistema. Em seguida vamos alter-la e depois modificar o seu padro de sada: # date # date mmddHHMMYYYY # date +%Y%m%d-%H%M
7) Determine quanto cada filesystem est utilizando de seu espao. Depois imprima em formato ``humam readable'', ou seja, que um humano entende fcilmente, utilizando o parmetro -h. Na sequencia verifique qual a porcentagem de inodes utilizados: # df # df -h # df -i
8) A nica forma de determinar quanto espao em disco um diretrio est ocupando somando o tamanho de todos os arquivos e arquivos em seus subdiretrios. O comando du realiza essa tarefa: # du -h 9) Para imprimir uma mensagem na tela, basta utilizar o comado echo. Os parmetros -ne fazem com que o echo interprete caracteres de controle como ;
Captulo 5 Comandos teis de linha de comando - 77 10) Juntando dois arquivos em um:
# echo "1:Debian Sarge:3.1:Stable" > sarge # echo "1:Debian Etch:4.0:Stable" > etch # join -t: sarge etch
O comando join (unir) concatena registros de dois arquivos de texto baseado em ndices comuns entre os registros. No nosso caso o separador de campos ser o caractere dois-pontos ( -t: ). 11) Comando paste, junta os arquivos na sada padro. Diferente do join, ele joga os dois arquivos lado-a-lado.: # paste sarge etch
Ainda com o paste podemos, usar o parmetro -d, de delimitador: # paste -d@ sarge etch
12) Vamos procurar por arquivos que satisfaam o padro pas* dentro do diretrio /etc: # find /etc -name 'pas*'
13) Realize a procura dentro do arquivo passwd por todas as linhas que iniciam pelo caracter ``s'': # grep ^s passwd
Captulo 5 Comandos teis de linha de comando - 78 14) Mostre na tela apenas as primeira 15 linhas do arquivo passwd:
# head -n 15 passwd
15) O comando split usado para dividir um arquivo em pedaos menores, muito til quando se tem dois disquetes e um arquivo de 2 Mb: # cp /var/log/messages . # split --lines=50 messages
16)
# tar cvzf backup.sbin.tar.gz /sbin/ # du -sh /sbin/ # du -sh backup.sbin.tar.gz Feito o backup e conferido os tamanhos, vamos agora utilizar o comando split: # split --bytes=1048576 backup.sbin.tar.gz
Captulo 5 Comandos teis de linha de comando - 79 Ou seja, 1Mb corresponde a 1048576 bytes. Para conferir: # du -sh x*
17) Vamos verificar que a linha foi escrita mostrando as ltimas 15 linhas do respectivo arquivo de log: # tail -n 15 /var/log/messages # tail -n 15 /var/log/syslog
Mostre na tela como ficaria o arquivo passwd se substitussemos todos os caracteres ``:'' pelo padro ``_MU_'': # sed 's/:/_MU_/g' passwd
18) Utilize o comando seq para imprimir a sequencia de nmeros de 1 a 100 pulando de dois em dois: # seq 1 2 100
19) # sleep 10
20)
# sort passwd
Captulo 5 Comandos teis de linha de comando - 80 21) Vamos substituir e remover os caracteres do arquivo:
22)
# wc -l passwd
23) # who
24)
Voc percebeu que no primeiro comando ele listou o diretrio, jogando na tela um nome de cada vez. O segundo comando fara o mesmo s que com dois nomes na mesma linha, e o terceiro tambm. Outros testes com o xargs: # ls / > teste_xargs.txt # cat teste_xargs.txt # cat teste_xargs.txt | xargs -n 2 # xargs -n 3 < teste_xargs.txt
25)
5.9. Laboratrio
1) Obtenha uma lista de usurios a partir do arquivo /etc/passwd, contendo as colunas referentes ao usurio e seu diretrio pessoal; 2) Obtenha uma lista classificada por tamanho dos arquivos da pasta /var/log.
6.1. Objetivos
Diferenciar how-to, manual e documentao; Localizar os meios de ajuda internos do sistema; Descobrir aonde podemos buscar documentao na internet;
documentao. Antes de recorrermos a ajuda de outras pessoas, devemos lembrar que podemos ter a respostas que precisamos no prprio sistema, bem a nossa frente,
Captulo 6 Conhecendo a Documentao - 84 ao teclar de um simples comando. Essa documentao em grande parte dos casos de extrema qualidade. O GNU/Linux cresceu porque a comunidade que contribui para o sistema e sua documentao no tem medo ou receio de compartilhar informaes e coloca o que foi desenvolvido no prprio sistema. muito importante reforar que no software livre, as pessoas nunca ocultam seu know-how, ou seja, voc pode perguntar a vontade, desde que saiba perguntar e aonde perguntar. A documentao do GNU/Linux pode ser vista tambm como fonte de conhecimento, aonde pessoas podem aprender muito sobre cada um dos servios tanto na parte prtica quanto na parte terica. Essa ajuda provida por meio dos manuais, as famosas Man Pages, outros comandos que podem nos informar de maneira rpida os parmetros que podemos utilizar e pelos How-Tos que cada aplicao instalada pode nos fornecer. Toda essa documentao que possumos no sistema GNU/Linux est disponvel no site: http://www.tldp.org (The Linux Documentation Project),o site oficial de documentaes sobre GNU/Linux. Um diferencial deste site, ter a documentao em vrios idiomas e formatos (pdf, html, txt e outros).
Abaixo vamos comear a entender o que significa documentao e as formas que a documentao apresentada;
6.3.1. How-to's
Os How-to's so documentos que focam uma necessidade especfica, como montar um firewall, instalar uma webcam, configurar placas de som, configurar um
Captulo 6 Conhecendo a Documentao - 85 servidor web e muitos outros. Normalmente esses documentos so instalados junto com suas respectivas aplicaes, ou em algumas vezes existe um pacote especfico para a documentao daquela aplicao. Os how-to's tambm so conhecidos como cook-books. O diretrio de How-to's do GNU/Linux o /usr/share/ doc. Por exemplo, se desejamos saber como configurar um firewall, podemos consultar os arquivos do diretrio: # cd /usr/share/doc/iptables/html/
Na internet existem diversos sites de how-to's para linux, dentre eles o mais conhecido no brasil o VivaoLinux, conhecido tambm como VOL: http://www.vivaolinux.com.br
Muitas vezes o uso de how-to's ou cook-book's, no agrega um bom conhecimento, e somente uma lista de afazeres para chegar a um objetivo. Quando o software atualizado, todo aquele conhecimento fica dependente de um outro howto's.
6.3.2. Manuais
Diferente dos How-tos os manuais no vo te mostrar um passo a passo ou mesmo te dar uma lista de afazeres, o principal objetivo do manual te mostrar como as funcionalidades daquele software podem ser usadas. Com o manual o aprendizado para a utilizao da ferramenta facilitado, j que o mesmo possui alguns exemplos de usabilidade. Esses manuais podem ser encontrados atravs do comando man, o qual veremos ainda nesse captulo, um pouco mais a frente.
6.3.3. Documentao
A palavra documentao muito intensa, quando falamos em documentar uma ferramenta ou qualquer outra coisa, estamos na realidade abrangendo uma srie de outros itens importantes, dentre eles os How-to's e os manuais. Com a
Captulo 6 Conhecendo a Documentao - 86 documentao de um projeto possvel entender absolutamente TUDO sobre o mesmo, ou seja, essa documentao deve mostrar todas as partes relacionadas ao projeto. Podemos por exemplo citar a documentao de um projeto de rede, aonde nela deve constar no s documentos como how-to's e manuais, mas sim todas as especificaes dos componentes, bem como cabos, switch's e routers entre milhares de outros detalhes muito importantes. Como esse tipo de documentao muito especifica, devemos consultar o site de cada projeto individualmente caso desejarmos obter essa fonte de conhecimento.
Com esse comando tambm podemos descobrir quais so os comandos internos do interpretados de comandos. Caso desejemos visualizar a ajuda rpida para somente um comando interno, usamos esta outra sintaxe: # help [comando]
Captulo 6 Conhecendo a Documentao - 87 O comando help somente mostra a ajuda para comandos internos.
Para comandos externos, o help aparece como parmetro. Por exemplo: sleep --help
Desse modo, caso desejemos visualizar uma ajuda rpida sobre um comando externo, devemos fazer da seguinte forma: # [comando] --help
O parmetro --help pode ser utilizado em qualquer comando para ter uma consulta rpida dos parmetros que determinado comando pode nos oferecer. importante entender que --help na verdade um parmetro individual de cada comando, logo se um comando no tiver esse parmetro existem outros meios para se obter ajuda. No se esquea de estudar as diferenas entre comandos internos e externo
Captulo 6 Conhecendo a Documentao - 88 man 5 - Arquivos de configurao e convenes; man 6 - Jogos; man 7 - Variados (incluindo pacotes de macros e convenes); man 8 - Comandos de administrao do sistema (normalmente usado somente pelo root); man 9 - Rotinas de Kernel.
Observao: Essas informaes sobre as sees do comando man podem ser achadas no seu prprio manual digitando o comando man man. Caso desejemos visualizar o manual do comando passwd, podemos fazer da seguinte forma: # man passwd
Estamos consultando o manual do comando passwd. Para navegar pelo manual, o comando man abre um arquivo que est compactado na pasta /usr/share/man/man1 para o passwd ou outro nvel de manual dependendo do comando ou arquivo. O passwd conhecido no sistema GNU/Linux como um comando que adiciona ou modifica a senha do usurio e como o arquivo de usurios do sistema (/etc/passwd). Veremos agora o manual do arquivo de usurios passwd:
# man 5 passwd
Podemos consultar quais manuais esto disponveis dentro do prprio diretrio do man: # /usr/share/man/
Dentro desse diretrio possvel ver todas as divises dos manuais dentre elas os nveis e as lnguas. Todos os nveis de manuais possuem sua determinada introduo que pode ser vista com o comando: # man <nvel> intro
Podemos ver os manuais em diversas lnguas diferentes, desde o pacote para a lngua escolhida esteja instalado. Se nosso sistema estiver instalado em portugus, o comando man ir trazer todas os manuais disponveis em portugus. J se nosso sistema estiver em ingls preciso usar o parmetro -L pt_BR, para que possamos ver os manuais na nossa lngua: # man -L pt_BR comando
importante nesse ponto ressaltar que a documentao em nossa linguagem depende de pessoas que ajudam a fazer a traduo para o portugus, se voc quiser ajudar, acredite, voc ser muito bem vindo, veja como ajudar com o comando: # man 7 undocumented
Captulo 6 Conhecendo a Documentao - 90 Podemos ver que para visualizar o manual do arquivo de usurio passwd precisamos informar em qual nvel de manual ele se encontra, pois j existe um passwd no nvel 1 que o comando, ento ele aparece primeiro quando digitamos man passwd. Esse manual do arquivo passwd est compactado na pasta /usr/share/man/man5.
Para localizar as man pages, o comando apropos utiliza um banco de dados construdo com o comando catman (executado pelo administrador do sistema, root). Uma forma equivalente ao apropos o comando man juntamente com a opo -k:
# man -k [palavra-chave]
Para construir o banco de dados do comando apropos deveremos fazer da seguinte forma: # catman
Captulo 6 Conhecendo a Documentao - 91 Os comandos apropos e whatis dividem a mesma base de dados, importante perceber isso.
Uma forma equivalente ao whatis o comando man juntamente com a opo -f:
# man -f [palavra-chave]
Caso desejemos exibir a lista de todos os manuais de comandos/programas disponveis, podemos fazer da seguinte forma: # info
Para exibir as informaes somente de um determinado comando, usaremos a seguinte sintaxe: # info [comando]
Ilustrao 3: xman
Captulo 6 Conhecendo a Documentao - 94 Para visualizarmos a localizao destes dados para um determinado comando ou arquivo, utilizamos a seguinte sintaxe: # whereis [comando] ou # whereis [arquivo]
O comando which muito usado para abreviaes de comandos em shell script. Podemos testar executando o comando abaixo: $ lsetc=$(which ls) -la /etc --color $lsetc
Abra o manual do comando ifconfig e veja em qual nvel de manual ele se encaixa: # man ifconfig
Qual path (localizao) completo do comando e arquivo passwd e respectivas pginas de manual? # whereis passwd
Qual o path (localizao) somente do binrio do comando ls? # which ls # which source
Busque os manuais que possuem a palavra user em suas descries: # apropos user
Captulo 6 Conhecendo a Documentao - 96 Onde podemos encontrar no sistema uma documentao e um arquivo de exemplo da aplicao apt? # cd /usr/share/doc/apt
Captulo 6 Conhecendo a Documentao - 97 5) Qual o nvel de manual para arquivos de configurao? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 6) Qual a diferena entre how-to, manual e documentao? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 7) Em qual nvel do man se encontra a biblioteca DATE::FORMAT? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
6.10. Laboratrio
1) Gere a base de manuais do sistema. 2) Pesquise em qual nvel de manual se encaixa o shadow. 3) Descubra qual a localizao do comando su. 4) Descubra se source um comando interno ou externo. 5) Tente descobrir se existe no sistema algum manual ou documentao que fale sobre a hierarquia do sistema de arquivos.
7.1. Objetivos
Conhecer os diversos editores textos; Explorar o editor de textos nano; Explorar o editor de textos Vim;
7.2. Introduo
A grande maioria das configuraes em sistemas GNU/Linux so feitas editando-se diretamente arquivos de configurao em modo texto. Para que essa tarefa seja executada com sucesso, preciso conhecer alguns editores do texto dentre eles: vi, vim, nano, pico, mcedit, ed, emacs dentre muitos outros: vi - Sem dvida nenhuma o editor mais famoso de todos os tempos, presente em quase todas as distribuies;
Captulo 7 Editores de texto - 99 vim - Uma verso melhorada do vi, Vim significa VImpruved e trs diversas facilidades sem perder os conceitos do vim; nano - Editor padro de muitas distribuies como Debian e Ubuntu, esse editor diferente do vim muito fcil de ser usado; pico - Muito parecido com o nano, este est presente nas distribuies Slackware e Gentoo; mcedit - Editor muito fcil e completo que est presente nas distribuies Red-Hat, CentOs, Seu grande diferencial a possibilidade da utilizao do mouse; ed - O editor mais simples de texto presente no mundo Unix, o ed um editor de linha para terminais aonde no possvel abrir uma janela de edio; emacs - Poderoso editor de "tudo", o emacs tambm muito conhecido no mundo GNU/LINUX por fazer muitas coisas diferenciadas de um editor de texto;
O editor od, pode ser importante para prova. Sua principal funcionalidade mostrar a saida de um arquivo em formatos como octal, ASCII entre outros.
Nesse capitulo vamos abordar apenas a utilizao dos editores nano e vim.
Ilustrao 5: Menu do Nano Ao ser chamado, este editor ir apresentar um tela em branco com um rodap semelhante a esse: Vamos analisar essas funes: Lembrando que ^G igual a Ctrl + G e assim por diante ...
^G Get Help - Apresenta uma tela de ajuda os mais diversos comandos e uma breve explicao sobre o editor; ^X Exit - Sai do editor, lembrando que se o arquivo no estiver salvo, essa opo ir te pedir para salvar; ^O WriteOut - Salva ou sobrescreve um arquivo; ^J Justify - Justifica o arquivo inteiro; ^R Read File - Abre um arquivo; ^W Where Is - Procura por uma ocorrncia dentro do arquivo; ^Y Prev Page - Move o cursor para pagina anterior; ^V Next Page - Move o cursor para prxima pagina; ^K Cut Text - Corta a linha em que o cursor est posicionado; ^U UnCut Text - Cola a linha recortada na posio atual do cursor ^C Cur Pos - Mostra informaes sobre a posio do cursor; ^T To Spell - Auto correo, lembrando que necessrio ter o comando spell instalado;
Como podemos ver usar o editor de textos nano, no uma das tarefas mais difceis no GNU/Linux. Vamos ver agora o editor Vim As variveis relacionadas com os editores podem ser valiosas na prova. Uma delas a prpria varivel EDITOR
Observem que a varivel define o editor que abrir um programa que chama o editor padro. Para definirmos quem o editor padro podemos usar o aplicativo update-alternatives . update-alternatives --config editor
Ilustrao 6: Tela principal do vim Ao invocar o Vi, este entra direto para o modo ``visualizao''. Para modificar o arquivo, usam-se os modos de insero, deleo e de substituio. Para voltar ao modo de visualizao, sempre se usa a tecla ESC.
Ilustrao 7: Fluxo de Trabalho do vim Todos os servios em unix so configurados atravs de arquivos de configurao, o vim no seria diferente. Seu arquivo de configurao fica localizado em /etc/vim/vimrc. Para configurar o seu editor de textos, basta descomentar as funcionalidades desejadas, e copiar o arquivo para o seu home como .vimrc
Teste os comandos de Movimentao 4) Comandos bsicos de movimentao: Ctrl+f - Move o cursor para a prxima tela Ctrl+b - Move o cursor para a tela anterior H - Move o cursor para a primeira linha da tela
Captulo 7 Editores de texto - 104 M - Move o cursor para o meio da tela L - Move o cursor para a ltima linha da tela h - Move o cursor um caractere esquerda j - Move o cursor para a prxima linha k - Move o cursor para linha anterior l - Move o cursor um caractere direita w - Move o cursor para o incio da prxima palavra W - Move o cursor para o incio da prxima palavra, separadas por espao b - Move o cursor para o incio da palavra anterior B - Move o cursor para o incio da palavra anterior, separadas por espao 0(zero) - Move o cursor para o incio da linha atual ^ - Move o cursor para o primeiro caractere no branco da linha atual $ - Move o cursor para o final da linha atual nG - Move o cursor para a linha n :n - Move o cursor para a linha n gg - Move o cursor para a primeira linha do arquivo G - Move o cursor para a ltima linha do arquivo
Escreve um texto e teste comandos de Localizao 5) Comandos bsicos para localizar texto: /palavra - Busca pela palavra ou caractere em todo o texto ?palavra - Move o cursor para a ocorrncia anterior da palavra n- Repete o ltimo comando / ou ? N - Repete o ltimo comando / ou ?, na direo reversa Ctrl+g - Mostra o nome do arquivo, o nmero da linha atual e o total de linhas
Teste tambm os comandos de Alterao 6) Comandos bsicos para alterao de texto: x - Deleta o caractere que est sob o cursor ;
Captulo 7 Editores de texto - 105 dw - Deleta a palavra, da posio atual do cursor at o final ; dd - Deleta a linha atual, e copia o contedo para rea de transferncia ; D - Deleta a linha a partir da posio atual do cursor at o final ; :A,Bd - Deleta da linha A at a linha B, copia para rea de transferncia ; rx - Substitui o caractere sob o cursor pelo especificado em x ; u - Desfaz a ltima modificao ; U - Desfaz todas as modificaes feitas na linha atual ; J - Une a linha corrente a prxima ; yy - Copia 1 linha para a rea de transferncia ; yNy - Copia N linhas para a rea de transferncia ; p - Cola o contedo da rea de transferncia ; Np - Cola N vezes o contedo da rea de transferncia ; cc - Apaga o contedo da linha, e copia para rea de transferncia ; cNc - Apaga o contedo de N linhas, e copia para rea de transferncia ; :%s/string1/string2/g - Substitui "string1" por "string2" ;
Por fim teste os comandos de Execuo 7) Comandos para salvar o texto: :wq ou :x - Salvam o arquivo e saem do editor :w nome_do_arquivo - Salva o arquivo corrente com o nome especificado :w! nome_do_arquivo - O mesmo que :w, mas forando sobrescrita :q - Sai do editor :q! - Sai do editor sem salvar as alteraes realizadas
Algumas dicas de vi para a lpi: :setnumber :syntax on :noai :set hlsearch :set background=dark
Captulo 7 Editores de texto - 107 8) Como eu acho todas as palavras ``linux'' dentro do texto? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 9) Um arquivo tem 620 linhas, eu quero ir para a ltima linha do arquivo. _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 10) Substituir todos os /, por @ dentro do arquivo? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
7.7. Laboratrio
1) Crie um arquivo chamado dados_pessoais. 2) Dentro dele, coloque um dado em cada linha: Nome completo, e-mail e um site de sua preferncia. Grave o arquivo. 3) Agora, modifique algum dado e tente sair do editor sem salvar. 4) De dentro do Vi, faa uma cpia desse arquivo para dados_pessoais2. 5) Faa uma cpia da sua linha de e-mail 5 vezes. 6) Posicione o cursor na primeira linha do arquivo, sem usar as teclas direcionais. 7) V direto para a linha 3, sem usar as teclas direcionais. 8) V direto para o final do arquivo, sem usar as teclas direcionais. 9) Recorte a linha do seu nome, coloque-a no final do arquivo. 10) Apague a linha que tem seu nome e depois tente desfazer a sua ltima ao. 11) Faa uma cpia do arquivo /etc/inittab para o seu HOME. ( cp /etc/inittab ~ )
Captulo 7 Editores de texto - 108 12) 13) 14) 15) 16) Ainda no arquivo, entre no modo visual. Apague as 5 primeiras linhas do arquivo. Substitua todas as string init (minsculo) por INIT (maisculo). Localize a string ``shutdown'', usando o mtodo de busca. Substituir das linhas 22 a 28 a string ``wait'' pela string ``esperar''.
17) Dentro do arquivo, localize todas as palavras ``respawn'' e apague todas elas. 18) 19) 16) Apague as linhas 19 e 24. Mova as linhas 35,36,37 e 38 para o final do arquivo. Salvar o arquivo utilizando um novo nome e salve-o no diretrio /root.
8.1. Objetivos
Introduo a Terica de redes TCP/IP; Conceitos bsicos de configuraes de redes em UNIX; A importncia de alguns elementos das redes de computadores;
Neste captulo, iremos aprender alguns conceitos de redes que so muito importantes no nosso dia a dia em TI. Elementos como o IP da mquina e a mscara de rede, so de fundamental importncia quando falamos de uma configurao de rede. To importante quando os itens acima iremos aprender o quo importante saber como funciona uma rede, sabendo configurar seu gateway e definir seu DNS, alem de descobrir algumas coisas que facilitam a configuraes diria de redes nos nossos sistemas UNIX.
8.3. Entendendo o IP
O endereamento IP, como dever ser chamado, composto por 4 octetos e uma mscara, que determina quantos endereos so destinados a hoste e quantos endereos so destinados a rede. No mundo GNU/Linux no diferente dos outros, para termos acesso a internet ou a comunicao em rede tambm precisamos ter nosso numero IP. O numero IP est presente em todas as mquinas, mesmo nas que no tem conexo com a internet. Isso possvel pois em todo GNU/Linux h uma interface lgica, chamada loopback (lo) cujo endereo IP ser 127.0.0.1 e que sempre deve estar devidamente configurada.
Captulo 8 Introduo a Redes - 111 Nosso endereo de loopback atende tambm por 0.0.0.
Voc pode estar se perguntando: Mas por que raios eu poderia querer um servio em uma mquina que no fala com o mundo externo?".
A resposta simples, voc pode desenvolver suas pginas e sistemas Web e test-las localmente. Ou mesmo testar a implantao de um servidor de DNS ou um proxy. Antes mesmo de colocar ele em produo e fazer com que seus queridos usurios reclamem de algo que no funcionou direito. Em resumo, voc pode fazer qualquer coisa que voc queira e no necessariamente precisa ter contato com o mundo exterior. Com essa interface configurada, todo o tipo de servio pode ser ativado na mquina, desde um simples servidor de ssh at um servidor de DNS passando por um servidor de pginas de Web afim de realizar testes antes mesmo de colocar esses servios em produo. O mundo exterior, a Internet toda feita por nmeros IP's, e no depende, isso mesmo, no depende em momento nenhum de um servidor de DNS para funcionar, esse servio de DNS somente facilita o nosso acesso a internet, permitindo nosso acesso a ela atravs de nomes e no de nmeros, isso significa que para entenderemos como a internet funciona, precisamos entender como funcionam os nmeros que ela utiliza, os nmeros IP's. Para configurarmos um nmero IP em nosso computadores, precisamos tambm, configurar um Mscara para esse numero IP. A mascara de rede, tambm conhecida como netmask, um numero constitudo por 32 bits, que utilizado para separar redes, determinando quem host, quem rede e quem broadcast. Host - Um endereo disponibilizado para computadores poderem acessar a rede; Rede - Um endereo da rede, que com a ajuda da mscara delimita qual o comeo e o fim da rede; BroadCast - Normalmente o ultimo endereo da rede, utilizado para que
Captulo 8 Introduo a Redes - 112 uma mquina possa falar com todas as outras.
Sabendo como funciona a mscara de rede necessrio saber que existem trs classes padres de Redes
Ainda compreendendo esses nmeros, precisamos descobrir que existem dois tipos de endereamento IP. Endereos Pblicos e Privados Ip Pblico - So endereos vlidos para internet, rede de comunicaes. Ip Privado - So endereos invlidos para internet, podendo somente ser
Captulo 8 Introduo a Redes - 113 usados em redes privadas como Lan's ou WLans.
Para entendermos melhor esse conceito preciso entender qual o papel do NAT nas redes de computadores. O NAT(Network Address Translation) uma tcnica desenvolvida devido aos nmeros IP's (IPv4) estarem se esgotando rapidamente. Na histria do endereamento IP, tivemos alguns abalos que nos fizeram quase usar o Ipv6 antes da hora. Antes do NAT existir, no existia o conceito de IP's publicos e privados, assim os IP's estavam se esgotando de forma muito rpida. E com a tcnica de NAT possvel fazer um melhor aproveitamento os nmeros IP's para dar um maior tempo de vida para o protocolo IPv4, assim ento utilizando o conceito de IP Privado para economizar a quantidade de Ip's Pblicos.
Ilustrao 11: Antes do NAT Se cada um de nossos computadores utiliza-se um numero IP Publico, a quantidade desses IP's j teria se esgotado, e provavelmente j estaramos utilizando o protocolo IPv6. Vamos descobrir agora os ranges de IP's que podemos utilizar, os ips Privados.
Captulo 8 Introduo a Redes - 116 Usurio - Eu?? .. No, no, tudo bem, a internet j est normalizada.
Captulo 8 Introduo a Redes - 117 # ifconfig A utilizao do comando ifconfig um item essencial para o assunto de redes. Outro comando que pode der um bom valor na prova o comando iwconfig que veremos no treinamento 451 da formao 4Linux Com esse comando possvel descobrir todas as interfaces presentes no sistema, mas para ter certeza que nenhuma interface est inativa adicionamos o parmetro -a. # ifconfig -a
Para atribuir um endereo IP para uma placa de rede utilizamos essa sintaxe: # ifconfig <interface> <IP>
Como esse comando estamos atribuindo o endereo IP 192.168.32.54 para a interface eth0. O comando ifconfig calcula automaticamente a mscara, mas se voc precisar configurar uma mascara diferenciada, voc deve usar o parmetro netmask: # ifconfig eth0 192.168.32.54 netmask 255.255.254.0
Para ativar ou desabilitar um placa de rede podemos usar a sintaxe: # ifconfig eth0 up # ifconfig eth0 down
Uma boa alternativa para habilitar e desabilitar as placas de redes, seriam os comando ifup e ifdown. Ainda avanando na configurao da rede, o prximo passo a configurao do gateway da rede.
Com esse comando possvel configurar a rota padro de sada da nossa rede. Para listar todas as rotas traadas, podemos utilizar o comando abaixo: # route -n
Com ele podemos descobrir se as rotas necessrias para que nossa rede funcione esto corretas. Se desejarmos remover a rota padro, devemos utilizar o comando: # route del default
Esse comando se encarregar de remover a rota padro para a sada da rede, mas lembre que essa rota obrigatria no processo de configurao de rede.
Dentro deste arquivo podemos configurar nossos servidores de DNS, coloque nesse arquivo as seguintes linhas: nameserver 201.6.0.100
Com essa sintaxe acabamos de configurar um servidor de DNS, no caso o DNS do Virtua. Os comandos traceroute e tracepath podem ajudar nos administradores a descobrir em que ponto da rede podemos ter um possvel problema .
/etc/network/interfaces:
Captulo 8 Introduo a Redes - 120 auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.200.X netmask 255.255.255.0 broadcast 192.168.200.255 network 192.168.200.0 gateway 192.168.200.254
Os arquivos de configurao das interfaces de rede esto localizadas em /etc/sysconfig/networking/devices. A sintaxe diferente e recomenda-se utilizar o aplicativo netconfig para configurar a rede.
Exemplo :
192.168.200.254
instrutor professor
Isso facilita nosso trabalho, uma vez que todos esto devidamente apelidados, no precisamos mais decorar nmeros IP.
Para alterar o hostname de maneira esttica, devemos editar o arquivo /etc/hostname: O comando hostname com sua opo -f (FQDN) pode ser muito til para seu dia-a-dia!!!
Captulo 8 Introduo a Redes - 122 Acima temos a configurao padro para buscar nos arquivos de senha do sistema. Mas se precisarmos autenticar em um servidor ldap a configurao ficaria assim: passwd:files ldad group: files ldap shadow:files ldap
Nessa configurao temos o temo files, dizendo qual o sobre que meio ocorrer essa autenticao. Outros valores podem ser aplicados como db e nis.
4) Configure a interface eth0 manualmente para que utilize um IP da rede 192.168.200.X com mscara de sub-rede 255.255.255.0, sendo X o nmero da sua mquina: # ifconfig eth0 192.168.200.X 5) Verifique as configuraes de rotas: # route -n
Captulo 8 Introduo a Redes - 123 6) Adicione uma rota para o gateway 192.168.200.254: # route add default gw 192.168.200.254 # route -n
7) Envie um icmp tipo echo-request (ping) para uma outra mquina da rede: # ping 192.168.200.Y
8) Se possvel, pingue todas as mquinas da rede utilizando o endereo de broadcast: # ping -b 192.168.200.255
9) Determine os endereos MAC das interfaces que responderam ao ping: # arp -n 10) Desative a interface de rede e ative-a novamente:
11) Vamos configurar nossas interfaces de rede editando o arquivo /etc/network/interfaces: # vim /etc/network/interfaces
12)
Captulo 8 Introduo a Redes - 124 auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.200.X netmask 255.255.255.0 broadcast 192.168.200.255 network 192.168.200.0 gateway 192.168.200.254
13)
Para iniciar servios no Red Hat, recomenda-se utilizar o comando service. Para iniciar/parar/reiniciar a interface de rede, use o comando service network start/stop/restart.
14) Efetue pingues para determinar que voc est conseguindo pingar as outras mquinas da rede e a mquina do instrutor: # ping -b 192.168.200.255 # ping 192.168.200.254
15) Agora que j estamos com a rede configurada vamos tentar acessar a internet. Pingue um site a sua escolha: # ping www.4linux.com.br Como que o ping sabe qual o endereo IP do servidor www.4linux.com.br?
Captulo 8 Introduo a Redes - 125 16) Configure o arquivo para um cliente DNS:
17) Tente pingar o site novamente e verifique que a resoluo de nomes est funcionando # ping www.4linux.com.br
18) Agora que determinamos quem so nossos servidores de nomes podemos configurar tambm o nosso mini resolvedor de nomes internos: # vim /etc/hosts
Esse arquivo deve sempre conter as informaes corretas para o loopback, caso contrrio, servios internos podem deixar de funcionar.
19)
127.0.0.1 localhost.localdomain localhost 192.168.200.X microX.treinamento.xxx.br microX 192.168.200.254 gateway.treinamento.xxx.br gateway instrutor
20)
21)
# ping www.4linux.com.br
23) # hostname
24) Altere o nome da mquina de microX para maqX, de forma que a alterao fique permanente: # vim /etc/hostname
25)
# hostname -d
26) Verifique qual o FQDN (Fully Qualified Domain Name) da sua mquina # hostname -f
27)
# shutdown -r now
8.13. Laboratrio
1) Configure sua placa de rede, de acordo com as especificaes do instrutor; 2) Configure tambm um segundo Ip para essa mesma placa de rede; 3) Tente pingar os colegas nas duas redes configuradas;
9.1. Objetivos
Entender o funcionamento do /dev; Diferenciar devfs de udev; Compreender o processo de montagem de um dispositivo; Testar alguns dispositivos presentes em /dev Compreender como funciona o particionamento; Aplicar um sistema de arquivos a uma partio;
Captulo 9 Manipulando Hardware e Dispositivos - 129 Alguns assuntos sobre dispositivos foram retirados da apostila pois esto ligeiramente ultrapassados, porm os mesmo podem ser encontrados no Anexo. O local onde so armazenadas estas representaes o diretrio /dev. Uma listagem deste diretrio mostrar uma srie de arquivos, todos eles representando uma parte do seu computador. A interao com estes arquivos pelo sistema operacional GNU/Linux realiza as leituras dos pedidos, processa estes pedidos e retorna as respostas controlando os sinais enviados aos dispositivos, por exemplo, comandando a placa de vdeo para coordenar as respostas no seu monitor.
Captulo 9 Manipulando Hardware e Dispositivos - 130 O UDEV no super popula o diretrio dev do nosso sistema, alem de nos proporcionar um mtodo de configurao que pode ser encontrado em /etc/udev/ Explorando o diretrio /dev voc ir se deparar com alguns tipos de arquivos especiais, conhecidos como arquivos de dispositivos. Os tipos existentes so os dispositivos de: bloco - utilizados para transferncia de dados para hardwares de armazenamento de dados como discos rgidos; caracter - conhecido tambm como "unbuffered" comunicao com hardwares como mice e terminais; utilizado para
fifo - conhecido tambm como pipe nomeado (named pipe) um dispositivo utilizado para realizar a comunicao entre dois processos independentes; socket - um dispositivo do tipo socket utilizado para criar um ponto de comunicao.
Seguindo essa classificao, os dois tipos mais comuns de serem manipulados so os de bloco e de caracter; como exemplos deles temos os devices referentes a dispositivos IDE conectados mquina (/dev/hda1, por exemplo) e o dispositivo de acesso ao mouse (/dev/psaux, por exemplo). Outros dispositivos de bloco importantes so os SCSI utilizados no apenas por discos SCSI mas tambm por dispositivos como USB e SATA, uma vez que so acessados utilizando essa emulao. O nome destes dispositivos so do tipo /dev/sd[letra][nmero] e seguem a mesma lgica dos dispositivos IDE. Dessa forma, se houver um HD SATA conectado mquina e mais nenhum outro dispositivo que utilize emulao SCSI, sua localizao ser o device /dev/sda. Os nomes dos dispositivos e a maneira como so representados na hierarquia do diretrio /dev podem ser bastante difceis a primeira vista. Com um pouco de prtica, a nomenclatura usada far sentido. Um mouse USB representado pelo arquivo /dev/input/mice, que pode ser traduzido como: dispositivo (DEV) de entrada (INPUT) do tipo apontador (MICE outro termo para ``rato'', em ingls). Um mouse PS/2 segue uma nomenclatura um pouco mais complicada e representada pelo arquivo /dev/psaux, que pode ser
Captulo 9 Manipulando Hardware e Dispositivos - 131 interpretado como dispositivo auxiliar na porta PS. Para alguns dispositivos como o mouse podemos realmente ver a interao com o arquivo que representa o dispositivo. No exemplo abaixo, usamos o comando cat para mostrar o contedo do arquivo de dispositivo de mouse (mexa o mouse depois de pressionar ENTER aps os comandos abaixo): Para mice USB: #cat /dev/input/mice
As sadas, ilegveis para humanos, representam os dados que o sistema operacional GNU/Linux usa para avaliar a movimentao, posicionamento e apertar de botes do mouse.
Outro exemplo importante so os dispositivos de armazenamento principais do seu computador, os discos rgidos. Existem trs tecnologias principais de discos rgidos, IDE, SATA e SCSI. Os discos IDE ainda so maioria no mercado, mas a tecnologia vem dando lugar ao padro SATA. Tanto o padro IDE como o SATA so considerados econmicos e mais voltados para computadores pessoais ou estaes de trabalho. O discos do padro SCSI usam uma tecnologia de acesso mais sofisticada, so geralmente mais velozes que similares IDE e SATA e mais robustos. So usados principalmente em servidores e mquinas de alto desempenho.
Captulo 9 Manipulando Hardware e Dispositivos - 133 Os dispositivos IDE so representados na hierarquia do diretrio /dev com um padro que comea com hd. O disco rgido conectado como mestre na controladora principal ser designado por hda. J o escravo, nesta mesma controladora, ser representado por hdb. Analogamente, temos hdc e hdd respectivamente para os discos mestre e escravo conectados na controladora secundria. Por outro lado, o padro dos dispositivos SATA e SCSI comeam por sd. Assim sendo, temos sda para o primeiro dispositivo SATA ou SCSI, sdb para o segundo, etc. Uma controladora SCSI de 8 bits pode comportar at 7 dispositivos, alm da prpria controladora. Para as de 16 bits, o nmero mximo de dispositivos 15. Podemos verificar o contedo de um disco usando novamente o comando cat. Para inspecionar o contedo do primeiro disco rgido IDE de um computador, podemos usar o comando abaixo: # cat /dev/hda
A sada gerada no parece ter nenhum sentido. Os dados mostrados so aqueles dados gravados no seu disco. Contudo, esto em uma forma que compreensvel apenas pelo sistema operacional. Uma partio uma diviso lgica do seu disco rgido, criada por questes de organizao, convenincia, flexibilidade ou segurana. Nos sistemas baseados em representao por letras, um disco rgido IDE pode ser dividido, particionado de forma a ser visto com as letras C: e D:. No sistema operacional GNU/Linux, esta mesma diviso levaria aos arquivos representados em /dev/hda1 e /dev/hda2. Ou seja, a primeira partio do disco hda representada por /dev/hda1 e a segunda representada por /dev/hda2. Qualquer partio adicional seguiria o mesmo padro.
Assim, para inspecionar o contedo da primeira partio, pode-se usar o comando abaixo: # cat /dev/hda1
Para interromper a sada do comando que pode ser bastante demorada, pressione a combinao de teclas Ctrl C (mantenha a tecla Ctrl pressionada e pressione a letra C). Caso a tela do seu console continue a mostrar caracteres estranhos, digite reset. O ltimo comando mostra uma sada que seres humanos no conseguem entender. Elas representam a maneira como os dados foram armazenados em /dev/hda1. Para que o sistema operacional GNU/Linux apresente estes dados de uma forma mais legvel, necessrio solicitar ao sistema um processo de traduo. Este processo chamado de montagem de dispositivos.
Captulo 9 Manipulando Hardware e Dispositivos - 135 Ento para que a partio /dev/hda1 seja usada, necessrio montar esta partio em algum local e acess-lo. Este local, que um diretrio no sistema de arquivos, chamado de ponto de montagem. Podemos montar um dispositivo de armazenamento em qualquer diretrio do sistema de arquivos, contudo, existem algumas convenes: Dispositivos removveis devem ser montados em /media (em outras pocas em /mnt). Exemplos: Um cdrom convencional, representado por /dev/cdrom ou /dev/hdc, pode ser montado em /media/cdrom. Um leitor de disquetes, representado por /dev/fd0, pode ser montado em /media/floppy. A grande maioria dos dispositivos de bloco USB, so reconhecidos como scsi, e podem localizados em /dev/sda. Um Hd Sata tambm pode ser encontrado em /dev/sda, isso pode variar, depende da porta sata utilizada. No caso de discos rgidos, uma partio montada diretamente na raiz do sistema de arquivos ou em um diretrio diretamente abaixo da raiz.
Captulo 9 Manipulando Hardware e Dispositivos - 136 A flag u do comando vol_id, nos imprime a UUID referente a uma determinada partio. # blkid /dev/sda1: UUID="f541a97e-ef19-4e47-b305-b535a75c932a" TYPE="ext3" LABEL="MAIN" /dev/sda3: UUID="7C444A56444A12F6" TYPE="ntfs" LABEL="WIN" /dev/sda5: TYPE="swap" /dev/sda6: UUID="69ff8ed5-c09b-49b6-b21d-328e90243efa" TYPE="ext3" LABEL="HOME" /dev/sda7: UUID="2c070d34-5c6e-4504-8d4b-9a8fa910548d" TYPE="ext3" LABEL="STORAGE" /dev/sda8: UUID="489B-5A22" TYPE="vfat" LABEL="CENTER"
J o comando blkid lista todos os dados relevantes sobre as parties do seu disco. H tambm um outro mtodo de se descobrir essas informaes para isso: # ls -l /dev/disk/by-uuid/ lrwxrwxrwx 1 root root 10 2009-03-06 10:41 2c070d34-5c6e-4504-8d4b9a8fa910548d -> ../../sda7 lrwxrwxrwx 1 root root 10 2009-03-06 10:41 489B-5A22 -> ../../sda8 lrwxrwxrwx 1 root root 10 2009-03-06 10:41 69ff8ed5-c09b-49b6-b21d328e90243efa -> ../../sda6 lrwxrwxrwx 1 root root 10 2009-03-06 10:41 7C444A56444A12F6 -> ../../sda3 lrwxrwxrwx 1 root root 10 2009-03-06 10:41 f541a97e-ef19-4e47-b305b535a75c932a -> ../../sda1
Mas a resposta gerada no est to amigvel quando as outras. =D O uso dos mtodos de LABEL ou UUID em conjunto com o /etc/fstab um soluo inteligente para o dia-a-dia e para nossa prova.
Existem muitos comandos para descobrirmos o que temos conectados em nossas mquinas, dentre eles: lspci, lsusb e lsscsi
Para montar um dispositivo de armazenamento em seu ponto de montagem, o comando mount pode ser usado da seguinte forma: # mount -t <tipo> -o <opes> <dispositivo> <ponto-de-montagem>
Para que seja possvel acessar o contedo de algum dispositivo precisamos de quatro itens bsicos: saber qual o nome do dispositivo que ser acessado; saber qual o filesystem que ele est utilizando; ter um ponto de montagem; ter permisso de montagem;
O mtodo mais garantido de encontrar o nome de um dispositivo realizar uma busca na sada do comando dmesg; por exemplo, se desejarmos determinar qual o nome do device do CD-ROM, podemos tentar:
Uma vez determinado o nome do dispositivo podemos, realizar outra procura no dmesg, mas agora com o nome do dispositivo, e determinar qual filesystem est utilizando. Se no existir um ponto de montagem, basta criar um diretrio vazio no local apropriado; em geral no /media ou /mnt e executar o comando para mont-lo. Por exemplo: Para um cdrom, a sintaxe do comando seria: # mount -t iso9660 /dev/cdrom /media/cdrom
Na
maioria
dos
ambientes
grficos,
este
processo
de
montagem
automatizado. A simples insero ou conexo de mdias removveis faz com que elas sejam montadas e acessveis pelos navegadores de arquivos grficos. Para desmontar um dispositivo, o comando usado o umount. Neste caso possvel usar como parmetro o ponto de montagem ou o dispositivo: Por exemplo: # umount /media/cdrom
Uma alternativa para a montagem aleatria do sistema, utilizar o pacote autofs que nos prove toda uma estrutura configurvel para os dispositivos. Para usar autofs seu sistema precisa usar Kernel 2.6 e ter a partio /dev com udev
Captulo 9 Manipulando Hardware e Dispositivos - 140 Command (m for help): m Command action a b c d l m n o p q s t u v w x toggle a bootable flag edit bsd disklabel toggle the dos compatibility flag delete a partition list known partition types print this menu add a new partition reate a new empty DOS partition table print the partition table quit without saving changes create a new empty Sun disklabel change a partition's system id change display/entry units verify the partition table write table to disk and exit extra functionality (experts only)
Para criarmos uma nova partio devemos antes ver se temos espao disponvel para isso, ou seja, precisamos imprimir a tabela de parties utilizando a letra p. Se houver espao disponvel para a criao de uma nova partio basta pressionar a letra n e informar o tipo da partio (primria ou estendida) e seu tamanho.
A utilizao do cfdisk bastante intuitiva, utilizando as setas para cima e para baixo voc navega pela listagem das parties e, utilizando as setas para a esquerda e direita, voc navega pelo menu na parte inferior da tela. Para criar uma nova partio basta selecionar na listagem de parties a linha que contm espao livre e entrar na opo New no menu inferior. Se ainda for possvel criar parties primrias surgir a pergunta pelo tipo da partio, caso contrrio, surgir a pergunta para especificar quanto espao deve ser destinado para essa partio. Aps realizar todas as alteraes, escolha, no menu inferior, a opo Write. Uma pergunta pedindo que voc confirme as alteraes ir aparecer. Sua resposta deve ser ``sim'' ou ``no'' com todas as trs letras!! Afinal, voc o root e sabe o que est fazendo! :) Pronto, criadas as parties precisamos aplicar um filesystem.
As ferramentas de manuteno do xfs conhecidas como xfs-tools, podem de dar alguns pontos positivos na prova. O pacote referente no Debian se chama xfsprogs
Para criarmos um filesystem em uma partio devemos escolher o tipo de filesystem e utilizar o comando mkfs cuja forma de utilizao bsica a seguinte: mkfs -t tipo_do_FS <dispositivo>
Sendo que o filesystem que voc pode escolher para criar no device deve ser
Captulo 9 Manipulando Hardware e Dispositivos - 143 suportado pelo kernel e deve ter seu software instalado. Para consultar quais filesystem esto com suporte no kernel basta consultar o arquivo /proc/filesystems. Dessa forma, podemos exemplificar a criao de um filesystem em um dispositivo utilizando o seguinte comando: # mkfs -t ext3 /dev/hdb1
Aplicado o filesystem, s falta criar o ponto de montagem e montar! Ao contrrio do que pensam os file systens no mordem, e podem ser grandes aliados na prova, principalmente no termo migrao de file system.
Captulo 9 Manipulando Hardware e Dispositivos - 144 <file system> <mount point><type> <options> <dump> <pass> proc /dev/hda1 /dev/hda2 /dev/hda3 /dev/hda6 /dev/hda7 /dev/hda8 /proc proc defaults /boot / none /var /tmp /home 0 0 0 2 0 2 0 0 2 0 0 1 2 ext3 defaults sw 0
/dev/hda5 /usrext3defaults
As informaes que devem ir nesse arquivo, de acordo com o nmero da coluna so: localizao do filesystem, em geral o device ou endereo de rede; ponto de montagem; tipo do filesystem, ext3, reiserfs, xfs, etc; opes de montagem (defaults = rw, suid, dev, exec, auto, nouser e async). Ver man mount; aceita os valores 0 ou 1 e informa que, havendo um sistema de backup (dump) configurado, dever ser feito o seu backup; aceita os valores de 0 a 2 e informa que dever ser realizada a checagem (pass) de integridade do sistema de arquivos. O valor zero desativa a funcionalidade, o valor 1 deve ser especificado apenas para o / e o valor 2 deve ser especificado para quaisquer outros sistemas de arquivos.
Sendo assim, o fstab armazena as informaes dos dispositivos comumente acessados, como as parties do sistema, discos removveis e alguns dispositivos USB, entretanto, no mostra informao alguma a respeito de quais dispositivos esto montados neste exato momento. Essa informao pode ser obtida acessando o arquivo /etc/mtab ou /proc/mounts; ambos os arquivos so uma tabela atualizada em tempo real e que mostra quais dispositivos esto montados e com quais
Captulo 9 Manipulando Hardware e Dispositivos - 146 3) Altere o layout de teclado padro do sistema. Voc tem duas opes: # kbd-config # dpkg-reconfigure console-data
2) Coloque um CD no drive e torne o contedo acessvel no diretrio /media/cdrom: # mount -t iso9660 <dispositivo> /media/cdrom 3) Verifique que o dispositivo foi montado: # mount # df -h # cat /etc/mtab # cat /proc/mounts
Captulo 9 Manipulando Hardware e Dispositivos - 147 4) Entre no diretrio e explore o contedo do CD: # cd /media/cdrom ; ls
7) Tente desmont-lo novamente: # umount /media/cdrom Agora sim! 8) Monte o CD novamente, entre no diretrio do ponto de montagem e, de dentro dele, abra uma nova shell: # mount -t iso9660 <dispositivo> /media/cdrom # cd /media/cdrom # bash 9) Saia do diretrio e desmonte o CD: # cd # umount /media/cdrom Funcionou?? E agora?? Agora que j sabemos montar dispositivos, vamos aprender a cria parties. 10) Utilizando o particionador 'cfdisk' crie uma nova partio de 'swap' e uma nova partio linux: As novas parties devem ter os seguintes tamanhos: /dev/hda9 - partio tipo swap com 256MB;
Captulo 9 Manipulando Hardware e Dispositivos - 148 /dev/hda10 - nova partio com 1000; espao vazio no particione.
# cfdisk /dev/hda
Aps criar as novas parties ser necessrio rebotar a mquina para que a nova tabela de parties seja relida. No nosso caso, a verso do Kernel a 2.6.18, ento estamos utilizando udev, mesmo sendo udev, temos que reiniciar. Com a tabela de parties atualizadas podemos aplicar os filesystems e paginar a nova partio de swap. 11) Prepare a partio de swap:
# mkswap <dispositivo>
12)
# swapon <dispositivo>
O filesystem que desejamos aplicar a uma das novas parties o etx3. Para que possamos realizar essa tarefa devemos determinar se o nosso kernel suporta este filesystem e se o software necessrio est instalado. 13) Determine se o ext3 pode ser utilizado, ou seja, tem suporte no kernel: # ls /proc/filesystems
14)
Uma vez que o filesystem foi aplicado partio, vamos torn-lo acessvel por
Captulo 9 Manipulando Hardware e Dispositivos - 149 meio do diretrio /backup. 15) Crie o ponto de montagem /backup:
# mkdir /backup
16)
17) # mount # df -h
17)
18) Coloque as entradas no fstab para que o novo swap e a partio de backup sejam montadas na hora do boot: # vi /etc/fstab <dispositivo> none swapsw 0 0 <dispositivo> /backup ext3 defaults 0 0
O arquivo /etc/fstab criado automaticamente quando o Linux instalado. Abaixo algumas das suas opes, importantes:
2) Qual a diferena entre os arquivos /etc/fstab e /etc/mtab? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 3) Qual comando pode ser utilizado para determinar se o mouse est conectado ao /dev/psaux? Por qu? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 4) Quando o comando mount pode ser executado com sucesso especificando apenas o nome do dispositivo ou apenas o ponto de montagem? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 5) Qual deve ser a linha no fstab para que no seja possvel executar um programa ou script a partir da partio /home? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 6) Quais parmetros dos comandos fdisk e cfdisk podem ser utilizados para imprimir na tela a tabela de parties sem entrar no programa propriamente dito? D os comandos completos como resposta. _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
9.13. Laboratrio
1) Crie um arquivo imagem do CD-ROM; 2) Monte este arquivo imagem; 3) Acesse este sistema de arquivos que voc montou, e veja o seu contedo.
10.1. Objetivos
Aprender a gerenciar usurios e grupos; Conhecer o sistema de permisses; Conhecer o funcionamento do umask; Entender as permisses especiais;
O GNU/Linux um sistema multiusurio e portanto, possui um esquema de permisses que prov a privacidade e/ou compartilhamento de arquivos entre usurios. Na verdade, esse esquema de permisses parte fundamental do sistema. Neste captulo, iremos aprender sobre ele e tambm como criar e remover contas de usurios.
Captulo 10 Administrao de Usurios - 154 Para que os usurios comuns e root tenham acesso ao sistema e consigam trabalhar normalmente, so necessrios 5 elementos. Nome; Senha; Diretrio Home; Shell; Grupo Primrio;
Devemos ter em mente que um usurio sempre deve estar vinculado a um grupo, pois isso afeta diretamente a questo de permisses dentro do sistema.
10.3. Permisses
Cada arquivo no sistema possui trs permisses bsicas: r (4) - read para leitura; w (2) - write para escrita; x (1) - execute para execuo; A cada permisso atribudo um valor, mostrado entre parnteses, que ser utilizado para atribuio de permisses. Alm disso, cada arquivo contm trs conjuntos de permisses, sendo elas: permisso do dono (u) - user do arquivo; do grupo (g) - group ao qual o arquivo pertence; outros (o) - others; aqueles que no pertencem ao grupo e no so os donos do arquivo; Sendo assim, considere a seguinte sada do comando ls -l: -rw-r--r-- 1 root root 0 Jan 15 09:52 arquivo
Captulo 10 Administrao de Usurios - 155 Para um arquivo e para um diretrio: drwxr-xr-x 2 root root 4096 Jan 15 09:52 diretrio Vamos entender o que essas linhas significam, o primeiro caractere pode ser: - - indicando que o que est sendo listado um arquivo comum; d - indicando um diretrio; l - indicando um link simblico; p - indicando um pipe nomeado; s - indicando um socket; c - indicando um dispositivo de caractere; b - indicando um dispositivo de bloco.
Os prximos trs conjuntos de trs caracteres indicam as permisses do usurio dono do arquivo, permisses de grupo e permisses para outros usurios. Nesses trs conjuntos, se o caractere encontrado for um `-' (hfen) significa que a permisso est ausente, ou seja, no h a respectiva permisso. Se alguma ou todas as letras (r, w e x) forem encontradas, indicar as permisses que o arquivo tem. Seguindo o conjunto de permisses, h um nmero que indica a quantidade de links simblicos que o arquivo ou diretrio tem. Aps o nmero de links, vem a indicao do usurio dono do arquivo seguido do grupo ao qual ele pertence. A atribuio de permisses realizada utilizando o comando chmod. H duas sintaxes possveis. A primeira delas a literal. Vejamos o exemplo abaixo: # chmod u+rw arquivo
O parmetro u+rw que define o esquema de permisses. A primeira letra indica a qual(is) usurio(s) as permisses esto sendo alteradas. Usamos a letra u para indicar o prprio dono, g para indicar o grupo, o para outros e ainda a letra a para indicar todos. O caractere seguinte poder ser um sinal + para garantir a permisso ou para retirar a permisso. Por fim, detalhamos a permisso: A letra r significa leitura,
Assim, o exemplo anterior garante as permisses de leitura e escrita para o usurio dono do arquivo. Vejamos mais um exemplo: # chmod g-w arquivo
Este comando retira a permisso de escrita para os usurios pertencentes ao mesmo grupo ao qual o arquivo pertence. As demais permisses no so alteradas. A segunda sintaxe a forma numrica. Neste caso, o parmetro que define as permisses composto de trs nmeros de 0 a 7 que correspondem s permisses para o usurio dono, para o grupo e para outros. Cada nmero formado pela soma das permisses atribudas, sendo que execuo vale 1, escrita vale 2 e leitura 4. A tabela abaixo resume esse esquema:
r (4) 0 0 0 0 1 1 1 1
w (2) 0 0 1 1 0 0 1 1
x (1) 0 1 0 1 0 1 0 1
Total 0 1 2 3 4 5 6 7
Neste caso, estamos atribuindo permisso de leitura e escrita 6 (r=4 + w=2) ao usurio dono, leitura 4 (r=4) ao grupo e 0 (sem permisses) a outros usurios.
Captulo 10 Administrao de Usurios - 157 importante observar que quando usamos a forma literal, alteramos apenas o parmetro especificado, no alterando as demais permisses. J na forma numrica, alteramos todas as permisses simultaneamente.
Comando para retirar a permisso de escrita de todos os usurios para o arquivo noexecute.never chmod a-w noexecute.never
Comando para alterar a permisso padro do arquivo Dori.jad para que todos os usurios apenas possam ler. chmod 444 Dori.jad
passwd - contm as informaes dos usurios; shadow - contm as informaes das senhas dos usurios; group - contm informao dos grupos e usurios que fazem parte dele; gshadow - contm informaes a respeito das senhas de grupo.
Leitura Sugerida: # passwd man 5 passwd # shadow man 5 shadow # group man 5 group # gshadow man 5 gshadow
Captulo 10 Administrao de Usurios - 159 UID 0 - o nmero do usurio administrador root. UID de 1 a 999 - So os nmeros para usurios de sistema. UID de 1000 a 65535 - So os nmeros para usurios normais.
Essas definies de usurios de sistema e usurios normais podem variar nas distribuies, somente o UID 0 padro em todas as distribuies. Campo 4 - GID: O GID (Group Identity) o nmero de identificao do grupo primrio do usurio. Essa identificao tambm dividida em 3 categorias como o UID: GID 0 - o nmero do grupo administrador root. GID de 1 a 999 - So os nmeros para grupos de sistema. GID de 1000 a 65535 - So os nmeros para grupos normais. Campo 5 - Comentrios e informaes adicionais sobre o usurio; Campo 6 - Diretrio pessoal; Campo 7 - Shell;
Captulo 10 Administrao de Usurios - 160 esse suporte. sempre recomendado deixar as senhas shadow ativadas. Caso encontremos algum servidor GNU/Linux sem as senhas shadow configuradas, podemos utilizar o comando pwconv para ativ-las e pwunconv para desativ-las. A questo das senhas shadow e os comandos pwconv e pwunconv so cobrados com frequncia nas provas da LPI.
O arquivo shadow no trata somente a questo de segurana de senhas. Ele tambm trata de polticas de contas do usurio, como, por exemplo, por quantos dias a conta de um usurio vlida, quando vai expirar, quando deve ser a troca de senha e alguns outros parmetros que podem ser alterados na mo ou usando o comando chage.
Captulo 10 Administrao de Usurios - 161 # chage -E 03/08/2009 flavio # chage -l flavio Last password change Password expires Password inactive Account expires : Feb 27, 2009 : never : never : Mar 08, 2009* : 0 : 99999 : 7
Minimum number of days between password change Maximum number of days between password change Number of days of warning before password expires
10.5.2. Comando id
O comando id mostra as informaes de UID, GID e grupos secundrios dos usurios. Para ver essas informaes do usurio corrente, fazemos da seguinte forma: # id
Para ver as informaes de qualquer outro usurio usamos a seguinte sintaxe: # id [usurio]
10.6. Comando w
O comando w similar ao who, mas traz tambm informaes sobre o que cada usurio est fazendo, tanto local quanto remotamente. Esse comando muito til para ver se no existem conexes indevidas em nosso sistema. A sintaxe do comando w para visualizar todos os usurios logados a seguinte: # w
Este comando pode ser usado de vrias formas, mas a sintaxe mais comum de se trabalhar a seguinte: # adduser [usurio]
Dessa maneira ele adicionar o usurio, j pedindo para definir sua senha e as informaes adicionais. Automaticamente, ele j cria um grupo com o mesmo nome do usurio e copia todos os arquivos que esto no diretrio /etc/skel para o diretrio home do usurio. Podemos tambm adicionar usurios atravs do comando useradd, que um pouco mais complexo e precisa de alguns parmetros a mais: # useradd teste
Para complementar a seo criando usurios muito interessante olhar o arquivo /etc/adduser.conf.
Para adicionar um usurio em um grupo secundrio a sintaxe a seguinte: # gpasswd -a [usurio] [grupo]
Para remover um usurio de um grupo secundrio a sintaxe a seguinte: # gpasswd -d [usurio] [grupo]
Observao: Caso esteja modificando a senha de um usurio normal, primeiro ser solicitada a senha corrente para depois digitar a nova senha. Isso no acontece com o usurio root, que pode definir a nova senha diretamente, tanto para ele quanto para os outros usurios. Para modificar a senha de outro usurio: # passwd [usurio]
Captulo 10 Administrao de Usurios - 166 # usermod -c teste kiko # getent passwd | grep kiko kiko:x:1000:1000:teste:/home/kiko:/bin/bash
Saber saber as diferenas entre as flags l e L do usermod pode te ajudar na prova. Ento aqui vai: A flag l modifica o login de um determinado usurio enquanto a flag L bloqueia a conta acrescentando um ! no inicio da linha do usurio no passwd.
Esse comando ir alterar o dono atual do arquivo 'planta' para o usurio euvaldo. Para alterar o grupo basta o seguinte comando: # chgrp cacho planta
Esse comando ir alterar o grupo atual do arquivo planta para o grupo 'cacho'.
Captulo 10 Administrao de Usurios - 167 que se remova o diretrio do usurio para que um prximo usurio adicionado ao sistema no acabe como dono daquele diretrio, j que a delegao de UID's seqencial. Mas para remover o usurio com o seu diretrio, tambm aconselhvel fazer um backup de tudo o que aquele usurio possua ou transferir todos os arquivos para o responsvel. A sintaxe para remover o usurio e manter o seu diretrio home a seguinte: # userdel [usurio]
Para remover o usurio e o seu diretrio home, necessrio utilizar a opo -r na seguinte sintaxe: # userdel -r [usurio]
10.12. Umask
O umask altera o valor da mscara de criao de arquivos e diretrios. Para calcular a umask para um diretrio, pegue a permisso total que um diretrio pode chegar, 777. Subtraia 022 de 777 (valor padro de umask do sistema). Para calcular a umask para um arquivo, pegue a permisso total que um objeto pode chegar, que 777. Subtraia 111 de 777 (valores de execuo do arquivo) e de 022 (valor padro de umask do sistema). O valor padro da umask fica armazenada no arquivo /etc/profile. Lembre-se da regra de calculo de umask, pensar da forma que o sistema funciona pode te confundir na prova: Para diretrios: Sempre substituir de 777; Para arquivos: Verificar umask, se o numero for impar, subtrair de 7, seno subtrair de 6.
Valor 4 2 1
O SUID bit atribudo a um executvel quando desejamos que um usurio qualquer execute o comando (com SUID bit ligado) com as permisses do usurio dono do comando. Se esse comando pertencer ao usurio root um usurio qualquer ir execut-lo com as permisses do root. Por esse motivo o SUID constitui uma grande ameaa de segurana e sua utilizao deve ser bastante cautelosa. O SGID bit geralmente atribuvel a diretrios. Quando um arquivo criado dentro de um diretrio com SGID bit ativado, o contedo gravado dentro do diretrio ir herdar o grupo do diretrio e no o grupo do usurio que criou tal contedo. Este bit especial muito til quando utilizamos diretrios para grupos de trabalhos e em servidores de arquivos. O Sitcky bit era bastante utilizado para realizar otimizaes de acesso a contedos, entretanto, a partir da srie 2.6 do kernel do Linux essa tarefa realizada diretamente pelo kernel. A nica utilidade desse bit, atualmente, fazer diretrios de utilizao comum a todos os usurios, como no /tmp. Quando esse bit est ativo em um diretrio, todo contedo criado dentro dele pertencer ao criador do contedo e por mais que ele atribua a esse contedo permisses totais para todos os usurios, o nico que poder excluir o arquivo ou diretrio ser o prprio dono ou o root. Para atribuirmos esses bits especiais, procedemos da mesma forma que nas permisses comuns, somando os valores e utilizando o comando chmod, mas agora utilizando quatro nmeros, o primeiro nmero sendo o bit especial, seguido dos trs
Captulo 10 Administrao de Usurios - 169 da permisso padro; por exemplo: # chmod 4750 programa
Dessa forma as pessoas pertencentes ao grupo do arquivo podero executar o comando 'programa' como se fossem donas desse comando. Podemos usar como exemplo o comando passwd. # ls -l `which passwd` -rwsr-xr-x 1 root root 31640 2008-06-12 20:39 /usr/bin/passwd
Os nossos usurios comuns s podem mudar sua senha pois o comando passwd est com o bit SUID ativado. Os bits especiais so representados por um s ou S na visualizao das permisses. Veja o exemplo abaixo: chmod 4000 a chmod 2000 b chmod 1000 c ls -l total 0 ---S------ 1 bruno bruno 0 2008-07-21 13:50 a ------S--- 1 bruno bruno 0 2008-07-21 13:50 b ---------T 1 bruno bruno 0 2008-07-21 13:50 c
O bit especial para o campo de permisses de dono o SUID representado por s ou S, para o grupo SGUI tambm representado por s ou S, j o campo de permisses de outros usurios, o Sticky BIT, representado por t ou T Veja que quando seu determinado campo no tem permisso de execuo, o bit especial representado por uma letra S (Upper Case), e quando o campo possui uma permisso de execuo o bit especial apresentado como s (Lower case). O mesmo acontece com o Sticky bit mas com a letra t(T).
Captulo 10 Administrao de Usurios - 170 chmod 4100 a chmod 2010 b chmod 1001 c ls -l total 0 ---s------ 1 bruno bruno 0 2008-07-21 13:50 a ------s--- 1 bruno bruno 0 2008-07-21 13:50 b ---------t 1 bruno bruno 0 2008-07-21 13:50 c
2) Determine quais so as permisses com as quais eles foram criados: $ ls -ld temp $ ls -l temp
3) Altere as permisses do diretrio temp para que o dono no possa escrevelo: $ chmod u-w temp
Captulo 10 Administrao de Usurios - 171 4) Experimente criar mais um arquivo dentro deste diretrio: $ touch temp/arq2
No funcionou? Claro! Devemos alterar a permisso para que o usurio possa escrever neste diretrio. 5) Mas desta vez, utilizaremos a forma numrica: $ chmod 300 temp
7)
10) Logue com o novo usurio em outro terminal e veja quais usurios esto logados no sistema:
11) ele:
$ finger aluno
12)
13)
14)
# passwd aluno
15) $ passwd
16)
17) # w
Captulo 10 Administrao de Usurios - 173 18) Remova o usurio junto com o seu diretrio:
# userdel -r aluno
19)
20)
Este apenas um exemplo para fins de demonstrao do SUID bit, favor no aplicar em servidores!
Captulo 10 Administrao de Usurios - 174 _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 5) Qual o comando correto para listar o contedo do arquivo /etc/passwd? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 6) Considere os seguintes comandos:
# gpasswd -a teste1 cdrom # usermod -G cdrom teste1 Explique a diferena entre eles. _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
-rwxr-xr-x 1 usuario grupo 0 Dec 31 23:59 arquivo # chmod 644 arquivo # chmod u+rw,g+r,o+r arquivo Qual o nmero da permisso original do arquivo e explique qual efeito ambos os comandos teriam sobre o arquivo, e mostre quais seriam suas permisses resultantes. _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
Captulo 10 Administrao de Usurios - 175 8) Se a minha umask vale 012, qual ser o valor de arquivos e diretrios novos que venham a ser criados ? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
10.16. Laboratrio
1) Adicione um usurio chamado aula1 e visualize o contedo de arquivos do seu diretrio home. 2) Crie um novo arquivo no diretrio /etc/skel. 3) Agora adicione outro usurio chamado aula2, visualize o contedo de arquivos do seu diretrio home e novamente o do usurio aula1. 4) Edite o /etc/passwd, modifique o UID do usurio aula1 para 0 e veja o que acontece. 5) Remova o usurio aula2 do grupo aula2. 6) Remova o usurio aula2 sem remover o seu diretrio home e visualize as permisses do seu diretrio home. 7) Agora adicione um usurio chamado aula3 e visualize as permisses de todos os diretrios home.
11.1. Objetivos
Entender o funcionamento do terminal; Conhecer alguns tipos de shells; Personalizar o shell; Localizar os arquivos de configuraes relacionados ao shell;
O principal meio de interao do usurio com um sistema GNU/Linux o terminal de comandos, tambm conhecida como shell. Neste captulo iremos aprender como personaliz-la e sobre sua utilizao bsica.
Captulo 11 Administrao da Shell - 177 com relao a sua lngua padro, personalizaes de prompt e processos automticos. Nos tpicos a seguir, veremos como fazer essa personalizao. A figura abaixo ilustra como podemos posicionar a shell dentro do sistema.
Para acessarmos o endereo de memria atribudo varivel ANSWER, em shell devemos utilizar o operador $ (cifro) antes do nome da varivel, ou seja, se desejarmos mostrar na tela o valor da varivel ANSWER devemos imprimir o
Captulo 11 Administrao da Shell - 178 contedo armazenado no endereo de memria $ANSWER: # echo $ANSWER
Esse tipo de varivel que acabamos de definir conhecida como escalar e pode receber valores numricos ou caracteres.
Uma vez definidas as variveis podemos visualiz-las utilizando os comandos set e env para variveis locais e de ambiente respectivamente. Com isso, se tivssemos definido as variveis LOCAL e GLOBAL e executssemos o comando set, veramos as definies de ambas. Mas, se executssemos o comando env, veramos apenas a definio da varivel GLOBAL. Variveis de ambiente (as globais) so muito importantes pois definem a forma com que a shell e diversos outros programas iro se comportar. Por exemplo, a forma com que o prompt apresentado ao usurio defino pela varivel global PS1. Saber o contedo de algumas variveis muito importante, anote o dessa aqui: HISTSIZE=500
11.4. Alias
Um recurso da shell que facilita muito a vida do usurio a definio de alias. Imagine s que um usurio gosta de utilizar o comando ls sempre com os parmetros ``- -color -h -l''; o que seria dele se toda vez que fosse execut-lo tivesse que escrever o comando com todos os parmetros!! Ele perderia muito tempo e acabaria se cansando mais. Para resolver esse tipo de situao, basta criar um alias para o comando ls que defina que cada vez que o usurio digitar um simples ls o que ser executado ser o ls - -color -h -l. Para criarmos esse alias, basta usarmos o comando abaixo: # alias ls='ls --color -h -l'
Dessa forma fica fcil criar um comando novo. Por exemplo, um que liste apenas diretrios: # alias lsd='ls --color -h -l |grep ^d'
Tanto os alias quanto as definies de variveis podem ser efetuadas em linha de comando ou, para maior comodidade, utilizando arquivos apropriados para isso.
Captulo 11 Administrao da Shell - 180 Quando a bash estiver sendo terminada (usurio fazendo logout), o arquivo ~/.bash_logout ser lido e executado caso ele exista. Atravs deste arquivo, podemos automatizar procedimentos como por exemplo limpar a tela ao se deslogar do sistema. Quando uma bash chamada mas no uma shell de login, o arquivo chamado ser apenas o ~/.bashrc. Sendo assim, se desejarmos criar alias ou definir variveis ou funes que sejam comuns a todos os usurios, devemos fazer isso no arquivo /etc/profile. Caso o usurio no deseje utilizar o padro do sistema, alter-lo ou adicionar configuraes pessoais, ele deve utilizar os arquivos ~/.bash_profile, ~/.bash_login, ~/.profile ou ~/.bashrc.
Captulo 11 Administrao da Shell - 181 #cat /etc/motd Linux gandalf 2.6.18-4-486 #1 Wed May 9 22:23:40 UTC 2007 i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
Os caracteres \n \l no arquivo /etc/issue representam respectivamente o nome do servidor e do terminal em que o usurio est logado.
Captulo 11 Administrao da Shell - 182 Conhecer um pouco das shells sh e bash pode ser de muita importncia para prova.
3) Verifique se a varivel aparece na relao do comando set e do comando env: # set | more # env | more
4) Defina uma varivel global (de ambiente) chamada GNULINUX e que receba o valor rocks: # export GNULINUX=rocks
6) Agora, verifique se a varivel aparece na relao dos comandos set e env: # set | more # env | more
Captulo 11 Administrao da Shell - 183 7) Execute uma nova bash no mesmo terminal que voc definiu as variveis: # bash
11)
# source /etc/profile
12)
# unset LINUX
13) Crie um alias para o comando ls, de forma que as listagens sejam exibidas coloridas, mostrando o tamanho dos arquivos em formato``human readable''. # alias ls='ls --color=auto -lh'
14)
15) Edite o seu arquivo .bashrc e adicione no final do arquivo os seguintes alias: # vi ~/.bashrc alias ls='ls --color=auto -lh' alias c='clear' alias cl='ls ; clear'
16) # ls # c # cl
No funcionou? Claro, esses arquivos so lidos apenas uma vez, quando realizamos o login. 17) Faa com que os arquivos de ``inicializao'' da bash sejam relidos:
# source ~/.bashrc
18) # alias
19)
Captulo 11 Administrao da Shell - 186 7) Determine quais so os contedos e para que servem as seguintes variveis de ambiente: PS1, PATH, TERM, HOME, USER, PWD, OLDPWD e SHELL. _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
8) Considere os seguintes comandos: # cd /usr/share/doc # pwd # cd ~ # cd Determine quais variveis esto sendo lidas para substituir os caracteres ``~'' e ``-'' e na execuo do comando ``pwd''. _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
11.8. Laboratrio
1) A troca de sistema operacional ocorreu a menos de um ms na empresa Tab's Org, e os funcionrios ainda esto um pouco confusos sobre os comandos no Linux. Para minimizar esse problema, voc resolve criar novos comandos no sistema visando ajudar os usurios a se acostumarem com o shell do Linux: 1.1) alias: lista Sua funo listar o contedo do diretrio atual. 1.2) alias (desafio): infogeral Sua funo mostrar algumas informaes. A sada desse comando dever ser: Usurio logado: Voc est em: /etc
Captulo 11 Administrao da Shell - 187 Caminho dos executveis no sistema: /usr/local/bin:/usr/bin:/bin:/usr/games Nome da mquina: trinity Data: Qua Fev 28 08:02:49 BRT 2007
2) Crie dois alias chamados lf e ldir que listem apenas arquivos, incluindo arquivos ocultos e liste apenas diretrios, incluindo diretrios ocultos. 3) Por questes de segurana, altere o contedo dos arquivos de mensagem de pr-login e de mensagem do dia para que contenham a seguinte instruo. =============================== = Este computador / sistema de acesso restrito = = apenas a pessoas autorizadas. Todas as suas = = atividades esto sendo monitoradas e logadas! = ================================
12.1. Objetivos
Diferenciar compactao de empacotamento; Compreender o comando tar e cpio; Comparar as qualidades do gzip e do bzip2
A compresso e empacotamento de arquivos e diretrios muito importante em qualquer sistema computacional. Ambos os procedimentos so necessrios desde o ponto de vista de distribuio de softwares, quanto de economia de banda e de espao de armazenamento, at backup do sistema. Veremos neste captulo o principal programa de empacotamento GNU/Linux e os dois principais compactadores.
Onde o significado dos parmetros so: <operaes> podem ser: c - criar o arquivo tar; r - adicionar (concatenar) contedo a um arquivo tar; x - extrair o contedo de um arquivo tar; t - listar o contedo de um arquivo tar. <opes> podem ser: v - Verbose tar; z - utilizar com compresso gZip, tanto na criao como na extrao de um arquivo tar;
Captulo 12 Compactadores, Empacotadores e Procedimentos de Backup - 190 j - utilizar com compresso bzip2, tanto na criao como na extrao de um arquivo tar; Z - utilizar com compresso compress, tanto na criao como na extrao de um arquivo tar. <arquivo_tar> o nome do arquivo tar sob o qual se est trabalhando. Deve ser precedido pela letra f de file. <arquivos_de_entrada> listagem dos arquivos que sero adicionados ao arquivo tar. Esquematicamente, a utilizao bsica do comando tar pode ser ilustrada da seguinte forma:
Ilustrao 17: Fluxo do Tar Seguindo o filosofia Unix ``faa apenas uma tarefa, mas faa bem feito'' o tar um programa especialista em empacotar vrios arquivos. Dessa forma, quando utilizamos os parmetros z e j estamos na realidade fazendo uma chamada externa aos comandos gzip e bzip2, especialistas em compresso de dados. Podemos ver o header de um arquivo tar utilizando o comando od # od -t c arquivo.tar | head -n 30
Outros programas que trabalham de forma anloga ao tar so o dump e cpio. Ambos foram criados com a mesma finalidade, mas so pouco utilizados hoje em dia, pois no so to versteis quanto o tar.
O comando acima empacotar todos os objetos da saida do comando ls. Para extrair podemos proceder da seguinte forma: # cpio -iv < pacote.cpio
Para compactar um diretrio podemos utilizar o comando find de apoio : # find . teste/ | cpio -ov > a.cpio
Captulo 12 Compactadores, Empacotadores e Procedimentos de Backup - 192 para os no especialistas da rea. Os principais programas de compresso que utilizaremos so o bzip2, gzip, zip e compress. O bzip2 utiliza os algoritmos Burrows-Wheeler transform e Huffman coding; j o gzip e o zip utilizam os algoritmos LZ77 e Huffman coding; p compress utiliza o algoritmo LZW, o mesmo utilizado pelo formato de imagens gif. Todos esses algoritmos fazem parte do grupo dos algoritmos que no ocasionam perdas de dados. A forma de utilizao desses comandos so bastante simples, para o gzip, bzip2 e compress, basta fornecer o arquivo de entrada que a compresso se dar no prprio arquivo. Eis uma diferena entre o tar e esses programas. Como o programa zip realiza a tarefa de empacotar e comprimir ele recebe dois argumentos, o arquivo de sada .zip e os arquivos de entrada, ou seja, aqueles a serem empacotados e comprimidos. Voc deve estar se perguntando, se o zip j realiza o trabalho de empacotar e comprimir, para que eu utilizaria o comando tar em conjunto com um programa de compresso?!?! A resposta simples: o zip no armazena os metadados!
Captulo 12 Compactadores, Empacotadores e Procedimentos de Backup - 193 anteriormente, assim fazendo um backup completo de todos os objetos em questo. Conhecendo os tipos de backup, vamos conhecer algumas ferramentas que podem nos ajudar.
12.5.1. O comando dd
O comando dd tem a capacidade de copiar bit a bit uma partio, para isso podemos utilizar assim: # dd if=/dev/hda /dev/hdb
2) Verifique que no possvel compactar um diretrio sem empacot-lo antes. Tente com o gzip e com o bzip2: # gzip etc # bzip2 etc
Para determinarmos qual o melhor compactador vamos analisar dois tipos de arquivos, texto puro e binrio. Para isso vamos cri-los. 3) Vamos criar dois arquivos de texto puro. Abra o arquivo texto1 no editor vim e insira uma linha contento os nmeros de 0 a 9:
4) Ainda dentro do vim, copie essa linha e cole 250.000 vezes: :1y 250000p
7) Vamos criar um par de arquivos binrios para nossos testes. Utilizaremos como base, o programa aptitude: # cp /usr/bin/aptitude bin1
9) Verifique que criamos quatro arquivos com tamanho aproximadamente 2.4MB, sendo dois binrios e dois texto puro: # ls -lh
parecido,
GZIP
Tamanho final Tempo para compactar Tempo para descompactar
BZIP2
Vamos iniciar os testes com os arquivos texto. 2) Determine o intervalo de tempo que leva para comprimir o arquivo texto1 com gzip: # time gzip texto1
3) Determine o tamanho final do arquivo texto1 aps ser comprimido com gzip: # ls -lh texto1.gz
4) Determine o intervalo de tempo que leva para descomprimir o arquivo texto1.gz: # time gunzip texto1.gz
Vamos repetir os procedimentos utilizando o bzip2. 5) Determine o intervalo de tempo que leva para comprimir o arquivo texto2 com bzip2: # time bzip2 texto2
6) Determine o tamanho final do arquivo texto2 aps ser comprimido com bzip2: # ls -lh texto2.bz2
7) Determine o intervalo de tempo que leva para descomprimir o arquivo texto2.bz2: # time bunzip2 texto2.bz2
GZIP
Tamanho final Tempo para compactar Tempo para descompactar
BZIP2
2) Determine o intervalo de tempo que leva para comprimir o arquivo bin1 com gzip: # time gzip bin1
3) Determine o tamanho final do arquivo bin1 aps ser comprimido com gzip: # ls -lh bin1.gz
4) Determine o intervalo de tempo que leva para descomprimir o arquivo bin1.gz: # time gunzip bin1.gz
5) Determine o intervalo de tempo que leva para comprimir o arquivo bin2 com bzip2: # time bzip2 bin2
6) Determine o tamanho final do arquivo bin2 aps ser comprimido com bzip2: # ls -lh bin2.bz2
7) Determine o intervalo de tempo que leva para descomprimir o arquivo bin2.bz2: # time bunzip2 bin2.bz2
3) Antes de extrair o contedo do arquivo etc.tar, vamos renomear o diretrio /backup/etc para /backup/etc.orig e verificar o contedo do diretrio /backup: # mkdir /backup/etc # mv /backup/etc /backup/etc.orig # ls -lh
4) Sendo o tar uma ferramenta de backup devemos seguir a regra nmero 1 de um sistema de backups... ver como se faz para restaurar um backup. Vamos extrair o arquivo etc.tar: # tar xf etc.tar
5) Veja que um novo diretrio /backup/etc foi criado a partir do arquivo etc.tar: # ls -lh
6) To importante quanto conseguir restaurar um backup que ele esteja intacto. Sendo assim, verifiquemos a integridade dos dados recuperados comparando-os com os originais: # diff -r etc.orig etc
Se o comando diff no retornar nada na tela, significa que ambos os diretrios e seus contedos esto idnticos. 7) J que estamos realizando um procedimento bastante utilizado para backup vamos comparar os espaos em disco utilizados antes e depois do backup: # du -hs etc # ls -lh etc.tar
At o momento aprendemos que os compactadores gzip e bzip2 no compactam um diretrio recursivamente. Sendo assim, devemos empacotar esse diretrio e depois comprimi-lo utilizando algum dos programas disponveis. 8) Crie uma cpia de segurana do diretrio /etc utilizando o tar com compresso gzip: # tar czf etc.tar.gz etc
Captulo 12 Compactadores, Empacotadores e Procedimentos de Backup - 199 9) Crie uma cpia de segurana do diretrio /etc utilizando o tar com compresso bzip2: # tar cjf etc.tar.bz2 etc
10)
13.1. Objetivos
Entender a estrutura de um script; Automatizar tarefas; Conhecer algumas variveis importantes;
Tarefas administrativas so, muitas vezes, longas e repetitivas. Podemos automatizar esses procedimentos atravs de scripts. Na verdade, os scripts podem nos auxiliar muito, numa vasta gama de atividades.
Captulo 13 Shell Script I - 201 Mas, qual a diferena entre um script e um programa, j que ambos so seqncias de instrues? Um script, um programa no compilado. O processador da mquina s capaz de executar programas binrios, isto , compilados especificamente para ele. Dessa forma, necessrio um programa que interprete esse script, em tempo de execuo, para que o mesmo possa ser executado. No nosso caso, esse programa ser uma shell, j que estamos falando de shell scripts. Sendo uma linguagem de programao, a Shell Script possui uma srie de estruturas de controle como loops e condicionais, mas que so estudadas apenas em cursos mais avanados. Neste curso aprenderemos a fazer um script bsico.
# vim mps.sh #!/bin/bash #Meu primeiro shell script cd ~ clear ls -alh date cd -
Este um script bem simples. As linhas que comeam pelo smbolo # so comentrios, ou seja, tudo que aparece depois do # desprezado. Os comentrios so muito importantes nos programas, pois so uma forma de document-los. Imagine se voc tiver que fazer uma alterao num programa escrito a um ano antes. Ser que voc ir se lembrar de todas as estruturas e variveis que utilizou? Provavelmente que no. Se for outra pessoa quem tiver que efetuar essa mudana, a situao ser pior ainda!
Captulo 13 Shell Script I - 202 Mas a primeira linha, que parece um comentrio, possui uma caracterstica um tanto estranha. Na verdade, a primeira linha de um script, quando conter em seu incio a seqncia #! indica qual programa ir interpretar aquele script. No nosso exemplo ser o programa /bin/bash, uma shell. Se estivssemos criando um script Perl, a primeira linha seria algo como #!/usr/bin/perl. Mas o script, propriamente dito, executa 4 comandos simples: Acessar o diretrio do usurio corrente (cd ~); limpar a tela (clear); listar o contedo (ls -alh); imprimir a data (date) e voltar ao diretrio original (cd -).
Lendo parmetros da linha de comandos Em algumas situaes, pode ser necessrio fornecer parmetros para um script. Por exemplo, se ao invs de listar o contedo do diretrio pessoal do usurio, quisssemos que o script listasse o contedo de um diretrio qualquer. Supondo que esse novo script chama-se s2, uma possvel forma de utilizao do script seria: # ./s2 /etc
Para passar parmetros para esse script, precisamos conhecer a funo de algumas variveis: $1, $2. Quando passamos algum parmetro para o nosso script,
Captulo 13 Shell Script I - 203 esse parmetro fica armazenado em uma varivel especifica. Pro exemplo: # ./script parmetro1 parmetro2 parmetro3
Para conseguirmos resgatar o valor desses parmetro, precisamos chamar as variveis 1,2 e 3, por exemplo:
1 2 3 4 5 6
#!/bin/bash # #Esse script pega o valor dos parmetros e imprimi na tela. echo $1 echo $2 echo $3
#!/bin/bash # echo "Aguarde ....." sleep 3 G=`wc -l /etc/group | cut -d" " -f1` U=`wc -l /etc/passwd | cut -d" " -f1` echo "O sistema possui $U usurios." echo "O sistema possui $G grupos." echo "O sistema possui `expr $G + $U` objetos."
1 2 3
#!/bin/bash # #Esse programa tem como objetivo filtrar todos os usurios que no QTD=`cat /etc/passwd | grep -v /home/ | wc -l` echo "A quantidade de usurios que no possuem home de: $QTD"
possuem home
4 5
Captulo 13 Shell Script I - 205 Altere o script para que ele receba um parmetro da linha de comandos. Por exemplo o arquivo passwd.
1 2 3
#!/bin/bash # #Esse programa tem como objetivo filtrar todos os usurios que no QTD=`cat $1 | grep -v /home/ | wc -l` echo "A quantidade de usurios que no possuem home de: $QTD"
possuem home
4 5
Execute novamente o script, fornecendo agora como argumento a localizao do arquivo passwd: # ./userfiltro /etc/passwd
Para a prova bom saber a funcionalidade de algumas variveis!! Miauuuuuuuu !!! $0 traz o resultado de como o seu programa foi chamado.
Captulo 13 Shell Script I - 206 a=1 b=2 SE $b > $a ENTO IMPRIMA $b SENO IMPRIMA $a FIMSE
13.7.1. A varivel $?
A varivel interrogao conhecida por testar o valor de retorno de qualquer comando quando mostrada aps sua execuo. Com ela podemos verificar se o programa foi executado com sucesso ou no. Para isso basta saber que essa varivel tem dois retornos principais. # comando1 # echo $? # 0
Quando o resultado dessa varivel igual a 0. -------------Comando executado com sucesso!!! # comando2 # echo $? # != 0
Quando o resultado diferente de 0, quer dizer que existiu algum problema na execuo do comando. Cada programa tem sua tabela e excees, mas sempre retornam 0 quando o programa bem executado.
Captulo 13 Shell Script I - 207 executado atravs do comando test. Vamos conferir algumas formas de testarmos condicionais:
Captulo 13 Shell Script I - 208 # whisk=blue # test -z $whisk # echo $? # 1 Acima testamos algumas meios de se testar as condicionais utilizadas dentro do estrutura SE. Lembre-se que podemos usar as condicionais tanto dentro como fora da estrutura SE, denpende do caso e do meio. Abaixo podemos ver uma lista de alguns operadores para nossa diverso.
Operadores
== != Igual Diferente
Funes
Operadores
+ * / > >= < <= Soma Subtrao Multiplicao Diviso Maior Maior ou Igual Menor Menor ou Igual
Funes
Operadores
-e -nt Arquivo existe
Funes
Arquivo mais novo que
Existem muitos outros operadores para que possamos dominar o mundo e consequentemente o sistemas UNIX om shell script. Programar em shell script uma arte, e como na arte, em shell o limite a sua imaginao. Para se aprofundar nesse assunto pra l de supimpa: http://aurelio.net/shell/canivete.html
#!/bin/bash # ## Primeiro script - Verificando se um usurio existe # echo "Digite usurio para consulta:" read USER REPLY=$(getent passwd | grep $USER) if [ -z $REPLY ]; then echo "Usurio $USER no existe!" else echo "Pagamento em dia" fi
10 11 12 13
Ao invs de verificar se a varivel que recebia o resultado do comando estava vazia, poderamos tambm utilizar o comando test antes da estrutura e checar apenas seu cdigo de erro:
#!/bin/bash # ## Primeiro script - Verificando se um usurio existe # echo "Digite usurio para consulta:" read USER REPLY=$(getent passwd | grep $USER) test -z $REPLY if [ $? -eq 0 ]; then echo "Usurio $USER no existe!" else echo "Pagamento em dia" fi
10 11 12 13 14
Podemos fazer diversas operaes no nosso sistema com o shell. Vamos para o ultimo exemplo:
#!/bin/bash # ## segundo script - Verificando se um arquivo est vazio # # Programa para gerar uma lista de usurios com seus determinados # Exportar para um arquivo com um cabealho com usurio e timestamp # Fazer check de arquivo existente echo "Deseja prosseguir com a exportao da lista de usurios? (y/n)" read OP if [ $OP = y ]; then echo "Nome da lista" read LISTA test -e $LISTA if [ $? -eq 0 ]; then echo "Arquivo existe, impossvel continuar .... saindo" exit else echo "Gerando lista ...." echo "Colocando o cabealho ..." echo "Lista de usurios xpto" >> $LISTA echo "Verificando usurios ..." echo "Adicionando a lista ... " echo "Emitida por:$USER" >> $LISTA echo $(date +"Emitido dia %d de %B de %Y as %H:%M") echo " " >> $LISTA getent passwd | cut -d: -f1,6 | sed s/:/\----------------------------\>/ >> /tmp/$0.list cat $LISTA /tmp/$0.list > /tmp/$0.final echo " " > $LISTA cat /tmp/$0.final > $LISTA >> $LISTA
homes,
6 7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
28 29 30
echo "Exibindo lista, sua lista gerada chama $LISTA" cat $LISTA echo Done. fi else if [ $OP = n ]; then exit else echo "Opo invlida" fi fi
Podemos explorar ainda mais o Shell Script ... Aproveite tambm nosso curso de Shell Script com o Julio Csar Neves.
Captulo 13 Shell Script I - 213 3) Como so chamados os programas interpretados? De alguns exemplos de linguagens tpicas. _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 4) O que necessrio para executar um programa no compilado, isto , um script? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 5) Compare as vantagens e desvantagens dos programas compilados e scripts. _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 6) Qual a funo do comando test? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 7) Qual operador podemo usar para comparar se um objeto um dispositivo de bloco (man bash)? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
13.10. Laboratrio
1) Crie um script shell que mostre uma poro de um arquivo, onde os argumentos seriam: Nome do arquivo Nmero da primeira linha mostrada
3) Como resultado, as linhas 7 a 18(inclusive) do arquivo /etc/passwd devem ser mostradas. Dica 1: Use os comandos head e tail.
4) Crie um script com as seguintes caractersticas: Front-end Simples para o comando date; O script deve receber uma data no formato dd/mm/yy; O script deve receber uma hora no formato HH:MM; Aps receber esses dados os script deve filtrar as informaes e alterar o horrio do sistema. Com o script j funcional, adicione ao $PATH;
14.1. Objetivos
Entender como funciona o agendamento no sistema; Aprender o funcionamento do cron; Aprender o funcionamento do at;
E fica armazenada em arquivos com o nome do usurio dono da tabela no diretrio /var/spool/cron/cronjobs. J a crontab do sistema encontrada no /etc/crontab e j possui agendamentos para realizar as tarefas que se encontram nos diretrios /etc/cron.[hourly|daily|weekly|monthly]. Sendo que o programa chamado run-parts quem executa os referidos agendamentos. O formato das crontabs dos usurios e do sistema so quase iguais, exceo que a crontab do sistema possui um campo a mais, como pode ser visto a seguir: crontab (usurios) # minuto hora dia ms diaDaSemana comando crontab (sistema) # minuto hora dia ms diaDaSemana USURIO comando
A nica diferena entre as duas crontabs que na do sistema h um campo para especificar qual o usurio que ir executar o comando agendado.
Alm disso cada campo possui um conjunto de valores vlidos, sendo eles: minuto varia de 0-59; hora varia de 0-23; dia varia de 1-31; mes varia de 1-12; diaDaSemana varia de 0-7, sendo 0 e 7 so o domingo; usurio um usurio vlido no sistema; comando o path completo para o comando.
Captulo 14 Agendamento de Tarefas - 217 Podemos controlar quais usurios podem acessar ou no o cron, basta criar um dos arquivos, /etc/cron.allow ou /etc/cron.deny. A mesma dica vlida para o at. /etc/at.allow ou at.deny
Considerando o formato j listado, podemos realizar agendamentos utilizando alguns operadores que facilitam, como: vrgula (,)' - especifica uma lista de valores, por exemplo: ``1,3,4,7,8''; hifen (-) especifica um intervalo de valores, por exemplo: 1-15 (de 1 a 15); asterisco (*) - especifica todos os valores possveis; barra (/) -especifica ``pulos'' de valores, por exemplo: se no campo hora utilizarmos ``*/3'' o comando ser executado as ``0,3,6,9,12,15,18,21'';
Aps essa verificao podemos comear a realizar agendamentos. 2) Agende para 10 minutos no futuro a listagem do diretrio /etc redirecionando para um outro arquivo, e depois outro arquivo contendo a data e a hora em que foi executada:
Captulo 14 Agendamento de Tarefas - 218 # at HH:mm MM/DD/YYYY at> ls --color /etc > /root/etc_list.txt at> echo $(date +"%H:%m %M/%d/%Y" ) >> /root/gera.txt at> (Ctrl + d)
agendamento
listando
todos
os
Repare que no agendamento, temos nossa variveis, e o comando. 6) Vamos realizar outro agendamento, para executar em 15 minutos, para que possamos aprender como apag-lo: # at HH:mm MM/DD/YYYY at> echo "Teste" > /tmp/at.out at> ^d
Liste os agendamentos correntes e verifique que um novo arquivo foi criado no diretrio de spool do at. 7) Remova o ltimo agendamento: # atrm <numero_agendamento> Liste os agendamentos ativos e liste o contedo do diretrio de spool do at e
Captulo 14 Agendamento de Tarefas - 219 veja que o job foi removido, utilize seus conhecimentos.
8) Crie um script para fazer um backup do /etc: # vi /root/backup.sh #!/bin/bash # Backup do /etc tar czf /backup/$(date +%Y%m%d-%H%M)-etc.tar.gz /etc
OBS: No esquea das permisses do script. 9) Entre na crontab do usurio para edit-la: # crontab -e
10) Coloque na crontab do usurio um agendamento para fazer backup do diretrio /etc/ utilizando o script criado a cada 2 minutos. # MM HH DD mm DS CMD */2 * * * * /root/backup.sh
11)
# crontab -l
12) Onde ficam armazenados os agendamentos feitos pelos usurios com o crontab -e?
OBS: Ateno! No apague ou edite o seu agendamento dentro desse diretrio, use os comandos para fazer isso. 13) Aps verificar que os agendamentos foram efetuados corretamente, apague todos os agendamentos do usurio. # crontab -r
OBS: Para apagar somente um agendamento do usurio, use o crontab -e e retire a linha desejada. Agora que aprendemos a utilizar a crontab do usurio podemos usar a crontab do sistema que opera praticamente da mesma forma, apenas tem um campo a mais, o usurio que executar o script. 14) Faa o mesmo agendamento para execuo do script backup.sh, mas agora na crontab do sistema: # vi /etc/crontab # MM HH DD mm DS USER CMD */2 * * * * root /root/backup.sh
Repare que dentro do arquivo /etc/crontab existem quatro agendamentos j definidos: cron.hourly, cron.daily, cron.weekly e cron.monthly.
15)
# cp /root/backup.sh /etc/cron.daily/backups
com
que
script
backup.sh
seja
executado
17) Depois de adicionar o script dentro dos diretrios ser necessrio reiniciar o daemon do cron. # /etc/init.d/cron stop # /etc/init.d/cron start
3) Qual a sintaxe correta para agendar uma tarefa que seja executada nos dias 1, 7, 10 e dos dias 15 ao 20 s 19hs utilizando a crontab do usurio, sendo o nome do comando ``foo''? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
14.5. Laboratrio
1) Realize o agendamento da execuo do script de backup (backup.sh) para que rode a cada 5minutos no dia de hoje, nas prximas 2hs, utilizando a crontab do sistema. 2) Crie um script, chamado uso.sh, que lista as informaes de utilizao de espao pelos file systems, jogando a sada em um arquivo chamado uso.txt no /root e coloque-o no diretrio apropriado para que ele seja executado junto com as tarefas dirias da crontab do sistema. 3) Manipule a data e hora do sistema para que as tarefas dirias sejam executadas daqui trs minutos. Verifique se o script ``uso.sh'' foi executado.
4) Determine o motivo pelo qual o script ``uso.sh'' no foi executado. 5) Remova todos os agendamentos que realizou para no lotar o /backup. :-)
15.1. Objetivos
Os diversos programas GNU/Linux so distribudos em forma de pacotes, especficos para cada distribuio. Neste captulo aprenderemos um pouco sobre esses pacotes e como instal-los e remov-los do sistema.
caracterstica: .deb.
Captulo 15 Instalando, removendo e atualizando programas - 224 J nas distribuies baseadas em RedHat, temos pacotes com a extenso caracterstica: .rpm.
Vamos primeiramente utilizar essa ferramenta em seu modo texto, e logo aps em seu modo visual. Para descobrirmos o nome correto do pacote que desejamos instalar, podemos fazer uma busca pelo comando abaixo: aptitude search <argumento>
Captulo 15 Instalando, removendo e atualizando programas - 225 Para buscar uma lista completa de pacotes disponveis para debian acesse: http://packages.debian.org
No
RedHat
podemos
aplicar
uma
consulta
executando
yum
search<argumento>
Voltando a falar de dependncias e pacotes, temos que entender algumas coisas sobre pacotes. Os pacotes no so apenas binrios mgicos que depois de um comando de instalao esto prontinhos para funcionar. A instalao de um pacote depende de vrios pr-requisitos que o prprio pacote capaz de fornecer. Por exemplo, queremos instalar o pacote pidgin, um aplicativo de mensagens instantneas, aps comunicarmos que queremos instalar esse pacote, o nosso gerenciador de pacotes ir verificar algumas coisas importantes em relao aquele pacote, como dependncias, recomendaes, conflitos ou apenas sugestes. Para poder ver essas informaes podemos executar o comando: aptitude show <pacote>
As dependncias so pacotes que esto diretamente ligados ao pacote que ir ser instalado, ou seja, essenciais. Se um pacote depende de outro, ambos devem ser instalados pois o programa em questo s ir funcionar se todas suas dependncias estiverem supridas. As recomendaes so pacotes que no so essenciais, porm tiram alguma funo que o programa poderia ter. Por exemplo, quando instalamos o pacote mozilla-browser recomendado tambm a instalao do pacote mozilla-psm, que d
Captulo 15 Instalando, removendo e atualizando programas - 226 suporte as paginas seguras. As sugestes so pacotes que so relacionados a complemento de
funcionalidade, a instalao desse pacote pode fornecer alguns complementos em relao ao pacote que est sendo instalado. Os conflitos so pacotes que no podem ser instalado juntos no sistema.
A sada do comando ser algo similar a listagem abaixo. A localizao dos repositrios poder ser diferente, conforme sua configurao:
Captulo 15 Instalando, removendo e atualizando programas - 227 Obter:1 http://security.debian.org etch/updates Release.gpg [189B] Obter:2 http://security.debian.org etch/updates Release [22,5kB] Obter:3 http://ftp.us.debian.org etch Release.gpg [378B] Atingido http://ftp.us.debian.org etch Release Atingido http://ftp.us.debian.org etch/main Packages Atingido http://ftp.us.debian.org etch/contrib Packages Atingido http://ftp.us.debian.org etch/non-free Packages Obter:4 http://security.debian.org etch/updates/main Packages [90,8kB] Atingido http://ftp.us.debian.org etch/main Sources Atingido http://ftp.us.debian.org etch/contrib Sources Atingido http://ftp.us.debian.org etch/non-free Sources Atingido http://security.debian.org etch/updates/contrib Packages Atingido http://security.debian.org etch/updates/non-free Packages Obter:5 http://security.debian.org etch/updates/main Sources [13,3kB] Atingido http://security.debian.org etch/updates/contrib Sources Atingido http://security.debian.org etch/updates/non-free Sources Baixados 127kB em 3s (34,2kB/s) Lendo lista de pacotes... Pronto
O comando acima sincroniza a lista de pacotes disponveis para instalao nos servidores remotos com a lista de disponveis local. Existem mais de 14.000 pacotes de software disponveis.
Captulo 15 Instalando, removendo e atualizando programas - 228 # vi /etc/apt/sources.list # Linhas que comeam por # so comentrios # Repositrio a partir de CD/DVD # deb cdrom:[Debian GNU/Linux 4.0 - CD Binary-1]/ etch contrib main # Repositrios oficiais deb http://ftp.us.debian.org/debian/ etch main contrib non-free deb-src http://ftp.us.debian.org/debian/ etch main contrib non-free # Repositrios oficiais de atualizaes de segurana deb http://security.debian.org/ etch/updates main contrib non-free deb-src http://security.debian.org/ etch/updates main contrib non-free
Para remover um pacote instalado deve-se usar o comando aptitude com a instruo remove e fornecer o nome do pacote desejado. Por exemplo, para remover o programa de navegao em linha de comando lynx, digitamos:
Captulo 15 Instalando, removendo e atualizando programas - 230 ferramenta zypper, muito embora nesta distro recomenda-se a utilizao da ferramenta Yast para gerenciamento de pacotes e configurao do sistema. Quando falamos de mandriva a ferramenta da vez o urpmi.
Obtendo informaes: Usando o yum para mostrar informaes de pacotes # yum info pacote
Voc pode usar o yum tambm para buscar pacotes nos repositrios. Todos os pacotes que contm o padro no nome sero mostrados: # yum search padro
Estes so os comandos bsicos e principais do yum. Para saber mais, consulte as man pages desses aplicativos.
Captulo 15 Instalando, removendo e atualizando programas - 231 Dica LPI: As questes da LPI sobre dpkg, aptitude e rpm tm peso elevado. Conhea bem estes comandos fazendo o curso 451 da Formao 4Linux
2) Qual a funo do aptitude update? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 3) Qual a funo do arquivo /etc/apt/sources.list? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 4) Onde esto os arquivos temporrios que o aptitude armazena para instalar? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 5) Em caso de falta de espao em disco por instalar muitos pacotes, o que voc faria? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
Captulo 15 Instalando, removendo e atualizando programas - 232 6) Quais as vantagens e desvantagens de ser ter um pacote instalado pelo cdigo fonte? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 7) Supondo que seu mirror default esteja inoperante, como voc contornaria a situao? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
Captulo 16 Servidor X
16.1. Objetivos
Configurar a interface grfica para os usurios comuns; Conhecer o arquivo de configurao; Instalar e configurar os Display Managers; Instalar e configurar os Window Managers; Gerenciar protocolo de rede, utilizando recursos do servidor; Abrir novas instncias de janelas de mquinas em rede.
desenvolvimento de ambientes GUI como desenhar na tela, mover janelas e interagir com o mouse e teclado; ele no dita quais sero as decoraes das janelas, quem faz isso so os chamados Window Managers (WM) ou gerenciadores de janelas. Dessa forma, a ``cara'' da parte grfica varia drasticamente de um WM para outro. Um conceito bsico do servidor X que ele realmente um servidor como o prprio nome j indica. Sendo assim, possvel abrir vrias instncias de interface grfica em uma mesma mquina ou at mesmo em uma mquina remota, graas ao seu protocolo de rede.
No Debian Lenny 5.0, o X tem uma configurao um pouco menor dado o fato que todas as configuraes do debconf so aproveitas para configurao do servidor X; O arquivo de configurao do servidor X dividido em sees e cada uma diz respeito configurao de um determinado pedao do sistema como um todo. A estrutura bsica de um desses arquivos a seguinte:
Files Modules InputDevice (mouse) InputDevice (keyboard) Screen Monitor Displays Device (video card)
Ou seja, o arquivo composto de vrias sees que definem qual ser o comportamento dos dispositivos como teclado, mouse, monitor e placa de vdeo e algumas outras definem recursos que o servido X ir utilizar, como os mdulos que sero carregados e arquivos de fontes, por exemplo. Alm das sees separadas que definem o comportamento de algum componente em separado, h outras como ``ServerLayout'' e ``Screen'' que definem como o conjunto de recursos ir operar.
sendo o <ip_destino> o endereo IP de uma mquina na rede, podendo ser deixado em branco caso a mquina de destino seja a prpria mquina local. O campo display refere-se a uma instncia de parte grfica dentro de uma screen; o campo screen refere-se ao monitor e placa de vdeo que iro sair a parte grfica. No se esquea que a varivel que define o ambiente do usuario a DISPLAY.
Captulo 16 Servidor X - 237 entre outros. Algumas das opes de gerenciadores so:
AfterSteps Evilwn IceWM Metacity (Gnome) twm Blakbox Enlightenment Ion WMN xfce FluxBox FVWM Kwin(KDE) SawFish OpenClasses(Sun)
16.8. Xnest
Um Xnest uma instncia do servidor X que pode ser utilizada para receber alguma sada grfica que tenha sido redirecionada a ela utilizando a varivel display. Pode ser utilizada tambm para receber um DM solicitado via XDMCP.
Aps a instalao, vamos testar se a configurao padro serve para a nossa mquina. 2) Inicie o servidor X: # X
Qual comando eu consigo trazer informaes sobre as cores e opes do Servidor X? R: xwininfo 3) Gere a configurao de vdeo detectada pelo debconf: # dexconf
4) Caso esteja funcionando, timo. De qualquer forma, vamos executar o procedimento de configurao:
Esse comando ir tentar identificar qual o hardware da sua mquina e gerar um arquivo de configurao para ela gravando esse arquivo no diretrio do root.
5) Teste esse novo arquivo de configurao: # X -config /root/xorg.conf.new Para configurar o Xorg, via dpkg, digite: # dpkg-reconfigure xserver-xorg
6) Novamente, se funcionar, timo, caso no funcione, teremos que realizar os ajustes manualmente e, para isso, precisaremos de algumas informaes como: placa de vdeo - para determinar qual a nossa placa de vdeo podemos utilizar o comando:
frequncias do monitor - para descobrir quais so as frequncias do seu monitor voc deve recorrer ao manual e ao Google.
Captulo 16 Servidor X - 240 Section "Files" (Fontes do meu servidor X, cuidado, ela pode ser cobrada naLPI) FontPath "/usr/share/fonts/X11/misc" . . . FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" EndSection Section "Module" (Seo responsvel pelo Mdulos da minha mquina) Load "i2c" . . . Load "vbe" EndSection Section "InputDevice" (Entrada de Teclado) Identifier "Generic Keyboard" Driver "kbd" Option "CoreKeyboard" Option "XkbRules" "xorg" Option "XkbModel" "abnt2" Option "XkbLayout""br" Option "XkbVariant" "abnt2" EndSection Section "InputDevice" (Entrada de Mouse) Identifier "Configured Mouse" Driver "mouse" Option "CorePointer" Option "Device" "/dev/input/mice" Option "Protocol" "ImPS/2" Option "Emulate3Buttons" "true" EndSection Section "Device" (Seo que define o nosso hardware de vdeo)
Captulo 16 Servidor X - 241 Identifier "Video Card" Driver "vmware" EndSection Section "Monitor" (Opes de Monitor) Identifier "Generic Monitor" Option "DPMS" HorizSync 28-51 VertRefresh43-60 EndSection Section "Screen" (Layout de Screen, bits de cores a serem utilizadas) Identifier "Default Screen" Device "Video Card" Monitor "Generic Monitor" DefaultDepth 24 SubSection "Display" Depth 1 Modes "1024x768" "800x600" "640x480" EndSubSection . . . SubSection "Display" Depth 24 Modes "1024x768" "800x600" "640x480" EndSubSection EndSection Section "ServerLayout" Identifier "Default Layout" Screen "Default Screen" InputDevice"Generic Keyboard" InputDevice"Configured Mouse" EndSection
Captulo 16 Servidor X - 242 Leitura sugerida: man xorg.conf para mais informaes a respeito desse arquivo e suas opes de configurao e parmetros.
Realizadas as alteraes, vamos realizar um novo teste para ver se o servidor consegue subir. 8) Teste as configuraes: # X -config /root/xorg.conf.new Se as configuraes no funcionarem teremos que ler a mensagem de erro e tentar identificar o problema. 9) Funcionando, basta mover os arquivos para o diretrio correto: # mv /root/xorg.con.new /etc/X11/xorg.conf
10) # X # startx
No Linux podemos ter vrios Clientes Grficos. Depois que o servidor grfico j est instalado e configurado, s vamos ter o trabalho de instalar os clientes grficos. 1) Instalar o gerenciador de janelas WindowMaker: # aptitude install wmaker
3) Para um prximo teste, vamos instalar outro cliente grfico que muito utilizado, o KDE: # aptitude install kdebase
Note que foi utilizado o mesmo comando para iniciar tanto WindowMaker quanto o KDE (o startx). Isso acontece porque ao instalarmos o KDE ele se colocou como sendo o WM padro do sistema, mas isso pode ser alterado.
5) Podemos editar o arquivo /root/.xinitrc para escolhermos qual cliente grfico ser iniciado quando o root utilizar o comando startx. Essa configurao vllida apenas para o usurio root, pois alteramos o xinitrc da home do root: # vi /root/.xinitrc
6) Para que alterao seja vlida para qualquer usurio, devemos editar o arquivo de configurao global: # vi /etc/X11/xinit/xinitrc
7) Lembrando que uma configurao local, ou seja, o arquivo pessoal do usurio, prevalece sobre o global, caso o usurio especifique um. Vamos
Captulo 16 Servidor X - 244 deixar instalados os pacotes do GNOME e do XFCE # aptitude install gnome xfce4
Vimos no tpico anterior como iniciar o nosso cliente grfico utilizando o comando startx, mas isso nem sempre muito prtico. Para facilitar esse processo, podemo utilizar os chamados Display Managers.
1) O gerenciador padro do Xorg o xdm que j est instalado. Vamos inicilo: # /etc/init.d/xdm start
2) Vamos instalar o kdm, que possui mais recursos: # aptitude install kdm
Sero feitas algumas perguntas sobre qual ser o seu Display Manager Default, o kdm ou xdm; escolha sempre o kdm, pois dessa maneira toda vez que o seu sistema iniciar, ele vai levantar automaticamente o kdm no terminal 7 por padro. 3) Para iniciar o kdm da mesma maneira. Lembrando que o xdm deve estar parado! # /etc/init.d/xdm stop # /etc/init.d/kdm start
4) Se quiser mudar o seu display manager default, basta editar o seguinte arquivo:
5) Por fim, vamos conhecer outro DM, o GDM, padro do GNOME: # aptitude install gdm
Captulo 16 Servidor X - 246 KDM. Faa login com o seu usurio comum, no como root! NUNCA como ROOT no ambiente grfico! # /etc/init.d/kdm start
2) Ainda como root, instale o pacote xnest, Nested X server: # aptitude install xnest
Agora, em uma shell dentro do ambiente grfico, vamos executar o Xnest, desabilitando qualquer controle de acesso: 3) (Abra um xterm e execute) $ Xnest :1 -ac &
4) Faa uma conexo ssh no servidor remoto com as aplicaes: ssh <seu_usuario>@<ip_servidor>:1
5) J no servidor, exporte a varivel DISPLAY para a sua mquina na screen 1, ou seja, onde o Xnest est ``escutando'': # export DISPLAY=<IP>:1
6) Agora j podemos testar uma aplicao grfica, que ir rodar dentro da tela do Xnest: # wmaker &
Como estamos acessando a aplicao remotamente, os processos da aplicao esto consumindo recursos do servidor, e no na minha mquina.
Pronto! Basta reiniciar o gdm que ele j estar ``escutando'' na poa a 177/tcp. 2) Reinicie o gdm: # /etc/init.d/gdm stop # /etc/init.d/gdm start
3) Verifique que a port 177/ucp est aberta: # netstat -nltup |grep 177 # fuser 177/ucp
4) Em sua mquina, faa uma requisio XDMCP mquina de um dos colegas, mandando utilizar a screen 1: # X -query <IP> :1
16.10. Exerccios
1) Qual a varivel que define para onde vo as sadas grficas? Como voc define que a sada grfica ir para a mquina ip 192.168.200.200, na screen 1 e display 0? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 2) Qual o arquivo que eu defino qual o meu padro de inicializao, e qual a linha que eu defino? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 3) Qual arquivo eu armazeno qual Display Manager estou utilizando? Como faria para trocar? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 4) Qual o caminho do executvel do KDE e do Gnome? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 5) Qual comando eu consigo utilizar, para configurar o daemon do XDM? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 6) Qual o arquivo de configurao do GDM, e do servidor Xorg? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 7) Quais so os Windows Managers que voc conhece? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
17.1. Objetivos
Neste captulo iremos aprender a fazer uma instalao bsica em desktop de um sistema Debian GNU/Linux.
Captulo 17 Instalao Linux em Desktop - 250 Usurios - Por segurana, voc ir definir um usurio padro, cujo login ser aluno e a senha 123456. Ps-Instalao - Para um desktop, o procedimento de ps-instalao : atualizao do sistema.
Insira o CD no drive e reinicie seu computador. Logo, aparecer a tela de boot. No tecle enter! Siga as orientaes seguintes passo a passo. 1) Abaixo, est mostrada a primeira tela que aparecer aps o boot da mquina. No utilizaremos a opo padro de instalao, mas uma diferente.
Captulo 17 Instalao Linux em Desktop - 252 2) Para sabermos quais opes existem, selecione help;Acima voc pode navegar pelas telas de ajuda.
Ilustrao 20: Help 3) Selecione Graphical Install para iniciarmos nossa instalao no modo
Captulo 17 Instalao Linux em Desktop - 253 4) Logo aps o caregamento da interface grfica, a primeira tela de instalao sobre o Locale.
Captulo 17 Instalao Linux em Desktop - 254 6) O prximo passo escolher o layout do teclado: Preste ateno nesse ponto, pois muitos de ns ainda usamos teclados do layout US international
Ilustrao 24: Layout Teclado 7) Deixe que o sistema detecte o dispositivo de media:
Captulo 17 Instalao Linux em Desktop - 255 8) Aps carregar os componentes o sistema automaticamente carrega os componentes necessrios para a instalao.
Ilustrao 26: Carregando mdulos da instalao 9) Aps o carregamento dos mdulos necessrios o sistema ir configurar a rede atravs do protocolo dhcp.
10)
Captulo 17 Instalao Linux em Desktop - 257 12) Selecione seu estado para que o sistema busque o melhor servidor NTP para sincronizar:
Ilustrao 30: Timezone - NTP 13) Na prxima etapa da nossa instalao temos que particionar nosso disco fique atento na nossa tabela de partio:
Nmero
1 2 3 5 6 7 8 9 10 11 12 13 14
Tipo
Primria Primria Primria Lgica Lgica Lgica Lgica Lgica Lgica Lgica Lgica Lgica Lgica
Ponto de Montagem
/boot / /home /usr /var /tmp /var/log swap
Tamanho
200MB 2GB 5GB 10GB 256MB 256MB 3GB 512MB 512MB 512MB 512MB 512MB 512MB
Sistema de Arquivos
ext3 Ext3 Ext3 Ext3 Ext3 Ext3 Ext3 swap No Utilizar No Utilizar No Utilizar No Utilizar No Utilizar
Ilustrao 31: Particionamento Manual 15) Para zerar nossa tabela de particionamento, basta selecionar nosso disco em questo e confirmar a remoo da tabela de particionamento antiga.
Ilustrao 33: Nova Partio Agora com a nossa tabela de parties limpa, sempre que quisermos adicionar uma partio devemos selecionar o ESPAO LIVRE e sequir os seguintes passos:
Captulo 17 Instalao Linux em Desktop - 260 16) Indicar o espao a ser usado:
17)
Captulo 17 Instalao Linux em Desktop - 261 18) Selecione agora se a partio nova ficar no inicio ou no fim do disco:
Ilustrao 36: Inicio ou fim 19) Aps seguir todas essas etapas, a tela abaixo sobre configuraes da nova parties ir aparecer
Captulo 17 Instalao Linux em Desktop - 262 20) Dentro dessas configuraes selecione o sistema de arquivos a ser usado:
Ilustrao 38: Sistema de arquivos 21) Logo aps selecione o ponto de montagem:
Captulo 17 Instalao Linux em Desktop - 263 22) Configure agora as opes do FSTAB:
Ilustrao 40: Opes do FSTAB 23) Ao final da configurao de uma partio voc pode acompanhar as parties que j foram criadas.
Captulo 17 Instalao Linux em Desktop - 264 24) Nossa prxima etapa finalizar o particionamento e pedir para que o sistema grave essas mudanas no disco.
Ilustrao 42: Gravar mudanas no disco 25) Logo aps o particionamento da mquina, o sistema base ser automaticamente instalado.
Captulo 17 Instalao Linux em Desktop - 265 26) Aps a instalao do sistema base hora de configurar as credenciais do sistema, insira a senhas para o administrador root.
Ilustrao 44: Senha do admin 27) A prxima etapa criar um usurio comum para que no utilizarmos o usurio root de forma indevida.
28)
Captulo 17 Instalao Linux em Desktop - 267 29) Na prxima etapa da instalao voc tem a possibilidade de catalogar mais fontes de media para obter uma instalao mais farta.
Ilustrao 48: Novas medias 30) Chegou a hora de configurar os espelhos de rede. Eles so servidores externos da onde o instalador pode baixar pacotes para completar a instalao.
Captulo 17 Instalao Linux em Desktop - 268 31) Aps as configuraes de pacotes o instalador ir configurar a ferramenta aptitude para fazer a instalao desejada.
Ilustrao 50: Configurando gerenciador 32) O instalador ir te perguntar sobre o Popularity-contest, que a ferramente que determina quais sero os pacotes do primeiro CD nas prximas verses:
Captulo 17 Instalao Linux em Desktop - 269 33) Enfim o programa tasksel ir lhe oferecer os tipos de instalao disponiveis:
Ilustrao 52: Tasksel 34) Aps selecionar o sistema ir baixar os pacotes necessrios:
Captulo 17 Instalao Linux em Desktop - 270 35) Logo aps ir comear a instalao em massa dos softwares:
Ilustrao 54: Instalando pacotes 36) Quando a instalao acabar voc deve instalar o GRUB na sua MBR:
Captulo 17 Instalao Linux em Desktop - 271 37) Parabns por sua nova instalao!!! Agora s tirar o CD do driver e rebotar a mquina.
Ilustrao 56: Retirando a media 38) Bem vindo ao seu novo sistema:
ANEXOS
O que
O System Imager um sistema de automatizao para rotinas de backup e recuperao de mquinas. Ele permite que as mesmas mquinas possam ser compartilhadas por vrios cursos simultneos, mas de forma que o estado delas, isto , todos os seus arquivos e configuraes sejam guardados e recuperados de forma individual por aluno.
Instalando o programa.
Primeiramente, o aluno dever fazer o download do programa e mudar as suas permisses. Esse procedimento s necessrio na primeira aula. # cd /sbin # wget 192.168.1.1/si/si_cliente # chmod u+x /sbin/si_cliente
O professor verificar se todas as maquinas esto com a imagem pronta para enviar. Em caso positivo, ir executar um programa para receb-las.
PORTANTO: NO desligue seu micro, pois o servidor estar conectado a ele recebendo os arquivos modificados. Aps o processo ter sido concludo, as mquinas sero desligadas automaticamente.
Aparecer uma listagem das imagens disponveis. Voc dever escolher aquela que corresponder a sua mquina. Um exemplo de nomenclatura das imagens:
Captulo 17 Instalao Linux em Desktop - 275 450-Instrutor-31-Noturno-10 (Cod. do curso)-(Nome do Instrutor)-(Dia de Incio)-(Perodo)-(Fim do IP do Micro) Aps a concluso do processo, a mquina ir se reinicializar automaticamente e, em seguida, estar pronta para uso.
Objetivos
Neste captulo iremos aprender de que forma os dispositivos de hardware so mapeados e manipulados no Linux. Para que esse assunto faa mais sentido, primeiramente veremos alguns conceitos sobre arquitetura de computadores e dispositivos de hardware. Arquitetura de Computadores e Dispositivos de Hardware Podemos dividir um computador em 3 partes principais: CPU, memria RAM e dispositivos. A CPU, muitas vezes denominada como o crebro do computador, responsvel por executar todo o processamento das informaes, que so armazenadas na memria RAM. Mas, um computador no tem muita utilidade se no for capaz de se comunicar com o mundo exterior. Um teclado e um monitor, ou uma rede, so exemplos de meios de comunicao. At mesmo um simples boto (no lugar do teclado) e uma lmpada (no lugar do monitor) poderamos considerar como exemplo. A esses elementos damos o nome de dispositivos de hardware, e incluem interfaces de rede, controladoras de disco, as prprias unidades de disco, portas seriais, paralelas e USB, apenas para exemplificar. Arquitetura do computador o nome que damos forma como essas 3 coisas
Captulo 17 Instalao Linux em Desktop - 277 so organizadas numa mquina. A figura a seguir ilustra a arquitetura tpica dos PCs.
Captulo 17 Instalao Linux em Desktop - 278 teria de ficar constantemente consultando o dispositivo para saber quando enviar ou ler o prximo byte, e conseqentemente perdendo tempo. A cada dispositivo, associada uma interrupo. Entretanto, o nmero disponvel de interrupes limitado, e por essa razo, pode faltar alguma e/ou ocorrer os famosos conflito de interrupo. As interrupes utilizadas podem ser consultadas no arquivo /proc/interrupts. Entretanto, a tecnologia PIO limita a velocidade de transferncia de dados. Ela apropriada apenas para dispositivos como teclado, portas seriais e paralelas, unidades antigas de CD-ROM, etc. Outro problema relacionado a ela o envolvimento da CPU. Isso porque, vrios ciclos de processamento so perdidos no processo de transferncia dos dados, o que se agrava tanto quanto maior for a velocidade dessa transferncia. Para contornar essa situao, foi criado o DMA (Direct Memory Access). Essa tecnologia permite que o dispositivo acesse diretamente a memria RAM, escrevendo ou lendo dados, sem interferncia da CPU. Para isso, so utilizados os chamados canais de DMA, um para cada dispositivo e tambm uma controladora de DMA. Os canais utilizados podem ser consultados no arquivo /proc/dma. Mas essa tecnologia, desenvolvida para os antigos barramentos ISA, tambm ficou ultrapassada, e cedeu lugar ao Bus Mastering. Nesse caso, o prprio dispositivo faz todo o controle de acesso a memria RAM, de modo que os canais de DMA no so mais necessrios. Essa nova tecnologia permitiu o surgimento do UDMA (Ultra DMA). Embora caindo em desuso atualmente, alguns dispositivos legados possuem endereos e interrupes padres. A LPI costuma cobrar essas informaes em suas provas. Memorize a tabela abaixo antes da prova!</lpi>
Int. 4 3
Captulo 17 Instalao Linux em Desktop - 279 COM3 COM4 LPT1 LPT2 /dev/ttyS2 /dev/ttyS3 /dev/lp0 /dev/lp1 3,00E+008 2,00E+008 378 278 4 3 7 5
Softwares Desktop
Objetivos
Existe hoje, uma infinidade de softwares aplicativos de alta qualidade para ambiente GNU/Linux. Temos disponveis navegadores, leitores de e-mail, sutes office, programas para editorao de imagens e vdeo, modelagem 3D, simulaes cientficas, tocadores multimdia e vrios outros. Neste captulo, veremos apenas alguns exemplos dessas aplicaes. Ambientes Grficos Os ambientes grficos em Linux so opcionais e podem ou no ser executados automaticamente. A escolha do ambiente grfico mais adequado segue os mais diversos aspectos, como: consumo de recursos, performance, usabilidade e versatilidade. Um ambiente grfico adequado para uma pessoa pode no ser adequado para outra. Contudo, a padronizao em torno de um ambiente grfico fundamental em ambientes corporativos para minimizar os esforos da equipe de suporte com treinamento e para maximizar a base de conhecimento de problemas e solues conhecidas. Os ambientes grficos que veremos podem ser usados em qualquer sistema Linux. Apesar disso, algumas distribuies usam uma interface por padro, mas nada o impede de usar uma interface diferente. Vejamos algumas delas:
Suites de Produtividade
Uma suite de produtividade pr-requisito para a grande maioria dos computadores. Os usurios necessitam de ferramentas de edio de textos, planilhas eletrnicas e programas de apresentao para executar as suas tarefas dirias em ambientes corporativos. Uma ferramenta domina o mercado de sutes de produtividade baseadas em Software Livre: o BrOffice.org, que pode ser obtido no site www.broffice.org.br. O projeto brasileiro traduz e mantm as verses em portugus do Brasil da suite de produtividade baseada no projeto mundial OpenOffice.org.
Editor de Textos
Planilha Eletrnica
Programa de Apresentaes
Internet
O navegador Firefox e o leitor de correio eletrnico Thunderbird so ferramentas avanadas cujos recursos so copiados por programas proprietrios. Disponveis em diversas plataformas, representam hoje a maneira mais segura, rpida e fcil de navegao na Internet e gerenciamento de correio eletrnico pessoal.
Navegador
Multimdia
Os programas grficos em GNU/Linux tm recursos e usabilidades compatveis com os mais modernos do mercado. Escutar msicas em mp3, assistir vdeos e muito mais so tarefas fceis e intuitivas. A edio de fotos pode ser feita com bastante eficincia em programas avanados como o GIMP, um dos editores de fotos mais competentes do mercado.
udio
Vdeo
Grficos
Acessibilidade
A cada dia que se passa mais e mais pessoas vem precisando utilizar o computador. Muitas delas ainda tem uma grande dificuldade ou algum prolema fsico envolvido. Os projetos se software livre sempre lembraram dessas pessoas como essas pessoas se lembraram do software livre. Hoje existem muitos casos de deficientes fsicos ajudarem o software livre, pois foram ajudados a chegar na tecnologia atravs de softwares como Festival Esse apndice foi desenvolvido para apresentar alguns dos muitos mdulos de acessibilidade do Linux. Para obtermos suporte ao modo accessibility no gnome como chamado primeiro devemos instalar o pacote: # aptitude install gnome-accessibility
Aps essa etapa as ferramentas de acessibilidade foram disponibilizadas em Aplicaes -> Acesso Universal.
Dasher
um interface para escrita para pessoas que no podem usar o teclado. O teclado pode ser substituvel por um joystick, uma leitor de pupila ou mesmo um mouse.
GOK
O projeto GOK foi a selecionado dentre muitos outros projetos como o projeto que mais cumpre com a funo de no se utilizar o teclado. Com ele possvel usar apenas o mouse e ou outros devices especiais.
Festival
Software que pronuncia textos para linhas inseridas em uma STDIN. Para ns administradores, podemos ver ele bem de baixo, sua API bem parecida com python: Copyright (C) University of Edinburgh, 1996-2004. All rights reserved. For details type `(festival_warranty)' festival> festival> festival> (SayText "Hi Linux System")
REFERNCIAS BIBLIOGRFICAS
JULIO CESAR NEVES. Programao em Shell Linux. 6. edio. Brasport. 2006 The Linux documentation Project, website: http://www.tldp.org. Acesso em 28 de maro de 2008. Pritchard, Pessanha, Langfeldt, Stranger and Dean. Certificao Linux LPI 2. edio. AltaBooks. 2007 Gagn, Moving to Linux. 1 edio, Addilson Wesley Rubem E. Ferreira, Guia de Administrao Linux. 2 edio, Novatec, 2008