Você está na página 1de 294

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.3. O comando ls ................................................................................................................47


4.3.1. Coringas .............................................................................................................................48 4.3.2. Usando coringas no Shell ...................................................................................................50

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.4. Filtragem .....................................................................................................................64


5.4.1. Filtrar colunas: cut .............................................................................................................65 5.4.2. Determinando o tipo de arquivo: file .................................................................................66

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.4. Comandos de ajuda ......................................................................................................86


6.4.1. Comando help .....................................................................................................................86 6.4.2. Comando man .....................................................................................................................87 6.4.3. Comando apropos ...............................................................................................................90 6.4.4. Comando whatis .................................................................................................................91 6.4.5. Comando info ......................................................................................................................91

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

7.6. Exerccio Terico ........................................................................................................106

-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.3. Dispositivos de armazenamento .................................................................................132 9.4. Devices, UUID e Labels ..............................................................................................135


9.4.1. Usando os dispositivos de armazenamento .....................................................................137

9.5. Criando Parties no HD ............................................................................................139


9.5.1. Particionamento com FDISK .............................................................................................139 9.5.2. Particionamento com CFDISK ..........................................................................................140

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.4. Registro de usurios no sistema .............................................................................158


10.4.1. Arquivo /etc/passwd ........................................................................................................158 10.4.2. Arquivo /etc/shadow .......................................................................................................159

10.5. Levantamento de informaes dos usurios ............................................................160


10.5.1. Chage ..............................................................................................................................160 10.5.2. Comando id .....................................................................................................................161 10.5.3. Comando finger ..............................................................................................................161 10.5.4. Comando users ..............................................................................................................162 10.5.5. Comando who .................................................................................................................162

10.6. Comando w ...............................................................................................................162 10.7. Criando Usurios ....................................................................................................163


10.7.1. Comando adduser ...........................................................................................................163

10.8. Adicionar um usurio a outro grupo ........................................................................164


10.8.1. Comando gpasswd ..........................................................................................................164

10.9. Modificando usurios ...............................................................................................164


10.9.1. Comando passwd ............................................................................................................165 10.9.2. Comando usermod ..........................................................................................................165

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

11.4. Alias ..........................................................................................................................179


11.4.1. Arquivos de Login ...........................................................................................................179

-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.6. Prtica Dirigida ........................................................................................................193


12.6.1. gzip e bzip2 com arquivos de texto puro .......................................................................194 12.6.2. gzip e bzip2 com arquivos binrios .................................................................................196 12.6.3. Trabalhando com o tar ....................................................................................................197

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

ANEXOS.................................................................................................................................272 System Imager - 4Linux ....................................................................................................273


O que .......................................................................................................................................273 Instalando o programa. ..............................................................................................................273 Utilizando o System Imager .......................................................................................................274 17.3.2. Backup ao final de cada aula ..........................................................................................274 17.3.3. Restore antes de cada aula .............................................................................................274

Manipulando Hardware e Dispositivos .............................................................................276


Objetivos .....................................................................................................................................276 Acesso aos dispositivos ...............................................................................................................277

Softwares Desktop ............................................................................................................280


Objetivos .....................................................................................................................................280 Suites de Produtividade ..............................................................................................................283 Editor de Textos .........................................................................................................................284 Planilha Eletrnica .....................................................................................................................284 Programa de Apresentaes .......................................................................................................285 Internet .......................................................................................................................................286 Navegador ..................................................................................................................................287 Multimdia ..................................................................................................................................287 udio .........................................................................................................................................288 Vdeo ...........................................................................................................................................288 Grficos .....................................................................................................................................289

Acessibilidade ...................................................................................................................290
Dasher ........................................................................................................................................291 GOK ............................................................................................................................................292 Festival .......................................................................................................................................293

REFERNCIAS BIBLIOGRFICAS..................................................................................................................294

- 10

ndice de tabelas ndice de Figuras

Captulo 1 Introduo ao infinito - 11

Captulo 1 Introduo ao infinito

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.

1.3. Distribuies GNU/Linux


Voc j deve ter ouvido falar em Debian, RedHat, Slackware, SuSe, Conectiva, Mandrake, Ubuntu dentre outras. Mas, o que realmente isso? O que so todos esses nomes? Todos esses nomes so o que chamamos de distribuies GNU/Linux. Uma distribuio nada mais do que o kernel, Linux, softwares GNU e outros aplicativos que so desenvolvidos por outras comunidades ou grupos. Mas, por que tantas distribuies? Justamente porque se voc no se identifica com nenhuma delas, voc livre para fazer a sua prpria. Ou seja, em 1993, um rapaz chamado Patrick Volkerding, juntou o kernel e vrios outros aplicativos em uma distribuio chamada Slackware, que foi a primeira a ser distribuda em CD. A partir desse ponto, foram surgindo diversas outras distribuies que de alguma forma diferiam da filosofia do Slackware: como Debian ou RedHat,

Captulo 1 Introduo ao infinito - 14 por exemplo.

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. Caractersticas de Algumas Distribuies


Ser mostrado a seguir a caracterstica de algumas distribuies. Voc pode encontrar uma lista das distribuies existentes, bem como das estatsticas de downloads, no site: http://distrowatch.com

Captulo 1 Introduo ao infinito - 17

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

Captulo 1 Introduo ao infinito - 18

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.

Interface padro: KDE; Sistema de pacote: tgz; Site oficial: http://www.slackware.com

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

Captulo 1 Introduo ao infinito - 19

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;

Interface padro: KDE; Sistema de pacote: DEB; Site oficial: http://www.knoppix.org

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? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

Captulo 2 Primeiros Passos - 22

Captulo 2 Primeiros Passos

2.1. Objetivos
Entender a estrutura do sistema operacional; Descobrir as funcionalidades do Shell; Executar os primeiros comandos no sistema;

2.2. Entendendo a estrutura do Linux


Como podemos ver na figura abaixo, o sistema operacional GNU/Linux pode ser dividido em algumas layers:

Captulo 2 Primeiros Passos - 23

Ilustrao 2: Estrutura do 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 - 24

2.3. Introduo ao Shelll


No Mundo GNU/Linux, utilizamos o shell, que funciona como interpretador de comandos. Inicialmente devemos saber como us-lo. O shell a interface entre o usurio e o kernel do sistema e por meio dele, podemos digitar os comandos. O shell padro do GNU/Linux o bash. Existem tambm outros shells, como, por exemplo, csh, tcsh, ksh e zsh. O kernel a parte mais prxima do hardware do computador. o ncleo do Sistema Operacional. Se seu GNU/Linux estiver com problemas, no chute seu computador, a culpa no dele. O local onde o comando ser digitado marcado por um trao piscante na tela, chamado de cursor. Tanto em shells texto como nos shells grficos necessrio o uso do cursor para sabermos onde devemos iniciar a digitao de textos e nos orientarmos quanto posio na tela. Popularmente conhecido como linha de comandos, o shell interpreta o usurio que ir efetuar uma ao de duas maneiras, so elas: Super usurio, popularmente conhecido como root. No se engane, root no de raiz, da lngua inglesa. O usurio root o administrador do sistema, e seu diretrio (pasta) padro o /root, diferentemente dos demais usurios que ficam dentro de /home. No prximo captulo falaremos mais sobre a estrutura de diretrios do GNU/Linux. O shell de um usurio root diferente de um usurio comum. Antes do cursor, ele identificado com ``#'' (jogo-davelha). Usurio comum, qualquer usurio do sistema que no seja root e no tenha poderes administrativos no sistema. Como j havamos dito anteriormente, o diretrio padro para os usurios o /home. Antes do cursor, o shell de um usurio comum identificado com ``$'' (cifro). Existem muitas funcionalidades no shell, uma delas retornar comandos que j foram digitados anteriormente. Para fazer isso s pressionar as teclas seta para cima e seta para baixo, caso queira retornar. Outra funcionalidade tambm muito utilizada, serve para visualizarmos a nossa tela de modo que possamos ir para cima ou para baixo, parecido com o scroll. Para rolarmos a tela para cima, seguramos o Shift e pressionamos o Page Up. Para

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 >

2.4. Terminal Virtual


Terminal (ou console) o teclado e a tela conectados em seu computador. O GNU/Linux faz uso de sua caracterstica multi-usurio, ou seja, suporta vrios usurios, usando os ``terminais virtuais''. Um terminal virtual uma segunda seo de trabalho completamente independente de outras e que pode ser acessado no computador local ou remotamente, utilizando os programas telnet, rsh, rlogin, rdesktop, vnc, ssh, etc. Nos dias de hoje, o acesso remoto muito importante. A qualquer distncia que esteja o cliente, possvel atend-lo.

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.6. Histrico de comandos


O terminal do linux permite que voc guarde 500 comandos por padro, assim no precisa redigitar o comando quando precisar dele denovo. $ history

Captulo 2 Primeiros Passos - 27

2.7. Logout
Logout a sada do sistema. Ela feita pelos comandos $ logout $ exit $ <CTRL>+D ou quando o sistema reiniciado ou desligado.

2.8. Desligando o Computador


Para desligar o computador, primeiro digite um dos comandos abaixo:(como root): # shutdown -h now # halt # poweroff

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.

Exemplo: Desligar agora: # shutdown -h now Desligar daqui a 12 minutos: # shutdown -h 12

2.9. Reiniciando o Computador


Reiniciar quer dizer ``Iniciar novamente o sistema''. No recomendvel desligar e ligar constantemente o Computador pelo boto ON/OFF ou RESET. Por isso, existem recursos para reiniciar o sistema sem desligar o computador. No GNU/Linux voc pode usar o comando reboot, shutdown -r now e tambm pressionar simultaneamente as teclas para reiniciar de forma segura.

Observaes: Salve seus trabalhos. Utilize comandos e no o dedo.

Captulo 2 Primeiros Passos - 29 Prefira o mtodo de reinicializao explicado acima e use o boto reset somente em ltimo caso.

Reiniciar agora: # shutdown -r now Reiniciar daqui a 5 minutos: # shutdown -r 5

2.10. Prtica Dirigida


A seguir, vamos testar algumas funcionalidades da linha de comandos (no necessrio se preocupar em decor-los, com o passar do tempo, pegamos um pouco mais de prtica): Pressione a tecla Back Space para apagar um caractere esquerda do cursor;

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

Captulo 2 Primeiros Passos - 31

2.11. Exerccio Terico


1) Voc precisa desligar a mquina, mas algum est usando sua impressora e isso o impede de dar o boot imediatamente. Sabendo que o trabalho da impresso termina no mximo em 5 minutos, qual comando voc usaria para desligar a mquina daqui a 10 minutos? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 2) Voc precisa enviar um aviso para seus 150 usurios logados, mas sem desligar ou reiniciar a mquina. Como voc faria? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 3) correto afirmar que quase todos os programas grficos so provenientes de um comando? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

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? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

Captulo 3 Sistema de Arquivos e Diretrios - 32

Captulo 3 Sistema de Arquivos e Diretrios

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

3.3. Estrutura de Diretrios GNU/Linux


A estrutura de diretrios tambm conhecida como ``rvore de Diretrios'' porque tem a forma de uma rvore. Mas, antes de estudarmos a estrutura de diretrios, temos que ter em mente o que so diretrios. Um diretrio nada mais do que o local onde os arquivos so guardados no sistema. O arquivo pode ser um texto, uma imagem, planilha, etc. Os arquivos devem ser identificados por nomes para que sejam localizados por quem deseja utiliz-los. Um detalhe importante a ser observado que o GNU/Linux case sensitive, isto , ele diferencia letras maisculas e minsculas nos arquivos e diretrios. Sendo assim, um arquivo chamado Arquivo diferente de ARQUIVO e diferente de arquivo.

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

Captulo 3 Sistema de Arquivos e Diretrios - 36

/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;

3.4. Diretrio Recomendado


/proc O /proc um diretrio virtual, mantido pelo kernel, onde encontramos a configurao atual do sistema, dados estatsticos, dispositivos j montados, interrupes, endereos e estados das portas fsicas, dados sobre as redes, etc.

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.

3.5. O diretrio /sys


Pode-se dizer que esse diretrio um primo do diretrio /proc. Dentro do diretrio /sys podemos encontrar o quase o mesmo contedo do proc, mas de uma forma bem mais organizada para ns administradores. Esse diretrio est presente desde a verso 2.6 do kernel e traz novas funcionalidades o que se diz respeito a dispositivos PnP.

3.6. Diretrios Opcionais


Os diretrios /root e /home podem estar disponveis no sistema, mas no precisam obrigatoriamente possuir este nome. Por exemplo, o diretrio /home poderia se chamar /casa, que no causaria nenhum impacto na estrutura do sistema.

/home O /home contm os diretrios pessoais dos usurios cadastrados no sistema.

/root Diretrio pessoal do superusurio root.

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.

3.7. Comandos de Movimentao


Vamos aprender agora alguns movimentao dentro do sistema. comandos essenciais para a nossa O comando pwd exibe o diretrio corrente. Ele muito til quando estamos navegando pelo sistema e no lembramos qual o diretrio atual.

# pwd

O comando cd utilizado para mudar o diretrio atual de onde o usurio est.

Ir para o diretrio home do usurio logado:

# cd # cd ~

Ir para o incio da rvore de diretrios, ou seja, o diretrio / :

# cd /

Ir para um diretrio especfico:

# cd /etc

Captulo 3 Sistema de Arquivos e Diretrios - 40

Sobe um nvel na rvore de diretrios:

# cd ..

Retorna ao diretrio anterior:

# cd # ls

Entra em um diretrio especfico:

# cd /usr/include/X11

Sobe 2 nveis da rvore de diretrios

# 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.

Captulo 3 Sistema de Arquivos e Diretrios - 41

3.8. Prtica Dirigida


Atravs dos comandos: cd e pwd, navegue no sistema afim de explorar alguns diretrios. 1) Verificar o diretrio atual: $ pwd

2) Ir para o incio da rvore de diretrios, ou seja, o diretrio / : $ cd /

3) Ir para o diretrio home do usurio logado: $ cd $ cd ~

4) Ir para o diretrio /usr/share: $ cd /usr/share

5) Subir um nvel na rvore de diretrios: $ cd ..

6) Retornar ao diretrio anterior: $ cd -

Captulo 3 Sistema de Arquivos e Diretrios - 42 7) Entre no diretrio /var: $ cd /var

8) Entre no diretrio /etc e veja o resultado do comando pwd: $ cd /etc $ pwd

9) Utilize o comando cd .., para voltar um nvel na hierarquia: $ cd ..

10) $ pwd

Descubra em qual diretrio voc est atravs do comando pwd:

11) $ cd ~

Utilize o comando cd ~, para voltar para seu diretrio pessoal:

12) $ pwd

Descubra em qual diretrio voc est atravs do comando pwd:

13) $ cd -

Utilize o comando cd -, para voltar ao ultimo diretrio acessado:

14) $ pwd

Descubra em qual diretrio voc est atravs do comando pwd:

Captulo 3 Sistema de Arquivos e Diretrios - 43

3.9. Exerccio Terico


1) Explore os diretrios abaixo, e escreva qual a funo de cada um deles. Justifique: a) bin _____________________________________________________________________________ _____________________________________________________________________________ b) boot _____________________________________________________________________________ _____________________________________________________________________________ c) dev _____________________________________________________________________________ _____________________________________________________________________________ d) etc _____________________________________________________________________________ _____________________________________________________________________________ e) home _____________________________________________________________________________ _____________________________________________________________________________ f) lib _____________________________________________________________________________ _____________________________________________________________________________ g) media _____________________________________________________________________________ _____________________________________________________________________________ h) mnt _____________________________________________________________________________ _____________________________________________________________________________ i) var _____________________________________________________________________________ _____________________________________________________________________________ j) opt _____________________________________________________________________________ _____________________________________________________________________________ k) proc _____________________________________________________________________________ _____________________________________________________________________________ l) root _____________________________________________________________________________

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 . _____________________________________________________________________________ _____________________________________________________________________________

Captulo 3 Sistema de Arquivos e Diretrios - 45

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

Captulo 4 Aprendendo comandos do GNU/Linux - 46

Captulo 4 Aprendendo comandos do GNU/Linux

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.2.1. Explorando o sistema


Veremos agora os comandos bsicos para navegao no sistema. O comando ls utilizado para listar o contedo dos diretrios. Se no for especificado nenhum diretrio, ele ir mostrar o contedo do diretrio onde estamos no momento. Lista o contedo do diretrio atual: # ls

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.

4.3.2. Usando coringas no Shell


Listar todos os arquivos que comeam com qualquer nome e terminam com .txt: # ls *.txt

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.

4.4. Criao, movimentao, cpia e remoo de arquivos e diretrios


Para criar um arquivo, podemos simplesmente abrir um editor de texto e salv-lo. Mas existem outras formas. Uma das formas mais simples usando o comando touch: # touch arquivo

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

Cria o diretrio 4linux e o subdiretrio alunos: # mkdir -p 4linux/alunos

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.

4.5. Prtica Dirigida


1) Listar o contedo do diretrio /: # ls /

2) Listar o contedo do diretrio /root em formato longo: # ls -l /root/

3) Listar somente o diretrio /boot em formato longo: # ls -ld /boot/

Captulo 4 Aprendendo comandos do GNU/Linux - 54 4) Listar todos os arquivos do diretrio /root, inclusive os ocultos: # ls -a /root

5) Listar o contedo do diretrio /boot de forma recursiva: # ls -R /boot/

6) Criar o diretrio estudo dentro do diretrio /tmp: # mkdir /tmp/estudo

7) Criar a seguinte estrutura de diretrios: /backup/2007/fevereiro # mkdir -p /backup/2007/fevereiro

8) Remover o diretrio /tmp/estudo utilizando o comando rmdir: # rmdir /tmp/estudo

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

10) Entre no diretrio estudo.txt para aula.txt: # cd /backup/2007/fevereiro # cp estudo.txt aula.txt

/backup/2007/fevereiro

copie

arquivo

11)

Copie o diretrio /backup/2007/fevereiro para /backup/2007/janeiro:

# 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)

Renomeie o arquivo alunos.txt do diretrio /backup/2007/fevereiro:

# cd /backup/2007/fevereiro # mv alunos.txt teste.txt

14)

Mova o diretrio /backup/2007/fevereiro para /backup/2007/abril:

# mv /backup/2007/fevereiro /backup/2007/abril

15) Utilize o importantes: #stat /backup

comando

stat

para

descobrir

algumas

informaes

4.6. Exerccio Terico


1) Explique com suas palavras o que um inode? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 2) Qual o comando completo a ser executado para criarmos a estrutura de diretrios /stone/blue/gold? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

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? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

Captulo 4 Aprendendo comandos do GNU/Linux - 57

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'';

Captulo 5 Comandos teis de linha de comando - 58

Captulo 5 Comandos teis de linha de comando

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.

5.2. Trabalhando com entrada e sada de dados


Esta parte extremamente importante, pois se trabalha bastante com isso. Por padro, a entrada do Shell o teclado, a sada, a tela, e os erros so exibidos na tela tambm.

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:

# ls / > tst # cat tst # ls /var > tst # cat tst

>> - Redireciona a sada no final de um arquivo, preservando-o;

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;

5.3. Comandos para paginao


Quando os arquivos so maiores do que a altura da tela do computador, eles so mostrados sequencialmente e at seu final. Isso ocorre numa velocidade que impede que se consiga ler algo. Para esse tipo de arquivo grande, usamos os comandos de paginao. Eles controlam a maneira que os dados de um arquivo so exibidos, seja permitindo uma navegao elementar ou permitindo atingir pores especficas de um arquivo.

5.3.1. Mostrando o contedo e/ou concatenando


O comando cat pode ser utilizado para mostrar o contedo de um arquivo. Por exemplo, o comando abaixo mostra o contedo do arquivo teste.dat. # cat teste.dat

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

5.3.2. Controlar o fluxo: more e less


Para que a leitura de um arquivo grande na linha de comando seja possvel, podemos usar um editor de textos como o vi ou emacs. Contudo, para uma leitura rpida na linha de comando podemos usar os comandos more e less. O comando more permite a leitura contnua de um arquivo. Sempre que a tela preenchida, o comando more espera por uma ao do usurio para mostrar mais contedo. Pressionando ENTER uma linha a mais mostrada, pressionando a barra de espaos uma nova pgina mostrada. No possvel retornar (subir) usando o comando more. # more /var/log/syslog

O comando less mais sofisticado e permite ir e voltar na leitura de um arquivo. # less /var/log/syslog

5.3.3. Pores especficas: head e tail


Freqentemente, queremos ter acesso a pores especficas de um arquivo. s vezes queremos apenas as linhas iniciais ou as linhas finais. E s vezes queremos um pedao definido do arquivo. Para essas necessidades, usamos os comandos head para ler pores superiores de um arquivo e tail para ler as pores inferiores. Para ler as 10 primeiras linhas de um arquivo, podemos usar: # head /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 - 63

5.3.5. Classificao: sort


Para diversas aes como eliminao de itens repetidos e rpida visualizao de nomes interessante que possamos classificar um arquivo texto. Na linha de comando, os arquivos textos podem ser classificados usando o comando sort. A sada do comando abaixo no segue a ordem alfabtica: # cat /etc/passwd Podemos mostrar a sada classificada em ordem alfabtica, como abaixo: # sort /etc/passwd O comando sort pode ser modificado usando os parmetros: -f no considera se as letras esto em caixa alta ou baixa; -n classificao numrica; -r classifica na ordem invertida.

5.3.6. Mostrar algo: echo


O comando echo usado para ecoar algo na tela ou direcionado para um arquivo. Isso bastante til para automao. Na linha de comando o echo til para inspecionar variveis de ambiente, que so parmetros guardados em memria e que definem o ambiente em uso. Por exemplo, para saber qual a pasta pessoal definida em $HOME do usurio atual: # echo $HOME

Para saber qual o idioma definido no console: # echo $LANG

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.

5.4.1. Filtrar colunas: cut


O comando cut pode ser muito til para conseguir listagens a partir de arquivos com separadores de colunas definidos. Por exemplo, para conseguir a primeira coluna do arquivo /etc/passwd, cujo delimitador de colunas o sinal :, podemos usar o comando:

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.4.2. Determinando o tipo de arquivo: file


No Linux, extenses de arquivos tm apenas a funo de nos auxiliar a nomear os arquivos, a identific-los e organiz-los facilmente. No a extenso que determina o tipo do arquivo, mas sim o seu contedo. Por exemplo, se renomearmos um arquivo imagem de 4Linux.jpg para 4Linux.html, ele continuar sendo um arquivo de imagem JPEG. O comando file determina o tipo do arquivo analisando o seu prprio contedo. O exemplo abaixo mostra o uso deste comando: # file arquivo

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>

5.5.2. Definindo tamanho dos objetos


$ du -h <arquivo, diretrio ou partio> Aproxima para a unidade de medida mais prxima, mais legvel para o ser humano. $ du -b <arquivo, diretrio ou partio> Mostra em bytes. $ du -k <arquivo, diretrio ou partio> Mostra em kilobytes. $ du -m <arquivo, diretrio ou partio> Mostra em Megabytes. $ du -l <arquivo, diretrio ou partio> Mostra a quantidade de links que arquivo/diretrio/partio tem. $ du -s <arquivo, diretrio ou partio> Modo silencioso, ou seja, no mostra subdiretrios.

5.5.3. Mostrar o uso de memria RAM: free


O comando free mostra o consumo de memria RAM e os detalhes sobre uso de memria virtual (SWAP): # free

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

5.5.4. Mostrar e/ou ajustar a data do sistema: date


O comando date pode ser utilizado para mostrar a data e a hora do sistema, e tambm para ajust-las. H vrias formas de se utilizar esse comando. A primeira delas a mais simples: # date

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

Onde: mm - nmero do ms; dd - dia do ms;

Captulo 5 Comandos teis de linha de comando - 69 HH hora; MM minutos; YYYY ano.;

5.5.5. Mostrar por quanto tempo o computador est ligado: uptime


O comando uptime mostra por quanto tempo o computador est ligado. Alm disso, mostra informaes sobre o uso do processador: # uptime

A sada do comando ser: 03:20:37 up 16:35, 3 users, load average: 0.16, 0.27, 0.33

5.5.6. Mostrar informaes sobre o sistema: uname


O comando uname pode ser usado para mostrar informaes sobre a verso do kernel em uso e a arquitetura:

# 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

5.5.7. Diferena entre arquivos: diff


O programa diff nos permite verificar a diferena entre arquivos e diretrios. No caso de diretrios, importante o uso da opo -r para assegurar a comparao de todos os subdiretrios.

Captulo 5 Comandos teis de linha de comando - 70 # diff arquivo1 arquivo2 # diff -r dir1 dir2

5.5.8. Tempo de execuo de um programa: time


O comando time permite medir o tempo de execuo de um programa. Sua sintaxe : # time programa

5.5.9. Localizao no sistema: find


O comando find procura por arquivos/diretrios no disco. Ele pode procurar arquivos pela sua data de modificao, tamanho, etc, com o uso de opes. Find, ao contrrio de outros programas, usa opes longas por meio de um ``-''. Sintaxe: find [diretrio] [opes/expresso]

-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

Captulo 5 Comandos teis de linha de comando - 71

-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.

Captulo 5 Comandos teis de linha de comando - 72 # find / -perm 644

-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].

# find / -size +1M

-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

# find /dev -type b

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.

5.5.10. Localizao usando base de dados: locate


O comando locate um comando rpido de busca de arquivos, porm no usa busca recursiva na sua rvore de diretrios. Ele cria uma base de dados para que a busca seja mais rpida pelo comando updatedb, que inclusive poder ser agendado para que a base de dados esteja sempre atualizada. Para utiliz-lo, primeiro necessrio criar a sua base de dados usando a seguinte sintaxe: # updatedb

Quando esse comando executado pela primeira vez costuma demorar um pouco. Para o comando locate, usamos a seguinte sintaxe: # locate howto

A sada do comando ser: /root/Documentao/securing-debian-howto.en.pdf /usr/share/doc/diveintopython/html/appendix/fdl_howto.html /usr/share/doc/cacti/html/graph_howto.html

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

5.6. Mais e mais comandos


awk - linguagem de procura de padres e processamento; logger comando de interface entre a shell e o syslog; sed editor de texto linha a linha; seq - imprime uma sequencia de nmeros; sleep - insere uma pausa pelo nmero de segundos especificado; expand - converte tabs em espaos; unexpand - converte espaos em tabs; join - junta a sada de uma arquivo em outro arquivo, jogando na tela; nl - numera as linhas na sada do comando; paste - junta os arquivos na sada padro; split - usado para dividir determinado arquivo em pedaos menores; tr - substitui ou remove os caracteres selecionados da entrada padro para a sada padro; uniq - remove linhas desnecessrias ou duplicadas, ou seja, ele faz uma espcie de listagem de cada linha nica do arquivo; fmt - formatador de texto, muito prtico quando precisa-se fazer uma formatao rpida em algum arquivo; hexdump - converte arquivo para hexadecimal, decimal, ASCII; od - converte arquivo para octal; xargs - poderoso, e muito bom para listagem de arquivos.

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.

5.7. Prtica Dirigida


Inicialmente vamos executar exemplos de funcionamento dos comandos mais utilizados em Shell Scripts. 1) Copie o arquivo passwd do sistema para o diretrio /tmp:

# 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 ;

# echo -ne "Um tab\tseuguido de quebra de linha\n"

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

E tambm, um em baixo do outro: # paste -s 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

Isso ir gerar X arquivos com 50 linhas cada: # wc -l x*

Apague todos os arquivos: # rm -r x*

16)

Outro teste para ns fazermos:

# 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

Que ir gerar X arquivos com 1 Mb cada. Onde: 1048576=1024*1024*1

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

Faa a shell aguardar por dez segundos...

20)

Ordene as linhas do arquivo passwd:

# sort passwd

Captulo 5 Comandos teis de linha de comando - 80 21) Vamos substituir e remover os caracteres do arquivo:

# tr a-z A-Z < /etc/passwd # tr -d 0 < /etc/passwd

22)

Quantas linhas h no arquivo passwd?

# wc -l passwd

23) # who

Verifique os usurios que esto logados no sistema:

24)

Vamos agora listar diretrios utilizando o xargs:

# ls / | xargs -n1 # ls / | xargs -n2 # ls / | xargs -n3

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)

Comando nl, numera as linhas na sada do comando:

# nl /etc/passwd # grep sys /etc/passwd | nl # ls -l /etc | nl

Captulo 5 Comandos teis de linha de comando - 81 # ls -l /etc | tail | nl

5.8. Exerccios Tericos


1) Qual a principal diferena entre os comandos find e locate? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 2) Qual a funo do comando tac? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 3) Qual a funo do comando echo? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 4) Qual a diferena entre o comando du e o comando df? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 5) Qual a utilidade do comando time? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

Captulo 5 Comandos teis de linha de comando - 82

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.

Captulo 6 Conhecendo a Documentao - 83

Captulo 6 Conhecendo a Documentao

6.1. Objetivos
Diferenciar how-to, manual e documentao; Localizar os meios de ajuda internos do sistema; Descobrir aonde podemos buscar documentao na internet;

6.2. Introduo Terica


Hoje em dia, no basta conhecermos bem alguma coisa. Especialmente nas reas de tecnologia, devido a sua constante evoluo, preciso saber aprender para manter-nos atualizados. Neste captulo, vamos aprender a consultar as documentaes existentes e como buscar informaes sobre o que precisamos. O Sistema Operacional GNU/Linux possui uma vasta biblioteca de

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. Formas de Documentao


Existem diversas formas de se documentar um projeto, dentre elas temos How-to's, manuais e documentaes.

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.

6.4. Comandos de ajuda


Existem diversos comandos de ajuda no GNU/Linux, vamos abordar cada um deles logo abaixo:

6.4.1. Comando help


O comando help prov ajuda para comandos internos do interpretador de comandos, ou seja o comando help fornece ajuda rpida; til para saber que opes podem ser usadas com os comandos internos do interpretador de comandos (shell). Para visualizar uma ajuda rpida para todos os comandos internos do sistema, podemos fazer da seguinte forma: # help

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

6.4.2. Comando man


O comando man o responsvel por trazer os manuais mais completos sobre determinado comando, arquivo de configurao, bibliotecas, entre outros nos quais estamos trabalhando. Os manuais do sistema so divididos em nveis que so os seguintes: man 1 - Programas executveis e comandos do Shell; man 2 - Chamadas de sistema (funes providas pelo Kernel); man 3 - Chamadas de bibliotecas (funes como bibliotecas do sistema); man 4 - Arquivos de dispositivo (Localizados normalmente no /dev);

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.

comum o exame cobrar mais pelos nveis 1, 5 e 8 dos manuais!

Sintaxe do comando man: # man [comando] ou # man [seo] [comando]

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:

Captulo 6 Conhecendo a Documentao - 89

# 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.

6.4.3. Comando apropos


O comando apropos utilizado quando no se sabe qual documentao acessar para um determinado assunto, mostrando as man pages que contm a palavra-chave que foi especificada. A sintaxe utilizada para usar o apropos a seguinte: # apropos [palavra-chave]

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

Na Red Hat, o comando catman foi substitudo pelo makewhatis.

Captulo 6 Conhecendo a Documentao - 91 Os comandos apropos e whatis dividem a mesma base de dados, importante perceber isso.

6.4.4. Comando whatis


O comando whatis tem basicamente a mesma funo do comando apropos, s que as buscas do comando whatis so mais especficas. O apropos busca as pginas de manuais e descries de maneira mais genrica; se digitarmos a palavra passwd ele nos trar tudo que tiver passwd, seja como nome ou parte do nome do manual ou na descrio. E o whatis nos trar somente o manual com nome exato da palavra pesquisada. A sintaxe utilizada no comando whatis a seguinte: # whatis [comando]

Uma forma equivalente ao whatis o comando man juntamente com a opo -f:

# man -f [palavra-chave]

6.4.5. Comando info


As info pages so como as pginas de manuais, porm so utilizadas com navegao entre as pginas. Elas so acessadas pelo comando info. O comando info til quando j sabemos o nome do comando e s queremos saber qual sua respectiva funo. A navegao das info pages feita atravs de nomes marcados com um ``*'' (hipertextos) que, se pressionarmos Enter, nos levar at a seo correspondente, e backspace volta pgina anterior. Podemos tambm navegar pelas pginas com as teclas n (next/prximo); p (previous/anterior); u (up/sobe um nvel).

Captulo 6 Conhecendo a Documentao - 92 Para sair do comando info, basta teclar q.

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]

6.5. Alternativas para consulta


Para obtermos um melhor forma de visualizao, duas ferramentas de documentao foram desenvolvidas: yelp - Ferramenta grfica para visualizao de manuais de aplicativos grficos do GNOME; xman - Front-end para man, assim facilitando a consulta das manpages;

Ilustrao 3: xman

Captulo 6 Conhecendo a Documentao - 93

Ilustrao 4: Menu do xman

6.6. Comando whereis


O comando whereis utilizado para mostrar a localizao do binrio do comando, do arquivo de configurao (caso exista) e a localizao das pginas de manuais do determinado comando ou arquivo.

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]

6.7. Comando which


O comando which bem semelhante ao comando whereis, s que o comando which s mostra a localizao do binrio do comando. Para visualizar a localizao do binrio do comando, utilizamos a seguinte sintaxe: # which [comando]

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

6.8. Prtica Dirigida


Visualize uma ajuda rpida para o comando interno cd: # help cd

Captulo 6 Conhecendo a Documentao - 95 Abra o manual do comando man: # man man

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

Como visualizamos as pginas de informao de todos os comandos? # info

Busque os manuais que possuem a palavra user em suas descries: # apropos user

Busque os manuais que tenham somente o nome passwd: # whatis passwd

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

Visualize alguns arquivos de howto do firewall: # cd /usr/share/doc/iptables/html/ # w3m NAT-HOWTO.html

6.9. Exerccios Tericos


1) Quantos so os nveis de manuais existentes? Como eu vejo uma descrio de cada um deles? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 2) Qual o site oficial de documentao do sistema GNU/Linux? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 3) Como devemos proceder caso no saibamos o nome do comando especfico que desejamos consultar o manual? Por exemplo, qual comando em modo texto utilizaramos para enviar um e-mail? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 4) Em qual nvel de manual se encaixa o comando ifconfig? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

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.

Captulo 7 Editores de texto - 98

Captulo 7 Editores de texto

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.

7.3. Editor Nano


O nano o editor padro de textos do Debian, e distribuies baseadas nele. Esse editor muito fcil de ser usado, e sua interface muito intuitiva e agradvel. Para abrirmos o editor devemos chamar o seguinte comando: $ nano

Captulo 7 Editores de texto - 100

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

Captulo 7 Editores de texto - 101 EDITOR=nano visudo EDITOR=vim visudo

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

7.4. Editor Vim


O Vi o editor bsico do GNU/Linux, est disponvel em grande parte das distribuies do GNU/Linux , mesmo naquelas que vm em apenas um disquete. Hoje em dia, as distribuies usam uma verso mais completa e com mais recursos do que o Vi que o Vim (VI iMproved). Abaixo podemos ver uma tela do editor de textos vim:

Captulo 7 Editores de texto - 102

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

Captulo 7 Editores de texto - 103 cp /etc/vim/vimrc ~/.vimrc

7.5. Prtica Dirigida


1) Faa uma cpia de segurana do arquivo /etc/passwd para seu diretrio home: cp /etc/passwd ~

2) Vamos testar alguns comandos bsicos do vim: vim passwd

7.5.1. Teste os comandos de Edio


3) Comandos bsicos de insero de texto: i - Insere texto antes do cursor a - Insere texto depois do cursor r - Substitui texto no incio da linha onde se encontra o cursor A - Insere texto no final da linha onde se encontra o cursor o - Adiciona linha abaixo da linha atual O - Adiciona linha acima da linha atual Ctrl + h - Apaga o ltimo caractere

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 - 106

7.6. Exerccio Terico


1) Como removo as linhas 40 a 60? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 2) Como vou para o incio do arquivo? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 3) Como apago as 8000 primeiras linhas ? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 4) Como vou para a linha 25 do arquivo? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 5) Qual a sequencia de teclas que apaga a linha atual e mais 3 linhas abaixo do cursor? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 6) Como fao uma cpia do meu arquivo para a seguinte path: /tmp/backup? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 7) Como eu copio 5 linhas, e depois colo? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

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.

Captulo 8 Introduo a Redes - 109

Captulo 8 Introduo a Redes

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.

Captulo 8 Introduo a Redes - 110

8.2. Os Protocolos TCP/IP


Os protocolos TCP/IP antigamente eram usados como um padro militar para troca de informaes. Atualmente esses protocolos so os padres mundiais para comunicao de redes. O protocolo TCP(Transmission Control Protocol), orientado a conexes, transporta informaes por meio de handshaking, ou por meio de retransmisso caso algum erro acontea. Esse protocolo garante o envio das mensagens. Podemos citar alguns servios de rede que utilizam o protocolo TCP: SMTP, FTP e Telnet J o protocolo IP(Internet Protocol) descrito pela RFC 791, responsvel por estabelecer o esquema de endereamento e pela definio de datagramas. Apesar da nova vero da LPI ter diminuido os tpicos de TCP/IP, ele ainda est presente na prova, e por isso olhar um pouco o modelo OSI uma boa idia. Acompanhe um pouco mais desse assunto no treinamento 451 da Formao 4Linux.

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.

Ilustrao 8: Entendendo as Mascaras

Sabendo como funciona a mscara de rede necessrio saber que existem trs classes padres de Redes

Ilustrao 9: Conhecendo as classes

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.

Ilustrao 10: Ip's pblicos e privados

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.

Captulo 8 Introduo a Redes - 114

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.

Ilustrao 12: Depois de um NAT

Captulo 8 Introduo a Redes - 115

8.4. Entendendo o gateway da rede


O gateway da rede um host que conhece outros host que por sua vez conhecem outros. Complicado? O principal papel do gateway levar os pacotes tcp/ip para outras redes quais os hosts que os originaram no conhecem. dessa forma que os pacotes saem de uma rede privada para um rede Wan. Para que os pacotes possam transitar pela internet ou mesmo s por uma rede fechada necessrio um gateway. No caso de vocs estar em sua prpria rede local, o seu gateway voc mesmo, pois todos os hosts esto normalmente com a mesma configurao de IP, ou seja, mesma mascara, mesma classe de IP, e etc.

8.5. O servidor DNS


Nesse ponto muito importante frisar que o servidor de DS no faz parte da configurao essencial de rede, pois para estarmos na internet, basta termos um gateway que a conhea configurado. Lembre-se a internet feita de nmeros: Usurio - Suporte? Suporte - Sim, em que posso ajudar? Usurio - A internet est fora do ar ... (O cara no consegue acessar o host orkut.com =( ) Para resolver esse probleminha basta digitar o comando: ping 4.2.2.2 Se a resposta for positiva, voc no tem um problema de link, cheque seu DNS. Suporte - Sr. Usurio, percebi que voc est acessando um site proibido pela empresa, h algo errado?

Captulo 8 Introduo a Redes - 116 Usurio - Eu?? .. No, no, tudo bem, a internet j est normalizada.

8.6. Arp e RARP


Vamos nos aprofundar um pouco mais nas teorias de redes e vamos dar uma olhadinha nos protocolos ARP e RARP. O protocolo ARP utilizado para converter os endereos de rede (IP's), para os endereos fsicos das interfaces (MAC). Um exemplo clssico de usabilidade no Brasil : Placas com o mesmo mac address na rede. Podemos conhecer todas as mquinas da rede e depois utilizar o arp para descobrir qual dos ips tem o mesmo Mac address igual. J o Rarp faz exatamente o oposto, trasforma Endereos fsico em endereos de Rede.

8.7. Configurando a Rede


A configurao de rede em um sistema GNU/Linux muito importante pois esses sistemas so, intrinsecamente, sistemas de rede. Ou seja, mesmo que no haja nenhum tipo de interface de rede ou modem ou qualquer outra coisa do gnero, ainda assim uma mquina GNU/Linux ser um sistema de rede. A configurao da rede se base-a em trs etapas: Configurao do numero IP e mscara Configurao do Gateway Configurao dos DNS Servers

8.7.1. Configurando IP e Mscara


Alm da interface lo podemos configurar outras interfaces, basta que elas estejam presentes e sejam suportadas pelo kernel. Na maior parte dos casos, a interface mais comum acaba sendo a interface eth0 de ethernet. Para configurar a nossas interfaces de redes utilizamos o comando ifconfig.

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>

Exemplo: # ifconfig eth0 192.168.32.54

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

Captulo 8 Introduo a Redes - 118

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.

8.7.2. Configurando o gateway


Para que nossos pacotes saibam para onde ir eles precisam conhecer o IP do Gateway da rede. O papel do gateway da rede simples, ele funciona como uma sada para todos os pacotes daquela rede, para outras redes. Para configurar o gateway da nossa rede utilizamos o comando route com os seguinte parmetros: # route add default gw IP

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.

Captulo 8 Introduo a Redes - 119

8.7.3. Configurao dos DNS Servers


Para no termos que decorar todos os nmeros Ip's que precisamos acessar foi criado um servio de rede chamado DNS. O DNS faz a traduo de nomes para nmeros IPs e vice-versa. Esse servio de rede ser melhor detalhado no curso 452 da Formao 4Linux. Para configurar os servidores de DNS para mquina local, precisamos editar o arquivo de configuraes de DNS, chamado resolv.conf localizado em /etc. # vim /etc/resolv.conf

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 .

8.7.4. Configurao esttica de rede


Tudo que vimos at agora, so configuraes que podem ser atribudas atravs de linha de comando (configuraes dinmicas). Porm nosso host deve estar devidamente configurado para que, por exemplo, aps um boot, a mquina esteja com as configuraes certas. Para que isso acontea temos que configurar o arquivo

/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.

8.8. Arquivo Hosts


Podemos tambm configurar alguns atalhos para alguns endereos de rede. Esses atalhos ficam localizados dentro do arquivos /etc/hosts. A sintaxe dele : IP apelido apelido

Exemplo :

192.168.200.254

instrutor professor

Isso facilita nosso trabalho, uma vez que todos esto devidamente apelidados, no precisamos mais decorar nmeros IP.

Captulo 8 Introduo a Redes - 121

8.9. Comando hostname


O comando hostname altera dinamicamente o nome da mquina e deve ser utilizado da seguinte maneira: # hostname NOVONOME

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!!!

Um exemplo de configurao de fqdn seria colocar a linha abaixo no arquivo /etc/host .

IP FQDN HOSTNAME 200.12.44.211 zeus.criptahacks.ntr.au zeus

8.10. O arquivo nsswitch.conf


Presente em /etc o arquivo nsswitch.conf, nos permite configurar qual ser a ordem de busca por logins vlidos na estao, ou seja, se a mquina em questo precisar buscar o login em um servidor ldap, nis ou outro meio de autenticao, nesse arquio que devemos especificar essa configurao. passwd:compat group: compat shadow:compat

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.

8.11. Prtica Dirigida


1) Verifique as configuraes de rede que esto ativas: # ifconfig

2) Verifique que rotas esto sendo utilizadas: # route -n

3) Determine quais as interfaces de rede esto disponveis: # ifconfig -a

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:

# ifconfig eth0 down # ifconfig # ifconfig eth0 up # ifconfig

11) Vamos configurar nossas interfaces de rede editando o arquivo /etc/network/interfaces: # vim /etc/network/interfaces

12)

Altere o contedo dele para satisfazer as configuraes da sua rede:

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)

Pare o servio de rede e reinicie-o na seqncia:

# invoke-rc.d networking stop # invoke-rc.d networking start # ifconfig

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:

# vim /etc/resolv.conf nameserver 200.204.0.10 nameserver 200.204.0.138

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)

Adicione as linhas apropriadas a esse arquivo:

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)

Realize testes para ver que esses nomes esto funcionando:

# ping instrutor # ping localhost

21)

Adicione a seguinte linha ao nosso resolvedor de nomes:

192.168.200.254 www.4linux.com.br 4linux

Captulo 8 Introduo a Redes - 126 22) Pingue o servidor da 4linux:

# ping www.4linux.com.br

23) # hostname

Configure dinamicamente o hostname (nome da mquina):

24) Altere o nome da mquina de microX para maqX, de forma que a alterao fique permanente: # vim /etc/hostname

Na Red Hat, o hostname fica definido no arquivo /etc/sysconfig/network.

25)

Verifique qual o domnio ao qual a sua mquina pertence:

# hostname -d

26) Verifique qual o FQDN (Fully Qualified Domain Name) da sua mquina # hostname -f

27)

Para que o novo nome seja estabelecido, reinicie a mquina:

# shutdown -r now

Captulo 8 Introduo a Redes - 127

8.12. Exerccio Terico


1) Qual o papel da mscara na configurao da rede? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 2) Qual o comando que preciso executar para recarregar minhas configuraes de rede? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 3) Alem do nmero IP 127.0.0.1, qual o outro nmero Ip que pode responder por Localhost? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 4) Qual o papel do Gateway na rede? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 5) Aonde podemos configurar o nosso servidor de DNS? Se o mesmo no estiver corretamente configurado o que vai acontecer? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

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;

Captulo 9 Manipulando Hardware e Dispositivos - 128

Captulo 9 Manipulando Hardware e Dispositivos

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;

9.2. Dispositivos em Linux


O ncleo do sistema operacional GNU/Linux, o ``kernel'', se comunica com os dispositivos de uma maneira muito interessante: praticamente todos os dispositivos em GNU/Linux so representados por um arquivo correspondente dentro do sistema de arquivos. Excees a esta regra so as placas de rede.

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.

9.2.1. Explorando o /dev


Uma diferena marcante entre sistemas Windows e Unix-like a forma de lidar com parties e dispositivos como unidade de disquete e CD-ROM. Em sistemas Windows desde uma partio no disco rgido a um pen drive o acesso a eles so efetuados utilizando a idia de "unidades" ou drives, como o drive C: ou A: ou at mesmo uma unidade de rede. Esse tipo de conceito faz com que o usurio final no precise saber o que est por detrs desses equipamentos, simplificando sua utilizao ao preo da perda do conhecimento. Em sistemas como GNU/Linux existe o conceito de dispositivos; praticamente tudo na mquina tratado como sendo um dispositivo e pode ser acessado pelo seu respectivo arquivo localizado no diretrio /dev. Uma exceo a isso a interface de rede que tratada diretamente no nvel do kernel, no existindo um dispositivo (no /dev) associado a ela. O diretrio /dev consiste de um filesystem especial e pode ser de dois tipos: devfs ou udev. O devfs o mais antigo tendo sido substitudo pelo udev a partir do kernel 2.6.12. Uma das diferenas entre os dois que no devfs os arquivos de dispositivos so criados uma nica vez, dessa forma, o diretrio /dev contm os dispositivos para todos os hardwares suportados pelo Linux, no importando se eles esto disponveis na mquina ou no. Com o udev os dispositivos so criados de acordo com a disponibilidade no sistema. Dessa forma, o diretrio contm apenas os arquivos de dispositivo para os hardwares presentes na mquina.

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

Para mice PS/2: #cat /dev/psaux

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.

Captulo 9 Manipulando Hardware e Dispositivos - 132

9.3. Dispositivos de armazenamento

Ilustrao 13: Placa me

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.

Captulo 9 Manipulando Hardware e Dispositivos - 134

Ilustrao 14: Estrutura das Parties

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.

9.4. Devices, UUID e Labels


Quando usamos dispositivos seguindo padres como /dev/hda3 ou /dev/sda5, estamos especificando um dispositivo que pode vir a receber outro nome se houver alguma modificao no disco, isso implica no sistema no mais encontrar a partio especificada pois seu nome foi modificado. Uma alternativa inteligente para isso utilizar o mtodo UUID - Universally Unique Identifier ou utilizar o mtodo de Lables. Para descobrirmos o UUID de nossa parties podemos utilizar dois aplicativos: vol_id e blkid # vol_id -u /dev/sda2 f541a97e-ef19-4e47-b305-b535a75c932a

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.

Captulo 9 Manipulando Hardware e Dispositivos - 137

9.4.1. Usando os dispositivos de armazenamento


Para termos acesso a um arquivo armazenado em mdia removvel, necessrio conectar a mdia removvel ao seu leitor correspondente e montar o dispositivo adequado. O comando usado para montar dispositivos o mount. Sem o uso de nenhum parmetro, ele mostra os dispositivos de armazenamento que esto montados em seu computador junto com a configurao usada para mont-los. # mount

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:

Captulo 9 Manipulando Hardware e Dispositivos - 138 # dmesg |grep ATAPI

As informaes providas pelo comando dmesg so providas pelo arquivo /var/log/messages

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

ou de forma equivalente: # umount /dev/cdrom

Captulo 9 Manipulando Hardware e Dispositivos - 139

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

9.5. Criando Parties no HD


Agora que j sabemos como montar um dispositivo precisamos saber como criar uma partio manualmente. Para isso, h duas ferramentas importantes disponveis em sistemas GNU/Linux, so elas fdisk e cfdisk. Conhecer esses particionadores muito importante, anote mais uma ai: Gparted

9.5.1. Particionamento com FDISK


O particionador fdisk o mais completo dos particionadores e que em geral resolve nossos problemas quando eles ocorrem. Fazendo a chamada a esse programa podemos ver a seguinte tela inicial: # fdisk /dev/hda The number of cylinders for this disk is set to 14593. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help):

Pressionando a tecla m para obtermos um help, veremos a seguinte sada:

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)

Command (m for help):

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.

9.5.2. Particionamento com CFDISK


A ferramenta cfdisk no to completa quanto o fdisk mas um pouco mais "user friendly". Para acess-la basta executar o comando: # cfdisk /dev/hda Uma vez executado esse comando, a tela do cfdisk se abrir como mostrado na figura:

Captulo 9 Manipulando Hardware e Dispositivos - 141

Ilustrao 15: cfdisk

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.

Captulo 9 Manipulando Hardware e Dispositivos - 142

9.6. Aplicando um Filesystem


Para que possamos gravar informaes de forma estruturada na partio que acabamos de criar precisamos aplicar um filesystem a ela. Sim, aplicar um filesystem, NO format-la!!! Formatar o processo de preparar a mdia magntica, como discos rgidos e disquetes, para receber informao. Esse tipo de preparo de baixo nvel e consiste em ``desenhar'' as trilhas e setores na mdia em questo. Aplicar o filesystem significa criar uma estrutura lgica acima dessas trilhas e setores que permita organizar seus arquivos em uma estrutura de diretrios e subdiretrios. Vamos conhecer alguns tipos de FileSystem ext2 - Um dos primeiros filesystens do linux; ext3 - Evoluo do ext2, mas com a tcnica de Journal reiserfs - timo sistema de arquivos para arquivos menores que 4MB xfs - Usado geralmente em banco de dados, tem suas vantagens com objetos muito grandes.

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>

Leitura sugerida: man mkfs

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.

9.7. Arquivos de Informaes de Filesystems


Na seo sec:mount voc aprendeu a montar um dispositivo de forma completa e manual, entretanto, h um arquivo que facilita a nossa vida, o /etc/fstab. Nele devem estar as informaes a respeito da montagem de todos os filesystems do sistema, veja um exemplo a seguir:

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

ext3 defaults,errors=remount-ro 0 2 swap

/dev/hda5 /usrext3defaults

ext3 defaults ext3 defaults ext3 defaults

UUID=be35a709-c787-4198-a903-d5fdc80ab2f8 /media/chas ext3 relatime,errors=remount-ro 0 1

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 - 145 parmetros.

9.8. Configuraes de Teclado e Mouse no Console


Imagine que voc instalou uma mquina na sua casa e o seu teclado um teclado padro brasileiro -- ABNT2 -- e voc chegou ao cliente e ele s possui teclados com layout americano; como resolver o problema? possvel utilizar o comando loadkeys para alterar o layout de teclado durante a sesso mas, essa alterao ser temporria. Para trocar definitivamente o padro de layout de teclado da mquina, o arquivo em /etc/console/boottime.kmap.gz deve ser alterado utilizando o comando kbd-config. Alm da configurao apropriada de layout de teclado, pode ser interessante configurar o mouse em modo texto a fim de facilitar o trabalho. O programa chamado gpm o que d o suporte ao mouse em terminais texto.

9.9. Prtica Dirigida 1


1) Altere o layout de teclado para utilizar o padro americano: # loadkeys -d us Tente utilizar a tecla ``'' 2) Volte o layout de teclado para o padro br-abnt2: # loadkeys -d br-abnt2

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

9.10. Para aprofundar o assunto


Parmetros de montagem: # info mount

O arquivo /etc/fstab: # info fstab

9.11. Prtica Dirigida 2


1) Determine qual o dispositivo associado ao "hd", tanto o CD-ROM, quanto o Disco Rgido: # dmesg |grep hd

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

5) Desmonte o CD: # umount /media/cdrom Deu erro?? Por qu??

6) Saia do diretrio /media/cdrom: # cd

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)

Ative essa nova partio de swap:

# 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)

Instalados os softwares podemos aplicar o ext3 nova partio:

# mkfs -t ext3 <dispositivo>

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)

Teste a montagem do novo filesystem:

# mount -t ext3 <dispositivo> /backup

17) # mount # df -h

Verifique se a partio foi montada e se o swap est em uso:

# cat /etc/mtab # cat /proc/mounts # cat /proc/swaps

17)

Crie um arquivo dentro do /backup:

# touch /backup/README # echo "Partio de Backup" >> /backup/README

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:

Captulo 9 Manipulando Hardware e Dispositivos - 150

9.12. Exerccios Tericos


1) Qual o nome do arquivo de dispositivo que a oitava partio do HD conectado como slave na segunda controladora IDE? Fornea o caminho completo para ele. _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

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. _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

Captulo 9 Manipulando Hardware e Dispositivos - 151

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.

Captulo 10 Administrao de Usurios - 152

Captulo 10 Administrao de Usurios

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 - 153

10.2. Gerenciamento de usurios


Quando comeamos a trabalhar com usurios no sistema GNU/Linux podemos dividi-los em 3 categorias: Usurio Administrador (Super Usurio): usurio conhecido como root no sistema. esse usurio que controla todo o sistema e no possui nenhuma restrio. Mas devemos ter uma certa cautela ao us-lo pois com qualquer deslize podemos danificar todo o sistema. Usurios de Sistema: so aqueles que no precisam logar no sistema, so utilizados para controlar servios. Esse usurios no devem possuir senhas nem Shell's vlidas. Um exemplo desses usurios o usurio www-data que usado exclusivamente para controlar o servidor web Apache. Usurios comuns: so utilizados para trabalhar no sistema GNU/Linux. So contas criadas para aqueles que utilizam ou operam o sistema. sempre aconselhvel que cada usurio comum ou administrador tenha sua prpria conta e s utilize a conta root para administrao do sistema. Tanto para o usurio root quanto para o usurio comum, sempre aconselhvel criar uma boa poltica de criao de senhas para que um possvel invasor no se aproveite de um usurio com uma senha fraca, mesmo que seja um usurio comum, pois isso seria o primeiro passo para o invasor escalar privilgios no sistema e virar o usurio administrador root. Evite usar senhas com datas de aniversrio, casamento e outras datas que so fceis de serem descobertas e evite usar palavras do dicionrio. Uma boa dica mesclar a senhas com letras maisculas e minsculas, caixa alta e caixa baixa e caracteres especiais. Alguns sistemas GNU/Linux podem ter usurios que chamamos de administradores. Esses usurios no vm configurados por padro, eles so usurios normais mas que possuem alguns privilgios a mais em algumas aplicaes.

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,

Captulo 10 Administrao de Usurios - 156 w escrita e x execuo, como era de se esperar.

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

Permisses ----x -w-wx r-r-x rwrwx

Vejamos um exemplo: # chmod 640 arquivo

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.

10.3.1. Exemplos de permisses


Comando para atribuir permisso total a um arquivo chamado chmod chmod 777 dontdothis.never

ou chmod a+rwx dontdothis.never ou chmod u+rwx,g+rwx,o+rwx dontdothis.never

No fazer isso em, nenhum tipo de arquivo, isso apenas um exemplo!!!

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

Captulo 10 Administrao de Usurios - 158

10.4. Registro de usurios no sistema


H quatro arquivos bsicos que dizem respeito administrao de usurios, sendo eles:

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

10.4.1. Arquivo /etc/passwd


Cada usurio cadastrado no sistema identificado por uma linha do arquivo /etc/passwd. Os campos so separados pelo caractere ``:'' (dois pontos). O formato do arquivo /etc/passwd o seguinte: usurio:x:1000:1000:Usurio da Silva,8111-1234:/home/usurio:/bin/bash Onde: Campo 1 - Login do usurio; Campo 2 - Referncia da senha do usurio, pois ela fica armazenada em outro arquivo. Campo 3 - UID: O UID (User Identify) o nmero de identificao do usurio. Essa identificao dividida conforme a categoria dos usurios:

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;

Usar o comando getent para visualizar esses arquivos muito importante.e

10.4.2. Arquivo /etc/shadow


As senhas dos usurios ficam armazenadas no arquivo /etc/shadow conhecido como senhas sombras (shadow passwords). As senhas ficam nele pois um arquivo mais seguro que o arquivo /etc/passwd. No arquivo /etc/passwd qualquer usurio pode visualiz-las e copi-las para outro diretrio ou mquina remota. No caso de /etc/shadow, suas permisses so muito mais restritas no permitindo que sejam copiadas e nem visualizadas. Isso uma grande ajuda na questo de segurana pois se as senhas estivessem no prprio /etc/passwd seria muito fcil para um invasor com usurio comum copiar esse arquivo para outro servidor e aplicar uma ferramenta de brute force para quebrar as senhas. O suporte a senhas shadow costuma vir por padro nas distribuies. Em algumas delas, se forem instaladas no modo expert, pode-se optar por ativar ou no

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.

10.5. Levantamento de informaes dos usurios


10.5.1. Chage
O comando chage configura algumas informaes como: data de validade do password, data de aviso de troca de senha dentre outras.

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.5.3. Comando finger


O comando finger mais amigvel e nos traz maiores informaes como: Login, Nome, Diretrio home, Shell e os horrios dos ltimos logins que esse usurio realizou. A sintaxe do comando finger a seguinte: # finger [usurio]

Captulo 10 Administrao de Usurios - 162

10.5.4. Comando users


O comando users mostra de maneira bem simples os usurios que esto logados no sistema. A sintaxe do comando users a seguinte: # users

10.5.5. Comando who


O comando who mostra quais usurios esto logados na mquina. Traz informaes adicionais sobre qual terminal est sendo utilizado, o momento e a partir de qual mquina foi feito o login de cada usurio. # who

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

Para visualizar se somente um usurio est logado a sintaxe a seguinte: # w [usurio]

Captulo 10 Administrao de Usurios - 163

10.7. Criando Usurios


10.7.1. Comando adduser
O comando adduser script customizado que trabalha com o comando useradd. O adduser bastante utilizado por administradores que precisam cadastrar usurios no formato tradicional, ou seja, com nome, senha e grupo definido. No caso do Red Hat, o comando adduser possui uma sintaxe mais complexa, equivalente ao useradd do Debian.

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.

Captulo 10 Administrao de Usurios - 164

10.8. Adicionar um usurio a outro grupo


Um usurio sempre deve pertencer a um grupo primrio, mas pode ser adicionado a grupos secundrios, normalmente usado dentro de uma estrutura empresarial onde os usurios precisam pertencem a vrios grupos para terem acessos a arquivos de outros setores.

10.8.1. Comando gpasswd


O comando gpasswd pode ser utilizado para definir a senha de um grupo, e com alguns parmetros pode adicionar ou remover um usurio de um grupo secundrio. Utilizando a opo -a podemos adicionar um usurio a um grupo secundrio e a opo -d para remover um usurio de um grupo secundrio.

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]

10.9. Modificando usurios


A modificao de usurios limitada ao usurio root. Iremos aprender aqui como mudamos alguns parmetros que so necessrios no dia-a-dia, como troca de senhas, grupos e controle de login.

Captulo 10 Administrao de Usurios - 165

10.9.1. Comando passwd


Depois do usurio criado podemos usar alguns comandos para modificar a conta dele. O primeiro ser o passwd. O passwd possibilita adicionar ou modificar a senha de um usurio. As sintaxes que podem ser utilizadas nesse comando so as seguintes: Para modificar a senha do usurio corrente: # passwd

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]

10.9.2. Comando usermod


Outro comando que pode ser utilizado para modificar parmetros do usurio o usermod. Ele possibilita modificar qualquer tipo de informao relativa ao usurio. Um dos parmetros que pode ser modificado o grupo primrio, usando-se a opo -g. Com a opo -G, podemos alterar os grupos secundrios. A sintaxe para modificar o grupo primrio de um usurio a seguinte: # usermod -g [grupo] [usurio] As alteraes podem ser visualizadas no arquivo /etc/passwd no campo GID. Para mudarmos o campo de descries dentro do arquivo passwd, precisamo usar o comando usermod com a flag c.

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.

10.10. Alterao do Dono e Grupo


Como j vimos, cada arquivo e diretrio possui um dono e um grupo. Para podermos alter-los podemos utilizar os comandos chwon e chgrp como nos exemplos a seguir. # chown euvaldo planta

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'.

10.11. Removendo usurios


A remoo de usurios pode ser feita de duas formas. A primeira mantendo o diretrio home do usurio e a segunda, apagando o diretrio home. aconselhvel

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.

Captulo 10 Administrao de Usurios - 168

10.13. Permisses Especiais


H um conjunto especial de permisses, conhecido tambm como bits especiais, sendo eles:

Nome SUID SGID Sticky Bit

Significado Set User Id Bit Set Group ID Bit Sticky Bit

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

Todas as permisses especias que no contiverem execuo so maisculas. SeSeT

10.14. Prtica Dirigida


1) Crie um diretrio chamado temp e dentro dele um arquivo chamado arq1: $ mkdir temp $ touch temp/arq1

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

6) Vamos acessar o diretrio e ver se o arquivo foi realmente criado. $ cd temp $ ls -l

7)

Temos que garantir a permisso de leitura tambm. Agora dever funcionar!

# cd .. # chmod 700 temp # ls -l

8) Adicione um novo usurio no sistema: # adduser aluno

9) Visualize o novo usurio no arquivo /etc/passwd: # cat /etc/passwd

10) Logue com o novo usurio em outro terminal e veja quais usurios esto logados no sistema:

Captulo 10 Administrao de Usurios - 172 $ users

11) ele:

Logado com o novo usurio, visualize informaes completas sobre

$ finger aluno

12)

Adicione o usurio em um grupo secundrio e visualize isso:

# gpasswd -a aluno audio # id

13)

Remove o usurio do grupo secundrio e visualize:

# gpasswd -d aluno audio # id

14)

Logado com root, modifique a senha do usurio:

# passwd aluno

15) $ passwd

Agora logado como usurio normal, modifique sua prpria senha:

16)

Modifique o grupo primrio do usurio:

# usermod -g users aluno

17) # w

Visualize qual usurio est logado no momento:

Captulo 10 Administrao de Usurios - 173 18) Remova o usurio junto com o seu diretrio:

# userdel -r aluno

19)

Vamos agora testar a permisso especial SUID:

$ /sbin/ifconfig eth0:1 192.168.242.21 No funcionou???

20)

Vamos agora aplicar o SUID.

# chmod 4755 /sbin/ifconfig $ /sbin/ifconfig eth0:1 192.168.242.21

Este apenas um exemplo para fins de demonstrao do SUID bit, favor no aplicar em servidores!

10.15. Exerccios Tericos


1) Qual a importncia de se utilizar senhas sombra (shadow passwords)? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 2) Por que importante um usurio estar vinculado a um grupo primrio? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 3) Quais so as divises de tipos de usurios no sistema GNU/Linux? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 4) Por que no aconselhvel remover um usurio e manter o seu diretrio home?

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. _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

7) Considere um arquivo com as seguintes permisses e os seguintes comandos:

-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.

Captulo 11 Administrao da Shell - 176

Captulo 11 Administrao da Shell

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.

11.2. O que uma shell?


A shell uma camada de acesso ao sistema bsico, o sistema operacional do computador, que pode ser acessada tanto pelo modo grfico, quanto em modo texto. A shell pode ser praticamente 100% personalizada. As principais modificaes so

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.

Ilustrao 16: Estrutura da shell

11.3. Variveis em Shell


As variveis da shell tm o mesmo objetivo das variveis que conhecemos na rea da computao, ou seja, so reas de memria que podem conter dados. Quando estamos falando de variveis em shell no precisamos nos preocupar em declar-las nem mesmo definir o seu tipo. Em shell, uma varivel definida simplesmente atribuindo-se um valor a ela. Vejamos um exemplo: Se definirmos que ANSWER=42, estaremos armazenando o valor 42 em um determinado endereo de memria que podemos acessar utilizando o nome que atribumos a ele, ou seja ANSWER. # ANSWER=42

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.

11.3.1. Variveis Locais e de Ambiente (globais)


Quando falamos em variveis em shell temos que ter em mente a diviso entre variveis locais de ambiente (ou globais). A diferena entre elas que uma varivel local tem visibilidade restrita apenas ao escopo ao qual ela foi definida e uma varivel de ambiente tem visibilidade no s no escopo em que foi definida mas tambm em ambientes derivados do ambiente ao qual ela foi definida. A nica diferena entre variveis locais e de ambiente na hora de defini-las. Para definir uma varivel local, basta atribuir um valor a um nome de varivel. Para definir uma varivel de ambiente o procedimento basicamente o mesmo, adicionando o comando export antes da definio. So exemplos de definio de varivel local e de ambiente os seguintes: # LOCAL="sem export na frente" # export GLOBAL="com export na frente"

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

Captulo 11 Administrao da Shell - 179

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.

11.4.1. Arquivos de Login


Quando uma bash executada como uma shell de login interativo ela l e executa o arquivo /etc/profile se ele existir. Esse arquivo deve conter as configuraes gerais que se aplicam a todos os usurios do sistema. Aps ler o /etc/profile, ela ir procurar por um dos arquivo: ~/.bash_profile ~/.bash_login ~/.profile , na home do usurio, executando o primeiro que estiver disponvel e tiver permisso de leitura. Alm desses, executa tambm o arquivo ~/.bashrc.

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.

11.4.2. Arquivos /etc/issue e /etc/motd


Os arquivos /etc/issue e /etc/motd so usados para mostrar mensagens para os usurios e no interferem na parte operacional do sistema. A diferena entre o os arquivos /etc/issue e /etc/motd, que, o primeiro exibe uma mensagem para o usurio antes que o mesmo faa login no sistema, enquanto o segundo exibe uma mensagem aps o usurio se logar no sistema. H ainda o arquivo /etc/issue.net, que contm a mensagem exibida em logins remotos. Veja um exemplo de /etc/motd do Debian:

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.

Veja um exemplo de /etc/issue no Debian: #cat /etc/issue Debian GNU/Linux 4.0 \n \l

Os caracteres \n \l no arquivo /etc/issue representam respectivamente o nome do servidor e do terminal em que o usurio est logado.

11.5. Tipos de shell


Para saber quais shells esto disponveis, basta visualizar o contedo do arquivo /etc/shells. A maioria das distribuies GNU/Linux traz a bash como shell padro, e que uma evoluo do Bourne Shell (/bin/sh), que tem bem poucos recursos. Para alterar o shell atual, utilizamos o comando chsh. Exemplo: # chsh -s /bin/sh No prximo login, o shell do usurio ser o sh.

Captulo 11 Administrao da Shell - 182 Conhecer um pouco das shells sh e bash pode ser de muita importncia para prova.

11.6. Prtica Dirigida


1) Crie uma varivel local LINUX com o valor 4linux em linha de comando: # LINUX=4linux

2) Verifique o valor desta varivel: # echo $LINUX

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

5) Verifique o valor desta varivel: # echo $GNULINUX

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

8) Verifique quais variveis esto definidas: # set | more # env | more

9) Saia da bash filha: # exit

10) # echo $PS1

Liste e depois altere o valor da varivel de ambiente PS1:

# export PS1="C:\> "

11)

Pssimo! Volte ao normal!

# source /etc/profile

12)

Delete a varivel LINUX da memria:

# 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)

Remova o alias para o comando ls.

Captulo 11 Administrao da Shell - 184 # unalias ls

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

Teste os alias que acabamos de criar:

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

Liste todos os alias que esto definidos:

# vi /etc/issue # vi /etc/motd # vi /etc/issue.net

19)

Mude o shell do usurio fulano para /bin/ksh:

Captulo 11 Administrao da Shell - 185 # chsh -s /bin/ksh fulano

11.7. Exerccio Terico


1) O que voc entende por shell? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 2) O que so variveis locais? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 3) O que so variveis globais? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 4) Qual a finalidade dos arquivos /etc/motd e /etc/issue? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 5) Qual a finalidade dos arquivos /etc/profile e ~/.bashrc? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 6) Em qual arquivo esto listados os shells disponveis? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

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! = ================================

Captulo 12 Compactadores, Empacotadores e Procedimentos de Backup - 188

Captulo 12 Compactadores, Empacotadores e Procedimentos de Backup

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.

Captulo 12 Compactadores, Empacotadores e Procedimentos de Backup - 189

12.2. Empacotador TAR


A forma mais conhecida de realizar compresso e empacotamento em ambiente Windows utilizando o programa zip. Um programa que ``zipa'' um arquivo, ou diversos arquivos, na realidade est realizando dois procedimentos distintos: Empacotar e comprimir. Em ambientes Unix-like, essas duas tarefas so realizadas de forma logicamente distintas. O programa tar, cujo nome deriva de ``tape archiver'', realiza a tarefa de concatenar todos os arquivos e diretrios preservando as informaes do filesystem, isto , seus meta-dados. Criado com propsito de backup em dispositivos de acesso sequencial (unidades de fita) , o tar utilizado hoje em dia como uma ferramenta de empacotamento, podendo ser utilizado em conjunto com compactadores como gzip ou bzip2. A utilizao da ferramenta tar bastante simples e pode ser resumida da seguinte forma: $ tar <operaes/opes> f <arquivo_tar> [<arquivos_de_entrada>]

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.

Captulo 12 Compactadores, Empacotadores e Procedimentos de Backup - 191

12.3. O empacotador cpio


Para empacotar com o cpio devemos fazer o seguinte. # ls | cpio -ov > pacote.cpio

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

12.4. Compactadores GZIP e BZIP2


Compresso de dados o processo de codificar a informao de forma que seja possvel armazen-la em um nmero menor de bits. Por exemplo, se definssemos que a palavra ``compresso'' passaria a ser abreviada por ``comp'', estaramos diminuindo o nmero de bits necessrios para armazenar essa apostila. Entretanto, para voc pudesse entender o que ``comp'' significa voc teria que estar ciente dessa conveno ou seja, do algoritmo de compresso. H dois tipos bsicos de compresso, aquele em que no h perdas de informaes e aquele em que elas ocorrem. Obviamente quando o assunto backup de informaes vitais devemos utilizar algoritmos sem perdas. J em arquivos de imagens, vdeos e udio, h casos que podemos nos dar ao luxo de perdas de informaes em detrimento da qualidade, que em geral praticamente imperceptvel

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!

12.5. Falando de Backup


Nosso captulo explica muitas coisas sobre compactao e empacotamento de arquivos, tudo isso extremamente necessrio quando falamos de backup. Podemos ter ter tipos de backup diferentes, so eles: Incremental O backup incremental visa salvar as diferenas em relao ao ultimo backup completo, por exemplo: Um backup completo acontece no domingo. O incremental salvar os dados de domingo para segunda, de domingo para tera, de domingo para quarta, de domingo para quinta, de domingo para sexta e de domingo para sbado, ou seja, at chegar outro backup completo. Diferencial Diferente do incremental, o diferencial, faz apenas os incrementos, assim gerando um volume menor de dados. Se o backup completo foi gerado no domingo, ele salva de domingo para segunda, de segunda para tera, de tera para quarta e assim at o prximo backup completo chegar. Completo - Visa salvar todos os dados, mesmo o que j foram salvos

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

O comando acima efetuar a clonagem do disco hda, para o disco hdb.

12.6. Prtica Dirigida


1) Copie todo o contedo do diretrio /etc para /backup e v para o /backup: # cp -rL /etc /backup # cd /backup

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:

Captulo 12 Compactadores, Empacotadores e Procedimentos de Backup - 194 # vim texto1 0123456789

4) Ainda dentro do vim, copie essa linha e cole 250.000 vezes: :1y 250000p

5) Saia do arquivo salvando as alteraes: :x

6) Crie uma cpia deste arquivo chamando-a de texto2: # cp texto1 texto2

7) Vamos criar um par de arquivos binrios para nossos testes. Utilizaremos como base, o programa aptitude: # cp /usr/bin/aptitude bin1

8) Vamos duplicar esse arquivo: # cp bin1 bin2

9) Verifique que criamos quatro arquivos com tamanho aproximadamente 2.4MB, sendo dois binrios e dois texto puro: # ls -lh

parecido,

12.6.1. gzip e bzip2 com arquivos de texto puro


1) Utilize a tabela tab:comparacao1 para anotar os resultados obtidos nos testes com gzip e bzip em arquivos de texto puro: Tipo do Arquivo: TEXTO puro

Captulo 12 Compactadores, Empacotadores e Procedimentos de Backup - 195 Tamanho Original:

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

Captulo 12 Compactadores, Empacotadores e Procedimentos de Backup - 196

7) Determine o intervalo de tempo que leva para descomprimir o arquivo texto2.bz2: # time bunzip2 texto2.bz2

12.6.2. gzip e bzip2 com arquivos binrios


1) Utilize a tabela tab:comparacao2 para anotar os resultados obtidos nos testes com gzip e bzip em arquivos binrios: Tipo do Arquivo: Binrio Tamanho Original:

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

Vamos repetir os procedimentos utilizando o bzip2.

Captulo 12 Compactadores, Empacotadores e Procedimentos de Backup - 197

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

12.6.3. Trabalhando com o tar


1) Dentro do /backup vamos criar um arquivo ``tar'' que cujo contedo ser o diretrio /backup/etc empacotado. Verifique que o arquivo foi criado. # tar cf etc.tar etc # ls -lh

2) Liste o contedo do arquivo etc.tar: # tar tf etc.tar

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

Captulo 12 Compactadores, Empacotadores e Procedimentos de Backup - 198

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)

Extraia os contedos dos arquivos tar.gz e tar.bz2:

# tar xzf etc.tar.gz # tar xjf etc.tar.bz2

12.7. Exerccios Tericos


1) Qual a diferena entre empacotar e comprimir? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 2) Quais comandos do GNU/Linux voc conhece que realizam compresso? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 3) Quais comandos do GNU/Linux voc conhece que servem para empacotar arquivos e diretrios? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

Captulo 13 Shell Script I - 200

Captulo 13 Shell Script I

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.

13.2. O que um script?


Um script uma seqncia de instrues que so executadas toda vez que o mesmo chamado.

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.

13.3. Estudando um exemplo


Vejamos o seguinte exemplo de Shell Script:
1 2 3 4 5 6 7 8

# 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 -).

13.4. Executando o script


Como vimos, um programa ou script em Linux deve possuir permisso de execuo. Supondo que nosso script denomina-se s1, para podermos execut-lo, devemos executar o comando: # chmod u+x s1

E em seguida executar o script: # ./s1

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

# ./script3 42 the answer

13.5. Usando os nmeros


Muitas vezes quando fazemos scripts, precisamos de uma funo que faa o trabalho das operaes bsicas como soma,diviso,multiplicao e etc. Em shell script podemos usar o comando expr. Vamos ver esse exemplo: Um script que deve dizer quantos usurios esto presentes, quantos grupos esto presentes e no final mostrar quantos objetos meu sistema tem, a soma dos usurios e dos grupos:

Captulo 13 Shell Script I - 204


1 1 2 3 4 5 6 7 8

#!/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."

13.6. Prtica Dirigida


Crie o script abaixo. D a ele o nome userfiltro.

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

Atribua a permisso de execuo ao script: # chmod u+x userfiltro

Execute o script: # ./userfiltro

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.

13.7. Usando a estrutura SE


At o presente momento, fizemos scripts que no possuem escolhas, ou seja, comandos de execuo em linha de comando em srie utilizando nossa lgica para fazer com que aquele script seja executado. Mas se qualquer coisa acontecer no meio do caminho, no temos a oportunidade de trabalhar com as famosas exceptions As Exceptions so mais conhecidas como excees, e servem para ajudar quando o resultado de alguma parte do script pode ter vrios rumos. Usando a condio se, possvel testar o resultado de uma condicional. Por exemplo:

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.

13.7.2. O comando test


O teste de condicionais (strings, matemticas e em arquivos) em Shell Script

Captulo 13 Shell Script I - 207 executado atravs do comando test. Vamos conferir algumas formas de testarmos condicionais:

13.7.3. Testando strings


# test "uva" = "uva" # echo $? # 0

# test "uva" = "banana" # echo $? # 1

13.7.4. Testando expresses matemticas


# test 5 -eq 2 # echo $? # 1

# test 2 -eq 2 # echo $? # 0

13.7.5. Testando expresses em arquivos


# test -z $pinga # echo $? # 0

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.

13.7.6. Operadores de strings

Operadores
== != Igual Diferente

Funes

13.7.7. Operadores de matemticos

Operadores
+ * / > >= < <= Soma Subtrao Multiplicao Diviso Maior Maior ou Igual Menor Menor ou Igual

Funes

13.7.8. Operadores para arquivos

Operadores
-e -nt Arquivo existe

Funes
Arquivo mais novo que

Captulo 13 Shell Script I - 209


-ot -d Arquio mais antigo que um diretrio

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

13.8. Utilizando a estrutura if


Abaixo alguns exemplos realmente prticos de como utilizar a estrutura if.
1 2 3 4 5 6 7 8 9

#!/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:

Captulo 13 Shell Script I - 210


1 2 3 4 5 6 7 8 9

#!/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:

Captulo 13 Shell Script I - 211


1 2 3 4 5

#!/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

Captulo 13 Shell Script I - 212


31 32 33 34 35 36 37 38 39 40 41 42

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.

13.9. Exerccios Tericos


1) O que um programa compilado? O que um compilador? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

2) D exemplos de linguagens de programao, normalmente compiladas. _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

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

Captulo 13 Shell Script I - 214 Nmero da ltima linha mostrada

2) Exemplo de uso, supondo o nome do script miolo: # miolo /etc/passwd 7 18

3) Como resultado, as linhas 7 a 18(inclusive) do arquivo /etc/passwd devem ser mostradas. Dica 1: Use os comandos head e tail.

Voc sabe realizar aritmtica de inteiros na shell?

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;

Captulo 14 Agendamento de Tarefas - 215

Captulo 14 Agendamento de Tarefas

14.1. Objetivos
Entender como funciona o agendamento no sistema; Aprender o funcionamento do cron; Aprender o funcionamento do at;

14.2. Introduo Terica


A crontab utilizada para agendar comandos para serem executados periodicamente, ao contrrio do comando at, que executa comandos pontualmente. H dois tipos de crontab a de usurios e a do sistema. Ambas so arquivos que contm tabelas com informao de quando o comando especificado deve ser executado, sendo que cada linha corresponde a um nico agendamento. A crontab gerenciada pelo daemon crond, que a cada um minuto verifica se h algum agendamento que deve ser executado e executa-o. A crontab dos usurios pode ser acessada pelo comando:

Captulo 14 Agendamento de Tarefas - 216 # crontab [-e|-r|-l]

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'';

Conhecendo a sintaxe bsica das crontabs passemos aos agendamentos.

14.3. Prtica Dirigida


14.3.1. Agendamento de Tarefas com AT
1) Verifique se a data e a hora do sistema esto corretas: # date

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)

3) Agendada esta tarefa, confirme agendamentos pendentes: # atq

agendamento

listando

todos

os

4) Vamos explorar o diretrio onde ficam os agendamentos: # cd /var/spool/cron/atjobs # ls -la

5) Mostre o contedo dos arquivos contidos nesse diretrio: # cat (agendamento)

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.

14.3.2. Agendando Tarefas com o CRON

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)

Visualize os agendamentos feitos pelo o usurio.

# crontab -l

12) Onde ficam armazenados os agendamentos feitos pelos usurios com o crontab -e?

Captulo 14 Agendamento de Tarefas - 220 # cd /var/spool/cron/crontabs # ls

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)

Para fazer com que o script backup.sh seja executado diariamente:

# cp /root/backup.sh /etc/cron.daily/backups

16) Para fazer semanalmente:

com

que

script

backup.sh

seja

executado

Captulo 14 Agendamento de Tarefas - 221 # cp /root/backup.sh /etc/cron.weekly/backups

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

14.4. Exerccios Tericos


1) Qual a diferena entre os agenda-dores de tarefas at e cron? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 2) Quantos campos h na crontab do sistema? E na crontab do usurio? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

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''? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

Captulo 14 Agendamento de Tarefas - 222

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. :-)

Configure o timezone no RedHat utilizando o tzselect

Captulo 15 Instalando, removendo e atualizando programas - 223

Captulo 15 Instalando, removendo e atualizando programas

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.

15.2. O que um pacote?


Pacotes so conjuntos de arquivos necessrios execuo de um software agrupados de forma a facilitar a instalao e distribuio do programa. Eventualmente podem conter sistemas de listagem/checagem de dependncias, scripts para configurao. Os pacotes nos sistemas baseados em Debian tm uma extenso

caracterstica: .deb.

Captulo 15 Instalando, removendo e atualizando programas - 224 J nas distribuies baseadas em RedHat, temos pacotes com a extenso caracterstica: .rpm.

15.3. Mas o que um gerenciador de pacotes?


Um gerenciador de pacotes um sistema de gerenciamento para a instalao, atualizao e a remoo dos pacotes anteriormente instalados. Parece muito simples falar em instalao de pacotes, mas temos que lembrar que o gerenciador de pacotes quem faz toda a parte suja para ns. Um pacote nem sempre depende apenas dele mesmo, ou seja, quando instalamos um programa, ele depende de bibliotecas de udio, vdeo, imagens, funes e vrios outros tipos variados de dependncias. O trabalho feito pelo gerenciador de pacotes interpretar a necessidade de cada um dos pacotes para que eles possam funcionar de forma devida. Para os sistemas baseados em Debian, a ferramenta a ser utilizada o aptitude. J para sistemas baseados em RedHat temos a ferramenta yum. Nosso curso est baseado na ferramenta aptitude. aptitude

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>

Algumas informaes importantes tambm podem ser obtidas comando apt-cache.

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.

15.4. Gerenciamento de pacotes


Em distribuies baseadas em Debian, a maneira mais simples de gerenciar os pacotes de software usando o comando aptitude. O aptitude um front-end para o sistema APT. A primeira etapa usar o comando: # aptitude update

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.

15.5. Espelhos e o arquivo /etc/apt/sources.list


Este arquivo contm os locais onde o APT encontrar os pacotes, a verso da distribuio que ser verificada (stable, testing, unstable) e a seo que ser copiada (main, non-free, contrib, non-US). Essas definies so usadas em sistema Debian. Segue um exemplo de arquivo de configurao.

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

Aps fazer as configuraes ser necessrio fazer um update. # aptitude update

15.6. Instalao, Remoo e Atualizao


Para a instalao deve-se usar o comando aptitude com a instruo install e fornecer o nome do pacote desejado. Por exemplo, para instalar o programa de navegao em linha de comando lynx, digitamos: # aptitude install lynx

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 - 229 # aptitude remove lynx

15.7. Consultas de Pacotes


Imagine que necessite de um pacote que trabalhe com arquivos JPG. O aptitude pode ser usado para consultar a base de pacotes disponveis relacionados ao texto jpg. # aptitude search jpg Dessa forma, o comando ir retornar todos os pacotes que fizerem alguma relao com arquivos jpg.

15.8. Atualizao via Internet


O sistema pode ser atualizado de tempos em tempos ou por questes de segurana. Para instalar todas as atualizaes disponveis, usa-se o aptitude com a instruo safe-upgrade. Dependendo da velocidade de conexo, este processo pode levar bastante tempo. # aptitude safe-upgrade

15.9. Gerenciamento de pacotes em distros baseadas em rpm.


Nas distros baseadas em Red Hat, o gerenciamento de pacotes feito pelo programa rpm. A Red Hat e Fedora disponibilizam tambm a ferramenta yum, similar em funcionalidade ao aptitude. J o SUSE apresenta a

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

15.9.1. Instalando pacotes:


Para instalar um pacote diretamente do repositrio: # yum install pacote

15.9.2. Removendo pacotes:


# yum remove pacote

Alem do yum, outro bom gerenciados de meta-pacotes o urpm

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

15.10. Exerccio Terico


1) O sistema APT responsvel por qual funo no sistema? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

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 15 Instalando, removendo e atualizando programas - 233

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.

16.2. Introduo Terica


O X Window System, conhecido tambm como servidor X, apenas X ou X11, um protocolo de rede e vdeo que prov a capacidade de se trabalhar com o sistema de janelas e que permite as interaes atravs de teclado e mouse. Esse sistema fornece os meios para o desenvolvimento de interfaces grficas para usurios ou GUI - ``Graphical User Interfaces'' em sistemas Unix e Unix-like.

Captulo 16 Servidor X - 234 O sistema X fornece apenas as ferramentas que possibilitam o

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.

16.3. Configurando o suporte Interface Grfica


A interface grfica mais utilizada em ambientes UNIX conhecida como X Window System ou simplesmente X. Essa interface provida pelo pacote Xorg, que podem ser baixados diretamente nos site oficial http://www.xorg.org ou utilizando o "aptitude" dos pacotes necessrios. H basicamente quatro formas de configurar o servidor X, sendo elas: Automaticamente: # dexconfig Ou manualmente: # X -configure

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:

Captulo 16 Servidor X - 235

ServerLayout InputDevice (mouse) Screen InputDevice (keyboard)

Files Modules InputDevice (mouse) InputDevice (keyboard) Screen Monitor Displays Device (video card)

Monitor 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.

Captulo 16 Servidor X - 236

16.4. Varivel de Ambiente DISPLAY


A varivel de ambiente DISPLAY a que define em que lugar a sada grfica deve ser mostrada. Com essa varivel definida possvel at informar ao sistema que a sada grfica se dar em outro computador na rede. O formato de definio dessa varivel o seguinte: <ip_destino>:<display>.<screen>

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.

16.5. Window Managers


Um X window manager um software que controla basicamente o posicionamento e a aparncia das janelas dentro do sistema X Window. Ao contrrio dos sistemas da Apple e Microsoft, que possuem apenas uma nica aparncia bsica e que de controle delas, nos sistemas GNU/Linux voc livre para escolher qual o gerenciador de janelas que ir utilizar. H um nmero muito grande de gerenciadores de janelas que voc pode instalar simultaneamente em uma mquina, possibilitando que cada usurio escolha aquele que mais lhe agrade. Cada gerenciador difere do outro em muitos aspectos, como nvel de customizao da aparncia e funcionalidades, configurabilidade dos menus, meios grficos para iniciar um software, capacidade de utilizar mltiplos desktops e, principalmente, na quantidade de recursos que ele exige da mquina,

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.6. Display Managers


Os Display Managers so programas que agrupam algumas tarefas como realizar o loging do usurio local ou remoto (via protocolo XDMCP), alm de permitir que o usurio selecione de forma fcil qual Window Manager ele ir utilizar. Alguns exemplos de Display Managers so o KDM (padro do KDE), GDM (padro do GNOME), XDM (padro do servidor X).

16.7. Protocolo XDMCP


O XDMCP ou X Display Manager Control Protocol um protocolo de rede que utiliza a porta 177/udp e utilizado para servir interface grfica para clientes na rede. Se um Display Manager estiver com o protocolo XDMCP ativado, basta um servidor X enviar um pacote de ``query'' mquina que est servindo o DM que responder mquina solicitante enviando a sada grfica do DM para que algum usurio realize o login. Esta uma forma de utilizar a parte grfica em uma mquina com menos recursos de hardware uma vez que o processamento de interface grfica estar ocorrendo na mquina servidora.

Captulo 16 Servidor X - 238

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.

16.9. Prtica Dirigida


16.9.1. Instalao e Configurao do Servidor X
At a verso Sarge do Debian, o servidor X11 utilizado era o XFree86, a partir da verso Etch, o servidor padro passou a ser o XOrg. 1) Sendo assim, para instalar o servidor X na verso Sarge do Debian devemos utilizar o pacote x-window-system e, para o Etch, devemos utilizar o xserver-xorg. # aptitude install xserver-xorg

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:

Captulo 16 Servidor X - 239 # X -configure

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:

lspci | grep -i VGA

frequncias do monitor - para descobrir quais so as frequncias do seu monitor voc deve recorrer ao manual e ao Google.

7) Vamos visualizar o arquivo de configurao: # cat /root/xorg.conf Um arquivo de configurao tpico:

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

Tente os seguintes comandos e diga qual a diferena entre eles:

16.9.2. Instalando um Window Manager

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

2) Agora vamos iniciar o nosso cliente grfico que acabamos de instalar:

Captulo 16 Servidor X - 243 # startx

3) Para um prximo teste, vamos instalar outro cliente grfico que muito utilizado, o KDE: # aptitude install kdebase

4) Depois vamos iniciar nosso outro gerenciador de janelas: # startx

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

WindowMaker utilize: wmaker. KDE utilize: startkde.

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

16.9.3. Display Managers

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:

Captulo 16 Servidor X - 245 # vi /etc/X11/default-display-manager /usr/bin/kdm

5) Por fim, vamos conhecer outro DM, o GDM, padro do GNOME: # aptitude install gdm

O Window Manager Padro GNOME.

No Xorg o arquivo de configurao: /etc/X11/xorg.conf. Peso elevado

16.9.4. Usando o Xnest


Objetivo: Queremos rodar um aplicativo na nossa mquina local mas que esteja sendo executado em uma mquina remota. Uma ilustrao dos procedimentos pode ser vista na figura fig:xnest. Sendo assim:

Ilustrao 18: xnest

1) Vamos iniciar o nosso Window Manager utilizando o Display Manager

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.

Captulo 16 Servidor X - 247

16.9.5. Servidor X Remoto


O Xterminal um recurso dos servidores grficos X presentes em todos os servidores Linux. Este recurso possibilita que uma mquina com menor desempenho possa executar uma aplicao grfica a partir de um servidor, onde toda a carga de processamento est sendo realizada nele, e a nossa estao atuando somente como um terminal. O Xterminal utiliza o protocolo XDMCP. Utilizaremos o display manager gdm para fazer esse servio. Vamos editar o arquivo onde ativaremos o XDMCP para o gdm. # vi /etc/gdm/gdm.conf 1) Localize o bloco [Xdmcp], utilizado para configurao desse protocolo. Ao encontrar esse bloco, ative o XDMCP alterando de Enable=false para Enable=True: [xdmcp] Enable=true

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

Captulo 16 Servidor X - 248

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? _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________

Captulo 17 Instalao Linux em Desktop - 249

Captulo 17 Instalao Linux em Desktop

17.1. Objetivos
Neste captulo iremos aprender a fazer uma instalao bsica em desktop de um sistema Debian GNU/Linux.

17.2. Instalando o Debian 4.0 Etch


Por incrvel que parea, um desktop d tanto trabalho quanto um servidor, pois ser nesse ambiente que voc ir trabalhar com mais ferramentas. Para instalarmos um Linux em um desktop precisamos saber para qual finalidade precisamos do sistema.

17.3. Perfil da instalao:


Parties - O esquema de particionamento que adotaremos para nosso desktop necessrio por uma questo de infra-estrutura do laboratrio didtico. Este esquema dever ser alterado e personalizado conforme cada caso. Pacotes - Os pacotes de um desktop so muito relativos, mas como iremos usar um perfil de desktop domstico, partiremos do princpio de que teremos um usurio avanado de informtica, com acesso banda larga e que necessita de pacotes multimdia.

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.

Captulo 17 Instalao Linux em Desktop - 251

17.3.1. Telas de Instalao


Bootando pelo CD

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.

Ilustrao 19: Tela inicial

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

Ilustrao 21: Instalao Grfica grfico.

Captulo 17 Instalao Linux em Desktop - 253 4) Logo aps o caregamento da interface grfica, a primeira tela de instalao sobre o Locale.

Ilustrao 22: Locale 5) Selecione seu Pais:

Ilustrao 23: Pais

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:

Ilustrao 25: Carregando drom

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.

Ilustrao 27: Configurao automtica de rede

Captulo 17 Instalao Linux em Desktop - 256

10)

O prximo passo agora inserir o nome da mquina.

Ilustrao 28: Hostname 11) Logo aps entre com o domnio:

Ilustrao 29: Domain Name

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

Captulo 17 Instalao Linux em Desktop - 258 14) Selecione particionamento manual:

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 32: Tabela de particionamento

Captulo 17 Instalao Linux em Desktop - 259

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:

Ilustrao 34: Tamanho

17)

Escolher entre primria ou lgica para a nova partio a ser criada:

Ilustrao 35: Primria ou Lgica

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

Ilustrao 37: Configurando a nova partio

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:

Ilustrao 39: 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.

Ilustrao 41: Particionador

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.

Ilustrao 43: Instalao do Sistema Base

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.

Ilustrao 45: Nome completo

Captulo 17 Instalao Linux em Desktop - 266

Ilustrao 46: Nome de usurio

28)

Determine a nova senha para esse usurio:

Ilustrao 47: Senha do usurio comum

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.

Ilustrao 49: Configurar gerenciados de pacotes

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:

Ilustrao 51: Concurso de Popularidade

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:

Ilustrao 53: Selecionando pacotes

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:

Ilustrao 55: Instalao do Grub

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:

Ilustrao 57: novo sistema

Captulo 17 Instalao Linux em Desktop - 272

ANEXOS

Captulo 17 Instalao Linux em Desktop - 273

System Imager - 4Linux

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

Captulo 17 Instalao Linux em Desktop - 274

Utilizando o System Imager


17.3.2. Backup ao final de cada aula
Ao final de cada aula o aluno executa o comando abaixo, selecionando a opo de Enviar Imagem. # 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.

17.3.3. Restore antes de cada aula


No incio de cada aula, a imagem de cada mquina dever ser restaurada. Para isso, basta executar o comando abaixo, selecionando a opo Receber Imagem. Normalmente, esta operao realizada pelo prprio instrutor antes da aula se iniciar e dever ser realizada pelo aluno apenas sob sua orientao. ATENO! Todos os arquivos do sistema podero ser apagados! Se voc no fez nenhum tipo de backup, faa-o antes! # si_cliente

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.

Captulo 17 Instalao Linux em Desktop - 276

Manipulando Hardware e Dispositivos

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.

Ilustrao 58: Arquitetura

Acesso aos dispositivos


O acesso aos dados da memria RAM feito de forma rpida e eficiente atravs de otimizados canais de comunicao. Entretanto, o acesso aos dispositivos mais lento, e as tecnologias responsveis por essa funo podem ser dividas em duas categorias. A primeira, chamada PIO (Programmed Input/Output), envolve a CPU na transferncia das informaes. Para identificar os dispositivos, so associados a eles os chamados endereos de I/O. Assim, por exemplo, a COM1 tem o endereo 3F8h, a LPT1 o endereo 378h. Na verdade, um certo intervalo desses endereos so utilizados para cada dispositivo. Esses endereos podem ser consultados no arquivo /proc/ioports. Alm desses endereos, em alguns casos temos um interrupo associada a um dispositivo. Isso porque, como so mais lentos que a CPU, precisam de algum mecanismo para informar CPU de que o trabalho terminou. Do contrrio, a CPU

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>

Dispositivos COM1 COM2

Nome no Linux /dev/ttyS0 /dev/ttyS1

End. Hex 3F8 2F8

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

Captulo 17 Instalao Linux em Desktop - 280

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:

Captulo 17 Instalao Linux em Desktop - 281

Ilustrao 59: KDE

Captulo 17 Instalao Linux em Desktop - 282

Ilustrao 60: GNOME

Captulo 17 Instalao Linux em Desktop - 283

Ilustrao 61: XFCE

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.

Captulo 17 Instalao Linux em Desktop - 284

Editor de Textos

Ilustrao 62: OpenOfice Writer

Planilha Eletrnica

Captulo 17 Instalao Linux em Desktop - 285

Ilustrao 63: OpenOffice Calc

Programa de Apresentaes

Captulo 17 Instalao Linux em Desktop - 286

Ilustrao 64: OpenOffice Impress

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.

Captulo 17 Instalao Linux em Desktop - 287

Navegador

Ilustrao 65: Firefox ou Iceweasel

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.

Captulo 17 Instalao Linux em Desktop - 288

udio

Ilustrao 66: Xmms

Vdeo

Ilustrao 67: Kaffeine

Captulo 17 Instalao Linux em Desktop - 289

Grficos

Ilustrao 68: Gimp

Captulo 17 Instalao Linux em Desktop - 290

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.

Captulo 17 Instalao Linux em Desktop - 291

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.

Ilustrao 69: Dasher

Captulo 17 Instalao Linux em Desktop - 292

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.

Ilustrao 70: GOK

Captulo 17 Instalao Linux em Desktop - 293

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")

Captulo 17 Instalao Linux em Desktop - 294

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