• Nenhum resultado encontrado

Administracao e Seguranca Em Sistemas Linux

N/A
N/A
Protected

Academic year: 2021

Share "Administracao e Seguranca Em Sistemas Linux"

Copied!
149
0
0

Texto

(1)

-- Instalação e Atualização de Sistemas GNU/Linux -> DebianInstalação e Atualização de Sistemas GNU/Linux -> Debian Debian é

Debian é a distribuição com a distribuição com a maior a maior comunidadcomunidade de e de mantenedoresmantenedores/desenvolve/desenvolvedoresdores voltada exclusivame

voltada exclusivamente para nte para software livre.software livre. Aspectos gerais da plataforma GNU/Linux Aspectos gerais da plataforma GNU/Linux Conceitos fundamentais sobre o Linux Conceitos fundamentais sobre o Linux Tipos e características de shells

Tipos e características de shells

Tipos de sistema de arquivos do Linux Tipos de sistema de arquivos do Linux Instalação do Debian GNU/Linux Instalação do Debian GNU/Linux

Customizando, compilando e instalando um novo kernel em seu servidor  Customizando, compilando e instalando um novo kernel em seu servidor  Configurando e instalando um Boot Manager 

Configurando e instalando um Boot Manager  -- Uso do ShellUso do Shell

Reúne os principais e mais usados comandos de qualquer Sistema Operacional Linux Reúne os principais e mais usados comandos de qualquer Sistema Operacional Linux Comandos para buscar e

Comandos para buscar e visualizar documenvisualizar documentação no Linuxtação no Linux Informações sobre o Sistema

Informações sobre o Sistema Comandos

Comandos administratadministrativosivos

Trabalhando com o ambiente de trabalho do usuário no shell (alias e variáveis) Trabalhando com o ambiente de trabalho do usuário no shell (alias e variáveis) Introdução a programação em Shell Script

Introdução a programação em Shell Script

Trabalhando com modos de inicialização – processo init e runlevels Trabalhando com modos de inicialização – processo init e runlevels -- Configurando e gerenciando hardwareConfigurando e gerenciando hardware

Identificação de discos e partições em sistemas GNU/Linux Identificação de discos e partições em sistemas GNU/Linux Recomendaçõ

Recomendações para es para configuraçconfiguração e ão e armazenamentarmazenamento de o de dadosdados Gerenciando hardware (disquete, cd-rom, pendrive

Gerenciando hardware (disquete, cd-rom, pendrive e partições)e partições) Configuração de partições

Configuração de partições

Conhecendo os módulos de componentes da CPU Conhecendo os módulos de componentes da CPU Configuração de dispositivo Wireless LAN

Configuração de dispositivo Wireless LAN Configurando uma rede Wireless no Linux Configurando uma rede Wireless no Linux

-- Criando e manipulando texto com o Editor VICriando e manipulando texto com o Editor VI É um editor de

É um editor de textos muito poderoso, ele pode: abrir vários arquivos ao mesmo tempo,textos muito poderoso, ele pode: abrir vários arquivos ao mesmo tempo,  possui sistema de auto-correção, auto-identificação, seleção visual, macros, seleção  possui sistema de auto-correção, auto-identificação, seleção visual, macros, seleção

vertical de texto, uso de expressões regulares, sintaxe colorida, e muito mais... vertical de texto, uso de expressões regulares, sintaxe colorida, e muito mais... Modo de inserção e de

Modo de inserção e de comandoscomandos

Copiando e colando textos no vi (utilizando o mouse) Copiando e colando textos no vi (utilizando o mouse) Usando o modo visual do vi

Usando o modo visual do vi

Subcomandos para localização de texto Subcomandos para localização de texto Opções para substituição de textos Opções para substituição de textos

-- Criando e gerenciando contas de usuário e gruposCriando e gerenciando contas de usuário e grupos

Conhecimentos para um bom gerenciamento de contas de usuário. Conhecimentos para um bom gerenciamento de contas de usuário. Administraçã

Administração de o de usuáriosusuários Administraçã

Administração de o de gruposgrupos

Trabalhando com a senha em grupos Trabalhando com a senha em grupos Criando quot

Criando quotas para uas para usuários suários e grupose grupos

-- Permissões de acesso a recursos, arquivos, pastas e dispositivos do SistemaPermissões de acesso a recursos, arquivos, pastas e dispositivos do Sistema  Nesta etapa o participante irá compreender e

 Nesta etapa o participante irá compreender e manipular as permissões de acesso amanipular as permissões de acesso a recursos,arquivos, pastas e dispositivos do Sistema.

(2)

SUIDBIT SUIDBIT SGIDBIT SGIDBIT STICKYBIT STICKYBIT

-- Manipulação de pacotesManipulação de pacotes

Instalação de pacotes (programas) Instalação de pacotes (programas) Remoção de pacotes (programas) Remoção de pacotes (programas) Correção de pacotes

Correção de pacotes Procedimentos de backup Procedimentos de backup

Empacotamento e Compressão de arquivos Empacotamento e Compressão de arquivos

Descompactação e Desempacotamento de pacotes Descompactação e Desempacotamento de pacotes Compilação de programas a partir do código fonte Compilação de programas a partir do código fonte - Servidor X – Configurando o Ambiente Gráfico - Servidor X – Configurando o Ambiente Gráfico Instalação do X Window

Instalação do X Window Configurando o X

Configurando o X

Informações sobre os módulos que devem ser carregados Informações sobre os módulos que devem ser carregados Servidor remoto: Xnest

Servidor remoto: Xnest Gerenciadores de login Gerenciadores de login

Instalação de Ambientes Gráficos Instalação de Ambientes Gráficos

Instalando e Configurando o Ambiente Gráfico KDE Instalando e Configurando o Ambiente Gráfico KDE Instalando e Configurando o Ambiente Gráfico GNOME Instalando e Configurando o Ambiente Gráfico GNOME -- Serviços básicos de redeServiços básicos de rede

Configurando a rede Configurando a rede

Procedimento de check-list dos serviços de rede Procedimento de check-list dos serviços de rede Telnet x SSH

Telnet x SSH

Aplicando regra de acesso a

Aplicando regra de acesso a servidores no sistema: TCPWrappersservidores no sistema: TCPWrappers Agendando tarefas

Agendando tarefas

Trabalhando com servidor de sincronização de horário – Trabalhando com servidor de sincronização de horário – NTPNTP Gerenciando impressão no sistema

Gerenciando impressão no sistema

-- Clientes / Estações de trabalho GNU/LinuxClientes / Estações de trabalho GNU/Linux

Fornece habilidades e o conhecimento necessário para fazer a integração entre Windows Fornece habilidades e o conhecimento necessário para fazer a integração entre Windows e Linux..

e Linux..

Compartilham

Compartilhamento de arquivos em ento de arquivos em rede Linuxrede Linux

Compartilhamento de arquivos em rede mista (Windows x Linux) Compartilhamento de arquivos em rede mista (Windows x Linux) Configuração do Servidor NFS

Configuração do Servidor NFS Redes Windows x Redes Linux Redes Windows x Redes Linux Instalação do Samba

Instalação do Samba Configurando o Samba Configurando o Samba Compartilhand

Compartilhando uma o uma estação GNU/Linux com uma estação GNU/Linux com uma estação Windowsestação Windows Configurando um PDC com Samba

Configurando um PDC com Samba Informações importantes

Informações importantes

O curso tem foco na distribuição Debian, considerada a mais estável e muito tradicional, O curso tem foco na distribuição Debian, considerada a mais estável e muito tradicional,  possibilitando um ambiente que permite ao aluno capacitar-se não somente para o Linux  possibilitando um ambiente que permite ao aluno capacitar-se não somente para o Linux

mais também para outros

mais também para outros sistemas Like Unix;sistemas Like Unix;

 Na sala de aula o curso é ministrado em Debian, distribuição com a maior comunidade  Na sala de aula o curso é ministrado em Debian, distribuição com a maior comunidade

de mantenedores/desenvo

(3)

SUIDBIT SUIDBIT SGIDBIT SGIDBIT STICKYBIT STICKYBIT

-- Manipulação de pacotesManipulação de pacotes

Instalação de pacotes (programas) Instalação de pacotes (programas) Remoção de pacotes (programas) Remoção de pacotes (programas) Correção de pacotes

Correção de pacotes Procedimentos de backup Procedimentos de backup

Empacotamento e Compressão de arquivos Empacotamento e Compressão de arquivos

Descompactação e Desempacotamento de pacotes Descompactação e Desempacotamento de pacotes Compilação de programas a partir do código fonte Compilação de programas a partir do código fonte - Servidor X – Configurando o Ambiente Gráfico - Servidor X – Configurando o Ambiente Gráfico Instalação do X Window

Instalação do X Window Configurando o X

Configurando o X

Informações sobre os módulos que devem ser carregados Informações sobre os módulos que devem ser carregados Servidor remoto: Xnest

Servidor remoto: Xnest Gerenciadores de login Gerenciadores de login

Instalação de Ambientes Gráficos Instalação de Ambientes Gráficos

Instalando e Configurando o Ambiente Gráfico KDE Instalando e Configurando o Ambiente Gráfico KDE Instalando e Configurando o Ambiente Gráfico GNOME Instalando e Configurando o Ambiente Gráfico GNOME -- Serviços básicos de redeServiços básicos de rede

Configurando a rede Configurando a rede

Procedimento de check-list dos serviços de rede Procedimento de check-list dos serviços de rede Telnet x SSH

Telnet x SSH

Aplicando regra de acesso a

Aplicando regra de acesso a servidores no sistema: TCPWrappersservidores no sistema: TCPWrappers Agendando tarefas

Agendando tarefas

Trabalhando com servidor de sincronização de horário – Trabalhando com servidor de sincronização de horário – NTPNTP Gerenciando impressão no sistema

Gerenciando impressão no sistema

-- Clientes / Estações de trabalho GNU/LinuxClientes / Estações de trabalho GNU/Linux

Fornece habilidades e o conhecimento necessário para fazer a integração entre Windows Fornece habilidades e o conhecimento necessário para fazer a integração entre Windows e Linux..

e Linux..

Compartilham

Compartilhamento de arquivos em ento de arquivos em rede Linuxrede Linux

Compartilhamento de arquivos em rede mista (Windows x Linux) Compartilhamento de arquivos em rede mista (Windows x Linux) Configuração do Servidor NFS

Configuração do Servidor NFS Redes Windows x Redes Linux Redes Windows x Redes Linux Instalação do Samba

Instalação do Samba Configurando o Samba Configurando o Samba Compartilhand

Compartilhando uma o uma estação GNU/Linux com uma estação GNU/Linux com uma estação Windowsestação Windows Configurando um PDC com Samba

Configurando um PDC com Samba Informações importantes

Informações importantes

O curso tem foco na distribuição Debian, considerada a mais estável e muito tradicional, O curso tem foco na distribuição Debian, considerada a mais estável e muito tradicional,  possibilitando um ambiente que permite ao aluno capacitar-se não somente para o Linux  possibilitando um ambiente que permite ao aluno capacitar-se não somente para o Linux

mais também para outros

mais também para outros sistemas Like Unix;sistemas Like Unix;

 Na sala de aula o curso é ministrado em Debian, distribuição com a maior comunidade  Na sala de aula o curso é ministrado em Debian, distribuição com a maior comunidade

(4)

D

Deb

eb ia

ia n

n G

GNU

NU //Li

Li nu

nu x

x

In st al açã o

In sta la çã o

e at

e at ual

ualiz

izaç

aç ão

ão

Sistema

Sistema

Operacional

Operacional

(5)

Aspectos gerais da plataforma GNU/Linux Projeto Debian

O Projeto Debian é um grupo mundial de voluntários que se esforçam para  produzir um sistema operacional livre que é composto inteiramente por software livre. O produto principal do projeto é a distribuição Debian GNU/Linux, que inclui o kernel do sistema operacional Linux e centenas de aplicações pré-empacotadas. Vários tipos de  processadores são suportados, incluindo o Intel i386 e superior, Alpha, ARM, Motorola 68k, MIPS, PowerPC, Sparc, e UltraSparc, HP PA-RISC, IBM S/390 e Hitachi SuperH. O Projeto Debian foi oficialmente fundado por Ian Murdock em 16 de Agosto de 1993, com a pretensão de que o Debian fosse uma distribuição criada abertamente, no mesmo espírito do Linux e do GNU. Naquele tempo, o conceito de uma "distribuição" de Linux era novo. A criação do Debian teve o apoio do projeto GNU da FSF ( Free Software Foundation ou Fundação para o Software Livre) durante um ano (Novembro de 1994 a Novembro de 1995).

A distribuição Debian pretendia ser cuidadosamente e conscientemente criada em conjunto e ser mantida e suportada com similar cuidado. Isso começou com um  pequeno e forte grupo de hackers do Software Livre e gradualmente cresceu se tornando

uma grande e bem organizada comunidade de desenvolvedores e usuários.

A pronúncia oficial de Debian é 'débian'. O nome vem do nome do criador do Debian, Ian Murdock, e sua esposa, Debra.

Debra + Ian = Debian

Ian Murdock 

Detalhes da distribuição Debian:

 É a única distribuição que é aberta para que todo desenvolvedor e usuário

 possam contribuir com seu trabalho;

 É o único distribuidor significativo de Linux que não é uma entidade comercial;  É o único grande projeto com uma constituição, um contrato social e

documentos com políticas para organizar o projeto;

 A Debian também é a única distribuição que é micro-empacotada, usando

informações detalhadas de dependência de pacotes para garantir a consistência do sistema em atualizações.

(6)

Backups são automatizados através de ferramentas e a documentação detalha todos os elementos chaves do Debian de uma forma aberta e visível.

O Projeto de Documentação do Debian pode ser encontrado neste endereço:

http://www.debian.org/doc/index.pt.html .

Projeto GNU

O Projeto GNU foi iniciado em 1984 para desenvolver um sistema operacional completo, compatível com o Unix, que fosse software livre: o sistema GNU. (GNU é um acrônimo recursivo para “GNU Não é Unix” e é pronunciado como “guh-noo.”) Variantes do sistema operacional GNU, que incluem o kernel Linux, são hoje amplamente utilizadas; embora estes sistemas sejam frequentemente chamados de “Linux”, eles seriam mais corretamente chamados de sistemas GNU/Linux.

Se necessário obter mais informações, este é o endereço:

http://www.gnu.org/home.pt.html

Quem é quem no GNU?

Este endereço está reservado para o nome de quem escreve e escreveu software livre para o Projeto GNU:

http://www.gnu.org/people/people.pt.html

Richard M. Stallman, criador e líder do projeto GNU.

O Linux O que é o Linux?

(7)

feito por Linus Torvalds, do Departamento de Ciência da Computação da Universidade de Helsinki, Finlândia, junto com um grupo de hackers pela Internet. O Linux segue o  padrão POSIX, que é usado em estações UNIX.

Linus Torvalds iniciou cortando (hacking) o kernel como um projeto particular, inspirado em seu interesse no Minix, um pequeno sistema UNIX desenvolvido por  Andrew Tannenbaum. Ele se limitou a criar, em suas próprias palavras, "um Minix melhor que o Minix". E depois de algum tempo de trabalho em seu projeto, sozinho, ele enviou a seguinte mensagem para comp.os.minix:

Você suspira por melhores dias do Minix-1.1, quando homens serão homens e escreverão seus próprios "device drivers" ? Você está sem um bom projeto e esta morrendo por colocar as mãos em um S.O. no qual você possa modificar de acordo com suas necessidades ? Você está achando frustrante quando tudo trabalha em Minix ? Chega de atravessar noites para obter programas que trabalhem correto ? Então esta mensagem pode ser exatamente para você.

Como eu mencionei a um mês atrás, estou trabalhando em uma versão independente de um S.O. similar ao Minix para computadores AT-386. Ele está, finalmente, próximo do estágio em que poderá ser utilizado (embora possa não ser o que você esteja esperando), e eu estou disposto a colocar os fontes para ampla distribuição. Ele está na versão 0.02... contudo eu tive sucesso rodando bash, gcc, gnu-make, gnu-sed, compressão, etc. nele.

Linus Benedictus Torvalds

  No dia 5 de outubro de 1991 Linus Torvalds anunciou a primeira versão "oficial" do Linux, versão 0.02. Desde então muitos programadores têm respondido ao seu chamado, e têm ajudado a fazer do Linux o Sistema Operacional que é hoje, uma grande maravilha.

Ele inclui proteção entre processos, carregamento por demanda, redes TCP/IP, alem de nomes de arquivos com até 255 caracteres, multitarefa real, suporte a UNICODE, bibliotecas compartilhadas, memória virtual, etc.

Conceitos fundamentais sobre o Linux

O Linux como qualquer sistema baseado em Unix apresenta uma lógica de utilização que preserva a segurança do sistema. Esse é um dos aspectos fundamentais que o tem tornado o sistema operativo com maior crescimento no mundo.

(8)

Assim, na lógica nativa do Linux existe uma divisão entre o administrador da máquina (ou superusuário) e o usuário sem privilégios.

 No Linux um usuário pode ser identificado de três formas diferentes:

Login do usuário - é o nome que o usuário tem no sistema e que lhe serve para a ele ter acesso quando introduzido corretamente com uma password.

Nome do usuário - é o nome de batismo que o usuário tem. Por exemplo, “Linus Torvalds”. Este nome é raramente utilizado, serve somente para acompanhar a leitura do nome completo do usuário.

ID do usuário - (User ID) é um número atribuído ao utilizador no momento da criação da sua conta de sistema. É utilizado geralmente pelas aplicações para se referirem a um usuário. Por norma, o root tem o ID 0 (zero) e um usuário pode ter, por  exemplo, o número 1001 como ID.

O superusuário ou root é o administrador do sistema. Apenas ele poderá executar  alguns comandos e tarefas a que o usuário normal não tem acesso.

Assim foi definido com o objetivo de um usuário não poder comprometer a estabilidade do sistema realizando operações que o coloque em perigo.

O superusuário tem uma área de trabalho definida a partir da raiz do sistema: /root.

O usuário é tipicamente uma pessoa que trabalhará regularmente no sistema, tendo uma área própria que se encontra no diretório /home/[nome do usuário].

Um usuário normal não consegue alterar, apagar, sobrescrever,... arquivos de sistema. Nenhum programa executado pelo mesmo consegue.

Assim sendo, ninguém se preocupa em fazer vírus para o Linux, pois o vírus não poderá  propagar-se devido às permissões sobre os arquivos lhe ser negado.

Todos os arquivos criados pelo usuário serão guardados na sua própria área e outros usuários não têm acesso, a não ser que o superusuário o defina.

A estrutura de diretórios no Linux

A raiz do Linux fica no diretório / e dentro deste diretório existem vários outros,

cada um tem uma descrição.

A estrutura de diretórios no Linux é basicamente dividida assim:

Diretório Descrição

/bin Arquivos executáveis que são usados pelo sistema freqüentemente. Aqui encontramos por exemplo os interpretadores de comandos ( , ,

(9)

Diretório Descrição

etc), o df, chmod, date, kill, dmesg, pwd, ls e muito mais. São os

comandos essenciais :)

/boot  Neste diretório ficam os arquivos de boot, como os mapas de boot e asimagens do kernel. /dev Este é um diretório que carrega consigo todos os arquivos-dispositivos.

/etc

Arquivos de configuração do Linux. Este é o diretório que carrega todas as configurações dos principais (senão todos) os programas do Linux. Ele contém por exemplo os arquivos de usuários e senhas, arquivos de inicialização, configurações de rede e mais uma bolada de configuração  pra deixar qualquer um doido.

/home Diretório dos usuários. Cada usuário tem um diretório dentro destediretório :)

/lib Algumas bibliotecas essenciais para o funcionamento do Linux e tambémos módulos do kernel.

/proc Este é um diretório especial, ele contém informações que o kernel gera ealgumas configurações também. /root É um diretório HOME . Só que aqui é o do usuário administrador (root ).

/sbin

Executáveis que têm funções administrativas, geralmente usados pelo

root . Aqui se encontram programas para verificar e criar sistemas de

arquivos, optimizar o uso do HD, configurar dispositivos, gerenciar  módulos do kernel, etc.

/tmp Diretório temporário. Neste diretório, vários utlitários criam arquivos quesó serão usados por um tempinho e depois descartados. Não há nenhuma informação importante aqui, pois pode ser acessado por qualquer usuário.

/usr  Um dos maiores diretórios, este contém as bibliotecas e arquivos geraisdos vários programas instalados no sistema. Sua estrutura é bem parecida com a raiz em sí. Ele também tem um lib, bin,sbin e por aí vai.

/var  Informações variáveis que estão sempre em constante mudança, comoarquivos de

(10)

Tipos e características de shells

O shell é o programa que permite a interação do usuário com o sistema, em modo texto. Em UNIX/Linux existem vários tipos de shell, com funcionalidades diversas. Os principais são:

• Bourne shell (sh) - o mais antigo, está presente em todos os sistemas, pois é necessário para diversas operações administrativas.

• C shell (csh) - de sintaxe mais simples, é mais fácil de usar e por isso preferido  pelos usuários iniciantes.

• Korn shell (ksh) - mistura características de ambos os anteriores.

• BASH Shell (bash) - Bourne-Again Shell, é uma extensão do sh e utilizado como padrão nas máquinas linux.

Algumas características do shell no Linux:

  No prompt do Linux, quando existe com o símbolo $, isto quer dizer que o login

foi feito com um usuário normal. Se estiver logado com o root, ao invés do símbolo $, no final do prompt existirá o símbolo #.

  Nos nomes dos arquivos, os caracteres MAIÚSCULOS e minúsculos fazem a

diferença. Isso quer dizer que os arquivos: PROGRAMA.tar.gz e  programa.tar.gz, são dois arquivos completamente diferentes. Assim como: ls é

o comando na escrita certa e LS é um comando que não existe.

   No Linux, não existem extensões .EXE, .COM especial para programas

executáveis. Ao invés disso, os arquivos têm permissão de executável ou não.

 Além de arquivos comuns, no Linux existem os chamados links simbólicos, que

são nada mais nada menos que uma espécie de atalhos.

 O Linux é um sistema multitarefa, podendo ser acessado por vários consoles ao

mesmo tempo, assim como pode ser rodado vários programas ao mesmo tempo. Para mudar o console do 1 a 6, utilize Alt-N, onde o N corresponde ao número

do console. Exemplo: Alt-F1, Alt-F2, Alt-F3, Alt-F4, Alt-F5 e Alt-F6.

 Depois de logado, se quiser sair, utilize o comando exit, ou o comando logoutou ainda a combinação de teclas Ctrl-D.

 Se algum programa estiver rodando no seu console, aperte as teclas Ctrl-Z para

(11)

o comando fg. Para listar os programas suspendidos na sessão atual, utilize o

comandojobs.

 Um recurso muito interessante nas shells do Linux, é o tab completion. Com ele

você pode completar comandos ou nomes de arquivos mais rapidamente sem  precisar digitar tudo. Para utilizar esse recurso, basta apenas digitar as primeiras letras do comando ou arquivo e apertar a tecla Tab. O Linux irá completar o comando ou arquivo. Caso haja mais de um arquivo começando com as letras digitadas, apertando Tab mais uma vez irão ser exibidas todas as opções.

Referência:

The Linux Manual

Tipos de sistema de arquivos do Linux

Um sistema de arquivos é um conjunto de estruturas lógicas e de rotinas, que  permitem ao sistema operacional controlar o acesso ao disco rígido. Diferentes sistemas operacionais usam diferentes sistemas de arquivos. Os sistemas de arquivos do GNU/Linux evoluem de forma constante, juntamente com o kernel e outros subsistemas. Muitas melhorias são introduzidas em todos os formatos de sistemas suportados pelo GNU/Linux, tornando os mesmos: mais seguros, rápidos e estáveis.

O sistema de arquivos é independente do hardware e da BIOS. É por meio de um sistema de arquivos que ocorre a gravação e a recuperação dos dados em um dispositivo de armazenamento em um computador. O sistema de arquivos é que define o modo como os arquivos são estruturados, nomeados, acessados, utilizados, protegidos e manipulados pelo sistema operacional.

Os arquivos são armazenados, no sistema de arquivos, em diretórios que são uma subdivisão lógica e que funcionam como repositórios de arquivos ou de outros diretórios.

O conjunto de diretórios e arquivos forma um sistema de arquivos raiz, ou "árvore" de diretórios, a mesma deve seguir um padrão estabelecido. O sistema de arquivos é hierárquico e admite que diversos dispositivos sejam mapeados e utilizados a  partir do diretório raiz. Para o usuário toda essa estrutura é vista de forma única.

A característica de recuperação implementada em sistemas de arquivos é chamada de "journaling" (registro de ações). Sistemas que não possuem "journal" são

(12)

verificação de integridade é realizada em cada arquivo do sistema. Nas partições que  possuem milhares de arquivos essa verificação pode levar horas.

Os sistemas de arquivos com suporte a "journal" são recomendados por  aumentarem a disponibilidade (High Availability - HA) em servidores GNU/Linux. A alta disponibilidade é medida pelo tempo em que o servidor se encontra fora de serviço  por falhas no sistema operacional ou no hardware.

Quanto menor o tempo em que o sistema estiver indisponível, maior é o índice de disponibilidade, medido em uma escala de casas decimais que tende a se aproximar  de 100%.

Características de alguns sistemas de arquivos: EXT3

⇒ O sistema de arquivos EXT3 é uma versão do EXT2;

⇒ O ext3 tem as mesmas características do EXT2, mas com suporte journaling; ⇒ A evolução tornou o EXT3 um sistema de arquivos muito estável e robusto; ⇒ Podemos converter um sistema de arquivos EXT2 para EXT3, adicionado

suporte a journaling, e também podemos converter um sistema de arquivos EXT3 para EXT2, removendo o suporte a journaling.

ReiserFS

⇒ O sistema de arquivos ReiserFS foi criado recentemente; ⇒ Atualmente quase todas as distribuições Linux o suportam;

⇒ Sua performance é muito boa, principalmente para um número muito grande de

arquivos pequenos;

⇒ ReiserFS também possui suporte a journaling.

JFS

⇒ O JFS (Journaling FileSystem) é um sistema de arquivos desenvolvido pela

IBM, disponível em licença open-source, com o intuito de rodar nos "UNIXes" que a IBM vendia;

⇒  No início o JFS sofreu uma perda de credibilidade devido a constantes

(13)

⇒ Extremamente rápido e permite trabalhar com uma quantia de dados muito

superior aos demais sistemas de arquivos;

⇒ O sistema de arquivos JFS também usa a estrutura inode para armazenar a

localização dos blocos de cada arquivo nas estruturas físicas do disco, a versão JFS2 armazena esses inodes em uma árvore binária para acelerar o acesso a essas informações, esses blocos podem variar de 512 a 4096 bytes, a alocação dos inodes é feita conforme vai sendo necessário.

⇒ Além de possuir journal ele permite que as partições do sistema sejam

redimensionadas sem que seja necessário desligar o computador; XFS

⇒ XFS é um sistema de arquivos muito rápido na gravação;

⇒ Desenvolvido originalmente pela Silicon Graphics e posteriormente

disponibilizado o código fonte;

⇒ Considerado um dos melhores sistemas de arquivos para banco de dados;

⇒ Possui journaling de metadados que vem com um robusto conjunto de funções e

é otimizado para escalabilidade;

⇒ É recomendado usar este sistema de arquivos em sistemas rodando Linux com

equipamento SCSI de ponta e/ou armazenamento em canais de fibra e fonte de energia sem interrupção;

⇒ Pelo fato de o XFS criar muitos caches de dados em uso na memória RAM,

 programas mal desenhados podem perder uma grande quantidade de dados se o sistema for desligado sem aviso.

LVM

⇒ LVM é um acrônimo para a expressão inglesa Logical Volume Management

  para especificar um padrão de gerenciamento de partições em disco IDE/SCSI/FC;

⇒ Foi desenvolvido inicialmente pela IBM, e outras empresa e instituições, como:

HP e a Open Group;

(14)

⇒ A vantagem é permitir o redimensionamento das áreas de modo dinâmico, ou

seja, com o sistema operacional sendo utilizado;

⇒ A desvantagem é que por ser um único disco virtual, a recuperação de dados em

uma eventual pane no sistema de armazenamento é bastante prejudicada. Inode

Um inode é um identificador único que um arquivo recebe, nele contém uma lista com 12 blocos diretos de dados que o arquivo deve ter, se ele possui mais de 12  blocos, ele segue uma regra para gravar esses blocos no disco e poder achar mais tarde.

Os dados do arquivo são armazenados em unidades chamadas 'blocos'. Estes   blocos podem ser numerados seqüencialmente. Um arquivo também tem um inode.

Como os blocos, os inodes são numerados seqüencialmente, embora tenham uma seqüência diferente. Uma entrada de diretório consiste do nome do arquivo e um número de inode. O inode também armazena o local dos blocos de dados.

* Os números dos blocos dos primeiros 12 blocos de dados estão armazenados diretamente no inode. Estes às vezes são chamados de blocos diretos.

* O inode contém o número do bloco de um bloco indireto. Um bloco indireto contém os números de blocos de 256 blocos de dados adicionais.

* O inode contém o número do bloco de um bloco duplamente indireto. Um bloco duplamente indireto contém os números de blocos de 256 blocos indiretos adicionais.

* O inode contém o número do bloco de um bloco três vezes indireto. Um bloco três vezes indireto contém os números de blocos de 256 blocos duplamente indiretos adicionais.

Referências:

Guia Foca GNU/Linux – Discos e Partições

http://focalinux.cipsga.org.br/guia/inic_interm/ch-disc.htm

Wikipédia

(15)

Instalação do Debian Sarge

 Antes de iniciar o processo de instalação é necessário configurar a BIOS para

que a inicialização do computador ocorra pelo drive de CD-ROM;

 Leia sempre e atentamente todas as telas do processo de instalação. Elas trazem

informações importantes para a compreensão do processo;

 Insira o CD;

 Logo na primeira tela do processo deverá ser feita a opção do tipo de instalação

a ser realizada. Como estamos em um curso básico, você deve digitar: linux26, o mesmo é o modo de instalação automática.

Obs: também é possível entrar com a palavra: expert26, que é o processo manual mas a orientação deste tipo de instalação não será repassada neste momento.

(16)

 Após digitar linux26, pressione a tecla ENTER:

Obs: A tecla ENTER deverá ser pressionada sempre que desejar prosseguir.

 O próximo passo é selecionar o idioma a ser usado, em seguida, pressione

(17)

 Selecione o layout do teclado:

(18)

 Continuação da tela:

(19)

 Configuração automática da rede:

(20)

 Selecione a opção continuar, pressione ENTER.

 Confirme a opção: Configurar a rede manualmente. Pode ocorrer de você não

  precisar ajustar esta máquina a uma rede de computadores, neste caso você seleciona Não configurara rede agora e logo em seguida será dado início ao  particionamento.

(21)

 Digite o IP e prossiga a instalação:

(22)

 Digite o gateway e prossiga a instalação:

(23)

 Para terminar de configurar a rede, digite o nome de domínio e prossiga a

instalação. Será exibida a tela para inicial do particionador:

(24)

 Selecione a opção: Apagar todo o disco.

(25)

 Selecione Criar uma nova partição:

(26)

 Selecione como tipo de partição Primária:

(27)

 Selecione ponto de montagem, pressione ENTER e em seguida selecione

 /boot.

Obs: Tendo como referência a imagem abaixo, no kernel anterior era necessário criar  uma partição chamada /boot. Hoje em dia, com o kernel 2.6 não é mais necessário, o sistema já o cria automaticamente. O mesmo passará a existir dentro do diretório /.

(28)

 A seguir confirme a opção Finalizar a configuração da partição:

 Temos uma partição criada, a partição: /boot. Neste momento realize os mesmos

 passos e crie uma partição chamada  / (Raiz). A mesma terá o tamanho de 400 MB.

(29)

  No Espaço Livre, teremos de criar algumas partições lógicas, sempre ao início

do espaço disponível.

 As partições lógicas a serem criadas são:

/usr 3.0 GB /home 3.1 GB

 Após o término do particionamento, selecione Finalizar o particionamento e

(30)

 Após a confirmação, será dado o início da Instalação do Sistema básico Debian.

(31)

 Continuação da instalação do GRUB:

(32)

 Instalação finalizada remova a mídia de instalação e confirme a opção

Continuar.

 Abaixo, a tela de reinicialização da máquina, após isso o sistema passará a ser 

(33)

 Após a reinicialização do sistema, será exibida a seguinte tela:Após a reinicialização do sistema, será exibida a seguinte tela:

 Confirme a opçãoConfirme a opção OKOK.. 

(34)

 Selecione seu fuso horário:Selecione seu fuso horário:

(35)

 Selecione a cidade ou fuso horário:Selecione a cidade ou fuso horário:

(36)

 Digite um nome para a conta de usuário a ser usada para atividades não

administrativas:

(37)

 Após digitar a senha, será necessário inserir o CD 2 e confirmar  OK.

 Logo a seguir, o sistema irá ler as informações do CD2, como mostra a imagem

(38)

 Após o término da leitura do CD2, será o momento de retira-lo e inserir o CD3.  Após inserir o CD3, confirme a opção SIM.

 Também será feita a leitura das informações do CD3, logo a seguir teremos a

(39)

  Neste momento, o sistema já possui as informações até o CD3. Os três cds são

necessários para a instalação do sistema. Na tela acima, que será exibida, você confirma a opção NÃO.

 Se houver a necessidade de adicionar a leitura de outro(s) cd(s), selecione a

opção SIM. Ao término da leitura da mídia, selecione NÃO.

 Será exibida a tela de login. Você terá de entrar com o usuário e a senha:

---Customizando, compilando e instalando um kernel Linux em seu servidor

O Kernel representa a camada mais baixa de interface com o Hardware, sendo responsável por gerenciar os recursos do sistema computacional como um todo. É no kernel que estão definidas funções para operação com periféricos (mouse, discos, impressoras, interface serial/interface paralela), gerenciamento de memória, entre outros. O kernel é um conjunto de programas que fornece para os programas de usuário uma interface para utilizar os recursos do sistema.

(40)

Antes de tudo:

 Quais são os requerimentos mínimos de hardware?

Varia de acordo com a arquitetura e a versão do kernel. Mas tenha em mente o seguinte para ter um sistema mínimo funcional: 16 MB de RAM (memória física), 100 MHz de clock de processamento e 100 MB de espaço em disco (memória virtual).

 Qual é o processador? Qual é o clock? Qual é a arquitetura? # cat /proc/cpuinfo

# arch

 Qual a quantidade de memória? # cat /proc/meminfo

Baixando o pacote

Baixe o pacote que contém o código fonte mais atualizado do kernel Linux da série 2.6 em http://www.kernel.org.

Fazendo o download com o comando wget:

# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.x.tar.bz2

Como superusuário (faça o login no sistema com o usuário root), descompacte e desempacote o arquivo assim:

# tar xvjf linux-2.6.x.tar.bz2 -C /usr/src

Crie o link simbólico /usr/src/linux apontando para /usr/src/linux-2.6.x assim:

# ln -sf /usr/src/linux-2.6.x /usr/src/linux

Acesse /usr/src/linux assim:

# cd /usr/src/linux

Este será o diretório raiz de compilação, ou seja, o diretório base para os passos seguintes.

Caso já exista uma compilação anterior, execute o comando 'make mrproper'  para retornar ao padrão os arquivos de configuração do kernel.

(41)

Edite o arquivo Makefile para personalizar a versão de sua compilação. Altere a variável EXTRAVERSION na quarta linha para um valor que deseje como por exemplo -i386-mwsf-1. Salve este arquivo.

VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = x

EXTRAVERSION = -i386-mwsf-1

Quais são os Softwares que preciso para iniciar a compilação?

O arquivo /usr/src/linux/Documentation/Changes contém uma lista do software mínimo que deve estar corretamente instalado na máquina antes de iniciar a compilação.   Não inicie a compilação do kernel sem antes obtiver a certeza de que o mínimo de

software está instalado. Existe um script que pode auxiliar nisto. O script /usr/src/linux/scripts/ver_linux imprime na tela uma lista do software mínimo e suas respectivas versões que estão instalados na máquina. Compare esta lista com a lista oferecida pelo documento /usr/src/linux/Documentation/Changes. Para executar este script, faça assim:

# sh scripts/ver_linux

Será obrigatório ter os itens da lista instalados, apenas aqueles que o kernel que você está configurando suportar.

O arquivo /usr/src/linux/.config armazena a configuração do kernel. Basicamente, este arquivo descreve o que deverá ser incorporado ao kernel (y) e o que deverá ser criado como módulo (m). Incorpore ao kernel apenas o necessário. O restante necessário, configure como módulo. O que não for necessário, retire. Por exemplo, se você não tem um determinado dispositivo em sua máquina, retire da configuração o suporte. Isto possibilita uma maior performance por parte do sistema.

O kernel Linux pode ser modular, ou seja, o suporte básico fica incorporado ao kernel constantemente e o suporte a outros dispositivos, como por exemplo, uma placa de som, pode ser configurado como módulo. Assim sendo, este módulo da placa de som é carregado na memória e plugado ao kernel apenas quando for necessário, ou seja,

(42)

apenas quando o usuário estiver utilizando som no sistema. Isto otimiza o sistema, utilizando seus recursos sabiamente.

Existe uma configuração padrão para cada tipo de arquitetura de hardware no diretório /usr/src/linux/arch. O nome do arquivo é defconfig. Supondo que sua arquitetura de hardware seja i386, faça uma cópia do arquivo defconfig para o diretório raiz de compilação com o nome .config:

# cp -f /usr/src/linux/arch/i386/defconfig /usr/src/linux/.config

Em alguns casos de arquitetura, pode existir um diretório configs contendo configurações específicas e testadas para cada modelo de máquina.

Sendo isso ocorrer, ao iniciar a ferramenta de configuração, já existirá alguns itens marcados. Não será necessário iniciar do zero uma configuração.

Execute a ferramenta de configuração assim:

# make menuconfig

ou

# make xconfig (modo gráfico)

Observe a existência de uma configuração já pré-definida, se deve ao fato de você ter copiado o arquivo defconfig para o diretório raiz de compilação com o nome de .config. Algumas dicas:

 Marque com * itens que serão incorporados ao arquivo do kernel como por 

exemplo, sistemas de arquivos que você utiliza ou vai utilizar em suas partições.

 Marque com m itens que serão criados como módulo, ou seja, serão plugados ao

kernel apenas quando houver necessidade de uso.

Esta é uma etapa demorada e deve ser feito com atenção. Acompanhe o help de cada item para saber o que está incluindo ou não.

Após a configuração do kernel, vamos compilá-lo realmente. Para isto, execute o comando:

# make

Este passo pode levar minutos ou de um dia para o outro. Depende do poder da máquina aonde você vai compilar.

(43)

Após a compilação do kernel, vamos instalar os módulos com o seguinte comando:

# make modules_install

Vamos copiar o kernel (bzImage) para o diretório /boot. O arquivo está no diretório de acordo com a arquitetura que você estiver utilizando. Se você compilou o kernel em um PC, o que é mais comum, então execute o comando para copiar:

# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.x-i386-mwsf-1

 Nomeie os arquivos de acordo com a versão do kernel que está compilando e de acordo com a arquitetura de hardware.

Agora vamos copiar o arquivo System.map para /boot:

# cp /usr/src/linux/System.map /boot/System.map-2.6.x-i386-mwsf-1

Criando um link simbólico para System.map:

# ln -sf /boot/System.map-2.6.x-i386-mwsf-1 /boot/System.map

Agora vamos copiar o .config para /boot:

# cp /usr/src/linux/.config /boot/config-2.6.x-i386-mwsf-1

Vamos criar um arquivo initrd assim:

# mkinitrd -o /boot/initrd-2.6.x-i386-mwsf-1.img 2.6.x

A opção (-o arquivo) diz onde salvar o arquivo initrd gerado. A próxima opção de parâmetro é a versão do kernel que você compilou.

O initrd é utilizado mais para kernel's genéricos que acompanham as distribuições Linux. As distribuições são lançadas com kernel's genéricos para suportar  o maior número de hardware possível.

Como o kernel novo foi instalado como um pacote Debian, é uma boa hora pra usar mais uma facilidade da Debian: update-grub (se você ainda usa lilo, é uma boa hora pra mudar :).

(44)

Se for instalá-lo na MBR, isso cria um diretório /boot/grub. Depois disso, é só rodar "update-grub" que ele gera um /boot/grub/menu.lst pra você. Se você já possui um menu.lst, faça o backup e remova-o, a não ser que você tenha muitas modificações nele. Edite o menu.lst, altere configurações como:

# kopt=root=/dev/hda3 ro # groot=(hd0,0)

De acordo com seu sistema está configurado. Note que as linhas devem   permanecer comentadas ("#" no começo da linha), essas são meta-configurações.

Depois de acertar isso, rode update-grub de novo e... Ele gera as entradas no menu do grub automaticamente, a partir das imagens de kernel instaladas e das meta-configurações que você fez.

Reinicie o Sistema

Configurando e instalando um Boot Manager

É um programa que gerencia as partições que serão inicializadas em um sistema computacional. As versões atuais deste programa são instaladas no Setor de Boot Mestre (MBR - Master Boot Record) do disco rígido, fazendo com que um menu interativo seja apresentado toda a vez em que você inicializa o micro, perguntando ao usuário que partição ele deseja para boot. Se existir sistemas operacionais diferentes instalados em partições separadas, conseqüentemente terá de escolher qual sistema operacional o micro carregará em memória.

Iremos, portanto, configurar o nosso boot loader (responsável por carregar o sistema) para que o kernel seja chamado na inicialização, juntamente com o atual.

LILO (Linux Loader)

É um aplicativo responsável pela carga (boot) do sistema operacional na máquina, sendo que você pode trabalhar com ele tanto para discos IDE ou SCSI. Ele é considerado o gerenciador de boot padrão dos sistemas Linux.

(45)

Editando seu arquivo de configuração:

# nano /etc/lilo.conf

Após terminar de instalar, execute o liloconfig. Editando o seu arquivo de configuração:

# nano /etc/lilo.conf

Adicione as seguintes linhas ao final do arquivo:

---image=/boot/[caminho da imagem gerada]

label=”Novo Kernel”

initrd=/boot/initrd-2.6.x-i386-mwsf-1.img read-only

---Para que as alterações sejam lidas pelo sistema, precisamos dar o comando lilo:

# lilo

GRUB

GRUB (GRant Unified Bootloader) é um outro gerenciador de boot, desenvolvido pelo projeto GNU, também muito utilizado pelos sistemas Linux.

Assim como o Lilo, o Grub possui um arquivo centralizado para configurar o menu utilizado por ele. Vamos editar este no arquivo:

# nano /boot/grub/menu.lst

Adicione as seguintes linhas ao final do arquivo:

(46)

---root (hd0,0) kernel /boot/vmlinuz-2.6.x-i386-mwsf-1 initrd /boot//initrd-2.6.x-i386-mwsf-1.img root=/dev/hdx1 ro savedefault boot ---Depois de alterar o arquivo, precisamos atualizar o GRUB na MBR:

# grub-install /dev/hdx

(47)

U s o

d o

S hell

Sistema Operacional GNU/Linux SHELL

(48)

Usando o Shell Usando o Shell Qual é seu shell?

Qual é seu shell?

#

# echo $SHELLecho $SHELL

Abrindo uma nova sessão para um usuário. Esta nova sessão assume o perfil do Abrindo uma nova sessão para um usuário. Esta nova sessão assume o perfil do usuário, com todas as características associadas a ele:

usuário, com todas as características associadas a ele:

# login # login

Tem como função desconectar um usuário de uma determina sessão: Tem como função desconectar um usuário de uma determina sessão:

# logout # logout

O objetivo é encerrar uma sessão de trabalho: O objetivo é encerrar uma sessão de trabalho:

# exit # exit Desligar: Desligar: # halt # halt # shutdown -h now # shutdown -h now # shutdown 18:00 # shutdown 18:00 # shutdown -h 10 # shutdown -h 10 # init 0 # init 0 #

# shutdown shutdown <opções> <opções> <hora> <hora> <mensagem><mensagem>

Reiniciar: Reiniciar: # reboot # reboot # shutdown -r now # shutdown -r now # shutdown -r 15 now # shutdown -r 15 now # init 6 # init 6

Exibe a quantidade de tempo desde a última reinicialização do sistema: Exibe a quantidade de tempo desde a última reinicialização do sistema:

# uptime # uptime

Página de manual e de informações sobre os comandos: Página de manual e de informações sobre os comandos:

# man

# man shutdownshutdown

ou ou

# info

# info shutdownshutdown

Processos em tempo real: Processos em tempo real:

# top # top

Processos em execução no sistema: Processos em execução no sistema:

(49)

Matando um processo: Matando um processo:

# kill -15 pid # kill -15 pid

Modificar data e hora do sistema: Modificar data e hora do sistema:

# date

# date MMDDHHMMYYMMDDHHMMYY

Atualizar a hora da bios de acordo com a hora do S.O: Atualizar a hora da bios de acordo com a hora do S.O:

# # hwclock -whwclock -w Arquitetura de máquina: Arquitetura de máquina: # arch # arch

Mostra o diretório corrente: Mostra o diretório corrente:

# pwd # pwd

Comando que muda um subdiretório corrente a partir do diretório atual: Comando que muda um subdiretório corrente a partir do diretório atual:

# cd [

# cd [diretóriodiretório]] # cd /root

# cd /root # cd

-# cd - (volta ao último diretório acessado)(volta ao último diretório acessado) # cd ..

# cd .. ((acessaacessa o diretório anterior na árvore deo diretório anterior na árvore de diretórios)

diretórios)

Este comando acima mudará o diretório atual de onde o usuário está. Há também Este comando acima mudará o diretório atual de onde o usuário está. Há também algumas abreviações de diretórios no Linux para facilitar a identificação, estes são:

algumas abreviações de diretórios no Linux para facilitar a identificação, estes são: Abreviação Significado

Abreviação Significado . . (ponto) (ponto) Diretório Diretório atualatual

..

.. (dois (dois pontos) pontos) Diretório Diretório anterior anterior  ~

~ (til) (til) Diretório Diretório HOME HOME do do usuáriousuário / / (barra) (barra) Diretório Diretório RaizRaiz

-

- (hífen) (hífen) Último Último diretóriodiretório Listar diretório: Listar diretório: /# ls /# ls /# ls --color /# ls --color Parâmetro Significado Parâmetro Significado -l

-l Lista Lista os os arquivos arquivos em em formato formato detalhado.detalhado. -a

-a Lista Lista os os arquivos arquivos ocultos ocultos (que (que começam começam com com um um .).) -h

-h Exibe Exibe o o tamanho tamanho num num formato formato legível legível (combine (combine com com -l)-l) -R

-R Lista Lista também também os os subdiretórios subdiretórios encontradosencontrados Mostra o conteúdo detalhado do diretório:

(50)

# ls –lah [

# ls –lah [diretóriodiretório]]

Mostra os arquivos no formato longo em ordem inversa de Mostra os arquivos no formato longo em ordem inversa de data:data:

#ls –ltr #ls –ltr #ls –ltr [ #ls –ltr [diretóriodiretório]] l = l = longolongo t = t = datedate r = r = inversainversa

Criar novo diretório: Criar novo diretório:

# mkdir [

# mkdir [diretóriodiretório]] # mkdir

# mkdir freefree

Remover diretório vazio: Remover diretório vazio:

# rmdir

# rmdir [diretório][diretório]

Remover um diretório e todo o

Remover um diretório e todo o seu conteúdo (cuidado com este comando):seu conteúdo (cuidado com este comando):

# rm –rf [

# rm –rf [diretóriodiretório]] # rm –rf /

# rm –rf / ( Não faça isso! )( Não faça isso! )

Mostra o tamanho do diretório em Megabytes Mostra o tamanho do diretório em Megabytes

# du -msh # du -msh #

# du –msh du –msh [diretório][diretório]

du

du = É a abreviação de se referir a= É a abreviação de se referir a ddisk isk uusage (uso do disco). Indica o sage (uso do disco). Indica o espaço usado emespaço usado em disco pelos arquivos ou diretórios dados. Sintaxe:

disco pelos arquivos ou diretórios dados. Sintaxe: du [diretório].du [diretório]. Indica onde estão os binários, fontes e páginas de manual de um

Indica onde estão os binários, fontes e páginas de manual de um comandocomandodado:dado:

# whereis ls # whereis ls

Indica o caminho completo para

Indica o caminho completo para o comando dado:o comando dado:

# which ls # which ls

É geralmente utilizado para atualizar a hora e

É geralmente utilizado para atualizar a hora e a data de a data de um determinado arquivo.um determinado arquivo. Caso este arquivo não exista, ele será criado pelo

Caso este arquivo não exista, ele será criado pelo touchtouch, porém sem conteúdo algum. A, porém sem conteúdo algum. A sua sintaxe do comando touch é:

sua sintaxe do comando touch é:

Sintaxe: touch [opções] [arquivos] Sintaxe: touch [opções] [arquivos] # touch arquivo

# touch arquivo

Atualizando hora e data de um arquivo: Atualizando hora e data de um arquivo:

# touch -t

(51)

# ls - -color

# ls –color [diretório]

Criando um arquivo:

# : > [arquivo] # : > linux

Criando vários arquivos:

# touch gnu linus unix hurd

Linkando arquivos:

ln -s [arquivo_origem] [link simbólico]

Este comando é usado para gerar links simbólicos, ou seja, que se comportam como um arquivo ou diretório, mas são apenas redirecionadores que mandam seu comando para outro arquivo ou diretório, por exemplo:

$ ln -s /etc /home/user/atalho

Este comando criará o link /home/user/atalho, se você digitar o comando ls -l você verá que o diretório /home/user/atalho está apontando para /etc. Se você for para o /home/user/atalho, você na verdade estará no /etc, mas como é um link, não há diferença.

Movendo um arquivo:

# mv /root/debra /home/user/

Movendo um arquivo para o diretório local:

/home/user#  mv /root/debra .

Copiando um arquivo:

# cp gnu /home/user/

# cp /root/gnu /home/user

Copiando um arquivo para o diretório local:

/home/user# cp /root/gnu .

Listando em detalhes todos os arquivos de um diretório:

(52)

: # ls -lah --color

Simulação de resultado do comando:

-rw-r--r-- 2 user user 100k 2007-02-24 11:00 gnu

Exibe um calendário:

# cal

Mostra o conteúdo de um arquivo binário ou texto:

# cat gnu

Mostra o arquivo na ordem invertida de leitura:

# tac ian

Exibe as primeiras linhas de um determinado arquivo:

# head [arquivo] # head –n [arquivo] # head -3 gnu

Exibe as ultimas linhas de um determinado arquivo:

# tail [arquivo] # tail –n [arquivo] # tail -3 gnu

Localiza um determinado arquivo especificado:

# locate linus

Atualiza a base de dados do locate:

# updatedb

O comando cat possibilita exibir o texto de um arquivo. Com o more existirá uma pausa a cada tela cheia, possibilitando a leitura do arquivo. Exemplo:

# cat [arquivo] | more # more [arquivo]

Possibilita exibir o arquivo de maneira paginada, com opção de rolagem para trás e para frente:

# cat /proc/cpuinfo | less

Para redirecionar a saída de um comando para o less use o pipe. Exibindo um arquivo em linhas numeradas:

(53)

# nl gnu

Contador de linhas, palavras e bytes:

# wc [opções] [arquivo] # wc gnu

# wc -l gnu # wc -w gnu # wc -c gnu

Visualiza de forma crescente as informações do arquivo:

# sort gnu

Visualiza de forma decrescente as informações do arquivo:

# sort -r gnu

Mostra informações de um arquivo:

# file [arquivo] # file gnu

Indica o tipo de arquivo:

# type [arquivo] # type gnu

Mostra inode com atributos MAC (Modify, Access, Changes):

# stat [arquivo] # stat gnu

Exibe a árvore de diretórios:

/# tree

Para exibir informações do sistema, tais como: o sistema operacional, versão do kernel, arquitetura da máquina e muitos outros:

# uname [opções] Versão de kernel: # uname -r Arquitetura de máquina: # uname -m  Mostra o hostname: # uname -n

(54)

Mostra a data da versão do kernel: Mostra a data da versão do kernel:

# uname -v # uname -v

Mostra o nome

Mostra o nome do Sistema Operacional:do Sistema Operacional:

# uname -o # uname -o

Mostra o nome do Kernel: Mostra o nome do Kernel:

# uname -s # uname -s

Mostra uma listagem de entrada e saída de usuários no sistema: Mostra uma listagem de entrada e saída de usuários no sistema:

# last # last Exibe o histórico: Exibe o histórico: # history # history

Logins mal sucedidos: Logins mal sucedidos:

# lastb # lastb Alias e Variáveis Alias e Variáveis Alias Alias O que é alias? O que é alias?

Alias significa atalho, “nome falso” ou “pseudônimo” e pode ajudar em muito Alias significa atalho, “nome falso” ou “pseudônimo” e pode ajudar em muito sua vida no Linux.

sua vida no Linux.

Um alias para todos os usuários você edita em: Um alias para todos os usuários você edita em:

# vi

# vi /etc/bash./etc/bash.bashrcbashrc

Um alias para root você edita em: Um alias para root você edita em:

# vi /root/.bashrc # vi /root/.bashrc

Atualize o arquivo toda vez que você adicionar conteúdo ao arquivo: Atualize o arquivo toda vez que você adicionar conteúdo ao arquivo:

source /etc/bash.bashrc source /etc/bash.bashrc ou ou source /root/.bashrc source /root/.bashrc Exemplos: Exemplos: alias opencd=”eject

alias opencd=”eject; sleep 5s; ; sleep 5s; eject -t”eject -t” alias

alias ls=”ls ls=”ls --color --color -lah”-lah”

OBS: sempre editar ao final do arquivo. OBS: sempre editar ao final do arquivo.

Variáveis Variáveis

O shell é executado no sistema controlado por variáveis de ambiente (espaços de O shell é executado no sistema controlado por variáveis de ambiente (espaços de

(55)

Variáveis locais - são as variáveis disponíveis somente pelo shell corrente e que Variáveis locais - são as variáveis disponíveis somente pelo shell corrente e que não está sendo acessado por subprocessos do sistema.

não está sendo acessado por subprocessos do sistema.

Variáveis globais - estão disponíveis tanto para o shell corrente como para os Variáveis globais - estão disponíveis tanto para o shell corrente como para os subprocessos que fazem uso delas.

subprocessos que fazem uso delas.

Descrição de algumas variáveis de ambiente, que são importantes para facilitar o Descrição de algumas variáveis de ambiente, que são importantes para facilitar o entendimento:

entendimento:

 HOMEHOME - Esta variável identifica o diretório do usuário doméstico, use o- Esta variável identifica o diretório do usuário doméstico, use o

comando

comando echo $HOMEecho $HOME para saber qual é o para saber qual é o seu diretório HOME.seu diretório HOME.

 PATHPATH - Esta é a variável de ambiente que define quais diretórios pesquisar e a- Esta é a variável de ambiente que define quais diretórios pesquisar e a

ordem na qual eles são pesquisados para encontrar um determinado comando, ordem na qual eles são pesquisados para encontrar um determinado comando,  para saber como o sistema faz esta pesquisa e quais diretórios ele procura um  para saber como o sistema faz esta pesquisa e quais diretórios ele procura um

comando use o comando

comando use o comando echo $PATHecho $PATH..

 OSTYPEOSTYPE - Essa variável define o tipo de sistema operacional em uso. Para- Essa variável define o tipo de sistema operacional em uso. Para

saber qual é o sistema operacional em uso use o comando

saber qual é o sistema operacional em uso use o comando echo $OSTYPEecho $OSTYPE..

 SHELLSHELL - Esta variável identifica qual shell está sendo usado, use o comando- Esta variável identifica qual shell está sendo usado, use o comando

echo $SHELL

echo $SHELL para saber qual é o para saber qual é o shell que o seu sistema está usando.shell que o seu sistema está usando.

 TERMTERM - Esta variável define o tipo de terminal que está sendo usado, use o- Esta variável define o tipo de terminal que está sendo usado, use o

comando

comando echo $TERMecho $TERM para saber qual o tipo de terminal está sendo usado pelopara saber qual o tipo de terminal está sendo usado pelo sistema.

sistema.

 USERUSER - Pré-define o nome de conta como variável de ambiente, ou seja, ao se- Pré-define o nome de conta como variável de ambiente, ou seja, ao se

logar ao sistema a ID do usuário é combinada com um nome de conta, para logar ao sistema a ID do usuário é combinada com um nome de conta, para saber qual é o

saber qual é o usuário corrente use o comandousuário corrente use o comando echo USERecho USER..

 MAILMAIL - Esta é a variável de correio eletrônico. Para saber como seu mail está- Esta é a variável de correio eletrônico. Para saber como seu mail está

definido use o comando

definido use o comando echo $MAILecho $MAIL..

 LOGNAMELOGNAME - Esta variável é um sinônimo para USER. Para saber qual é o seu- Esta variável é um sinônimo para USER. Para saber qual é o seu

logname use o comando

logname use o comando echo $LOGNAMEecho $LOGNAME..

Existem vários tipos de shell, entre os quais podemos visualizá-los no arquivo Existem vários tipos de shell, entre os quais podemos visualizá-los no arquivo /etc/shells com os seguintes comandos:

/etc/shells com os seguintes comandos: # cat /etc/shells

(56)

Para visualizar as variáveis de ambiente no sistema podemos utilizar os Para visualizar as variáveis de ambiente no sistema podemos utilizar os comandos a seguir: comandos a seguir: Variáveis locais: Variáveis locais: $ set $ set Variáveis globais: Variáveis globais: $ env $ env ou ou $ printenv $ printenv

Para atribuir um valor a

Para atribuir um valor a uma variável local. Exemplo:uma variável local. Exemplo: $$ LINUX=freeLINUX=free

$$ echo $LINUXecho $LINUX free

free

O comando echo exibe o valor de uma variável de ambiente. O comando echo exibe o valor de uma variável de ambiente.

Vamos verificar se a variável aparece na relação de variáveis locais. Exemplo: Vamos verificar se a variável aparece na relação de variáveis locais. Exemplo:

$ set | grep LINUX $ set | grep LINUX LINUX=free

LINUX=free

Agora vamos transformar esta variável local uma variável global. Para isso Agora vamos transformar esta variável local uma variável global. Para isso devemos usar o comando export:

devemos usar o comando export:

# export LINUX # export LINUX # env | grep LINUX # env | grep LINUX LINUX=free

LINUX=free

Para deletar uma variável de ambiente, usamos o comando unset e para Para deletar uma variável de ambiente, usamos o comando unset e para verificarmos se a variável foi

(57)

# unset LINUX

# echo $LINUX

Agora vamos editar o nosso prompt de comando que é representado pela variável PS1. Podemos utilizar os seguintes argumentos para esta tarefa:

Argumento Descrição

\h Host da máquina.

\W Diretório corrente.

\w Caminho completo do diretório corrente.

\u Nome do usuário.

\t Hora do sistema.

\d Data.

\\$ $ para usuário comum e # para root. # export PS1="[\h@\w]\\$" [trabalho@~]#

Observe que o prompt mudará, ele deve mostrar o host (trabalho), o caminho completo do diretório corrente (~) e o tipo de caractere que faz referência ao prompt.

Podemos criar variáveis globais editando-as no arquivo /etc/profile: # vi /etc/profile

Podemos criar variáveis que são executadas somente no ambiente do usuário editando o arquivo ~/.bash_profile, sendo executadas automaticamente no login:

(58)

Introdução a programação em Shell Script Passos para criar um Shell Script

Escolha um nome para o script

Use apenas letras minúsculas e evite acentos, símbolos e espaço em branco.

nome: sistema

Escolha o diretório onde colocar o script

Para que o script possa ser executado de qualquer parte do sistema, mova−o para

um diretório que esteja no seu PATH. Para ver quais são estes diretórios, use o comando:

echo $PATH

Se não tiver permissão de mover para um diretório do PATH, deixe−o dentro de

seu HOME.

Crie o arquivo e coloque nele os comandos

Use o editor de textos de sua preferência para colocar todos os comandos dentro do arquivo.

Coloque a chamada do Shell na primeira linha

A primeira linha do script deve conter: # !/bin/bash para que ao ser executado, o sistema saiba que é o Shell quem irá interpretar estes comandos.

(59)

Use o seguinte comando para que seu script seja reconhecido pelo sistema como um comando executável:

chmod +x sistema

Problemas na execução do Script "Comando não encontrado" Descrição:

O Shell não encontrou o seu script. Verifique se o comando que você está chamando tem exatamente o mesmo nome do seu script. Lembre−se que no Linux as letras

maiúsculas e minúsculas são diferentes, então o comando "SISTEMA" é diferente do comando "sistema".

Caso o nome esteja correto, verifique se ele está no PATH do sistema. O comando echo $PATH mostra quais são os diretórios conhecidos, mova seu script para dentro de um deles, ou chame−o passando o caminho completo.

Se o script estiver no diretório corrente, chame−o com um ./ na frente. Exemplo:

$ ./sistema

Caso contrário especifique o caminho completo desde o diretório raiz: $ /tmp/scripts/sistema

"Permissão Negada" Descrição:

O Shell encontrou seu script, mas ele não é executável.

Use o comando chmod +x nome_escript para torná−lo um arquivo executável.

"Erro de Sintaxe" Descrição:

O Shell encontrou e executou seu script, porém ele tem erros.

Um script só é executado quando sua sintaxe está 100% correta. Verifique os seus comandos, o erro pode ser algum IF ou aspas que foram abertos e não foram fechados. A própria mensagem informa o número da linha onde o erro foi encontrado.

Criando um Shell Script

(60)

Executar vários comandos seguidos resulta num bolo de texto na tela, misturando as informações e dificultando o entendimento. Vamos trabalhar um pouco, fazendo a saída do script de uma forma legível.

O comando echo serve para mostrar mensagens na tela. Vamos criar uma mensagem de cada comando antes de executá-lo:

Crie um diretório: mkdir /tmp/shells Acesse o diretório: cd /tmp/shells Escreva o arquivo: nano msg.sh

Para usar o echo, basta colocar o texto entre "aspas". Se nenhum texto for  colocado, uma linha em branco será exibida.

Para o script ficar melhor, vamos colocar uma interação com o usuário, solicitando uma confirmação antes de executar os comandos:

O comando "read" leu o que o usuário digitou e guardou na variável RESPOSTA. Logo em seguida, o comando "test" checou se o conteúdo dessa variável era "n". Se afirmativo, o comando "exit" foi chamado e o script foi finalizado. Nessa linha há vários detalhes importantes:

 O conteúdo da variável é acessado colocando−se um cifrão "$" na

(61)

 O comando test é muito útil para fazer vários tipos de checagens em

textos e arquivos;

 O operador lógico "&&", só executa o segundo comando caso o

 primeiro tenha sido OK. O operador inverso é o "||".

Com o tempo, os scripts crescem e quanto maior, mais difícil encontrar o ponto certo onde fazer a alteração ou corrigir algum erro.

Para poupar horas de estresse e facilitar as manutenções futuras, é necessário deixar o código visualmente mais agradável e espaçado, devemos colocar comentários esclarecedores.

Basta iniciar a linha com um "#" e escrever o texto do comentário em seguida. Estas linhas são ignoradas pelo Shell durante a execução. O cabeçalho com informações sobre o script e seu autor também é importante para se ter uma visão geral do que o script faz, sem precisar decifrar seu código. Exemplo:

Alguns dos conceitos vistos no script anterior Variáveis

As variáveis são a base de qualquer script. É dentro delas que os dados obtidos durante a execução do script serão armazenados. Para definir uma variável, basta usar o sinal de igual "=" e para ver seu valor, usa−se o "echo":

(62)

 Não podem haver espaços ao redor do igual "="

Ainda é possível armazenar a saída de um comando dentro de uma variável. Ao invés de aspas, o comando deve ser colocado entre "$(...)", veja:

O comando "unset" apaga uma variável. Para ver quais as variáveis que o Shell já define  por padrão, use o comando:

env

Trabalhando com modos de inicialização Processo init

O init é o primeiro processo iniciado no Linux, logo após a carga do kernel do sistema. Quando é disparado, o init continua a carga do sistema, geralmente executando vários scripts que irão verificar e montar sistemas de arquivos, configurar teclado e iniciar servidores, entre outras tarefas.

O init utilizado no Linux permite que existam diversos níveis de execução no sistema. Um nível de execução é uma configuração de software do sistema que define quais processos devem ser inicializados e quais não devem, e também de que modo são inicializados.

O administrador do sistema é quem define qual será o nível de execução em que o sistema e os processos serão executados.

Runlevels

Toda a inicialização do sistema é baseada em runlevels, ou seja, níveis de execução. Os sistemas Linux possuem 6 runlevels:

Níveis de Execução Ação

0 desligar o sistema

1 modo monousuário, também chamado de modo single

2 modo multiusuário, texto

3 modo multiusuário, texto, com serviços

4 não utilizado

5 modo gráfico (X11)

Referências

Documentos relacionados

Para as ligações eléctricas e instalação dos tubos de refrigeração e drenagem, faça o orifício na parede para o lado exterior. • O orifício deve ficar inclinado para baixo

Formar Tecnólogos em Negócios Imobiliários aptos a exercerem atividades específicas de: (a) Construir um referencial teórico-prático-investigativo que possibilite acompanhar

As Atividades Complementares do Curso de Comunicação Social – Jornalismo e Publicidade e Propaganda propiciam um enriquecimento dos conhecimentos do estudante, bem como

Vaga para ANALISTA GERENCIAMENTO E DESENVOLVIMENTO DE PROJETOS (Nível Superior) – Código AGP..

Os retratos foram produzidos pelo próprio fotógrafo, com elementos simples para compor a cena A paulistana Poliana Okimoto, campeã da Copa do Mundo de maratonas aquáticas, também

No nordeste brasileiro também pode-se perceber que há uma diferença significativa entre crianças e adolescentes onde as prevalências de excesso de peso apresentam-se elevadas

Numa perspectiva de homenagem a Aquino de Bragança orientada para a acção e para o futuro, e não para a mera exaltação contemplativa, os oradores que generosamente contribuíram

Contribuir para o avanço do conhecimento científico e tecnológico na produção, uso e conversão de biomassas em energia e materiais, por meio de pesquisa, desenvolvimento e inovação