INTRODUÇÃO AO SISTEMA OPERACIONAL LINUX TREINAMENTO - UFGNet 2001 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 Introdução ao Sistema Operacional LiNUX Copyright© 1999, 2000 - Israel Fernades Dias Teles – [email protected] Revisão 2001 e Atualização para utilização de Linux Slackware – Frederico Rodrigues do Carmo Costa – [email protected] As marcas registradas utilizadas no decorrer deste material são usadas unicamente para fins didáticos, sendo estas propriedade de suas respectivas companhias. Red Hat e RPM são marcas registradas da Red Hat Software, Inc. Slackware é marca registrada da Walnut Creek CDROM e Patrick Volkerding Linux é uma marca registrada e cedida a Linus Torvalds. Motif e UNIX são marcas registradas pelo The Open Group. Netscape é uma marca registrada da Netscape Communications Corporation. Windows é uma marca registrada da Microsoft Corporation. Todas as demais marcas registradas são de uso e direito de seus respectivos proprietários. Toda precaução foi tomada na preparação deste material. Apesar disto algumas incorreções e inconsistências podem estar presentes. O autor não assume qualquer responsabilidade por erros ou omissões, ou por danos resultantes do uso das informações contidas neste livro. Este trabalho está em constante alteração, sugestões por e-mail são bem vindas. 2 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 ÍNDICE 1 - História e características do Linux ...................................................................................... 5 2 - Conceitos Básicos .............................................................................................................. 6 2.1 - Sistema Operacional 2.2 - Kernel 2.3 - Shell 2.4 - Usuário e Super-usuário 2.5 - Área de Swap 3 - Onde tudo começa ............................................................................................................. 7 3.1- Acessando o sistema 3.2- Saindo do sistema 3.3- Arquivos e diretórios 3.4 - A árvore de diretórios do Linux (O File System do Linux ) 3.5 - Fazendo referência a arquivos no sistema 3.5.1 Caminho Absoluto 3.5.2 Caminho Relativo 3.6 - Desligando o sistema 4 - Estudo dos comandos ..................................................................................................... 12 4.1 - Listando o conteúdo do seu diretório 4.2 - Movendo-se entre diretórios 4.3 - Criando diretórios 4.4 - Copiando arquivos 4.5 - Movendo arquivos 4.5.1 - Mudando o nome de um arquivo 4.6 - Copiar e Mover 4.7 - Dando uma olhada nos arquivos 4.8 - Pedindo ajuda ao sistema 4.9 - Apagando arquivos e diretórios 4.10 - Caracteres Curinga (Wildcards) 4.11 - Exibindo as primeiras linhas de um arquivo 4.12 - Exibindo as últimas linhas de um arquivo 4.13 - Contando as linhas, palavras e caracteres de um arquivo 4.14 - Criando Links (Ligações entre arquivos) 4.14.1 - Criando Hard Links 4.14.2 - Criando Soft Links 4.15 - Acessando dispositivos no Linux 4.15.1 - Montando dispositivos 4.15.2 - Desmontando dispositivos 4.16 - Características de arquivos 4.17 - Ordenando o conteúdo de um arquivo 4.18 - Entrada e saída padrão 4.18.1 - Redirecionamento destrutivo 4.18.2 - Redirecionamento não destrutivo 4.19 - Pipe 4.20 - Localizando arquivos 4.20.1 - Localizando arquivos usando o PATH do sistema 4.20.2 - Outro comando para localizar arquivos (find) 4.20.3 - Localizando arquivos através de strings 4.21 - Comparando arquivos 4.22 - Comprimindo arquivos 4.22.1 - gzip 4.22.2 - Compress 4.22.3 - Visualizando o conteúdo de arquivos comprimidos 4.23 - Selecionando campos de uma tabela 4.24 - Empacotando arquivos 3 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 4.25 - Filtrando informações 4.26 - Máscaras para comandos 4.26.1 - Criando máscaras 4.26.2 - Retirando máscaras 4.27 - Descobrindo que usuário você é 4.28 - As variáveis de sistema 4.28.1 - Manipulando as variáveis de sistema 5 - Permissões de Arquivos ................................................................................................... 30 5.1 - Entendo as permissões 5.2 - Alterando permissões 5.3 - Máscara de criação de arquivos 6 - Alguns Arquivos Importantes do Linux ............................................................................. 33 6.1 - Arquivos do diretório /etc 6.2 - Arquivos do diretório /proc 6.3 - Arquivos de inicialização 6.4 - Arquivos de inicialização dos processos (Slackware) 7 - O Editor de textos vi ........................................................................................................ 38 8 - Administrando contas de usuários .................................................................................... 41 8.1 - Contas de usuários 8.2 - Tornando- se root 8.3 - Onde todos os usuários estão 8.4 - Adicionando usuários 8.5 - Removendo usuários 8.6 - Adicionando grupos 8.7 - Removendo grupos 9 - Processos e Tarefas ........................................................................................................ 43 9.1 - Listando os processos da máquina 9.2 - Finalizando processos 9.3 - Processos em background e foreground 9.4 - Tarefas 9.4.1 - Crontab 9.4.2 - At 10 - Criando um disco de Instalação no DOS/Windows ......................................................... 47 11 - Particionando e Formatando Discos Rígidos .................................................................. 48 11.1 – Particionando Discos Rígidos 11.2 – Formatando Discos Rígidos 12 - Um Pouco sobre o LILO ................................................................................................. 50 13 – Pacotes de instalação pré-compilados ........................................................................... 52 13.1 – Pacotes RPM 13.1.1 - Instalando pacotes RPM 13.1.2 - Conflitos com pacotes já instalados e Depêndencias entre outros pacotes 13.1.3 - Quais pacotes estão instalados ? 13.1.4 - Desinstalando os pacotes 13.1.5 - Atualizando pacotes 13.2 – Pacotes TGZ 13.2.1 – Instalando pacotes TGZ 13.2.2 – Removendo pacotes TGZ 13.2.3 – Atualizando pacotes TGZ 13.2.3 – Quais pacotes estão instalados 14 - Redes TCP/IP no Linux .................................................................................................. 54 4 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 14.1 - Um pouco sobre o Hardware 14.2 - Identificação de máquinas em uma rede TCP/IP 14.3 - Atribuindo um número IP e estabelecendo rotas de uma interface de rede 14.3.1 - Atribuindo um número IP a uma interface de rede 14.3.2 - Estabelecendo rotas de uma interface de rede 14.4 - Configurando uma interface ppp 14.5 - Configurando o nome da máquina 14.6 - O comando ping 14.7 - O comando netstat 14.8 - O servidor de Internet Inetd (Internet Deamon) 14.9 - Acesso remoto seguro com Secure Shell (SSH) 14.10 - Transferência de arquivos (FTP) 15 – O Ambiente Gráfico ....................................................................................................... 61 15.1 - Reconhecimento do Hardware 15.2 - Instalando o XFree86 15.3 - Ferramentas para configurar o XFree86 15.4 - Inicializando o Ambiente Gráfico 15.5 - Configurando o Xfree86 à partir do arquivo XF86Config Bibliografia .......................................................................................................................... 66 5 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 1. Introdução 1.1 - O Sistema Operacional Linux O Sistema Operacional Linux começou a ser desenvolvido no início da década de 90 por um estudante de computação chamado Linus Torvards. Esse estudante Finlandês trabalhava em um projeto pessoal que mais tarde viria a se tornar o Linux. Inspirado em um sistema já existentes chamado Minix , que era um pequeno UNIX para fins acadêmicos. Depois de ter conseguido certo avanço Linus colocou à disposição via Internet a primeira versão do Linux a partir de então ele contou com a ajuda de incontáveis programadores ao redor do mundo, cada um resolvendo um problema ou criando novos recursos para o Linux. Esse sistema operacional é um UNIX portado para PC’s ( processadores X86 e clones ) que é multitarefa, multiusuário, trabalha com bibliotecas compartilhadas , carga de drivers sob demanda, memória virtual, possui suporte a TCP/IP e possui uma grande variedade de softwares como compiladores de várias linguagens, editores de textos, X-Window e etc. Algumas características do Linux: MULTITAREFA: Significa que o Linux pode realizar mais de uma tarefa ao mesmo tempo. Resumidamente, um Sistema Multitarefa se comporta da seguinte maneira: O processador divide seu tempo de execução entre várias tarefas, realizando parte de cada uma delas em uma pequena fração de tempo. Como as máquinas de hoje trabalham a vários milhões de ciclos por segundo tem-se a impressão de que todas as tarefas são realizadas ao mesmo tempo. O segredo de um bom Sistema Operacional consiste em gerenciar todas essas tarefas de forma eficiente. MULTIUSUÁRIO : Significa que mais de uma pessoa pode usar o computador ao mesmo tempo pode-se então compartilhar os recursos da máquina, espaço físico de disco, arquivos e etc. ( Este é um conceito um pouco difícil de ser compreendido logo no início mas mais adiante isso será melhor compreendido). SEGURANÇA : Como nos Sistemas Unix, o Linux mantém o mesmo padrão para a segurança, levando em considerações ameaças tanto externas quanto dos próprios usuários do sistema. Citando algumas características de segurança temos : * Senha para utilizar o sistema; * Arquivos com controle de acesso; * Codificação de dados importantes; BIBLIOTECAS COMPARTILHADAS : O Linux trabalha com um sistema de shared libraries. Entenda uma biblioteca como um conjunto de funções que o sistema e alguns programas do sistema podem fazer uso, como essas funções estão reunidas em um lugar e todos que precisam podem fazer uso delas pode-se diminuir o tamanho dos programas e do próprio sistema. 6 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 2. CONCEITOS BÁSICOS 2.1 Sistema Operacional - É um conjunto de programas que permitem ao usuário operar seu microcomputador. O mesmo se aplica a computadores de médio e grande porte, ou seja, todos os computadores necessitam de um sistema operacional para que seja possível utilizá-los. Algumas operações são básicas, como a manipulação de arquivos e periféricos. * Podemos destacar duas funções básicas de um sistema operacional: * Gerenciar os recursos do hardware de forma eficiente; * Providenciar uma interface mais amigável para gerar o computador ( uma vez que a máquina na verdade só entende linguagem binária.); Exemplos de Sistemas Operacionais: MS-DOS, WINDOWS 95/98, WINDOWS NT, SOLARIS, AIX, LINUX entre outros. Conceitos relacionados ao ambiente Linux: 2.2 KERNEL - É o núcleo do Sistema Operacional. O kernel é um programa que se comunica com o hardware diretamente, e devido a isso ele tem que ser adaptado a cada plataforma de hardware (processadores INTEL, POWER PC, MACINTOSH, etc.). O Kernel se comunica com o hardware através de chamadas de sistema que são instruções e linguagem de máquina e alguma de suas funções são: gerenciamento de processos e de memória ; drivers de dispositivos dentre outras. 2.3 SHELL - O fato do Kernel se comunicar com o hardware apenas em linguagem de máquina torna essa tarefa algo meio distante para nós "Simples Mortais". O Shell é uma parte do Sistema Operacional que funciona como ligação /tradutor entre usuário e o Kernel, traduzindo os comandos digitados em linguagem de máquina para que o Kernel possa realizar as funções necessárias. Deste modo o Shell tem duas funções principais: interpretar os comandos do usuário e servir como uma ferramenta para programação. Tipos de Shell: csh, bash, ksh entre outros. 2.4 USUÁRIO E SUPER USUÁRIO (ROOT) - Devido às características de segurança do Linux, apenas os usuários que possuem permissão (uma conta no Sistema) podem utilizar a máquina . Cada pessoa que possua uma conta no sistema é chamada de USUÁRIO. O super usuário, chamado de ROOT, é o administrador do Sistema, ele gerencia a abertura de novas contas, exclusão de usuários, organiza e dita as regras para que o Sistema funcione o mais eficazmente possível. 2.5 ARÉA DE SWAP (MEMÓRIA VIRTUAL EM DISCO) - Do inglês área de "troca", é uma parte de HD que o Sistema Operacional usa para armazenar dados temporariamente, dados que deveriam estar na RAM . No Linux isso é bastante claro pois durante sua instalação é necessário separar uma determinada quantidade de memória do disco rígido para SWAP. 7 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 3. ONDE TUDO COMEÇA 3.1 Acessando o sistema Devido às características do Linux só têm acesso ao Sistema os usuários que possuem uma conta nesse Sistema. A tela de login do Linux pode variar de terminal para terminal, ou de uma distribuição para outra mais será sempre algo assim: Welcome to Linux 2.2.16. host login: Password: Temos que: host - No caso de seu computador estar ligado a uma rede o <Nome da máquina (vampira)> é utilizado para identificá-lo na rede. Se não esse nome pode ser deixado de lado ou usado para personalizar seu Sistema. Login : É o nome com que o usuário é identificado pela máquina, de ser único para cada usuário. Password : É a senha do usuário. Deve ser única, não deve ser revelada ou coincidir com combinações triviais como: data de nascimento, placas de carro e etc. Ao ser digitada, a senha não será’ exibida na tela, por razões de segurança. Uma vez digitados Login e Password corretamente o usuário tem então acesso ao sistema e lhe e’ apresentado um prompt do SHELL a espera de comandos: Welcome to Linux 2.2.16. host login: mane Password: /home/<usuário>$ Se um dos dois itens forem digitados erroneamente, surgirá então a mensagem : incorrect . Deve-se então digitar novamente esses itens para se ter acesso ao Login sistema. O prompt pode variar conforme sua configuração (que é alterável) e/ou conforme o shell que o usuário esteja utilizando. 3.2 Saindo do sistema Para encerrar a sessão (fazer o logout da máquina) digita-se exit . /home/<usuário>$ exit <Enter> Deste modo será representada novamente a tela de login do sistema. 3.3 Arquivos e Diretórios Quase todas as operações realizadas, em um computador, por intermédio do Sistema Operacional, estão relacionadas com arquivos e diretórios. Arquivos nada mais são do que um tipo de informação, a qual podemos classificar. Por exemplo: Um jogo de vídeo game é um arquivo do tipo "executável". Um arquivo que contém caracteres que podem ser apresentados na tela de forma legível, ou que podem ser impressos, é um arquivo de "texto" (não levando em consideração tipos de formatação desse arquivo). Um diretório é um conjunto de arquivos. Imagine uma pasta onde podem ficar vários tipos de arquivos e você tem um diretório. Um diretório também pode conter outros diretórios, neste caso, esse diretório é chamado de "Diretório Pai" ou "parente" dos diretórios que estão contidos nele. Ao efetuarmos o login no Sistema nosso diretório corrente será geralmente: 8 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 /home/<usuário>$ Supondo que o nosso usuário chame Mane: /home/<usuário>$ O Sistema de arquivos do Linux segue uma hierarquia e para entendermos melhor onde estamos vamos acompanhar a figura abaixo: Raiz do sistema ( / ) home mane O diretório mane está contido no diretório home , que por sua vez está contido no diretório / que é o raiz do Sistema. O raiz é o diretório "pai" do diretório home e esse é o diretório pai do diretório mane. Neste ponto podemos notar alguma semelhança entre o LINUX e os Sistemas Microsoft (MS-DOS, WINDOWS 3.11 / 95 / 98 / NT) . O caracter usado para separação de diretórios é a barra no Linux (e nos Sistemas UNIX em geral) é usada a barra normal " / ", e nos sistemas Microsoft é usada a barra inversa " \ " . 3.4 A árvore de diretórios do Linux 9 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 Embora possa ocorrer diferenças de sistema para sistema a árvore de diretórios do Linux, também chamada de Sistema de Arquivos ( File System ) mantém uma semelhança habitual com os sistemas UNIX. Raiz ( / ) /bin /dev /etc /home /lib /proc /tmp /usr /var /mnt /lost + found /sbin /root A árvore de diretórios do Linux ( Linux File System ) Sobre os diretórios : / - É o diretório raiz do Sistema . A partir desse, ponto é montado todo o Sistema de arquivos do Linux, note que todos os outros diretórios estão abaixo dele. /bin - Neste diretório estão os arquivos executáveis do Sistema. /dev - Os arquivos contidos nesse diretório são de extrema importância para o Linux. Do inglês "devices" (dispositivos) , esses arquivos são usados para acessar dispositivos . Um exemplo rápido: o arquivo /dev /fd0 é usado para se ter acesso ao floppy de 3 1/2 ( floppy disk ). /etc - Este diretório contém vários arquivos de configurações do Linux. É de grande importância e alguns dos seus arquivos mais importantes serão estudados mais tarde. /home - Aqui ficam os diretórios dos usuários do Sistema . Seria aqui que o diretório "mane" estaria. /lib - As bibliotecas que o Sistema operacional precisa para funcionar ficam aqui. Imagine uma biblioteca como um conjunto de funções capazes de realizar certas tarefas. 10 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 Quando determinados programas necessitam destas bibliotecas é aqui que a inclusive, vários programas podem fazer uso da mesma biblioteca. buscam, /proc - Este diretório contém informações importantes sobre seu Sistema como as interrupções que estão em uso, dados sobre os processo que estão sendo executados e etc. Na verdade o /proc não está no disco, ele é um diretório virtual que está armazenado na RAM e é mantido pelo KERNEL. /tmp - Arquivos temporários são armazenados no /TMP . Pode ser utilizado por usuários do sistema e por programas ( que quando são executados, precisam gerar arquivos temporários e guardá-los em algum lugar). /usr - Vários arquivos encontrados nesse diretório (ou em diretórios abaixo deste) são opcionais e, sem eles, o Sistema poderia operar perfeitamente, mas os arquivos encontrados aqui tornam o Sistema mais interessante e completo. Por exemplo, bibliotecas para os compiladores das linguagens de programação C e C++, páginas de manuais do sistema ( Veremos esse assunto mais tarde). /var - Contém arquivos considerados temporários mas não da mesma natureza daquele contidos no diretório / tmp. E-mails e arquivos de logs do Sistema são alguns dos tipos de arquivos contidos nos diretórios /var/spool e /var/admin ,respectivamente. /mnt - Este diretório é usado para a montagem de dispositivos como drivers de disquetes, CD-ROMS e etc. O conceito de "montar " um dispositivo no sistema pode parecer obscuro, mas isso será visto no decorrer do curso. /lost + found - Arquivos recuperados pelo utilitário fsck são colocados nesse diretório. /sbin - Assim como o diretório /bin contém também arquivos executáveis, mas esses destinados à administração do sistema. /root - É o diretório do root no Sistema. Do mesmo modo que nosso usuário "mane" , quando loga, tem sua posição inicial em /home/mane, o root tem seu diretório em /root 3.5 Fazendo referência a arquivos no sistema Para referenciar um arquivo dentro do sistema podemos usar dois modos, usando o caminho absoluto ou caminho relativo. 3.5.1 Caminho Absoluto O caminho absoluto de um arquivo é composto pelo nome do diretório onde ele se encontra e seu nome. Por exemplo, o caminho absoluto do arquivo passwd que se encontra no diretório /etc é : /etc/passwd. 3.5.2 Caminho Relativo O caminho relativo de um arquivo é composto apenas por seu nome., ou seja , o caminho relativo do arquivo passwd seria apenas passwd. 3.6 Desligando o sistema Para desligar o sistema usa - se o camando shutdown : 11 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 /home/<usuário>$shutdown –h now [ Enter ] Neste exemplo o serão finalizados todos os processos que estiverem rodando e o sistema será paralisado. /home/<usuário>$shutdown –r now [ Enter ] Deste modo serão fianalizados os processos correntes , o sistema será paralisado e a máquina será reinicializada. ( Reboot ) Outra maneira de desligar seu sistema é usar o camando sync e o comando halt. /home/<usuário>$sync [ Enter ] /home/<usuário>$halt [ Enter ] Essa sequência de comandos também desligará seu sistema de forma segura, fazendo a cópia dos dados que estão na memória para o HD, finalizando os processos correntes e desligando o sistema. 12 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 4. Estudo dos Comandos Uma vez logado no Sistema, você esta apto a realizar algumas tarefas como: listar o conteúdo do seu diretório corrente, copiar, mover, criar e apagar arquivos, criar e remover diretórios e etc, nessa parte vamos estudar alguns dos comandos mais utilizados do Linux e suas opções. 4.1 Listando o conteúdo do seu diretório Para listar o conteúdo do diretório corrente (diretório corrente e aquele em que você está) o comando usado é o ls : /home/mane$ ls [ Enter ] fotos PAR-IMPAR trabalhos Uma vez digitado ls seguido da tecla ENTER você terá uma listagem do conteúdo do seu diretório . Suponhamos que , nesse caso, seu diretório contenha dois arquivos chamados PAR-IMPAR e trabalhos e um subdiretório chamado fotos. Geralmente ( quando isso for possível ) arquivos não executáveis são apresentados na cor verde e diretórios na cor azul. Mas, supondo que você não disponha de um monitor colorido, ou que não queira depender disto para descobrir quais os tipos de arquivos estão armazenados no seu diretório, existem algumas opções do comando ls que podem ajudá-lo. A opção -F lhe mostrará algo assim: /home/mane$ ls -F [ Enter ] PAR-IMPAR* fotos/ trabalhos Temos um novo tipo de listagem agora. Lê-se a opção -F deste modo: Nomes seguidos de uma barra ( " / " ) representam diretórios; nomes seguidos de asterisco ( " * " ) são arquivos executáveis , e aqueles que não possuem nenhuma dessas características ( o arquivo trabalho) não são considerados nem executáveis nem diretórios, podendo ser, na maioria das vezes arquivos de texto. (arquivos executáveis podem ser arquivos de texto, mas falaremos nisso quando entrarmos na parte de "shell scripts") . Um outro modo , o mais utilizado, para listar o conteúdo de um diretório é usar o comando ls com as opções -la. A opção " l " nos dá algumas características dos arquivos listados, enquanto a opção " a " lista até os arquivos ocultos. /home/mane$ ls -la [ Enter ] total 23 drwxr-xr-x 6 mane users drwxr-xr-x 21 root root -rw------1 mane users -rw-r--r-1 mane users -rw-r--r-1 mane users -rw-r--r-1 mane users -rwxr-xr-x 1 mane users drwxrwxr-x 2 mane users -rw-rw-r-1 mane users 1024 mai 19 10:08 . 1024 abr 29 13:40 .. 7406 mai 15 12:57 .bash_history 24 mar 23 06:05 .bash_logout 220 mar 23 06:05 .bash_profile 124 mar 23 06:05 .bashrc 505 mai 19 10:04 PAR-IMPAR 1024 mai 19 10:05 fotos 505 mai 19 10:05 trabalhos Vamos então entender essa nova listagem, usando o comando ls com as opções - la. 13 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 No primeiro campo estão as permissões de cada arquivo (veremos o que vem a ser permissões posteriormente), note que na linha relativa à trabalhos, esse campo começa com a letra "d" , indicando que trabalhos é de foto um diretório. O segundo campo refere-se , respectivamente ao dono do arquivo (mane) e ao grupo a que ele pertence. O terceiro campo indica o tamanho do arquivo em bytes . O quarto campo faz referência à data e hora de criação do arquivo e o quinto campo é o nome do arquivo. Não se preocupe se essa interpretação lhe parecer confusa, logo você estará lendo esse tipo de listagem com muita facilidade e rapidez. Você deve ter notado que nas várias maneiras de usar o comando ls (ls, ls –F, ls –la), existe um certo padrão : ls - <opção>, esse padrão se aplica a grande maioria dos comandos do Linux : comando - < opção > Por exemplo, ls –l listaria todas os arquivos do diretório, com suas características ( permissões, dono, grupo, data e etc ) mas não me mostraria os arquivos ocultos ( arquivos ocultos começam com um ponto ( “. “) no Linux ). Logo a sintaxe ls –la me daria uma combinação dessas duas opções. 4.2 Movendo-se entre diretórios Após listar o conteúdo do diretório vamos nos mover entre os diretórios do sistema. Nosso diretório atual é /home/mane mas existe um comando que retorna nossa posição atual no sistema, sua sintaxe é : pwd [ Enter ] /home/mane$ pwd [ Enter ] /home/mane Para movermos entre os diretórios o camando usado é o cd ( change directory ) e sua sintaxe é : cd < nome do diretório > /home/mane$ cd fotos [ Enter ] /home/mane/fotos$ pwd [ Enter ] /home/mane/fotos Pode-se usar um ponto ( “ . “ ) para fazer referência ao diretório corrente, ou seja aquele em que você se encontra, e dois pontos referenciar o diretório acima do que você está, o diretório parente. /home/mane$ cd fotos [ Enter ] /home/mane/fotos$ cd .. [ Enter ] /home/mane$pwd [ Enter ] /home/mane Neste exemplo, após o usuário mover-se para o diretório fotos ele usa o comando cd seguido por dois pontos o que o faz retornar ao diretório parente, que é /home/mane. Outro recurso é usar “ ~ “ ( til ) para referenciar o diretório home de um usuário. home/mane$ cd /tmp [ Enter ] /tmp$ cd ~ [ Enter ] /home/mane$ pwd [ Enter ] /home/mane Após mudar para o diretório /tmp , o uso do comando cd ~ faz com que o usuário vá para seu diretório home ( /home/mane ). Durante as tentativas de tentar mover-se pelo sistema pode surgir a mensagem “ Permission denied “ ( permissão negado ). Isso ocorre devido a política de segurança do Linux. 14 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 Diretórios de usuários do sistema só podem ser acessados se esses derem permissão para isso, ou pelo ROOT. 4.3 Criando diretórios Para criar diretórios o comando usado é mkdir (make directory), e sua sintaxe é mkdir < nome do diretório > . /home/mane$mkdir teste [ Enter ] /home/mane$ ls -F [ Enter ] PAR-IMPAR* fotos/ trabalhos teste/ Neste exemplo cria-se um diretório chamado “ teste ”. 4.4 Copiando arquivos Copiar arquivos no Linux é muito simples e para isso usa – se o comando cp. A sintaxe desse comando é cp < nome do arquivo > < destino >. /home/mane$cd /etc /etc$ cp issue.net /home/mane [ Enter ] /etc$cd /home/mane [ Enter ] /home/mane$ ls [ Enter ] fotos PAR-IMPAR trabalhos issue.net Aqui o usuário vai ao diretório /etc e copia o arquivo “ issue.net “ para seu diretório. Essa operação pode ser feita de modo mais rápido usando alguns recursos já vistos. /home/mane$cp /etc/issue.net ~ [ Enter ] /home/mane$ls [ Enter ] fotos PAR-IMPAR trabalhos issue.net Usando o caminho absoluto do arquivo podemos copiá – lo de forma mais rápida. O nome absoluto do arquivo é /etc/issue.net e o sinal ~ ( til ) faz referência ao diretório home do usuário. 4.5 Movendo arquivos Para mover arquivos no Linux o comando usado é o mv. Sua sintaxe é : mv < nome do arquivo > < destino >. /home/mane$mv /etc/issue.net ~ [ Enter ] /home/mane$ls [ Enter ] fotos PAR-IMPAR trabalhos issue.net Neste exemplo movemos o arquivo issue.net para nosso diretório home. 4.5.1 Mudando o nome de um arquivo 15 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 Para mudar o nome de um arquivo também é usado o comando mv. O modo é mv < nome do arquivo > < novo nome > /home/mane$ls [ Enter ] fotos PAR-IMPAR trabalhos issue.net /home/mane$mv trabalhos provas [ Enter ] /home/mane$ls [ Enter ] fotos PAR-IMPAR provas issue.net Aqui o arquivo “ trabalhos “ teve seu nome alterado para “ provas “ . 4.6 Copiar e Mover Talvez exista uma certa confusão entre os termos copiar e mover durante a utilização do sistema. A dúvida é comum e fácil de ser sanada. Ao copiarmos um arquivo no final da operação teremos dois arquivos, um na origem (de onde copiamos) que é o original, e um no destino que é a copia do arquivo. Já quando movemos um arquivo o resultado da operação será apenas um arquivo, por que ao movermos estamos tirando o arquivo de sua posição atual e colocando – o em outro lugar. 4.7 Dando uma olhada nos arquivos Para visualizar o conteúdo de um arquivo temo dois comandos: more e cat . O comando cat irá listar o arquivo de uma vez, sem paradas. Se esse arquivo for grande demais para ser exibido no espaço de uma tela a melhor opção será usar o comando more que lista o arquivo e a cada vez que a listagem preenche toda a tela é feita uma parada. /home/mane$ more /etc/smb.conf # This is the main Samba configuration file. You should read the # smb.conf(5) manual page in order to understand the options listed # here. Samba has a huge number of configurable options (perhaps too # many!) most of which are not shown in this example # # Any line which starts with a ; (semi-colon) or a # (hash) # is a comment and is ignored. In this example we will use a # # for commentry and a ; for parts of the config file that you # may wish to enable # # NOTE: Whenever you modify this file you should run the command "testparm" More--(8%) Aqui listamos o conteúdo do arquivo smb.conf que está no diretório /etc ( caminho absoluto do arquivo : /etc/smb.conf ). Como o arquivo não cabe na tela é feita uma parada e o sistema indica que foi mostrado 8% do arquivo. Existem algumas opções para o comando more : [ Barra de espaço ] [ Enter ] [b] Avança para a próxima página do arquivo Avança uma linha Volta uma página 4.8 Pedindo ajuda ao sistema 16 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 Felizmente o Linux possui um recurso que pose ser de grande utilidade para o usuário, são as páginas de manuais do sistema (man pages). Essas páginas possuem um grande volume de informações sobre comando e arquivos. Para consultar as páginas de manuais é usado o comando man seguido do nome do comando ou do nome do arquivo que se quer informação. Assim man < nome do comando > ou man < nome do arquivo > /home/mane$ man cp [ Enter ] CP(1) CP(1) NOME cp – copia arquivos e diretórios SINOPSE cp [opções] caminho arquivo cp [opções] arquivo... diretório ... No exemplo acima olhamos a página de manual do comando cp . Essa página está traduzida para o português porque esse exemplo foi retirado do Conectiva Linux versão 3.0 (Guarani) que contém um bom número de man pages traduzidas, mas as páginas de manuais tem seu formato original em inglês e é assim que elas se apresentam na maioria dos sistemas. Existem algumas facilidades para consultar as páginas de manuais, elas são : [ Enter ] [ Barra de Espaço ] / < palavra > [n] [b] [q] Avança a documentação linha por linha Avança a documentação página por página Faz procura no texto por “palavra” Procura próxima ocorrêcia de “palavra” Retrocede uma página Sai da documentação 4.9 Apagando arquivos e diretórios Todo cuidado é pouco quando o assunto é apagar arquivos no Linux, porque arquivos apagados não podem ser recuperados. O comando usado é: rm (remove), e sua sintaxe é: rm < nome do arquivo > /home/mane$ls [ Enter ] fotos PAR-IMPAR trabalhos issue.net /home/mane$rm issue.net [ Enter ] /home/mane$ls [ Enter ] fotos PAR-IMPAR provas Para apagar diretórios o comando usado é rmdir , mas o diretório só será apagado se estiver vazio. Caso contrário surgirá uma mensagem do tipo : “ rmdir: < nome do diretório > : Directory not empty “ . /home/mane$ls [ Enter ] fotos PAR-IMPAR trabalhos issue.net /home/mane$rmdir fotos [ Enter ] rmdir: fotos: Directory not empty /home/mane$ls [ Enter ] fotos PAR-IMPAR trabalhos issue.net Nesse exemplo o diretório não foi apagado porque não estava vazio. 17 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 Para apagar um diretório que contenha algum arquivo ou subdiretório é usado o comando rm com a opção –r. /home/mane$ls [ Enter ] fotos PAR-IMPAR trabalhos issue.net /home/mane$rm –r fotos [ Enter ] /home/mane$ls [ Enter ] fotos PAR-IMPAR trabalhos issue.net 4.10 Caracteres Curinga (Wildcards) Caracteres curinga ( Wildacards ) são caracteres que podem ajudar – nos em muitas operações. Eles podem substituir um ou mais caracteres em muitas operações. Caracter * ? Significado Substitui todos os caracteres Substitui um caracter Vamos aos exemplos : /home/mane$ls /etc/in* [ Enter ] inetd.conf info-dir initrunlvl inittab inputrc O asterístico substitui todos os outros caracteres, deste modo serão listados todos os arquivos que começam com “ in “ . /home/mane$ls /etc/pas* [ Enter ] passwd passwd- Do mesmo modo, neste exemplo, serão listados todos os arquivos começados com “ pas “ /home/mane$ ls ???.conf pam.conf smb.conf Aqui serão listados todos os arquivos terminados em .conf e tem seus nomes iniciados por três caracteres quaisquer . 4.11 Exibindo as primeiras linhas de um arquivo Para exibir as primeiras linhas de um arquivo usa – se o comando head, sua síntaxe é: head <nome do arquivo> . Se for usada a opção –n N serão listadas as N primeiras linhas do arquivo. Se for omitido –n N as dez primeiras linhas serão listadas. /home/mane$head –n 5 /etc/passwd [ Enter ] root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin: daemon:x:2:2:daemon:/sbin: adm:x:3:4:adm:/var/adm: lp:x:4:7:lp:/var/spool/lpd: Neste exemplo são listadas as cinco primeiras linhas do arquivo passwd contido no diretório /etc. Se não fosse especificado o número de linhas (-n 5) seriam listadas as dez primeiras linhas do arquivo. 18 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 4.12 Exibindo as últimas linhas de um arquivo Para esta tarefa o comando utilizado é o tail, e sua sintaxe é: tail < nome do arquivo >. Se for usada a opção –n N serão listadas as N útimas linhas do arquivo. A opção padrão é listar as dez últimas linhas do arquivo. /home/mane$tail –n 5 /etc/passwd [ Enter ] mane:x:511:512:Franscisco da Silva:/home/mane:/bin/bash bwayne:x:512:513:Bruce Wayne :/home/bwayne:/bin/bash maria:x:514:515:Maria das Graças:/home/maria:/bin/bash gvargas:x:515:516:Getúlio Vargas :/home/gvargas:/bin/bash linux:x:516:516::/home/linux:/bin/bash 4.13 Contando as linhas, palavras e caracteres de um arquivo O comando wc faz a contagem de linhas, palavras e caracteres de um arquivo. A sintaxe é wc < nome do arquivo >. /home/mane$ wc /etc/ wc smb.conf 292 1883 10756 smb.conf Contando as linhas , palavras e caracteres do arquivo passwd encontrado no diretório /etc temos : 292 linhas , 1883 palavras e 10759 caracteres. 4.14 Criando Links (Ligações entre arquivos) Criar um link (ligação) entre dois arquivos . O arquivo existe apenas uma vez mais pode haver mais de uma referência a ele. Os arquivos no Linux são identificados pelo sistema através do seu “inode number“. Por exemplo, o comando ls com a apção –i lista o arquivo e seu “inode number“. /home/mane$ls -i PAR-IMPAR 100394 PAR-IMPAR Aqui é listado o “inode number “ do arquivo PAR-IMPAR. 4.14.1 Criando Hard Links Um hard link é uma referência a “inode number“ de um arquivo, ou seja, é uma ligação que aponta para o “inode number “ desse arquivo. Para criá–lo comando é: ln < origem > < destino > /home/mane$ln PAR-IMPAR jogo [ Enter ] Foi criado aqui um hard link para o arquivo PAR-IMPAR com o nome de “jogo”, ou seja, ao digitar “jogo”, o resultado será o mesmo que digitar PAR-IMPAR. Como esse é um hard link, o “inode number“ de ambos os arquivos é o mesmo, isso pode ser verificado com o comando ls –i. Se existir mais de um hard link para um arquivo será necessário apagar todos os links que levam a esse arquivo para removê-lo completamente do seu sistema. Alterações feitas em qualquer um desses arquivos serão repassadas para os outros arquivos, se você fizer uma alteração no arquivo “jogo”, será o mesmo que alterar o arquivo PAR-IMPAR. Uma restrição do hard link é que ele só pode referenciar arquivos que estejam no mesmo sistema de arquivos (file system). 19 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 4.14.2 Criando Soft Links Link simbólico, ou symlink, é uma referência à um arquivo que não aponta para seu “ inode number “ , mas dá ao arquivo em questão outro nome. Ao contrário do hard link, o soft link pode apontar para arquivos que estejam em outros file systems. Para criar um soft link é usado o comando: ln –s <origem> <destino> /home/mane$ln –s PAR-IMPAR game [Enter] No exemplo acima foi criado um soft link chamado “game” para o arquivo PAR-IMPAR. Se for usado comando ls –i pode – se verificar que o arquivo criado não tem o mesmo “inode number“ que PAR-IMPAR. Use o comando ls –l para listar as permissões do arquivo, o campo referente à essas características será preenchido com lrwxrwxrwx, porque as permissões desse tipo de link são dadas pelo seu alvo. Repare também que no local do nome do arquivo é dado o nome do link e para onde ele aponta. Como já foi dito anteriormente, é possível criar um soft link para um arquivo que esteja em outro file system. Podemos também criar links para diretórios e isso só é possível com um soft link. 4.15 Acessando dispositivos no Linux Para acessar disquetes, CD-ROM’s ou outros dispositivos no Linux é preciso montá – los no file system. Todos esses dispositivos são referenciados através de arquivos especiais que estão presentes no diretório /dev, uma vez montado o dispositivo ele passa a fazer parte do file system e pode ser então utilizado. Os arquivos mais usados para acesso a dispositivos são : Arquivo /dev/fd0 /dev/hda1 /dev/hda2 /dev/hdb1 /dev/sda1 /dev/sda4 Dispositivo Disquete de 3 ½ ( Floppy disk ) Hard Disk IDE primário Master Hard Disk IDE primário Master Hard Disk IDE primário Slave Hard Disk SCSI Hard Disk SCSI ( Geralmente ZIP Drive ) - primeira partição segunda partição primeira partição primeira partição - quarta partição 4.15.1 Montando dispositivos O comando utilizado para isso é o mount e sua sintaxe é : mount –t < file system > /dev/”dispositivo” /”local onde se deseja montar o dispositivo” Pode - se montar um dispositivo em quase todos os lugares do file system, mas por questão de organização é comum montá – lo abaixo do diretório /mnt . A opção –t indica o tipo de file system que será montado. Por exemplo, para ler um disquete com arquivos do WINDOWS 95/98 ( arquivos com nomes longos ) a opção < file system > será : vfat . Ficando então : /home/mane$mount -t vfat /dev/fd0 /mnt/floppy [ Enter ] Nesse exemplo, o disquete de 3½ seria montado no diretório /mnt/floppy , ou seja, seu conteúdo estaria disponível nesse diretório. Ao mover – se nesse diretório você estará se movendo no seu disquete e todas as outras operações também, como criar diretórios, ler e editar arquivos e etc. /home/mane$cd /mnt/floppy [ Enter ] /home/mane$ls [ Enter ] cartas tutoriais jogos 20 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 No exemplo acima, após o disquete ser montado no diretório /mnt/floppy o usuário tem acesso a esse dispositivo e lista seu conteúdo. Qualquer alteração feita nesse diretório será feita na verdade no disquete. Alguns do file systems suportados pelo Linux: File system Second Extended File system Extended File system Minix File system UMSDOS File system MS-DOS File system VFAT File system /proc File system ISO 9660 File system NT File system Xenix File system System V File system Tipo ext2 ext minix umsdos msdos vfat proc Iso9660 ntfs xenix sysv Comentário Sistema de arquivos mais comum do Linux Superado pelo ext2 Sistema de arquivos original do Minix (raro) Para instalar o Linux em uma partição MS-DOS Usado para acessar arquivos MS-DOS Usado para acessar arquivos com nomes longos Provém informações sobre processos e etc. Usado pela maioria dos CD_ROM’s Usado para acessar arquivos do Windows NT Usado para acessar arquivos do Xenix Usado para acessar arquivos System V para x86 4.15.2 Desmontando dispositivos Após usar o dispositivo de seu interesse, é necessário desmontá – lo do sistema. O comando usado para isso é o umount e sua sintaxe é: umount /local onde foi montado o dispositivo” . Se você tentar desmontar um dispositivo estando dentro do diretório em que ele foi montado então o sistema lhe dará uma mensagem de erro do tipo “ device is Busy “ . /home/mane$cd ~ [ Enter ] /home/mane$umount /mnt/floppy [ Enter ] No exemplo acima o usuário sai do diretório onde o dispositivo foi montado (vai para seu diretório home) e então desmonta esse dispositivo. Por default somente um super-usuário pode montar e desmontar dispositivos, para permitir que qualquer usuário monte determinados dispositivos, por exemplo, o cd-rom e o drive de disquete. Para que todos usuários possam montar estes dispositivos é necessário editar o arquivo /etc/fstab, como segue o exemplo abaixo: /root# vi /etc/fstab [Enter] /dev/sda1 swap /dev/sda2 / /dev/sdb1 /opt /dev/cdrom /cdrom /dev/fd0 /mnt/fd none /dev/pts none /proc swap ext2 ext2 iso9660 vfat devpts proc defaults 0 0 defaults 1 1 defaults 1 1 noauto,user 0 0 noauto,user 0 0 gid=5,mode=620 0 0 defaults 0 0 No exemplo à cima nota-se que os dispositovs /dev/cdrom e /dev/fd0 poderão ser montados pelos usuários, devido à coluna 4 (noauto,user) assim todos usuários poderão montar o dispositivo, só que o comando para montar o dispositivo terá a seguinte sintaxe: mount /cdrom [Enter] ou mount /mnt/fd [Enter]. Dessa forma o comando mount fará leitura do arquivo /etc/fstab montando o dispositivo (/dev/cdrom ou /dev/fd0) com filesystems do tipo iso9660 (cdrom) e vfat (disquete, supondo que o disquete foi formatado no DOS com FAT 32) nos pontos de montagem especificados (/cdrom ou /mnt/fd). 21 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 4.16 Características de arquivos Para determinar as características de um determinado arquivo usa –se o comando file, e sua sintaxe é : file < nome do arquivo > . Esse comando utiliza o arquivo /usr/share/magic que contém informações para determinar o tipo do arquivo em questão : arquivos de texto ( ASCII ) , executáveis ( binários ) , e etc. /home/mane$ file /etc/smb.conf [ Enter ] /etc/smb.conf: English text No exemplo acima o usuário usa o comando file para descobreir o tipo do arquivo /etc/smb.conf e esse comando retorna para ele a informação de que este é um arquivos de texto em inglês. 4.17 Ordenando o conteúdo de um arquivo O comando sort imprime o conteúdo de um arquivo em ordem alfabética na tela. Seu formato é : sort < nome do arquivo >. Supondo um arquivo chamado “ teste “ com o seguinte conteúdo : Zeus Farinha Cavalo Anta Verdade Usando o comando sort : /home/mane$sort teste [ Enter ] anta cavalo farinha verdade zeus O conteúdo ordenado é impresso na tela mas o arquivo continua inalterado. 4.18 Entrada e saída padrão Os comandos que são executados por nós no Linux possuem um padrão para entrada e saída de dados. Por exemplo, quando executamos o comando ls listamos o conte’údo de um diretório, a saída padrão desse comando é o monitor, ou seja, seu resultado aparecerá no seu vídeo. Essa é a saída padrão desse comando. Outro exemplo, ao utilizarmos o comando cat listamos o conteúdo de um arquivo na tela, a entrada padrão é um arquivo ( o que será lido ) e a saída padrão é o monitor ( onde o conteúdo do arquivo será listado ). É possível redirecionar entradas e saídas de arquivos usando os símbolos > e < . Existem dois tipos de redirecionamento : destrutivo e não destrutivo. 22 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 4.18.1 Redirecionamento destrutivo No redirecionamento destrutivo qualquer informação que houver no arquivo que será destino de redirecionamento será sobreposta pela atual. /home/mane$ls > lista [ Enter ] Neste exemplo, a listagem do conteúdo do diretório que deveria ser impressa no vídeo foi redirecionada para o arquivo “ lista “, usando o comando cat ou more é possível visualizar o conteúdo desse arquivo. Se houvesse algo escrito neste arquivo essa informação seria sobreposta. /home/mane$wc lista > contar [ Enter ] No exemplo acima é feita uma contagem do número de linhas do arquivo listas e sua saída é redirecionada para o arquivo “ contar ” . Nos dois primeiros exemplos redirecionamos as saídas padrões para um arquivo, no axemplo abaixo iremos redirecionar a entrada padrão. /home/mane$sort < teste [ Enter ] anta cavalo farinha verdade zeus 4.18.2 Redirecionamento não destrutivo Ao usarmos o redirecionamento não destrutivo, o conteúdo que estamos redirecionando é adicionado ao do arquivo. O conteúdo original do arquivo é mantido. O símbolo usado para fazer esse tipo de redirecionamento é : >> (dois “ maior que “ seguidos). /home/mane$ls > lista [ Enter ] /home/mane$wc lista >> lista [ Enter ] Neste exemplo a saída do comando ls é direcionada para o arquivo “ lista “ e logo em seguida é adicionado ao conteúdo desse arquivo o seu númro de linhas. 4.19 Pipe Pipe é o nome que se dá ao redirecionamento da saída de um comando para a entrada de outro, para fazer isso usamos o símbolo “ | “ ( uma barra reta ) e sua utilização é a seguinte : < comando 1 > | < comando 2 > . Esse é um serviço provido pelo SHELL e é de grande utilidade. Vamos a alguns exemplos para clarear. /home/mane$ls | more [ Enter ] Neste exemplo a saída do comando ls é mandada para o comando more, ou seja, o conteúdo do diretório será listado até que a tela seja preenchida, em seguida pode –se usar as opções já vistas do comando more (barra de espaço = lista próxima tela; [ Enter ] lista próxima linha) 23 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 /home/mane$ ls -la | head -5 total 2614 drwxr-xr-x 14 root root 1024 jul 23 16:08 . drwxr-xr-x 17 root root 1024 jul 21 14:24 .. -rw-r--r-- 1 root root 31 mai 25 10:16 .AfterStep-errors -rw-r--r-- 1 root root 0 mar 23 02:48 .WindowMaker-errors Neste segundo exemplo a saída do comando ls –la é mandada para o comando head que lista as primeiras cinco primeiras linhas. O uso do Pipe facilita bastante a pesquisa, manuseio e outras tarefas. Outras combinações de comandos podem ser usadas além das mostradas aqui. 4.20 Localizando arquivos No Linux existem alguns comandos para localizar arquivos, alguns desses comandos utilizam o PATH do sistema para realizar essa tarefa e outro procura em todo o sistema pelo arquivo desejado. 4.20.1 Localizando arquivos usando o PATH do sistema Os comandos que utilizam o PATH do sistema para localizar arquivos são type e which. A sintaxe dos dois é semelhante : < nome do comando > < nome do arquivo > /home/mane$ type passwd [ Enter ] passwd is /usr/bin/passwd No exemplo acima foi usado o camando type e este retornou a posição do arquivo passwd baseado no PATH do sistema. Note que ele não dá a localização do arquivo /etc/passwd por que o diretório /etc não deve estar no PATH. /home/mane$ which passwd /usr/bin/passwd Neste exemplo foi usado o comando which para localizar o arquivo. Como esse comando também utiliza o PATH ele retornou a esma localização que o comando type. 4.20.2 Outro comando para localizar arquivos Outro comando usado para localizar arquivos é o find. Esse comando tem muito mais recursos e procura em todo o file system, sendo de grande utilidade. Esse comando possui uma grande variedade de opções e serão mostradas aqui apenas as mais utilizadas, para maiores informações é aconselhável consultar sua página de manual. Sua sintaxe é : find < diretório inicial para pesquisa > - < opção > < nome do arquivo/outra informação > Algumas opções do comando find : Opção -name -size -user Significado Procura arquivo por nome Procura arquivo por tamanho/bloco ( cada bloco tem 512 bytes ) Procura arquivo por usuário Alguns exemplos : /home/mane$ find / -name passwd [ Enter ] /etc/passwd /etc/pam.d/passwd /home/ftp/etc/passwd 24 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 No exemplo acima é feita uma procura começando pelo diretório raiz do sistema ( / ), ou seja ele fará uma busca em todo o sistema por arquivos com nome passwd ( -name passwd ). /home/mane$find /etc -size +400 [ Enter ] /etc/termcap /etc/security/tmp Neste exemlo são listados todos os arquivos , a partir do diretório /etc , que contém mais de 400 blocos de tamanho. /home/mane$find / -user mane /var/spool/mail/mane /home/mane /home/mane/.Xdefaults /home/mane/.bash_logout /home/mane/.bash_profile /home/mane/.bashrc /home/mane/.bash_history /home/mane/PAR-IMPAR /home/mane/ fotos /home/mane/ trabalhos Neste outro exemplo são listados todos os arquivos pertencentes ao usuário mane, note que a procura é feita desde a raiz do sistema ( / ). /home/mane$ find / -name smb.conf | wc 5 5 200 Um exemplo usando Pipe. É feita uma procura por todos os arquivos chamados smb.conf e a saída desse comando é direcionada para o comando wc, que conta quantas linhas são resultantes do comando find, ou seja, quantos arquivos com esse nome existem no sistema. Ao fazer uma pesquisa o usuário pode se deparar com a mensagem : “ Permission denied “ ( permissão negada ) , ou seja , ele não possui permissão para acessar determinado diretório. 4.20.3 Localizando arquivos através de strings Para localizar arquivos através de parte de seu nome ( uma string é um conjunto de caracteres ) é usado o comando locate e sua sintaxe é : locate < string > . /home/mane$locate teste [ Enter ] /etc/rc.d/init.d/teste.html /home/httpd/html/netsaint/docs/untested.html /home/mane/backup/testeif No exemplo acima é feita uma pesquisa por todos os nomes que contém a string “teste”. O comando locate utiliza uma base de dados do sistema que deve ser atualizada com certa frequência para que a procura seja eficiente, essa base de dados pode ser atualizada com o comando updatedb. 25 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 4.21 Comparando arquivos Pode – se fazer uma comparação entre dois arquivos no Linux e para isso é usado o comando diff seguido do nome dos arquivos que se deseja comparar : diff < arquivo 1 > < arquivo 2 > . Supondo dois arquivos chamados arq1 e arq2 com os respectivos conteúdos : arq1 arq2 Arquivo de teste Arquivo de testes Arquivo de testes Arquivo de teste Arquivo de teste Arquivo de testes /home/mane$ diff arq1 arq2 [ Enter ] 2c2 < Arquivo de testes --> Arquivo de teste Nesse exemplo são comparados os arquivos arq1 e arq2 e é encontrada uma diferença nas linhas de número dois dos arquivos. 4.22 Comprimindo arquivos Um programa de compressão de arquivos comprime ( reduz o tamanho ) de um arquivo e descomprime ( volta o arquivo ao seu tamanho original ). Existem várias utilidades em diminuir o tamanho de arquivos. Com o crescimento da Internet a utilização desse tipo de arquivos cresceu muito, visando reduzir o tempo de transferência de arquivos via rede. O Linux possui algumas ferramentas de compressão de arquivos. 4.22.1 gzip O gzip é um programa para compressão/descompressão de arquivos que não é nativo do Linux mas devido a sua grande popularidade ele está presente na grande maioria das distribuições. Para comprimir um arquivos é usado : gzip < nome do arquivo > /home/mane$gzip trabalho [ Enter ] Neste exemplo é feita o compressão do arquivo “ trabalho ”. Após a compressão é gerado um arquivo com extensão .gz , ou seja , o resultado da operação acima será um arquivo com nome trabalho.gz , que substituirá o arquivo original “trabalho”. Existem duas sintaxes para descomprimir o arquivo, usando gunzip < nome do arquivo > ou gzip –d < nome do arquivo >. /home/mane$gunzip trabalho.gz [ Enter ] ou /home/mane$gzip –d trabalho.gz [ Enter ] Note que ao comprimir um arquivo usando o gzip esse arquivo é substituído por um arquivo com mesmo nome e extensão .gz . 4.22.2 Compress O compress é outro programa para compressão de arquivos do Linux, sua utilização é muito simples e se assemelha a do gzip. Ao comprimir um arquivo usando o compress será gerado uma arquivo com extensão .Z no lugar do original: compress < nome do arquivo > . Para descoprimí –lo é: uncompress < nome do arquivo >. 26 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 /home/mane$compress trabalho [ Enter ] /home/mane$uncompress trabalho.Z [ Enter ] Nos dois exemplos acima o arquivo “trabalho” é comprimido e em seguida descomprimido. 4.22.3 Visualizando o conteúdo de arquivos comprimidos Caso seja necessário conhecer o conteúdo de um arquivo comprimido utiliza-se o comando zcat: zcat < nome do arquivo >. /home/mane$zcat arquivo.gz [ Enter ] Nesse exemplo será visualizado o conteúdo do arquivo “arquivo.gz” sem ser preciso descompactá –lo . O zcat funciona tanto para arquivos com extensão .gz ( comprimidos com gzip ) quanto para arquivos .Z (comprimidos com compress). 4.23 Selecionando campos de uma tabela O comando cut permite selecionar colunas de uma tabela, a princípio essa explicação não parece ser muito esclarecedora mas vamos a exemplo para clarear : Suponha um arquivo como o /etc/passwd que tem seus campos separados por dois pontos. /home/mane$cat /etc/passwd [ Enter ] root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin: daemon:x:2:2:daemon:/sbin: sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mane:x:501:501:Francisco da Silva:/home/mane:/bin/bash A utilização do comando cut é a seguinte: cut –d < elemento separador > -f < coluna desejada >. Imagine o arquivo /etc/passwd como uma tabela com (neste exemplo) nove linhas e sete colunas, cada colunas separada por dois pontos: root x 0 0 root root /bin/bash Pois bem, usando o comando cut podemos selecionar qualquer campo desse arquivo: /home/mane$ cat /etc/passwd | cut -d : -f 5 [ Enter ] root bin daemon adm sync shutdown halt news Francisco da Silva 27 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 Aqui, listado o conteúdo do arquivo /etc/passwd, selecionou –se o quinto campo do arquivo ( -f 5 ) usando como elemento separador os dois pontos ( -d : ). 4.24 Empacotando arquivos Existe uma ferramenta no Linux que possibilita empacotar vários arquivos em um único arquivo, ou até toda uma estrutura de diretórios inteira em um arquivo, essa ferramenta também é muito utilizada para fazer cópias de segurança ( backup ) de arquivos importantes. Essa é uma prática recomendável para qualquer usuário de computadores, infelizmente não são muitos que seguem esse conselho e vez o outra acabam perdendo arquivos de seu interesse. Para isso usamos o comando tar, o tar cria um arquivo com extensão .tar que pode conter vários arquivos, um diretório e até uma estrutura de diretórios inteira. A maneira mais usada do tar é : tar –cvf < arquivo.tar > < arquivo1 > < arquivo2 > ... < arquivoN > . Vamos explicar as opções –cvf significam : c – criar novo arquivo tar ; v – modo verboso ( apresentar mensagens na tela se for necessário ) ; f - ( file ) indica o arquivo . Vamos exemplificar : /home/mane$ tar –cvf backup.tar arquivo1 arquivo2 arquivo3 [Enter ] Nesse exemplo seria criado um arquivo chamado “backup.tar” que conteria os três seguintes arquivos : “arquivo1”, “arquivo2” e “arquivo3”. Para restaurar as cópias desses arquivos com o comando tar a sintaxe é a seguinte : tar –xvf < arquivo.tar > . Seu significado é : x – extrair os arquivos que estão no arquivo de extensão .tar ; v – modo verbose ; f – ( file ) indica o arquivo. Vamos a outro exemplo: /home/mane$ tar –xvf backup.tar [ Enter ] Aqui foram extraídos os arquivos que estavam contidos em “backup.tar” , esses arquivos são extraídos no diretório corrente. Como já foi falado, é possível criar um arquivo que contenha um diretório, ou uma estrutura de diretórios, em seu interior. O exemplo abaixo demonstra isso. /home/mane$ tar –cvf mane.tar /home/mane [ Enter ] O arquivo “mane.tar” contém todo o diretório home do usuário mane, isso inclui todos os arquivos em seu interior e subdiretórios também. É muito comum no mundo Linux a utilização de arquivos .tar comprimidos com o gzip ou compress, gerando arquivos .tar.gz ( gzip ) ou .tar.Z ( compress ). O modo de extrair esses arquivos é primeiro descomprimir o arquivo ( gunzip , gzip –d ou umcompress ) e depois usar o tar para extrair os arquivos ou diretórios. Para conhecer o conteúdo de um arquivo .tar utilize a opção –tvf , como no exemplo a seguir : /home/mane$tar –tvf mane.tar [ Enter ] 4.25 Filtrando informações Uma ferramenta muito importante no Linux é o comando grep, ele é um filtro que pode facilitar bastante nossas tarefas na hora de procurar informações. Quando o comando grep encontra a informação desejada ele a imprime na tela, ou pode –se redirecionar sua saída também. Vamos aos exemplos: 28 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 /home/mane$ls -la /etc | grep passwd -rw-r--r-- 1 root root 1308 Jul 29 19:33 passwd -rw-r--r-- 1 root root 556 Jan 11 1999 passwd.OLD Neste exemplo após o conteúdo do diretório /etc ser listado será feita uma procura pela palavra “passwd” , a saída então é apresentada no vídeo. /home/mane$grep root /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root: No segundo exemplo é feita uma procura no arquivo /etc/passwd pela palavra “root” e as linhas onde essa palavra é encontrada são apresentadas. 4.26 Máscaras para comandos 4.26.1 Criando máscaras Um método de personalizar os comandos usados no Linux é usar o comando alias. O alias cria um “apelido” para um comando qualquer, desse modo podemos executar esse comando usando seu “apelido”. O modo de usar esse comando é : alias < novo comando > = “<comando real>” , vamos a um exemplo para ficar mais claro : /home/mane$ alias apaga="clear" [ Enter ] Deste modo se digitarmos “apaga” seguido de [ Enter ] o efeito será o mesmo de usar o comando clear, que limpa a tela. /home/mane$ alias lista="ls” [ Enter ] Neste segundo exemplo a palavra “lista” substitui o comando ls . 4.26.2 Retirando máscaras Para retirar algumas máscara que foi criada para um comando usa – se o comando unalias seguido do nome da máscara. /home/mane$ unalias lista [ Enter ] Isso iria retirar a máscara “lista”. 4.27 Descobrindo que usuário você é: O comando who imprime na saída padrão ( a tela ) informações sobre que usuário é você, de onde logou e a data. /home/mane$ who [ Enter ] mane ttyp0 Aug 11 16:33 (200.137.220.3) [ Enter ] Aqui o usuário que está trabalhando é mane, ele logou remotamente nessa máquina e sua máquina de origem é 200.137.220.3 na data de 11 de agosto às 16:33 horas. 29 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 4.28 As variáveis de sistema O ambiente Linux possui algumas variáveis necessárias para seu funcionamento, e estas podem ser visualizadas com o comando env ou set. Sua sintaxe é: env ou set /home/mane$ env PWD=/home/mane HOSTNAME=morpheu.ufgnet1.ufg.br MOZILLA_HOME=/usr/lib/netscape ignoreeof=10 LS_OPTIONS= --color=auto -F -b -T 0 QTDIR=/usr/lib/qt OPENWINHOME=/usr/openwin MANPATH=/usr/local/man:/usr/man/preformat:/usr/man:/usr/X11R6/man:/usr/openwin/man: /usr/lib/qt/doc/man LESSOPEN=|lesspipe.sh %s PS1=\u@\h:\w\$ PS2=> LESS=-M USER=mane LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01: or=40;31;01:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32: *.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.bz2=01;31:* .rpm=01;31:*.deb=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.jpg=01;35:*.gif=01;35:*. bmp=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.mpg=01;37: *.avi=01;37:*.mov=01;37: CPLUS_INCLUDE_PATH=/usr/lib/qt/include: MACHTYPE=i386-slackware-linux-gnu LC_ALL=POSIX MAIL=/var/spool/mail/mane SSH2_CLIENT=192.168.0.100 1046 192.168.0.102 22 INPUTRC=/etc/inputrc LOGNAME=mane SHLVL=1 MINICOM=-c on SHELL=/bin/bash HOSTTYPE=i386 OSTYPE=linux-gnu HOME=/home/mane TERM=vt100 PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/openwin/bin:/usr/games:. _=/usr/bin/env OLDPWD=/home 4.28.1 Manipulando as variáveis de sistema Pode-se alterar os valores das variáves de sistema usando o comando export, e sua sua sintaxe é: export <VARIÁVEL>=<$VARIÁVEL>:<complemento> /home/mane$ export PATH=$PATH:/opt/bin <ENTER> No exemplo àcima foi adicionado à variável PATH o diretório /opt/bin. Isto torna-se necessário quando instala-se vários executáveis em caminhos que não estão no PATH, exportando a variável como mostrado acima os executáveis instalados no diretório /opt/bin poderão ser chamados no prompt de comando estando em qualquer diretório. 30 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 5. Permissões de Arquivos 5.1 Entendendo as Permissões Por ser um sistema multiusuário o Linux possui um conjunto de regras para assegurar a integridade e individualidade dos arquivos e diretórios. Essas regras são chamadas " Permissões de Arquivos ". Usando o comando ls -la listamos todos os arquivos do diretório e suas permissões : /home/mane$ ls -la [ Enter ] total 9 drwxr-xr-x 6 mane users drwxr-xr-x 21 root root -rw------1 mane users -rw-r--r-1 mane users -rw-r--r-1 mane users -rw-r--r-1 mane users -rwxr-xr-x 1 mane users drwxr-xr-x 2 mane users -rw-rw-r-1 mane users 1024 mai 19 10:08 . 1024 abr 29 13:40 .. 7406 mai 15 12:57 .bash_history 24 mar 23 06:05 .bash_logout 220 mar 23 06:05 .bash_profile 124 mar 23 06:05 .bashrc 505 mai 19 10:04 PAR-IMPAR 1024 mai 19 10:05 fotos 505 mai 19 10:05 trabalhos Esse ‚ o conteúdo do diretório, vamos agora entender o que essas informações querem dizer. Na primeira coluna temos as permissões do arquivo/diretório ; na segunda, temos o número de links ( caminhos/atalhos ) que levam ao arquivo/diretório ; na terceira coluna temos o nome do dono do arquivo e o grupo a que ele pertence ; na quarta está o tamanho do arquivo e na quinta e sexta colunas, respectivamente , estão as datas de criação e o nome do arquivo. Vamos pegar como exemplo o arquivo PAR-IMPAR para entender melhor : -rwx------ Como PAR-IMPAR ‚ um arquivo e não um diretório o primeiro campo traz um traço ( " - " ) . Se fosse um diretório, nesta posição encontraria-se um " d " , e se esse arquivo fosse um link este campo estaria preenchido com a letra " l " . Os três caracteres que se seguem tem os seguintes significados: r = permissão de leitura (read) ; w = permissão de escrita (write) ; x = permissão de execução (execution). Esse primeiro conjunto de permissões diz respeito ao dono do arquivo, ou seja, o dono desse arquivo tem direitos de ler o arquivo ( " r " ) , escrever no arquivo ( " w " ) e executa-lo ( " x " ). -rwxr-x--- Os próximos três caracteres dizem respeito as permissões dadas ao grupo a que o dono do arquivo pertence. Neste caso os usuários que pertencem ao mesmo grupo do dono do arquivo tem Permissões de leitura e execução sobre o arquivo, mas não tem permissão de escrita no arquivo (o campo relativo a escrita não esta preenchido, tendo apenas um traço). -rwxr-xr-x Em seguida estão as Permissões dadas a todos os usuários do sistema. Essas Permissões, neste caso, são de leitura e execução ( " r " e " x " ) do arquivo. Aos outros usuários do sistema também não foi dado a permissão de execução do arquivo PAR-IMPAR. Resumindo então, temos: 31 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 -rwxr-xr-x Permissões dos outros usuários Permissões do grupo Permissões do dono do arquivo Permissão de leitura: Permissão de escrita: Permissão de execução: r (read) w (write) x (execution) No caso de um diretório, a permissão de leitura significa poder listar seu conteúdo, a permissão de escrita consiste em escrever nesse diretório e a permissão de execução é o acesso ao diretório. As permissões de arquivos restringem o acesso ao arquivo/diretório apenas as pessoas que o dono achar que é seguro, isso garante a individualidade e segurança dos arquivos pessoais e de importância para o sistema. 5.2 Alterando Permissões As permissões dos arquivos não são características estáticas. Elas podem ser alteradas pelo dono do arquivo. O comando usado para isso e o chmod, e sua sintaxe e a seguinte: chmod { a,u,g,o } { + , - } { r,w,x } < nome do arquivo >. Os significados dessas opções são: a u g o _ Significa " todos " ( all ); _ significa " usuário ", o dono do arquivo ( users ); _ significa " grupo " ( group ); _ significa " outros " ( others ); + _ Atribui Permissões; - _ retira Permissões; r _ permissão de leitura ( read ); w _ permissão de escrita ( write ); x _ permissão de execução ( execution ). Abaixo seguem alguns exemplos sobre mudança de permissões, após realizar qualquer uma dessas operações utilize o comando ls -la para visualizar as permissões alteradas. /home/mane$chmod g-x PAR-IMPAR [ Enter ] Essa linha de comando retiraria a permissão de execução do arquivo PAR-IMPAR de todas as pessoas do mesmo grupo do dono desse arquivo. /home/mane$chmod a+x PAR-IMPAR [ Enter ] Essa linha atribuiria permissão para execução a todas as pessoas do sistema sobre o arquivo PAR-IMPAR. /home/mane$chmod g-x fotos [ Enter ] Aqui é retirado dos usuários do grupo o direito de entrar no diretório " fotos ". Outro modo de alterar as Permissões de um arquivo/diretório e' usar números para representar as 32 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 Permissões ( r,w e x ). Os números correspondentes são : 1 => x ( execução ) 2 => w ( escrita ) 4 => r ( leitura ) A sintaxe e' : chmod ABC < nome do arquivo > , onde A e' a soma das Permissões dadas ao dono do arquivo ; B e' a soma das Permissões dadas ao grupo e C e a soma das Permissões do resto dos usuários. Vamos exemplificar : /home/mane$chmod 755 PAR-IMPAR [ Enter ] Isso daria permissões de execução, escrita e leitura ao dono ( A=1+2+4 A=7 ); ao grupo seriam dadas Permissões de execução e leitura ( B=1+4 B=5 ) e aos outros usuários seriam dadas Permissões de execução e leitura ( C=1+4 C=5 ). /home/mane$chmod 700 PAR-IMPAR [ Enter ] Isso daria permissão de execução, escrita e leitura ao dono do arquivo e retiraria todas as Permissões do grupo e dos outros usuários. 5.3 Máscara de criação de arquivos Quando criamos qualquer arquivo no Linux, lhe é dado um conjunto de Permissões que chamamos de "máscara ". A mascara define quais Permissões os arquivos terão ao serem criados. Podemos alterar a máscara de criação de arquivos com o comando umask, sua sintaxe é a seguinte: umask ABC, onde A,B e C são os direitos que queremos negar. Uma conta nos dá o valor da máscara que desejamos: 666 - ABC= direitos que os arquivos terão ao serem criados Suponhamos que seja usada uma mascara 022 : /home/mane$ umask 022 [ Enter ] Deste modo todos os arquivos criados teriam Permissões : 644 ( 666 - 022 = 644 ), ou seja, o dono teria permissões de escrita e leitura ; o grupo teria permissões de leitura e o resto dos usuários teriam permissões de leitura também. Se o comando umask for usado sem nenhum parâmetro ele retornara a mascara que estão em uso. /home/mane$ umask [ Enter ] 022 33 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 6. Alguns Arquivos Importantes do Linux Grande parte das informaçôes do Linux estâo no sistema em forma de arquivos de texto, desta forma, torna-se importante conhecer esses arquivos para, também, conhecer melhor o sistema em que estamos trabalhando. 6.1 Arquivos do diretório /etc /etc/passwd Esse arquivo contém informações sobre todos os usuários do sistema. Tem seus campos separados por dois pontos e seu formato geral é: mane:x:212:103:Francisco da Silva:/home/mane:/bin/bash Cada campo tem um significado, o primeiro campo é o nome com que o sistema reconhece o usuário (login); o segundo é a senha do usuário (Essa senha não aparece por que está no arquivo /etc/shadow, criptografada por motivos de segurança ) ; o terceiro o é o ID do usuário (Número de identificação do usuário no sistema) ; o quarto é o número do grupo a que o usário pertence; o quinto é o nome do usuário; o sexto é o diretório home do usuário (Aquele em que ele está quando loga no sistema) e o sexto campo é o Shell que esse usuário vai usar. Uma forma simples de impedir que um usuário acesse o sistema é colocar no sexto campo algo como /dev/null ou /bin/true, o que ocorre é que quando o usuário tentar logar no sistema ele não terá um interpretador de comandos válido, assim, não poderá efetuar logon no sistema. Este é um arquivo de extrema importância para o sistema e por isso só o Root (superusuário) tem permissão de alterá-lo. /etc/shadow Esse arquivo só existirá se o pacote “shadow“ for instalado, aqui ficam as senhas dos usuários do sistema. Como já falado, essas senhas ficam critografadas por motivos de segurança e não podem ser visualizadas por nimguém. Nem mesmo o Root consegue ver as senhas do sistema. /etc/group Nesse arquivo fica uma listagem de todos os grupos que o sistema possui. Ele também está dividido em campos separados por dois pontos, seu formato é : users:!:104:mane,maria,roberto Cada campo tem um significado: o primeiro campo é o nome do grupo ; o segundo é a senha para o grupo (Essa senha é opcional) ; o terceiro é o número do grupo e o quarto campo guarda os nomes dos usuários que pertencem a esse grupo. /etc/issue A mensagem mostrada ao usuário antes que ele faça o login no sistema ica armazenada nesse arquivo. /etc/issue.net Caso o usuário tente logar remotamente na máquina e mensagem que ele verá será a que está armazenada nesse arquivo. /etc/motd Nesse arquivo fica a mensagem que será exibida ao usuário após o seu login. Abreviação de "Mensagem do dia " (Message of the day). /etc/fstab 34 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 Nesse arquivo encontram-se informações sobre os dispositivos montados no sistemas (discos rígidos, disquetes, cdrom, nfs e etc). Ele é lido pelo sistema, ou por programs, para montar esses dispositivos e sua alteração só pode ser feita pelo Root. Esse arquivo também é composto por linhas e cada uma delas representa um dispositivo a ser montado, seu formato geral é: /dev/hda1 / ext2 defaults 11 No primeiro campo está o nome do dispositivo a ser montado; o segundo é o ponto de montagem do dispositivo; o terceiro campo descreve o sistema de arquivo do dispositivo, os sistemas de arquivos suportados atualmente pelo Linux são : minix, ext, ext2, xiafs ,msdos, hpfs, iso9660, nfs e swap; o quarto campo informa as opções de montagem para os sistema de arquivos; o quinto informa ao comando dump quais os sistemas de arquivos devem ser copiados e o sexto campo informa ao programa fsck a ordem em que os sistemas de arquivos devem ser checados na inicialização do sistema. /etc/mtab Enquanto o fstab contém informações sobre os sistemas de arquivos que podem ser montados, o mtab contém informações sobre os sistemas já montados. Esse arquivo é dinâmico, sendo alterado toda vez que um novo dispositivo é montado no sistema. /etc/inittab Esse arquivo é de extrema importância para o sistema por que nele estão listados os pocessos que serão disparados na sua inicialização. Seu formato é: identificação:níveis de execução:ação:processo . O primeiro campo (identificação) deve ser composto de um a quatro carateres e representa uma entrada no inittab; o segundo é relativo ao nível de execução (run-level) em que o processo deverá ser inializado; o terceiro é a ação que será executada e o quarto campo é o processo a ser executado. Níveis de execução (run-levels): 0 - Desligar (poweroff) ; 1 - Modo monousuário; 2 - Multiusuário, sem NFS; 3 - Multiusuário completo; 4 - Multi-usuário completo com interface gráfica (X11); 5 - Não utilizado, mas, configurado como runlevel 3 6 - Reinicializar (reboot). Neste arquivo também pode ser configurado quantos consoles virtuais o linux inicializará, pode-se fazer isto comentando as seguintes linhas do arquivo: /etc$ vi inittab [ Enter ] … # Note: for 'agetty' you use linespeed, line. # for 'getty_ps' you use line, linespeed and also use 'gettydefs' c1:1235:respawn:/sbin/agetty 38400 tty1 linux c2:1235:respawn:/sbin/agetty 38400 tty2 linux #c3:1235:respawn:/sbin/agetty 38400 tty3 linux #c4:1235:respawn:/sbin/agetty 38400 tty4 linux #c5:1235:respawn:/sbin/agetty 38400 tty5 linux #c6:12345:respawn:/sbin/agetty 38400 tty6 linux No exemplo àcima serão abertas 2 consoles virtuais. /etc/lilo.conf Esse é o arquivo de configuraçâo do LILO, que é um gerenciador de carga de sistema operacional, o executável desse arquivo se encontra no diretório /sbin. /etc/smb.conf 35 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 O serviço conhecido como Samba é configurado por esse arquivo. O Samba é um conjuno de programas que implementa o protocolo chamado Server Message Block, ou SMB, em ambientes UNIX/Linux. Esse protocolo também é conhecido como Common Internet File System (CIFS), LanManager ou NetBios. Há uma enorme gama de aplicações com este serviço. /etc/shells Estão listados aqui os caminhos para os shells válidos para os usuários. /etc/securetty Os terminais listados neste arquivo são os considerados seguros para o Root logar no sistema. Se todas as linhas com tty forem comentadas o root não poderá efetuar logon na console, assim, para executar comandos como root é necessário usar o comando “ su “. Se a linha console for comentada o root somente efeturá logon via o comando su. /etc$ vi securetty [ Enter ] console #tty1 #tty2 #tty3 #tty4 #tty5 #tty6 #ttyS0 #ttyS1 #ttyS2 #ttyS3 #ttyp0 #ttyp1 #ttyp2 #ttyp3 /etc/resolv.conf Está listado aqui o domínio da máquina e também a relação dos servidores de nomes (DNS) /etc/inetd.conf Este arquivo é lido pelo processo inetd na sua inicialização. Neste arquivo pode ser configurado os serviços que serão inicializados pelo inetd. /etc/ld.so.conf Neste arquivo estão listados os diretórios que contêm bibliotecas (os diretórios /.../lib ). /etc/services Neste arquivo estão listadas as portas (TCP e UDP) que é aberta por cada serviço do linux. 6.2 Arquivos do diretório /proc 36 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 /proc/interrupts O diretório /proc é um diretorio virtual, ou seja, está montado na memória RAM e nâo no HD da máquina. Nesse diretório estâo muitas informaçôes sobre a situaçâo atual do seu sistema, o arquivo interrupts contém uma listagem das interrupçôes utilizadas pelo sistema no momento. /proc/partitions Todas as partições montadas no sistema estâo listadas nesse arquivo. /proc/ioports Contém uma relaçâo dos intervalos de I/O (Entrada e saída) do sistema e dos dispositivos que as utilizam. /proc/meminfo Contém informações sobre memória utilizada pelo Linux. /proc/cpuinfo Contém especificações sobre a CPU da máquina. /proc/modules Contém uma relação dos módulos carregados pelo sistema. /proc/mounts Contém uma relação dos dispositivos montados. /proc/swap Contém informações sobre a partição swap 6.3 Arquivos de Inicialização (Scripts de inicialização) Arquivos de inicialização, ou scripts de inicialização, são lidos e executados pelo SHELL no momento que o usuário loga no sistema para configurar algumas de suas características como o sua variável PATH, exibir mensagens do programa de e-mail, executar comandos, configurar aliases e etc. Esses arquivos variam conforme o SHELL que se está usando. Existem também arquivos que são executados em outras instancias do SHELL, não em momentos do login mas quando se usa um programa como o editor de textos vi ou no próprio momento de execução dos arquivos de inicialização. Se o SHELL usado for o bash os arquivos lidos serão: /etc/profile $HOME/.bash_profile $HOME/.profile Esse arquivo é setado pelo administrador e executado no login de todos os usuários. Executado no login do usuário. Usado se o .bash_profile não estiver presente. Se o SHELL utilizado for o tcsh os arquivos serão : /etc/csh.login $HOME/.tcshrc $HOME/.login $HOME/.cshrc Executado no momento do login por todos os usuários Executado no momento do login. Executado após o .tcshrc Executado se .tcshrc não estiver presente 6.4 Arquivos de Inicialização dos processos (SLACKWARE) Os arquivos que inicalizam os processos no sistema Linux Slackware estão localizados no diretório /etc/rc.d, entre eles os mais importantes são: 37 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 /etc/rc.d/rc.0 Script lido quando computador entra em runlevel 0 (halt) ou runlevel 6 (reboot), este arquivo é um link para o arquivo rc.6. /etc/rc.d/rc.4 Script lido quando o computador entra em runlevel 4 (XDM). Neste runlevel o computador já se inicializa em modo gráfico. /etc/rc.d/rc.K Script lido quando o computador entra em runlevel 1 (MONOUSUÁRIO). /etc/rc.d/rc.M Script lido quando o computador entra em modo multi-usuário, runlevels 1 a 6. A maioria dos processos inicializados pelo Linux estão listados neste arquivo. /etc/rc.d/rc.S Script de inicialização do sistema. /etc/rc.d/rc.font Script que define a fonte a ser usada pelo Linux no shell. /etc/rc.d/rc.inet1 Script que define as configurações necessárias para ambiente de rede para o Linux, como: Se o computador tem IP fixo ou se este é atribuído via DHCP; Se o computador tiver IP fixo é neste arquivo que se determina o endereço do GATEWAY padrão, o endereço da rede (NETWORK), o endereço de BROADCAST e o endereço da máscara da rede (NETMASK) /etc/rc.d/rc.inet2 Script que inicializa a maioria dos serviços de rede, como: Serviço de “Packet forwarding” necessário quando o computador é GATEWAY (primeiro computador de uma rede); Serviços de NFS necessário para o compartilhamento de arquivos entre compudares com sistema UNIX; e todos os outros daemons1 como INETD, SSHD, SMBD, NMBD, HTTPD, ROUTED, NAMED, LPD, etc. /etc/rc.d/rc.local Último script lido quando o computador inicializa. /etc/rc.d/rc.modules Script que lista os módulos que serão carregados na inicialização do Linux daemon = processo “pai” 38 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 7. Editor de Textos vi O vi é o editor de textos em formato ASCII que está presente em qualquer plataforma UNIX ou distribuição do Linux. Torna-se imprescindível que um usuário de Linux o conheça e consiga trabalhar com ele. É certo que as primeiras impressões que se tem desse editor não são as melhores (Graças a uma cultura já adquirida sobre essas ferramentas) mas com um pouco de tempo suas principais funções são assimiladas . Para chamar o vi digite: vi < nome do arquivo > [Enter] /home/mane# vi teste [enter] Se existir um arquivo chamado “teste“ o vi irá abrí-lo, e será mostrado algo deste modo : Arquivo de teste do vi. ~ ~ ~ "teste" 2 lines, 25 characters Se esse arquivo não existir ele será criado: ~ ~ ~ "teste" [New File] O vi trabalha com três modos : modo de comando , modo de inserção e modo de última linha. Ao entrar no vi vc está no modo de comando, o editor está esperando que você use um dos seguintes comandos para começar a escrever no arquivo : Comando A A I I O O Função Adiciona o texto após o cursor Adiciona o texto no final da linha Insere texto antes da posição do cursor Insere texto no início da linha Cria nova linha depois do cursor Cria nova linha acima do cursor Para começar a digitar algo no vi tecle um desses comandos acima ( a,A,i,I,o,O ). Para sair do modo de inserção de texto pressiona-se [ Esc ]. No modo de comando utiliza-se os comandos ( alguns estão listados abaixo ) para editar o texto e no modo de última linha pode-se salvar o texto, fechá-lo sem salvar, procurar ou substituir palavras e etc. O esquema de utilização é o seguinte : [ Esc ] Última linha A,a,I,i,O,o Comando :?/ Inserção [ Esc ] 39 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 Exemplificando: /home/mane#vi teste [Enter] ~ ~ ~ ~ "teste" [New file] (cria um arquivo chamado “teste”) 1- Para começar a escrever tecle : A,a,I,i,O,o ; 2- Digite um texto ; 3- Tecle [ Esc ] para ir para o modo de comando ; [ i ] Testando o editor de textos vi [ Esc ] ~ ~ ~ -- Insert -4- Digite “:“ para ir para o modo de última linha; 5- Escreva “w“ (write) para salvar o texto. Testando o editor de textos vi ~ ~ ~ :w [ Enter ou Return ] Funções para apagar texto/linha Comando X Q X dd Dw :A,Bd Função Apaga caractere na posição do cursor Sai do vi Apaga caractere a esquerda do cursor Apaga linha Apaga palavra a direita do cursor Apaga intervalo entre a linha de número A até a de número B Funções para mudar palavra/trocar caractere/desfazer comando/trocar linha Comando Cw r R U U Função Muda a palavra em que o cursor está Troca o caractere da posição atual do cursor Troca a linha do cursor Desfaz o último comando Desfaz todas as alterações feitas na linha corrente Funções para copiar e colar Comando Yy Y p P :A,B co C :A,B m 8 Função Copia a linha em que o cursor se encontra Copia a linha em que o cursor se encontra Cola a linha copiada abaixo da linha corrente Cola a linha copiada acima da linha corrente Copia as linhas entre A e B e cola após a linha C Move as linhas entre A e B e cola após a linha C 40 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 Funções para procura e substituição de palavras Comando /palavra ?palavra N Função Procura por ““palavra” no texto ( à frente ) Procura por “palavra” no texto ( atrás ) Encontra a próxima ocorrência de “palavra” na direção de procura N Encontra uma ocorrência prévia de “palavra” :s/velha/nova/g Substitui “velha” por “nova” na linha corrente :%s/velha/nova/g Substitui “velha” por “nova” no documento todo 41 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 8. Administrando contas de usuários 8.1 Contas de usuários Em um sistema operacional multiusuário como o Linux é necessário que o responsável pelo sistema (root ou super usuário) mantenha a organização, inclusão e exclusão de usuários do sistema. Cada pessoa que tem acesso à máquina deve possuir uma conta com um nome de usuário (login ou user name) e senha (password) únicos. Uma conta também é composta pelos arquivos que pertencem a esse usuário e seu diretório home (se ele possuir um . Tudo isso deve ser protegido para que apenas esse usuário tenha acesso a esses arquivos. Uma observação: mesmo que você seja o único usuário do computador é extremamente recomendável que esse sistema possua no mínimo dois usuários, sendo um o root e outro um usuário normal. Isso se dá pelo fato de que o root possui permissão para realizar tudo no sistema e um erro cometido, como apagar arquivos importantes, não tem volta. Por isso mantenha sempre duas contas e realize seus trabalhos com a conta de usuário normal, e apenas quando for necessário entre no sistema como root. 8.2 Tornando-se Root É possível tonar-se root usando o comando su , deste modo não é necessario sair do sistema e logar-se de novo. Se o su for usado seguido de um traço ( - ) então o usuário tornase-a root e serão carregados os arquivos de inicialização do root. Após digitado o comando o sistema irá pedir a senha de root. /home/mane$ su – [ Enter ] Password: /root# Percebe-se que após tornar-se root o símbolo ao final do prompt muda para uma cancela ( # ) , esse é um meio de identificar se você está realizando algo como super usuário. O comando su também é usado para um usuário tornar-se outro usuário, para fazer isso a sintaxe é : su < nome do usuário > . Se você for o root e quiser tornar-se outro usuário não lhe será a senha desse usuário, caso contrário sempre lhe será pedida a senha do usuário que você deseja tornar-se. /home/mane$ su maria [ Enter ] Password: /home/maria$ Aqui o usuário mane usa o comando su para tornar-se maria, como ele não é o root então a senha de maria lhe é pedida. 42 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 8.3 Onde todos os usuários estão Para conseguir uma listagem completa dos usuários que possuem conta no Linux deve –se olhar o arquivo /etc/passwd. Esse arquivo possui o seguinte formato : Login:x:501:100:Nome do usuário:/home/login:/bin/bash Cada campo desse arquivo é separado por dois pontos, sendo seus significados : Campo Primeiro Segundo Terceiro Quarto Quinto Sexto Sétimo Significado Login do usuário ou nome com que o sistema o identifica Senha criptografada representada por um “x” Número de identificação do usuário ( UID ) Número do grupo a que o usuário pertence ( GID ) Nome completo ou outra descrição do usuário Diretório home do usuário Shell que o usuário irá usar No segundo campo temos a senha criptografada do usuário, essa senha é representada por um “x” e na verdade é guardada no arquivo /etc/shadow em sistemas que possuem o pacote shadow instalado. O terceiro campo trás o número do grupo a que o usuário pertence, os grupos de usuários que seu sistema possui podem ser conferidos no arquivo /etc/group. O sexto campo indica o diretório que pertence ao usuário (home), para usuários comuns os diretorios se encontram geralmente abaixo do diretório /home. 8.4 Adicionado usuários ao sistema O useradd adiciona usuários ao sistema. Podemos utilizar algumas opções desse comando para passar – lhe todas as informações necessárias para a criação da nova conta. Sua sintaxe é : useradd -u <UID> -g < GID> -d <diretório home> -c <”comentário"> -m -s <shel> <login> /root# useradd -u 1001 –g 100 -d /home/teste -c "Conta de teste" -m –s /bin/bash teste [ Enter ] Acima foi criada uma conta para um usuário com login “teste” e seu diretório home é /home/teste. A opção –m serve para criar o diretório home caso ele não exista. Para criar a senha do usuário use o comando passwd seguido de seu login : passwd < login > /root# passwd teste [ Enter ] O Linux Slackware possui um script que facilita a adição de usuários, é o adduser, que vai fazendo perguntas ao administrador sobre o usuário à medida que vai o adicionando ao sistema. Sua sintaxe é: adduser 43 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 8.5 Removendo usuários do sistema Para remover usuários do sistema é usado o comando userdel. Sua sintaxe é simples, sendo : userdel < nome do usuário > . Se for usado a opção –r será apagado seu diretório home, todos os arquivos e subdiretórios. /root# userdel –r teste [ Enter ] Neste exemplo o usuário “teste” foi removido, ou seja, sua entrada do arquivo /etc/passwd foi apagada, e seu diretório home (/home/teste) foi apagado com tudo que havia em seu interior. Esse usuário não possui mais uma conta nesse sistema, portanto não pode acessá – lo mais. 8.6 Adicionando grupos Recomenda –se organizar os usuários do sistema por grupos. O comando groupadd adiciona um novo grupo ao sistema, sua sintaxe é : groupadd –g < GID > < nome do grupo > /root# groupadd –g 100 alunos [ Enter ] Aqui é criado um grupo chamado “alunos” e seu GID é 100. 8.7 Removendo grupos Para remover grupos é usado o comando groupdel seguido do nome do grupo que se deseja remover : groupdel < nome do grupo > /root# groupdel alunos [ Enter ] Removemos neste exemplo o grupo “alunos”. 44 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 9. Processos e Tarefas Uma das características de um sistema operacional estável é o controle que ele possui sobre os tarefas que estão sendo realizados. Essas tarefas recebem o nome de processos. O Linux possui algumas ferramentas para que o usuário controle esses processos. É possível, dentre outras coisas, listar e finalizar os processos que estão sendo executados pela máquina. Processos servidores ou “deamos” são processos responsáveis por determinadas tarefas no sistema, por exemplo: o processo que gerencia os pedidos de páginas em um servidor de WWW (Internet) é chamado de httpd , ou http deamon. 9.1 Listando os processos da máquina Para listar os processos que o sistema está executando o comando é: ps . Se for usada a opção aux serão listados todos os processos da máquina. /home/mane$ps [ Enter ] PID TTY STAT TIME COMMAND 535 p0 S 0:00 su 536 p0 S 0:00 –bash 602 p0 R 0:00 ps No exemplo acima são listados os processos do usuário mane. /home/mane$ ps aux [ Enter ] USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND Bin 213 0.0 2.2 760 332 ? S Oct 27 0:00 portmap Nobody 286 0.0 3.9 1688 584 ? S Oct 27 0:00 ssl_gcache 99 /etc/ht Root 1 0.0 2.6 764 384 ? S Oct 27 0:02 init [3] Root 2 0.0 0.0 0 0 ? SW Oct 27 0:00 (kflushd) Root 3 0.0 0.0 0 0 ? SW < Oct 27 0:00 (kswapd) Root 4 0.0 0.0 0 0 ? SW Oct 27 0:00 (md_thread) Root 5 0.0 0.0 0 0 ? SW Oct 27 0:00 (md_thread) Root 37 0.0 2.3 736 348 ? S Oct 27 0:00 /sbin/kerneld Root 224 0.0 2.9 800 432 ? S Oct 27 0:00 syslogd Root 233 0.0 3.7 940 548 ? S Oct 27 0:00 klogd Root 244 0.0 2.5 772 380 ? S Oct 27 0:00 inetd Root 248 0.0 3.8 1216 564 ? S Oct 27 0:10 /usr/sbin/sshd Root 328 0.0 2.0 724 296 1 S Oct 27 0:00 /sbin/mingetty tty1 Root 329 0.0 2.0 724 296 2 S Oct 27 0:00 /sbin/mingetty tty2 Neste exemplo são listados todos os processos que a máquina está executando (opção aux). A primeira coluna (USER) identifica o dono do processo, ou seja, o usuário que inicializou a tarefa que está rodando. A segunda coluna é o número de identificação do processo (PID), é através desse número que o sistema operacional reconhece e gerencia as tarefas que ele precisa realizar. A última coluna é o nome do processo. Para mais informação sobre o comando ps consulte a página de manual do comando ps. 9.2 Finalizando processos É possível finalizar qualquer processo no Linux desde que este não seja essencial para o funcionamento do sistema ou que você seja o dono do processo. Se o usuário em questão for o Root ele tem permissão para finalizar processos de qualquer usuário. O comando para finalizar processos é o kill e sua sintaxe é: kill <PID > Se for usada a opção –9 antes do PID o comando kill forçará a finalização do processo e se for usado a opção –1 o processo será reinicializado. /home/mane$ kill –9 342 [ Enter ] 45 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 No exemplo acima é mandado um sinal de finalização para o processo de PID 342. /home/mane$ kill –1 345 [ Enter ] Neste segundo exemplo o comando kill fará com que o processo de PID 345 seja finalizado e inicializado logo em seguida (reinicializado). É possível finalizar processos pelo nome e não pelo PID, para isso usa-se o comando killall seguido do nome do processo ( esse nome pode ser conseguido usando o comando ps ) /home/mane$ killall rpc.mountd [ Enter ] 9.3 Processos em background e foreground Processos podem estar rodando em dois modos : background ( segundo plano ) ou foreground ( primeiro plano ) . Por exemplo, ao fazer uma pesquisa em seu sistema com o comando find o seu cursor irá sumir até que a pesquisa seja inteiramente realizada ( ou seja, seu processo está sendo executado em foreground ), mas se esse processo for realizado em background você poderá realizar outras tarefas. Para que um processo seja inicializado em background é preciso que coloquemos o sinal & ( e comercial ) no final da sua linha de comando. /home/mane$ find / -name netscape* > arquivos-netscape [ Enter ] Neste exemplo o comando find será executado e fará uma procura por qualquer arquivo que comece com a palavra “ netscape “, o conteúdo da pesquisa será redirecionado para o arquivo chamado “ arquivos-netscape “. Mas tudo isso estará sendo executado em foreground ( primeiro plano ) e você não terá seu cursor de volta até que essa tarefa acabe. Para interromper a tarefa digita-se <CONTROL> + < z > . Para fazer com que ela continue sendo executada em background digite “bg” no prompt e tecle [ Enter ] . Desse modo a tarefa irá recomeçar de onde parou mas estará rodando em background. /home/mane$ find / -name netscape > arquivos-netscape [ Enter ] find: /etc/httpd/conf/ssl.key: Permission denied find: /tmp/linux-router/2.9.3/kernel/kernel-36pre2/modules/misc: Permission denied <CONTROL> + < z > [1]+ Stopped find / -name netscape >arquivos-netscape /home/mane$ bg [ Enter ] Para que uma tarefa rode em background ,sem rodar em foreground primeiro, digite ao final da linha de comando o caracter & ( e comercial ). /home/mane$ find / -name netscape > arquivos-netscape & [ Enter ] Deste modo você terá o prompt de volta e poderá realizar outras tarefas enquanto o sistema faz sua procura. 9.4 Tarefas 46 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 9.4.1 Crontab É possível agendar tarefas no Linux para que o sistema as realize em uma hora marcada ou com certa frequência. Para agendar uma tarefa é preciso que o deamon (processo servidor) crond esteja rodando na máquina em questão. Verifique se esse servidor está rodando com o comando ps aux, se esse servidor não estiver sendo executado digite: crond [ Enter ]. Para isso é preciso criar um arquivo de texto para o agendamento de tarefas com o seguinte formato : Minuto 00-59 Hora 0-23 Dia do Mês 1-31 Mês 1-12 Tarefa 0-7 Por exemplo, um arquivo que tivesse as entradas abaixo fariam com que o arquivo/programa chamado teste e localizado no diretório /root fosse executado a cada trina minutos, todas as horas, todos os dias do mês de janeiro de segunda a sexta-feiras. 00,30 0-23 * 1 1,2,3,4,5 /root/teste Após criar um arquivo de agendamento como o do exempolo acima é prciso rodar o comando crontab nele.Supodo que esse arquivo chame root.cronab : /root# crontab root.crontab [ Enter ] Na distribuição Red Hat já existem alguns recursos prontos para agendamento de tarefas. Coloque os arquivos a serem executados nos seguintes diretórios : Diretório /etc/cron.hourly /etc/cron.daily /etc/cron/weekly /etc/cron.mounthly Período de execução De hora em hora Diariamente Semanalmente Mensalmente Para listar as tarefas agendadas digite crontab –l . Para retirar uma tarefa digite crontab –r. 9.4.2 At Outro modo de agendar tarefas no Linux é usando o comando at , mas para isso é preciso que o servidor atd esteja sendo executada, para isso digite : atd [ Enter ] /root# at 1731 [ Enter ] at> /root/teste at> <CONTROL> + <D> <EOT> warning: commands will be executed using /bin/sh job 6 at 1999-11-08 17:31 No exemplo acima o arquivo /root/teste será executado às 17:31 h . Mas será executado apenas uma vez, no dia em que você entrar com a tarefa. Para agendar tarefas que precisam se repetir use o crontab. 47 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 10. Criando disco de instalação no DOS/Windows Para criar um disco de instalação da distribuição Slackware usa-se o programa rawrite.exe presente no CD de instalação. Para isso é preciso dois disquetes formatados. C:\> d: D:\> cd \bootdsks.144 D:\dosutils> rawrite Enter disk image source file name: bare.i (esta imagem pode ser utilizada na maioria dos computadores com dispositivos IDE, para dipositivos SCSI ler o arquivo README para ver qual imagem se adapta à sua placa controladora) Enter target diskette drive: a: Please insert a formatted diskette into drive A: and press –ENTER-- : [Enter] Terminada a fase de criação do disco de boot (BOOTDISK) é necessário criar um disco de root (ROOTDISK) que contém os programas necessários para instalação. Para criar um rootdisk siga os seguinte passos: C:\> d: D:\> cd \Rootdsks D:\dosutils> rawrite Enter disk image source file name: Color.gz (esta imagem contém os programas necessários para instalação; a imagem Network.dsk é necessária quando deseja fazer instalação via NFS pois esta imagem contém os módulos de placas de rede e programas necessários para configurar o ambiente de rede ) Enter target diskette drive: a: Please insert a formatted diskette into drive A: and press –ENTER-- : [Enter] O programa primeiramente irá pedir o nome do arquivo que contém a imagem que será copiada no disquete e em seguida para qual drive essa imagem deve ser copiada, nesse caso o driver de 3 ½ (a:) 48 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 11. Particionando e Formatando Discos Rígidos 11.1 Particionando Discos Rígidos Particionar um disco rígido consiste em dividir esse disco de modo que podemos usar cada parte para um fim diferente. Para instalar o Linux é preciso que existam duas partições no seu disco rígido, uma chamada de “Linux native” e outra chamada de “Linux swap”. O programa que será visto aqui será o fdisk do próprio Linux, seus comandos são simples e fáceis de aprender. As ações mais utilizadas são: criar, deletar e alterar características de partições. A seguir algumas relações entre os drives no Linux: /dev/hda /dev/hdb /dev/das /dev/sdb Primeiro drive IDE Segundo drive IDE Primeiro drive SCSI Segundo drive SCSI Os principais comandos do fdisk são : Criar partição Apagar partição Alterar característica da partição Sair sem salvar Sair e salvar alterações Ajuda n d t q w m Após inicializar o programa ele irá mostrar a seguinte mensagem: Command (m for help): Para mostrar as partições que existem usa – se o comando p. Command (m for help): p Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders Units = cylinders of 608 * 512 bytes Device Boot Begin Start End Blocks Id System /dev/hda1 * 1 1 203 61693 6 DOS 16-bit >=32M Neste exemplo temos uma partição DOS no IDE primário. Para criar outra partição usamos o comando n: Command (m for help): n Command action e extended p primary partition (1-4) p Após digitar n o programa irá perguntar se você quer criar uma partição primária ou extendida. Nesse caso iremos criar uma partição primária e escolhemos p (última linha). Partition number (1-4): 2 First cylinder (204-683): 204 Last cylinder or +size or +sizeM or +sizeK (204-683): +80M 49 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 Os próximos dados são: Partition number ( número da partição a ser criada ) como já havia uma partição no nosso exemplo vamos criar uma segunda partição ; First cylinder ( primeiro cilindro ) cilindro onde começará a segunda partição e Last cylinder ( último cilindro ) ou onde essa partição acaba, seu tamanho. Pode – se digitar o último cilindro ou tamanho em bytes ( +size ) , em Kbytes ( +sizeM ) ou em Mbytes ( +sizeM ) . Vamos criar outra partição. Desta vez de número 3 e com 10 Mbytes de tamanho. Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (474-683): 474 Last cylinder or +size or +sizeM or +sizeK (474-683): +10M Olhando as partições que criamos: Command (m for help): p Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders Units = cylinders of 608 * 512 bytes Device Boot Begin Start End Blocks Id System /dev/hda1 * 1 1 203 61693 6 DOS 16-bit >=32M /dev/hda2 204 204 473 82080 83 Linux native /dev/hda3 474 474 507 10336 83 Linux native Para instalar o Linux precisamos de uma partição de swap e para isso utilizaremos o partiçõa de número três. Para transformar essa partiçõa de “Linux native” para “Linux swap” use o comando t , Command (m for help): t Partition number (1-4): 3 Hex code (type L to list codes): 82 O Hex code para partição “Linux swap” é 82. Se quiser saber outros tipos de partições que o fdisk pode criar use o comando L . Para sair e salvar as alterações feitas digite w e para sair sem salvar as alterações digite q . 11.2 Formatando Discos Rígidos No Linux Slackware para formatar uma partição com sistema de arquivos EXT2 o comando utilizado é o mke2fs. Sua sintaxe é a seguinte: mke2fs <device> Para formatar uma partição tipo FAT 32 pode ser utilizado o comando mkdosfs, e sua sintaxe é: mkdosfs –F 32 50 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 12. Um pouco sobre o LILO O LILO (LInux LOader) é um programa que gerencia a inicialização do sistema. Esse programa é geralmente instalado no MBR (Master Boot Record - que corresponde aos primeiros 512 bytes do disco rígido) e possibilita a coexistência de vários sistemas operacionais na máquina. O arquivo que configura o funcionamento do LILO é o lilo.conf, nas linhas que se seguem será dada uma visão básica desse arquivo e quais as coisas você pode alterar sem problemas, pois esse material não irá se aprofundar no assunto. Abaixo um exemplo do arquivo lilo.conf com comentários : boot=/dev/hda map=/boot/map install=/boot/boot.b password=minhasenha restricted prompt timeout=50 default=linux image=/boot/vmlinuz label=linux root=/dev/hda2 read-only other=/dev/hda1 label=Win table=/dev/hda # Senha para o LILO # Restringe o acesso # Mostrar o prompt do LILO # Tempo de espera do prompt de 5 seg # O linux é o sistema padrão # Arquivo com a imagem de kernel # Nome do linux no menu do LILO # Partição da imagem do kernel # Partição com o Windows # Nome do Windows no menu de escolha do LILO # Localização do Windows Alguns campos do lilo.conf: restricted – Restringe o acesso ao LILO, pedindo senha ao se tentar passar parâmetros para a inicialização do kernel. A opção restricted exige a linha password. prompt - Mostra o prompt do LILO e e permite escolher por qual sistema operacional você deseja inicializar a máquina. Pode -se pressionar a tecla Tab para saber por quais sistemas é possível inicializar sua máquina. timeout - Aqui é colocado o tempo de espera antes de inicializar pelo sistema default ( explicado mais a frente ), esse tempo é dado em decissegundo, ou seja, se você deseja que o LILO espere 5 segundos coloque 50, se você deseja 10 segundos coloque 100. default - Aqui é definido qual o sistema será carregado se não for feita nenhuma escolha quando for apresentado o prompt do LILO. Neste exemplo poderiam ser usadas duas opções : linux ou Win. Mais explicações de como isso funciona logo abaixo mas, se você quiser mudar a inicialização padrão apenas troque o valor desse campo image - Possui o caminho do arquivo com a imagem do Linux. label - Esse campo guarda o nome que irá aparecer quando você teclar Tab ao ser apresentado o prompt do LILO. É importante notar que nesse exemplo a inicialização padrão ( campo " default " , visto acima ) será pelo Linux, caso se mude o valor desse campo para " Win " a máquina dará o boot pela partição definida por esse label. root - Essa é a partição onde estará a imagem do Kernel. Por exemplo, se seu Linux estiver na partição hda2 então o valor desse campo será : /dev/hda2, se estiver na partição hda3 então será : /de/hd3. 51 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 Caso você tenha Linux e Windows na mesma máquina então os próximos campos serão: other - Localização da partição onde está instalado o Windows. label - Guarda o nome que será apresentado pelo LILO para escolha do sistema a ser inicializado, nesse caso o valor é Win. table - Onde o Windows se encontra. Ao fazer qualquer mudança no arquivo /etc/lilo.conf é necessário rodar o lilo para que as alterações sejam gravadas , para isso digite : # /sbin/lilo [ Enter ] 52 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 13. Pacotes de instalação pré-compilados 13.1 Pacotes RPM O RPM, Gerenciador de Pacotes Red Hat é uma maneira fácil e rápida de instalar softwares no Linux. Com ese sistema é possível instalar,desinstalar, pesquisar quais pacotes você tem instalados na sua máquina e atualizar programas. 13.1.1 Instalando pacotes RPM Os pacotes RPM tem um formato padrão, que informa o nome do pacote, a versão, release e plataforma ( processador ) para que o pacote foi compilado. Por exemplo : netscape-common-4.7-8cl.i386.rpm . Esse pacote tem o nome de "netscape-common" , sua versão é 4.7 , release 8 e foi compilado para plataforma i386, ou seja, PC´s. Para instalar pacotes RPM a sintaxe~é a seguinte : rpm -ivh <nome do pacote>. Para instalar o pacote que nós usamos como exemplo a síntaxe seria : # rpm –ivh netscape-common-4.7-8cl.i386.rpm [ Enter ] Após feito isso aparecerá um conjunto de caracteres " # " , indicando o progresso da instalação. Caso o pacote já tenha sido instalado aparecerá a seguinte mensagem : # rpm –ivh netscape-common-4.7-8cl.i386.rpm [ Enter ] netscape-commom package netscape-common-4.7-8 is already installed error : rpm -ivh netscape-common-4.7-8cl.i386.rpm cannot be installed 13.1.2 Conflitos com pacotes já instalados e Depêndencias entre outros pacotes Podem ocorrer também conflitos entre arquivos já instalados no seu sistema e aqueles que pertencem ao pacote que você está tentando instalar. Se isso ocorrer a mensagem apresentada será semelhante a essa : # rpm –ivh netscape-common-4.7-8cl.i386.rpm [ Enter ] netscape-commom /usr/bin/netscape-commom conflicts with file from netscape-teste.4.7-8 error : netscape-common-4.7-8cl.i386.rpm cannot be installed Caso você queira forçar a instalação use a opção -replacefiles . Outra situação que pode ocorrer é que, ao tentar instalar um pacote este precise que outros já tenham sido instalados, para resolver este problema pode -se instalar os pacotes requeridos ou forçar a instalação com o parâmetro -nodeps , mas deste modo seu pacote não funcionará. 13.1.3 Quais pacotes estão instalados? Uma das vantagens do RPM é que você possui meios de descobrir quais são os pacotes que estão instalados na sua máquina. É possível também descobrir a qual pacote pertence determinado arquivo. Algumas opções : Mostra todos os pacotes instalados : # rpm –qa [ Enter ] Procura a qual pacote pertence o arquivo test.conf : # rpm –qf teste.conf [ Enter ] 53 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 13.1.4 Desinstalando os pacotes Para desinstalar os pacotes RPM a sintaxe é a seguinte : rpm -e < nome do pacote >. Use apenas o nome do pacote, e não o nome total do arquivo. No exemplo acima foi usado o arquivo netscape-common-4.7-8cl.i386.rpm , mas o nome do pacote é apenas netscapecommon. Exemplificando : # rpm -e netscape-common [ Enter ] Pode ocorrer que, ao tentar desinstalar um pacote esse seja necessário para o funcionamento de um segundo, então será apresentada uma mensagem de erro. Se quiser realmente desinstalar o pacote use a opção -nodeps . 13.1.5 Atualizando pacotes Para instalar uma versão mais atual de um pacote já instalado no seu sistema use a opção -Uvh seguido do nome do pacote. # rpm –Uvh netscape-common-4.7-9cl.i386.rpm [ Enter ] O próprio sistema RPM fará cópias de segurança dos arquivos de configuração que seu software costumava usar, geralmente renomeando -os para algo como: arquivo.conf.rpmsave . 13.2 Pacotes TGZ Estes pacotes são pacotes já compilados que podem ser instalados utilizando a ferramenta PKGTOOL, ou os comandos como abaixo listados. A sintaxe do comando pkgtool é: pkgtool 13.2.1 Instalando pacotes TGZ Para instalar um pacote TGZ a sintaxe é a seguinte: installpkg <pacote.tgz> # installpkg Netscape.tgz [ Enter ] 13.2.2 Removendo pacotes TGZ Para remover um pacote TGZ a sintaxe é a seguinte: removepkg <pacote.tgz> # removepkg Netscape.tgz [ Enter ] 13.2.3 Atualizando pacotes TGZ Para atualizar um pacote TGZ a sintaxe é a seguinte: upgradepkg <pacote.tgz> # upgradepkg netscape-v600pr1.x86-unknown-linux2.2.tgz [ Enter ] 13.2.3 Quais pacotes estão instalados A relação de todos os pacotes instalados está listada no diretório /var/log/packages Para converter pacotes .TGZ (Slackware), .RPM (Red Hat), DEB (Debian) e outros pode ser utilizado uma ferramenta chamada ALIEN que pode ser encontrado em www.freshmeat.net. 54 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 14. Redes TCP/IP no Linux O TCP/IP (Transfer Control Protocol/Internet Protocol) é um conjunto de protocolos que pode ser usado para troca de dados em uma LAN (rede local) ou em uma WAN (rede de longa distância). Esse conjunto de protocolos possui várias funções como roteamento, transferência de arquivos, emulação de terminais e correio eletrônico. O TCP/IP é o protocolo utilizado na Internet e está presente na maioria dos sistemas operacionais inclusive no Linux. 14.1 Um pouco sobre o Hardware Para que uma máquina consiga se comunicar em uma rede é necessário que seu hardware esteja habilitado para isso. No nosso caso estamos falando de interfaces de rede (placas de rede). A habilitação dessa interface de rede consiste em fazer com que o Linux a reconheça e carregue o programa que irá se comunicar com ela. Para isso precisamos conhecer algumas características da interface (placa) que iremos usar : modelo da placa, para cada interface temos um programa de controle ; irq , número do pedido de interrupção e intervalo de i/o (entrada e saída). Código de Rede do Kernel Interface de Rede Programa de Controle Eth0 Programa de Controle NE2000 Hardware Placa NE2000 A figura acima ilustra a comunicação entre o Kernel do Linux e o Hardware. (Essa figura é uma reprodução parcial da figura 3.1 do Guia do Administrador de Redes Linux de Olaf Kirch). Programas de controle de dispositivos (tanto de placas de rede, de som e outros) são conhecidos como módulos. O Linux possui uma característica chamada “carga de drivers sob demanda”, ou seja, é possível carregar um programa de controle quando necessário e descarrega – lo da memória também quando necessário. Isso pode ser feito sem a necessidade de reinicializar o sistema. Para essa tarefa existe um servidor chamado Kerneld que gerência a carga/descarga dos módulos quando necessário. Para carregar módulos utilizamos o comando modprobe, que faz a carga do módulo pedido e de outros caso seja necessário. Sua sintaxe é: modprobre < módulo > < opções > /home/mane# modprobe ne.o irq=5 io=0x320 [ Enter ] 55 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 Neste exemplo carregamos o módulo do programa de controle da placa de rede NE2000 (ne.o) com valor da interrupção igual a cinco (5) e endereço de i/o (entrada e saída) igual a 0x320 (este endereço está em notação hexadecimal). No diretório /lib/modules/<versão do Kernel> encontram-se os módulos do Linux. Para listar quais módulos estão carregados na memória use o comando lsmod seguido de [ Enter ]. O arquivo lido na hora do boot para a carga dos módulos que o sistema é o /etc/rc.d/rc.modules Abaixo estão alguns dos modelos de placas de rede que o Linux suporta: 3Com EtherLink 3c503 , 3c503/16 , 3c507 , 3c509 , 3c501 Novell Eagle NE1000, NE2000 e uma grande variedade de clones desses modelos. NE1500 e NE2100 também Western Digital/SMC WD8003 , WD8013 (SMC Elite and SMC Elite Plus) e SMC Elite 16 Ultra. Hewlett Packard HP 27252, HP 27247B, e HP J2405A. D-Link DE-600, DE-100, DE-200, e DE-220-T. E um kit de correção para DE-650-T, que é um cartão PCMCIA . DEC DE200 (32K/64K), DE202, DE100, e DEPCA rev E. Allied Teliesis AT1500 and AT1700 PCI ne2k-pci utilizado em várias placas pci rtl8139 utilzado em várias placas com chipset Realtek Está lista foi baseada no Guia do Administrador de Redes Linux, escrito por Olaf Kirch (versão beta 0.21) e traduzido pela Conectiva Informática. Para uma lista completa e atualizada do hardware de rede suportado pelo Linux consulte o Ethernet How-To. 14.2 Identificação de máquinas em uma rede TCP/IP Para que uma máquina seja reconhecida (passe a fazer parte) em uma rede TCP/IP é preciso que seja atribuído a sua interface de rede um número chamado “número IP” ou “endereço IP”. Esse endereço consiste em um número decimal divido em quatro campos por pontos. Ex: 192.168.1.10 _ 200.137.223.195 _ 200.222.135.45 14.3 Atribuindo um número IP e estabelecendo rotas de uma interface de rede 14.3.1 Atribuindo um número IP a uma interface de rede Para atribuir um número IP a uma interface de rede usamos o programa ifconfig. Sua sintaxe é a seguinte : ifconfig <interface> <endereço ip> broadcast <endereço de broadcast> netmask <máscara da sub-rede> /home/mane# 255.255.255.0 ifconfig [ Enter ] eth0 192.168.1.10 broadcast 192.168.1.255 netmask Neste exemplo foi atribuída a interface eth0 o endereço IP 192.168.1.10 Vários outros parâmetros podem ser usados com o ifconfig, alguns exemplos: máscara de sub-rede, habilitação do modo promíscuo da interface, endereço de broadcast, etc. 56 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 Se o comando ifconfig for usado sem nenhum parâmetro ele mostrará informações sobre as interfaces de rede ativadas. /home/mane# ifconfig eth0 Encapsulamento do Link: Ethernet Endereço de HW 00:80:C8:14:B6:E7 end. Inet:192.168.1.10 Bcast:192.168.1.255 Masc:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1 Pacotes RX:3936 erros:0 descartados:0 sobreposições:0 quadros:0 Pacotes TX:10084 erros:0 descartados:0 sobreposições:0 portadora:0 Colisões:0 lo Encapsulamento do Link: Loopback Local end. inet:127.0.0.1 Bcast:127.255.255.255 Masc:255.0.0.0 UP BROADCAST LOOPBACK RUNNING MTU:3584 Métrica:1 Pacotes RX:9193 erros:0 descartados:0 sobreposições:0 quadros:0 Pacotes TX:9193 erros:0 descartados:0 sobreposições:0 portadora:0 Colisões:0 Neste exemplo o programa ifconfig mostra informações sobre as interfaces de rede que estão instaladas na máquina. 14.3.2 Estabelecendo rotas de uma interface de rede Depois de configurar o endereço IP para a interface é necessário configurar qual o endereço da rede e do gateway, para isso utilizaremos o comando route. Sua sintaxe é a seguinte: route <add ou del> <opções> /root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0 No exemplo à cima estamos estabelecendo que a interface eth0 faz parte da rede 162.168.0.1 e da sub-rede 255.255.255.0 /root# add default gw 192.168.0.1 netmask 0.0.0.0 metric 1 Aqui configuramos qual é o gateway (default gw) da rede. Para configurar uma interface de rede no momento do boot no Linux Slackware temos o arquivo /etc/rc.d/rc.inet1 que é lido todo vez que o sistema é inicializado. É necessário apenas acrescentar as informações desejadas. /etc/rc.d# vi rc.inet1 #! /bin/sh 57 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 # # rc.inet1 # # Version: # This shell script boots up the base INET system. @(#)/etc/rc.d/rc.inet1 1.01 05/27/93 HOSTNAME=`cat /etc/HOSTNAME` # Attach the loopback device. /sbin/ifconfig lo 127.0.0.1 /sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo # IF YOU HAVE AN ETHERNET CONNECTION, use these lines below to configure the # eth0 interface. If you're only using loopback or SLIP, don't include the # rest of the lines in this file. # Edit for your setup. IPADDR="192.268.0.100" NETMASK="255.255.255.0" NETWORK="192.168.0.0" BROADCAST="192.168.0.255" GATEWAY="192.168.0.1" # REPLACE with YOUR IP address! # REPLACE with YOUR netmask! # REPLACE with YOUR network address! # REPLACE with YOUR broadcast address, if you # have one. If not, leave blank and edit below. # REPLACE with YOUR gateway address! Sobre os termos acima: IPADDR é o endereço do dispositivo (192.168.0.100); NETMASK é a máscara de sub-rede; NETWORK é o endereço da rede; BROADCAST é um endereço que representa todas as máquinas da rede, ou seja, se for mandado uma mensagem para esse endereço todas as máquinas que pertencem a ela irão receber essa mensagem; GATEWAY é o primeiro computador de uma rede. Para mais detalhes sobre o comando ifconfig e route consulte sua página de manual. 14.4 Configurando uma interface ppp (Point to Point Protocol) Para usuários de modem a interface utilizada é a ppp0 e para configurar uma conexão dial-up é necessário o pacote ppp instalado. Este pacote possui algumas ferramentas para configuração e inicialização do daemon pppd. Destas ferramentas a que será utilizada para configurar a conexão dial-up é o pppsetup. A primeira janela é uma janela de apresentação, apenas tecle Enter Na segunda janela é solicitado o telefone do seu ISP (Internet Service Provider Provedor de Acesso à Internet) e deve ser informado com a seguinte sintaxe: atdt<numero do telefone> (para discagem de pulso) e atdp<numero do telefone> (para discagem de tom); Na terceira janela é perguntado em qual porta está instalado seu modem (/dev/ttyS0 (COM1 no DOS), /dev/ttyS1(COM2 no DOS) e assim por diante); Na quarta janela é perguntado qual a "baud rate" do seu modem que é a taxa máxima de transferêcia de dados, nos modems de 28.600 kBps, 33.600 kBps e 56 kBps geralmente esta "baud rate" é 115kBps; Na quinta janela é perguntado se seu ISP liga de volta para você para solicitar username e senha, nos ISPs atuais não é utilizado este recurso Na sexta janela pergunta se deseja passar alguma string especial para o modem; Na sétima janela é questionado qual o domíni do seu servidor. Por exemplo: ig.com.br Na oitava janela é solicitado o endereço IP do servidor de nomes (DNS) do seu ISP, se não souber pode deixar este campo em branco; Na nona janela é questionado qual sistema de autenticação que seu ISP utiiza, geralmente, nos servidores atuais, o sitema de autenticação é o PAP; Na décima janela é solicitado o seu nome de usuário (username); Na décima primeira janela é solicitado a sua senha (password); 58 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 Por fim lhe é mostrado como ficaram seus arquivos de configuração. Estes arquivos estão localizados no diretório /etc/ppp e por default somente o root tem acesso à esse diretório Feita as configurações, para conectar deve-se utilizar o comando ppp-go ou ppp-on. 14.5 Configurando o nome da máquina Para configurar o nome da máquina devemos acrescentar ( ou modificar ) uma linha ao arquivo /etc/hosts com os seguintes campos : < número IP > < nome da máquina > Formato do arquivo /etc/hosts: /home/mane# more /etc/hosts 127.0.0.1 localhost localhost.localdomain 192.168.0.100 host.dominio host A primeira linha é relativa à interface de loopback, essa interface não existe na realidade mas é usada pelo Kernel para algumas funções. A segunda linha é a que nos interessa, nela temos o endereço IP e o nome que daremos à nossa máquina. 14.6 O comando ping O comando ping envia pacotes do tipo ICMP (Internet Control Message Protocol) para uma máquina. Esse comando pode ser usado para testar se determinada máquina está ou não conectada à rede, caso esteja, a máquina em questão irá responder ao comando ping (A menos que esteja devidamente configurada para não fazer isso, mas não vamos nos aprofundar nisso.) Sua sintaxe é : ping <nome da máquina> ou <endereço IP da máquina> /home/mane$ ping www.slackware.com PING bob.slackware.com (204.216.27.12): 56 data bytes 64 bytes from 204.216.27.12: icmp_seq=2 ttl=243 time=343.8 ms 64 bytes from 204.216.27.12: icmp_seq=3 ttl=243 time=429.3 ms 64 bytes from 204.216.27.12: icmp_seq=4 ttl=243 time=368.7 ms --- bob.slackware.com ping statistics --6 packets transmitted, 3 packets received, 50% packet loss round-trip min/avg/max = 343.8/380.6/429.3 ms Neste exemplo o comando ping envia dados para a máquina www.slackware.com e ela responde, pode-se observar alguns dados como tempo de resposta, tamanho do pacote quantidade de pacotes enviados e recebidos, etc. Para finalizar o ping tecle <control> + <c> . 14.7 O comando netstat O comando netstat é de grande utilidade e através dele podemos conseguir várias informações como: tabela de roteamento , estatísticas sobre interfaces de rede, conexões e etc. Algumas de suas principais funções são : Opções -i -r -ta Ação Mostra estatísticas sobre as interfaces de rede Mostra tabela de roteamento Lista os servidores que estão sendo executados /home/mane# netstat –i Tabela de Interfaces do Kernel Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR eth0 1500 0 4098 0 0 0 lo 3584 0 9229 0 0 0 TX-OK TX-ERR TX-DRP TX-OVR Flg 10287 0 0 0 BRU 9229 0 0 0 BLRU No exemplo acima são mostradas algumas estatísticas sobre as interfaces eth0 e lo (loopback). 59 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 /home/mane# netstat –r Tabela de Roteamento IP do Kernel Destino Roteador MáscaraGen. 192.168.1.254 * 255.255.255.0 127.0.0.0 * 255.0.0.0 default 192.168.1.254 0.0.0.0 Opções MSS Janela U 1500 0 U 3584 0 UG 1500 0 irtt Iface 0 eth0 0 lo 0 eth0 Neste segundo exemplo o comando netstat mostra a tabela de roteamento utilizado pelo Kernel do Linux. Essa tabela indica para o Kernel quais decisões tomar quando a máquina recebe pacotes pela rede, se esse pacotes pertencem a rede e para onde encaminha-los caso não pertençam. /home/mane$ netstat -ta Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address tcp 0 248 morpheu.ufgnet1.ufg:ssh xxx.ufgnet1.ufg.br:1205 tcp 0 0 *:734 *:* tcp 0 0 *:2049 *:* tcp 0 0 *:111 *:* tcp 0 0 *:ssh *:* State ESTABLISHED LISTEN LISTEN LISTEN LISTEN Neste exemplo o comando netstat mostra os servidores e as conexões de rede presentes no sistema. Para mais informações sobre o netstat consulte sua página de manual. 14.8 O servidor de Internet Inetd (Internet Deamon) De maneira simplificada, um servidor é um programa que fica rodando e quando lhe é solicitado uma tarefa ele cria um processo filho para tomar conta dessa tarefa e retorna a ficar escutando os pedidos de serviços. O servidor que gerencia os serviços de Internet no Linux é o inetd e seus arquivos de configuração são: /etc/inetd.conf e /etc/services . 14.9 Acesso remoto seguro com Secure Shell (SSH) O SSHD é um daemon do Linux que utiliza o protocolo TCP/IP para acessar uma máquina remotamente que consiste em executar tarefas nessa máquina via rede, ou seja, conectar-se a essa máquina através de uma rede e operá-la como se você estivesse localmente. O SSH assegura a comunicação entre os dois hosts encriptografando toda a comunicação. Pode ser encontrado para download em www.ssh.org. O programa utilizado é o ssh, e sua sintaxe é: ssh -l <usuário> -c <modo de criptografia que deseja usar> <número IP ou nome da máquina> /home/mane$ ssh -l ufgnet -c blowfish morpheu Host key not found from database. Key fingerprint: 60 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 xogak-senon-tesok-hupep-romap-vypil-morib-pydog-bolit-tusyz-paxax You can get a public key's fingerprint by running % ssh-keygen -F publickey.pub on the keyfile. Are you sure you want to continue connecting (yes/no)? yes Host key saved to /root/.ssh2/hostkeys/key_22_morpheu.pub host key for morpheu, accepted by root Wed Jan 24 2001 16:34:14 ufgnet's password: Authentication successful. Last login: Thu Jan 18 2001 17:49:44 from UFGNet No mail. morpheu:~$ 14.10 Transferência de arquivos (FTP) Outra tarefa possível de ser realizada em uma rede é a transferência de arquivos, usando o protocolo FTP (File Transfer Protocol). Esse serviço permite que você se conecte a uma máquina e pegue ou coloque arquivos nesse máquina remota. O modo de realizar isso é usar o programa ftp seguido do nome ou número da máquina a se conectar. /home/mane# ftp ftp Connected to michelle.ufgnet1.ufg.br. 220 ProFTPD 1.2.0 Server (Michelle FTP Server) [michelle.ufgnet1.ufg.br] Name (ftp:ufgnet): anonymous 331 Anonymous login ok, send your complete e-mail address as password. Password: 230 Anonymous access granted, restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> Aqui para conectar –se o processo é semelhante ao Telnet, é preciso Ter um login e senha nessa máquina. É comum em servidores públicos de ftp existirem contas anonymous em que qualquer um tem permissão de conexão, sendo a senha o e-mail de quem deseja realizar a conexão. Abaixo alguns comandos do ftp : Comando cd ls get mget put mput hash prompt ascii bin pas Ação Muda de diretório Lista o conteúdo do diretório corrente Transfere um arquivo da máquina remota para a máquina local Transfere vários arquivos de uma vez ( deve -se usar o * ) Transfere um arquivo da máquina local para a remota Transfere vários arquivos da máquina local para a máquina remota Imprime na tela um # a cada byte transferido Desliga o modo interativo Seta o modo de transferência para ascii (arquivos de texto puro) Seta o modo de transferência para arquivos binários Seta modo passivo, às vezes, necessário quando o cliente está atráz de um firewall 61 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 15. O Ambiente Gráfico O Sistema X Window é um ambiente gráfico grande e poderoso (alguns podem dizer que excessivamente grande e complexo) para sistemas UNIX. O código do Sistema X Window original foi desenvolvido no MIT, e vendedores comerciais desde então tem usado o X como modelo industrial para as plataformas UNIX. Virtualmente toda a estação de trabalho UNIX no mundo roda algum derivado do sistema X Window. Um porte de livre distribuição da versão 11 do Sistema X Window do MIT, versão 6 (X11R6) para sistemas 80386/80486/Pentium foi desenvolvida por uma equipe de programadores originariamente liderada por David Wexelblat. A versão conhecida como XFree86 está disponível para o System V/386, 386BSD e outras implementações x86 UNIX, inclusive Linux. Ele inclui todos os binários necessários, arquivos de suporte, bibliotecas e ferramentas. 15.1 Reconhecimento do Hardware: Para instalar o Sistema X Window é necessário conhecer algumas informações sobre o hardware de vídeo, características como: Marca do CHIPSET e quantidade de memória da placa de vídeo; Taxa de “refresh” do seu monitor, que são, as freqüências horizontal e vertical do monitor (essa informação é obtida no manual do monitor); Você também pode determinar o chipset de placa de vídeo executando o programa SuperProbe, incluído com a distribuição XFree86, e sua sintaxe é: SuperProbe . Este programa tentará identificar a sua placa de vídeo à partir da relação de placas que a sua distribuição do Xfree86 suporta. 15.2 Instalando o XFree86: O servidor Xfree86 é composto por vários pacotes, que devem ser instalados de acordo com sua necessidade, a descrição dos pacotes da versão 3.3 está relacionada abaixo: PACOTE X338514.tgz X33AGX.tgz X33I128.tgz X33Mach32.tgz X33Mach64.tgz X33Mach8.tgz X33Mono.tgz X33P9K.tgz X33S3.tgz X33S3V.tgz Descrição do Pacote Servidor para placas baseadas em 8514. Servidor para placas baseadas em AGX. Servidor para a Number Nine Imagine 128. Servidor para placas baseadas em Mach32. Servidor para placas baseadas em Mach64. Servidor para placas baseadas em Mach8. Servidor para modos de vídeo monocromático. Servidor para placas baseadas em P9000. Servidor para placas baseadas em S3. Servidor para S3 ViRGE e ViRGE/VX (consideradas beta). X33SVGA.tgz Servidor para placas baseadas em Super VGA. X33W32.tgz Servidor para placas baseadas em ET4000/W32. Se você não souber qual utilizar, obtenha o servidor VGA16, X33VGA16.tgz. Pode-se transferi-lo de qualquer maneira, porque ele será necessário para executar o utilitário de autoconfiguração no próximo passo. Os seguintes arquivos são necessários: preinst.sh Programa de pré-instalação. postinst.sh X33bin.tgz X33cfg.tgz X33doc.tgz X33man.tgz X33fnts.tgz X33lib.tgz Programa de pós-instalação Restante dos binários X11R6 Arquivos config para xdm, xinit e fs. Documentação. Páginas do manual. 75dpi, diversos e fontes PEX. Biblioteca X compartilhada e arquivos de suporte. 62 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 X33set.tgz X33VG16.tgz Utilitário XF86Setup. Servidor para placas baseadas VGA/EGA. Os seguintes arquivos são opcionais: X33f100.tgz X33fcyr.tgz X33fnon.tgz X33fscl.tgz X33fsrv.tgz X33prog.tgz X33lkit.tgz X33lk98.tgz X33nest.tgz X33prt.tgz X33vfb.tgz X33ps.tgz X33html.tgz Fontes 100dpi. Fontes Cyrillic. Outras fontes (Chinesa, Japonesa, Coreana, Hebraica). Fontes escalonáveis (Speedo e Tipo1). Servidor de Fonte e arquivos de configuração Arquivos de cabeçalho X, arquivos config e libs para compilação. Servidor X LinkKit. PC98 X Servidor LinkKit. Servidor X aninhado. Servidor X print. Servidor Framebuffer. Versão PostScript da documentação. Versão HTML da documentação. É necessário certificar-se que /usr/X11R6/bin está no PATH (variável que indica a rota padrão de pesquisa de executáveis). Para isso é necessário adicionar este diretório à variável. É necessário certificar-se também que /usr/X11R6/lib pode ser localizado pelo ld.so, o qual estabelece ligações em tempo de execução. Para fazer isto, acrescente a linha /usr/X11R6/lib ao arquivo /etc/ld.so.conf e execute /sbin/ldconfig, como superusuário. 15.3 Ferramentas para configurar o XFree86: Para configurar o XFree86 pode-se utilizar duas ferramentas de configuração, e os comandos são os seguites: XF86Setup e xf86config. O XF86Setup é uma ferramenta de configuração gráfica (necessita o servidor XVGA16) possui uma interface amigável que configura o mouse, o teclado, o monitor e a placa de vídeo. A outra ferramenta disponível é executada à partir do comando xf86config, esta ferramenta é executada no prompt de comando e com ela é possível configurar também o mouse, teclado, monitor e placa de vídeo. Estas duas ferramentas editarão o arquivo /etc/XF86Config, que é o arquivo de configuração do servidor X. 15.4 Inicializando o Ambiente Gráfico: Depois de configurar o Xfree86 é necessário agora escolher um Gerenciador de Janelas que se adapte às suas necessidades. Um dos critérios de escolha para o Gerenciador de Janelas que irá utilizar é a capacidade de processamento e memória de sua máquina, porque alguns gerenciadores como o KDE (www.kde.org), o ENLIGHTENMENT (www.enlightenment.org), o GNOME (www.gnome.org) e o WINDOW MAKER (www.windowmaker.org) são pesados e exigem máquinas com maior capacidade pois necessitam biblitecas específicas: GTKlib para o GNOME, ENLIGHTENMENT e WINDOW MAKER e QTlib para o KDE. Para máquinas com capacidade menor é recomendável interfaces como o BLACKBOX (blackbox.alug.org), o AFTERSTEP (www.afterstep.org) ou FVWM (www.fvwm.org) que para funcionarem necessitam apenas das bibliotecas do X11. O comando que inicia o XFree86 é: startx Esta é a uma interface para o programa xinit (no caso de se estar acostumado a usar xinit em outros sistemas UNIX). Este comando iniciará o Servidor X e executará os comandos encontrados no arquivo .xinitrc no seu diretório pessoal. O .xinitrc é apenas um programa contendo os clientes X a serem executados. Caso este arquivo não exista, o padrão do sistema /usr/X11R6/lib/X11/xinit/xinitrc será usado, isto para o root, os outros usuários do sistema deverão ter o arquivo .xinitrc no seu diretório pessoal (home). 15.5 Configurando o XFree86 à partir do arquivo XF86Config: 63 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 Para um funcionamento otimizado do ambiente gráfico é necessário editar algumas linhas do arquivo /etc/XF86Config como descrito abaixo: Linha Section "Files" ... 1 2 3 4 5 6 7 FontPath FontPath FontPath FontPath FontPath FontPath FontPath "/usr/X11R6/lib/X11/fonts/misc/" "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled" "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled" "/usr/X11R6/lib/X11/fonts/Type1/" "/usr/X11R6/lib/X11/fonts/Speedo/" "/usr/X11R6/lib/X11/fonts/100dpi/" "/usr/X11R6/lib/X11/fonts/75dpi/" Nesta sessão pode-se inverter a ordem das linhas 2 e 3 e 6 e 7 na ordem como descrito acima as fontes utilizadas serão as de 100 dpi que são maiores que as de 75 dpi. Linha Pointer section 1 Section "Pointer" 2 Protocol "PS/2" 3 Device "/dev/mouse" Nesta sessão pode-se alterar na linha 2 substituir “PS/2” por “auto” assim você pode utilizar mouse PS/2 ou Serial sem se preocupar em editar esta linha. Monitor section # 640x400 @ 70 Hz, 31.5 kHz hsync #Modeline "640x400" 25.175 640 664 760 800 # 640x480 @ 60 Hz, 31.5 kHz hsync #Modeline "640x480" 25.175 640 664 760 800 # 801x600 @ 56 Hz, 35.15 kHz hsync #ModeLine "800x600" 36 800 824 896 1024 # 1024x768 @ 87 Hz interlaced, 35.5 kHz hsync Modeline "1024x768" 44.9 1024 1048 1208 1264 ... 400 409 411 450 480 491 493 525 600 601 603 625 768 776 784 817 Interlace Nesta sessão deve-se comentar2 todas linhas que começam com Modeline, deixando descomentada apenas a linha compatível com seu monitor. Esta linha deve ser escolhida de acordo com a resolução que deseja usar (por exemplo: 1024x768 se o monitor e a placa de vídeo suportam esta resolução), freqüência vertical do seu monitor (por exemplo: @ 87 Hz interlaced é para monitores que suportam até 87 Hz de freqüência vertical intrelaçada) e freqüência horizontal (por exemplo: 31.5 kHz hsync é para monitores que suportam até 35.5 kHz de freqüência horizontal). Screen sections COMENTAR – Inserir uma cerquilha (#) no início da linha 64 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 # The Colour SVGA server #Section "Screen" # Driver "svga" # Device "Generic VGA" # #Device "S3" # Monitor "Digital" # Subsection "Display" # Depth 8 # #Modes "640x480" "800x600" "1024x768" # ViewPort 0 0 # Virtual 320 200 # #Virtual 1024 768 # EndSubsection #EndSection # The 16-color VGA server #Section "Screen" # Driver "vga16" # Device "Generic VGA" # Monitor "Digital" # Subsection "Display" # Modes "640x480" "800x600" # ViewPort 0 0 # Virtual 800 600 # EndSubsection #EndSection # The Mono server #Section "Screen" # Driver "vga2" # Device "Generic VGA" # Monitor "Digital" # Subsection "Display" # Modes "640x480" "800x600" # ViewPort 0 0 # Virtual 800 600 # EndSubsection #EndSection # The accelerated servers (S3, Mach32, Mach8, 8514, P9000, AGX, W32, Mach64) Section "Screen" Driver "accel" Device "S3" Monitor "Digital" # Subsection "Display" # Depth 8 # Modes "640x480" "800x600" "1024x768" # ViewPort 0 0 # EndSubsection Subsection "Display" Depth 16 Modes "1024x768" ViewPort 0 0 EndSubsection # Subsection "Display" # Depth 24 # Modes "640x480" 65 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 # ViewPort 0 0 # EndSubsection # Subsection "Display" # Depth 32 # Modes "640x400" # ViewPort 0 0 # EndSubsection EndSection Nesta sessão deve-se comentar todas linhas exceto a “Section Screen” que se refere à sua placa de vídeo, e nesta “Section Screen” deve-se deixar apenas a Subsection "Display" que descreve a profundidade de cores (Depth) que deseja utilizar e na linha Modes deve-se deixar apenas a resolução que utilizará por exemplo: Depth 16 indica uso de 16 milhões de cores Modes "1024x768" indica o uso de resolução 1024x768 66 Introdução ao Sistema Operacional Linux____________________________UFGNet - 2001 Bibliografia 1 - Kirch, Olaf - Guia do Administrador de Redes Linux; Título original: Linux System Administrator's Guide (Versão traduzida por: Conectiva Informática.) 2 - Wirzenius, Lars - Guia do Administrador de Sistemas Linux; Título original: The Linux Network Administrator's Guide. (Versão traduzida por: Conectiva Informática.) 3 - Guia do Usuário do Conectiva Linux (versão 2.0 ) ; Copyright © 1998, 1999 - Conectiva Informática Ltda. 4 - Eric S. Raymond - The Linux Installation HOWTO ; 5 - Guia de Instalação do Linux; Copyright © 1995, 1996, 1997, 1998, 1999, 2000 - Conectiva Informática Ltda. 6 - Matt Welsh - Linux Installation and Getting Started 7 - Goiamy Póvoa Filho - Apostila de curso ; 7 - Páginas de Manuais diversas do sistema; 8 - Sites diversos sobre Linux: (Alguns deles) http://www.linux.org http://www.conectiva.com.br http://www.linux.usp.br http://www.linux.unicamp.br http://www.linux.goias.net http://www.revistadolinux.com.br http://ldp-br.conectiva.com.br http://www.linuxdoc.org http://www.slackware.com http://www.linux.trix.net http://linux.unleashed.com.br 9 - Lista de discussão: Dicas-L - Para informações: http://www.Dicas-L.unicamp.br/FAQ.html. 67