Princípios do Sistema Linux Princípios do Sistema Linux Multi® Sistemas 2 Princípios do Sistema Linux Sumário 1.1 Um pouco de História............................................................................................................ 6 1.2 Licenças do Uso..................................................................................................................... 7 Licença GPL............................................................................................................................. 7 Licença LGPL........................................................................................................................... 8 Licença BSD............................................................................................................................ 8 Licença MIT............................................................................................................................. 9 Licença Creative Commons..................................................................................................... 9 1.3 Movimentos e Projetos do Software Livre............................................................................10 Movimento FSSTND............................................................................................................... 10 Movimento FHS..................................................................................................................... 10 Movimento Open Source....................................................................................................... 10 Projeto LSB............................................................................................................................ 11 Projeto GNU........................................................................................................................... 11 1.4 Distribuições Linux (sabores)...............................................................................................12 Red Hat Linux........................................................................................................................ 12 SuSE Linux............................................................................................................................ 12 Mandriva Linux...................................................................................................................... 13 Debian Linux......................................................................................................................... 13 Ubuntu Linux......................................................................................................................... 13 Fedora Linux......................................................................................................................... 14 Slackware Linux.................................................................................................................... 14 1.5 As interfaces........................................................................................................................ 15 Interface Gráfica.................................................................................................................... 15 X Windows System................................................................................................................ 15 Ambientes Gráficos............................................................................................................... 16 Funcionamento..................................................................................................................... 16 Interface Texto...................................................................................................................... 18 Console de Comandos........................................................................................................... 18 Emuladores de Terminal........................................................................................................ 18 Curiosidades.......................................................................................................................... 19 2.1 Estrutura de Diretórios........................................................................................................ 20 O diretório “lost+found”........................................................................................................ 22 O diretório “.”........................................................................................................................ 22 O diretório “..”....................................................................................................................... 23 2.2 Sistema de Arquivos............................................................................................................ 23 Curiosidades.......................................................................................................................... 24 3.1 A tela de login...................................................................................................................... 26 3.2 O ambiente de trabalho (GNOME)...................................................................................27 3.3 Componentes do Desktop Ubuntu...................................................................................28 O painel superior................................................................................................................... 29 O painel inferior..................................................................................................................... 31 4.1 Trabalhar na linha de comando...........................................................................................32 4.2 Comandos básicos de navegação........................................................................................33 Ls.......................................................................................................................................... 33 cd.......................................................................................................................................... 35 Pwd....................................................................................................................................... 36 5.1 Recursos do Shell Bash........................................................................................................ 37 6.1 Comandos Linux.................................................................................................................. 38 6.2 Comandos de inicialização................................................................................................... 38 Shutdown.............................................................................................................................. 38 poweroff................................................................................................................................ 39 init 0...................................................................................................................................... 39 init 3...................................................................................................................................... 39 init 5...................................................................................................................................... 39 init 6...................................................................................................................................... 39 init q...................................................................................................................................... 39 init s...................................................................................................................................... 39 exit........................................................................................................................................ 39 3 Princípios do Sistema Linux Introdução ao Linux logout ................................................................................................................................... 39 6.3 Comandos de Sistema......................................................................................................... 39 Dmesg................................................................................................................................... 39 arch....................................................................................................................................... 40 uname................................................................................................................................... 40 uptime................................................................................................................................... 40 free....................................................................................................................................... 40 vmstat................................................................................................................................... 40 ps ......................................................................................................................................... 40 tty......................................................................................................................................... 40 stty........................................................................................................................................ 40 tset........................................................................................................................................ 40 fgconsole .............................................................................................................................. 40 cu.......................................................................................................................................... 41 type....................................................................................................................................... 41 time....................................................................................................................................... 41 cal......................................................................................................................................... 41 date....................................................................................................................................... 41 who....................................................................................................................................... 41 whoami................................................................................................................................. 41 last........................................................................................................................................ 41 lastlog................................................................................................................................... 41 at........................................................................................................................................... 41 crontab.................................................................................................................................. 42 lspci....................................................................................................................................... 42 setserial................................................................................................................................ 42 6.4 Comandos de Ajuda............................................................................................................. 42 man....................................................................................................................................... 42 xman .................................................................................................................................... 42 info........................................................................................................................................ 42 makewhatis........................................................................................................................... 43 apropos................................................................................................................................. 43 help ...................................................................................................................................... 43 6.5 Comandos para Manipulação de Diretórios..........................................................................43 6.6 Comandos para Manipulação de Aquivos........................................................................44 6.7 Comandos para Compactar.............................................................................................45 cpio....................................................................................................................................... 46 7.1 Tipos de arquivos................................................................................................................. 48 7.2 Arquivo diretório............................................................................................................. 48 7.3 Arquivo link simbólico..................................................................................................... 49 7.4 Arquivo especial de caractere......................................................................................... 49 7.5 Arquivo especial de bloco................................................................................................ 50 7.6 Arquivo named pipe........................................................................................................ 50 7.7 Arquivo Socket................................................................................................................ 51 8.1 Administração de usuários................................................................................................... 52 useradd................................................................................................................................. 52 userdel.................................................................................................................................. 52 username.................................................................................................................................. 52 users..................................................................................................................................... 52 usermod ............................................................................................................................... 52 Id........................................................................................................................................... 52 passwd.................................................................................................................................. 52 chpasswd.............................................................................................................................. 52 groupadd............................................................................................................................... 53 groupdel................................................................................................................................ 53 groups................................................................................................................................... 53 groupmod.............................................................................................................................. 53 newgrp.................................................................................................................................. 53 chgroup................................................................................................................................. 53 chown.................................................................................................................................... 53 sg.......................................................................................................................................... 53 Multi® Sistemas Princípios do Sistema Linux Introdução ao Linux su.......................................................................................................................................... 53 wall........................................................................................................................................ 53 9.1 Permissões do Sistema.................................................................................................... 54 Modo Literal.......................................................................................................................... 54 Modo Octal............................................................................................................................ 55 10.1 Utilizar o gerenciamento de pacotes Debian.................................................................56 10.2 Conceito de pacotes...................................................................................................... 57 10.3 Conhecendo o pacote DEB............................................................................................59 10.4 O comando dpkg........................................................................................................... 60 10.5 O gerenciador de pacotes APT......................................................................................62 apt-cache.............................................................................................................................. 62 apt-get.................................................................................................................................. 63 10.6 O gerenciador de pacote APTITUDE...............................................................................66 Multi® Sistemas Princípios do Sistema Linux Introdução ao Linux 1.1 Um pouco de História O Kernel Linux foi, originalmente, escrito por Linus Torvalds do Departamento de Ciência da Computação da universidade de Helsinki, Finlândia, com a ajuda de vários programadores voluntários através da Usenet. Linus Torvalds, figura ao lado, começou o desenvolvimento do kernel como um projeto particular, inspirado pelo seu interesse no Minix, um pequeno sistema UNIX desenvolvido por Andrew S. Tanenbaum. Ele limitou-se a criar, nas suas próprias palavras, “um Minix melhor que o Minix” (em ingês “a better Minix than Minix”). E depois de algum tempo de trabalho no projeto, sozinho, ele enviou a seguinte mensagem para comp.os.minix: Linus Benedict Torvalds “Você suspira pelos bons tempos do Minix-1.1, quando os homens eram homens e escreviam seus próprios “device drivers” ? Você está sem um bom projeto em mãos e está desejando trabalhar num S.O. que você possa modificar de acordo com as suas necessidades ? Está achando frustrante quando tudo funciona no Minix ? Chega de noite ao computador para conseguir que os programas funcionem ? Então esta mensagem pode ser exatamente para você. Como eu mencionei há um mês atrás, estou trabalhando numa versão independente de um S.O. similar ao Minix para computadores AT-386. Ele está, finalmente, próximo do estado em que poderá ser utilizado (embora possa não ser o que você está esperando), e eu estou disposto a disponibilizar o código-fonte para ampla distribuição. Ele está na versão 0.02... contudo eu tive sucesso ao executar bash, gcc, gnu-make, gnu-sed, etc. nele.” Curiosamente, o nome Linux foi criado por Ari Lemmke, administrador do site ftp.funet.fi que deu esse nome ao diretório FTP onde o kernel Linux estava inicialmente disponível (Linus tinhao baptizado como “Freax”, inicialmente). No dia 5 de outubro de 1991, Linus Torvalds anunciou a primeira versão “oficial” do kernel Linux, versão 0.02. Desde então muitos programadores têm respondido ao seu chamado, e têm ajudado a fazer do Linux o sistema operacional que é hoje. Em 1997 Linus Torvalds recebeu os prêmios “1997 Nokia Foundation Award'y” e “Lifetime Achievement Award at Uniforum Pictures”. No mesmo ano finaliza os estudos superiores (1988 à 1997) passou 10 anos como estudante e investigador na Universidade de Helsinki, coordenando o desenvolvimento do núcleo do S.O. desde 1992. Torvalds trabalhou na Transmeta (fabricante de processadores para portáteis) entre 1997 e 2003, e neste ano juntou-se ao OSDL (Open Source Development Labs), uma fundação criada para ajudar no desenvolvimento do kernel Linux, como OSDL fellow. Fazem parte dessa fundação várias grandes empresas do ramo da informática, como IBM, Sun, Nokia e outras. Torvalds possui a marca registrada “Linux” e supervisiona o uso (ou abuso) da marca através da organização sem fins lucrativos Linux International. Logo OSDL Por sua formação aberta, o Linux vem conquistando governos, empresas, entidades e usuários em geral, pelo custo de licenciamento, robustez, estabilidade dentre outras. Multi® Sistemas Princípios do Sistema Linux Introdução ao Linux Como características do Linux, podemos citar: Sistema Multi-usuário (Vários usuários podem “usufruir” do sistema ao mesmo tempo); Sistema Multi-tarefa (Várias tarefas são executadas ao mesmo tempo, concorrentes entre si”); Altamente portável, rodando desde iPAD até o IBM S/390 (mainframe); Estável (Foi muito bem escrito, e contém poucos erros de código); Robusto (“Agüenta” várias requisições ao mesmo tempo); Open Source (Os usuários tem acesso ao código fonte); Comunidade muito ativa; 1.2 Licenças do Uso As licenças de uso (copyright ou copyleft), formam criadas com o intuito de restringir ou garantir a liberdade de uso do software do usuário. O que é copyleft ? “Copyleft” é um trocadilho com o termo “copyright” que, traduzido literalmente, significa “direitos de copia”. É exatamente o oposto de copyright. Até a logomarca que representa o copyleft é um C invertido (figura ao lado), extamente o inverso da logomarca do copyright. Logo Copyleft Richard Stallman popularizou o termo copyleft ao associá-lo em 1988 à licença GPL. De acordo com Stallman, o termo foi-lhe sugerido pelo artista e programador Don Hopkins, que incluiu a expressão “Copyleft - all rights reversed.” numa carta que lhe enviou. A frase é um trocadilho com expressão “Copyright - all rights reserved.” usada para afirmar os direitos de autor. Um projeto (softwares ou outros trabalhos livres) sob a licença Copyleft requer que suas modificações, ou extensões do mesmo, sejam livres, passando adiante a liberdade de copiá-lo e modificá-lo novamente. Uma das razões mais fortes para os autores e criadores aplicarem copyleft aos seus trabalhos é porque desse modo esperam criar as condições mais favoráveis para que um alargado número de pessoas se sintam livres de contribuir com melhoramentos e alterações a essa obra, num processo continuado. Licença GPL O GNU General Public License (Licença Pública Geral), GNU GPL ou simplesmente GPL, é a designação da licença para software livre idealizada por Richard Stallman no final da década de 1980, no âmbito do projeto GNU da Free Software Foundation (FSF). A GPL é a licença com maior utilização por parte de projetos de software livre, em grande parte devido à sua adoção para o Linux. Multi® Sistemas Logo Free S. Foundation Princípios do Sistema Linux Introdução ao Linux Em termos gerais, a GPL baseia-se em 4 liberdades: 1. A liberdade de executar o programa, para qualquer propósito (liberdade nº 0) 2. A liberdade de estudar como o programa funciona e adaptá-lo para as suas necessidades (liberdade nº 1). O acesso ao código-fonte é um pré-requisito para esta liberdade. 3. A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo (liberdade nº 2). 4. A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie deles (liberdade nº 3). O acesso ao código-fonte é um pré-requisito para esta liberdade. Com a garantia destas liberdades, a GPL permite que os programas sejam distribuídos e reaproveitados, mantendo, porém, os direitos do autor por forma a não permitir que essa informação seja usada de uma maneira que limite as liberdades originais. A licença não permite, por exemplo, que o código seja apoderado por outra pessoa, ou que sejam impostos sobre ele restrições que impeçam que seja distribuído da mesma maneira que foi adquirido. Licença LGPL O GNU Lesser General Public License (antes conhecida como GNU Library General Public License) é uma licença de software livre aprovada pela FSF escrita com o intuito de ser um meio-termo entre a GPL e licenças mais permissivas como a licença BSD e a licença MIT. Ela foi escrita em 1991 (e atualizada em 1999) por Richard Stallman e Eben Moglen. Richard Stallman Eben Moglen A principal diferença entre a GPL e a LGPL é que esta permite ser ligada com programas que não sejam GPL ou LGPL, que podem ser Software livre ou Software proprietário. Outra diferença é que trabalhos derivados (que não sejam GPL) devem ser bibliotecas de software. A LGPL é primariamente pretendida de ser usada em bibliotecas de software, embora também seja usada por aplicações como OpenOffice.org e Mozilla. Licença BSD A licença BSD é uma licença de código aberto inicialmente utilizada nos sistemas operacionais do tipo Berkeley Software Distribution (um sistema derivado do Unix). Apesar dela ter sido criada para os sistemas BSD, atualmente vários outros sistemas são distribuídos sob esta licença. Os proprietários originais da distribuição BSD eram os “Regentes da Universidade da Califórnia”, devido ao fato da BSD ter nascido na Universidade de Berkeley. A licença oficial BSD tem sido revisada desde a sua criação, e inspirou inúmeras variantes utilizadas por outros desenvolvedores de software (veja a seção abaixo, “Licenças estilo BSD”). Multi® Sistemas Princípios do Sistema Linux Introdução ao Linux Esta licença impõe poucas restrições quando comparada aquelas impostas por outras licenças, como a GNU General Public License ou mesmo as restrições padrão determinadas pelo copyright, colocando-a relativamente próxima do domínio público. (De fato, a licença BSD tem sido chamada de copycenter, ou “centro de cópias”, em comparação com o copyright padrão e o copyleft da licença GPL: “Leve até o copycenter e faça quantas cópias quiser.”) Licença MIT A licença MIT, também chamada de licença X ou de licença X11, é uma licença de programas de computadores (software), criada pelo Massachusetts Institute of Technology. Ela é uma licença não copyleft utilizada em software livre, isto é, ela permite a reutilização de software licenciado em programas livres ou proprietários. Muitos grupos utilizam a licença MIT no seu software, como os programas Expat, MetaKit, PuTTY, as bibliotecas do projeto Mono e o sistema de Janelas X Window, este último, é o exemplo mais conhecido. Licença Creative Commons O projeto Creative Commons (também conhecido pela sigla CC, figura abaixo) denomina um conjunto de licenças padronizadas para gestão aberta, livre e compartilhada de conteúdos e informação (coyleft), e mantém a atualização e discussão a respeito delas. As licenças Creative Commons foram idealizadas para permitir a padronização de declarações de vontade no tocante ao licenciamento e distribuição de conteúdos culturais em geral (textos, músicas, imagens, filmes e outros), de modo a facilitar seu compartilhamento e recombinação, sob a égide de uma filosofia copyleft. As licenças criadas pela organização permitem que detentores de copyright (isto é, autores de conteúdos ou detentores de direitos sobre estes) possam abdicar em favor do público de alguns dos seus direitos inerentes às suas criações, ainda que retenham outros desses direitos. Isso pode ser operacionalizado por meio de um sortimento de módulos standard de licenças, que resultam em licenças prontas para serem agregadas aos conteúdos que se deseje licenciar. Creative Commons Os módulos oferecidos podem resultar em licenças que vão desde uma abdicação quase total, pelo licenciante, dos seus direitos patrimoniais, até opções mais restritivas, que vedam a possibilidade de criação de obras derivadas ou o uso comercial dos materiais licenciados. Ainda que se considere que as licenças são meros contratos standard entre o autor e o público, usar tais modelos sem levar em consideração as leis locais poderia tornar as licenças inutilizáveis. Por essa razão, a entidade desenvolveu o projeto iCommons (International Commons), visando uniformizar a redação das licenças por ela disponibilizadas, de acordo com as especificidades normativas de cada país. No Brasil, as licenças já se encontram traduzidas e totalmente adaptadas à legislação brasileira. O projeto Creative Commons é representado no Brasil pelo Centro de Tecnologia e Sociedade da Faculdade de Direito da Fundação Getúlio Vargas, no Rio de Janeiro. Multi® Sistemas Princípios do Sistema Linux Introdução ao Linux 1.3 Movimentos e Projetos do Software Livre Aqui, serão mostrados os principais movimentos e projetos do software livre, para que você possa entender a filosofia por de trás de cada um. Vemos a seguir, os principais movimentos e projetos: Movimento FSSTND O FSSTND (Filesystem Standard), um padrão para sistemas de arquivos hierárquicos específico para o sistema Linux, foi lançado em 14 de fevereiro de 1994. Foram lançadas revisões em 9 de outubro de 1994 e 28 de março de 1995. Movimento FHS No início do ano de 1996, surgiu um movimento, com o apoio da comunidade de desenvolvedores do BSD, que visava o desenvolvimento de versões do FSSTND para outros sistemas do tipo Unix, além do Linux. A partir desta iniciativa foi realizado um esforço para determinar os problemas comuns aos sistemas do tipo Unix. Como resultado da ampliação do escopo do problema, o nome do padrão foi alterado para Filesystem Hierarchy Standard (FHS) (padrão para sistemas de arquivo hierárquicos). O Filesystem Hierarchy Standard (padrão para sistema de arquivos hierárquico), ou FHS, define os principais diretórios, e o seu conteúdo, em um sistema operacional Linux ou do tipo Unix. O FHS é mantido pelo Free Standards Group, uma organização sem fins lucrativos formada por importantes empresas de hadware e software, como HP, Red Hat, IBM e Dell. Movimento Open Source O software chamado de código aberto, ou open source em inglês, é um tipo de software cujo código fonte é visível publicamente. O software de código aberto respeita as quatro liberdades definidas pela Free Software Foundation. Porém, não estabelece certas restrições como as contidas na GPL. Os defensores do movimento Open Source sustentam que não se trata de algo anarquista anticapitalismo, mas de uma alternativa ao modelo de negócio para a indústria de software. Algumas empresas comerciais como IBM, HP, Intel, Dell, entre outras, também têm investido no software de código aberto, juntando seus esforços para a criação do Open Source Development Lab (OSDL), instituição destinada à criação de tecnologias de código aberto. A história do movimento Open Source se confunde com as origens do UNIX, da Internet e da cultura “Hacker”. Multi® Sistemas Logo Open Source