Você está na página 1de 89

Introduo ao Linux

Guilherme Esmeraldo

Crato/CE 2009

Captulo 1 Introduo ao Linux


1.1 Um Pouco de Histria
O sistema operacional provavelmente o software mais importante em qualquer computador. Ele o responsvel por ativar todos os perifricos e criar o ambiente sobre o qual todos os outros programas executam. O Windows o sistema mais usado, por isso ele acaba sendo a plataforma mais familiar para muitos de ns. Como qualquer sistema, o Windows possui sua dose de problemas, entretanto (como mais gente usa) normalmente mais fcil conseguir ajuda. O domnio da Microsoft na rea de sistemas operacionais comeou em 1981, com o lanamento do primeiro PC e da primeira verso do MS-DOS. Embora no tivesse nada de especial com relao a outros sistemas da poca, o DOS cresceu em popularidade junto com os PCs, seguido pelas diversas verses do Windows. Contudo, a Microsoft uma pgina recente na histria da informtica. Enquanto o MS-DOS ainda dava seus primeiros passos, o Unix j era um sistema maduro, usado na maioria dos computadores de grande porte e em estaes de trabalho. A histria do Unix comea em 1969, na frente de um computador igual a este:

Este um PDP-7, que, na dcada de 60, era um minicomputador de "baixo custo" (custava 72.000 dlares da poca), equipado com apenas 8 kbytes de memria RAM. Hoje mesmo as agendas de bolso, das mais baratas, possuem bem mais memria do que ele. Devido s pesadas limitaes do equipamento, o sistema operacional deveria ser extremamente enxuto e otimizado, de forma a extrair o mximo do equipamento, consumindo um mnimo de memria. A combinao da criatividade dos IntroduoaoLinuxGuilhermeEsmeraldo 2

3 desenvolvedores, a necessidade e as limitaes impostas pelo equipamento, resultaram em um sistema bastante otimizado e elegante. Muitas das idias surgidas nesta poca continuam sendo usadas at hoje. O Unix evoluiu durante a dcada de 70, passando a ser usado em cada vez mais equipamentos e ganhando mais recursos. Quase sempre ele era usado em aplicaes "srias", incluindo instalaes militares, bancos e outras reas onde no existe margem para falhas. Devido a tudo isso o sistema se tornou muito robusto e estvel. Os primeiros sistemas Unix foram desenvolvidos de forma colaborativa, dentro de universidades e centros de pesquisas. Embora naquela poca ainda no existisse a internet como a conhecemos hoje, existia uma grande colaborao entre os desenvolvedores. Isso mudou na dcada de 1980, quando empresas como a AT&T, Sun e SCO, que detinham os direitos sobre o sistema, passaram a desenvolver verses proprietrias e a concorrerem entre si. A colaborao deixou de acontecer e a plataforma foi fragmentada em verses incompatveis. Outro fator importante foi a falta de investimentos em verses destinadas a micros PCs. Na poca, os PCs eram vistos como computadores muito limitados, incapazes de rodar sistemas Unix completos. Lembre-se de que estou falando do incio da dcada de 80, quando ainda eram usados micros XT e 286. Somados, estes dois fatores fizeram com que a plataforma definhasse, deixando o caminho livre para o crescimento da Microsoft. Chegamos, ento, ao Linux. Tudo comeou em 1991, quando Linus Torvalds comeou a trabalhar no desenvolvimento de um sistema Unix para rodar em seu 386. Na poca, o nico sistema similar era o Minix, um sistema para uso acadmico, que era bastante limitado. No incio, Linus usava o Minix para rodar os programas de esenvolvimento, mas, a partir de um certo ponto, ele passou a usar o prprio Linux. De incio, o Linux era um projeto muito pequeno, o hobby de um nico programador. Entretanto, ele tinha uma grande vantagem em relao aos sistemas UNIX que o precederam: o simples fato de ser disponibilizado sob a licena GPL. Isso permitiu que outros programadores adotassem o projeto, passando a contribuir com melhorias e correes. O sistema passou a crescer em um ritmo cada vez mais acelerado, chegando ao que temos nos dias de hoje. A licena GPL, to comentada, mas ao mesmo tempo to mal-compreendida, pode ser resumida em 4 direitos bsicos e uma obrigao: 1- Aplicativos disponibilizados sob a GPL podem ser usados por qualquer um e para qualquer fim, sem limitaes. Mesmo que eventualmente os criadores mudem de idia e resolvam passar a distribuir novas verses do programa sob outra licena, as verses que foram distribudas sob a GPL continuam disponveis, o que permite que outros desenvolvedores criem uma derivao e continuem o desenvolvimento. Isso traz uma boa dose de segurana para quem usa o aplicativo, j que reduz a chance de ele ser IntroduoaoLinuxGuilhermeEsmeraldo 3

4 descontinuado e deixar de estar disponvel. Enquanto houver um volume considervel de usurios, bem provvel que o desenvolvimento continue, de uma forma ou de outra. 2- Direito de tirar cpias do programa, distribu-las ou at mesmo vend-las a quem tiver interesse. Existe a possibilidade de ganhar algum dinheiro vendendo CDs gravados, por exemplo, mas como todo mundo pode fazer a mesma coisa, preciso vender por um preo relativamente baixo, cobrando pelo trabalho de gravao e no pelo software em si, que est largamente disponvel. Isso faz com que a forma mais eficiente de ganhar dinheiro seja prestar suporte e vender servios de personalizao e no venda direta, como no caso dos softwares comerciais. Para o cliente acaba sendo vantajoso, pois o custo de implantao ser o gasto com a consultoria e treinamentos, enquanto ao implantar um software comercial qualquer ele gastaria tambm com as licenas de uso. 3- Direito de ter acesso ao cdigo fonte do programa, fazer alteraes e redistribu-las. Para um programador este o principal atrativo, j que permite criar novos projetos usando como base o cdigo fonte de programas j existentes ao invs de ter sempre que comear do zero, sem falar na grande oportunidade de aprendizado que examinar o cdigo fonte dos programas disponveis propicia. 4- Direito (e ao mesmo tempo a obrigao) de redistribuir as modificaes feitas. Este o ponto onde existem mais mal-entendidos. Se voc desenvolve um software por hobby, ou por us-lo internamente na sua empresa, e no possui interesse em explorlo comercialmente, voc pode simplesmente divulgar o cdigo fonte para todo mundo, o que o caminho mais lgico se voc pretende atrair outros interessados em ajud-lo no desenvolvimento. Mas, caso voc pretenda receber pelo seu trabalho de desenvolvimento, existem duas opes: a) Voc pode distribuir o software livremente para aumentar a base de usurios e ganhar vendendo suporte, treinamentos e personalizaes ou: b) Voc s obrigado a distribuir o cdigo fonte a quem obtm o software, de forma que voc pode trabalhar batendo de porta a porta, vendendo o software para alguns clientes especficos e fornecendo o cdigo fonte apenas para eles. No existe nada de errado com este modelo, mas voc perde a possibilidade de ter contribuies de outros desenvolvedores, o que pode ser ruim a longo prazo. Os softwares distribudos sob a GPL tambm no contaminam softwares comerciais ou de outras licenas no caso de distribuio conjunta. Por exemplo, uma revista pode distribuir alguns softwares GPL no meio de um monte de aplicativos fechados na mesma edio. Os softwares GPL continuam sendo GPL, com todas regras que vimos acima, enquanto os softwares comerciais continuam sendo fechados. A revista deve incluir o cdigo fonte dos aplicativos GPL (ou pelo menos a informao de como obt-los via internet), mas naturalmente no precisa fazer o mesmo com os outros aplicativos includos no CD. Voc pode tambm usar algum software GPL em conjunto com o seu aplicativo IntroduoaoLinuxGuilhermeEsmeraldo 4

5 comercial, desenvolvendo um aplicativo qualquer que utiliza o Postgree SQL (um servidor de banco de dados), por exemplo. O Postgree SQL continua sendo GPL e o seu aplicativo continua sendo fechado; qualquer um pode usar e tirar cpias do Postgree SQL, mas voc controla a distribuio do seu aplicativo. Uma coisa no interfere com a outra. Ou seja, muito embora muitos vejam a GPL como algum tipo de licena comunista, que diz que todos os programadores devem fazer voto de misria e passar a trabalhar de graa em nome do bem comum, ela na verdade apenas uma licena que estimula a colaborao e o reaproveitamento de softwares e componentes, que vem nos trazendo diversas mudanas positivas. Ao ver micros com Linux em exposio nas lojas e em mercados, tenha em mente que esta apenas a ponta do iceberg. O uso do Linux em micros domsticos, pelo grande pblico, uma coisa relativamente recente. Antes de chegar aos desktops, o Linux cresceu entre os desenvolvedores e usurios avanados, dominou os servidores, invadiu o mundo dos dispositivos embarcados (celulares, roteadores, pontos de acesso wireless e at mesmo modems ADSL) e se tornou o sistema dominante no mundo dos supercomputadores. Segundo o http://www.top500.org/ (que mantm um rank atualizado dos 500 supercomputadores mais poderosos do mundo) em junho de 2009, tnhamos 387 dos 500 supercomputadores mais poderosos rodando diferentes verses do Linux. Fonte: http://antonini.med.br/blog/?p=4945 Para maiores informaes sobre a histria do Linux: consulte o site (em ingls): http://www.linuxjournal.com/article/6000

1.2 Linux na prtica: verdades e mitos


Algumas pessoas adeptas ou porta-vozes de outros sistemas operacionais tm alegado, na tentativa de desvalorizar o crescente gosto pelo Linux, que ele apresenta deficincias fatais a mdio e longo prazo, principalmente quando adotado como soluo corporativa. Em seu propsito de disseminar o medo, a incerteza e a dvida em relao ao software livre, essas pessoas acabaram transformando esses alegados defeitos em virtuais mitos sobre Linux. Paralelamente, ningum pode deixar de reconhecer que esse sistema operacional e inmeros programas livres esto avanando sobre todos os segmentos do mercado, que j conquistaram a mdia e esto rapidamente expandindo sua base instalada, em todo o mundo, refletindo nmeros impressionantes. E so rarssimos os casos de usurios que aderiram ao Linux e a outros softwares livres e voltaram atrs nessa deciso. IntroduoaoLinuxGuilhermeEsmeraldo 5

6 Diante dessa situao antagnica, a evidncia que uma das partes est enganada. E vale perguntar: ser que os opositores do Linux e dos produtos de cdigo aberto, em geral, esto de fato criticando com base em argumentao real ou esto simplesmente atirando para todo lado, apostando na tese de que uma mentira ou vrios mitos bombardeada atravs da mdia e dos mais diversos meios acabar virando verdade e afastando o potencial usurio de software livre? Para chegar a uma concluso, o melhor caminho relacionar os mitos sobre Linux, em particular, e sobre o software livre em geral, e destrinch-los. Antes de tudo, porm, importante alertar os leitores de que, ao ouvir esses mitos, devem pensar um pouco sobre eles para checar se fazem sentido, pois muitos deles podem parecer verdadeiros primeira vista. Alm disso, vale a pena refletir sobre os motivos que levariam pessoas a ter medo do Linux.

1.2.1 Os mitos
* Se gratuito, no deve ser bom; * no h bons aplicativos para Linux; * No h suporte para software livre, e nem poderia, pois um produto gratuito; * Linux no to seguro quanto software proprietrio. Hackers podem ler o cdigo e entrar no sistema; * Linux repleto de bugs; * Linux difcil; * No h treinamento para Linux; * Linux no estvel e confivel; * Nenhum negcio verdadeiro usa Linux; * Nenhum produtor de software, em s conscincia, vai abrir seu cdigo fonte; * Produtos como o Linux podem sumir do mercado a qualquer momento, pois no h uma empresa por trs; * Linux caro; * O Linux roda em antigos 386 e 486 com funcionalidade mnima.

1.2.2 Os fatos
Se gratuito, no pode ser bom. Este argumento, usado freqentemente, completamente falso. O Linux free software e a traduo correta para o termo free livre e no grtis. Distribuidores comerciais de Linux no proibem a distribuio de seus produtos atravs da Internet, CDs baratos encartados em revistas, ou outras formas de difuso sobre as quais no recebem nem um centavo. Mas esperar que alguma empresa fornea gratuitamente mdia de software, manual impresso, suporte telefnico e outros servios adicionais no mnimo irreal e fantasioso e nenhuma empresa afirma fazer isto. IntroduoaoLinuxGuilhermeEsmeraldo 6

7 H inmeros casos de aplicaes crticas rodando em Linux, por exemplo, muito da Internet repousa sobre Linux e software livre. Sem eles, a Internet no funcionaria. bem provvel que, direta ou indiretamente, voc use algum produto desses todos os dias e nem saiba. Servidores rodando Linux com sendmail gerenciam a maioria das mensagens atravs da Internet; grande parte dos sites da Internet utilizam o servidor web Apache. Para entender melhor o conceito de Free Software, veja as licenas que esto disponveis na Free Software Foundation, www.fsf.org . Uma das coisas que voc ir aprender por l que legtimo que o distribuidor de um software livre cobre pelo seu trabalho de gerar as cpias, e demais custos associados, bem como os servios adicionais oferecidos. Tambm as licenas esclarecem ao usurio os direitos de utilizao do Linux e outros softwares livres. No h bons aplicativos para Linux Esse argumento tambm falso. H muitos aplicativos excelentes. E mais e mais so lanados o tempo todo. Alm disso, agora que o movimento pelo software livre est fortalecido, muitas grandes empresas de software proprietrio esto fazendo verses de seus programas para sistemas operacionais livres. E h muitas razes de negcios para fazer isso, como ser mostrado frente. Alguns exemplos de boas aplicaes so: Netscape, Corel Word Perfect, StarOffice, Oracle, Informix, Adobe FrameMaker, Corel PhotoPaint, Borland Kylix e muito mais. No h suporte para Linux, e nem poderia, pois um produto gratuito Em 1997, o prmio InfoWorld para o produto do ano, na categoria de melhor suporte, foi para a comunidade de usurios Linux. Como isso pode acontecer? Bem, a Internet um lugar amplo e h reas onde aqueles que detm o conhecimento esto ligados. Descobriu-se que as pessoas recebem um suporte muito melhor e respostas mais rpidas usando listas de discusso, grupos de notcias, sites de ajuda on-line, do que tentando obter suporte de uma empresa comercial. Esse tipo de suporte gratuito, mesmo se o problema foi causado por erro do usurio e no por bug de software. Se todas essas informaes ainda no forem suficientes, o usurio poder optar por suporte pago, fornecido por empresas especializadas em suporte para Linux, como por exemplo a Linuxcare (www.linuxcare.com). Linux no to seguro quanto software proprietrio, hackers podem ver o cdigo e invadi-lo. Embora esse argumento parea bastante lgico, primeira vista, a verdade exatamente o oposto. Segurana atravs do desconhecimento no segurana. O desconhecimento d uma falsa sensao de segurana. H muitas pessoas que no encontram nada melhor para fazer do que tentar invadir software proprietrio. Algumas so muito talentosas e, se h brechas possveis, elas as encontraro. Considere por um momento algum algoritmo de encriptao. Se ele quer uma chance IntroduoaoLinuxGuilhermeEsmeraldo 7

8 de reconhecimento ele precisa ser Open Source. Por que? Porque sem uma intensa avaliao por parte da comunidade de desenvolvedores, ele nunca ser aceito como seguro. O ping of death, por exemplo, representou um ataque muito srio porque ele podia paralisar o servidor. Poucas horas depois de sua descoberta, a plataforma Linux j tinha uma correo contra o ataque. Produtos de cdigo fechado no chegaram a uma soluo por meses. Voc gostaria de rodar seu negcio sobre software que tem regras de segurana sobre as quais voc no pode ter nenhum controle e s quais no se tem acesso? Linux repleto de bugs E o software proprietrio, no ? Companhias tradicionais de software por maiores que sejam no tm recursos equiparveis e nem programadores to motivados se comparados legio de programadores que, em todo o mundo, dedicam seu tempo a desenvolver o Linux e outros free softwares. Assim, no por acaso que a correo de um bug, que no software comercial pode demorar semanas, meses ou at ser solucionado apenas na verso seguinte, so geralmente feitas em questo de horas.No se est falando que o software livre seja livre de bug, e sim, que com solues rpidas e contnuo melhoramento do cdigo fonte, tem uma clara vantagem. Alm disso, muito grande a responsabilidade de expor publicamente seu cdigo fonte, uma vez que as pessoas iro anlis-lo com severidade e criticar seus erros. Por outro lado, isso acelera muito o processo de desenvolvimento e tambm abre espao para diversas contribuies, as quais submetem a qualidade dos processos de desenvolvimento a uma estrutura bem mais rigorosa. Essa nova estrutura fornece invariavelmente uma depurao mais exigente e custos muito mais reduzidos. Linux difcil Essa alegao cai por terra, por exemplo, quando se v um estudo de caso como o do Colgio Stella, mostrado nesta edio da RdL, em que crianas da pr-escola iniciamse na computao atravs do Linux. No preciso ser nenhum especialista para pilotar um Linux, principalmente porque a grande maioria das pessoas quer aplicativos e ambientes grficos facis de usar e aprender intuitivamente ou com pequeno esforo e que encontram logo de cara ao instalar o Linux atravs de qualquer das distribuies existentes. A curva de aprendizado bem pequena, como em qualquer outro sistema que voc conhece, e a documentao muito extensa e acessvel para qualquer um. Browsers, e-mail, editores e processadores de textos, editores de imagens bitmap ou vetoriais, planilhas, gerenciadores de arquivos, visualizadores, bancos de dados, proxy, servidores, existem em quantidade e qualidade mais do que suficiente para convencer qualquer usurio. Na hora de pilotlo tudo transcorre sem traumas e usando o conhecimento de outros sistemas, logo se pega o seu jeito e se desmascara outro mito, que leva as pessoas a confrontar a real inteno dos que o acusam de ser difcil. Tambm devemos levar em conta o medo da mudana que induz as pessoas a pensar que o Linux difcil, mas na verdade a dificuldade est na mudana de paradigma. No h treinamento para Linux. IntroduoaoLinuxGuilhermeEsmeraldo 8

9 J existem vrias empresas, inclusive no Brasil, oferecendo treinamento para Linux, embora em muito menor escala do que as opes existentes para produtos comerciais. Mas isso est mudando rapidamente, inclusive porque as empresas de treinamento esto constatando quanto o movimento pelo software livre est crescendo, e percebem que esta uma grande oportunidade de negcios. Alm disso, h muita literatura sobre Linux e software livre, sem contar tudo que est disponvel na Internet e que representa um valioso recurso de treinamento. Veja na seo de classificados da RdL as empresas que j esto investindo no mercado brasileiro com treinamento para Linux. Linux no estvel ou confivel. Este mais um mito destinado a espalhar o medo e que absolutamente desprovido de fundamento. Quantas vezes seu sistema proprietrio travou nesta semana? Saiba que comum sistemas Linux funcionando durante meses ininterruptos, sem nunca travarem a ponto de precisar de uma reinicializao. E sobre a instalao de software? Seu sistema exige que voc reinicialize depois de instalar um novo programa? A resposta ser no, se voc estiver usando Linux. Alm disso, por que mais e mais empresas utilizam o Linux para rodar aplicaes em misso crtica? O correio dos Estados Unidos utiliza Linux para manejar grandes volumes de mensagens. O Apache um web server to estvel que a IBM abandonou seus produtos e agora distribui o Apache com suas aplicaes Web. Nenhuma grande empresa usa Linux. Ao contrrio. H um histrico de adeso onde o perfil de grandes especialistas em todas as reas, de desenvolvedores de gabarito, que avaliaram o sistema e passaram a recomend-lo a seus clientes. Um nmero significativo diz respeito base de provedores de Internet, onde se concentra uma enorme quantidade de mquinas movidas a Linux. E os administradores desses sistemas no optaram por ele porque mais barato, e sim porque atendia plenamente suas requisies tcnicas, como robustez, escalabilidade e segurana, e principalmente, porque ele totalmente customizvel e o acesso ao cdigo completo. No podemos deixar de citar os bancos, companhias automobilsticas e indstrias que utilizam o Linux como soluo em seus sistemas ou redes. Nenhum produtor de software, em s conscincia, vai abrir seu cdigo. E por que a Netscape o fez, tal como a SUN e a Digital Creations, entre tantas outras? Produtos como o Linux podem sumir do mercado a qualquer momento, pois no h uma empresa por trs. Na verdade, programas de cdigo aberto sobrevivem mesmo sem empresa, o que no possvel na indstria do software comercial. Existe o testemunho de muitos que foram seriamente lesados pela descontinuidade de determinados softwares comerciais, IntroduoaoLinuxGuilhermeEsmeraldo 9

10 o que no acontece quando o cdigo aberto, justamente porque o fato de o cdigo estar disponvel garante essa permanncia. No universo comercial justamente o contrrio, a falncia de uma empresa ou o monoplio podem deixar os usurios sem opo. Linux caro. Os opositores do Linux alegam que, computados o custo de aquisio do software e hardware, da assistncia tcnica, o treinamento das pessoas que vo utilizar a plataforma e o desenvolvimento de aplicaes, o Linux revela-se uma soluo bastante cara, e no gratuita, como se propaga. E afirmam que raramente o Linux grtis. Alm disso, consideram que o preo de aquisio de qualquer software apenas uma pequena parcela do custo total de propriedade da soluo da qual este software parte, principalmente incluindo custos diretamente relacionados, como treinamento, instalao e suporte, e outros associados de forma mais difusa, como adaptao de rotinas de trabalho, perdas de dados ou outros valores devido a falhas no software ou a vrus, como o recente I LOVE YOU, que por sinal no danificou nenhum sistema Linux. Alegar que o valor de uma licena de software, exclusiva por mquina, no parcela significativa na soluo global, encerra o debate com qualquer consumidor. Instalar ou atualizar o Linux de qualquer das grandes distribuies, com a liberdade para copiar ilimitadamente, com preos unitrios muito acessveis, tem sido um dos pilares da sua meterica expanso. Isso pblico e notrio, principalmente para as empresas, que sempre se preocupam em minorar seus custos de produo, representando uma economia fundamental na luta para manter a competitividade. Quando elas analisam rigorosamente outros quesitos como treinamento, desenvolvimento, suporte e mo-deobra, o resultado o espelho do que se v na mdia em todo o mundo: Linux. O Linux roda em antigos 386 e 486 com funcionalidade mnima. Claro que nos 386 e 486 a funcionalidade da atual verso do Linux restrita, mas plenamente possvel transformar uma mquina dessas em um servidor proxy para acesso remoto, um gateway de mail, um terminal de entrada de dados ou diversas outras aplicaes. De fato difcil rodar um ambiente grfico complexo como o KDE ou o GNOME em um 386 ou 486, mas sempre se pode contar com alternativas, como o Blackbox ou o IceWM. Ou mesmo interfaces em modo texto, mais do que suficientes em mquinas servidoras, que em geral dispensam at mesmo o monitor de vdeo. Fonte: mitos/ http://pliniotorres.wordpress.com/2007/03/05/linux-na-pratica-verdades-e-

1.3 Caractersticas do Sistema

IntroduoaoLinuxGuilhermeEsmeraldo

10

11 Suas principais caractersticas incluem: Multitarefa: vrias aplicaes podem ser executadas ao mesmo tempo; Multiusurio: Vrios usurios podem utilizar o sistema ao mesmo tempo; gratuito, atualizaes freqentes e desenvolvido voluntariamente por programadores experientes e colaboradores que visam a constante melhoria do sistema; Convive harmoniosamente no mesmo computador com outros sistemas operacionais; No exige um supercomputador para rodar; No necessrio licena para o seu uso; Maior estabilidade em relao ao Windows; Maior confiabilidade; No precisa ser reinicializado devido instalao de programas ou configurao de perifricos; Acessa discos formatados por outros sistemas operacionais; Suporte a linguagens de programao; No existem vrus no linux; Roda aplicaes windows atravs do WINE; Ambiente Shell; Suporte a diversos dispositivos e perifricos disponveis no mercado; Cdigo fonte aberto, isso significa que se voc for um programador, pode modificlo para se adequar a necessidades especficas, algo impossvel de ser conseguido com o Windows. Fonte: http://alabi.net/bb2008/Apostila_BB_2008_Parte_1.pdf

1.4 Distribuies
As diversas distribuies Linux diferem por vrias motivos, incluindo tcnicos, organizacional e filosfico. IntroduoaoLinuxGuilhermeEsmeraldo 11

12 As variaes tcnicas incluem o suporte de diferentes dispositivos de hardware e sistemas ou configuraes dos pacotes do software. As diferenas organizacionais podem ser motivadas por decises tcnicas ou tambm por razes filosficas ou at mesmo histricas. Algumas distribuies especializam-se no uso em desktops, servidores ou roteadores. Outros critrios incluem a segurana, inclusive a rapidez da disponibilidade de atualizaes de segurana; facilidade de trabalhar com o gerenciador de pacotes; e o nmero de pacotes binrios disponveis. Conhea as Distribuies do Linux e escolha qual se adapta a seu perfil de usurio. Seguem algumas.

1.4.1 Red Hat


Desde o comeo, a empresa Red Hat vem atuando no mundo Linux como nenhuma outra distribuio. Caracterizada por uma pessoa sombra com um chapu vermelho, ela foi uma das pioneiras no tratamento srio do Linux. Sua equipe no apenas ajuda na distribuio em si, mas tambm no prprio Linux: muita contribuio no desenvolvimento do GNOME, do kernel, dos compiladores GNU, kernel e muito mais). Devido essa forte base, vrias outras distribuies se basearam no Red Hat para serem criadas, como por exemplo: Conectiva, Mandrake, SuSE, entre outros. Criadora do RPM (antes Red Hat Package Manger, e agora RPM Package Manager), um dos gerenciadores de pacotes mais usados na atualidade, a Red Hat atualmente dividiu-se em duas partes: empresarial e comunidade. A antiga distribuio Red Hat acabou sendo fechada apenas como um produto Enterprise, vendido para empresas um certo custo e uma nova distribuio foi feita a partir dessa separao: o Fedora, que serve como base para a verso Enterprise. Com isso a empresa conseguiu abrir mais o seu produto para a comunidade e ganhar uma boa base para poder lidar com as empresas corporativas. Isso tudo sem descomprometer-se com a filosofia do cdigoaberto: os fontes da verso Enterprise esto disponveis para qualquer um, e inclusive existem distribuies livres e gratuitas baseadas neste fonte. A Red Hat voltada para o desktop GNOME (mas no deixa de ter o KDE e o XFCE) e tem como ponto forte a facilidade no manuseio de suas configuraes. Muita gente diz que uma distribuio lenta pelo fato dela vir com muita coisa na instalao e s vezes requer algumas personalizaes para ficar legal. Site: http://www.redhat.com/

1.4.2 Slackware
Podemos dizer que o Slackware uma das mais famosas distribuies para Linux. O seu criador, Patrick Volkerding, lanou a primeira verso da distribuio em Abril de IntroduoaoLinuxGuilhermeEsmeraldo 12

13 1992 e desde ento segue uma filosofia bem rgida: manter a distribuio o mais parecido com o UNIX possvel. As prioridades da distribuio so: estabilidade e simplicidade. O Slackware tem uma fama de ser difcil de usar, mas isto no bem uma verdade. Existem muitas distribuies mais fceis de se usar, mas nada melhor do que uma um pouco mais difcil para aprender muito mais! Ele possui uma interface de instalao bem amigvel, alm de uma srie de scripts que ajudam na instalao e desinstalao de pacotes. O problema que muitos pensam que tm de se pegar as fontes dos programas, compil-los, instal-los para depois usar no Slackware, mas isso no verdade! O sistema padro de pacotes do Slackware o .tgz (que ao contrrio do que muitos pensam, no igual ao .tar.gz, pois contm algumas informaes adicionais sobre a instalao). Isso facilita e muito o trabalho. Mas como no h uma diversidade de programas disponveis como h nos pacotes DEB ou RPM, algumas coisas devem sim ser compiladas e instaladas. O Slackware pode ser uma alternativa tanto para usurios iniciantes como para os j experientes. As opes de instalao permitem que o usurio possa instalar em sua mquina uma distribuio que tem como caractersticas uma grande variedade de desktops (gerenciadores de janelas como o Gnome, KDE, Window Maker, Enlightenment, fvwm), ou como um poderoso servidor com todos os recursos necessrios (utilitrios de rede, servidores http, noticias, e-mail, ftp, etc). Os pacotes sempre esto em atualizao, mantidos por uma verso especial da distribuio: o slackware-current. Isto desfaz o mito de que o slackware no uma distribuio dinmica. Todos aqueles aplicativos esto disponveis e so atualizados regularmente. Ento o nico potencial que o Slackware ainda no tem um gerenciamento de pacotes que permita uma checkagem de dependncias Fora isso, ela atende todas as boas exigncias facilmente! Voc poder obter mais informaes e fazer o download desta distribuio atravs da pgina oficial que fica no seguinte endereo: Site: http://www.slackware.com/

1.4.3 Debian
Talvez a filosofia do Debian seja o ponto que mais chama ateno nesta popular distribuio! No incio, antes do Linux ser lanado oficialmente por Linus Torvalds, o projeto GNU j tinha vrias ferramentas Unix-like disponveis. O que faltava era um kernel e ento quando Linus Torvalds lanou o seu kernel Linux, resolveram ento criar o GNU/Linux. No, no outro sistema diferente, s um nome para chamarem as distribuies que usam o kernel Linux e que tm ferramentas feitas pelo projeto GNU. Mas o que isso tudo tem haver com o Debian? O Debian GNU/Linux uma distribuio que segue toda esta filosofia do projeto GNU, oficialmente contendo apenas pacotes com programas de cdigo-fonte livre, feito por voluntrios espalhados IntroduoaoLinuxGuilhermeEsmeraldo 13

14 pelo mundo e sem fins lucrativos alguns. Apesar de atualmente o Debian ser usado com o kernel Linux, ele se entitula como um sistema operacional que pode usar no apenas o kernel do Linux em si, mas outros kernels como o Hurd (projeto de kernel livre feito fora do escopo do Linux). Isso o faz o Sistema Operacional Universal, pois o principal objetivo deles fazer um sistema que rode em todos os lugares e com vrios kernels. E claro, isso tudo na filosofia GNU. O Debian tem uma quantidade incrvel de pacotes pr-compilados para vrios tipos de arquiteturas. Ele conta com mais de 7000 pacotes, que facilitam e muito a instalao e gerenciamento de programas no sistema. Alm do mais, ele o pai do apt, a ferramenta de atualizao de pacotes automtica, feita pela internet. Mas h quem diga que o Debian ainda tem muito o que melhorar: Uma instalao complicada e fanatismo so alguns pontos fracos que muita gente encontra nesta distribuio. Site: http://www.debian.org/

1.4.4 Conectiva
Uma empresa de servios ISP, que trabalhava com Linux, resolveu desafiar a rotina e comeou a criar uma distribuio baseada na RedHat. Esta empresa brasileira criou (at onde eu saiba) a primeira distribuio brasileira, o Conectiva Red Hat Linux. A primeira verso se chamou Parolin e no continha muita coisa alm de tradues da distribuio Red Hat. Porm, seu desenvolvimento foi crescendo e resolveram partir para um rumo prprio, fazendo suas prprias alteraes e ideologias na distribuio em uma rota diferente da empresa americana Red Hat. Ento surgiu o Conectiva Linux. A partir do ano de 1999, a popularidade do Linux comeou a explodir no Brasil. E o Conectiva Linux, que j estava na sua verso 3.0, ficou muito popular entre os usurios brasileiros e foi isso que fez com que a empresa conseguisse investir mais ainda na distribuio. O Conectiva Linux se tornou uma boa e popular distribuio brasileira, que provou ser to boa quanto as estrangeiras. H quem aponte seus pontos fortes e fracos Apesar de ter tomado um rumo diferente ao da Red Hat, sua distribuio ainda se baseia nos conceitos bsicos da americana, assim como muitas outras baseadas na Red Hat. Mas muita coisa boa foi feita para melhorar a distribuio, como a criao do apt (ferramenta de atualizao de pacotes) para pacotes RPM, o GNU parted (particionador), tradues diversas para o portugus, entre outras coisas. O objetivo da distribuio tornar fcil as coisas para os usurios novos, sem comprometer muito o andamento do sistema. Recentemente, a empresa Conectiva se juntou francesa Mandrake e juntos comearam a fazer a distribuio Mandriva: uma juno das duas. IntroduoaoLinuxGuilhermeEsmeraldo 14

15 Site: http://www.conectiva.com.br/

1.4.5 Mandrake
Esta empresa francesa resolveu apostar no Linux como um sistema fcil para todos! E esse o objetivo principal da empresa, criar uma distribuio fcil para todos os tipos de pessoas usarem. Baseada na americana Red Hat, o Mandrake vm com vrios programas de configurao fceis de serem utilizados e bem teis. Durante o crescimento brusco do Linux mundialmente, o Mandrake adquiriu muitos fs e uma popularidade incrvel principalmente na Amrica do Norte, atravs de sua interface fcil e dinamismo. A empresa quase ficou falida, mas com a ajuda da comunidade e uma boa estratgia comercial, ela conseguiu ressurgir das cinzas e agora se juntou Conectiva para criar a juno das duas distribuies: Mandriva! Site: http://www.mandrivalinux.com/

1.4.6 Fedora
O Fedora talvez, a melhor proposta de uma distribuio baseada na comunidade junto com o Debian. Esta distribuio derivada da Red Hat, que antes tinha seu desenvolvimento feito apenas internamente e que resolveu abrir as suas portas para toda a comunidade, criando assim o Fedora Core. Em todos os modos, o Fedora um tipo de Red Hat, mesmo porque a empresa Red Hat pega o Fedora e o transforma em sua linha de produtos Red Hat Enterprise Linux (RHEL). O que mudou que agora a Red Hat no manda mais totalmente no projeto. Vrias pessoas da comunidade se integram na equipe de desenvolvimento e grandes progressos foram obtidos atravs desse modelo. Hoje o Fedora conta com muitos pacotes disponveis em RPM (formato de empacotamento nativo) e ferramentas de configurao que facilitam e muito a vida de um administrador de sistemas ou um usurio final. Alm da distribuio em si, h tambm vrios projetos da comunidade que apoiam o Fedora e influenciam bastante os usurios da distribuio. Site: http://fedoraproject.org/

1.4.7 CentOS
O CentOS uma distribuio baseada nos fontes do Red Hat Enterprise Linux. IntroduoaoLinuxGuilhermeEsmeraldo 15

16 Quando a Red Hat fechou sua distribuio Red Hat (criando a verso Enterprise e liberando a verso comunitria Fedora), ela seguiu a filosofia do cdigo-aberto e deixou disponvel os fontes da distribuio. Algumas pessoas se juntaram, empacotaram estes fontes e criaram uma distribuio clone do Red Hat Enterprise Linux, que contm a mesma coisa e s muda o nome: CentOS. Com o tempo a distribuio ganhou prestgio e hoje em dia bastante utilizada no mercado, como alternativa livre para o Red Hat Enterprise Linux. Site: http://www.centos.org/

1.4.8 SUSE
A SuSE (no, no a amiga da Barbie!) era uma empresa alem que foi comprada pela Novell e se tornou ao longo do tempo uma das distribuies corporativas mais utilizadas, disputando com a Red Hat. No incio, a SuSE baseava sua distribuio no Slackware, mas logo depois tomou rumo diferente, comeando a implementar os pacotes com o RPM e fazendo mudanas na forma de organizao do sistema. Criaram tambm uma ferramenta de configurao do sistema chamada YaST, que facilita e muito mexer nas configuraes da distribuio. As pessoas achavam que o nico problema da SuSE era que ela mantinha algumas ferramentas proprietrias e mantinha seu produto sempre pago Mas isso comeou a mudar depois de sua aquisio pela Novell, que parece estar contribuindo ainda mais para a comunidade do software livre desenvolvendo e liberando seus programas em licenas livres. Atualmente a distribuio SuSE usada em muitas mquinas pela Europa afora, incluindo instituies educacionais e governo. Sem dvida uma distribuio notvel, porm no muito usada no Brasil. Site: http://www.novell.com/linux/

1.4.9 Kurumin
O Kurumin uma distribuio brasileira baseada no Knoppix, que por sua vez baseada na distribuio Debian. A proposta do Kurumin fazer uma personalizao do Linux capaz de rodar diretamente do CD (sem precisar instalar, mas mesmo assim se o usurio quiser, ele instala) e com muitas facilidades para os usurios iniciantes. Sem dvida alguma, o Kurumin fez parte do crescimento do Linux no Brasil, pois foi com ele que muitas pessoas comearam a ver como um desktop Linux pode ser bonito e usvel. Esta distribuio se propagou bastante e ajudou a divulgar mais ainda o Linux. IntroduoaoLinuxGuilhermeEsmeraldo 16

17 Site: http://www.guiadohardware.net/kurumin/

1.4.10 Ubuntu
Depois de vender uma empresa de certificados de segurana, um empresrio simpatizante do software livre resolveu fundar a Canonical, que por sua vez utilizou o Debian como base e criou a distribuio Ubuntu. O Ubuntu veio como uma forma de popularizar o Linux, como um Debian cheio de facilidades e muito funcional. Com o Ubuntu voc encontra todas as funcionalidades do Debian j prontas e integradas para o usurio final, obtendo assim facilidade, compatibilidade e poder (!). O Ubuntu por padro vem com o desktop GNOME, mas existe um projeto paralelo e afiliado ao Ubuntu: o Kubuntu, que s faz trocar o desktop de GNOME, para KDE ;) Site: http://www.ubuntu.com/

1.4.11 Gentoo
O Gentoo veio com uma proposta diferente de todas as outras distribuies: Ao invs de fornecer aos seus usurios os programas j prontos para o uso, ele disponibiliza um sistema automtico que baixa da Internet os arquivos de um programa, compila de acordo com sua prpria mquina e instala no sistema. O processo acaba se tornando muito mais lento do que instalar um pacote j pronto, mas a vantagem que o programa fica otimizado para a sua mquina e por isso h um pequeno ganho de desempenho. S no recomendo voc instalar uma distribuio como o Gentoo em mquinas velhas e lentas, a no ser que voc queira esperar alguns dias para compilar muitas coisas :) Ok ok, as vezes ser paciente bom! Site: http://www.gentoo.org/

1.4.12 LTSP
LTSP, ou Linux Terminal Server Project, um projeto de um pacote com uma minidistribuio para thin clients (ou clientes finos). Para quem no conhece o que isso, s dar uma olhada nos famosos telecentros, que geralmente utilizam LTSP. Com este pacote, voc consegue rodar maquinas sem HD, utilizando todos os dados por uma rede. As interfaces e programas so todos instalados em um servidor e as mquinas acessam este servidor.

IntroduoaoLinuxGuilhermeEsmeraldo

17

18 Isso til principalmente quando voc tem vrias mquinas velhas. Usando o LTSP, voc pode reaproveitar essas mquinas velhas e rodar LTSP nelas. Com isso voc poder usar programas mais pesados em mquinas velhas como um 486. Site: http://www.ltsp.org/

1.4.13 ZipSlack
O zipslack um mini-Slackware, feito para rodar numa partio DOS/Windows. Atravs desta verso especial, possvel qualquer um pegar na internet um arquivo em formato .zip, descompact-lo no diretrio c:\linux e usar o linux vontade! Para realizar este feito, usa-se o sistema de arquivos UMSDOS e atravs do utilitrio loadlin (substitui o LILO), o kernel carregado. O arquivo do zipslack vem bem enxuto, mas voc pode rechear simplesmente pegando os pacotes .tgz e instalandoos com o comando installpkg pacote.tgz e com isso voc pode instalar o sistema X, junto com os Gerenciadores de janelas e tambm servidores como o Apache. Por que o nome zipslack? Esta mini-distribuio foi feita para se rodar em um disco de zipdrive e tem um limite de 100MB. Claro que voc pode optar em no utilizar um zipdrive e assim poder usar o espao que quiser, mas um recurso muito bom para alguns utilitrios bsicos que voc pode carregar para todo lugar junto com o disquete e drive do zipdrive. O site oficial dele o mesmo que o do Slackware. Site: http://www.slackware.com/

1.4.14 Linux From Scratch (LFS)


O Linux From Scratch um projeto interessantssimo para quem quer ver fundo como funciona a criao de uma distribuio Linux. O autor no estava satisfeito com nenhuma distribuio que tinha usado e resolveu criar uma pra ele mesmo. a que entra o esprito: ele fez um tutorial passo-a-passo de como ele montou a distribuio dele e compartilhou com todos. Assim, com estas instrues, qualquer um pode montar sua prpria distribuio. O nome Linux From Scratch significa Linux do Zero em ingls e muito bom! As instrues continuam sempre crescendo e em constante atualizao. Inclusive h variaes do LinuxFromScratch, criando distribuies com focos diferentes. So verdadeiros livros para ler, praticar e aprender todo o funcionamento de uma distribuio Linux. Site: http://www.linuxfromscratch.org/

1.4.15 Outras distribuies

IntroduoaoLinuxGuilhermeEsmeraldo

18

19 Existem centenas de distribuies disponveis por a afora. Assim no possvel listar todas aqui. Felizmente para preencher essa lacuna temos um site muito bom chamado DistroWatch (http://distrowatch.com/), que lista praticamente todas (seno, as principais) as distribuies existentes, d informaes sobre elas, verses de programas, links, e muito mais. um timo recurso para conhecer essa diversidade. Um site interessante, no qual voc responde um questionrio (em ingls), e no final do teste, aparecem quais distribuies do Linux mais se encaixam com o q vc precisa, com o q vc procura: http://www.zegeniestudios.net/ldc/index.php. De acordo com o prprio site, j foram realizados mais de 1 milho de testes. Fontes: http://jonathasonline.wordpress.com/2007/02/19/qual-distribuicao-linux-instalar/ http://www.devin.com.br/eitch/tlm4/s1-qual-distro-instalar.html

IntroduoaoLinuxGuilhermeEsmeraldo

19

20

Captulo 2 Linha de Comando


2.1 Introduo ao Shell
O shell um mdulo que atua como interface usurio - sistema operacional, possuindo diversos comandos internos que permitem ao usurio solicitar servios do sistema operacional. O shell tambm implementa um linguagem simples de programao que permite o desenvolvimento de pequenos programas (os famosos shell scripts).

2.1.1 Um pouco de histria


Agora que ns j sabemos o que o shell, vamos ver um pouco de sua histria. Desenvolvido por S.R Bourne em 1975, o Bourne Shell foi um dos primeiros shells desenvolvidos. Por ser bastante bastante simples ele continua sendo at hoje um dos mais rpidos e mais leves. A evoluo do Bourne Shell foi o C Shell. Desenvolvido por Bill Joy ele apresentava como inovaes o histrico de comandos, o alias (que permite usar um "apelido" para comandos complexos) e o controle de processos em foreground e background. Mas a caracterstica principal do C Shell era a semelhana de sua sintaxe com a da linguagem C. Recentemente tivemos o desenvolvimento do Turbo C Shell, que apresenta algumas melhorias em relao ao C Shell. Na busca da implementao do das caractersticas positivas do Bourne Shell e do C Shell, surgiu o Korn Shell, desenvolvido por David Korn. O Bash (Bourne Again Shell) surgiu como uma reimplementao do Bourne Shell realizada pelo Projeto GNU (www.gnuproject.org). Apresentando melhorias em relao ao Bourne Shell, esse shell se popularizou pela expanso em sistemas GNU/Linux e portanto, nele que iremos nos basear para o desenvolvimento desse artigo.

2.1.2 Caractersticas
Seguem algumas catactersticas do shell: Nos prompts do Linux, quando se acaba com o smbolo $, isto quer dizer que voc IntroduoaoLinuxGuilhermeEsmeraldo 20

21 est logado com um usurio normal. Se voc estiver logado com o root, ao invs do smboloa $, no final do prompt existir o smbolo #; Nos nomes dos arquivos, os caracteres MAISCULOS e minsculos fazem a diferena. Isso quer dizer que por exemplo: os arquivos PROGRAMA.tar.gz e programa.tar.gz so dois arquivos completamente diferentes! Ou ento: ls um comando e LS um erro; No Linux, no existem extenses .EXE, .COM especial para programas executveis. Ao invs disso, os arquivos tm permisso de executvel ou no; Alm de arquivos comuns, no Linux existem os chamados links simblicos, que so nada mais nada menos que uma espcie de atalhos; O Linux um sistema multi-tarefa, por isso, ele pode ser acessado por vrios consoles ao mesmo tempo, assim como pode ser rodado vrios programas ao mesmo tempo. Para mudar o console do 1 a 6, utilize Alt-FN, onde o N corresponde ao nmero do console. Exemplo: Alt+F1, Alt+F2, Alt+F3, Alt+F4, Alt+F5 e Alt+F6; Depois de logado, se quiser sair, utilize o comando exit, ou o comando logout ou ainda a combinao de teclas Ctrl+D. Exite um recurso muito interessante nos shells do Linux, que o tab completion. Com ele voc pode completar comandos ou nomes de arquivos mais rapidamente sem precisar digitar tudo. Para utilizar esse recurso, basta apenas digitar as primeiras letras do comando ou arquivo e apertar a tecla Tab. O Linux ir completar o comando ou arquivo para voc. Caso haja mais de um arquivo comeando com as letras que voc digitou, apertando Tab mais uma vez ir lhe dar todas as opes.

2.1.3 Listando e se movimentando no shell


Agora vamos comear com alguns comandos bsicos do shell: $ pwd Mostra o diretrio atual. $ ls Lista os arquivos (no ocultos) dentro do diretrio atual, ou seja, todos os arquivos comeando com "." no sero listados, que em geral so arquivos de configurao. $ ls -a Lista todos os arquivos (inclusive os ocultos). IntroduoaoLinuxGuilhermeEsmeraldo 21

22 $ ls -l Lista os arquivos no ocultos, mostrando o tamanho e as permisses de usurios. $ ls -la Lista todos os arquivos, mostrando o tamanho e as permisses de usurios. $ cd Muda o diretrio para o seu diretrio de usurio. $ cd nomedir Muda para o diretrio "nomedir", desde de que este esteja dentro do diretrio atual. $ cd /nomedir1/nomedir2 Muda pra o diretrio "nomedir2" dentro do diretrio "nomedir1", que por sua vez est no diretrio raiz ("/"). OBS: Se voc quiser entender melhor o sistema de arquivos do Linux, leia a prxima seo. $ cd .. Muda para um diretrio acima do diretrio atual. $ cd Muda para o diretrio acessado anteriormente ao diretrio atual. $ cd $ cd ~ Muda para o volta para o diretorio do usurio. OBS: O smbolo ~ referencia a pasta do usurio.

2.1.4 Manipulando diretrios e arquivos


Depois das lies anteriores, acredito que seja hora de comearmos a aprender alguns comandos bsicos de manipulao, como por exemplo, copiar, colar, renomear, criar diretrio, etc. Veja alguns comandos logo abaixo: 2.1.4.1 Diretrios IntroduoaoLinuxGuilhermeEsmeraldo 22

23 $ mkdir /home/nomedir Cria o diretrio "/home/nomedir". $ mkdir nomediretrio Cria o diretrio "nomedodiretrio" dentro do diretrio atual. $ mkdir teste{1,2,3,4} Cria os diretrios: teste1, teste2, teste3 e teste4. $ mkdir p dir1/dir2 Cria o diretrio dir2 dentro de dir1. Se dir1 no existir, ser criado automaticamente. $ tree Mostra pastas/arquivos de forma hierrquica. $ rmdir /home/nomedir Remove o diretrio nomedir, desde que ele esteja vazio. $ rmdir nomediretrio Remove o diretrio "nomedodiretrio" (desde que esteja vazio) dentro do diretrio atual. $ rmdir p dir1/dir2 Comando semelhante ao mkdir p, porm para remoo. Remove dir2 e, em seguida, dir1, desde que estejam vazios. $ rm r diretrio1 Remove o diretrio diretrio1 e todo o seu contedo (inclundo outros diretrios). $ rm rf diretrio1 Semelhante ao commando anterior. A diferena que ir atuar no modo force (no ir questionar o usurio sobre a remoo de arquivos/diretrios) OBS: Muito cuidado ao usar este comando, pois arquivos e diretrios importante podem ser perdidos! $ mv /home/nomediretrio/* /home/nomediretrio2/* IntroduoaoLinuxGuilhermeEsmeraldo 23

24 Transfere o contedo do diretrio "/home/nomediretrio" para o diretrio "/home/nomediretrio2". $ mv nomediretrio nomediretrio2 Renomeia o diretrio "nomediretrio" para o diretrio "nomediretrio2". $ cp r dir1 dir2 Copia o diretrio dir1 para dir2, incluindo subdiretrios. 2.1.4.2 Arquivos $ cat arquivo1 Exibe contedo de arquivo1 $ cat arquivo1 arquivo2 Exibe contedos concatenados de arquivo1 e arquivo2, respectivamente. $ tac arquivo1 Faz o mesmo que cat, porem exibe o contedo em ordem inversa (da ltima para a primeira linha). $ touch nomedoarquivo Cria um arquivo vazio chamado nomedoarquivo $ touch dir1/nomedoarquivo Cria um arvquivo vazio chamado nomedoarquivo dentro do diretrio dir1. OBS: Outra forma de criar arquivos seria utilizar editores de texto. No linux existem diversos editores, entre eles: VI, VIm, Pico, Nano, Elvis, Emacs, GEdit, KWrite, Kate, etc. Todos seguem suas prprias filosofias (apresentao, teclas de atalhos, suporte, etc.) e podem estar presentes ou no em vrias distribues (exceto VI que universal. Ver Captulo 3.). $ cp arquivo1 arquivo2 Faz uma cpia de arquivo1 para arquivo2 $ cp arquivo1 dir1/arquivo2 Faz uma cpia de arquivo1 dentro do diretrio dir1. Esta copa ser nomeada IntroduoaoLinuxGuilhermeEsmeraldo 24

25 arquivo2. $ rm arquivo1 Remove o arquivo arquivo1 $ rm i arquivo Solicita uma confirmao do usurio antes de remover o arquivo.

2.1.5 Comandos adicionais


$ history Mostra todos os comandos digitados. $ clear Limpa terminal. $ man nomedoprograma Pginas de Manual do programa nomedoprograma. $ find / -name nomedoarquivo Pesquisa no sistema um arquivo chamado nomedoarquivo. $ whereis nomedoprograma Localiza o executvel, arquivo/diretrio de configurao, diretrios de bibliotecas, arquivos compartilhados, cdigo-fonte e caminha da pgina de manual de nomedoprograma. $ which nomedoprograma Exibe o caminho completo para o comando selecionado. $ grep expresso arquivo Procura um padro (expresso) dentre de arquivo. Se encontrar, exibe na tela. $ head n 10 arquivo Exibe as 10 primeiras linhas de arquivo $ tail n 10 Exibe as 10 ltimas linhas de arquivo $ more arquivo1 IntroduoaoLinuxGuilhermeEsmeraldo 25

26 Pagina o contedo de arquivo1 na tela, quando o mesmo muito grande para ser exibido. A rolagem s poder ser de cima para baixo. $ less arquivo1 Semelhante ao comando anterior, com a diferena ser possvel rolar o texto para cima e/ou para baixo. $ df -h Exibe informaes sobre as parties do sistema. $ du sh dir1 Exibe quanto de espao no disco o diretrio dir1 ocupa.

Fonte: http://www.vivaolinux.com.br/artigo/Uma-introducao-ao-shell-(parte-1)

2.2 rvore de diretrios


Os sistemas UNIX so estruturados a partir do seu sistema de arquivos, ou seja, tudo o que pode vir a ser manipulado dentro do sistema operacional tratado com arquivo (isso inclui processos, dispositivos de hardware e, como era de se esperar, os arquivos comuns tambm).

2.2.1 Linux Standard Base


Os sistemas GNU/Linux possuem um padro rgido e especfico a respeito da organizao hierrquica dos diretrios. Essa padronizao pode ser encontrada na pgina da Linux Standard Base (www.linuxbase.org). Para os demais sistemas do tipo Unix propriamente ditos, no h um padro realmente oficial. Entretanto para os sistemas Unix existem inmeras proposies tcnicas sobre as estrutura de diretrios, as quais prefiro no discutir por falta de autoridade no assunto.

2.2.2 A estrutura: principais diretrios e suas funes


O diretrio principal que contm todos os demais diretrios chamado de raz e se encontra no topo da estrutura, sendo representado pelo sinal "/". Todos os demais diretrios devem ser referenciados a partir dele (exemplo: /diretrio). Dentro da estrutura do sistema de arquivos, cada um dos diretrios possui uma funo especifica.

IntroduoaoLinuxGuilhermeEsmeraldo

26

27 Alguns diretrios e suas funes: * /bin : diretrio no qual so encontradas ferramentas necessrias a operao do sistema. * /sbin : aqui podemos encontrar as ferramentas de operao e manuteno do sistema. * /etc : os arquivos de configurao do sistema se encontram nesse diretrio. * /dev : neste diretrio encontramos os arquivos relacionados aos dispositivos de hardware. Neste diretrio cada dispositivo de hardware possui um arquivo. * /home : os usurios cadastrados no sistema possuem um diretrio com seu nome dentro de /home. Em geral a nica rea acessvel aos usurios para gravarem seus arquivos. * /lib : as bibliotecas de funes do sistema se encontram aqui (so as bibliotecas de alocao dinmica do Linux). * /mnt : diretrio utilizado para conexo com volumes presentes em outros computadores da rede ou para acessar dispositivos removveis. * /tmp : aqui se encontram os arquivos temporrios montados pelo sistema. * /usr : os arquivos de cada usurio se encontram contidos neste diretrio. Este diretrio muito importante, pois nele se encontra basicamente tudo que o usurio vai utilizar (editores de texto, ferramentas, navegadores, ambientes grficos e os demais aplicativos voltados para os usurios). * /var : aqui se encontram informaes variveis do sistema (spool de impressora, caixas postais, logs do sistema, ...). Fonte: Linux/ http://www.vivaolinux.com.br/artigo/Entendendo-o-sistema-de-arquivos-do-

IntroduoaoLinuxGuilhermeEsmeraldo

27

28

Captulo 3 Editor VI/VIm


3.1 Introduo
O Vim o sucessor mais difundido do vi, que filho do ex com o ed, que por sua vez so filhos do qed, e por a vai. O "vi" a sigla de Visual Interface. Note que naquela poca (incio dos anos 80), no era comum como hoje, voc ter um editor de textos visual, ou seja, voc ver na tela o texto que est sendo editado. Tente imaginar como editar um texto sem v-lo. Quer tentar? Experimente o editor ed, presente em qualquer distribuio Linux. Muito mais tarde, em 1992, apareceu no mundo Unix um concorrente do vi, o Vim (de "Vi IMitator", o imitador do vi) e logo se tornou popular, pois alm de ser um clone muito bem feito do vi, possua muitas outras funcionalidades, como uso da tecla TAB para completar nomes de arquivos, vrios nveis de "undo" (desfazer comando), reconhecimento de sintaxe e histrico de linha de comando. Ento de "imitator" ele passou a ser chamado de "Vi IMproved", o vi melhorado. O Vim se tornou padro em sistemas Linux, onde o /bin/vi uma ligao simblica para o /usr/vim, e conseqentemente, a grande maioria usa Vim, mas acha que usa vi. Acabaram quase que virando sinnimos, mas, lembre-se, vi diferente de Vim, e sobre Vim que este artigo comentar. Apesar do Vim ser um editor de textos extremamente voltado para programao, ele tambm poderoso para editar textos comuns (como esse) e possui muitas funcionalidades avanadas que outros editores grficos como o Microsoft Word tm, como abrir vrios arquivos ao mesmo tempo, autocorreo, auto-identao, seleo visual, macros e outras que outro editor nem sonha ter, como seleo vertical de texto, interao total com o sistema operacional, uso de expresses regulares, sintaxe colorida, etc. O Vim no uma exclusividade de sistemas Unix, ele j foi portado para vrias outras plataformas, como Amiga, MacOs, SunOs, DOS, Windows e muitas outras. E como atrativo maior para os usurios novatos, tambm existe o gVim, para usar no X, com o mouse, menus, botes e todas as facilidades de uma aplica o grfica. Sendo o gVim apenas uma interface mais amigvel do Vim, todas as funcionalidades deste funcionam naquele. Fonte: http://aurelio.net/vim/vi-vim-venci.html

IntroduoaoLinuxGuilhermeEsmeraldo

28

29

3.2 Iniciando
Iniciar uma sesso do vi simples. Digite $ vi e o vi abrir um arquivo vazio para voc comear a trabalhar. Alternativamente, voc pode especificar o arquivo a ser aberto na prpria linha de comando, dessa forma: $ vi meuarquivo No se preocupe com os ~ no editor - eles so apenas indicadores visuais do fim do seu arquivo e no aparecem no seu documento. A primeira (e mais confusa) coisa sobre o vi so os vrios diferentes modos nos quais o editor pode operar. Para os nossos propsitos, eu vou separ-los em duas amplas categorias: "modo de edio" (insert mode) e "modo de comando" (command mode). O "modo de edio" aonde voc vai passar a maior parte do seu tempo - ele permite adicionar (ou inserir) texto no seu documento. O "modo de comando", por outro lado, permite que voc se mova pelo documento, apague ou substitua blocos de texto e acesse funes teis do vi como buffers, por exemplo. Quando o vi iniciado, ele geralmente est em modo de comando. Para entrar no modo de edio digite i o vi mostra um aviso da troca de modos no canto inferior esquerdo. Agora voc pode digitar o texto no documento de maneira normal. Quando tiver terminado, aperte ESC para retornar ao modo de comando. Para comear a inserir texto numa linha nova, use o para entrar no modo de edio com o cursor j posicionado na prxima linha, ou O para entrar no modo com o cursor na linha anterior. Alm de inserir texto, o vi tambm permite que voc sobrescreva um texto existente isso chamado de "modo de substituio" (replace mode), que pode ser acessado digitando-se R no modo de comando. Tudo que voc digitar agora ser "escrito por cima" do texto existente. Se a sua inteno era substituir um nico caractere - por exemplo, para corrigir um erro de digitao - use r para substituir um nico caractere; o editor retornar automaticamente para o modo de IntroduoaoLinuxGuilhermeEsmeraldo 29

30 comando quando o caractere for substitudo. Obviamente, em algum momento, voc vai precisar salvar o seu trabalho. No vi, isso feito via o comando de "escrita" (write), abreviado para :w Para sair, use o comando :q O vi tambm permite que se combine comandos. Por exemplo, tente :wq para salvar seu documento e sair do programa. Alternativamente, se voc quiser descartar seu texto use :q! que sai do vi sem salvar nenhuma alterao do arquivo sendo editado. Obviamente, todos esses comandos com ":" devem ser executados no modo de comando. Tentar utiliz-los no modo de edio os far aparecer como parte do seu documento.

3.2 Vamos danar!


Agora que voc j sabe editar um texto, est na hora de ensin-lo a segunda coisa mais confusa do vi: se movimentar pelo documento. Para aproveitar melhor essa lio, eu sugiro que voc abra um documento j existente ou crie um novo e digite algumas linha nele. Certifique-se que voc est no modo de comando teclando ESC algumas vezes quando tiver terminado. As teclas de movimento do vi so: h = esquerda, j = baixo, k = cima, l = direita. Em alguns consoles UNIX, tambm pode ser possvel usar as setas do teclado para se movimentar pelo documento; entretanto, eu sugiro que voc tente memorizar a lista acima pois elas vo funcionar em qualquer situao. Gostaria de se mover entre as palavras? Use w para mover uma palavra para frente, ou b para mover uma para trs. Para se mover entre pargrafos, use IntroduoaoLinuxGuilhermeEsmeraldo 30

31 { e } O movimento entra sentenas requer o uso cuidadoso de ( e ) Se voc precisa se mover at uma linha especfica do seu documento - linha 568, por exemplo use esse comando: :568 Para ir para o incio do arquivo, digite gg e para o fim, somente G [isso shift+G] E o vi tambm tem um equivalente a "Page Up e "Page Down". Use ^F [isso ctrl+F] para ir uma pgina a frente, e ^B [isso ctrl+B] para uma pgina atrs. Para saber a sua posio no documento, use ^G [isso ctrl+G] claro que essas no so as nicas teclas de movimento - existem muitas outras. No entanto, por enquanto, essas devem ser suficientes para o seu prximo exerccio.

3.3 Cortar, Copiar, Colar...


Agora vamos ver como apagar e copiar textos. Para apagar um nico caractere, posicione o curso sob ele, certifique-se que voc est no modo de comando, e tecle x para apag-lo. Para apagar uma palavra, tecle dw que a abreviao de "delete word" (apagar palavra). Para apagar uma linha inteira use dd J escritores com bloqueio criativo vo apreciar a rapidez dos comandos dgg e dG que apagam tudo da posio corrente do cursor at o comeo e fim do arquivo respectivamente.

IntroduoaoLinuxGuilhermeEsmeraldo

31

32 Oops... voc no usou esses dois, no ? No tem problema, o vi tambm possui um comando de "undo" (desfazer) muito til, que pode ser usado teclando u sempre que voc precisar desfazer algum engano. E claro, junto com o undo temos o comando de "redo" (refazer), que permite repitir aes passadas. Basta teclar . [isso mesmo, um ponto] Quando voc apaga alguma coisa no vi, o texto apagado geralmente vai parar num buffer temporrio na memria, aonde ele fica at ser substitudo. Esse texto pode ser re-inserido no seu documento com o comando de "put" (colocar). Se voc estiver acompanhando tudo j deve imaginar que o comando de "put" acessado com p Vamos l, tente. Apague uma linha, mova o cursor para um novo pargrafo e a coloque em outro lugar. Simples, e equivalente funcionalidade cortar e colar que existe em outros editores. Caso voc queira inserir o texto apagado acima da posio atual do cursor, simplesmente use P ao invs de p E quanto a copiar e colar? Tambm muito fcil: o vi usa o comando "yank" para copiar um texto de uma forma bem similar ao comando de apagar. Para copiar uma palavra, use yw J yy copia uma linha inteira e a coloca no buffer temporrio, pronta para ser colocada em outro lugar.

3.4 Um, dois, trs...


Uma das funes mais poderosas do vi repetir automaticamente um comando um nmero especfico de vezes, bastando preceder o comando com um nmero. Por exemplo, suponha que voc precisa apagar oito linhas de um documento. Baseado no que voc j aprendeu, voc usaria o comando dd oito vezes, criando essa linha de comando horrivelmente grotesca: dddddddddddddddd O que voc poderia ter feito, caso eu j tivesse dito, era 8dd

IntroduoaoLinuxGuilhermeEsmeraldo

32

33 Como voc ver ao us-lo, esse comando simplesmente executa o comando "dd" oito vezes, apagando oito linhas do documento sem que voc precise ir a uma farmcia comprar uma aspirina depois. E essa tcnica pode ser usada com quaisquer dos comandos que voc j aprendeu: voc pode utiliz-la para copiar mltiplas linhas, repetir inseres um nmero especfico de vezes, e at mesmo mover o cursor para ocorrncias especficas de palavras no documento.

3.5 Procurando por hope


O vi tambm possui funcionalidades de busca e substituio bastante poderosas, que podem se acessadas com os comandos / e ?. Digamos que voc escreveu um tratado sobre o papel interpretado por Mark Hamil em "Star Wars: A New Hope" (Guerra nas Estrelas: Uma Nova Esperana) - mas, ao revisar o seu documento, voc v que digitou erroneamente a palavra "hope" (esperana) como "dope" (narctico) em diferentes locais do texto. Obviamente voc no pode ignorar esse erro: isso levaria a uma interpretao completamente nova do filme de fico-cientfica mais querido do planeta. O que voc faz? /dope O comando /padro diz ao vi para procurar o documento pelo padro especificado; ao encontr-lo, ele vai posicionar o cursor no primeiro caractere da palavra, e aguardar novos comandos. Para buscar para trs, use o comando ?padro, assim: ?dope improvvel, at mesmo tolice da sua parte, assumir que esse erro s ocorreu uma vez. Voc pode repertir a ltima busca pressionando n ou, na lngua do vi, "next match" (prxima ocorrncia). No suficiente somente identificar o seu erro. O prximo passo, conforme a maioria das doutrinas religiosas e pastores da televiso, consert-lo e se certificar de que ele no vai acontecer de novo. O vi tambm pode ajud-lo nisso tambm, ainda que isso involva memorizar um comando que, a primeira vista, provavelmente vai te deixar perguntando se Deus existe mesmo... :1,$s/padro_a_encontrar/padro_para_substituir/g No caso de voc estar se perguntando de onde o "s" veio, a abreviao do comando "substituir". O 1 e o $ so os smbolos que indicam a faixa onde a substituio deve ocorrer - nesse caso, do incio do documento [linha 1] at o fim [$]. O "g" um flag que indica que todas as ocorrncias devem ser substitudas. Logo, no exemplo acima, o comando para substituir a palavra "dope" por "hope" :1,$s/dope/hope/g Se pelo menos conseguir o nmero do telefone da Leia fosse to fcil assim...

IntroduoaoLinuxGuilhermeEsmeraldo

33

34

3.6 Bookmarks, Buffers...


O vi tambm permite que voc defina "bookmarks" (marcadores) no seu documento para facilitar o salto entre sees especficas de arquivos grandes. Como um exemplo, considere os seguintes blocos de texto: ...este documento delineia uma proposta para a estrutura corporativa da Carros Potentes Ltda, uma companhia no negcio de produo e venda... [pgina 2] ...o presidente da Carros Potentes Ltda, James van Hausen, que, em sua adolescncia desvairada, era muito conhecido por derrubar rvores usando carssimos carros esporte, conseguiu... [pgina 137] E ento, vamos colocar alguns bookmarks? Na pgina 2, mova o cursor at a palavra "documento", e digite ma Isso coloca um bookmark, identificado pela letra "a", na posio do cursor. Agora v at a pgina 137 e adicione um bookmark chamado "b" na palavra "carros". Para voltar para a pgina 2, tudo que voc precisa fazer digitar `a e para chegar pgina 137, simplesmente digite `b Qualquer letra minscula pode ser usada como um identificador de bookmark. Obviamente, voc est limitado a um total de 26 bookmarks por arquivo - mas, na maoiria das vezes, isso mais que suficiente. Se voc precisar de mais que isso eu sugiro fortemente que voc faa terapia. Alm dos mltiplos bookmarks, o vi tambm possui mltiplos buffers. Se voc esteve prestando ateno, sabe que todo o material que voc apaga ou copia vai para um buffer temporrio at ser substitudo ou removido. Mas o vi tambm possui "buffers com nome" - como se fossem armrios, esses buffers podem ser usados para guardar diferentes blocos de texto, deixando-os disponveis para insero aonde forem necessrios. Como um exemplo, d uma olhada nesse pedao de um texto que me foi entregue por uma de minhas ex-alunas: ...coelinhas (N.T.: da Playboy americana) parecem ter uma vida muito boa. Tudo o que elas fazem ficar na praia, bebendo pina coladas e passando bronzeador. De vez em quando, elas se levantam e jogam um pouco de voleyball. Parece divertido - aonde eu assino?... Tenho certeza que vocs entendem porque eu falei "ex-aluna"...

IntroduoaoLinuxGuilhermeEsmeraldo

34

35 Agora vamos supor que eu quisesse trocar de posio as frases "bebendo pina coladas" e "passando bronzeador". Isso o que eu faria: 1. Mover o cursor para o comeo da palavra "bebendo" 2. Apagar as trs palavras e mov-las para um buffer chamdo "p" "p3dw 3. Mover o cursor para o comeo da palavra "passando" 4. Apagar essas duas palavras e mov-las para um buffer chamado "s" "s2dw 5. Mover o cursor de volta para antes da palavra "e" 6. Inserir o contedo do buffer "s" "sp 7. Mover o cursor para depois da palavra "e" 8. Inserir o contedo do buffer "p" "pp 9. Me parabenizar espalhafatosamente, como eu estou fazendo agora! Como voc pode ver, para usar um buffer, basta preceder o comando normal de copiar/apagar/substituir com o identificador do buffer. Um identificador de buffer consiste de uma aspas dupla seguida por uma letra minscula. No exemplo acima, tanto "s quanto "p so identificadores de buffers. Devo lembr-los aqui que nem os bookmarks, nem os buffers so mantidos quando voc sai do editor.

3.7 Sobre arquivos e janelas


Voc j viu que $ vi nome_do_arquivo inicia o vi com o arquivo especificado j carregado. Mas por que se restringir a um? Voc pode carregar mltiplos arquivos desta forma: $ vi arquivo1 arquivo2 arquivo3 Para alternar entre os arquivos use esses comandos: :next = vai para o prximo arquivo na lista :rewind = vai para o primeiro arquivo na lista :last = vai para o ltimo arquivo na lista Para sair de todos os arquivos de uma vez use: :qa! para sair sem salvar, ou :wqa para salvar todas as alteraes e sair. Aps j ter iniciado o vi, voc pode carregar um novo arquivo no editor com o IntroduoaoLinuxGuilhermeEsmeraldo 35

36 comando "editar", assim: :e /caminho/para/arquivo.txt Se voc preferir inserir o contedo de outro arquivo diretamente no documento que voc est editando agora existe um comando de leitura "read" feito justamente para isso. Tente: :read /caminho/para/arquivo_a_ser_inserido.txt Se voc um programador, definivamente vai gostar da funcionalidade do vi de te mostrar mltiplas vises do mesmo arquivo, que no jargo computacional chamado de "window splitting" (diviso de janelas). E o comando , naturalmente :split Cada uma das janelas criadas pode ser manipulada de forma independente das outras, apesar das mudanas feitas no arquivo ficarem imediatamente visveis em todas elas. Vamos avanar um pouco mais. Que tal carregar arquivos diferentes em cada uma das janelas? Por exemplo, no seria timo se voc pudesse carregar um arquivos HTML em uma, um script CGI associado em outra, alguma documentao de ajuda numa terceira e ter todas as trs visveis ao mesmo tempo? Bem, voc pode. Basta usar o comando "new" (novo) para criar uma nova janela para cada um dos arquivos, assim: :new form.html :new mailform.cgi :new help.txt Para alternar entre as janelas, use ^W W [isso ctrl-W seguido por um W] Fonte: http://www.inf.ufes.br/~proinfo/docs/vi/vi.xml

IntroduoaoLinuxGuilhermeEsmeraldo

36

37

Captulo 4 Gerenciamento de Processos


4.1 Introduo
Nos sistemas operacionais, um processo a forma de representar um programa em execuo. o processo que utiliza os recursos do computador - processador, memria, etc - para a realizao das tarefas para as quais a mquina destinada. Este artigo mostrar os principais conceitos relacionados a processos no Linux e as ferramentas usadas para manipul-los e gerenci-los.

4.2 Composio de um processo


O sistema operacional lida com uma infinidade de processos e, por isso, necessrio ter meios que permitam control-los. Para isso, os processos contam com um conjunto de caractersticas, dentre as quais: - Proprietrio do processo; - Estado do processo (em espera, em execuo, etc); - Prioridade de execuo; - Recursos de memria. O trabalho de gerenciamento de processos precisa contar com as informaes acima e com outras de igual importncia para que as tarefas sejam executadas da maneira mais eficiente. Um dos meios usados para isso atribuir a cada processo um PID.

4.3 PID e PPID


Um PID (Process Identifier) um nmero de identificao que o sistema d a cada processo. Para cada novo processo, um novo nmero deve ser atribudo, ou seja, no se pode ter um nico PID para dois ou mais processos ao mesmo tempo. Os sistemas baseados em Unix precisam que um processo j existente se duplique para que a cpia possa ser atribuda a uma tarefa nova. Quando isso ocorre, o processo "copiado" recebe o nome de "processo pai", enquanto que o novo denominado "processo filho". nesse ponto que o PPID (Parent Process Identifier) passa a ser usado: o PPID de um processo nada mais do que o PID de seu processo pai.

IntroduoaoLinuxGuilhermeEsmeraldo

37

38

4.4 UID e GID


Conforme j mencionado, cada processo precisa de um proprietrio, um usurio que seja considerado seu dono. A partir da, o sistema saber, atravs das permisses fornecidas pelo proprietrio, quem pode e quem no pode executar o processo em questo. Para lidar com os donos, o sistema usa os nmeros UID e GID. O Linux gerencia os usurios e os grupos atravs de nmeros conhecidos como UID (User Identifier) e GID (Group Identifier). Como possvel perceber, UID so nmeros de usurios e GID so nmeros de grupos. Os nomes dos usurios e dos grupos servem apenas para facilitar o uso humano do computador. Cada usurio precisa pertencer a um ou mais grupos. Como cada processo (e cada arquivo) pertence a um usurio, logo, esse processo pertence ao grupo de seu proprietrio. Assim sendo, cada processo est associado a um UID e a um GID. Os nmeros UID e GID variam de 0 a 65536. Dependendo do sistema, o valor limite pode ser maior. No caso do usurio root, esses valores so sempre 0 (zero). Assim, para fazer com que um usurio tenha os mesmos privilgios que o root, necessrio que seu GID seja 0.

4.5 Sinais de processos


Os sinais so meios usados para que os processos possam se comunicar e para que o sistema possa interferir em seu funcionamento. Por exemplo, se o usurio executar o comando kill para interromper um processo, isso ser feito por meio de um sinal. Quando um processo recebe um determinado sinal e conta com instrues sobre o que fazer com ele, tal ao colocada em prtica. Se no houver instrues prprogramadas, o prprio Linux pode executar a ao de acordo com suas rotinas. Entre os sinais existentes, tem-se os seguintes exemplos: STOP - esse sinal tem a funo de interromper a execuo de um processo e s reativ-lo aps o recebimento do sinal CONT; CONT - esse sinal tem a funo de instruir a execuo de um processo aps este ter sido interrompido; SEGV - esse sinal informa erros de endereos de memria; TERM - esse sinal tem a funo de terminar completamente o processo, ou seja, este deixa de existir aps a finalizao; ILL - esse sinal informa erros de instruo ilegal, por exemplo, quando ocorre diviso por zero; KILL - esse sinal tem a funo de "matar" um processo e usado em momentos de criticidade. O kill tambm um comando que o usurio pode usar para enviar qualquer sinal, IntroduoaoLinuxGuilhermeEsmeraldo 38

39 porm, se ele for usado de maneira isolada, ou seja, sem o parmetro de um sinal, o kill por padro executa o sinal TERM. A sintaxe para a utilizao do comando kill a seguinte: kill -SINAL PID Como exemplo, vamos supor que voc deseja interromper temporariamente a execuo do processo de PID 4220. Para isso, pode-se usar o seguinte comando: kill -STOP 4220 Para que o processo 4220 volte a ser executado, basta usar o comando: kill -CONT 4220 Se o sinal precisa ser enviado a todos os processos, pode-se usar o nmero -1 no lugar do PID. Por exemplo: kill -STOP -1 Como j dito, usar o comando kill isoladamente - por exemplo, kill 4220 - faz com que este use o sinal TERM por padro. Esse sinal, no entanto, pode ser ignorado pelos processos. por isso que boa prtica usar o comando "kill -9 PID" para "matar" um processo, pois o nmero nove representa o sinal kill e este no pode ser ignorado. Isso deixa claro que se voc conhecer o nmero que atribudo a um sinal, voc pode uslo no lugar de seu nome. Com exceo de alguns sinais, a numerao de cada um pode mudar de acordo com a distribuio ou com a verso do kernel. Tambm comum usar o kill da seguinte forma: kill -l PID. A opo "-l" (letra L minscula) usada para listar os processos que aceitaram o kill. Agora, imagine que voc no saiba qual o PID de um processo e tenha se esquecido que o comando ps (visto mais frente) descobre tal informao. Neste caso, pode-se usar o comando killall, desde que voc saiba o nome do processo. A sintaxe : killall -SINAL processo Por exemplo: killall -STOP vi

4.6 Estado dos processos


Quando um processo criado, isso no significa que ele ser imediatamente executado. Alm disso, determinados processos podem ser temporariamente IntroduoaoLinuxGuilhermeEsmeraldo 39

40 paralisados para que o processador possa executar um processo prioritrio. Isso quer dizer que os processos, em certos momentos, podem estar em situaes de execuo diferentes. O Linux trabalha, essencialmente, com quatro tipos de situao, isto , estados: Executvel: o processo pode ser executado imediatamente; Dormente: o processo precisa aguardar alguma coisa para ser executado. S depois dessa "coisa" acontecer que ele passa para o estado executvel; Zumbi: o processo considerado "morto", mas, por alguma razo, ainda existe; Parado: o processo est "congelado", ou seja, no pode ser executado.

4.7 Comandos nice e renice


Ao abordarmos os comandos nice e renice necessrio entender o conceito de gentileza. Um processo pode ter prioridade em relao a outros em sua execuo. Quando um processo gentil, significa que ele "oferece a gentileza" de permitir que um processo com prioridade maior que a sua seja executado antes dele. Os nveis de gentileza, tambm chamados de nice, so determinados atravs de nmeros. Quanto mais alto for o valor nice, mais gentil o processo. Geralmente, o intervalo de nmeros usados no nice so os inteiros entre -19 e 19. Embora determinar a prioridade de um processo no seja uma prtica comum, afinal, o prprio Linux faz muito bem essa tarefa, isso pode ser necessrio em alguma situao. Para isso, utiliza-se um comando que recebe o mesmo nome do conceito: nice. A sintaxe : nice -n prioridade processo Por exemplo: nice -n -5 ntpd No exemplo, o ntpd recebe prioridade -5. Trata-se de uma prioridade alta, afinal, como j dito, quanto menor o nmero menor sua gentileza. Se um determinado processo est em execuo, isso acontece com uma prioridade j definida. Para alterar um processo nessa condio, usa-se o comando renice, cuja sintaxe : renice prioridade opo processo/destino As opes do renice so: -u - a alterao ocorrer nos processos do usurio informado; -g - a alterao ocorrer nos processos do grupo indicado; -p - a alterao ocorrer no processo cujo PID for informado. IntroduoaoLinuxGuilhermeEsmeraldo 40

41 Um exemplo: renice +19 1000 -u infowester Neste caso, o comando renice alterou a prioridade do processo 1000, assim como a prioridade dos processos do usurio infowester.

4.8 Verificando processos com o ps


O ps um comando de extrema importncia para o gerenciamento de processos. Por ele, possvel saber quais os processos em execuo atualmente, quais os UIDs e PIDs correspondentes, entre outros. Se somente ps for digitado na linha de comando, geralmente o sistema mostra quais os processos do usurio. preciso usar uma combinao de opes para obter mais detalhes. As opes mais importantes so os seguintes: a - mostra todos os processos existentes; e - exibe as variveis de ambiente relacionadas aos processos; f - exibe a rvore de execuo dos processos; l - exibe mais campos no resultado; m - mostra a quantidade de memria ocupada por cada processo; u - exibe o nome do usurio que iniciou determinado processo e a hora em que isso ocorreu; x - exibe os processos que no esto associados a terminais; w - se o resultado de processo no couber em uma linha, essa opo faz com que o restante seja exibido na linha seguinte. Das opes acima, a combinao mais usada (pelo menos aqui no InfoWester) aux: ps aux Note que usando a combinao lax, o resultado mostra mais detalhes: ps lax A seguir, segue a descrio dos campos mostrados anteriormente e alguns que s so mostrados com a combinao lax: USER - nome do usurio dono do processo; UID - nmero de identificao do usurio dono do processo; PID - nmero de identificao do processo; PPID - nmero de identificao do processo pai; IntroduoaoLinuxGuilhermeEsmeraldo 41

42 %CPU - porcentagem do processamento usado; %MEM - porcentagem da memria usada; VSZ - indica o tamanho virtual do processo; RSS - sigla de Resident Set Size, indica a quantidade de memria usada (em KB); TTY - indica o identificador do terminal do processo; START - hora em que o processo foi iniciado; TIME - tempo de processamento j consumido pelo processo; COMMAND - nome do comando que executa aquele processo; PRI - valor da prioridade do processo; NI - valor preciso da prioridade (geralmente igual aos valores de PRI); WCHAN - mostra a funo do kernel onde o processo se encontra em modo suspenso; STAT - indica o estado atual do processo, sendo representado por uma letra: R executvel; D - em espera no disco; S - Suspenso; T - interrompido; Z - Zumbi. Essas letras podem ser combinadas e ainda acrescidas de: W - processo paginado em disco; < - processo com prioridade maior que o convencional; N - processo com prioridade menor que o convencional; L - processo com alguns recursos bloqueados no kernel.

4.9 Verificando processos com o top


O comando ps trabalha como se tirasse uma fotografia da situao dos processos naquele momento. O comando top, por sua vez, coleta as informaes, mas as atualiza regularmente. Geralmente essa atualizao ocorre a cada 10 segundos. A sintaxe do comando top a seguinte: top -opo Entre as opes, tem-se as que se seguem: -d - atualiza o top aps um determinado perodo de tempo (em segundos). Para isso, informe a quantidade de segundos aps a letra d. Por exemplo: top -d 30; -c - exibe a linha de comando ao invs do nome do processo; -i - faz o top ignorar processos em estado zumbi; -s - executa o top em modo seguro. possvel manipular alguns recursos do comando top atravs das teclas do teclado. Por exemplo, para atualizar imediatamente o resultado exibido, basta pressionar a tecla de espao. Se pressionar a tecla q, o top finalizado. Pressione a tecla h enquanto estiver utilizando o top para ver a lista completa de opes e teclas de atalho.

4.10 Os recursos jobs, fg e bg, fuser, pstree, nohup


Para ter ainda mais controle sobre os processos executados no Linux, pode-se utilizar IntroduoaoLinuxGuilhermeEsmeraldo 42

43 os seguintes comandos: jobs, fg e bg, fuser, pstree, nohup. Cada um descrito a seguir: jobs - serve para visualizar os processos que esto parados ou executando em segundo plano (background). Quando um processo est nessa condio, significa sua execuo feita pelo kernel sem que esteja vinculada a um terminal. Em outras palavras, um processo em segundo plano aquele que executado enquanto o usurio faz outra coisa no sistema. Uma dica para saber se o processo est em background verificar a existncia do caractere & no final da linha. Se o processo estiver parado, geralmente a palavra "stopped" aparece na linha, do contrrio, a palavra "running" exibida. A sintaxe do jobs : jobs -opo As opes disponveis so: -l - lista os processos atravs do PID; -r - lista apenas os processos em execuo; -s - lista apenas os processos parados. Se na linha de um processo aparecer o sinal positivo (+), significa que este o processo mais recente a ser paralisado ou a estar em segundo plano. Se o sinal for negativo (-), o processo foi o penltimo. Note tambm que no incio da linha um nmero mostrado entre colchetes. Muitos confundem esse valor com o PID do processo, mas, na verdade, trata-se do nmero de ordem usado pelo jobs. fg e bg: o fg um comando que permite a um processo em segundo plano (ou parado) passar para o primeiro (foreground), enquanto que o bg passa um processo do primeiro plano para o segundo. Para usar o bg, deve-se paralisar o processo. Isso pode ser feito pressionando-se as teclas Ctrl + Z no teclado. Em seguida, digita-se o comando da seguinte forma: bg +nmero O nmero mencionado corresponde ao valor de ordem informado no incio da linha quando o comando jobs usado. Quanto ao comando fg, a sintaxe a mesma: fg +nmero fuser: o comando fuser mostra qual processo faz uso de um determinado arquivo ou diretrio. Sua sintaxe : fuser -opo caminho (do arquivo ou diretrio) Entre as opes, tem-se:

IntroduoaoLinuxGuilhermeEsmeraldo

43

44 -k - finaliza o processo que utiliza o arquivo/diretrio em questo; -i - deve ser usada em conjunto com a opo k e serve para perguntar se a finalizao do processo deve ser feita; -u - mostra o proprietrio do processo; -v - o resultado mostrado em um padro de exibio semelhante ao comando ps. pstree: esse comando mostra processos relacionados em formato de rvore. Sua sintaxe : pstree -opo PID Entre as opes, tem-se: -u - mostra o proprietrio do processo; -p - exibe o PID aps o nome do processo; -c - mostra a relao de processos ativos; -G - usa determinados caracteres para exibir o resultado em um formato grfico. Um detalhe importante: se ao digitar o comando pstree o PID no for informado, todos os processos sero listados. nohup: o comando nohup possibilita ao processo ficar ativo mesmo quando o usurio faz logout. da natureza dos sistemas baseados em Unix interromper processos caso seu proprietrio no esteja mais ativo, por isso, o nohup pode ser muito til. Sua sintaxe : nohup comando Fonte: http://www.infowester.com/linprocessos.php

IntroduoaoLinuxGuilhermeEsmeraldo

44

45

Captulo 5 Gerenciamento de Discos


5.1 Montando Parties e Discos
O uso do GNU/Linux (aqui chamado somente de Linux) cresce a cada dia. Muitos usurios, ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que j usam o Linux, sentem-se incentivados a experimentarem o sistema. A grande maioria j tem o sistema operacional Windows instalado e decide compartilhar o computador tambm com o Linux. Mas quase sempre, o usurio necessita acessar arquivos presentes na partio do Windows. Isso perfeitamente possvel, atravs de um processo conhecido como montagem da partio. Algumas distribuies Linux montam as parties Windows automaticamente, mas em outras, necessrio que o usurio faa isso manualmente. Esse processo simples e ser explicado aqui. Os procedimentos a seguir devem ser executados como usurio root ou outro que tenha permisses de administrador.

5.1.1 Discos
O primeiro passo saber como identificar os discos (HD, CD-ROM, disquete) no Linux. Tais dispositivos, alm de outros (como a porta LPT1) so tidas como existentes no diretrio /dev/. O HD identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante). O nmero 0, indica a partio no HD. Com isso, a segunda partio deve ser identificada como hda1, a terceira como hda2, enfim. No caso de HDs SCSI, as letras hd devem ser trocadas por sd, ficando da seguinte forma: sda0, sda1, sda2, etc. No caso do drive de disquete, a sigla para sua identificao fd0. Se houver outro drive, este deve ser identificado como fd1. No caso dos CD-ROMS, eles so identificados como HDs. Assim, se por exemplo, em seu computador h um HD e um CD-ROM, o HD poder ser reconhecido como hda e o CD como hdb.

5.1.2 Montando a partio


Para a partio Windows, voc deve saber qual das existentes ela. Em nosso exemplo, vamos supr que o Windows est na partio hda0 e o Linux na partio hda1. Tendo cincia disso, agora necessrio que voc crie um diretrio no Linux por onde a partio Windows dever ser acessada, ou seja, o ponto de montagem. Geralmente, este diretrio criado dentro da pasta /mnt/ mas pode ser criado em outro. Para o nosso exemplo, vamos chamar este diretrio de win. Assim, seu caminho /mnt/win. IntroduoaoLinuxGuilhermeEsmeraldo 45

46 O prximo passo comando de montagem: mount - t [tipo] [caminho da partio] [ponto de montagem] Em nosso exemplo, o comando acima ficaria assim: mount -t vfat /dev/hda1 /mnt/win O tipo indica o sistema de arquivos utilizados na partio. Parties fat e fa32 so identificados como vfat. No caso de CD-ROM, o tipo deve ser especificado como iso9660. Por exemplo: mount -t iso9660 /dev/hdb /mnt/cdrom. As parties NTFS podem, teriocamente, serem montadas do mesmo jeito. No entanto, existem problemas de compatibilidade entre o kernel do Linux e o sistema de arquivos NTFS, motivo pelo qual, a montagem desse tipo de partio deve seguir procedimentos especiais, que no sero explicadas aqui. Se a partio que voc deseja montar for ext2 ou ext3, basta especificar estes nomes como tipo.

5.1.3 Montando automaticamente


Os passos explicados anteriormente devem ser repetidos toda vez que voc usar o Linux. Para evitar isso, possvel montar a partio automaticamente, durante o processo de inicializao. Para isso, basta localizar o arquivo fstab. Geralmente ele se encontra dentro do diretrio /etc/. Abra o arquivo e adicione a seguine linha no final (para o nosso exemplo): /dev/hda1 /mnt/win vfat defaults 0 0 Agora vamos entend-lo. A sintaxe da linha : [caminho da partio] [ponto de montagem] [tipo] [opes] [ordem] O campo opes tem as seguintes possibidades: defaults - usa valores padres de montagem; noauto - no monta os dispositivos durante a inicializao. Indicado para drives de disquetes e de CDs; ro - monta somente como leitura; user - d permisso de montagem aos demais usurios do sistema; sync - acrescenta atributos para o perfeito funcionamento de dispositivos mveis, como disquetes e zip drives. possvel usar mais de uma opo ao mesmo tempo, bastando separ-las por vrgula. IntroduoaoLinuxGuilhermeEsmeraldo 46

47 Por exemplo: /dev/hda1 /mnt/win vfat ro,user 0 0 O campo ordem indica em que seqncia os sistemas de arquivo sero verificados. Se deixar o campo em 0 (zero), esse procedimento no ser executado. Sendo assim, na maioria dos casos basta deixar neste valor. Depois que o arquivo fstab tiver sido alterado, na prxima inicializao, a montagem ocorrer automaticamente, exceto se algum passo foi executado de forma errada.

5.1.4 Desmontando parties


Para desmontar uma partio, basta digitar o comando umount mais o caminho da partio. Por exemplo: umount /dev/hda1 Em alguns casos, pode ser necessrio digitar o ponto de montagem ao invs do caminho da partio: umount /mnt/win Fonte: http://www.infowester.com/linmount.php

5.2 Particionando Discos


Quando voc compra um HD, ele no vem preparado para receber dados. Para isso, ele precisa ser particionado. Ao contrrio do que algumas pessoas pensam, no necessrio particionar o disco apenas quando se deseja ter mais de uma unidade em um disco s. Mesmo que voc queira apenas uma, necessrio criar uma partio.

5.2.1 O que uma partio


Uma partio um espao do disco que se destina a receber um sistema de arquivos ou, em um caso particular que veremos adiante, outras parties. Em sistemas DOS/Windows, cada partio recebe uma letra de unidade (C:, D:, etc). Em linux o esquema diferente. As parties so nomeadas da seguinte forma: nome do dispositivo + nmero de partio. Assim, a primeira partio do primeiro disco IDE (/dev/hda) se chamar /dev/hda1, a segunda /dev/hda2 e assim por diante. Cada disco deve ter no mnimo uma e no mximo 16 parties. IntroduoaoLinuxGuilhermeEsmeraldo 47

48

5.2.2 Tipos de parties


Existem trs tipos possveis de parties: primria, estendida e lgica. 5.2.2.1 Parties primrias Este tipo de partio contm um sistema de arquivos. Em um disco deve haver no mnimo uma e no mximo quatro parties primrias. Se existirem quatro parties primrias, nenhuma outra partio poder existir neste disco. As parties primrias so nomeadas da seguinte forma: * /dev/hda1 * /dev/hda2 * /dev/hda3 * /dev/hda4 Uma dessas parties deve estar marcada como ativa, ou seja, marcada como bootvel para que a BIOS possa iniciar a mquina por ela. 5.2.2.2 Partio estendida Isso mesmo, no singular. S pode haver uma partio estendida em cada disco. Uma partio estendida um tipo especial de partio primria que no pode conter um sistema de arquivos. Ao invs disso, ela contm parties lgicas. Se existir uma partio estendida, ela toma o lugar de uma das parties primrias, podendo haver apenas trs. Se houver, por exemplo, trs parties no disco, sendo duas primrias e uma estendida, o esquema de nomes ficar assim: * /dev/hda1 (Primria) * /dev/hda2 (Primria) * /dev/hda3 (Estendida) 5.2.2.3 Parties lgicas Tambm chamadas de unidades lgicas, as parties lgicas residem dentro da partio estendida. Podem haver de uma a 12 parties lgicas em um disco. As parties lgicas so numeradas de 5 at 16. Em um disco contendo duas parties primrias, a partio estendida e 3 parties lgicas, o esquema seria o seguinte: * /dev/hda1 (Primria) * /dev/hda2 (Primria) * /dev/hda3 (Estendida) * /dev/hda5 (Lgica) * /dev/hda6 (Lgica) IntroduoaoLinuxGuilhermeEsmeraldo 48

49 * /dev/hda7 (Lgica) Note que, neste caso, no h uma partio nomeada como /dev/hda4, pois os numeros de 1 a 4 so reservados para parties primrias e para a partio estendida. Perceba que, mesmo sendo 16 o numero mximo de parties em um disco, apenas 15 podero receber sistemas de arquivos, j que uma delas ser estendida.

5.2.3 Diferenas entre DOS/Windows e GNU/Linux


Em sistemas DOS/Windows, as parties sero enxergadas pelo sistema operacional como letras de unidade. As parties primrias e lgicas recebem, cada uma, uma letra de unidade iniciando com C (C:). A partio estendida no recebe uma letra de unidade j que no vai receber um sistema de arquivos e no vai ser usada para guardar dados e, por isso, no acessvel diretamente pelo usurio. No linux a coisa bem diferente. O usurio quem controla o local onde sero montadas as parties do seu disco. Isso pode parecer um tanto estranho para quem est acostumado com o esquema do Windows mas, se voc parar pra pensar, faz bem mais sentido. Para efeito de exemplificao, vamos imaginar um disco IDE, com 6 parties. A primeira, primria, onde est instalado o Windows, a segunda, tambm primria, uma partio windows adicional. A terceira a partio estendida, que contm trs parties lgicas: uma onde ser instalado o linux, a outra usada para swap e a terceira uma partico linux adicional para guardar dados do usurio. Dessa maneira: * /dev/hda1 (Primria Windows sistema) * /dev/hda2 (Primria windows adicional) * /dev/hda3 (Estendida) * /dev/hda5 (Lgica Linux sistema de arquivos raiz) * /dev/hda6 (Lgica Linux swap) * /dev/hda7 (Lgica Linux adicional) No windows ns poderiamos enxergar apenas duas destas parties, a primeira e a segunda j que o windows no reconhece parties linux e elas seriam apresentadas como as unidades C: e D:. Ao acessar ou gravar um arquivo no disco, voc ter que saber em qual das duas unidades o arquivo dever ficar. J no linux voc poder enxergar todas as parties e poder montar trs delas (a estendida e a swap no podem ser montadas) no seu sistema de arquivos raiz (/). A situao seria mais ou menos a seguinte: A quarta partio, /dev/hda5 (lgica), que onde o linux est instalado, ser montada como o sistema de arquivos raiz (/), e dentro desse sistema de arquivos voc ir criar IntroduoaoLinuxGuilhermeEsmeraldo 49

50 pontos de montagem, que so diretrios vazios, destinados apenas para montar um outro sistema de arquivos. interessante ressaltar que o diretrio que ser usado como ponto de montagem no precisa, obrigatoriamente, estar vazio, mas a partir do momento que uma partio for montada nele, seus arquivos sero escondidos e s voltaro a ser acessveis quando ela for desmontada. Usando este exemplo de particionamento, vamos criar trs pontos de montagem: * /mnt/win (onde ser montada /dev/hda1, partio primria onde o windows est instalado) * /mnt/winad (para montar /dev/hda2, partio windows adicional) * /mnt/musicas (onde ser montada /dev/hda7, partio linux adicional, neste caso usada para guardar msicas) A partio swap no pode ser montada, pois um espao usado pelo kernel para memria virtual e no com dados volteis. Deste modo, ao invs de ter que se lembrar de letras de unidade, que no so nem um pouco descritivas, voc poder usar o nome que quiser e acessar todos os sistemas de arquivos como se fossem diretrios dentro do seu sistema de arquivos raiz.

5.2.4 Particionamento com fdisk


O fdisk a ferramenta mais bsica de particionamento. Existe uma ferramenta com o mesmo nome para DOS, no confunda os dois. Eles so bem diferentes. Eu no recomendo o uso do fdisk, a no ser que seja a nica ferramenta disponvel. No que ele no seja uma boa ferramenta, mas porque nele mais fcil cometer erros, e um erro em particionamento pode causar um desastre, como perda permanente de dados em disco. O fdisk uma ferramenta de linha de comando, que usado de forma interativa, ou seja, espera por comandos do usurio. usado da seguinte forma: [root@host] # fdisk [dispositivo] onde [dispositivo] o disco em questo, algo como /dev/hda. Aps digitar este comando, voc entra no prompt do fdisk: Command (m for help): Os comandos que podem ser entrados nesse prompt so: a marcar uma partio como ativa. Ser perguntado o nmero da partio. d deletar uma partio. Ser perguntado o nmero da partio. IntroduoaoLinuxGuilhermeEsmeraldo 50

51 l lista os tipos conhecidos de sistemas de arquivos. m mostra um pequeno help sobre os comandos. n criar uma nova partio. Ser perguntado o tipo de partio (primria, estendida ou lgica). Para partio primria ser perguntado o nmero (1 a 4) e para lgicas ser usado o primeiro nmero disponvel. Depois ser perguntado o nmero do cilindro inicial da partio. O prximo disponivel ser oferecido. Depois o cilindro final. Voc pode entrar com o numero do cilindro ou com o tamanho em MB, algo como +500M. p mostra a tabela de parties existente na memria. Ela pode ser diferente da real, se houverem mudanas no salvas. q Sai sem salvar as alteraes. t Muda o tipo de sistema de arquivos de uma partio. O nmero um octal. Use a opo l para exibir as opes possveis. w Gravar a tabela de parties no disco. Nenhuma mudana ser salva at voc dar este comando. Vamos comear a mexer com as opes do fdisk. Como vamos mexer com o o HD, temos que saber primeiro se ele est vazio... Para fazer isso voc usa o comando "p" para ver a tabela de parties atual: Command (m for help): p Disk /dev/hdb: 64 heads, 63 sectors, 526 cylinders Units = cylinders of 4032 * 512 bytes Device Boot Begin Start End Blocks Id System

Aqui no caso no apareceu nenhuma listagem de partio, ento isto quer dizer que o HD est vazio e pronto para se criar parties! Mas se por exemplo, existisse uma partio j criada neste HD, como ficaria? Vejamos: Command (m for help): p Disk /dev/hdb: 64 heads, 63 sectors, 526 cylinders Units = cylinders of 4032 * 512 bytes Device Boot /dev/hdb1 Begin Start End Blocks Id System 1 1 526 1060384+ b Win95 FAT32

A ento apareceu uma partio FAT32, e como eu no quero essa coisa, vou delet-la para deixar o HD sem parties! :) Repare que a partio 1, porque vem o nmero 1 depois de /dev/hdb, ficando /dev/hdb1. Ento iremos agora deletar a partio 1: IntroduoaoLinuxGuilhermeEsmeraldo 51

52 Command (m for help): d Partition number (1-4): 1 Pronto, a partio foi deletada. Como eu vou querer instalar o Linux sozinho, crio as parties Linux Native e Linux Swap. Eu tenho um HD de 1gb, e vou colocar 950MB para o Linux Native e 50MB para Swap: Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-526): 1 Last cylinder or +size or +sizeM or +sizeK ([1]-526): +950M Command (m for help): p Disk /dev/hdb: 64 heads, 63 sectors, 526 cylinders Units = cylinders of 4032 * 512 bytes Device Boot /dev/hdb1 Begin Start End Blocks Id System 1 1 483 973696+ 83 Linux native

Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (484-526): 484 Last cylinder or +size or +sizeM or +sizeK ([484]-526): 526 Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): 82 Changed system type of partition 2 to 82 (Linux swap) Command (m for help): p Disk /dev/hdb: 64 heads, 63 sectors, 526 cylinders Units = cylinders of 4032 * 512 bytes Device Boot /dev/hdb1 /dev/hdb2 Begin Start End Blocks Id System 1 1 483 973696+ 83 Linux native 484 484 526 86688 82 Linux swap

IntroduoaoLinuxGuilhermeEsmeraldo

52

53 Command (m for help): Viu como no to difcil? Como ltimo comando acima, eu primeiro criei duas parties com tamanhos variados. Uma dessas parties vai ser a swap, ento tenho que mudar o tipo (id) dela... Para isso executei o "t" e coloquei o valor 82 para a partio 2 (/dev/hdb2). Como resultado deste processo todo... podemos ver a ultima mostragem do comando "p"... Perfeito! Agora s precisamos salvar a configurao, e s assim o fdisk ir fazer o particionamento de verdade. Para isso use o "w" e boa sorte. Fontes: http://www.tutorzone.com.br/index.php?ind=reviews&op=entry_view&iden=385 http://brunotorres.net/particionamento-disco

5.3 Formtando discos


5.3.1 Sistema de Arquivos
criado durante a "formatao" da partio de disco (quando se usa o comando mkfs.ext2). Aps a formatao toda a estrutura para leitura/gravao de arquivos e diretrios pelo sistema operacional estar pronta para ser usada. Normalmente este passo feito durante a instalao de sua distribuio GNU/Linux. Cada sistema de arquivos tem uma caracterstica em particular mas seu propsito o mesmo: Oferecer ao sistema operacional a estrutura necessria para ler/gravar os arquivos/diretrios. Entre os sistemas de arquivos existentes posso citar: * Ext2 - Usado em parties Linux Nativas para o armazenamento de arquivos. identificado pelo cdigo 83. Seu tamanho deve ser o suficiente para acomodar todo os arquivos e programas que deseja instalar no GNU/Linux (voc encontra isto no manual de sua distribuio). Para detalhes veja Partio EXT2 (Linux Native), Seo 5.3. * Ext3 - Este sistema de arquivos possui melhorias em relao ao ext2, como destaque o recurso de jornaling. Ele tambm identificado pelo tipo 83 e totalmente compatvel com o ext2 em estrutura. O journal mantm um log de todas as operaes no sistema de arquivos, caso acontea uma queda de energia eltrica (ou qualquer outra anormalidade que interrompa o funcionamento do sistema), o fsck verifica o sistema de arquivos no ponto em que estava quando houve a interrupo, evitando a demora para checar todo um sistema de arquivos (que pode levar minutos em sistemas de arquivos muito grandes). Para detalhes veja Partio EXT3 (Linux Native), Seo 5.5. * Swap - Usado em parties Linux Swap para oferecer memria virtual ao IntroduoaoLinuxGuilhermeEsmeraldo 53

54 sistema. Note que altamente recomendado o uso de uma partio Swap no sistema (principalmente se voc tiver menos que 16MB de memria RAM). Este tipo de partio identificado pelo cdigo 82. Para detalhes veja Partio Linux Swap (Memria Virtual), Seo 5.7. * proc - Sistema de arquivos do kernel (veja O sistema de arquivos /proc, Seo 5.8). * FAT12 - Usado em disquetes no DOS * FAT16 - Usado no DOS e oferece suporte at discos de 2GB * FAT32 - Tambm usado no DOS e oferece suporte a discos de at 2 Terabytes

5.3.2 O Comando mkfs


Para criar sistemas de arquivos utilizamos o comando mkfs (abreviao de: fazer sistema de arquivos) e o comando mkswap para fazer espaos para troca de dados com a memria RAM. O comando mkfs um "atalho" para vrios outros comandos para criao dos mais diversos e comuns sistemas de arquivos. Para saber quais sistemas de arquivos atualmente suportado pelo seu Linux, digite o comando abaixo: $ ls /sbin/mk* /sbin/mkdosfs /sbin/mkfs.ext2 /sbin/mkfs.msdos /sbin/mkfs.xfs /sbin/mke2fs /sbin/mkfs.ext3 /sbin/mkfs.reiser4 /sbin/mkreiser4 /sbin/mkfs /sbin/mkfs.jfs /sbin/mkfs.reiserfs /sbin/mkreiserfs /sbin/mkfs.cramfs /sbin/mkfs.minix /sbin/mkfs.vfat /sbin/mkswap No exemplo acima, esto os sistemas de arquivos suportados pelo meu sistema, Kubuntu 6.06 LTS Dapper Drake, kernel 2.6.15-23-38. Existem mais de uma forma/comando para criar um sistema de arquivos. Por exemplo, para criar um sistema de arquivos ext3, na partio /dev/hda4, podemos utilizar um dos seguintes comandos abaixo: # mkfs.ext3 /dev/hda4 ou # mkfs -t ext3 /dev/hda4 ou # mke2fs -j /dev/hda4 Enfim, a sintaxe para o comando mkfs : IntroduoaoLinuxGuilhermeEsmeraldo 54

55 # mkfs [opes] dispositivo [blocos] Onde: * opes: o -t [tipo]: especifica o tipo de sistema de arquivos a ser criado. O padro ext2; o -c: checa o dispositivo a procura de blocos defeituosos durante a criao do sistema de arquivos. * dispositivo: o arquivo especial correspondente ao dispositivo; * blocos: quantidade de blocos a ser utilizada pelo sistema de arquivos. Para mais informaes, consulte o manual do comando mkfs. Fontes: http://focalinux.cipsga.org.br/guia/intermediario/ch-disc.html http://www.vivaolinux.com.br/artigo/Linux-Sistema-de-arquivos?pagina=2

IntroduoaoLinuxGuilhermeEsmeraldo

55

56

Captulo 6 Gerenciamento de Grupos/Usurios e Controle de Permisses


6.1 Gerenciamento de Grupos/Usurios
6.1.1 Introduo
Uma das coisas que torna seguro o sistema operacional GNU/Linux (na verdade, qualquer sistema baseado no Unix), a sua exigncia de que cada coisa tenha dono e permisses de uso. Assim, para que seja possvel restringir ou permitir o acesso e o uso de determinados recursos a uma ou mais pessoas, necessrio que cada uma tenha um usurio devidamente criado no sistema operacional. Mas, como criar usurios no Linux? Como alterar as caractersticas desses usurios? Como bloquear ou mesmo eliminar um usurio do sistema? isso que voc ver nas prximas linhas.

6.1.2 Por que criar usurios no GNU/Linux?


Criar uma conta para cada usurio no sistema operacional no serve apenas para restringir ou permitir o acesso aos recursos oferecidos, mas tambm para respeitar o espao que cada pessoa tem. Com uma conta, uma pessoa poder ter os seus prprios diretrios, personalizar o seu desktop, ter atalhos e configuraes para os seus programas preferidos, entre outros. Alm disso, mesmo que o computador onde o GNU/Linux est instalado seja usado apenas por uma pessoa, recomendvel criar um usurio prprio para ela. Mas, por qual motivo, se o sistema j conta com um usurio nativo, o root? O usurio root o que "manda" no sistema, pois ele tem poderes de administrador, o que significa que ele tem acesso a todos os recursos do sistema operacional. Us-lo no dia-a-dia no recomendvel, pois se o computador for tomado por outra pessoa ou se o prprio usurio fizer alguma coisa errada, o sistema operacional poder ser seriamente comprometido. Respondendo a pergunta desse tpico com base nisso, a resposta muito simples: deve-se criar usurios no GNU/Linux meramente para permitir a sua utilizao por cada pessoa.

6.1.3 Entendendo o controle de usurios no GNU/Linux


Para criar, gerenciar ou eliminar contas de usurios no GNU/Linux, necessrio estar "logado" no sistema operacional com o usurio root (ou outro usurio que tenha IntroduoaoLinuxGuilhermeEsmeraldo 56

57 privilgios de administrador). Os motivos para isso so bvios: somente usurios autorizados que podem manipular outras contas, do contrrio, a segurana do sistema seria seriamente comprometida, pois qualquer usurio poderia criar, alterar ou apagar contas. Note que, dependendo das configuraes do seu sistema, pode ser necessrio executar cada instruo antecedida do comando 'sudo', como acontece por padro com a distribuio Ubuntu. Antes de criar e controlar contas no GNU/Linux, conveniente entender como o sistema operacional lida com isso. Em geral, cada conta criada fica armazenada em um arquivo de nome passwd localizado dentro do diretrio /etc/ (ou seja, seu caminho completo /etc/passwd). Esse arquivo contm vrias informaes sobre cada usurio: - o seu nome de login (ou seja, o nome que necessrio digitar para entrar no sistema); - senha (neste caso, a informao da senha pode estar criptografada ou em outro arquivo); - UID (User IDentification), ou seja, nmero de identificao do usurio; - GID (Group IDentification), isto , nmero de identificao do grupo do usurio; - informaes adicionais sobre o usurio (nome completo, dados de contato, etc); - diretrio "home", ou seja, o diretrio principal de cada usurio; - shell do usurio, uma espcie de programa que interpretar os comandos que o usurio digitar. Para que voc possa entender melhor cada um desses itens, vamos analis-los usando como base a linha abaixo extrada de um arquivo /etc/passwd, que mostra a posio que cada uma das informaes acima ocupa: tintin:x:1001:500:TinTin,Belgica,846-846:/home/tintin:/bin/bash Note que cada parmetro do usurio separado por : (dois pontos). Vamos estudar cada um: tintin: neste ponto que fica localizado o nome de login do usurio, neste caso, tintin. Esse nome no pode ser igual a outro j existente no sistema e, geralmente limitado a 32 caracteres. Todavia, dependendo da configurao aplicada, o nome pode ser "case sensitive", ou seja, diferencia letras maisculas de minsculas. Assim, 'wester' ser diferente de 'wEster', por exemplo; x: essa posio indica a senha do usurio. A letra x informa que a senha est armazenada e protegida dentro do arquivo /etc/shadow. Se houver um asterisco (*) no lugar, significa que a conta est desativada. Todavia, se no houver nada, significa que no h senha para esse usurio. Em alguns casos, embora isso no seja recomendvel, a senha pode estar inserida diretamente ali, mas criptografada; 1001: esse campo indica o nmero UID (User IDentification) do usurio, mas voc pode estar se perguntando o que isso. Como o prprio nome informa, nmero que serve para identificar o usurio. Em geral, o sistema pode suportar UIDs que vo de 0 a 4.294.967.296, embora alguns sistemas limitem esse nmero a valores inferiores. IntroduoaoLinuxGuilhermeEsmeraldo 57

58 Normalmente, o UID 0 atribudo pelo prprio GNU/Linux ao usurio root. O sistema tambm pode criar automaticamente usurios para a execuo de determinadas rotinas e atribuir a eles UIDs baixos, como 1, 2, 3 e assim por diante. Note que, em nosso exemplo, o UID do usurio 1001. Para usurios "humanos" do sistema, realmente uma boa prtica criar UIDs mais altas, para fins de organizao; 500: esse o campo que indica o GID (Group IDentification) do usurio, isto , o nmero de identificao do grupo do qual ele faz parte. Assim como no UID, geralmente o usurio 0 indicado para o grupo do usurio root. Note, no entanto, que um mesmo usurio pode fazer parte de mais de um grupo (geralmente, o GNU/Linux permite a participao do usurio em at 32 grupos). Mas qual a vantagem de se ter mais de um grupo? Simples: suponha, por exemplo, que voc queira que somente os funcionrios do departamento contbil de sua empresa acessem os arquivos disponveis na pasta /contabilidade/. Para isso, voc cria um grupo e uma definio que faz com que apenas os usurios desse grupo tenham direito ao acesso. Feito isso, basta adicionar ao grupo cada usurio do departamento contbil. Assim, somente eles acessaro o diretrio. Via de regra, o sistema operacional cria um grupo para cada conta de usurio criada; TinTin,Belgica,846-846: esse campo muito interessante, pois permite a incluso de informaes adicionais sobre o usurio. Tambm chamado de GECOS (General Electric Comprehensive Operating System) em aluso a uma funcionalidade existente em um sistema operacional Unix que tinha esse nome, esse campo serve para, por exemplo, cadastrar o nome completo do usurio, seu endereo, seu telefone ou o seu ramal, etc. Cada informao separada da outra por uma vrgula, por exemplo: Emerson Alecrim,Rua X,1234-4321. Na prtica, voc pode inserir as informaes que achar melhor, no apenas os dados informados anteriormente; /home/tintin: cada usurio criado no sistema tem direito a uma pasta "home", ou seja, uma pasta sua, para uso exclusivo. neste campo que voc indica onde estar essa pasta. Em geral, essas pastas ficam dentro do diretrio /home/, mas voc pode definir o diretrio que quiser (ou mesmo no indicar nenhum); /bin/bash: esse o campo que informa qual o shell (interpretador de comandos) de login que o usurio utilizar. O GNU/Linux trabalha com vrios, entre eles, o bash, o sh e o csh. Caso nenhum shell seja informado, o sistema utilizar o bash como padro.

6.1.4 Criando usurios no GNU/Linux


Agora que voc j conta com informaes importantes sobre o gerenciamento de usurios no GNU/Linux, chegou a hora de criar contas. Para isso, voc pode abrir um terminal e utilizar o comando adduser (dependendo do seu sistema, o comando pode ser somente/tambm useradd), que aplicado da seguinte forma: adduser opes usurio Em opes, voc pode colocar parmetros especficos para a configurao da conta de IntroduoaoLinuxGuilhermeEsmeraldo 58

59 usurio que ser criada. Voc pode usar vrios parmetros (veja uma lista completa digitando man adduser no terminal), entre eles: adduser -disabled-login usurio: faz com que a conta do usurio seja criada sem a solicitao de uma senha (ou seja, no executa o comando passwd). No entanto, a conta no poder ser usada at que o usurio defina sua senha de acesso; adduser -force-badname usurio: em geral, os sistemas GNU/Linux checam se a conta criada pode ter em seu nome (ou mesmo na senha) algo que aumente os riscos ao sistema. Com esse comando, o sistema instrudo a no fazer esse tipo de verificao; adduser -group grupo: com esse parmetro, ao invs de uma conta de usurio, um grupo criado. Para essa tarefa tambm pode-se utilizar o comando addgroup; adduser -home diretrio usurio: com essa opo, voc define em qual diretrio ficar o "home" do usurio. Se esse parmetro no for usado, o sistema criar o "home" no diretrio padro (geralmente, em /home/nome_do_usurio). Se preferir que nenhum diretrio desse tipo seja criado, voc pode utilizar a opo -no-create-home (no recomendvel); adduser -uid nmero usurio: quando usurios so criados, o sistema geralmente adiciona a eles UIDs sequenciais, mas voc pode especificar o UID que quiser usando o parmetro uid seguido de um nmero, por exemplo, uid 31415. Note que, em muitas distribuies GNU/Linux, voc pode utilizar apenas a letra u ao invs de uid. Note tambm que o GID do usurio ser igual ao valor informado por voc, a no ser que voc especifique outro atravs da opo -gid, vista abaixo; adduser -gid nmero usurio: semelhante ao parmetro acima, mas especifica manualmente um grupo para o usurio ao invs de criar um parmetro. Note que, em muitas distribuies GNU/Linux, voc pode utilizar apenas a letra g ao invs de gid. O gid informado deve ser o de um grupo j existente; adduser -ingroup grupo usurio: adiciona o usurio criado a um grupo j existente, ao invs de criar um novo grupo para ele; adduser -shell shell usurio: atravs desse parmetro, voc pode especificar qual ser o shell padro do usurio. Em alguns sistemas possvel usar a letra s ao invs da palavra shell. Para servir de exemplo, vamos criar um usurio de nome wester. Esse usurio dever: - ter um UID de nmero 27182; - ser inserido no grupo infowester (j existente). Veja como ficar o comando: adduser -uid 27182 -ingroup infowester wester

IntroduoaoLinuxGuilhermeEsmeraldo

59

60 Assim que esse comando for digitado, o sistema pedir que voc digite duas vezes uma senha para o usurio. Em seguida, perguntar as informaes adicionais, como nome completo, telefone, etc. Note que voc pode deixar essas informaes em branco, se preferir. Voc deve ter notado pelo comando acima de que possvel utilizar mais de uma opo ao mesmo tempo no comando adduser.

6.1.5 Eliminando usurios no GNU/Linux


Se voc precisa apagar um usurio, saiba que o procedimento fcil. Basta digitar o comando userdel seguido do nome do usurio. Por exemplo: userdel voldmort Se alm de eliminar esse usurio do sistema voc quiser que sua pasta "home" seja apagada (junto com todo o seu contedo), basta digitar o comando userdel seguido do parmetro -r e do nome do usurio: userdel -r voldemort Ao fazer isso, certifique-se que o usurio tem cpia de todos os arquivos a serem apagados, quando cabvel. Apagando usurios com userdel

6.1.6 Alterando e controlando a senha do usurio


Por segurana, recomendvel alterar a senha de todos os usurios periodicamente. Para isso, usa-se o comando passwd. Se qualquer usurio quiser alterar a sua prpria senha, basta digitar apenas passwd em um terminal. Quando isso ocorrer, o sistema pedir que o usurio digite a sua senha atual e, em seguida, pedir a nova seqncia, que deve ser informada duas vezes, para confirmao. O usurio root (ou outro que tenha privilgios de administrador) pode mudar no s a sua prpria senha como a senha de todos os outros usurios do sistema. Para isso, o comando passwd tambm usado e pode ser acrescido de opes: passwd usurio opes Eis algumas das opes disponveis (para conhecer as outras, pode-se digitar o comando man passwd em um terminal): -e: faz com que a senha do usurio expire, forando-o a fornecer uma nova combinao no prximo login; -k: permite a alterao da senha somente se esta estiver expirada;

IntroduoaoLinuxGuilhermeEsmeraldo

60

61 -x dias: faz com que a senha funcione apenas pela quantidade de dias informada. Depois disso, a senha expira e o usurio deve troc-la; -n dias: indica a quantidade mnima de dias que o usurio deve aguardar para trocar a senha; -w dias: define a quantidade mnima de dias em que o usurio receber o aviso de que sua senha precisa ser alterada; -i: deixa a conta inativa, caso a senha tenha expirado; -l: "tranca" a conta do usurio; -u: desbloqueia uma conta que esteja "trancada"; -S: exibe o status da conta (note que a letra S deve estar em maiscula). Vamos a alguns exemplos para que voc possa entender essas opes: Suponha que voc queira que a senha do usurio marvin expire aps 30 dias. O comando : passwd marvin -x 30 Suponha, agora, que voc queira que a senha do usurio bender expire aps 14 dias e exiba uma mensagem de que necessrio trocar a senha trs dias antes da data limite. O comando ser o seguinte: passwd bender -x 14 -w 3 Agora, vamos supor que voc queira saber do status do usurio bender, para confirmar as alteraes. Eis o comando: passwd bender -S A letra P acima informa que o usurio bender tem senha. Se no tivesse, no lugar de P estariam as letras NP. Se a conta do usurio estivesse bloqueada, apareceria a letra L. Por sua vez, a data que aparece na seqncia (no formato ms/dia/ano) informa a ltima alterao de senha que houve. As prximas quatro informaes indicam, respectivamente, o perodo mnimo de utilizao da senha, o perodo mximo (lembra que voc definiu esse perodo com sendo de 14 dias?), o perodo de alerta (que voc informou como sendo de 3 dias) e, por fim, o perodo de inatividade (quando no h inatividade, o resultado -1). Como j informado antes, o GNU/Linux usa o arquivo /etc/shadow para lidar com as senhas de usurios. As informaes desse arquivo tm o seguinte padro (usando como exemplo os dados do usurio toad): IntroduoaoLinuxGuilhermeEsmeraldo 61

62 toad:$1$O48MNVt9$08BBOTqV0cr2LtKtMXtAY1:13849:0:99999:7::: Assim como acontece no arquivo /etc/passwd, as informaes do arquivo /etc/shadow so separadas por : (dois pontos). No caso acima, aparece o nome do usurio (toad), a senha criptografada ( por que isso que h esse monte de caracteres sem sentido), a data da ltima mudana (13849), a quantidade mnima de dias que o usurio deve esperar para mudar a sua senha (0), a quantidade mxima de dias para a alterao de senha ser feita (99999) e a quantidade de dias restantes data de expirao que o sistema operacional deve esperar para exibir alertas de mudana de senha (7). Os demais campos (que esto em branco) so destinados informaes de expirao de conta, mas dificilmente so usados. Voc pode ter se perguntado sobre o motivo das datas serem representadas por um nico nmero, como o valor 13849, acima. Essa formato indica a quantidade de dias que j se passou desde 1 de janeiro de 1970.

6.1.7 Gerenciando grupos


Lidar com grupos no GNU/Linux tarefa muito semelhante ao trabalho com usurios. Veja os principais comandos disponveis: addgroup grupo: funciona de maneira igual ao comando adduser (inclusive algumas opes so as mesmas), no entanto, obviamente, cria grupos ao invs de usurios; groupdel grupo: serve para eliminar grupos do sistema; newgrp - grupo: com este comando possvel mudar o grupo efetivo do usurio, isto , o grupo pertencente a ele, por um outro grupo do qual ele faz parte. Essa operao somente executada caso o grupo tenha senha; groups usurio: mostra os grupos dos quais um usurio faz parte. Se quiser, por exemplo, saber os grupos do usurio gandalf, basta digitar em um terminal: groups gandalf As informaes dos grupos so armazenadas no arquivo /etc/groups. Esse arquivo tambm indica quais usurios pertencem aos grupos existentes. Cada grupo contm uma linha com essas informaes. Vamos analisar a seguinte linha de um arquivo /etc/groups para entender melhor como isso funciona: infowester:x:1002:wester,toad,marvin Assim como nos arquivos /etc/passwd e /etc/shadow, os campos da linha so separados por : (dois pontos). No exemplo acima, o primeiro campo indica o nome do grupo (infowester). O segundo campo informa a senha (sim, possvel definir senhas para grupos, embora raramente isso seja feito). Neste caso, usa-se x para indicar a IntroduoaoLinuxGuilhermeEsmeraldo 62

63 ausncia de senha. O terceiro campo informa o GID do grupo (1002) e, por fim, o quarto campo informa quais so os usurios pertencentes a esse grupo. Note que, neste exemplo, os usurios wester, toad e marvin fazem parte do grupo infowester. A lista de usurios deve ser separada por vrgulas, sem espao entre os nomes. No que se refere a este assunto, possvel que encontre grupos em seu sistema que voc no lembra de ter criado. Suponha, por exemplo, que voc digitou o comando groups lestat para saber quais os grupos dos quais participa o usurio lestat, e o resultado foi o seguinte: lestat : lestat adm cdrom floppy audio video scanner lpadmin powerdev Note que o usurio lestat participa de vrios grupos, sendo um deles o seu grupo principal, que leva o seu nome. Mas, de onde surgiram os demais? O GNU/Linux possui alguns grupos considerados "padro", isto , grupos que servem para permitir que o usurio execute determinadas tarefas. A quantidade e as finalidades dos grupos podem variar de acordo com a distribuio GNU/Linux utilizada e a sua configurao. Eis alguns grupos bastante comuns: cdrom: grupo para utilizao de unidades de CD/DVD; audio: grupo para acesso aos recursos de udio do computador; video: grupo para acesso aos recursos de vdeo do computador; floppy: grupo para utilizao da unidade de disquete; adm: grupo para acesso de recursos administrativos.

6.1.8 Alterando informaes dos usurios


Se voc pode criar e apagar contas de usurios, pode tambm alter-las. Isso feito facilmente com o comando usermod, cujo funcionamento semelhante ao comando adduser: usermod opes usurio Eis algumas de suas opes: usermod -d diretrio usurio: altera o diretrio "home" do usurio. Adicione -m no final para mover o contedo da pasta anterior para a nova. Por exemplo: usermod -d /financeiro -m peterpan usermod -e data usurio: define a data de expirao da conta do usurio. Em geral, a data fornecida no esquema ano/ms/dia (aaaa-mm-dd). Por exemplo: usermod -e 2008-10-28 galadriel usermod -l novo_nome usurio: altera o nome do login do usurio. No exemplo abaixo, o usurio peterparker teve seu nome alterado para spiderman: IntroduoaoLinuxGuilhermeEsmeraldo 63

64 usermod -l spiderman peterparker usermod -g grupo nmero usurio: altera o GID do grupo principal do usurio. Por exemplo: usermod -g 42 galadriel usermod -s shell usurio: altera o shell do usurio; usermod -u nmero usurio: altera o UID da conta do usurio.

6.1.9 Comandos adicionais


O GNU/Linux ainda conta com vrios outros comandos que lhe ajudam a gerenciar e obter informaes de usurios e grupos. Veja alguns: logname: mostra o nome do seu usurio; users: mostra os usurios que esto conectados ao sistema no momento; id: mostra dados da identificao do usurio. Eis algumas opes: id usurio: exibe os grupos (e seus respectivos GIDs) dos quais o usurio faz parte; id -g usurio: mostra o GID do grupo do usurio; id -G usurio: exibe o GID de todos os grupos do usurio (nome que a letra G fica em caixa alta); id -u usurio: indica o UID do usurio. finger usurio: mostra informaes detalhadas do usurio. Se o comando for digitado isoladamente (ou seja, somente finger), o sistema exibe todos os usurios que esto conectados no sistema operacional no momento; chfn usurio: comando para mudar as informaes adicionais do usurio (nome completo, telefone, etc). last: o comando last bastante interessante e til, pois mostra os ltimos usurios que estiveram logados no sistema, os terminais usados por eles para se conectar, o hostname (quando a conexo feita remotamente), as datas e os horrios de utilizao do computador, assim como o tempo de permanncia no sistema. Esses dados geralmente so obtidos do arquivo de logs /var/log/wtmp. O last tambm possui opes. Veja algumas: last -n nmero: mostra apenas as ltimas linhas do log. Para definir a quantidade de IntroduoaoLinuxGuilhermeEsmeraldo 64

65 linhas, substitua nmero pelo valor desejado. Por exemplo: last -n 10 last -x: mostra os dados de desligamento do sistema, assim como informaes do nvel de execuo; last -R: faz com que o comando no exiba os hostnames (note que a letra R fica em caixa alta); last -a: faz com que os hostnames sejam exibidos apenas na ltima coluna.

6.2 Controle de Permisses


6.2.1 Introduo s Permisses
As permisses so um dos aspectos mais importantes do Linux (na verdade, de todos os sistemas baseados em Unix). Elas so usadas para vrios fins, mas servem principalmente para proteger o sistema e os arquivos dos usurios. Manipular as permisses algo muito interessante, tanto quanto complexo. Mas tal complexidade no deve ser interpretada como dificuldade e sim como grande variedade de configuraes, o que permite criar vrios tipos de proteo de arquivos e diretrios. Como voc deve saber, somente o super-usurio (root) tem aes irrestritas no sistema, justamente por ser o usurio responsvel pela configurao, administrao e manuteno do Linux. Cabe a ele por exemplo, determinar o que cada usurio pode executar, criar, modificar, etc. Naturalmente, a forma usada para determinar o que o usurio pode fazer a determinao de permisses. Este artigo visa explicar as configuraes de permisses de arquivos e diretrios, assim como modific-las.

6.2.2 Entendendo as permisses


drwx------ ... 2 wester ............. 512 Jan ... 29 23:30 .. Arquivos/ -rw-rw-r-- ... 1 wester ....... 280232 Dec .. 16 22:41... notas.txt As linhas acima representam um comando digitado (ls -l) para listar um diretrio e suas permisses. O primeiro item que aparece na linha (drwx----- e -rw-rw-r-) a forma usada para mostrar as permisses que o diretrio Arquivos e o arquivo notas.txt tm. esse item, que recebe o nome de string, que vamos estudar. Um ponto interessante de citar que o Linux trata todos os diretrios como arquivo tambm, portanto, as permisses se aplicam de igual forma para ambos. Tais permisses podem ser divididas em quatro partes para indicar: tipo, proprietrio, grupo e outras permisses. O primeiro caractere da string indica o tipo de arquivo: se for "d" IntroduoaoLinuxGuilhermeEsmeraldo 65

66 representa um diretrio, se for "-" equivale a um arquivo. Entretanto, outros caracteres podem aparecer, j que existem outros tipos de arquivo no Linux, conforme mostra a tabela abaixo: d => diretrio b => arquivo de bloco c => arquivo especial de caractere p => canal s => socket - => arquivo normal Repare agora que no restante da string temos 9 caracteres. Voc j sabe o que significa o primeiro. Os demais so em 3 grupos de 3, cada um representado o proprietrio, o grupo e todos os demais respectivamente. Pegando a linha 2 do exemplo (-rw-rw-r-) e dividindo a string em 3 partes, ficaria assim: -rw => indicao de permisses do proprietrio -rw => permisses do grupo que o usurio pertence -r- => permisses para os demais usurios Vamos entender agora o que significa esses caracteres (r, w, x, -). Existem 3 tipos bsicos de permisses: leitura, gravao e execuo. Leitura permite aos usurios ler o contedo do arquivo mas no altera-lo. Gravao permite que os usurios alterem o arquivo. Execuo, como o nome diz, permite que o usurio execute o arquivo, no caso de ser executvel. Mas acontece que as permisses no funcionam isoladamente, ou seja, ou o usurio tem permisso de leitura ou de gravao ou de execuo. As permisses funcionam em conjunto. Isso quer dizer que cada arquivo/diretrio tem as 3 permisses, cabendo ao dono determinar qual dessas permisses habilitada para os usurios ou no. Pode ser que uma determinada quantidade de usurios tenha permisso para alterar um arquivo, mas outros no. Da a necessidade de se usar grupos. Neste caso, a permisso de gravao desse arquivo ser dada ao grupo e todo usurio membro dele poder alterar o arquivo. necessrio ter um certo cuidado com as permisses. Por exemplo, do que adianta o usurio ter permisso de gravao se ele no tem permisso de leitura habilitada? Ele poder ler o arquivo para poder modifica-lo? No! De certo, isso tem utilidade em arquivos de log. Fazendo associao com as letras r, w, x e o caractere -, vamos entender cada uma: r => significa permisso de leitura (read); w => significa permisso de gravao (write); x => significa permisso de execuo (execution); - => significa permisso desabilitada. A ordem em que as permisses devem aparecer rwx. Sendo assim, vamos entender as strings do nosso exemplo, dividindo-a em 4 partes: Linha 1: IntroduoaoLinuxGuilhermeEsmeraldo 66

67 drwx------ ... 2 wester ............... 512 Jan ... 29 23:30 .. Arquivos/ um diretrio (d); o proprietrio pode altera-lo, grava-lo e executa-lo (rwx); o grupo no pode altera-lo, grava-lo e nem executa-lo (---); os demais usurios no podem altera-lo, grava-lo e nem executa-lo (---). Linha 2: -rw-rw-r-- ... 1 wester .......... 280232 Dec .. 16 22:41... notas.txt um arquivo (-); o proprietrio pode altera-lo, grava-lo, mas no executvel. Como este arquivo no executvel, a permisso de execuo aparece desabilitada (rw-); o grupo tem permisses idnticas ao proprietrio (rw-); o usurio somente tem permisso de ler o arquivo, no pode altera-lo (r--) A tabela abaixo mostra as permisses mais comuns: --- => nenhuma permisso; r-- => permisso de leitura; r-x => leitura e execuo; rw- => leitura e gravao; rwx => leitura, gravao e execuo.

6.2.3 Configurando permisses com chmod


Acima, voc dever tido pelo menos uma noo do que so permisses e sua importncia no Linux. Chegou a hora de aprender a configurar permisses e isso feito atravs do comando chmod (de change mode). Um detalhe interessante deste comando que voc pode configurar permisses de duas maneiras: simbolicamente e numericamente. Primeiramente veremos o mtodo simblico. Para ter uma viso mais clara da forma simblica com o chmod, imagine que tais smbolos se encontram em duas listas, e a combinao deles gera a permisso: Lista 1 Smbolo u => usurio g => grupo O (letra o maiscula) => outro a => totos Lista 2 Smbolo r => leitura w => gravao x => execuo IntroduoaoLinuxGuilhermeEsmeraldo 67

68 Para poder combinar os smbolos destas duas listas, usam-se os operadores: + (sinal de adio) => adicionar permisso - (sinal de subtrao) => remover permisso = (sinal de igualdade) => definir permisso Para mostrar como essa combinao feita, vamos supor que voc deseje adicionar permisso de gravao no arquivo teste.old para um usurio. Ento o comando a ser digitado ser: chmod u+w teste.old O "u" indica que a permisso ser dada a um usurio, o sinal de adio (+) indica que est sendo adicionada a permisso e "w" indica que a permisso que est sendo dada de gravao. Caso voc queira dar permisses de leitura e execuo ao seu grupo, o comando ser: chmod g+rw teste.old Agora, vamos supor que o arquivo teste.old dever estar com todas as permisses disponveis para o grupo. Podemos usar ento: chmod g=rwx teste.old Dica: crie arquivos e diretrios e teste a combinao de permisses com chmod. Isso lhe ajudar muito no entendimento deste conceito.

6.2.4 Usando chmod com o mtodo numrico


Usar o chmod com valores numricos algo bastante prtico. Em vez de usar letras como smbolos para cada permisso, usam-se nmeros. Se determinada permisso habilitada, atribui-se valor 1, caso contrrio, atribui-se valor 0. Sendo assim, a string de permisses r-xr----- na forma numrica fica 101100000. Essa combinao de 1 e 0 um nmero binrio. Mas temos ainda que acrescentar a forma decimal (ou seja, nmeros de 0 a 9). Para isso, observe a tabela abaixo: Permisso --- 000 --x 001 -w- 010 -wx 011 r-- 100 r-x 101 rw- 110 rwx 111 Binrio 0 1 2 3 4 5 6 7 Decimal

IntroduoaoLinuxGuilhermeEsmeraldo

68

69 Se voc no conhece o sistema binrio deve estar se perguntando o que esse "monte" de 0 e 1 tem a ver com os nmeros de 0 a 7. Como o sistema binrio somente trabalha com os nmeros 0 e 1 (decimal trabalha com os nmeros de 0 a 9, ou seja, o sistema de numerao que utilizamos no nosso dia-a-dia), ele precisa de uma seqncia para representar os valores. Sendo assim, na tabela acima, a coluna Binrio mostra como so os valores binrios dos nmeros de 0 a 7 do sistema decimal. Chegou a hora ento de relacionar a explicao do pargrafo acima com a coluna Permisso. Para exemplificar, vamos utilizar a permisso rw-, cujo valor em binrio 110, que por sua vez, em decimal corresponde ao nmero 6. Ento, em vez de usar rw- ou 110 para criar a permisso, simplesmente usa-se o nmero 6. Repare ento que com o mtodo numrico, usamos somente um dgito para representar uma permisso, ao invs de trs. Com isso a string de permisses r--r--r-- pode ser representa por 444, pois r-- em decimal igual a quatro. Observe o exemplo abaixo: chmod 600 notas.txt Acima, esto sendo dadas as permisses rw------- ao arquivo notas.txt, pois 6 equivale a rw- e 0 equivale a ---. Como zero aparece duas vezes, forma-se ento o valor 600. Faa o comando acima com um arquivo de teste e depois digite ls- l notas.txt e veja o que aparece (notas.txt deve ser substitudo pelo arquivo que voc est usando para teste). A tabela abaixo mostra as configuraes de permisses mais usadas: --------000 r-------400 r--r--r-444 rw------- 600 rw-r--r-- 644 rw-rw-r-- 666 rwx------ 700 rwxr-x--- 750 rwxr-xr-x 755 rwxrwxrwx 777 As trs ltimas permisses da tabela so freqentemente usadas para programas e diretrios.

Fontes: http://www.infowester.com/usuarioslinux.php http://www.infowester.com/linuxpermissoes.php

IntroduoaoLinuxGuilhermeEsmeraldo

69

70

Captulo 7 Rede no Linux


7.1 Configurao: Debian/Ubuntu
Um dos maiores problemas encontrados em configurao de servidores, que o passo mais importante esquecido. Seu servidor/estao DEVE estar com o nome FQDN Fully Qualified Domain Name, ou seja, Nome de Domnio totalmente expressado ou qualificado, corretamente configurado, para que depois voc possa montar qualquer tipo de servidor. Este guia pretende ensinar a configurar este passo, IPs e Interfaces virtuais, especialmente em Debian-Like, mas com certeza muitos desses passos podem ser feitos em diversas distribuies. Antes de qualquer passo de configurao de rede, bom configurar corretamente o nome da mquina e domnio. Para tal tarefa vamos mexer inicialmente no arquivo /etc/hostname # vi /etc/hostname Coloque aqui o nome da sua mquina. Por exemplo: servidor Para forar que este nome esteja disponvel j nesta sesso, digite: # hostname servidor Para confirmar, digite o comando hostname sem parmetros: # hostname A resposta deve ser o nome da sua mquina, no nosso caso: servidor. Logo aps, vamos ao arquivo /etc/hosts # vi /etc/hosts Neste arquivo alm do nome, vamos configurar o domnio padro da nossa mquina e nomes secundrios. Vamos deixar ele desta forma: 127.0.0.1 localhost 10.0.17.254 servidor.dailson.com.br servidor Lembre-se que neste passo, voc j deve ter em mente o nmero de IP da sua estao. No meu exemplo, eu estou usando o IP 10.0.17.254 Logo aps voc configurar este arquivo, voc pode checar o resultado com dois comandos: # ping servidor E para checar o FQDN IntroduoaoLinuxGuilhermeEsmeraldo 70

71 # dnsdomainname Configurao de IP Manual Exibe as configuraes atuais da(s) placa(s) de rede # ifconfig Configura a rede manualmente: Definindo o IP: ifconfig eth0 NOVO_IP netkmask MASCARA up Exemplo: # ifconfig eth0 10.0.17.1 netmask 255.0.0.0 up Definir um Gateway na Rede: route add default gw IP_DO_GATEWAY Exemplo: # route add default gw 10.0.0.254 Configurar a resoluo de nomes (DNS): Editar o Arquivo /etc/resolv.conf # vi /etc/resolv.conf Adicionar a linha: nameserver IP_DO_SERVIDOR_DNS Pode-se e deve-se adicionar vrias linhas nameserver com vrios ip's de servidores dns. Ex: nameserver 10.0.0.254 nameserver 10.0.0.245 Ainda pode colocar o domnio padro no /etc/resolv.conf search dailson.com.br Comandos para exibir as configuraes atuais da rede: # ifconfig # route -n # cat /etc/resolv.conf Desligando a placa de rede: # ifconfig eth0 down ou ifdown eth0 Ligando a placa de rede: # ifconfig eth0 up ou ifup eth0 Como configurar de forma esttica a rede: Edite o arquivo /etc/network/interfaces e adicionar as seguintes linhas: # vi /etc/network/interfaces Inicia automaticamente com a interface de rede. auto eth0 IntroduoaoLinuxGuilhermeEsmeraldo 71

72 Faz com que o Debian detecte e aplique as configuraes logo que o cabo ligado ou desligado. allow-hotplug eth0 Inicia a configurao esttica da rede iface eth0 inet static Define o IP que fica configurado address 192.168.0.1 Define a Mascara de rede, neste caso de 24Bits netmask 255.255.255.0 Define o Broadcast de Rede (Parmetro opcional) broadcast 192.168.0.255 Define o Segmento de rede em que est o IP acima indicado. (Parmetro opcional) network 192.168.0.0 Define o Gateway de rede. (Parmetro opcional) gateway 192.168.0.254 Se voc tem dvida sobre o clculo do endreo de broadcast e network, sugiro a instalao do aplicativo ipcalc: # apt-get install ipcalc E depois coloque o ip para o ipcalc devolver todos os parmentros de configurao da sua rede. Exemplo: # ipcalc 192.168.0.1 A resposta desse comando, so todos os clculos para seu IP. Veja o resultado para o IP acima:

Exemplo: Um computador com uma placa de rede (eth0) devidamente configurada, ficaria com o arquivo interfaces desta forma: auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.10.7 netmask 255.255.255.0 gateway 192.168.10.254 Se deseja que o endereo seja atribudo de forma automtica: IntroduoaoLinuxGuilhermeEsmeraldo 72

73 auto eth0 allow-hotplug eth0 iface eth0 inet dhcp Obs: Toda a vez que o arquivo /etc/network/interfaces alterado, necessrio fazer a reconfigurao da rede. Para isso, basta reiniciar o servio de rede. # /etc/init.d/networking restart Para parar o servio de rede: # /etc/init.d/networking stop Para iniciar # /etc/init.d/networking start Para chegar se o endereo foi corretamente atribudo, use o ifconfig Obtendo endereo de IP via linha de comando: # dhclient Configurando Ips Virtuais: Se voc deseja que seu servidor responda por vrios Ips, necessria a criao de interfaces virutais. Isso pode ser feito diretamente com o comando ifconfig ou dentro do arquivo /etc/network/interfaces: Usando o comando ifconfig Basta colocar a interface seguida de dois pontos e o nmero da interface vitual. Iniciando em zero. Exemplos: Configura a placa de rede eth0 # ifconfig eth0 10.0.0.1 netmask 255.0.0.0 up Cria a interface virutal eth0:0 # ifconfig eth0:0 10.0.0.2 netmask 255.0.0.0 up Cria a interface virutal eth0:1 # ifconfig eth0:1 10.0.0.3 netmask 255.0.0.0 up Cria a interface virutal eth0:2 # ifconfig eth0:2 10.0.0.4 netmask 255.0.0.0 up Lembrando que um simples reboot no servidor acarretar na perca destas interfaces virtuais. Para tornar permanente, voc pode usar este comandos em arquivos que so lidos no boot como /etc/bash.bashrc ou usando o arquivo pertinente a esta tarefa /etc/network/interfaces Usando o arquivo /etc/network/interfaces auto eth0 IntroduoaoLinuxGuilhermeEsmeraldo 73

74 allow-hotplug eth0 iface eth0 inet static address 10.0.0.1 netmask 255.0.0.0 auto eth0:0 iface eth0:0 inet static address 10.0.0.2 netmask 255.0.0.0 auto eth0:1 iface eth0:1 inet static address 10.0.0.3 netmask 255.0.0.0 auto eth0:2 iface eth0:2 inet static address 10.0.0.4 netmask 255.0.0.0 No esquea sempre que voc altera o arquivo interfaces, necessrio a reinicializao dos servios de rede com o comando: # /etc/init.d/networking restart Fonte: http://dailson.blogspot.com/2009/05/configuracao-de-rede-no-debiangnulinux.html

7.2 Configurao: RedHat/Centos/Fedora

7.3 Configurao: Slackware

IntroduoaoLinuxGuilhermeEsmeraldo

74

75

8.1 Introduo
O Samba o servidor que permite compartilhar arquivos e acessar compartilhamentos em mquinas Windows. Ele dividido em dois mdulos, o servidor Samba propriamente dito e o "smbclient", o cliente que permite acessar compartilhamentos em outras mquinas. Usando o Samba, o servidor Linux se comporta exatamente da mesma forma que uma mquina Windows, compartilhando arquivos e impressoras e executando outras funes, como autenticao de usurios. Voc pode configurar o Samba at mesmo para tornar-se um controlador de domnio. A primeira verso do Samba, disponibilizada em 1992, foi escrita por Andrew Tridgell, um australiano ento estudante de cincias da computao. Como na poca a especificao do SMB utilizada pela Microsoft ainda era fechada, Andrew desenvolveu um pequeno programa, batizado de clockspy, para examinar os pacotes de dados enviados por uma mquina Windows e, assim, ir implementando uma a uma as chamadas de sistema utilizadas, um trabalho bastante complexo. O resultado foi um programa que rodava no Solaris (o sistema Unix desenvolvido pela Sun) e era capaz de responder s chamadas SMB como se fosse um servidor Windows. Este arquivo ainda pode ser encontrado em alguns dos FTPs do http://samba.org, com o nome "server-0.5". O objetivo desta primeira verso era apenas resolver um problema domstico: interligar um PC rodando o Windows 3.1 workstation Sun que ele tinha em casa. Na poca isso j era possvel utilizando um dos clientes NFS comerciais para DOS, mas Andrew precisava de suporte a NetBIOS para um aplicativo que pretendia utilizar, o WindX, um servidor X para Windows, que permitia rodar aplicativos via rede a partir do servidor Unix. At a o objetivo era apenas fazer o programa funcionar, no criar um sistema de compartilhamento de arquivos. Depois de algum tempo, Andrew recebeu um e-mail contando que o programa tambm funcionava com o LanManager da Microsoft, permitindo compartilhar arquivos de um servidor Unix com mquinas rodando o DOS. Andrew s acreditou depois de testar, mas ficou to maravilhado com o que havia conseguido que criou o projeto "NetBios for Unix" e comeou a recrutar voluntrios atravs da Usenet. Mais tarde o projeto passou a usar o nome Samba, que foi adotado no em apologia ao Carnaval, mas apenas porque uma das poucas palavras do dicionrio do Aspell que possui as letras S, M e B, de "Server Message Blocks". Em 94 a Microsoft liberou as especificaes do SMB e do NetBios, o que permitiu que o desenvolvimento do Samba desse um grande salto, tanto em recursos quanto em IntroduoaoLinuxGuilhermeEsmeraldo 75

76 compatibilidade, passando a acompanhar os novos recursos adicionados ao protocolo da Microsoft, que mais tarde novamente deixou de ser aberto. Hoje, alm de ser quase 100% compatvel com os recursos de rede do Windows 98, NT e 2000, o Samba reconhecido por ser mais rpido que o prprio Windows na tarefa de servidor de arquivos. Um dos pontos fortes do Samba que o projeto foi todo desenvolvido sem precisar apelar para qualquer violao de patentes. Todas as chamadas (com exceo das que a Microsoft tornou pblicas em 94) foram implementadas monitorando as transmisses de dados atravs da rede, uma espcie de engenharia reversa que no tem nada de ilegal. como se voc descobrisse como funciona um cdigo de encriptao apenas examinando arquivos encriptados por ele. Matemticos fazem isso a todo instante e muitas vezes so bem pagos para isso. Graas a este "detalhe", o Samba no corre o perigo de sofrer restries devido a aes judiciais. De qualquer forma, no existem sinais de que a Microsoft pretenda declarar guerra ao Samba. Pelo contrrio, foi a existncia do Samba que permitiu que a Microsoft conseguisse colocar PCs rodando o Windows em muitos nichos onde s entravam Workstations Unix, j que com o Samba os servidores Unix existentes passaram a ser compatveis com as mquinas Windows. Ou seja: de certa forma, o Samba foi vantajoso at mesmo para a Microsoft. Fonte: http://www.gdhpress.com.br/redeseservidores/leia/index.php?p=cap6-2

8.2 Instalao
O Samba dividido em dois mdulos. O servidor propriamente dito e o cliente, que permite acessar compartilhamentos em outras mquinas (tanto Linux quanto Windows). Os dois so independentes, permitindo que voc mantenha apenas o cliente instalado num desktop e instale o servidor apenas nas mquinas que realmente forem compartilhar arquivos. Isso permite melhorar a segurana da rede de uma forma geral. Os pacotes do Samba recebem nomes um pouco diferentes nas distribuies derivadas do Debian e no Fedora e outras distribuies derivadas do Red Hat. Veja: Pacote Debian Fedora Servidor: samba samba Cliente: smbclient samba-client Documentao samba-doc samba-doc Swat: swat samba-swat Lembre-se de que voc deve instalar todos os pacotes apenas no servidor e em outras mquinas que forem compartilhar arquivos. O Swat ajuda bastante na etapa de IntroduoaoLinuxGuilhermeEsmeraldo 76

77 configurao, mas ele opcional, pois voc pode tanto editar manualmente o arquivo smb.conf, quanto usar um arquivo pronto, gerado em outra instalao. Nos clientes que forem apenas acessar compartilhamentos de outras mquinas, instale apenas o cliente. O Fedora inclui mais um pacote, o "system-config-samba", um utilitrio de configurao rpida, que permite criar e desativar compartilhamentos de forma bem prtica. Outro configurador rpido o mdulo "Internet & Rede > Samba", disponvel no Painel de Controle do KDE. Neste livro abordo apenas o swat, que o configurador mais completo, mas voc pode lanar mo destes dois utilitrios para realizar configuraes rpidas. Com os pacotes instalados, use os comandos: # /etc/init.d/samba start # /etc/init.d/samba stop ... para iniciar e parar o servio. Por padro, ao instalar o pacote criado um link na pasta "/etc/rc5.d", que ativa o servidor automaticamente durante o boot. Para desativar a inicializao automtica, use o comando: # update-rc.d -f samba remove Pata reativ-lo mais tarde, use: # update-rc.d -f samba defaults No Fedora e Mandriva, os comandos para iniciar e parar o servio so: # service smb start # service smb stop Para desabilitar o carregamento durante o boot, use o "chkconfig smb off" e, para reativar, use o "chkconfig smb on". Note que, em ambos, o pacote de instalao se chama "samba", mas o servio de sistema chama-se apenas "smb". Fonte: http://www.gdhpress.com.br/redeseservidores/leia/index.php?p=cap6-3

8.3 Criando Compartilhamento no SAMBA


8.3.1 Cadastrando Usurios
Depois de instalado, o prximo passo cadastrar os logins e senhas dos usurios que tero acesso ao servidor. Esta uma peculiaridade do Samba: ele roda como um programa sobre o sistema e est subordinado s permisses de acesso deste. Por isso, IntroduoaoLinuxGuilhermeEsmeraldo 77

78 ele s pode dar acesso para usurios que, alm de estarem cadastrados no Samba, tambm esto cadastrados no sistema. Existem duas abordagens possveis. Voc pode criar usurios "reais", usando o comando adduser ou um utilitrio como o "user-admin" (disponvel no Fedora e no Debian, atravs do pacote gnome-system-tools). Ao usar o adduser, o comando fica: # adduser maria Uma segunda opo criar usurios "castrados", que tero acesso apenas ao Samba. Esta abordagem mais segura, pois os usurios no podero acessar o servidor via SSH ou Telnet, por exemplo, o que abriria brecha para vrios tipos de ataques. Neste caso, voc cria os usurios adicionando os parmetros que orientam o adduser a no criar o diretrio home e a manter a conta desativada at segunda ordem: # adduser --disabled-login --no-create-home maria Isso cria uma espcie de usurio fantasma que, para todos os fins, existe e pode acessar arquivos do sistema (de acordo com as permisses de acesso), mas que, por outro lado, no pode fazer login (nem localmente, nem remotamente via SSH), nem possui diretrio home. Uma dica que no Fedora (e outras distribuies derivadas do Red Hat), voc s consegue usar o comando caso logue-se como root usando o comando "su -" ao invs de simplesmente "su". A diferena entre os dois que o "su -" ajusta as variveis de ambiente, incluindo o PATH, ou seja, as pastas onde o sistema procura pelos executveis usados nos comandos. Sem isso, o Fedora no encontra o executvel do adduser, que vai na pasta "/usr/sbin". Os parmetros suportados pelo adduser tambm so um pouco diferentes. O padro j criar um login desabilitado (voc usa o comando "passwd usurio" para ativar) e, ao invs do "--no-create-home", usa a opo "-M". O comando (no Fedora) fica, ento: # adduser -M maria De qualquer uma das duas formas, depois de criar os usurios no sistema voc deve cadastr-los no Samba, usando o comando "smbpasswd -a", como em: # smbpasswd -a maria Se voc mantiver os logins e senhas sincronizados com os usados pelos usurios nos clientes Windows, o acesso aos compartilhamentos automtico. Caso os logins ou senhas no servidor sejam diferentes, o usurio precisar fazer login ao acessar. Um detalhe importante que, ao usar clientes Windows 95 ou 98, voc deve marcar a opo de login como "Login do Windows" e no como "Cliente para redes Microsoft" (que o default) na configurao de rede (Painel de controle > Redes).

IntroduoaoLinuxGuilhermeEsmeraldo

78

79 Depois de criados os logins de acesso, falta agora apenas configurar o Samba para se integrar rede e compartilhar as pastas desejadas, trabalho facilitado pelo Swat. A segunda opo editar manualmente o arquivo de configurao do Samba, o "/etc/samba/smb.conf", como veremos mais adiante. Neste caso, o ideal comear a partir de um arquivo pr-configurado, alterando apenas as opes necessrias. Voc pode baixar o arquivo modelo, que utilizado na instalao do Samba no Kurumin no http://www.guiadohardware.net/kurumin/modelos/. Fonte: http://www.gdhpress.com.br/redeseservidores/leia/index.php?p=cap6-4

8.3.2 Criando Compartilhamento


Toda a configurao do Samba, incluindo as configuraes gerais do servidor, impressoras e todos os compartilhamentos, feita em um nico arquivo de configurao, o "/etc/samba/smb.conf". Programas de configurao, como o Swat, simplesmente lem este arquivo, "absorvem" as configuraes atuais e depois geram o arquivo novamente com as alteraes feitas. Isso permite que o Swat coexista com a edio manual do arquivo. Como o formato bastante simples e conciso, muitas vezes mais rpido e at mais simples editar diretamente o arquivo do que atravs do Swat. O nico porm que o Swat remove todos os seus comentrios e formatao, deixando apenas as opes. O smb.conf possui as mesmas sees mostradas no swat: global, homes, printers, etc. Ao instalar o Samba atravs do cone mgico, instalado um smb.conf j prconfigurado com uma configurao de exemplo. A idia que o servidor j fique acessvel imediatamente depois da instalao e voc possa se concentrar em adicionar os usurios e compartilhamentos. Para abri-lo, com privilgios de root, voc pode digitar simplesmente "kdesu kedit /etc/samba/smb.conf" no terminal. Veja um exemplo do contedo do arquivo. Lembre-se de que as linhas iniciadas com # so comentrios, no interferem na configurao: # Arquivo de Configurao do Samba escrito para o Kurumin # Por Carlos E. Morimoto # Seo Globals: # Aqui vo parmetros gerais, como o nome da mquina e grupo de trabalho. [global] workgroup = GRUPO netbios name = KURUMIN server string = %h server (Samba %v) name resolve order = lmhosts, host, wins, bcast printcap name = lpstat encrypt passwords = Yes IntroduoaoLinuxGuilhermeEsmeraldo 79

80 wins support = yes preferred master = yes panic action = /usr/share/samba/panic-action %d invalid users = root preserve case = no short preserve case = no default case = lower os level = 100 [homes] comment = Home Directories create mask = 0700 directory mask = 0700 browseable = No [printers] comment = Todas as Impressoras path = /var/spool/samba guest ok = yes public = yes printable = yes browseable = yes use client driver = yes # Compartilhamentos: # Aqui vai a configurao das pastas compartilhadas. Voc pode criar mais # compartilhamentos usando o Swat ou editando diretamente este arquivo. # Veja como funciona a configurao: # # [publico] : O nome do Compartilhamento, como aparecer no ambiente de redes. # path = /home/samba_publico : A pasta local que est sendo compartilhada. # available = yes : O compartilhamento est disponvel? # Mudando para "available = no" ele ficar "congelado" e ningum poder acessar. # browseable = yes : O compartilhamento aparecer na rede? # Mudando para "browseable = no" ele virar um compartilhamento oculto # writable = yes : O compartilhamento fica disponvel para leitura e escrita. # writable = no : o compartilhamento fica disponvel para somente leitura. # Agora a sua vez: #[compartilhamento] # path = /pasta/pasta # available = yes # browseable = yes # writable = yes

IntroduoaoLinuxGuilhermeEsmeraldo

80

81 Se voc quiser criar um novo compartilhamento, chamado "arquivos", que d acesso pasta "/home/arquivos" e pode ser acessado em modo somente-leitura por todos os usurios cadastrados no Samba, bastaria adicionar as linhas: [arquivos] path = /home/arquivos available = yes writable = no Se voc quiser permitir que o compartilhamento fique com permisso de escrita e leitura, mas fique acessvel apenas pelos usurios "maria" e "joao" (os outros usurios no acessam nem para leitura), adicione a linha: "valid users = joao maria". A entrada ficaria: [arquivos] path = /home/arquivos available = yes writable = yes valid users = maria, joao Se preferir, voc pode continuar permitindo que os outros acessem o compartilhamento para leitura e criar uma lista de escrita, contendo a maria e o joao: [arquivos] path = /home/arquivos available = yes writable = yes write list = maria, joao Outra forma de limitar o acesso usar a opo "hosts allow" para permitir que apenas alguns endereos IP possam acessar os compartilhamentos, como em: [arquivos] path = /home/arquivos available = yes writable = yes hosts allow = 192.168.0.2, 192.168.0.5 possvel ainda combinar as duas coisas, permitindo que apenas a maria e o joao acessem o compartilhamento e, ainda assim, s se estiverem usando uma das duas mquinas permitidas, como em: [arquivos] path = /home/arquivos available = yes writable = yes write list = maria, joao hosts allow = 192.168.0.2, 192.168.0.5 IntroduoaoLinuxGuilhermeEsmeraldo 81

82 O Swat serve apenas como uma interface para a edio deste arquivo. Seja qual for o modo de configurao escolhido, basta fazer backups regulares deste arquivo para restaurar as configuraes do servidor em caso de problemas. Alm do arquivo smb.conf, salve tambm o arquivo "/etc/samba/smbpasswd", que contm os usurios e senhas. Sempre que alterar manualmente smb.conf, ou mesmo alterar algumas opes pelo Swat e quiser verificar se as configuraes esto corretas, rode o testparm (basta cham-lo no terminal). Ele funciona como uma espcie de debug, indicando erros grosseiros no arquivo. Depois de fazer qualquer alterao, reinicie o Samba usando o comando "/etc/init.d/samba restart" ou "service smb restart". O comando smbstatus tambm muito til, pois permite verificar quais estaes esto conectadas ao servidor e quais recursos esto sendo acessados no momento. Fonte: http://www.gdhpress.com.br/redeseservidores/leia/index.php?p=cap6-7

8.4 Montando Compartilhamento do SAMBA


8.4.1 No Windows
Neste ponto, a configurao do servidor Samba est pronta. Falta apenas configurar os clientes Windows para efetuarem logon no domnio. Nem todas as verses do Windows suportam este recurso. Como controladores de domnio so usados principalmente em redes de mdio ou grande porte em empresas, a Microsoft no inclui suporte no Windows XP Home e no XP Starter (tambm chamado jocosamente de "Miserable Edition"), de forma a pressionar as empresas a comprarem o XP Professional, que mais caro.

A configurao muda de acordo com a verso do Windows:

- No Windows 2000, acesse o "Meu Computador > Propriedades > Identificao de rede > Propriedades". Coloque aqui o nome do computador (que precisa ser um dos logins de mquinas adicionados na configurao do Samba) e o nome do Domnio, que definido na opo "workgroup =" do smb.conf. Para ter acesso a esta opo voc deve estar logado como administrador.

Na tela de identificao que ser aberta a seguir, logue-se como "root", com a senha definida no Samba. normal que a conexo inicial demore dois ou trs minutos. Se IntroduoaoLinuxGuilhermeEsmeraldo 82

83 tudo der certo, voc saudado com a mensagem "Bem-vindo ao domnio DOMINIO".

necessrio identificar-se como root ao fazer a configurao inicial, para que seja criada a relao de confiana entre o servidor e o cliente. A partir da aparece a opo opo "Efetuar logon em: DOMINIO" na tela de login, permitindo que o usurio faa logon usando qualquer uma das contas cadastradas no servidor. Continua disponvel tambm a opo de fazer um login local.

- No Windows 98 ou ME: Comece logando-se na rede (na tela de login aberta na inicializao) com o mesmo usurio e senha que ser usado para fazer logon no domnio. Acesse agora o "Painel de Controle > Redes > Cliente para redes Microsoft > Propriedades". Marque a opo "Efetuar Logon num domnio NT", informe o nome do domnio e marque a opo "Efetuar logon e restaurar conexes". Ao terminar, preciso fornecer o CD de instalao e reiniciar a mquina.

Note que as mquinas com o Windows 98/ME no so compatveis com todos os recursos do domnio, elas acessam o domnio dentro de uma espcie de modo de compatibilidade, onde podem acessar os compartilhamentos, mas no tm acesso ao recurso de perfis mveis, por exemplo.

- No Windows XP Professional o procedimento varia de acordo com a verso do Samba usada. Se voc est usando uma verso recente do Samba, da verso 3.0 em diante, a configurao muito simples, basta seguir os mesmos passos da configurao no Windows 2000.

Se, por outro lado, voc ainda est usando o Samba 2.x, a configurao um pouco mais complicada. Comece copiando o arquivo "/usr/share/doc/sambadoc/registry/WinXP_SignOrSeal.reg" (do servidor), que fica disponvel como parte da instalao do pacote "samba-doc". Esta uma chave de registro que precisa ser instalada no cliente.

Acesse agora as propriedades do "Meu Computador" e na aba "Nome do Computador" clique no boto "ID de rede". Ser aberto um Wizard que coleta o nome do domnio, nome da mquina e login de usurio. Lembre-se que necessrio efetuar o primeiro logon como root.

IntroduoaoLinuxGuilhermeEsmeraldo

83

84 Se no der certo da primeira vez, acesse o "Painel de controle > Ferramentas administrativas > Diretiva de segurana local > Diretivas locais > Opes de segurana" e desative as seguintes opes:

* Membro do domnio: criptografar ou assinar digitalmente os dados de canal seguro (sempre) * Membro do domnio: desativar alteraes de senha de conta da mquina * Membro do domnio: requer uma chave de sesso de alta segurana (Windows 2000 ou posterior)

Para confirmar se os clientes esto realmente efetuando logon no servidor, use o comando "smbstatus" (no servidor). Ele retorna uma lista dos usurios e mquina logadas, como em:

Samba version 3.0.14a-Debian

PID Username Group Machine ----------------------------------------------------4363 joao joao athenas (192.168.0.34)

Service pid machine Connected at ----------------------------------------------------joao 4363 athenas Sat Jul 9 10:37:09 2005

Fonte: http://www.gdhpress.com.br/redeseservidores/leia/index.php?p=cap6-9

8.4.2 No Linux
Nos clientes Linux, a forma mais prtica de acessar os compartilhamentos do Samba utilizar clientes grficos como o Smb4K e o mdulo smb:/ do Konqueror. Apesar disso, o Samba possui tambm um cliente de modo texto, o smbclient e possvel IntroduoaoLinuxGuilhermeEsmeraldo 84

85 tambm montar os compartilhamentos, funcionalidade que equivale opo "mapear unidade de rede" disponvel nos clientes Windows. possvel tambm fazer com que os compartilhamentos sejam montados automaticamente durante o boot, adicionando as entradas apropriadas no arquivo "/etc/fstab". Desta forma, os compartilhamentos so montados automaticamente durante o boot e ficam acessveis de forma permanente nas pastas especificadas por voc. Esta uma opo interessante em muitos ambientes, j que mais fcil para os usurios simplesmente acessarem os arquivos atravs de uma pasta, do que terem que montar o compartilhamento usando o Smb4K. O primeiro passo aprender a sintaxe da montagem dos compartilhamentos via linha de comando, j que as entradas do fstab utilizam os mesmos argumentos. Comeando do bsico, voc pode listar os compartilhamentos disponveis em um servidor da rede usando o comando: $ smbclient -L 192.168.1.254 -U gdh Veja que o comando especifica o endereo do servidor (voc pode usar tambm o nome na rede Windows) e a conta de usurio que ser usado para abrir a conexo. Depois de fornecer a senha, voc obtm uma lista dos compartilhamentos disponveis, como em: E230 Printer print$ Disk Drivers de impress_o para os clientes Windows arquivos Disk projetos Disk backup Disk IPC$ IPC IPC Service (Samba PDC) O exemplo mais simples para montar um dos compartilhamentos via linha de comando seria: # mount -t smbfs //servidor/arquivos /mnt/smb Aqui, estou montando o compartilhamento "arquivos" na pasta "/mnt/smb" (que deve ser previamente criada usando o comando mkdir). O "servidor" pode tanto ser o nome da mquina, dentro da rede Windows, quanto seu endereo IP. Como em outros comandos de montagem, voc precisa executar o comando como root. O comando mount um dos comandos mais tradicionais do Linux, que permite "mapear" um diretrio qualquer dentro de outro diretrio do sistema. A opo "-t" serve para especificar o sistema de arquivos, neste caso o "smbfs", usado para acessar compartilhamentos Windows. Note que a localizao do compartilhamento fornecida numa sintaxe muito similar que usaramos para mapear um compartilhamento no Windows, com a sintaxe "barra barra servidor barra compartilhamento". A nica diferena que aqui usamos barras "normais" ao invs IntroduoaoLinuxGuilhermeEsmeraldo 85

86 de barras invertidas. :) S para efeito de comparao, ao mapear o mesmo compartilhamento numa mquina Windows, teramos:

O problema com o comando acima que ele s funciona realmente ao montar compartilhamentos do Windows 98/ME, que no possuem senhas. No Windows 2000/XP/Vista (com exceo das estaes com o simple sharing ativado), voc vai receber uma mensagem de acesso negado, j que neles voc precisa se autenticar para obter acesso aos compartilhamentos. Para isso, necessrio incluir a opo "-o username=usuario" (tudo junto, sem espaos), especificando o login que ser usado, como em: # mount -t smbfs //servidor/arquivos /mnt/smb -o username=gdh possvel tambm especificar a senha diretamente no comando, o que permite usar o comando em scripts: # mount -t smbfs //servidor/arquivos /mnt/smb -o username=gdh,password=1234 Depois de montado o compartilhamento, os arquivos podem ser acessados normalmente, usando o Konqueror, Nautilus ou outro gerenciador de arquivos. muito similar ao acessar uma compartilhamento mapeado no Windows, a principal diferena que voc define uma pasta onde ele ser montado, ao invs de acess-lo atravs de uma letra, como "E:" ou "Z:". Uma peculiaridade do mount que os arquivos dentro da pasta montada passaro por padro a ser propriedade do root. Isso no altera as permisses de acesso dos arquivos no servidor (a mudana apenas local), mas impede que seu login de usurio consiga alterar os arquivos, mesmo que as permisses de acesso do Samba digam o contrrio. Para evitar isso necessrio adicionar a opo "uid=", especificando o login de IntroduoaoLinuxGuilhermeEsmeraldo 86

87 usurio (na mquina local) correto, como em: # mount -t smbfs //servidor/arquivos username=gdh,password=1234,uid=gdh /mnt/smb -o

A opo "uid=" interpretada localmente. O login especificado no repassado ao servidor Samba, de forma que voc pode usar qualquer conta de usurio local. Ele serve apenas para corrigir as permisses de acesso, de forma que voc possa alterar os arquivos normalmente usando seu login de usurio. O passo seguinte tornar a montagem permanente, j que, usando o comando mount, ela perdida ao reiniciar o micro. Para isso, inserimos uma nova linha no final do arquivo "/etc/fstab". A ordem dos parmetros fica um pouco diferente, mas voc notar que os parmetros continuam os mesmos que usamos no comando anterior: //servidor/arquivos /mnt/smb smbfs username=gdh,password=1234,uid=gdh 0 0 Caso necessrio, voc pode tambm indicar o grupo, junto com o usurio local, usando a opo "gid=", como em: //servidor/arquivos /mnt/smb username=gdh,password=1234,uid=gdh,gid=users 0 0 smbfs

O fstab um dos principais arquivos de configurao, por isso sempre importante ter cuidado ao edit-lo. Apenas adicione a nova linha, sem alterar as anteriores e lembre-se sempre de deixar uma linha em branco no final do arquivo. Um parmetro til que pode ser includo a opo "users" que permite que voc consiga montar e desmontar o compartilhamento usando seu login de usurio, sem precisar usar a conta de root. Para isso, adicione o parmetro "user", antes do "username=" (sem espaos), como em: //servidor/arquivos /mnt/smb smbfs users,username=gdh,password=1234,uid=gdh 0 0 A montagem e desmontagem neste caso feita indicando apenas o diretrio, como em "umount /mnt/smb" e "mount /mnt/smb". A principal observao que o smbmnt s aceita fazer a montagem em uma pasta de propriedade do usurio, por isso necessrio ajustar as permisses da pasta usando o comando chown, como em: # chown gdh.gdh /mnt/smb O "0 0" includo sempre no final da linha um parmetro passado sistema, que diz que ele no deve verificar o sistema de arquivos usando o fsck durante a inicializao, j que aqui estamos montando um compartilhamento de rede e no uma partio. Embora no seja muito recomendvel do ponto de vista da segurana, tambm IntroduoaoLinuxGuilhermeEsmeraldo 87

88 possvel escancarar as permisses, fazendo com que qualquer usurio logado no cliente Linux tenha acesso completo a todos os arquivos. Para isso, voc usaria o parmetro "smbpasswd,fmask=777,dmask=777", como em //servidor/arquivos /mnt/smb smbfs users,username=gdh,password=1234 smbpasswd,fmask=777,dmask=777 0 0 (tudo em uma nica linha) Como estamos adicionando as senhas dos compartilhamentos dentro do arquivo, tambm fortemente recomendvel manter as permisses de leitura do arquivo em "600", de forma que apenas o root tenha permisso para ver seu contedo. Para isso, use o comando: # chmod 600 /etc/fstab possvel montar diversos compartilhamentos, adicionando uma linha para cada um. No existe limitao para o nmero mximo de compartilhamentos que podem ser adicionados, mas voc deve ter cuidado de adicionar apenas compartilhamentos de servidores que fiquem ligados continuamente. Se o servidor estiver desligado durante o boot da estao, o boot do cliente vai demorar muito mais que o normal e o usurio ver o erro relacionado montagem do compartilhamento, o que no muito elegante, nem muito bom para sua reputao como administrador. :) Nos exemplos anteriores, especificamos as senhas de montagem dos compartilhamentos diretamente no arquivo "/etc/fstab". Mesmo protegendo o arquivo com o "chmod 600", muita gente afirma que isso um problema grave de segurana, j que algum que conseguisse obter acesso ao arquivo, obteria automaticamente as senhas dos compartilhamentos. Uma opo usar um arquivo externo para armazenar as senhas. Ele pode ser armazenado tanto dentro do diretrio /home/root, quanto dentro do home do usurio do sistema que tem acesso ao compartilhamento. Voc pode tambm usar diversos arquivos de senha, um para cada compartilhamento que precisa ser montado. Para criar os arquivos de senha, use os trs comandos abaixo, ainda como root: # echo "username=gdh" > /home/gdh/.smbpasswd # echo "password=1234" >> /home/gdh/.smbpasswd # chmod 600 /home/gdh/.smbpasswd Usado desta forma, o comando echo permite criar arquivos de texto e adicionar novas linhas. O primeiro comando cria o arquivo, adicionando a linha com o nome do usurio, enquanto o segundo adiciona a linha com a senha. Se por acaso o arquivo j existir, ele subscrito. Como o arquivo foi criado pelo root, o comando "chmod 600" usado no final faz com que, mesmo colocado dentro do home do usurio "joao", apenas o root tenha acesso IntroduoaoLinuxGuilhermeEsmeraldo 88

89 ao arquivo, evitando acidentes. Voc pode tambm criar o arquivo usando um editor de textos qualquer e ajustar as permisses manualmente. Neste caso, bastaria adicionar as duas linhas: username=gdh password=1234 Com o arquivo criado, voc pode modificar a(s) linha(s) no fstab, especificando a localizao do arquivo, ao invs de colocar o usurio e senha diretamente, como em: //servidor/arquivos /mnt/smb smbfs users,credentials=/home/gdh/.smbpasswd 0 0 ou: //servidor/arquivos /mnt/smb smbfs users,credentials=/home/gdh/.smbpasswd smbpasswd,uid=gdh,gid=gdh 0 0 (tudo em uma nica linha) Ao montar vrios compartilhamentos, que so acessados usando o mesmo login e senha, voc pode especificar o mesmo arquivo em todas as linhas, mas, no caso de diversos compartilhamentos, montados usando credenciais diferentes, voc deve criar arquivos separados para cada um e especificar o arquivo correto dentro da linha de montagem de cada compartilhamento. Voc pode criar quantos arquivos de senha diferentes quiser, mas cada arquivo deve conter um nico usurio e senha. Fonte: comando.html http://www.guiadohardware.net/dicas/compartilhamentos-samba-

IntroduoaoLinuxGuilhermeEsmeraldo

89