Mini Curso de Linux -- DEFENDERE Conteúdo abordado para áreas de Redes de computadores, Suporte em TI, Analista de Suporte, Administração em Redes Linux. Conteúdo feito por Jonathan E. Freitas Moura São Paulo 2014 Sumário Linux..................................................................................................................03 Visão Geral do Linux.........................................................................................04 Manipulação de arquivos no Linux....................................................................05 Manipulação de diretórios no Linux..................................................................08 Rede no Linux...................................................................................................11 Endereço IP e classe de rede IP......................................................................11 Interface de rede...............................................................................................12 Interface loopback.............................................................................................13 Permissões........................................................................................................13 Modos de permissões.......................................................................................15 Comandos de permissões.................................................................................16 2 www.defendere.com.br 1. Linux O Linux é um clone do Unix criado como uma alternativa barata e funcional para quem não estavam dispostos a pagar alto preço de um sistema Unix comercial ou tinha computador suficientemente rápido. Em 1983, Richard Stallman fundou a Free Foundation (Fundação de Software Livre), cujo projeto, GNU, tinha por finalidade criar um clone melhorado e livre do sistema operacional Unix, mas que não utilizasse seu código-fonte. O desafio do GNU era enorme, havia a necessidade de desenvolver o Kernel (Núcleo do sistema operacional que controla o hardware), utilitários de programação, de administração do sistema, de rede, comandos-padrão e etc. Porém, no fim da década de 1980 o projeto tinha fracassado: apenas os utilitários de programação e os comandospadrão estavam prontos e o Kernel, não. Nessa época, vários esforços independentes para desenvolver clones do Unix estavam em andamento. O Dr. Andrew Tanenbaum desenvolveu o Minix como instrumento de ensino, baseando-se no microprocessador 8086, por estar disponível e barato no mercado. O Minix era útil no ensino dos princípios estruturais do sistema operacionais, entretanto o 8086 não disponibilizava memória virtual ou protegida e apenas tinha memória endereçada de 1MB de cada vez, isso era uma enorme barreira para um sistema operacional moderno, multitarefas. Por isso desde o início o Minix estava limitado a ser um instrumento de ensino. Linus Benedict Torvalds era aluno da Universidade de Helsinque na Finlândia, no final da década de 1980. Ele percebeu que o intel 80386 era o único microprocessador disponível na época capaz de executar um clone do Unix. Além disso, ainda que o 80386 não fosse barato, ele era o único disponível. A sua opção por esse microprocessador foi uma escolha correta, pois garantiu a ele, posteriormente o grande número de voluntários que tornou o desenvolvimento do Linux viável até hoje. Linus B. Torvalds estava disposto a construir um kernel clone do Unix que possuísse memória virtual, multitarefas e capacidade de multiusuários. Tudo isso era um trabalho gigantesco, na prática é impossível apenas uma pessoa desenvolver tudo isso. 3 www.defendere.com.br 1.1. Visão Geral do Linux O Linux tem várias características que se diferenciam dos outros sistemas operacionais e que o aproximam do Unix, sendo um dos motivos de sua escolha em várias aplicações nas quais são necessárias estabilidade e segurança. 1.2. Shell Shell é o nome genérico de uma classe de programas que funcionam como interpretador de comandos e linguagem de programação (scripts). O shell padrão do Linux é “bash”. 1.3. Kernel É o núcleo do sistema operacional, a parte mais próxima do nível físico (Hardware), composta de chamadas, de acesso aos dispositivos de entrada, saída e gerencia de recurso da máquina. O kernel é quem faz a comunicação do software com o hardware. 1.4. Hardware Todo e qualquer dispositivo físico no computador. 4 www.defendere.com.br 2. Manipulação de arquivos no Linux Existem diversas formas de se manipular arquivos no sistema Linux, abaixo irei descrever alguns dos comandos utilizados para fazer esta função de manipulação de arquivo. touch Comando utilizado para criar arquivo, juntos com este comando existe várias opções que complementa o comando. OPÇÃO DESCRIÇÃO -c Não cria o arquivo caso ele não exista. -m Atualiza a hora de modificação. -a Atualiza a data de acesso. --help ou -h Exibe lista de opções do comando. Exemplo: touch arquivo1.doc touch arquivo-teste.txt cat Comando utilizado para criar e visualizar o conteúdo de um arquivo, juntos com este comando existe várias opções que complementa o comando. OPÇÃO DESCRIÇÃO -A Exibe os caracteres especiais. -b Numera apenas as linhas não vazias na saída padrão. -n Numera todas as linhas dentro do arquivo na saída padrão. -t Exibe caracteres de tabulação como ^|. --help ou -h Exibe lista de opções do comando. Exemplo: cat “Mensagem dentro do arquivo” > arquivo1.txt cat arquivo1.txt cat –n arquivo1.txt cat –b arquivo1.txt 5 www.defendere.com.br tac Comando utilizado para visualizar o conteúdo de um arquivo de trás para frente, juntos com este comando existe várias opções que complementa o comando. OPÇÃO DESCRIÇÃO -A Exibe os caracteres especiais. -b Coloca o separador antes de cada linha, em vez de depois. -n Numera todas as linhas dentro do arquivo na saída padrão. --help ou -h Exibe lista de opções do comando. Exemplo: tac arquivo1.txt tac –n arquivo1.txt rm Comando utilizado para arquivo, juntos com este comando existe várias opções que complementa o comando. OPÇÃO DESCRIÇÃO -f Força e exclusão do arquivo sem solicitação de confirmação do usuário. -i Pede confirmação antes de excluir o arquivo. -r Apaga recursivamente todos os arquivos dentro de um diretório. -v Modo VERBOSE, exibe o nome de cada arquivo que está sendo apagado. --help ou -h Exibe lista de opções do comando. Exemplo: rm arquivo1.txt rm –r /diretórios/nomedoarquiv* rm arquivo1.txt arquivo2.txt arquivo3.txt 6 www.defendere.com.br cp Comando utilizado para copiar arquivos, juntos com este comando existe várias opções que complementa o comando. OPÇÃO DESCRIÇÃO -a Preserva todos os atributos o arquivo. -b Faz backup antes de copiar o arquivo. -d Copia um link, mas não o arquivo apontado por ele. -i Pede confirmação antes de sobrescrever um arquivo. -r ou R Copia recursivamente arquivos do diretório e todos os subdiretórios. -v Modo VERBOSE, exibe os nomes dos arquivos antes de copiar. --help ou -h Exibe lista de opções do comando. Exemplo: cp arquivo1.txt /tmp cp -v /home/user/arquivo.txt /tmp mv Comando utilizado para mover e renomear arquivos, juntos com este comando existe várias opções que complementa o comando. OPÇÃO DESCRIÇÃO -b Faz backup dos arquivos que estão sendo movidos ou renomeados. -f Remove arquivos existentes sem pedi confirmação do usuário. -i Pede confirmação antes de mover ou renomear um arquivo. -v Modo VERBOSE, exibe os nomes dos arquivos antes de movê-los. --help ou -h Exibe lista de opções do comando. Exemplo: mv arquivo1.txt arquivorenomeado.txt mv -v /home/user/arquivo.txt /tmp 7 www.defendere.com.br 3. Manipulação de diretórios no Linux Existem diversas formas de se manipulação de diretórios no sistema Linux, abaixo irei descrever alguns dos comandos utilizados para fazer esta função de manipulação de diretórios. mkdir Comando utilizado para criar diretórios, juntos com este comando existe várias opções que complementa o comando. OPÇÃO DESCRIÇÃO -p Cria os diretórios PAI se ainda não existirem. -m Cria um diretório com o modo de acesso “modo”. --help ou -h Exibe lista de opções do comando. Exemplo: mkdir diretorio1 rmdir Comando utilizado para remover diretórios, juntos com este comando existe várias opções que complementa o comando. OPÇÃO DESCRIÇÃO -p Cria o diretório PAI se ainda não existirem. -v Modo VERBOSE, mostra o nome da todos os diretórios removido. --help ou -h Exibe lista de opções do comando. Exemplo: rmdir diretorio1 rmdir diretorio1 diretorio2 diretorio3 8 www.defendere.com.br mv Comando utilizado para mover e renomear diretórios e arquivos, juntos com este comando existe várias opções que complementa o comando. OPÇÃO DESCRIÇÃO -b Faz backup dos diretórios, subdiretórios e arquivos que estão sendo movidos ou renomeados. -f Remove os diretórios, subdiretórios e arquivos existentes sem pedi confirmação do usuário. -i Pede confirmação antes de mover ou renomear os diretórios, subdiretórios e arquivos. -v Modo VERBOSE, exibe os nomes dos diretórios, subdiretórios e arquivos antes de movê-los ou renomear. --help ou -h Exibe lista de opções do comando. Exemplo: mv diretorio1 diretoriorenomeado mv –v -i /home/user/ /tmp cd Comando utilizado para acessar os diretórios (entrar), juntos com este comando existe várias opções que complementa o comando. OPÇÃO DESCRIÇÃO / .. ../ ou ../../ Retornar ao diretório raiz do sistema. Retorna para o ultimo diretório acessado pelo usuário. Sobe um diretório sistema de diretório no Linux. Sobe um ou mais diretórios e já entra dentro do mesmo. Exemplo: cd diretorio1 cd – cd ../../../var cd / 9 www.defendere.com.br ls ou dir Comando utilizado para lista conteúdo dentro de diretórios, juntos com este comando existe várias opções que complementa o comando. OPÇÃO DESCRIÇÃO -a Exibe arquivos ocultos. -l Exibe os arquivos e diretórios mostrando todas as suas permissões, modo detalhado. -t Exibe o conteúdo do diretório de forma ordenada pela data de alteração. -r Exibe o conteúdo do diretório de forma ordenada alfabética inversa. -R Exibe todos conteúdo do diretório RECURSIVAMENTE. --help ou -h Exibe lista de opções do comando. Exemplo: ls diretorio1 ls -l /home/user ls –la /etc ls –R /var pwd Comando utilizado informar ao usuário em qual diretório o usuário está(Qual o diretório atual ele está acessando). Exemplo: Pwd 10 www.defendere.com.br 4. Rede no Linux Rede é a conexão de duas máquinas com o objetivo de compartilhar recursos entre si, Os recursos podem ser: Compartilhamento de conteúdo de informações que tem em seu disco rígido com outros computadores, também chamado de Servidor de Arquivos. Compartilhamento de impressoras com todos os usuários em rede, também chamado de Servidor de Impressão. Compartilhamento de acesso à internet, onde os usuários iram navegar na internet, utilizar e-mail, ler notícias nos sites, isso também pode ser chamado de Servidor Proxy. Servidor Internet/Intranet, com esses serviços os usuários poderão navegar nas páginas de internet localizadas em seu computador, usar Servidor IRC para acesso a chat na rede. Com esses itens citados acima é possível criar permissões de acesso da rede, definindo quem terá ou não permissão para acessar cada compartilhamento ou serviço existente na máquina (www,ftp,irc,icq e etc). 4.1 Endereço IP e Classe de Rede IP CLASSE MASCARA DE REDE ENDEREÇO DA REDE A 255.0.0.0 0.0.0.0 – 127.255.255.255 B 255.255.0.0 128.0.0.0 – 191.255.255.255 C 255.255.255.0 192.0.0.0 – 2233.255.255.255 Multicast 240.0.0.0 240.0.0.0 – 239.255.255..255 Para você instalar uma máquina com Linux em uma rede TCP/IP existente então você deve conectar qualquer um dos administradores da sua rede e realizar algumas perguntas: Endereço IP da sua máquina. Endereço IP da sua rede Endereço IP broadcast Máscara da Rede IP Endereço do Roteador Endereço do Servidor de Nomes (DNS). 11 www.defendere.com.br 5. Interface de rede As interfaces de rede no GNU/Linux estão localizadas no diretório /dev e a maioria são criadas dinamicamente pelos softwares quando são requisitas. Este é o caso da interface ppp e plip que são criadas dinamicamente pelos softwares. Abaixo irei exibir algumas identificações de interfaces de rede no Linux (O caractere ? significa um número que a interface irá identificar): eth? Placa de rede Ethernet e Wave Lan. ppp? Interface de rede ppp (Protocolo ponto a ponto). slip? Interface de rede serial. eql Balanceador de tráfego para múltiplas linhas. plip? Interface de porta paralela. arc?e, arc?s Interfaces Arcnet. si?, ax? Interfaces de rede AX25 (respectivamente para kernel 2.0.xx e 2.2.xx). fddi??, sdla? Interfaces de Frame Relay, respectivamente para dispositivos de encapsulamento DLCI e FRAD. nr? Interface Net Rom rs? Interfaces Rose st? Interfaces Strip (Starmode Radio IP) tr? Token Ring 12 www.defendere.com.br 5.1 Interface loopback A interface loopback é um tipo de interface que permite fazer conexões com você mesmo. Todos os computadores que usam TCP/IP utilizam esta interface e existem várias razões porque precisa fazer isto, por exemplo, você pode testar vários programas de rede sem interferir com ninguém em sua rede. O endereço 127.0.0.1 foi escolhido especificamente para o loopback, assim uma conexão telnet para 127.0.0.1 abrirá uma conexão com o próprio computador local. A configuração da interface loopback é simples, esta tarefa é normalmente feita pelos scripts padrões de inicialização existentes em sua distribuição de Linux. 6. Permissões As permissões de acesso protegem o sistema de arquivos Linux do acesso indevido de pessoas ou programas não autorizados. A permissão de acesso do GNU/Linux também impede que um programa mal intencionado, por exemplo, apague um arquivo que não deve, envie arquivos especiais para outra pessoa ou forneça acesso da rede para que outros usuários invadam o sistema. O sistema GNU/Linux é muito seguro e como qualquer outro sistema seguro e confiável impede que usuários mal intencionados (ou iniciantes que foram enganados) instalem programas enviados por terceiros sem saber para que eles realmente servem e causem danos irreversíveis em seus arquivos, seu micro ou sua empresa. 6.1. Donos, Grupos e outros usuários A idéia básica da segurança no sistema GNU/Linux é definir o acesso aos arquivos por donos, grupos e outros usuários: DONO: É a pessoa que criou o arquivo ou o diretório. O nome do dono do arquivo/diretório é o mesmo do usuário usado para entrar no sistema GNU/Linux. Somente o dono pode modificar as permissões de acesso do arquivo. As permissões de acesso do dono de um arquivo somente se aplicam ao dono do arquivo/diretório. A identificação do dono também 13 www.defendere.com.br é chamada de user id (UID). A identificação de usuário ao qual o arquivo pertence é armazenada no arquivo /etc/passwd e do grupo no arquivo /etc/group. Estes são arquivos textos comuns e podem ser editados em qualquer editor de texto, mas utilize preferencialmente os comandos vipw e vigr que executa procedimentos adicionais de checagem de uids e grupos após a alteração. Tenha cuidado para não modificar o campo que contém a senha do usuário encriptada (que pode estar armazenada no arquivo /etc/passwd caso não estiver usando senhas ocultas). GRUPO: Permite que vários usuários diferentes tenham acesso a um mesmo arquivo (já que somente o dono poderia ter acesso ao arquivo). Cada usuário pode fazer parte de um ou mais grupos e então acessar arquivos que pertençam ao mesmo grupo que o seu (mesmo que estes arquivos tenham outro dono). Por padrão, quando um novo usuário é criado e não especificar nenhum grupo, ele pertencerá ao grupo de mesmo nome do seu grupo primário (este comportamento é controlado pelo parametro USERGROUPS=yes do arquivo /etc/adduser.conf, veja ‘id’ on page 92). A identificação do grupo é chamada de GID (group id). Um usuário pode pertencer a um ou mais grupos. Para detalhes de como incluir o usuário em mais grupos veja ‘Adicionando o usuário a um grupo extra’on page 90. OUTROS: É a categoria de usuários que não são donos ou não pertencem ao grupo do arquivo. Cada um dos tipos acima possuem três tipos básicos de permissões de acesso. 6.2. Tipos de permissões Quanto aos tipos de permissões que se aplicam ao dono, grupo e outros usuários, temos 3 permissões básicas: • r - Permissão de leitura para arquivos. Caso for um diretório, permite listar seu conteúdo (através do comando ls, por exemplo). • w - Permissão de gravação para arquivos. Caso for um diretório, permite a gravação de arquivos ou outros diretórios dentro dele. Para que um arquivo/diretório possa ser apagado, é necessário o acesso a gravação. • x - Permite executar um arquivo (caso seja um programa executável). Caso seja um diretório, permite que seja acessado através do comando cd. 14 www.defendere.com.br As permissões de acesso a um arquivo/diretório podem ser visualizadas com o uso do comando ls -la. 6.3. Modos de permissões: Modo simbólico: É uma lista de expressões na <identificador> <operando> <valor> separadas por vírgula. Identificador: u Usuário. g Grupo. o Outros. a Todos. forma Operando: + Adiciona permissão ás permissões existentes. Retira permissões das permissões existentes. = Assinala explicitamente uma permissão (anulando as outras). Valor: r Permissão de leitura. w Permissão de escrita. x Permissão de execução. s Bit setuid se atribuído a u, bit setgid se atribuído a g. t Bit striky. Modo absoluto: É definido na forma <atributo_especial> <dono> <grupo> <outros>. Obs: O atributo especial é opcional. Atributo especial: 0 Nenhum atributo especial ligado. 1 Bit sticky ligado. 2 Bit setgid ligado. 3 Bits sticky e setgid ligados. 4 Bit setuid ligado. 5 Bits sticky e setuid ligados. 6 Bits setuid e setgid ligados. 7 Bits setuid, setgid e sticky ligados. 15 www.defendere.com.br Dono, Grupo e Outros: 0 Nenhuma permissão. 1 Permissão para execução. 2 Permissão para escrita. 3 Permissão para execução e escrita. 4 Permissão para leitura. 5 Permissão para execução e leitura. 6 Permissão para leitura e escrita. 7 Permissão parta leitura, escrita e execução. 6.4. Comandos de pressões: chmod: Altera permissões de acesso a arquivos ou diretório. OPÇÃO DESCRIÇÃO -c Exibe informações sobre os arquivos modificados. -f Não imprime mensagens de erro. -R Recursivo -v Descreve detalhadamente as alterações de atributos. Modo_arquivo Pode ser simbólico ou absoluto. chown: Muda o dono do arquivo ou diretório. OPÇÃO DESCRIÇÃO -c -f -R -v Exibe informações sobre os arquivos modificados. Não imprime mensagens de erro. Recursivo Descreve detalhadamente as alterações de atributos. Exemplo: chown joao arquivo.doc chown carlos diretório-etc 16 www.defendere.com.br chgrp: Muda o grupo de um arquivo ou diretório. OPÇÃO DESCRIÇÃO -c -f -R -v Exibe informações sobre os arquivos modificados. Não imprime mensagens de erro. Recursivo Descreve detalhadamente as alterações de atributos. Exemplo: chgrp joao arquivo.doc chgrp carlos diretório-etc umask: Altera o valor da máscara de criação de arquivos. Os valores do umask são baseados no valor 666, isto é, a saída e a entrada do comando são subtraídas deste valor. A máscara-padrão de criação de arquivo do Unix é 022, isto é, a permissão de criação e acesso dos arquivos é 666022=644 (rw-r--r--); o que significa que o usuário tem direito de ler e escrever, mas não de executar; o grupo de usuários e os outros tem direito de apenas ler, mas não de escrever e executar. 17 www.defendere.com.br