SobreoE-book Este livro tem como objetivo capacitar o leitor na utilização e administração de uma distribuição GNU/Linux. O livro não aborda em particular nenhuma distro¹, porém, os conceitos tratados são abrangentesdemodoquevocêpoderáteraliberdadedeescolherqualdelasutilizar.Olivrotambém abordaconteúdorelacionadoaoexame101dacertificaçãoLPI(LinuxProfessionalInstitute). O conteúdo do livro foi enxugado de modo que ele vai direto ao ponto, sem rodeios. Esta compactação é fruto da minha experiência de mais de dez anos atuando como professor do treinamentodeLPIC-1e2ecoordenandopedagogicamentecursosdeAdministraçãodesistemasem escolasparticulareseUnivesidades. Referências: Distro¹–AbreviaturaparaDistribuiçãodeGNU/Linux Tux4you²–Redesocialparaocompartilhamentodoconhecimentohumano www.rede.tux4.com.br Sobreoautorporelemesmo MeunomeéJulianoRamos,souconsultordeServidoresLinuxamaisdedezanos,certificadoLPIC3, Novell Linux e Ubuntu. Atuei na prefeitura de São Paulo coordenando trinta unidades de Telecentros(Centrosdeinclusãodigital)queeramimplantadosembairrosdebaixoIDH.Apóscinco anosàfrentedestetrabalho,seguiparaumaempresaprivadaatuandocomocoordenadorpedagógico em projetos para o terceiro setor e hoje atuo em minha própria empresa como consultor de TI e professor.SouativistadomovimentoOpenSourceepalestranteemeventoscomooCampusParty, masminhagrandeinspiraçãonavidaéseromantenedordaredesocialTux4youaqualsoutambém o criador. Esta mídia social diferente das outras é composta por pessoas que curtem compartilhar conhecimento. Neste espaço você ganha tempo e não “perde tempo”, hoje passamos de 50.000 membros, mas ainda existe um grande potencial a ser explorado, aguardo você por lá e excelente leituradestelivro. Créditos ADeus,quesemostroucriador,quefoicriativo.Seufôlegodevidaemmim mefoisustentoemedeucoragemparaquestionarrealidades eproporsempreumnovomundode possibilidades. Àminhaamadaesposa,porsuacapacidadedeacreditar emmim,mesmoquandoninguémmaisofez. Àminhapequenaluzefontedeinspiração Obrigadopeloseusorrisodiário Giovanna,minhafilha. Capítulo1–AorigemdoGNU/Linux Nestecapítulo: HistóriadoMultics–Unix–Minix–GNUeLinux Simbiose:LinuxeGNU SoftwareLivre SimbioseGNUeLinux No ano de 1964 o MIT (Instituto de Tecnologia de Massachusetts) junto com a divisão de computadoresdacompanhiaGeneraleletric(GE)eoslaboratóriosBelldeTelefoniainiciaramum projeto que estava muito adiante do seu tempo. Tratava-se da criação de um grande sistema operacional de “Tempo Compartilhado”. Em um sistema de tempo compartilhado a capacidade e o processamentodamáquinaédivididoentremúltiplosusuários,queacessamatravésdeterminais.O usuário dirige a sua tarefa, seus comandos são interpretados e executados em seguida (processamentoonline). Segundo a visão dos seus criadores, haveria imenso computadores, poderosos e inderrubáveis, rodando Multics, sendo acessados por milhares de pessoas em "terminais" espalhados por todo o planeta.Essesusuáriospagariamsuas"contasdocomputador"comohojepagamosluz,águaeTVa cabo. No ano de 1969 os laboratórios Bell abandonaram o projeto, sua divisão de computadores foi comprada pela Honeywell em 1970 que tentou usar de forma comercial o MULTICS sem sucesso. Comdurascriticasoprojetoficouabandonadoetevesuaúltimainstalaçãooperacionaldesligadaem 31deoutubrode2000.Apesardoinsucessodesteprojeto,oMULTICSfoioiníciodeumarevolução nomododesefazereusarsistemasoperacionais. UNIX KenThompson,trabalhavaparaaGEdesenvolvendooMULTICS.Quandoaempresaabandonouo projetoem1969elecomeçouareescreverosistemanumconceitomenosambicioso,batizando-ode Unicseusandoalinguagemdemontagem(assembly).Mastarde,osistemafoirebatizadodeUnix pôrBrianKernighanquefoipioneironodesenvolvimentodaslinguagensdeprogramaçãoAWKe AMPL. UmmarcoimportantenomundoUNIXaconteceuem1973quandotodoosistemafoiportadode Assembly (linguagem de máquina) para a “Linguagem C” . A linguagem de programação C foi criadapôrDennisRitchie,semsombradedúvidas,grandepartedosucessodoUnixeseusderivados é por causa desta linguagem de programação. A linguagem C foi influência para as linguagens de programaçãorecentes,taiscomo:C++,Java,C#,PHPeJavascript.Ritchiemorreuem12deoutubro de 2011, uma semana após a morte de Steve Jobs. Sua morte só foi noticiada em alguns portais especializados,bemdiferentedoqueaconteceucomJobs. MINIX “Umaopçãolivre,decódigofonteaberto,paraseaprenderUNIX”. Andrew S. Tanenbaum criou o sistema operacional MINIX para explicar o funcionamento dos sistemasoperacionais.Tanenbaumlançouumlivroem1987chamado"OperatingSystemDesignand Implementation"quecontinha12.000linhasdecódigodokernel,gerenciadordememóriaesistemas dearquivos.EstesistemaeracompatívelcomasétimaediçãodoUNIX,porém,eradecódigoaberto e disponível. Os cursos universitários de Tecnologia, começaram a usar o MINIX que rodava em computadoresmodestos;paraexplicarofuncionamentodosistemaoperacionalUNIX,proprietário, caríssimoequeexigiaumsupercomputador. GNU “OiniciodoconceitodeSoftwareLivre” RichardMatthewStallman,ouRMSnasceuem16demarçode1953,fundadordoprojetoGNUe dafundaçãodosoftwarelivreéumdosativistasmaisatuantesemfavordosoftwarelivrenomundo. Seu primeiro contato com um computador aconteceu no ano de 1969 no primeiro ano do ensino médio (High School), Stallman passou o verão escrevendo seu primeiro programa - um préprocessador para a linguagem de programação PL/1 no IBM 360. "Eu escrevi primeiro em PL/1, passandoentãoparaalinguagemdemáquina(assembly)quandooprogramaPL/1tornou-segrande demaisparacabernocomputador".ContouStallman,anosdepois(Williams2002,Capítulo3). Nosanosde1980aconteceuo"Odeclíniodaculturahacker"queatéentãodominavaavidade Stallman.Aportabilidadedossoftwarestornou-seumproblemaparaosfabricantesdecomputadores, quecomeçaramanãodivulgarocódigofontedosseussoftwaresdemodoqueosconcorrentesnão poderiam utilizá-lo. Quando esta nova cultura de softwares proprietários atingiu o MIT onde RMS trabalhava, ele a rejeitou. Negou-se a assinar acordos de não-divulgação de informação. Ele escolheu,aocontrário,compartilharseutrabalhocomosoutros,oqueconsideroucomoumespírito clássicodecolaboraçãocientífica.Noanode1984StallmanparouseutrabalhonoMITparadedicarseintegralmenteaoseuprojetoGNU,anunciadoemsetembrode1983. Noanode1985RMSpublicouoManifestoGNU¹. Referência: http://www.gnu.org/gnu/manifesto.pt-br.html GNUeoKernel OGNUéumsistemaoperacionalquefoicriadonospadrõesUNIXporémcomumcódigopróprio queélivreparaserdistribuído,usado,melhoradoecopiado.Porémde1985quandofoilançadoo manifestoGNUaté1992osistemaoperacionalGNUnãoestavaprontoparaserdistribuído,faltavalheumkernelquefosserealmenteutilizável. Kernel(Núcleo)éosoftwarequefazagestãodoHardwaredoseucomputador,eleservedeponte entre os aplicativos e o processamento real de dados feito a nível de Hardware. O sistema GNU iniciou o desenvolvimento de um kernel chamado HURD em 1990 porém por um erro de desenvolvimento este projeto acabou ficando estagnado. De acordo com Thomas Bushnell, o arquitetoinicialdoHurd,oplanoinicialeraadaptarokernel4.4BSD-lite(Eistoprovavelmentedaria certo de acordo com Bushnell) para o sistema GNU, porém, Stallman propôs que eles usassem o Mach microkernel que estava sendo desenvolvido na universidade Carnegie Mellon (CMU). Esta escolhaatrasouodesenvolvimentoemtrêsanos,devidoaincertezaseaCMUirialiberarocódigo do Mach em uma licença de acordo com o GNU. Neste intervalo de incertezas algo surpreendente aconteceu. OKernelLinux O projeto GNU seguia firme com vários desenvolvedores abraçando a causa, foram criadas ferramentasindispensáveisparaumsistemaoperacional,comoumcompiladorparaalinguagemC, editores de texto entre outras aplicações. Em 1992 o sistema já estava "quase" pronto, mas ainda faltava um kernel funcional. Neste ano um jovem Finlandês chamado Linus Torvalds, mudou a licençadeumkernelquetinhadesenvolvidoapartirdoMinix,deacordocomsuaspalavras(Eraum Minix melhor que o Minix) para a licença livre GPL do projeto GNU. Então, não demorou muito para os desenvolvedores empacotarem o Kernel Linux, com as dezenas de softwares GNU já disponíveiscriandoumsistemaoperacionalcompleto. ASimbiose Simbiose é uma relação mutualmente vantajosa entre dois ou mais organismos vivos de espécies diferentes.Explicaroqueé"simbiose"foiamelhormaneiraqueencontreiparaexplicarosucesso doGNU/Linux,umdependiadooutro.SemalicençalivredoprojetoGNUchamadadeGPL(GNU GeneralPublicLicense)oLinuxnãoteriaalcançadoseusprimeirosdesenvolvedoresvoluntáriosque tornaram o código utilizável em larga escala, além disto, para o usuário final, foram os softwares aplicativos(GNU)quetornaramosistemaoperacionalrealmenteoperacional. FreeSoftware AFSF-FreeSoftwareFoundationemportuguês(FundaçãodoSoftwareLivre)éumaorganização sem fins lucrativos, fundada em 04 de outubro de 1985 por Richard Stallman e que se dedica a eliminação de restrições sobre a cópia, redistribuição, estudo e modificação de programas de computador.Noanode1989RichardStallmanlançoupelaFSFalicençaGPL(GnuPublicLicense)LicençaPúblicaGeralquegarantiaaosdesenvolvedoresdoprojetoGNUqueumsoftwarelivreseria semprelivre.Stallman,compreendeu,queseriamuitodifícileliminarasleisdeCopyright(direitos autorais)então,eleusouestaleiafavordesuasideias,criandooconceitodeCopyleft(Esquerdos autorais). A GPL é uma licença com Copyleft, isto significa que ela é "viral", ou seja, quando um programador usa um código GPL e altera/modifica este código ele também deve deixar estas modificaçõessobreGPL.MasquaisliberdadesaGPLgarante?Sãoquatroliberdadesbásicas: ALiberdadeparausarosoftware ALiberdadedeestudarosoftware ALiberdadedecopiarecompartilharosoftwarecomoutros ALiberdadeparamodificarotrabalhoetambémparadistribuirostrabalhosmodificadose derivados Com a garantia destas liberdades, a GPL permite que os programas sejam Administrando o linuxdistribuídosereaproveitados,mantendo,porém,osdireitosdoautorporformaanãopermitir que essa informação seja usada de uma maneira que limite as liberdades originais. A licença não permite,porexemplo,queocódigosejaaponderadoporoutrapessoa,ouquesejamimpostossobre elerestriçõesqueimpeçamquesejadistribuídodamesmamaneiraquefoiadquirido.Comopassar dos anos, outras licenças livres foram desenvolvidas, algumas mais outras menos permissivas, a Fundaçãodosoftwarelivreconsideralivreumalicençaqueatendapelomenosasquatroliberdades. A GPL ganhou uma segunda versão em 1992 (GPLV2) e a uma terceira versão em junho de 2007 (GPLv3)queéaversãoatual. DistribuiçãoGNU/Linux VocêpodeusarosistemaoperacionalGNUcomokernelHURD(Nãoestável),BSDoucomoLinux (Mais comum e recomendado). Neste caso, é comum chamarmos de distribuição GNU/Linux. Uma distribuiçãoGNU/Linux(distro)éumsistemaoperacionalcompleto,istoincluionúcleo(linux),um conjunto de pacotes (softwares), um sistema de gestão de pacotes e um repositório. Algumas distribuições foram criadas e são mantidas por pessoas e/ou comunidades de voluntários, outras porém, são mantidas por empresas. A primeira distribuição de GNU/linux foi lançada em 1992 chamada de MCC Interim Linux, em seguida surgiu a SLS (Softlanding Linux System) e ainda que não tenha durado muito, foi a base para a criação da distro Slackware (Que até hoje está em evidência).Em1993IanMurdochlançouoDebianLinux,enoanoseguintevieramoRedHatLinux eoSuSeLinux. Capítulo2–SobreasdistribuiçõesdeGNU/Linux Nestecapítulo ConheçaasprincipaisdistribuiçõesdeGNU/Linux Debian,Slackware,Fedora,Ubuntu,ArchLinux,TrisquelLinux Debian ODebianfoilançadoem16deAgostode1993porIanMurdock,aotempoestudanteuniversitário, queescreveuoManifestoDebianqueapelavaàcriaçãodeumadistribuiçãoLinuxasermantidade uma maneira aberta, segundo o espírito de Linux e do GNU. O projeto Debian cresceu vagarosamenteaté1995quandooprojetodpkgganhounotoriedade. O dpkg é a base de gerenciamento de pacotes da distribuição linux Debian. Foi inicialmente criadoporMattWelsh,CarlStreetereIanMurdockcomoumaaplicaçãoPerl,sendoposteriormente reescrito,emsuamaiorparte,paraalinguagemC(Linguagemdeprogramação)porIanJacksonem 1993.Odpkgéumsoftwareparainstalar,removereatualizarprogramas.Aprimeiraversão1.xdo Debianaconteceuem1996. OciclodedesenvolvimentodasversõesdoDebianpassatrêsfases: “Unstable”-Instável “Testing”-Teste “Stable”-Estável Quando as versões estão na fase “testing” elas são identificadas por codinomes tirados dos personagens do filme “Toy Story”. Ao se tornarem “Stable” as versões recebem um número de versão(ex:5.0). Aversão“Testing”atualé“Stretch”.Aversão“Unstable”terásempreonomeSid,personagem quecostumavaaquebrarosbrinquedos,emalusãoaosbugsquepodemocorrernestaversão. SlackwareLinux OSlackwareéumsistemaoperacionalbaseadoemprojetosoficiaisdesoftwarelivre,desenvolvido porpessoasespalhadasnomundoorganizadasemcomunidadeseinstituições,sendoaprincipaldelas aFSF(FreeSoftwareFoundation)comseusprojetoselicenciamentosGNULGPLdesoftwarelivre. UtilizaoKerneloficialdaLinuxFoundation,Linux.Onome“Slackware”tevesugestivaorigemda “TheChurchOftheSubGenius”(IgrejadoSubgênio)queéumaorganizaçãoreligiosaoriginalmente baseada em Dallas, no estado estadunidense do Texas, a igreja do Subgênio ganhou destaque nas décadas de 1980 e 1990 e mantêm uma presença ativa na internet. A igreja ganhou espaço com a popularizaçãodainternetem1990comumsiteelaboradamentedecoradoedois“newgrous Usenet” (alt.slackealt.binaries.slack)epeloprogramaderadiosemanal(Hourofslack). PatrickVolkerdingcriadordoSlackwareincorporoudaIgrejadoSubgênioestenome,deonde idealiza-se o termo “SLACK” que, satírica e ironicamente, incorpora-se o “Senso de liberdade, independência e originalidade para alcançar suas metas pessoais”. Como a tradução literal de “SLACK”é“Preguiça”e“WARE”é“Produto”muitosassociamonomecomo“Produtopreguiçoso” principalmenteporqueoSlackwarenãousasoftwaresdelançamento,somenteversõesestáveis,além disto, todas as configurações do sistema são feitas diretamente nos documentos de texto de configuraçãoenãocomutilitáriosgráficos. O Slackware Linux (ou simplesmente “Slack”) tem como objetivo manter-se fiel ao padrões UNIX, mantendo-se bem estruturada e organizada para administradores e usuários, profissionais e acadêmicos,rejeitandoferramentasdeconfiguraçãoqueescondamorealfuncionamentodosistema adotando o princípio KISS (Acrônimo em inglês de: Keep It simple, stupid – Faça isto simples, estúpido)deprodução.AprimeiraversãodoSlackware,o1.0.0,foilançadaem16ou17dejulhode 1993porPatrickVolkerding,fundadoreprogramadorlíderdoprojetoatéosdiasatuais. O Slackware possui seu próprio gerenciador de pacotes, o pkgtool, e traz os comandos de gerenciamento: installpkg, upgradepkg, removepkg, explodepkg, makepkg; todos sem gerenciamento de dependências. O formato dos pacotes .tgz/.txz são bastante similar a um .tar.gz, contendoapenasosarquivosasereminstaladosemsuasrespectivaspastasemrelaçãoàpastaraizdo sistema,alémdeumscriptcomcomandoscomplementaresparaainstalação. Fedora FedoraantigamentechamadodeFedoraCoreéumsistemaoperacionalquetemporbaseolinux,a distribuiçãolinuxécompletamentelivredecustosparapoderusufruirepartilhar.FoicriadapelaRed Hat.AtualmentemantidapeloprojetoFedora(FedoraProject)epatrocinadopelaRedHat. O gerenciador de pacotes do Fedora é o RPM (Red Hat Package Manager), o RPM serve para instalar, atualizar, desinstalar, verificar e procurar softwares. Até a versão 17 o instalador era semelhante ao da distribuição Red Hat 9, na versão 18 o sistema de instalação foi totalmente reformulado.NovasversõesdoFedorasãolançadasaproximadamenteacadaseismeses.Alémdas versões oficiais, o Fedora possui também uma versão instável, o Rawhide, que serve como um campodeprovasparatodasasatualizaçõesemudançasquefarãopartedapróximaversão. O Fedora distribui software absolutamente livre que tem um instalador gráfico completo, vem comferramentasdesktopedeadministraçãofáceisdeusar.Fedoraéonomedeumclássicochapéu quesurgiunadécadade20. Ubuntu UbuntuéumadistribuiçãobaseadanoDebianpatrocinadapelaCanonicalLtd.OUbuntudiferencia-se doDebianporterversõeslançadassemestralmente,pordisponibilizarsuportetécniconos9meses seguintes ao lançamento de cada versão (as versões LTS – Long Term Support – Para desktop e servidorrecebem5anosdesuporte)epelasuafilosofiaemtornodesuaconcepção.Apropostado Ubuntu é oferecer um sistema que qualquer pessoa possa utilizar sem dificuldades, independentemente de nacionalidade, nível de conhecimento ou limitações físicas. O sistema dever serconstituídoprincipalmenteporSoftwareLivre.Devetambémserisentodequalquertaxa. O nome “Ubuntu” - [u'buntu] deriva do conceito sul africano de mesmo nome, diretamente traduzido como “Humanidade com os outros” ou “sou o que sou pelo que nós somos”. O ubuntu assimcomooDebianutilizapacotesnoformato.DEBquepodemserinstaladospeloutilitáriodpkg ouapt. Um grande diferencial do Ubuntu em relação as outras distribuições de GNU/Linux é a sua interfacegráficaUnity.OUnityfoidesenvolvidopelacomunidadeAyatanaeadaptadopelaCanonical Ltd. Sua primeira aparição foi na versão 10.10 para netbooks, ele foi desenhado inicialmente para fazer um uso mais eficiente do espaço das telas limitadas dos netbooks, devido ao seu sucesso, tornou-sepadrãonaversão11.04queaindaincluíaoGNOMEcomoopção.DiferentedoGNOME, KDE, XFCE e LXDE o Unity não inclui aplicações, já que foi feito para usar programas GTK+ já existentes.Apartirdaversão11.10doUbuntuoUnitypassouaseraúnicainterfacepadrão. Opensuse ApósadquiriroSuselinuxemjaneirode2004,aNovell,umaempresaAmericanaquenadécadade 1980ficoufamosaporseusistemaoperacionalderede(Netware)incentivouodesenvolvimentode umacomunidadeparaodesenvolvimentodeumadistribuiçãoGNU/Linux.AcomunidadeOpenSuse ProjectépatrocinadapelaNovellecontacomvoluntáriosdetodoomundo. OpenSuseécompletamentelivreedisponívelparadownload,elestambémvendemumDvd-Box para o público em geral que deseja colaborar com o projeto. O OpenSuse possui edições para arquiteturas x86 e x86-64. O OpenSuse é compatível com o RPM (Red Hat Package) e possui seu própriogerenciadordepacotesZypperquefuncionadeformasimilaraoapt-getdoDebian. ArchLinux OArchassimcomooSlackwareéumadistribuiçãoKISS.Osistemaébaseadoemtornodearquivos binários,quesãoclassificadoscomoi686ex86_64,sendoumsistemaparecidocomosports/ebuild estádisponivelparaacompilaçãoautomáticadospacotes,trata-sedoArchBuildSystema. OArchLinuxéconsideradoumadasdistribuiçõesmaisdifíceisdeseinstalar,istoporquê,não existe um programa de instalação. Você vai realizando tarefas através de scripts que simplificam o processo. O gerenciamento de pacotes é feito pelo pacman que conduz a instalação, atualização e remoçãoeatualizaçãodepacotes. TrisquelLinux Oprojetonasceuem2004comopatrocíniodaUniversidadedeVigo,efoioficialmenteapresentado emAbrilde2005comRichardStallman,fundadordoprojetoGNU.Oprojetohospedaseuspróprios repositórios,quederivamdo“main”e“universe”doUbuntu,porémtodoosoftwareproprietárioou comlicençasnãolivressãoeliminados.OTrisquelestánalistadedistribuiçõeslivresdaFSF. Capítulo3–InstalandooLinux Nestecapítulo: Passossobreainstalação AnalisandooHardware UsandoumLive-CD Instalandoolinuxpelopendrive ParticionandooDiscorígido Quando você compra um computador, normalmente ele possui o Microsoft Windows préinstalado.SevocêpretendeusaroLinux,deverárealizarasuainstalação. O processo de instalação de uma distribuição GNU/Linux costuma ser fácil. A parte que normalmente causa fobia nos novatos é o particionamento do disco, o resto da instalação é rotina, apenas uma questão de seguir instruções. Se você ainda não se sente confortável para instalar o Linux, tudo bem, você poderá realizar o download de uma distribuição Live-CD e executá-la sem precisaralterarnenhumamodificaçãonoseudiscorígido.Todoosistemanestecasofuncionapelo CDouDVD,quandovocêreiniciaocomputadoreremoveoCDdodrive,todasassuascoisasestão lá,intactas. Porém, quando você executa o sistema pelo CD/DVD e até mesmo pelo pendrive, não terá o mesmodesempenhoeprazerqueéusarolinuxnativamenteemseucomputador. PassosdainstalaçãodoLinux Instalar qualquer distribuição de Linux envolve uma série de passos. Vou orientá-lo sobre estas etapasdemodoquevocêpoderáinstalarqualquerumaseguindoasorientaçõesdosinstaladores. Algumas distribuições de Linux exigem que você tenha um pouco de informação sobre o hardware do seu PC. Felizmente a grande maioria das distribuições instala de forma automatizada todososseusperiféricos,exemplo:UbuntuLinux,OpenSuse,FedoraeLinuxMint. 1)Oprimeiropassoévocêrealizarodownloaddesuadistribuição.Nositeoficialécomumo link para a seção download com diferentes arquiteturas. Escolha 32 Bits se seu computador tem menos de 4GB de memória RAM e um processador mais antigo, opte pela versão 64 Bits se seu processadorémaismodernoevocêpossui4GBoumaisdememóriaRAM. É padrão que a distribuição seja disponibilizada no formato (ISO) – Imagem de disco. No Windows, clique com o botão direito do mouse sobre a imagem da distro que você realizou downloadeescolhaaopção“gravadordeimagensdediscodowindows”. 2) O Segundo passo é configurar no Setup do seu PC a inicialização pelo CD/DVD. As etapas específicasparaentrarnaconfiguraçãodoSetupedefinirodispositivodebootvariadecomputador paracomputador.NormalmentevocêacessaoSetupcomumatecla(F2ouDelete)apósligaroPC, movimentando-se com as setas do teclado, você localiza a opção (Boot) e coloca o CD/DVD em primeiro lugar da ordem de boot. Após isto é necessário salvar o Setup, fechar e iniciar o computadorcomoCD/DVDdesuadistronodrive. 3) Caso sua distribuição seja Live, você poder escolher a opção de testar a distribuição. Neste caso, após reiniciar o computador remova o CD/DVD. Nenhuma alteração será realizada no seu discorígido. 4)SevocêpretendeinstalaroLinux,antesdequalquercoisa,façaumbackupdeseusarquivos (em outro HD, Disco Rígido externo, em algum HD virtual como o dropbox ou google drive). Se vocêpretendeinstalarjuntocomoWindows(DualBoot)demodoquepossaescolherqualusarna inicializaçãodocomputador.InstaleprimeirooWindowsereserveumespaço(pelomenos20GB) para o Linux. Instaladores como os do Ubuntu, OpenSuse, Fedora, já vão detectar este espaço e ofertá-lo para você instalar o sistema. Caso o instalador pergunte sobre em qual local instalar o gerenciadordeboot(gruboulilo)selecioneMBR. 5)Seleçãodesoftwares.Agrandemaioriadasdistribuiçõesjáinstalamumconjuntodepacotes (softwares) de modo automático. Se você é iniciantes sempre escolha as opções (default) dos instaladores. 6)Nofinaldainstalaçãovocêvaireiniciaroseucomputador.Lembre-sederemoveroCD/DVD paranãoiniciarnovamenteoprocessodeinstalação.DistribuiçõescomooFedora,OpenSuseeOpen Mandriva,oferecempacotesadicionaisnoprimeiroboot. AnalisandooseuHardware Se você está preocupado se seu PC pode ou não rodar o Linux, aqui está uma lista das principais consideraçõesantesdecomeçaroprocessodeinstalação. UnidadedeDVD:VocêdeveterumaunidadedeDVDequeseucomputadorsejacapazde iniciarporestaunidade.Omodeloexatonãoimporta.SevocêadicionarumaunidadedeDVD externaaumaportaUSBfuncionarásemproblemasnolinux. DiscoRígido:QualquerunidadedediscoIDE/SCSIfuncionanolinux.Parausarasdistribuições atuaisconfortavelmente,tenhapelomenos20GBdeespaço. Teclado:TodosostecladosvãofuncionarnoLinux. Monitor:Otipodemonitornãoéparticularmentecrítico,excetoqueeledevesercapazde exibirasresoluçõesdetelaqueaplacadevideousa.Seoinstaladornãodetectaroseumonitor vocêpodeescolherummodelogenérico. Mouse:Oprogramadeinstalaçãopodedetectaromouse.Todosostiposdemouse(comoPS/2 ouUSB)vãofuncionarnoambientegráficodoLinux(XWindowSystem). Placaderede:Normalmenteoinstaladorirádetectaretentarconfigurar(DHCP)suaplacade rede.Sevocêtiverproblemas,tenteencontrarnaplacaamarcaeomodelo,procurenos buscadoresinformaçãodecomoprocederparainstalarnasuadistroespecifica. Placadesom:SeoseuPCtiverumaplacadesom,façaumapesquisacomamarcaemodelona WEBparatercertezaseelaécompatívelcomolinux. PlacadeVídeo:Linuxfuncionabemcomtodasasplacasdevídeo(Tambémconhecidoscomo adaptadoresdevídeo),algunsmodelosporémnãopossuemsuporte3Devocêpodeter problemascomaltasresoluções,destacoaqui,osadaptadoresSYSqueestãoemNotebooks maisantigos,dalinhaPositivo.Sevocêusaumadaptador:Intel,NvidiaouATIfiquetranquilo comoLinux. Impressora:Esteéumhardwarequevocêdevepesquisarmarcaemodeloparasaberseé compatívelcomoLinux.Equipamentosquepossuemumbomsuporte(tratando-sede impressoras)sãoosfabricadospelaHP. VocêpodevisualizarumalistadeHardwarecompatívelcomolinux,nesteendereço: http://www.tldp.org/HOWTO/Hardware-HOWTO/ InstalaçãodoUbuntuLinux Este livro não aborda em particular nenhuma distribuição de Linux, no entanto, abordaremos o processodeinstalaçãodoUbuntuLinuxqueconsideroomaissimplesefácilparausuáriosiniciantes. Ligue o computador, coloque o CD/DVD do Ubuntu. Deixe o computador prosseguir com a inicializaçãodoinstalador.Hojeemdiaagrandemaioriadoscomputadoresnovosjásaemdefábrica com a configuração para dar boot pela unidade de CD/DVD-ROM, portanto, se o seu computador não estiver com esta configuração definida, você deverá entrar no setup da sua máquina para setar essaopção. A figura abaixo mostra a tela de configuração da linguagem a ser utilizada. Vamos escolher a linguagemPortuguêsdoBrasiledarumcliquenobotãoInstalaroUbuntu: Na tela que aparecer em seguida, Preparando para instalar Ubuntu, selecione a opção Instalar esseprogramadeterceiroeentãocliqueemContinuar. Caso seu computador não possua nenhum sistema operacional, a tela Tipo de Instalação, irá aparecer conforme imagem abaixo. Dê um clique na primeira opção (Apagar disco e reinstalar Ubuntu)edepoisumcliquenobotãoInstalarAgora. Casovocêtenhaalgumsistemaoperacional,vocêteráaopção(Apagaroseusistemaoperacional einstalaroUbuntu). Na próxima tela, Onde você está?, dê um clique na região do mapa onde você se encontra e cliquenobotãoContinuar: NatelaDisposiçãodoteclado,vejaqueautomaticamenteoinstaladorjámarcaexatamenteotipo de layout do seu teclado. Se você estiver em dúvida se o layout do seu teclado foi configurado corretamente,bastavocêdigitaralgumaspalavrasacentuadasnocampo"Digiteaquiparatestaro seu teclado". Se a configuração estiver incorreta, você poderá dar um clique no botão Detectar a disposição do teclado. Quando terminar e o teclado estiver corretamente configurado, clique em Continuar: Agora nesta próxima tela (Quem é você?), você deverá fornecer algumas informações necessárias ao instalador. Veja no exemplo abaixo como fizemos o preenchimento e ao término cliqueemContinuar: Ao término da cópia dos arquivos, clique no botão reiniciar agora lembre-se de remover o CD/DVDdodrive. Capítulo4–Noçõesfundamentais Nestecapítulo: NoçõesfundamentaissobreoShell Históricodecomandos GerenciamentodeArquivos FiltrosdeTexto OShell O Shell é um interpretador de comandos que analisa o texto digitado na linha de comandos e os executaproduzindoalgumresultado.Sevocêestáusandoomodográfico,aperteasteclas:ctrl+alt+f1 paraacessaromodo-texto. OsprincipaistiposdeShell: bash,sh,csh,tcsh,kshezsh,sendoobash,oshellpadrãonamaioriadasdistribuiçõesdeLinux. PromptdoShell Osímbolo$(dólar)identificaopromptdecomandosdoshell.Algumasvariaçõesdestesímbolo sãopermitidas,comoonomedeusuário,docomputador,diretóriocorrenteentreoutrasopções. Simbologia Opromptdoshellpodevariar,dependendodousuárioqueestáutilizandoosistemanomomento. Osinal“$”significaqueumusuáriocomuméqueestáusandoamáquina.Osinal“#”significaqueo super-usuárioestálogadonosistema. Root–TambémconhecidocomoSuperUsuário Osuper-usuárioéoadministradordosistemaLinux.Eletempoderesparafazerabsolutamente tudonosistema.Eleéconhecidocomousuário“root”ou“raíz”traduzindodoinglês. VariáveisAmbientais Durante a execução do bash algumas variáveis são carregadas, elas também, podem ser configuradasmanualmente. PromptSting1 A primeira variável que abordaremos é a “prompt string 1” ou simplesmente PS1, esta variável guardaoconteúdodopromptdecomandosdobashquandoeleestáprontopararecebercomandos. Oconteúdodequalquervariávelpoderáservisualizadoutilizandoocomandoechoeonomeda variável: echo$PS1 Geralmenteopromptéexibidodaseguintemaneira: juliano@trisquel:/home$ Querepresenta: nomedeusuário@nomedocomputador:/diretório Navariáveléconfiguradodaseguintemaneira: \u@\h:\W\$ VejamosaseguirumatabelacomoscaracteresdaPS1: \] Termina \t Exibeahora \h Exibeohostname(nomedocomputador) \s Exibeoshell \u Especificaonomedousuário \w Especificaodiretóriocorrente ExemplodeconfiguraçãodavariávelPS1,abraseuterminaldecomandosedigite: PS1=”\u@\h:\W:” PromptString2 AvariávelPS2armazenaoconteúdodopromptdecomandosquandoénecessáriomúltiplaslinhasde comandosparacompletarumcomando.Estavariáveléosimboloqueapareceparaousuárioquando umcomandonecessitaseguirparaumasegundalinha. VariáveisGlobaleLocal Existemdoistiposdevariáveisdeambiente:Globalelocal. Variáveisdeambientelocal: São as variáveis disponíveis pelo shell corrente, e que não estão sendo acessadas por subprocessosdosistema.Paravisualizarasvariáveisdeambientelocais,executeoscomandosenv ouprintenv.Asvariáveisglobaispodemseracessadasporqualquershell. Comandosparamanipularasvariáveisdeambiente: echo Exibeovalordeumavariáveldeambiente,exemplo: echo$USER Especificarumintervalodetempo(Emsegundos)antesdeexecutaropróximocomando: sleep Exemplodeusodocomandosleep: sleep5 Paratornarglobalumavariaveldeambienteuseocomandoexportcomonoexemplo: VALOR=10 exportVALOR Executareexportarcomandoscontidosemumarquivonoshellcorrente: alias Exemplodocomando: aliascor='ls–color' Noexemploacima,criamosumcomandochamado(cor)queaoserutilizado,executaocomando ls–color.Sevocêdesejarqueestecomandoexistaapósreiniciaroseucomputadordeverácriarou editar(casojáexista)oarquivo.bashrclocalizadonoseudiretóriodeusuário.Observequenafrente donomedoarquivoexisteumponto(.bashrc)noambienteUnix,istorepresentaumarquivooculto. Sevocêestáemumterminaldecomandospelomodográfico,podeexecutaroseueditordetextojá abrindooarquivo,nestecaso,digiteocomando: gedit/home/seu_usuario/.bashrc Sevocênãotemoeditorgedit,tentecom(kedit,xedit,pluma).Vocêtambémpodeabrirumeditor emmodo-texto,omaissimpleséonanonestecasouse: nano/home/seu_usuario/.bashrc Coloquenoarquivoalinha: aliascor='ls–color' No caso do editor nano, salve o documento com as teclas: <ctrl+o> e saia do editor com as teclas: <ctrl+x> Paraexcluirovalordeumavariáveldeambiente,executeocomandounset. Exemplo: unsetVALOR Variáveisdeambientedobash Vejamosagora,algumasvariáveisdegrandeutilizaçãodoshellbash: MANPATH Exibeosdiretóriosondeocomandomanencontrasuaspáginasdemanual. echo$MANPATH DISPLAY Exibeoterminaldoambientegráficoatualmenteusado,exemplo: echo$DISPLAY HOME Exibeodiretóriohomedousuário echo$HOME TERM Exibeoterminalatualmenteutilizado; echo$TERM LOGNAME Exibeologindousuário echo$LOGNAME USER Exibeonomedeusuário echo$USER LANG Exibeoidiomadosistema echo$LANG HISTSIZE Defineovalormáximodecomandosdohistory. echo$HISTSIZE OSTYPE Exibeaarquiteturadosistema. echo$OSTYPE HistóricodeComandos OShellmantémumhistóricodosúltimoscomandosdigitadospelousuário,podendoservisualizado pelocaractere!De4formasdiferentes: !! Visualizaroúltimocomandodigitados !n Onde n é o número que você deve especificar que está no histórico de comandos. A cada comandoquevocêdigitaeleficararmazenadoemumalista. !string Comandosqueiniciamcomostringquevocêespecificar.(String:éumasequênciadecaracteres, normalmentepalavras). !-n Onde n é o numero que você deve especificar (Ele mostra a partir do último comando do histórico). history Exibealistadecomandosdigitados.Opçõesmaisutilizadas: history-r Usa como histórico o arquivo (/home/usuario/.bash_history) ao invés de usar o histórico de comandosglobal. history-w Reescreveoarquivo(/home/usuario/.bash_history) history-c Limpaohistóricodecomandos. Aliases(Apelidosdecomandos) Usamosocomandoaliasparacriarapelidoquesãocomoatalhosparacomandos.Oseuarquivode configuraçãoficalocalizadonoarquivo(/home/usuario/.bashrc). Exemplo: aliascor=`ls–color' Paraapagarumapelidodecomando,usamosocomandounalias: unaliascor Entrandocomcomandosnoshell CadacomandoUnix/Linuxpossuiumasintaxeúnicaepodehavervariaçõesdependendodesua distribuiçãodeLinux. Algunscomandospodemrequereropções,geralmenteprecedidospelosimbolo“-”ou“--”e porargumentos. OcomandoprecisaserválidoeestarnosdiretórioslistadosdavariávelPATHoucomsua localizaçãoabsoluta. Aoabriroterminaldecomandosdigitels,exemplo: ls Observequeelenãonecessitadenenhumargumentoouopçãoparaserexecutado. Nocasodestecomando,asopçõespodemserconfiguradasseparadamenteoucombinadas: ls-a Mostratodososarquivosdoseudiretórioincluindoosocultos(queiniciamcomponto). -t Mostraosarquivosordenadospelaúltimadatademodificação. Paraalgunscomandosasopçõestêmdeserprecedidascomdoistraços“--”aoinvésdeumtraço. OBS:Algunscomandosoferecemformasalternativasdeindicarumamesmaopção.Nocasodo “ls”asopções“-a”e“--all”produzemomesmoefeito. Man,HelpeInfo ObviamentevocênãoaprenderáoudecorarátodasasopçõesdoscomandosUnix/Linuxdeumanoite para o dia. Talvez nunca consiga e isto, não é realmente necessário. Para a salvação de nós meros mortais,temososcomandos:man,helpeinfo. Sintaxedocomandoman: mannome_do_comando Sintaxedocomandoinfo: infonome_do_comando Sintaxedocomandohelp nome_do_comando–help GerenciamentodeArquivos OFilesystemHierarchyStandard(Padrãoparasistemasdearquivoshierárquicos),ouFHS,define os principais diretórios, e o seu conteúdo, em um sistema operacional Linux ou do tipo Unix. A versão atual é a 2.3, anunciada em 29 de janeiro de 2004. O FHS é mantido pelo Free Standards Group, uma organização sem fins lucrativos formada por importantes empresas de hardware e software, como HP, Red Hat, IBM e Dell. Ainda hoje, a grande maioria das distribuições de GNU/Linux,incluindomembrosdaFreeStandardsGroup,nãoadotamfielmenteopadrãoproposto. Em particular, diretórios (paths) criados pela FHS, como o /srv/, não foram adotados em grande escala.AlgunssistemasUnixeLinuxrompemcomopadrãoFHS,comooGoboLinux.OMacOSx utiliza uma estrutura com nomes legíveis para humanos em conjunto com um sistema baseado em FHS. Paravisualizartodaaestruturadearquivosdesuadistribuição /bin/ Comandosbináriosessenciaisparatodososusuários. /boot/ ArquivosdoBootLoader /dev/ Dispositivos,exemplo:/dev/null /etc/ Arquivosdeconfiguraçãoespecíficosdocomputador. /etc/opt/ Arquivosdeconfiguraçãoparao/opt/. /etc/X11/ ArquivosdeconfiguraçãoparaoXWindowSystema,Versão1.1 /etc/sgml/ ArquivosdeconfiguraçãoparaSGML /etc/xml/ ArquivosdeconfiguraçãoparaXML /home/ Diretóriosdeusuários.(Opcional) /lib/ Diretóriocomasbibliotecasessenciaisparaosarquivosbinárioscontidosnosdiretórios/bin/e /sbin/. /mnt/ Sistemasdearquivos“montados”temporariamente. /media/ Pontosde"montagem"paramídiaremovível,comoCD-ROMs(surgiramnaversão2.3doFHS). /opt/ Pacotesestáticosdeaplicações. /proc/ Sistemasdearquivovirtual,quepossuioestadodonúcleoeprocessosdosistema;amaioriados arquivosébaseadanoformatotexto(ex:tempodeexecução,rede). /root/ Diretóriohomeparaosuperusuário(root).(Opcional) /sbin/ Arquivosbináriosparapropósitodeadministraçãodosistema. /tmp/ Arquivostemporários.(Vertambém/var/tmp). /srv/ Dadosespecíficosquesãoservidospelosistema. /usr/ Hierarquiasecundáriaparadadoscompartilhadosdeusuários,cujoacessoérestritoapenaspara leitura. /usr/bin/ Omesmoqueahierarquiadotopo(/bin),mascontémapenasarquivosnãoessenciais(quenão sãonecessáriosparaqueosistemafuncioneouparaasuarecuperação). /usr/include/ Diretóriopadrãoparaarquivosdotipoheader. /usr/lib/ Omesmoqueahierarquiadotopo(/lib). /usr/sbin/ O mesmo que a hierarquia do topo, mas contém apenas arquivos não essenciais (ex: daemon e serviçosderede) /usr/share/ Dadoscompartilhadosquesãoindependentesdaarquiteturadocomputador.. /usr/src/ Códigofonte(ex:códigofontedonúcleodosistema) /usr/X11R6/ XWindowSystem,Versão11R6. /usr/local/ Hierarquiaterciáriacomdadoslocais,específicosdestehost. /var/ Arquivos"variáveis",comologs,basededados,páginasWebearquivosdee-mail. /var/lock/ Arquivosdelock.Utilizadosparamanterocontrolesobrerecursosemuso. /var/log/ Arquivosparalog.Utilizadoparalogdedadosemgeral. /var/mail/ Caixasdeemaildosusuáriosdosistema. /var/run/ Contéminformaçãosobreaexecuçãodosistemadesdeasuaúltimainicialização.(ex:usuáriose daemonsemexecução). /var/spool/ Spoolparatarefasemesperaparaexecução.(ex:filasdeimpressãoeemailsaindanãolidos). /var/spool/mail/ Local para caixas de correio dos usuários. Não deve ser mais utilizada, existe apenas para compatibilidaderetroativa. /var/tmp/ Arquivostemporários.Quandoemmodomulti-usuário,preferívelemrelaçãoao/tmp. Comandosdegerenciamentodearquivos Ocomandocpcopiaarquivosediretórios.Elepodeserutilizadoparacopiarapenasumarquivoou múltiplosarquivos. Exemplo: cparquivo1arquivo2 Noexemploacima,copiamosoarquivo1paraarquivo2criandoestearquivo. cparquivo1/home/juliano/documentos/arquivo2 Noexemploacima,copiaroaquivo1paraumdiretórioespecífico(/home/juliano/documentos) Asopçõesmaisfrequentesdocomandocp,são: cp-d Preservaoslinksaocopiarosarquivos cp-p Preserva todas as informações dos atributos do arquivo, como dono do arquivo, grupo, permissõesedata cp-R Copiaarquivosrecursivamente,ouseja,copiadiretórioscomconteúdo. cp-f Forçaumacópia,sobrescrevendosenecessários cp-v Mostraonomedecadaarquivocopiado. Exemplodacopiadeumdiretóriocompleto: cp-R/home/juliano/home/backup Noexemploacima,todooconteúdododiretório(/home/juliano)irápara(/home/backup). Comando:mv Omvmoveourenomeiaarquivosediretórios.Elenãoalteraosatributosdosarquivosoudiretórios movidosseatransferênciaforomesmosistemadearquivos.Seodestinoparaondeosarquivosou diretóriosforemmovidosnãoexistir,ocomandorenomeiaaorigem,senãoosdadosserãogravados porcima. Noexemploabaixo,renomeia-seoarquivo1paraarquivo2: mvarquivo1arquivo2 Noexemploabaixo,move-seoarquivo1paraodiretório/tmp. mvarquivo1/tmp Comando:rm Ocomandorm é utilizado para remover arquivos. Você só pode remover arquivos que você tenha permissão de gravação. O super usuário (root) pode remover arquivos e diretórios dos outros usuáriosdosistema. Asopçõesmaisutilizadas: -fForçaaremoçãodosarquivossemperguntaraousuários -RRemoveumdiretórioetodooseuconteúdo Exemplos,removendooarquivotexto.txt: rmtexto.txt Pararemoverumdiretóriocomconteúdo: rm-Rdiretório Exemplo: rm-R/opt/agenda Noexemploacima,odiretório(agenda)seráremovido. Vocêtambémpodeforçararemoçãocomocomando: rm-Rfdiretório Comandomkdir O comando mkdir é utilizado para criar um diretório. Você precisa ter permissão de escrita no diretóriocorrenteparaexecutaromkdir,exemplo: mkdirmusicas No exemplo acima, foi criado o diretório “musicas” no diretório corrente. Para criar um diretórioespecificandosualocalização,faça: mkdir/home/juliano/documento/administrativo No exemplo acima, foi criado o diretório administrativo dentro do diretório /home/juliano/documento/ Asopçõesmaisfrequentes,são: mkdir-p Criaodiretórioespecificado,mesmoqueodiretório“pai”nãoexiste.Nestecasoelecriatambém odiretório“pai”.Exemplo: mkdir-pcorreios/sedex Noexemploacimafoicriadoodiretóriocorreioquechamamosdepaieosubdiretóriosedex, casovocêapagueodiretóriopai“correio”vocêtambémiráapagarseussubdiretórios(filhos),neste caso“sedex”. Comandormdir Ocomandormdir,removeumoumaisdiretóriosdosistema.Odiretórioprecisaestarvazio. Exemplo: rmdir/home/documentos Removeodiretóriodocumentosdentrododiretóriohome. Para remover diretórios com conteúdo, use o comando rm, exemplo: rm -R /home/juliano/documentos Comando:touch Ocomandotouchmudaadataehoradeacessoe/oumodificaçãodosarquivos. Asopçõesmaisutilizadassão: touch-aarquivo Mudaadataehoraparasuahoraatual. touch-marquivo Mudasomenteadataehorademodificaçãoparaaatual touch-t201503112100arquivo No exemplo acima, estou configurando a data de criação do arquivo para: ANO (2015), MÊS (03),DIA(11),HORA(21:00).Nestecaso:201503112100. FiltrosdeTexto Veremos agora alguns comandos de filtro de texto que estão disponíveis em praticamente todas as distribuiçõesdeGNU/Linux. Ocomandocat Usandoocomandocatparacriararquivosdetextopuro: cat>texto.txt Noexemploacimavocêirádigitarconteúdodetextoqueseráarmazenadonoarquivo(texto.txt). Aofinaldasuadigitação,pressioneasteclasctrl+demumalinhavazia.Istoirásalvaroarquivo (texto.txt). Paravisualizarumarquivodetexto,useocomando: cattexto.txt Paraconcatenararquivos,executeocomando: cattexto1>texto2 Noexemploacimaoconteúdodetexto2ésubstituídopeloconteúdodetexto1.Paraacrescentar conteúdosemsubstituiroconteúdojáexistenteutilize>>aoinvésde>,comonoexemplo: cattexto1>>texto2 Nesteexemplooconteúdodetexto1éadicionadoaotextojáexistentenoarquivotexto2. Ocomandocut Ocomandocut(cortar)lêoconteúdodeumoumaisarquivorecortandoverticalmenteestetexto. Exemplo: Crieemtextochamado(planilha)comoseguinteconteúdo: coluna1,coluna2,coluna3 10,2,8 12,9,10 15,30,25 90,120,245 Observequeodelimitadordecada(coluna)éosinaldevírgula.Emalgunscasopoderiaser(:) dois pontos ou (;) ponto e vírgula. Para visualizarmos somente o conteúdo da segunda coluna do arquivoplanilhaexecutamosocomando: cut-d,-f2planilha Entendendoocomandoacima: -ddelimitador. Configuraodelimitadorqueseparaumacolunadeoutra.Opadrãoé“tab”,nocasodoexemplo (planilha)usamos(virgula). -fNúmero. Definaonúmerodacolunaqueseráexibida,nestecasofoio2(segundacoluna). Ocomandoexpand Ocomandoexpandtrocaotab(tabulação)dentrodotextoparaumnúmerodeespaçosdeterminado pelousuário.Exemplo: Crieumarquivochamadotabulacao.txtcomoconteúdoabaixo: Fuscaazul GolVermelho SantanaPreto No exemplo acima utilizei três vezes a tecla <tab>. Visualize primeiramente o comando com o cat. cattabulacao.txt Agora execute o comando expand especificando o número de espaços que substituirão a tabulação,exemplo: expand-t1tabulacao.txt Tente,-t2,-t3,etc... Comando:fmt O comando fmt formata um texto com uma largura específica. Ele pode remover espaços ou adicionarespaçosconformealarguradesejada,opadrãoé75caracteres. Aopçãofrequentementeutilizadaé: fmt-w50leiame.txt Nesteexemplo,definimos50comolarguradesejadaparaoarquivo(leiame.txt). Comandohead Ocomandoheadmostraasprimeiras10linhasdoiniciodotexto.Aopçãofrequentementeutilizada é: head-n50leiame.txt Nesteexemploas50primeiraslinhasdoarquivo(leiame.txt)serãomostradas. Comando:Join Ocomandojoinuneaslinhasdedoisarquivosquepossuamíndicecomum,exemplo: Crieoarquivofruta.txtecoloqueoseguinteconteúdo: 1maça 2uva 3melancia Agora,crieoarquivopreco.txtecoloqueoseguinteconteúdo: 1R$2,00Reais 2R$4,00Reais 3R$5,00Reais Executeagoraocomandojoinparaconcatenarosdoisarquivos: joinfruta.txtpreco.txt Oresultadoserá: 1maçaR$2,00Reais 2uvaR$4,00Reais 3melanciaR$5,00Reais Ocomandopr Preparaumarquivodetextoparaimpressão.Exemplo: pr-l70-o30fruta.txt Onde: -l Especificaonúmerodecaracteresdelarguradepágina.Opadrãoé66caracteres. -o Especificaonúmerodeespaçosdemargemesquerda. Ocomandotac Ocomandotacéoinversodocomandocat,elemostraoconteúdodeumarquivodetextodetrás parafrente.Exemplo:tacarquivo.txt Ocomandotail Ocomandotailvisualizaas10últimaslinhasdeumarquivo.Funcionacomooopostodocomando head. Asduasopçõesmaisutilizadasdocomandotailsão: -n Especificaonúmerodelinhasfinaisqueotailirámostrardeumarquivo -f Mostraasúltimaslinhasdeumarquivocontinuamente.ÚtilparaarquivodeLOG. Exemplo: tail-n50/var/log/meulog tail-f/var/log/meulog Ocomandowc Ocomandowccontaaslinhas,palavrasecaracteresdeumarquivo.Exemplo: wcteste.txt Ocomandoxargs O comando xargs utiliza a saída padrão de um comando como argumento para outro comando, exemplo: cattexto.txt|xargsecho Nesteexemplo,cadalinhadoarquivotexto.txtépassadacomoargumentoparaocomandoecho. Capítulo5–EditoresdeTextoemmodo-texto Nestecapítulo: Editordetextonano Editordetextomcedit EditordetextoVIeVIM Editornano OEditornanoéumeditordetextopuromuitoutilizadonoUnixeLinux.ParainstalarnoDebiane similares|RedHatesimilaresuseoscomandos: Debian/Ubuntu apt-getinstallnano RedHat/Fedora: yuminstallnano Paraabrirumarquivoutilize: nanonome_do_arquivo Neste editor você realiza as opções como Salvar, Copiar, Cortar e Colar através de teclas de atalhos.Vejamos: ctrl+g Exibeaajuda ctrl+b Moveocursorumcaractereatrás ctrl+n Moveocursorumalinhaabaixo ctrl+f Moveocursorumcaractereàfrente ctrl+p Moveumalinhaacima ctrl+d Recortaocaractere ctrl+k Recortaalinha ctrl+c Exibeaposiçãodocursor ctrl+A Vaiparaoiniciodalinha ctrl+E Vaiparaofimdalinha ctrl+j Justificaoparágrafoatual ctrl+V Avançaumatela ctrl+y Retrocedeumatela ctrl+u Colatextooudesfazjustificação ctrl+w Localizastringdotexto ctrl+t Verificaortográfia ctrl+r Abreumarquivo ctrl+o Salvaoarquivocomoutronome ctrl+x Sai Editormcedit O editor mcedit ou mc é bastante fácil de ser utilizado. Inclusive com o uso do mouse mesmo no modo-texto.ParainstalarnoDebianederivados|RedHatederivados,execute: Debianederivados: apt-getinstallmc RedHatederivados: yuminstallmc Abrindoumarquivo: mceditoumc-enome_do_arquivo Aseguirumalistacomasteclasdeatalhodomcedit: F1 Exibeaajuda F2 Salvaoarquivocorrente F3 Marcaoiniciodobloco F4 Substituitexto F5 Copiaoblocomarcadocomf3 F6 Moveblocomarcadocomf3 F7 Procuretexto F8 Apagalinhacorrente F9 Abreomenu F10 Sai F12 Salvarcomo EditordetextoVIeVIM OeditorVItantonoUNIXcomonoLinuxserveparacriararquivosdetextoescriptsshells,assim comoeditá-los.OeditorVIpossuidoismodos:Edição,quandovocêapertaatecla(I)ou(insert).Eo mododecomando,quandovocêapertaatecla(ESC). IniciandooVI Digitenobash: viouvinome_de_arquivoaperteiparaescrevereescparasaireexecutaroscomandos: :q(Enter) Sairdoarquivosemsalvar :q!(Enter) Sairsemsalvar,forçando :wq(Enter) Salvaoarquivoatualesaidovi :w(Enter) Salvaoarquivoatual :warquivo1(Enter) Salvaoarquivoatualcomoarquivo1 :earquivo1(Enter) Abreoarquivo1 :rarquivo1(Enter) Insereoarquivonopontoondeestáocursor. :u(Enter) Desfazaúltimaação,similiaractrl+z :doudd(Enter) Apagaalinhacorrente :yy Copiaalinhaondeestáocursor :p Colaotexto :dd Apagaalinhaondeestáocursor :i Inserirumtexto :s/velho/novo Substituiapalavravelhopelapalavranovo. %s/velho/novo/g substituaemtodooarquivo(%),todas(g)asocorrênciasdevelhopornovo Além dos comandos de edição do texto como já vimos, existem comandos para configurar o EditorVIM,sãoeles: :setaw Salvaacadaalteração :setnu Mostraonúmerodaslinhas :setff ConverteoarquivoparaDOS :setet Trocatabporespaços Capítulo6–PermissõesdeArquivos Nestecapítulo: Visualizandopermissões Configurandopermissõesemarquivosediretórios Permissõesdeacessoaarquivosediretórios Nestecapítuloestudaremososistemadepermissõesdolinux.Osistemadepermissõespermiteao administrador do sistema (root) definir o nível de acesso ao usuários, grupos e outros arquivos e diretóriosalémdeprogramasexecutáveis. As permissões de acesso protege o sistema de algumas invasões e respectivos programas não autorizados.Porexemplo,nolinux,podemosimpedirquealgumprogramamaliciosoinstale-sena máquina, delete algum arquivo ou que seja transferido para outras pessoas via rede, de modo a invadiroutrossistemas. 3níveisdepermissão Olinuxgerenciaosistemadeprivilégiosem3tipos: 1.Privilégiododono 2.PrivilégiodoGrupo 3.Privilégiodeoutros Cadaumdestestipossãodivididosem3níveisdepermissõesdeacesso: 1.Permissãodeleitura(r) 2.Permissãodeescrita(w) 3.Permissãodeexecução(x) Asdefiniçõesdepropriedadedousuárioedogrupofazempartedoinodeeambassãoatribuídas quandoumarquivoécriado.Geralmente,oproprietárioéousuárioquecriouoarquivo.Ogrupodo arquivo normalmente é definido como padrão do seu criador. A propriedade de grupo adiciona flexibilidade em situações nas quais uma equipe compartilha arquivos. Os “outros” usuários são aqueles que não são membros do grupo do arquivo e também não são os proprietários. Para cada umadessastrêsclassesdeusuários,omododeacessodefinetrêstiposdepermissões,queseaplicam diferentementeparaarquivosediretórios.Aspermissõesencontram-selistadasnalistaabaixo: Examinaroconteúdodeumarquivoepoderlistá-lo: r Escreveroumodificarumarquivo.Criarouremoverarquivosdeumdiretório: w Executarumarquivocomoumprograma.Acessarodiretório. x Essastrêspermissõesseaplicamastrêsclassesdiferentesdeusuários:usuários,grupoeoutros. Cadaumatempermissãodeleitura,escritaeexecução. Visualizandoprivilégiosepermissões Vocêpodevisualizaraspermissõesdearquivosediretórioslistando-oscomocomando: ls-l/home/usuario (Visualizaprivilégiosepermissõesdearquivos) ls-ld/home/usuario (Visualizaprivilégiosepermissõesdediretórios) Aoexecutarocomandols-lvocêterácomoretorno,algosemelhantea: drwx------...2wester.............512Jan...2923:30..Arquivos/ -rw-rw-r--...1wester.......280232Dec..1622:41...notas.txt Oprimeirocaracteredaslinhasacimaindicamotipodearquivo: dDiretório bArquivodebloco cArquivoespecialdecaractere pCanal sSocket -Arquivo“normal”. Repareagoraquenorestantedastringaindahá9caracteres.Quesãoos3níveisdepermissões (Dono,grupoeoutros).usandooexemplodasegundalinha,arquivo(notas.txt): rw-Permissõesdoproprietários rw-Permissãodogrupo r--Permissãoparaoutros Listadepermissõescomuns: --Nenhumapermissão r-Permissãodeleitura r-x Leituraeexecução rw- Leituraegravação rwx Leitura,gravaçãoeexecução Paraconfigurarumarquivousandoaspermissõesdomodotextual(quevimosatéomomento) usamosocomando: chmodu+rw,g+w,o-rwxarquivo.txt Onde: U–Representaousuário G–Representaogrupo O–Representaoutros PermissõesemsistemaOctal Além de podemos configurar as permissões do modo textual. Podemos usar o modo octal, neste caso: r=4 w=2 x=1 Sevocêsomaros3números,vaiobter7,quesignificapermissãototal,ouseja,rwx.Exemplo: chmod764arquivo.txt Osrespectivosvaloressão: rwx=7(Dono–Acessototal) rw-=6(Grupo–LeituraeGravação) r--=4(Outros–Acessoaleitura) Capítulo7–UsuárioseGrupos Nestecapítulo: Gerenciamentodeusuários Gerenciamentodegrupos AdicionandoeRemovendousuários Arquivosdeconfiguraçãodosusuários ParaadministrarusuáriosnoGnu/Linuxénecessárioconheceroscomandosuseraddeadduser, adiferençaentreeleséqueouseraddéumbinárioeoadduseréumscript. Vocêpodeverificarestainformaçãoexecutandoocomando: file/usr/sbin/useradd Ocomando“file”verificaotipodoarquivo. Qualdoscomandoseudevoutilizar? Parapersonalizarumacontadeusuárionomomentodesuacriaçãoocomandoidealéouseradd poisneleépossívelpassarváriasopçõesdeparâmetrosnomomentodacriação.Ocomandoadduser é um script em Perl que utiliza a base do useradd, com ele a criação é automatizada, apenas respondendo-seperguntascomo:Nome,Senha,Telefone,E-maileetc… Criandoumnovousuáriocomuseradd useradd-m-c“JulianoRamos”-s/bin/bashjuliano Opçõesutilizadasnocomandodeexemplo: -m Cria o diretório home do usuário no momento da criação (/home/usuario) o diretório é criadocomomesmonomedousuário. -cDefineocomentário,comoonomecompletodousuário,porexemplo. -sDefineoshellpadrãodesteusuário,noexemplo:(/bin/bash) O comando useradd cria o usuário, ele não define sua senha. Para isto, você deve executar o comandopasswd.Exemplo: passwdjuliano Criandoumnovousuáriocomadduser Outilitáriodecriaçãodeusuáriosadduserémaiscomulmenteutilizado,pelofatodeporpadrãojá criarodiretório/homeedefinirasenhadousuário. adduserjuliano Paraverficarinformaçõessobreousuário,vocêpoderáusarocomandofinger,emmuitoscasos deverárealizarsuainstalação.NocasodoDebianederivados: apt-getinstallfinger Adicionandonovosgrupos Paraadicionarnovosgruposnolinux,utilizeoscomandosgroupadd e addgroup, a diferença entre eleséquegroupaddéumbinárioeaddgroupumlinksimbólicoparaoscriptadduser. Lembrandoquevocêpodeverificaristocomocomandofile. file/usr/bin/groupadd Criarumnovogrupocomaddgroup Ocomandoparaacriaçãodenovosgruposé: addgroupnome_do_grupo Agora que temos usuários e grupos em nosso sistema, vamos gerenciá-los através de alguns comandos.Épossívelporexemplo,bloquearacontadeumusuárioeforçá-loatrocarsuasenhaem seuprimeirologin,paraistousamosocomandochage: chage-d0juliano Paratrocarasenhadeumusuáriousamosocomando: passwdjuliano Parabloquearologindeumusuário,usamos: usermod-Ljuliano Paradesbloquearologindesteusuário,usamos: usermod-Ujuliano Paramodificaradescriçãodeumusuário,usamos: usermod-c“JulianoOliveira”juliano Mudandoologindeumusuário Ousuário“Juliano”agoradeveráser“Grubelilo”.Oprimeiropassoémudaronomedousuário: usermod-lgrubelilojuliano Agoraquejámudamosonomedologin,vamosalteraroseudiretório/home,primeirovamos criá-lo: mkdir/home/grubelilo Adicioneagoraumnovogrupocomonomedousuário: addgroupgrubelilo Mudeodonodogrupoparaonovodiretório: chowngrubelilo.grubelilo/home/grubelilo Altereogrupoprincipaldousuário: usermod-ggrubelilogrubelilo Altereodiretóriopadrãodousuário: usermod-d/home/grubelilogrubelilo Gerenciandogruposdosistema Agoraquejáadicionamosnovosgruposeusuáriosaosistema,vamosaprendercomogerenciá-los através de comandos. É possível por exemplo, alterar o grupo principal de um usuário, tornar um usuárioadministradordeumgrupoentreoutrasopções. Adicionandoumusuárioaogrupo gpasswd-aalunotux4you Removendoumusuáriodeumgrupo gpasswd-dalunotux4you Tornandoumusuárioadministradordogrupo gpasswd-Aalunotux4you Quando um usuário se torna administrador de um grupo ele tem permissão para adicionar e removerusuáriosdogrupo,adicionareremoversenhasdogrupo. Adicionandosenhaaogrupocomusuáriocomum: gpasswdlogistica Trabalhandocomarquivosdeusuáriosegrupos Atéaquirealizamosasconfiguraçõesdosusuáriosegruposatravésdecomandos,mas,épossívelo gerenciamentousandoarquivosdosistema. Bloqueiodeusuários Parabloquearologindeumusuário,acesseoarquivo:/etc/passwd,adicioneosinalde!antesdo nomedousuário: nano/etc/passwd !aluno:x:1004:1007:AlunoTux;;;:/home/aluno:/bin/bash Loginsemsenha: Abraoarquivo/etc/passwdeapagueoxentreosdois:(doisponto)aoladodonomedousuário, exemplodalinhasemox: juliano::1004:1007:JulianoRamos;;;:/home/juliano:/bin/bash Sem dúvida está não é uma boa prática de segurança. Para voltar a digitar senha, coloque novamenteo“x”entreosdoispontos. Esqueceuasenhadoroot? No exemplo anterior observamos como posso remover a senha de um usuário pelo arquivo (/etc/passwd). Se você não consegue mais acessar o seu sistema como root, também não poderá alterarestearquivo,nestecaso.UseumLIVE-CDcomoodoUbuntueinicieosistema. AbraoseuHDpelogerenciadordearquivosdoUbuntuenavegueatéodiretório/etcabraagora oarquivoshadoweremovaoxqueestáentreosdois:(doispontos)doladodonomeroot.Reinicie ocomputadoreremovaolive-cd.Seurootvaiestarsemsenha. Capítulo8–Gerenciamentodepacotes Nestecapítulo: InstalaçãodepacotesDebian InstalaçãodepacotesRedHat InstalaçãodepacotesSlackware Gerenciamentodepacotespelocódigofonte OdpkgéocomandobásicoparalidarcompacotesDebiannosistema.Sevocêtempacotes.deb, é com o dpkg que você instala ou analisa seu conteúdo. Mas este programa tem apenas uma visão parcial do universo Debian: ele sabe o que está instalado no sistema, e o que for dado na linha de comando, mas não sabe nada dos outros pacotes disponíveis. Assim, ele vai falhar se uma dependência não for satisfeita. Ferramentas como o apt-get, ao contrário, criará uma lista de dependênciasparainstalartudoomaisautomaticamentepossível. Instalandopacotes dpkg-inomedopacote.deb Remoçãodepacotes dpkg-rnomedopacote.deb ArquivosdeLogdodpkg Dpkg mantém um log de todas as suas ações em /var/log/dpkg.log. Este log é extremamente detalhado,poisdetalhatodosospassosdamanipulaçãodepacotespelodpkg. Instalandopacotespeloapt-get APTéumprojetoamplo,cujosplanosoriginaisincluemumainterfacegráfica.Eleébaseadonuma biblioteca que contém as aplicações principais, e o apt-get é o primeiro front-end em linha de comando,quefoidesenvolvidodentrodoprojeto. Instalandoumpacote apt-getinstallgnome-shell Instalandoumpacotepeloaptitude aptitudeinstallgnome-shell Removendoumpacote aptituderemovegnome-shell apt-getremovegnome-shell Quandovocêremoveumprograma,nemsempre,removeosarquivosdeconfiguração.Exemplo: VocêinstalaoservidordeimpressãoCUPSecriaumaconfiguraçãopersonalizada.Aoremover com“apt-getremovecups”estasconfiguraçõesaindacontinuampresentesno/etc/,casovocêvenha areinstalarestepacoteestasconfiguraçõesserãomantidas.Pararemoverumpacoteetambémestes arquivosdeconfiguração,utilizeocomando: Removendocomasconfigurações apt-getpurgegnome-shell Instalandováriosprogramasaomesmotempo apt-getinstallpacote1pacote2pacote3 Removendováriosprogramasaomesmotempo apt-getremovepacote1pacote2pacote3 Reinstalandopacotes Osistemapode,àsvezes,serdanificadocomaremoçãooumodificaçãodearquivosnumpacote. Aformamaisfácilderecuperarestesarquivoséreinstalaropacoteafetado.Infelizmente,osistema de empacotamento nota que o pacote está instalado e se recusa educadamente a reinstalá-lo; para evitaristo,useaopção:--reinstalldocomandoapt-get.Ocomandoabaixoreinstalaopostifixmesmo quandoelejáestápresente: apt-get–reinstallinstallgnome-shell Ocachedosarquivos.deb Aptmantémumacópiadecadaarquivo.debnodiretório/var/cache/apt/archivespararemover vocêpodeusarocomando: apt-getclean Atualizandoosistema apt-getupgrade Pesquisandopacotes apt-cachesearchnomedopacote Removendopacotes(Automático) apt-getautoremove Quandovocêusaoaptitudeouoapt-geteleprocuraossoftwaresnosservidoresespecificadosno arquivo/etc/apt/sources.list.Vejamosumexemplodestearquivo(ubuntu15.04): # deb cdrom:[Ubuntu-MATE 15.04 _Vivid Vervet_ - Release amd64 (20150422.1)]/ vivid main multiverserestricteduniverse #Seehttp://help.ubuntu.com/community/UpgradeNotesforhowtoupgradeto #newerversionsofthedistribution. debhttp://br.archive.ubuntu.com/ubuntu/vividmainrestricted deb-srchttp://br.archive.ubuntu.com/ubuntu/vividmainrestricted ##Majorbugfixupdatesproducedafterthefinalreleaseofthe ##distribution. debhttp://br.archive.ubuntu.com/ubuntu/vivid-updatesmainrestricted deb-srchttp://br.archive.ubuntu.com/ubuntu/vivid-updatesmainrestricted ##N.B.softwarefromthisrepositoryisENTIRELYUNSUPPORTEDbytheUbuntu ##team.Also,pleasenotethatsoftwareinuniverseWILLNOTreceiveany ##revieworupdatesfromtheUbuntusecurityteam. debhttp://br.archive.ubuntu.com/ubuntu/vividuniverse deb-srchttp://br.archive.ubuntu.com/ubuntu/vividuniverse Oarquivoeramaior,mascomistojápodemosvercomoelefunciona.Quandovocêvaiinstalar algumprogramaemespecífico,podesernecessárioinstalarumservidorantesnestearquivo.Sempre quevocêadicionaumnovoservidor,deveexecutarocomando:apt-getupdate PacotesRPM O Red Hat Package Manager – RPM é um sistema de gerenciamento de pacotes para sistemas GNU/LinuxbaseadosemRedHat.Eleinstala,atualiza,desinstalaeverificasoftwares. Uma vantagem que o RPM possui em relação ao DEB é que possui ferramentas de verificação criptográficacomGPGeoMd5,alémdeverificaçãodeintegridadedosarquivosjáinstalados. Verificarquaispacotesestãoinstaladosnosistema rpm-qa Verificarseumpacoteespecíficoestáinstalado: rpm-qnomedopacote.rpm Verificaroqueseráinstaladocomumpacoteespecífico: rpm-qpnomedopacote.rpm Verificarseainstalaçãoiráocorrercorretamente: rpm-ih–test–percentnomedopacote.rpm Asopções-he–percentservemparamostrarumabarradeprogressoeaporcentagemconcluída. Instalarumprograma rpm-ih–percentnomedoprograma.deb Verifiqueoqueseráefetuadoaoremovermosumpacote: rpm-e–testnomedopacote Removendoopacote: rpm-enomedopacote.rpm Pararealizarumaatualizaçãodeversãodeumdeterminadoprograma,podemosusar: rpm-Uhnomedopacote.rpm UmafuncionalidademuitoboadoRPMéacapacidadederealizarverificaçõesdeintegridadedos pacotesinstalados.Periodicamente,vocêpodeverificarseocorreualgumaalteraçãonoseusistema semvocêsaberousesuamáquinafoiinvadida,pode-setentaridentificaroquefoimexidonela. Verificaraintegridadedetodosospacotes: rpm-Va PacotesSlackware Ospacotesslackwarepossuemaextensão(tgz). Instalandopacotes Installpkgpacote.tgz Removendopacotes Removepkgpacote ConversordepacotesAlien Oalienéumconversordepacotes.IstosignificaquevocêconseguetransformarumpacoteRPMem DEBeviceversa. Nodebian,instalecomocomando: apt-getinstallalien Paraconverterumpacotepararpmparadebexecutamos: alien-dpacote.rpm Paracoverterumpacotedebpararpm,executamos: alien-rpacote.deb Paraconverumpacoteparatgz,executamos: alien-tpacote.deb Nãoserásemprequeoalienserácapazdefazerumpacotecompatívelcomseusistema.Sempre procurepelopacotenativo,emúltimorecurso,useoalien. Instalandopacotespelocódigofonte Parainstalarpacotespelocódigofonteénecessárioquevocêtenhaasferramentasnecessáriaspara compilá-los.NoDebianederivados,instaleestespacotescom: apt-getinstallbuild-essential Normalmenteospacotesdeprogramasdistribuídosatravésdocódigofontesãocompactadose empacotesnosformatos(tar.gzoutar.bz2).Paradescompactarestespacotesexecute: tar-xvzfpacote.tar.gz Parapacotesnoformato.tar.gz tar-jxvfpacate.tar.bz2 Parapacotesnoformato.tar.bz2 Apósdescompactar,acesseodiretórioeexecuteoscomandos: ./configure make makeinstall O./configureexecutaumscript(dentrodapastadoprograma),queverificaosistemaembusca decomponentesqueeleprecisa.Eleavisasealgoestiverfaltando,poristo,vocêdeveficaratentoa todas as mensagens. O “make” cuida do trabalho pesado, fazendo a compilação. Ele procura os componentes registrados pelo ./configure. O “make install” instala o programa, copiando os arquivosgeradospelomakeparaaspastascorretasdosistema. Capítulo9–Compactadoreseempacotadores Nestecapítulo: Diferençaentreempacotarecompactar Usandootar Usandoogzip/bzip2 NomundoGNU/Linuxémuitocomumvermosarquivoscomaextensão.tar.gzoutar.bz2estas extensõessignificamquealémdeocriadorterrealizadoumpacoteeleoscompactou. Obzip2(bz2)fazumacompactaçãomaiseficiente,ouseja,elereduzmaisotamanhodoarquivo do que o gzip (gz), em compensação, ele demora mais para realizar a compactação. Podemos classificarassim: gzipRápido,porémnãomuitoeficienteparareduçãodetamanho bzip2Lento,porémmuitoeficienteparareduçãodetamanho CriandoumpacotecomoTAR O tar é um empacotador, que serve para juntar vários arquivos em um só; imagine a situação cotidiana: Vocêprecisaenviaralgumasfotosatravésdoanexodoe-mail.Vocêpodefazerumaaumaoque levariaalgumtempo,ouempacotá-lascriandoumúnicoarquivoquevocêenviará. Umaúnicaobservação:Otarnãocompactaelesomenteempacota.Istosignifica,queosarquivos nãovãodiminuirotamanho. Criandoumpacotecomotar Vamoscriarumpacotedetodoodiretório/etc,paraistofazemos: tar-cvfbkp_etc.tar/etc Onde: -cParacriarumbackup -v(verbose)Paramostrarosdetalhesnahoradacriação -fParaindicaronomedoarquivo.Essaopçãosemprevemporúltimo,poiséelaquemdefineo nomedoarquivo. Vocêpodeverificarqueotamanhododiretório/etcedoarquivobkp_etc.taréomesmo,como comando: du-h/etc du-hbkp_etc.tar Parainformarocomandotarquevocêtambémdesejacompactar,useoscomplementos: -zParacompactarcomogzip -jParacompactarcomobzip2 Entãoocomandomudariapara: tar-cvzfbkp_etc.tar/etc ebooklinuxNestecasoparaoformatoGzip,ou: tar-cvjfbkp_etc.tar/etc Para usarmos o formato bzip2. Agora que empacotamos e compactamos um diretório, vamos aprendercomoextrai-los.Nestecasousamosoxdeextract. tar-xvfbkp_etc.tar Parapacotes(.tar) tar-xvzfbkp_etc.tar.gz ParapacotescompactadosGzip(tar.gz) tar-xvjfbkp_etc.tar.gz ParapacotescompactadorBzip2(tar.bz2) Capítulo10–AgendamentodetarefasnoLinux Nestecapítulo: Agendadorat Agendadorcrontab Usamos o crontab para agendar comandos para serem executados periodicamente. Já o at usamosparaagendarexecuçãodeprogramaspontualmente. Agendadorat Agendaremosqueas19:30dodia24deJunhode2015seráexecutadoocomandols-lhanodiretório /etceoresultadoseráimpressoemumarquivochamadolistagem.txtnomeudiretório/tmp. Nestecasotenhoqueabriroatcomasintaxe:atHH:mmMM/DD/YYYY Onde(HH:MM–representahoraseminutos–19:30),MM(Mês–06),DD(Dia:24),YYYY(Ano: 2015).Entãoocomandoseria: at19:3006/24/2015 ls-lha/etc>/home/tux/listagem.txt <ctrl+d> Quandovocêterminardedigitaroseuscomandosdentrodoaténecessáriosairgravandocom asteclasdeatalho:ctrl+d Vocêpodevisualizarosagendamentoscomocomando: atq Vocêpoderemoverumagendamentocomocomandoatrmmaisonúmerodoagendamento,que vocêobtémcomocomandoatq.Porexemplo,aoexecutaroatqtivecomoretorno: 3WedJun2419:40:002015aroot Nestecaso,paraencerraresteprocessoeuuso:atrm3 Crontab Qualquer usuário pode agendar comandos no crontab porém ele terá que ter permissão para executaroqueestáagendando.Paraeditarocrontab,digite: crontabe-e Onde-eédeedit.Estecomandoiráabrirumarquivoembranco,casonãotenhafeitonenhuma tarefaagendadaainda,paraquevocêpossaadicionarnovastarefas.Nestearquivoembranco,temos queadicionarumanovatarefaseguindoaestrutura: *****comando/tarefa Aestruturarepresenta: Minuto0–59 Hora0–23 DiadoMês1–31 Mês1–12 DiadaSemana0–7(o“0”e“7”édomingo,“1”segunda”) Exemplo: 001425120echo“Hojeédomingo”>arquivo.txt Atarefaacimavaicriaroarquivo.txtnodia25deDezembroas14:00heestediaprecisaráser domingo,casocontrário,istonãoseráexecutado. Paravisualizarastarefasagendadaspelosusuários,comorootdigite: crontab-l-utux Onde: -lParalistar -uParaespecificarousuários Quandomandarsalvararegra,outarefaagendada,amesmairáparaumarquivocomonomedo seuusuário: ls/var/spool/cron/crontabs/tux Vocêpodeexecutarocomandocatnoseuarquivoparavisualizaroquefoiagendado. Digamosquevocêtenhacriadoumscriptquerealizabackupdosarquivosdosusuáriosparaum servidordebackup.Desegundaasexta-feiraeledeveserexecutadoas22horas.Nestecasoexecute: crontab-e 0022**1-5/opt/script/scriptbackup.sh Sempreseránecessáriocolocarocaminhocompleto(/opt/script/scriptbackup.sh)doseuscript. Entendendooformatodosoperadoresdeagendamento: , Especificaumalistadevalores,porexemplo:“1,3,4,7,8” Especificaumintervalodevalores,porexemplo:1-5(De1a5) * Especificatodososvalorespossíveis / Especifica pulos de valores, por exemplo: Se no campo (Hora) usarmos : */3 o comando será executadoàs:0,3,6,9,12,15,18,21 Observamosqueosarquivosdecrontabdosusuáriosficamem: /var/spool/cron/crontabs Já a crontab do sistema é encontrada em /etc/crontab e já possui agendamento para realizar as tarefasqueseencontramnosdiretórios: /etc/cron.hourly,/etc/cron.daily,/etc/cron.weeklye/etc/cron.monthly Sevocêpossuiumscriptedesejaqueelesejaexecutadodiariamente,façaumacópiadeleparao diretório:/etc/cron.daily cp/opt/script/scriptbackup.sh/etc/cron.daily/ Paraquesejasemanalmente,copie-oparaodiretório/etc/cron.weeklyeparaquesejaexecutado mensalmentecopie-oparaodiretório/etc/cron.monthly Depoisdeadicionarosscriptsdentrododiretóriodocron,seránecessárioreiniciaroserviço: /etc/init.d/cronstop /etc/init.d/cronstart Capitulo11–Processos Nestecapítulo: Diretório/proc Funcionamentodosprocessospelolinux Monitorandoumprocesso Finalizandoumprocesso Processo é uma tarefa em execução controlada pelo kernel ocupando uma área na memória (RAM),noqualoLinuxusaomecanismodeidentificá-lospornúmeros.Ouseja,tudoqueestiver rodandonosistemaseráumprocesso.Éoprocessoqueutilizaosrecursosdeumcomputador,como memóriaeprocessamento.Umsimplescomandoéumprocesso,browserabertoéumprocesso. ÉresponsabilidadedoKernelgerenciarosprocessostentandootimizaraperformancedaCPU– Unidadecentraldeprocessamento.Oprimeiroprocessodosistemachama-seiniteleéopaidetodos osoutrosprocessos. Cadaprocessotemumnúmerodiferentedeidentificação(PID).Dessaformapodemosmanipulálosecontrolá-los.Controlarépodermatar,reiniciarepausarumprocesso. Nodiretório/procvocêveráváriosarquivoscominformaçõesgeraisqueokernelnosfornece, por exemplo os arquivos: cpuinfo, ioports, meminfo, interrupts, mounts, swaps e muitos outros. Todoprocessocriatemporariamenteumdiretórioem/proccomoseunúmerodePID. Podemosvisualizaronúmerodosprocessosexecutadospelonossousuáriocomocomando: ps-x A primeira coluna de retorno deste comando é o número do PID. Neste momento estou com o Libreoffice aberto no meu computador e o número de seu PID é o 4741. Eu posso obter algumas informaçõesacessandooseudiretório: cd/proc/4741/ Emseguidavisualizooarquivocmdline: /usr/lib/libreoffice/program/oosplash—writer Neste caso ele me informou quem é este processo. Nos diretórios dos processos, temos dois arquivosinteressantesecuriosos:cmdlineestatus. Vocêpodeobtermaisinformaçõessobreodiretório/procconsultandosuapáginademanual: manproc Paralistartodososprocessosdeumamaneiramaissimplesdevisualizar,use: psaux|more Explicandoocomando: aTodososprocessos udetodososusuários xprocessossemcontrolepeloterminal Neste caso todo os processos serão mostrados. É muito melhor, usar o comando ps do que acessarodiretório/proc. Vamosanalisaragoraascolunasdesaídadocomandopsaux|more: userUsuáriosresponsávelpeloprocesso PIDNúmeroqueidentificaoprocesso,nãoserepete %CPUQuantodeCPUeleusa %MEMQuandodeMEMeleusa VSZTamanhovirtualdoprocesso RSSIndicaaquantidadedememóriausada(emKB) TTYTerminalquegerouoprocesso ?Semterminal STATEstadodoprocesso,sendorepresentadoporumaletra RExecutável DEmesperanodisco SSuspenso TInterrompido ZZumbi COMMANDNomedoprocesso,ouseja,ocomandoemsi. Com a opção f em ps, é possível visualizar em um formato de árvore os processos, identificando-seosprocessosquepossuemfilhos: psfaux|more Vocêtambémpodeusarocomando: pstree Paravisualizarosprocessosvendoumatabelaqueseatualizadetemposemtempos,recomendo ocomandotop: top Este comando gera uma tabela dinâmica com informações sobre os processos, sendo possível matarumprocessodentrodelemesmo. Paramatarumprocesso*(normalmentequandoeleestátravandoosistema)usamosocomando kill, você só pode matar processos os quais você seja o dono (O root, pode matar todos os processos). Usamosasintaxekill+onúmerodoPID: kill-94247 Aopção-9éparaforçaramortedoprocesso.Estenúmeroéconhecidocomo“sinal”.Seosinal foromitidoéusadoo15comopadrão.Estesinaljogaumsinaldetérmino.Masseoprocessoestiver travado,ouexecutandoalgumacoisa,elenãovaiterminalevaiignoraroseupedido.Jáo-9forçao processoaparardequalquerjeito! Na prática, usamos apenas o -9 e o -15 para matar um processo, mas você pode ver uma lista completocomocomando: kill-l Capítulo12–Gerenciamentodeprocessos Umprocessopodepassarporváriosestados.Quandoumprocessoécriadoissonãosignificaqueele será imediatamente executado. Alguns processos podem ser temporariamente parados para que o processadorpossaexecutarumprocessocommaiorprioridade. Olinuxtrabalhacomquatrotiposdeestados: Executável(running):Oprocessopodeserexecutadoimediatamente; Dormente (waiting): O processo precisa aguardar alguma coisa para ser executado. Só depois dessa“coisa”aconteceréqueelepassaparaoestadoexecutável. Zumbi(zombie):Oprocessoéconsiderado“morto”,mas,poralgumarazãoaindaexiste; Parado(stopped):Oprocessoestá“Congelado”,ouseja,nãopodeserexecutado. Classificaçãodeprocessos foreground(Primeiroplano):Sãoinicializadosnoterminaldecomandos.Podeminteragircomos usuários e exibem sua execução na tela. A desvantagem deste tipo de processo é que ele prende o prompteissoimpedeaexecuçãodenovosprocessosnesteterminal. Background (Segundo plano): São inicializados no terminal de comandos, NÃO podem interagircomosusuárioseNÃOexibemsuaexecuçãonatela.Avantagemdessetipodeprocessoé queeleNÂOprendeoprompteissoNÂOimpedeaexecuçãodeumnovoprocessonesseterminal. Interativo: São inicializados a partir de um terminal do usuário e são controlados por ele, usamososcomandosctrl+z,ctrl+x,fg,bgejobsparatrabalharcomessetipodeprocesso. Lote(batch):Sãoprocessoscontroladospeloscomandosat,batchecron. Daemons Daemonséumprogramaembackground(segundoplano)esperandoqueumoutroprocessosolicite seuserviço.OsprocessosdoDaemonfornecemfrequentementeserviçosderede,taiscomooe-mail, web,etc.Elesnãoprecisamdenenhumaentradaenormalmentenãoproduzemnenhumasaída.Muitos daemonsdoLinuxtêmosnomesqueterminamemum“d”,comoohttpd,ftpdetc.Oopostodeum daemonéumprocessoquefuncionaemprimeiroplano. Daemonsmaispopulares: atd–Rodatrabalhosagendadospelocomandoat. httpd–Servidorwebapache. postifix–Agentedetransportedecorreiossubstitutodosendmail. smbd–OdaemonSAMBA(ousmb). Jobs Ocomandojobslistaosprocessosemexecuçãopeloshellqueestãoembackground. Jobs-l [2]1245Runningasmixer& [3]+1333Runningopenoffice& Oparâmetro-lfazcomqueocomandojobslistetambémoPIDdecadaprocesso.Emsuasaídao comando jobs retorna, além do número do serviço, o estado do processo, a linha digitada no comandoe,opcionalmente,oPID. fg Permitefazerumprogramarodandoemsegundoplanoouparado,rodaremprimeiroplano.Você deve usar o comando jobs para pegar o número do processo roando em segundo plano ou interrompido,estenúmeroserápassadoaocomandofgparaativá-loemprimeiroplano. Exemplo: jobs-l [2]–1245Runningopenoffice& fg2 openoffice bg Permite fazer um programa rodando em primeiro plano ou parado, rodar em segundo plano. Para fazer um programa em primeiro plano rodar em segundo, devemos primeiro interromper a execuçãodocomandocomctrl+z;serámostradoonúmerodatarefainterrompida.Useestenúmero comocomandobgparainiciaraexecuçãodeleemsegundoplano. Exemplo: fg2 openoffice Interrompendo:CTRL+Z [2]+Stoppedopenoffice) bg2 Capítulo13–IntroduçãoaRedes Nestecapítulo: IntroduçãoateóricaderedesTCP/IP. ConceitosbásicosdeconfiguraçõesderedesemUNIX. OsprotocolosTCP/IP AntigamenteosprotocolosTCP/IPeramusadospormilitaresparaatrocadeinformações,hojeem dia,esteéumpadrãomundialparaacomunicaçãoderedes.OprocoloTCP(TransmissionControl Protocol),éorientadoaconexões,transportainformaçõespormeiodehandshaking,oupormeiode retransmissão caso algum erro aconteça. Esse protocolo garante o envio das mensagens. Podemos citaralgunsserviçosderedequeutilizamoprocotoloTCP:SMTP,FTPeTelnet. Já o procolo IP (Internet Protocol) descrito pela RFC 791, é responsável por estabelecer o esquemadeendereçamentoepeladefiniçãodedatagramas. EntendendooIP O endereçamento IP, como deve ser chamado, é composto por 4 octetos e uma máscara, que determinaquantosendereçossãodestinadosahosteequantosendereçossãodestinadosarede. NomundoGNU/linuxnãodiferentedosoutros,paratermosacessoainternetouacomunicação emredetambémprecisamosternossonúmeroIP.OnumeroIPestápresenteemtodasasmáquinas, mesmo nas que não tem conexão com a internet. Isso é possível pois em todo GNU/Linux há uma interface lógica, chamada loopback (lo) cujo enedereço IP será 127.0.0.1 e que sempre deve estar devidamenteconfigurada. Algumas aplicações de sua máquina utilizam o IP 127.0.0.1 para comunicação com outras aplicações internas. Além disso, você pode desenvolver suas páginas e sistemas Web e testá-las localmente.OumesmotestaraimplantaçãodeumservidordeDNSouumproxy,antesdecolocá-lo emprodução. A Internet é totalmente endereçada por números IP's e não depende de um servidor DNS para funcionar.OserviçoDNSapenasfacilitaonossoacessoainternet,permitindoqueanavegaçãoseja feitaatravésdenomesenãodenúmeros. ParaconfigurarmosumnúmeroIPemnossocomputador,precisamostambém,configuraruma “Máscara”paraessenúmeroIP.Amáscaraderede,tambémconhecidacomonetmaskéumnúmero constituídopor32bits,queéutilizadoparasepararredes,determinandoquemé“host”,quemérede equemé“broadcast”. Host–Umendereçodisponibilizadoparacomputadorespoderemacessararede; Network–Normalmenteéoprimeiroendereçodarede; Broadcast–Normalmente é o último endereço da rede, utilizado para que uma máquina possa falarcomtodasasoutras. Alémdamáscaraderedeénecessáriosaberqueexistemtrêsclassespadrõesderedes. EntendendooGateway Oprincipalpapeldo“Gateway”élevarospacotes“TCP/IP”paraoutrasredesqueoshostsqueos originaram,nãoconhecem.Édessaformaqueospacotessaemdeumaredeprivadaparaumarede “WAN”. Para que os pacotes possam transitar pela internet ou mesmo só por uma rede fechada é necessárioum“Gateway”.Mesmoemumaredelocal,o“gateway”éaprópriamáquina,poistodos os “hosts” estão normalmente com a mesma configuração de IP, ou seja, mesma máscara, mesma classedeIP,etc. OservidorDNS ODNSéumserviçoqueconverteendereçosIPemnomes,destemodo,aoinvésdevocêdigitarem seu navegador 200.1.100.09 – Você digita: www.tux4.com.br . Como já mencionado o DNS não faz partedaconfiguraçãoessencialdarede,jáqueainternetfuncionaatravésdosnúmerosIP. Sevocêtestaroendereço:www.tux4.com.breelenãofuncionar,tenteacessá-locom:200.1.100.09 seconseguiroproblemaestánoseuservidorDNS. *OIP(200.1.100.09)mencionadonestecapítuloéfictícioenãopertenceaodomíniotux4.com.br ConfigurandoaRede Aconfiguraçãodaredeébaseadaemtrêsetapas: ConfiguraçãodonúmeroIPemáscara ConfiguraçãodoGateway ConfiguraçãodoDNSServer Em um sistema GNU/Linux, para configurar a nossa interface de rede utilizamos o comando ifconfig. ifconfig Executando este comando é possível descobrir todas as interfaces presentes no sistema. Por padrão em quase todas as distribuições de Linux a interface padrão é identificada como eth0. Para verificar de modo mais apurado, inclusive pesquisando interfaces inativas, usamos o parâmetro -a comonoexemplo: ifconfig-a AsintaxedocomandoifconfigparaatribuirumendereçodeIP: ifconfig<interface><ip> Exemplo: ifconfigeth0192.168.1.10 Comestecomandoestamosatribuindooendereço(192.168.1.0)paraainterfaceeth0.Ocomando ifconfig calcula automaticamente a máscara, mas se você precisar configurar uma mascara diferenciada,vocêdeveusaroparâmetronetmask: ifconfigeth0192.168.1.10netmask255.255.254.0 Paraativaroudesabilitarumaplacaderedepodemosusarasintaxe: ifconfigeth0up ifconfigeth0down Configurandoogateway Para que nossos pacotes saibam para onde ir eles precisam conhecer o IP do Gateway da rede. O papeldogatewayésimples,elefuncionacomoumasaídaparaospacotesdeumarede,paraoutras redes. Para configurar o gateway da nossa rede utilizamos o comando route com os seguintes parâmetros: routeadddefaultgwIP Comestecomandoépossívelconfigurararotapadrãodesaídadanossarede.Paralistartodasas rotastraçadas,podemosutilizarocomandoabaixo: route-n Comelepodemosdescobrirseasrotasnecessáriasparaquenossaredefuncioneestãocorretas. Sedesejaremosremoverarotapadrão,devemosusarocomando: routedeldefault Estecomandoiráremoverarotapadrãodesaídadarede. ConfiguraçãodoDNSServer Para configurar os servidores DNS para a máquina local, precisamos editar o arquivo de configuraçãodeDNS,chamadoresolv.conflocalizadoem/etc. nano/etc/resolv.conf Dentro deste arquivo podemos configurar os nossos servidores de DNS, para isto, coloque as seguinteslinhas: nameserver201.6.0.100 Com esta sintaxe configurarmos um servidor DNS, neste caso é o DNS do Serviço de Banda Larga-Virtua. Configuraçãoestáticadarede Todaaconfiguraçãodaredepodeseratribuídapelalinhadecomando,comoobservamosatéagora. Porém, para que estas configurações estejam ativas após você reiniciar o computador é necessário editá-lasemarquivo. Configureoarquivo: /etc/network/interfaces Exemplodeconfiguração: autolo ifaceloinetloopback autoeth0 ifaceeth0inetstatic address192.168.200.x netmask255.255.255.0 broadcast192.168.200.255 network192.168.200.0 gateway192.168.200.254 Podemos também configurar alguns atalhos para endereços de rede. Estes atalhos ficam localizadosdentrodoarquivo/etc/hosts Asintaxedeleé: IPapelidoapelido Exemplo: 192.168.200.234professorramos Issofacilitanossotrabalho.Apósapelidaroshosts,vocênãomaisprecisarádecorarendereços IPS. Comandohostname O comando hostname altera dinamicamente o nome da máquina e deve ser utilizado da seguinte maneira: hostnameNovo_Nome Para alterar de forma estática, ou seja, para que o nome se mantenha após a reinicialização do computador,altereoarquivo/etc/hostname Consideraçõesfinaispeloautor Meuobjetivodesdeocomeçofoiescreverumlivrocompactoequeabordassedeformadiretatodos osconceitosdaAdministraçãodeSistemasequetambémpudesseserutilizadocomocomplemento ao estudo da certificação linux LPI exame 101. Fazendo a releitura de todo o livro, acredito que alcanceimeuobjetivo. Para finalizar este livro, quero agradecer à você leitor e patrocinador do meu trabalho, como sempredigoemminhasaulas:Vamosquevamoseatéapróxima! Prof.JulianoRamos–Grubelilo. [email protected] www.tux4.com.br CreatedwithWriter2ePub byLucaCalcinai