2. 2011 Alfamidia LTDA.
Todos os direitos reservados para Alfamídia LTDA.
AVISO DE RESPONSABILIDADE
As informações contidas neste material de treinamento são distribuídas “NO ESTADO EM QUE SE
ENCONTRAM”, sem qualquer garantia, expressa ou implícita. Embora todas as precauções tenham
sido tomadas na preparação deste material, a Alfamídia LTDA. não têm qualquer responsabilidade
sobre qualquer pessoa ou entidade com respeito à responsabilidade, perda ou danos causados, ou
alegadamente causados, direta ou indiretamente, pelas instruções contidas neste material ou pelo
software de computador e produtos de hardware aqui descritos.
Novembro 2011
Alfamídia LTDA
http://www.alfamidia.com.br
3. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 3
UNIDADE 1. HISTÓRIA DO LINUX.............................................................................................................5
UNIX ..................................................................................................................................................................5
LINUX.................................................................................................................................................................5
GNU ..................................................................................................................................................................6
FSF (FREE SOFTWARE FOUNDATION) ................................................................................................................6
DISTRIBUIÇÕES LINUX.......................................................................................................................................7
UNIDADE 2. INSTALAÇÃO DO LINUX....................................................................................................10
REQUISITOS DE HARDWARE .............................................................................................................................10
COMPATIBILIDADE DE HARDWARE ..................................................................................................................10
INSTALANDO O UBUNTU LINUX 10.04..............................................................................................................11
GERENCIAMENTO DE DISCOS NO LINUX...........................................................................................................20
CONFIGURAÇÃO DE PLACAS DE EXPANSÃO......................................................................................................20
CONFIGURAÇÃO DE DISPOSITIVOS USB...........................................................................................................21
UNIDADE 3. INICIANDO E FINALIZANDO O USO DO SISTEMA .....................................................23
CONSIDERAÇÕES INICIAIS ................................................................................................................................23
LOGIN...............................................................................................................................................................23
CONSOLES VIRTUAIS........................................................................................................................................24
COMANDOS EM MODO TEXTO..........................................................................................................................24
O QUE É SHELL?................................................................................................................................................24
CONFIGURAÇÃO DO SHELL...............................................................................................................................24
SAIR DO SHELL.................................................................................................................................................37
REINICIALIZANDO O LINUX ..............................................................................................................................37
DESLIGANDO O LINUX......................................................................................................................................37
UNIDADE 4. DISPOSITIVOS, SISTEMAS DE ARQUIVOS GNU/LINUX ............................................38
CRIAÇÃO DE PARTIÇÕES E SISTEMAS DE ARQUIVOS.........................................................................................38
CRIAÇÃO DE SISTEMAS DE ARQUIVOS..............................................................................................................39
UNIDADE 5. MANUTENÇÃO DA INTEGRIDADE DE SISTEMAS DE ARQUIVOS .........................41
CHECANDO O SISTEMA DE ARQUIVOS ..............................................................................................................41
EXAMINANDO E CORRIGINDO O SISTEMA DE ARQUIVOS ..................................................................................41
UNIDADE 6. ADMINISTRAÇÃO DE COTAS DE DISCO .......................................................................44
INTRODUÇÃO....................................................................................................................................................44
LIMITES DE QUOTAS.........................................................................................................................................44
CRIANDO E GERENCIANDO QUOTAS..................................................................................................................48
COMANDOS PARA MANIPULAÇÃO DE ARQUIVOS ..............................................................................................55
COMANDOS DE BUSCA .....................................................................................................................................67
UNIDADE 7. FLUXOS, CANALIZAÇÃO (PIPES) E REDIRECIONAMENTOS DE SAÍDA..............71
REDIRECIONAMENTO........................................................................................................................................71
CANALIZAÇÃO (PIPE)........................................................................................................................................71
UNIDADE 8. GERENCIAMENTO DE PROCESSOS................................................................................73
TAREFAS EM PRIMEIRO E SEGUNDO PLANO .....................................................................................................74
MODIFICAR A PRIORIDADE DE EXECUÇÃO DE UM PROCESSO ...........................................................................75
UNIDADE 9. COMPACTADORES ..............................................................................................................77
COMPILAR E INSTALAR PROGRAMAS................................................................................................................81
UNIDADE 10. ADMINISTRANDO USUÁRIOS E GRUPOS......................................................................83
ADICIONANDO UM NOVO GRUPO A UM USUÁRIO...............................................................................................85
UNIDADE 11. PERMISSÕES DE ACESSO A ARQUIVOS E DIRETÓRIOS..........................................87
DONOS, GRUPOS E OUTROS USUÁRIOS ..............................................................................................................87
TIPOS DE PERMISSÕES DE ACESSO ....................................................................................................................88
ETAPAS PARA ACESSO A UM ARQUIVO/DIRETÓRIO............................................................................................89
4. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 4
EXEMPLOS PRÁTICOS DE PERMISSÕES DE ACESSO.............................................................................................89
EXEMPLO DE ACESSO A UM DIRETÓRIO.............................................................................................................90
MODO DE PERMISSÃO OCTAL............................................................................................................................95
A CONTA ROOT.................................................................................................................................................98
UNIDADE 12. GERENCIAMENTO DE PACOTES.....................................................................................99
PACOTES ........................................................................................................................................................105
INSTALAR PACOTES ........................................................................................................................................105
O UTILITÁRIO APT...........................................................................................................................................108
UNIDADE 13. USANDO O EDITOR VI ......................................................................................................115
CONCEITOS.....................................................................................................................................................115
INICIANDO O VI...............................................................................................................................................115
INSERINDO TEXTO ..........................................................................................................................................116
APAGANDO TEXTO .........................................................................................................................................117
MODIFICANDO TEXTO.....................................................................................................................................118
COMANDOS PARA MOVIMENTAR O CURSOR....................................................................................................119
SALVANDO ARQUIVOS E SAINDO DO VI...........................................................................................................120
EDITANDO OUTRO ARQUIVO...........................................................................................................................120
INCLUINDO OUTROS ARQUIVOS ......................................................................................................................121
RODANDO COMANDOS DO SHELL....................................................................................................................121
AJUDA NO VI ..................................................................................................................................................122
UNIDADE 14. EXPRESSÃO REGULARES................................................................................................123
TERMINOLOGIA ..............................................................................................................................................123
METACARACTERES.........................................................................................................................................125
REPRESENTANTES ..........................................................................................................................................125
QUANTIFICADORES.........................................................................................................................................130
ÂNCORAS .......................................................................................................................................................134
OUTROS..........................................................................................................................................................136
LINGUAGENS DE PROGRAMAÇÃO....................................................................................................................139
DIFERENÇAS DE METACARACTERES ENTRE APLICATIVOS ..............................................................................142
RESUMO DOS METACARACTERES E SEUS DETALHES ......................................................................................143
CARACTERES ASCII IMPRIMÍVEIS ..................................................................................................................144
UNIDADE 15. BACKUP ................................................................................................................................145
UNIDADE 16. RAID.......................................................................................................................................147
ESPELHAMENTO .............................................................................................................................................148
OUTROS SISTEMAS RAID...............................................................................................................................148
IMPLEMENTAÇÃO ...........................................................................................................................................149
UNIDADE 17. LOGS ......................................................................................................................................151
INTRODUÇÃO..................................................................................................................................................151
LOGS BÁSICOS.................................................................................................................................................151
LOGS GERADOS POR ALGUNS SERVIÇOS DE REDE............................................................................................154
UNIDADE 18. INICIALIZAÇÃO .................................................................................................................158
INICIALIZAÇÃO DO SISTEMA...........................................................................................................................158
UNIDADE 19. O KERNEL DO LINUX........................................................................................................164
UNIDADE 20. SERVIÇOS DE IMPRESSÃO..............................................................................................168
UNIDADE 21. O X11 SERVER .....................................................................................................................169
5. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 5
Unidade 1. História do Linux
Unix
A origem do Unix tem ligação com o sistema operacional Multics, projetado na década de
1960. Esse projeto era realizado pelo Massachusets Institute of Technology (MIT), pela General
Eletric (GE) e pelos laboratórios Bell (Bell Labs) e American Telephone na Telegraph (AT&T). A
intenção era de que o Multics tivesse características de tempo compartilhado (vários usuários
compartilhando os recursos de um único computador), sendo assim o sistema mais arrojado da época.
Em 1969, já existia uma versão do Multics rodando num computador GE645.
Ken Thompsom era um pesquisador do Multics e trabalhava na Bell Labs. No entanto, a
empresa se retirou do projeto tempos depois, mas ele continuou seus estudos no sistema. Desde então,
sua ideia não era continuar no Multics original e sim criar algo menor, mas que conservasse as ideias
básicas do sistema. A partir daí, começa a saga do sistema Unix. Brian Kernighan, também
pesquisador da Bell Labs, foi quem deu esse nome.
Em 1973, outro pesquisador da Bell Labs, Dennis Ritchie, reescreveu todo o sistema Unix
numa linguagem de alto nível, chamada C, desenvolvida por ele mesmo. Por causa disso, o sistema
passou a ter grande aceitação por usuários externos à Bell Labs.
Entre 1977 e 1981, a AT&T, alterou o Unix, fazendo algumas mudanças particulares e lançou
o System III. Em 1983, após mais uma série de modificações, foi lançado o conhecido Unix System
IV, que passou a ser vendido. Até hoje esse sistema é usado no mercado, tornando-se o padrão
internacional do Unix. Esse sistema é comercializado por empresas como IBM, HP, Sun, etc.
Linux
A história começa com um jovem chamado Linus Torvalds nasceu em 28 de dezembro de
1969 em Helsinki na Finlândia e sua família era uma das poucas cuja linguagem adotada como
principal era o Sueco ao invés do Finlandês. Embora fosse filho de jornalistas, Linus começou a
demonstrar seu interesse pelo “mundo geek” cedo, obtendo sempre grande destaque em campos como
a Matemática e Física.
Em 1988, Linus ingressou na Universidade de Helsinki no curso de Ciências da Computação.
Após montar um computador no qual passou a adotar o Minix (um sistema operacional baseado no
Unix, porém gratuito). Devido a observar as dificuldades deste sistema (especialmente com relação ao
uso de terminal para conexão), Linus resolveu criar um programa para a emulação de terminal que
funcionasse independente do Minix.
Em 1991, com relação aos sistemas operacionais, você tinha poucas escolhas. O DOS exercia
sua soberania absoluta com relação aos computadores pessoais, até por uma questão de falta de
escolha. Por mais que os Macs existissem seus preços eram astronômicos, fato que tornava quase
impossível a aquisição de um deles para um usuário final.
Além deles, havia o Unix que certamente era ainda mais caro do que um Mac e adotado
quase exclusivamente por grandes empresas. Nessa altura, o código do Unix, que uma vez foi
6. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 6
utilizado como material de estudo em universidades, já se encontrava proprietário e não mais para
conhecimento público.
Nesse clima, um professor holandês chamado Andrew S. Tanenbaum criou um sistema
operacional baseado no Unix, o Minix. Montado para funcionar com a linha de processadores Intel
8086. Como primariamente, o Minix tinha objetivos acadêmicos (o ensino do funcionamento de um
SO em universidades), ele estava longe de resolver todos os problemas de um usuário final, porém
seu código-fonte era disponibilizado por Tanenbaum.
Nesse ponto da história, o estudante Linus Torvalds, frustrado com as carências do Minix
começou a idealizar como seria bom ter um SO que, além de gratuito, pudesse efetuar tarefas como
emulação de terminal e transferência e armazenamento de arquivos. Então, em 25 de agosto de 1991,
Linus anunciou por meio de um email na Usenet (a Unix User Network) que estava desenvolvendo
um sistema operacional.
O famoso e-mail relata que ele estava criando um sistema operacional desde abril do mesmo
ano, porém que não intencionava torná-lo uma coisa realmente grande e profissional como o GNU
(SO de código aberto baseado no Unix), Linus pretendia chamar sua criação de “Freax”, porém
trocou para Linux ao aceitar esta sugestão de um de seus amigos.
GNU
Um fato importante de conhecer é saber o que é GNU. GNU é um projeto que começou em
1984, criado por Richard Stallman, com o objetivo de desenvolver um sistema operacional
compatível com os de padrão Unix. O Linux em si, é só um kernel. Linus Torvalds, na mesma época
que escrevia o código-fonte do kernel, começou a usar programas da GNU para fazer seu sistema.
Gostando da ideia, resolveu deixar seu kernel dentro da mesma licença.
Mas, o kernel por si só, não é usável. O kernel é a parte mais importante, pois é o núcleo e
serve de comunicador entre o usuário e o computador. Por isso, com o uso de variantes dos sistemas
GNU junto com o kernel, o Linux se tornou um sistema operacional.
FSF (Free Software Foundation)
Por volta de 1983, Richard Stallman criava a Free Software Foundation (FSF), uma fundação
sem fins lucrativos, que lutava contra as restrições de cópia e alterações de software, em outras
palavras, incentivava a criação de programas livres para cópia e alteração, para isso a FSF criou a
licença GNU e um conjunto de ferramentas próprias para esse fim.
Em 1991, a FSF estava criando um sistema operacional chamado Hurd, mas ainda em fase
inicial. Por volta dessa mesma época Linus Torvalds resolveu disponibilizar o código-fonte do Linux
sob a licença GNU a fim de conseguir ajuda de outros desenvolvedores. Muitos desenvolvedores se
interessaram e começaram a adicionar novos recursos rapidamente, mas ficou limitado a este círculo
técnico, pois ainda estava em fase embrionária não sendo possível a utilização em larga escala. Em 5
de outubro de 1991, a primeira versão oficial do Linux foi divulgada, a versão 0.02, desde então o
número de desenvolvedores cresceu rapidamente.
7. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 7
Distribuições Linux
Logo que Linus Torvalds disponibilizou, o seu Kernel Linux sob uma licença para software
livre, mais precisamente sob a GNU General Public License (Licença Pública Geral), ou GNU GPL
(da FSF), o Projeto GNU, que já havia construído todo um conjunto de softwares que compunham um
sistema operacional, adotou-o como kernel para seu Sistema Operacional GNU, por sua vez também
foi distribuído como software livre, para que pudesse ser modificado, melhorado, adaptado, e
redistribuído com as modificações.
Muitos programadores individuais, grupos de programadores e organizações de todo o
mundo, passaram a realizar essas modificações e redistribuir essas versões do Sistema GNU/Linux
modificado, são as chamadas "Distribuições GNU/Linux", ou "Distros Linux". Portanto, uma
distribuição Linux “é composta do kernel Linux e um conjunto variável de software, dependendo
de seus propósitos”. Essa coleção de software livre é criada e mantida por indivíduos, grupos e
organizações de todo o mundo.
As primeiras distribuições surgiram ainda em 1992, como MCC Interim Linux, o Yggdrasi e o
SLS Linux, que após uma reformulação originou o Slackware, em julho de 1993. Ainda em 1993
surgiu o Debian, e em 1994 o Red Hat. Essas três grandes famílias de distribuições GNU/Linux,
Slackware, Debian e Red Hat, deram origem a outras distros, muitas das quais foram continuadas,
deram origem a outras distros, e outras foram descontinuadas.
Red Hat
A empresa americana Red Hat, caracterizada com uma pessoa "sombra" com um chapéu
vermelho, foi uma das pioneiras no tratamento sério do Linux. Desde o início ela é uma das principais
distribuições mundiais, e tem influências em todos os lugares. Sua equipe não apenas ajuda na
distribuição em si, mas também no próprio Linux (como é o caso do kernel-hacker Alan Cox). Esta
distribuição deu origem a muitas outras.
Criadora do RPM, o gerenciador de pacotes mais usado atualmente no Linux, a Red Hat
atualmente têm uma distribuição mais voltada para o mercado de servidores. Mas isso não quer dizer
que ela não seja boa também para uso doméstico. Você encontra nela uma facilidade de manuseio,
pacotes atualizados.
http://www.redhat.com
Slackware
Podemos dizer que o Slackware é uma das mais famosas distribuições para Linux, o seu
criador, Patrick Volkerding, lançou a primeira versão da distribuição em Abril de 1992, e desde então
segue uma filosofia bem rígida: manter a distribuição o mais parecido com o UNIX possível. As
prioridades da distribuição são: estabilidade e simplicidade, e é isso que a torna uma das mais
populares distribuições disponíveis.
8. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 8
Ele possui uma interface de instalação bem amigável, além de uma série de scripts que
ajudam na instalação e desinstalação de pacotes. O Slackware pode ser uma alternativa tanto para
usuários iniciantes como os já experientes. As opções de instalação permitem que o usuário possa
instalar em sua máquina uma distribuição que tem como características uma grande variedade de
desktops (gerenciadores de janelas como o Gnome, KDE, Window Maker, Enlightenment, fvwm), ou
como um poderoso servidor com todos os recursos necessários (utilitários de rede, servidores http,
noticias, e-mail, ftp, etc).
Os pacotes sempre estão em atualização, mantidos por uma versão especial da distribuição: o
slackware-current. Isto desfaz o mito de que o Slackware não é uma distribuição "dinâmica". Todos
aqueles aplicativos estão disponíveis, e são atualizados regularmente.
http://www.slackware.com
Debian
Talvez a filosofia do Debian seja o ponto que mais chama atenção nesta popular distribuição.
No início, antes do Linux ser lançado oficialmente por Linus Torvalds, o projeto GNU já tinha várias
ferramentas Unix-like disponíveis. O que faltava era um kernel, e então quando Linus Torvalds
lançou o seu kernel Linux, resolveram então criar o GNU/Linux.
O Debian GNU/Linux é uma distribuição que segue toda esta filosofia do projeto GNU,
oficialmente contendo apenas pacotes com programas de código-fonte livre, feito por voluntários
espalhados pelo mundo, e sem fins lucrativos alguns.
Apesar de atualmente o Debian ser usado com o kernel Linux, ele se intitula como um
sistema operacional que pode usar não apenas o kernel do Linux em si, mas outros kernels como o
Hurd (projeto de kernel livre feito fora do escopo do Linux). Isso o faz o "Sistema Operacional
Universal", pois o principal objetivo deles é fazer um sistema que rode em todos os lugares e com
vários kernels. E claro, isso tudo na filosofia GNU.
O Debian tem uma quantidade incrível de pacotes pré-compilados para vários tipos de
arquitetura. Além do mais, ele é o pai do apt, a ferramenta de atualização de pacotes automática, feita
pela internet. Mas há quem diga que o Debian ainda tem muito que melhorar: Uma instalação
complicada e ideologismo demasiados são alguns pontos fracos que muita gente encontra nesta
distribuição.
http://www.debian.org
Ubuntu
Ubuntu é um sistema de código aberto construído em volta do núcleo Linux baseado no
Debian, sendo o sistema operacional de código aberto mais popular do mundo. É patrocinado pela
Canonical Ltd (dirigida por Jane Silber).
O Ubuntu diferencia-se do Debian por ser lançado semestralmente, por disponibilizar suporte
técnico nos dezoito meses seguintes ao lançamento de cada versão (exceto nas versões LTS, ou seja,
Long Term Support) (em inglês) e pela filosofia em torno de sua concepção. A proposta do Ubuntu é
oferecer um sistema operacional que qualquer pessoa possa utilizar sem dificuldades,
9. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 9
independentemente de nacionalidade, nível de conhecimento ou limitações físicas. O sistema deve ser
constituído totalmente de software gratuito e livre, além de isenta de qualquer taxa.
A Comunidade Ubuntu ajuda-se mutuamente, não havendo distinção de novatos ou
veteranos; a informação deve ser compartilhada para que se possa ajudar quem quer que seja,
independentemente do nível de dificuldade. Os fãs do Ubuntu são conhecidos como ubuntistas,
ubunteiros ou ubunteros. O sistema operacional Ubuntu está em primeiro lugar no Distrowatch
(www.distrowatch.com), página especializada em catalogar o desempenho e uso dos muitos sistemas
operacionais com núcleo Linux.
10. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 10
Unidade 2. Instalação do Linux
Requisitos de Hardware
Para dimensionar o hardware correto para instalação do Linux devemos inicialmente saber
qual distribuição que iremos trabalhar, pois cada distribuição pode exigir diferentes configurações.
Tomamos como base a distribuição Ubuntu 10.04.
Requisitos mínimos para instalação do Ubuntu 10.04 Lucid Lynx
Processador: 700mhz;
Memória RAM: 512MB;
Disco: 4GB;
Placa Gráfica: qualquer placa gráfica (funcionamento do sistema de efeitos visuais poderá estar
condicionado conforme a placa gráfica)
Requisitos Recomendados:
Processador: 1.2GHz;
Memória RAM: 1GB;
Disco: 10GB
Placa Gráfica: nVidia
Compatibilidade de Hardware
O Ubuntu conta com uma grande quantidade de drivers e uma grande aceitação dos
fabricantes de hardware existe poucos casos de incompatibilidades de hardware no mercado em
relação a esta distribuição.
Uma boa prática é que antes de penar em uma instalação de um novo sistema operacional é a
verificação da lista de compatibilidade, de cada distribuição, para evitar transtornos e perda de tempo.
A lista de compatibilidade de hardware do Ubuntu pode ser encontrada em
www.ubuntu.com/certification/catalog, esta lista se encontra em constante atualização, já que seu
sistema operacional está em constante desenvolvimento.
11. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 11
Instalando o Ubuntu Linux 10.04
Se gravar a imagem do Linux Ubuntu em um CD, deverá utilizar um programa próprio de
gravação de imagens, utilize um programa próprio para fazer o “Burn” da imagem no disco (exemplo:
Nero 9/Nero 10, Alcohol 120%)
Neste momento o Windows 7 consegue gravar imagem em disco, sem utilização de programa
algum.
Configure a BIOS de forma que o computador inicialize pelo CD ou pela Pen. Reinicie o
computador para ele inicialize ou pelo CD ou pela pen. Se tudo correr bem, irá aparecer uma janela
semelhante à seguinte:
Caso não carregue está tela você deve pressionar ESC, o Ubuntu iria iniciar sozinho,
direcionando para o modo de instalação.
12. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 12
Escolha o idioma desejado conforme a tela abaixo.
Quando clicar na tecla Enter para selecionar a linguagem, irá aparecer o seguinte menu onde
deverá escolher a opção “Experimente o Ubuntu sem instalar", esta opção é a mais indicada pois caso
haja algum tipo de incompatibilidade de hardware provavelmente irá ser detectada.
Ao selecionar esta opção, o Ubuntu irá carregar-se, depois de algum tempo de espera, o
usuário poderá instalar o novo Ubuntu Lucid Lynx, e também experimentá-lo, verificar se tudo é
compatível e inclusive acessar a Internet.
13. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 13
Na próxima tela você deverá dar dois cliques em “Instalar Ubuntu 10.04 LTS”
Clique no botão “Avançar” para prosseguir.
14. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 14
Neste próximo passo, deve-se selecionar o teclado correto. Este passo é muito importante,
pois existem muitos modelos de teclados e muitos deles têm poucas diferenças, mas que são
importantes no dia-a-dia.
Neste passo, a opção selecionada abaixo é recomendada para aqueles que têm outro sistema
operacional no PC.
Outra opção é a formatação do disco, e utilizar apenas o Ubuntu, claro que desta forma você
perderá tudo que você tinha anteriormente.
15. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 15
O Ubuntu irá analisar o seu disco e irá apresentar as partições que criou no passo anterior
caso tenha usado a segunda opção. Quando o Ubuntu apresentar as partições, deverá selecionar as
devidas partições e definir os seus atributos, clicando no botão “Modificar…“:
A partição / deve ser do tipo de sistema de arquivo ext4 com um tamanho em torno de 10GB.
16. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 16
A partição /home deverá ser a maior pelo motivo de ser o diretório que mais cresce em um
sistema Linux, algo em torno de 50 GB, lembrando que isso tudo isso é em caso de utilizarmos um
HD de bom tamanho, caso contrario poderíamos trabalhar com os quesitos mínimos.
No final deste procedimento, a lista de partições deverá ter as características das partições
semelhantes às da imagem abaixo, você poderá criar uma partição de swap em torno de 400 Mb.
Depois de verificar se tudo está correto, clique no botão “Avançar!
17. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 17
No passo seguinte, deverá digitar o seu nome, o usuário, que servirá depois para fazer o login no
Ubuntu. Depois de preencher esses dados, clique no botão “Avançar” para prosseguir ao passo
seguinte.
No passo seguinte serve para importar arquivos que existam em outros sistemas operacionais.
Se quiser migrar algum desses dados listados, basta pôr um visto e clicar no botão “Avançar
18. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 18
No passo final, você deve rever todas as opções que escolheu e, caso precise de uma proxy,
permite defini-la, essas opções estão disponíveis através do botão “Avançado“. Para começar a
instalação do Ubuntu clique “Instalar”.
Enquanto a instalação está em processamento, pode navegar na Internet, ou mesmo jogar
algum jogo disponível por este Ubuntu no menu Aplicações → Jogos.
19. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 19
Quando a instalação estiver concluída com sucesso, será apresentada a janela abaixo e pedirá
para reiniciar o Ubuntu para puder utilizar o seu novo Ubuntu!
Depois de ter o Ubuntu instalado, você deve instalar todos os codecs necessários para poder
ouvir quase qualquer tipo de música e de vídeo, bem como qualquer arquivo compactado que lhe
possa aparecer.
Este Ubuntu, ainda não tem a máquina virtual Java para poder abrir determinadas aplicações
desse tipo nem o Adobe Flash para poder ver vídeos no Youtube.
20. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 20
Gerenciamento de Discos no Linux
CSI (scuzzy)
Há dois tipos de dispositivos SCSI:
8 bit: 8 dispositivos incluindo o controlador.
16 bit: 16 dispositivos incluindo o controlador.
Dispositivos SCSI são identificados através de um conjunto de três números chamado SCSI_ID:
1 O Canal SCSI. Cada adaptador SCSI suporta um canal de dados no qual são anexados os
dispositivos SCSI. São numerados a partir de zero.
2 O ID do dispositivo. A cada dispositivo é atribuído um número ID único alterável através
de jumpers. A gama de Ids vai de 0 a 7 em controladores de 8 bit e de 0 a 15 em
controladores de 16 bit. O ID do controlador costuma ser 7.
3 O número lógico da unidade (LUN). É usado para determinar diferentes dispositivos
dentro de um mesmo alvo SCSI. Pode indicar uma partição em um disco ou um dispositivo
de fita específico em um dispositivo multi-fita. Hoje não é muito utilizado pois adaptadores
SCSI estão mais baratos e podem comportar mais alvos por barramento.
Todos dispositivos SCSI são listados em /proc/scsi/scsi:
# cat /proc/scsi/scsi
Attached devices:
Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: HL-DT-ST Model: RW/DVD GCC-4521B Rev: 1.00
Type: CD-ROM ANSI SCSI revision: 02
O comando scsi_info usa as informações deste arquivo para mostrar o SCSI_ID e o modelo do
dispositivo solicitado:
# scsi_info /dev/scd0
SCSI_ID="0,0,0"
HOST="1"
MODEL="HL-DT-ST RW/DVD GCC-4521B"
FW_REV="1.00"
Por padrão, o dispositivo SCSI de boot é o de ID 0, o que pode ser alterado na BIOS SCSI. Se
existirem tanto dispositivos SCSI quanto IDE, a ordem do boot precisa ser especificada na BIOS da
máquina.
Configuração de Placas de Expansão
A configuração de placas de expansão diversas engloba os aspectos abordados nos capítulos
anteriores, mais um conhecimento mais sólido sobre coldplug, hotplug e inspeção de hardware.
Em linhas gerais, coldplug significa a impossibilidade de se conectar dispositivo sem a necessidade
de desligar a máquina. Exemplos de dispositivos coldplug são placas PCI, ISA e dispositivos IDE. Na
21. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 21
maioria dos computadores, CPU e pentes de memória são coldplug. Porém, alguns servidores de alta
performance suportam hotplug para esses componentes.
Hotplug é o sistema que permite conectar novos dispositivos à máquina em funcionamento e usá-los
imediatamente, como no caso de dispositivos USB. O sistema Hotplug foi incorporado ao núcleo do
modelo de driver do kernel 2.6, assim qualquer barramento ou classe pode disparar eventos hotplug
quando um dispositivo é conectado ou desconectado. Assim que um dispositivo é conectado ou
desconectado, o hotplug dispara um evento correspondente, geralmente trabalhando junto do
subsistema udev, que atualiza os arquivos de dispositivos em /dev.
O hotplug precisa estar liberado no kernel, através da opção CONFIG_HOTPLUG. Dessa forma,
haverá o arquivo /proc/sys/kernel/hotplug contendo o caminho para o programa hotplug
(normalmente em /sbin/hotplug). A ação tomada pelo hotplug dependerá do nome do agente passado
pelo kernel (nomes de agentes podem ser “usb”, “pci”, “net”, etc.). Para cada agente existe um script
correspondente em /etc/hoplug/, que se encarrega de configurar corretamente o dispositivo no
sistema.
Mesmo alguns dispositivos coldplug são configurados pelo sistema hotplug. Na hora do boot, o script
/etc/init.d/hotplug (ou /etc/rc.d/rc.hotplug no slackware) dispara os agentes em /etc/hotplug/ para
configurar aqueles dispositivos presentes antes da máquina ser ligada.
Configuração de Dispositivos USB
Dispositivos para interface USB (Universal Serial Bus) são divididos em classes:
Display Devices
Communication Devices
Audio Devices
Mass Storage Devices
Human Interface Devices (HID)
porta USB é operada por um controlador (Host Controller):
OHCI (compaq)
UHCI (intel)
EHCI (USB v2.0)
22. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 22
Uma vez conectados, os dispositivos USB podem ser inspecionados com o comando lsusb.
# lsusb
Bus 002 Device 003: ID 05a9:a511 OmniVision Technologies, Inc. OV511+ WebCam
Bus 002 Device 002: ID 0f2d:9308 ViPower, Inc.
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
As informações detalhadas sobre os dispositivos USB conectadas são armazenadas no arquivo
/proc/bus/usb/devices.
O controle dos dispositivos USB é feito pelo hotplug. Etapas executadas quando uma câmera USB é
conectada ao computador:
Os módulos USB do kernel identificam o evento USB e a ID vendor:product.
Esses dados são passados para /sbin/hotplug (ou outro, se o indicado em
/proc/sys/kernel/hotplug não for o padrão)
O agente USB respectivo (/etc/hotplug/usb.agent) associa o dispositivo ao produto
correspondente. A relação entre dispositivo e módulo consta no arquivo
/etc/hotplug/usb.distmap.
O primeiro estágio envolve procedimentos do kernel, enquanto o segundo e terceiro estágio envolvem
o mecanismo do hotplug. O mapa USB correto precisa estar disponível para iniciar corretamente o
dispositivo.
23. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 23
Unidade 3. Iniciando e Finalizando o uso
do Sistema
Considerações Iniciais
Diferenciação entre letras maiúsculas e minúsculas (case sensitive): todos os shells do Linux fazem
esta diferenciação, isto significa que os nomes dos arquivos devem ser especificados com exatidão,
ou seja, o arquivo denominado Manual.txt é um arquivo diferente do arquivo denominado
manual.txt..
Histórico do shell: o shell padrão do Linux, bash, grava os últimos 1000 comandos em uma lista
denominada .bash_history no diretório home do usuário. Dessa forma as operações por linha de
comando ganham em agilidade. A fim de percorrer o .bash_history, use as teclas do cursor para cima
e para baixo.
Tecla Tab: outro recurso do bash é o autopreenchimento de comandos
. Vejamos o exemplo abaixo:
1. Digite as primeiras letras do nome de um comando, neste exemplo será utilizado o
comando date.
[root@localhost /root]# da
2. Pressione a tecla Tab e o shell irá completar o nome do comando.
[root@localhost /root]# date
Curingas: o Linux permite o uso de curingas tanto para sobreposição de uma sequência de
caracteres (*), quanto para uma única posição (?).
1. Acessando o diretório boot da raiz, utilizando o curinga para sobreposição de uma
sequência de caracteres.
root@localhost /]#cd bo*
2. Acessando o diretório boot da raiz, utilizando o curinga de sobreposição única.
[root@localhost /root]#cd boo?
Login
Para que o usuário tenha acesso ao sistema é necessário que ele possua uma conta, ou seja, um login e
senha.
1. No prompt de logon digite o nome da conta e pressione a tecla enter.
Localhost login: root
Password: *******
2. No prompt da senha digite a sua senha e pressione a tecla enter.
3. Caso o processo de logon tenha sido realizado com êxito, surge na tela uma mensagem do
sistema conforme o exemplo abaixo:
24. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 24
Last login: Thu Feb 8 14:06:27 on tty1
4. Logo após o surgimento desta mensagem o shell do usuário é disponibilizado.
[root@localhost /root]#
Consoles Virtuais
O Linux permite o acesso diversas vezes e de forma independente, com diferentes usuários, através
do uso de consoles virtuais. Estes consoles oferecem um meio de executar diferentes shells ao mesmo
tempo. O Linux suporta pelo menos 6 consoles virtuais.
Vejamos como proceder para utilizar consoles virtuais:
1. Depois de obter acesso ao sistema, mantenha pressionada a tecla Alt e pressione as teclas
F2, F3, F4, F5 ou F6.
2. Repita o processo de login, para cada console, a fim de iniciar as operações.
Para alternar entre consoles basta manter pressionada a tecla Alt + a tecla de função apropriada.
Comandos em Modo Texto
O que é shell?
Shell, ou interpretador de comandos é o programa executado logo após o login, cuja tarefa é
interpretar e executar os comandos do usuário. Por exemplo, quando o usuário digita no console "ls"
e pressiona a tecla Enter, o shell lê essa string e verifica se existe algum comando interno (embutido
no próprio shell) com esse nome. Se houver, ele executa esse comando interno. Caso contrário, ele
vai procurar no PATH por algum programa que tenha esse nome. Se encontrar, ele executa esse
programa, caso contrário, ele retorna uma mensagem de erro. Para cada terminal ou console aberto,
existe um shell sendo executado.
Ao digitar o comando "ps" (process status), podemos verificar que um dos programas rodando é o
shell do usuário:
PID TTY TIME CMD
13299 pts/1 00:00:00 su
13300 pts/1 00:00:00 bash
13337 pts/1 00:00:00 ps
Existem diversos tipos de shell: bash, csh, ksh, ash, etc. O mais utilizado atualmente é o bash (GNU
Bourne-Again SHell).
Configuração do Shell
Variáveis de Ambiente do Shell
O shell carrega vários arquivos localizados em diferentes diretórios no sistema, denominados:
arquivos de recursos, perfil e login. Os arquivos de perfil contêm as variáveis de ambiente, as quais
são definições e valores que o shell ou outros programas reconhecem depois do acesso.
25. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 25
Exibir variáveis de ambiente
Para exibir o valor de uma determinada variável ou uma lista das variáveis de ambiente atualmente
definidas, podemos utilizar o comando printenv conforme o exemplo abaixo:
Exemplos:
[leonardo@localhost root]# printenv PATH
Se digitarmos apenas printenv, teremos uma lista com o valor das variáveis do ambiente. Outra
forma de exibir as variáveis de ambiente é através do comando env, que ao contrário do comando
printenv não exibe o valor de uma só variável.
Variáveis de ambiente:
EDITOR Editor padrão do sistema
HISTSIZE O número de linhas de comando memorizadas
HOME O diretório home do usuário atual
HOSTTYPE A arquitetura do sistema em uso
LOGNAME Nome do usuário atual
MAIL O diretório que contém as mensagens de correio
eletrônico recebidas
OSTYPE O sistema operacional em uso
PATH O caminho (ou caminhos) a procurar os comandos
PS1 Definição do prompt da linha de comando
SHELL Nome do shell atualmente em uso
SHLVL O número de shell atualmente em execução
TERM O tipo de terminal em uso
USER O nome do usuário atual
Definir uma variável de ambiente
Para definir uma variável de ambiente no shell bash é necessário utilizar o comando export,
obedecendo a seguinte sintaxe: NOME_VARIAVEL="valor";export NOME_VARIAVEL.
Exemplos:
[leonardo@localhost root]# EDITOR ="/bin/vi" ; export EDITOR
Outra forma de definir variáveis de ambiente a partir da linha de comando de qualquer shell é usar
o comando env, conforme a seguinte sintaxe: env NOME_VARIAVEL=valor
Excluir uma variável de ambiente
Para excluir uma variável de ambiente digite: unset NOME_VARIAVEL
A variável PATH
Essa variável define o diretório ou diretórios onde o shell pode encontrar os programas
executáveis, caso a variável não tenha sido definida corretamente será necessário digitar todo o
caminho para o programa.
Exemplos:
[leonardo@localhost root]# echo $PATH
/sbin:/bin
[leonardo@localhost root]# env PATH=$PATH:/home
[leonardo@localhost root]# echo $PATH
/sbin:/bin:/home
26. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 26
Estas instruções sobre como adicionar caminhos ao PATH são válidas temporariamente, até sair do
terminal. Para adicionar um caminho ao PATH de forma definitiva, para todo o sistema, é necessário
editar o arquivo /etc/profile, para isso acesse o sistema como root.
Personalizando o prompt da linha de comando
A variável de prompt do shell padrão bash, PS1, é definida no /etc/profile. A definição de
prompt usa caracteres especiais reconhecidos pelo shell bash, conforme este exemplo:
PS1="[u@h W]$"
Esta linha deve existir, também, no arquivo .bash_profile. A variável PS1 deve ser
acrescentada à linha de exportação no .bash_profile, desta forma:
export USERNAME ENV PATH PS1
Caracteres do prompt do shell bash:
! Exibe o número de histórico do comando
# Exibe o número desse comando
$ Exibe # para root ou $ para usuário comum.
W Exibe o nome básico do diretório de trabalho atual
[ Indica a sequência dos caracteres não imprimíveis
Imprime uma barra invertida
] Finaliza a sequência de caracteres não imprimíveis
d Usa a data no prompt
h Usa o nome de host do computador no prompt
n Exibe uma nova linha de prompt
s Exibe o nome do shell
t Exibe a hora
u Exibe o nome atual do usuário
w Exibe o diretório atual de trabalho
Exemplos:
[leonardo@localhost root]# PS1='d t: ';export PS1
Sun Feb 18 18:45:07:
Alias
São redefinições de comandos inseridas, pelo root, no arquivo /etc/bashrc que permitem maior
agilidade no uso dos comandos.
Exemplos:
alias cp="cp -i"
alias mv="mv -i"
27. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 27
Criar o arquivo e colocar nele os comandos
Use o nano, VI ou outro editor de textos de sua preferência para colocar todos os comandos dentro do
arquivo. A primeira linha do script deve ser:
#!/bin/bash
Para que ao ser executado, o sistema saiba que é o shell quem irá interpretar estes comandos.
Para tornar o script um arquivo executável:
chmod +x sistema
Problemas na execução do script
"Comando não encontrado" 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 Unix/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, assim:
prompt$ ./sistema
Caso contrário, especifique o caminho completo desde o diretório raiz:
prompt$ /tmp/scripts/sistema
"Permissão Negada" O shell encontrou seu script, mas ele não é executável.
Use o comando
chmod +x seu-script
para torná-lo um arquivo executável.
"Erro de Sintaxe" 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,
geralmente o erro é 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.
28. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 28
O primeiro shell script.
Nesse ponto, você já sabe o básico necessário para fazer um script em shell do zero e executá-lo. Mas
apenas colocar os comandos em um arquivo não torna este script útil.
Vamos fazer algumas melhorias nele para que fique mais compreensível.
Executar os três comandos seguidos resulta em um bolo de texto na tela, misturando as informações e
dificultando o entendimento. É preciso trabalhar um pouco a saída do script, tornando-a mais legível.
O comando "echo" serve para mostrar mensagens na tela. Que tal anunciar cada comando antes de
executá-lo?
#!/bin/bash
echo "Data e Horário:"
date
echo
echo "Uso do disco:"
df
echo
echo "Usuários conectados:"
w
Para usar o echo, basta colocar o texto entre "aspas". Se nenhum texto for colocado, uma linha em
branco é mostrada.
Para o script ficar mais completo, vamos colocar uma interação mínima com o usuário, pedindo uma
confirmação antes de executar os comandos.
#!/bin/bash
echo "Vou buscar os dados do sistema. Posso continuar? [sn] "
read RESPOSTA
test "$RESPOSTA" = "n" && exit
echo "Data e Horário:"
date
echo
echo "Uso do disco:"
df
echo
echo "Usuários conectados:"
w
O comando "read" leu o que o usuário digitou e guardou na variável RESPOSTA. Logo em seguida, o
comando "test" verificou 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 frente
O comando test é útil para fazer vários tipos de verificações 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, o script vai crescer, mais comandos vão ser adicionados 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, é preciso deixar o código
visualmente mais agradável e espaçado, e colocar comentários esclarecedores.
#!/bin/bash
# sistema - script que mostra informações sobre o sistema
29. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 29
# Autor: Fulano da Silva
# Pede uma confirmação do usuário antes de executar
echo "Vou buscar os dados do sistema. Posso continuar? [sn] "
read RESPOSTA
# Se ele digitou 'n', vamos interromper o script
test "$RESPOSTA" = "n" && exit
# O date mostra a data e a hora correntes
echo "Data e Horário:"
date
echo
# O df mostra as partições e quanto cada uma ocupa no disco
echo "Uso do disco:"
df
echo
# O w mostra os usuários que estão conectados nesta máquina
echo "Usuários conectados:"
w
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 ter-se uma visão geral do que o script faz, sem precisar decifrar seu código.
Também é possível colocar comentários no meio da linha # como este
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":
prompt$ VARIAVEL="um dois tres"
prompt$ echo $VARIAVEL
um dois tres
prompt$ echo $VARIAVEL $VARIAVEL
um dois tres um dois tres
prompt$
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:
prompt$ HOJE=$(date)
prompt$ echo "Hoje é: $HOJE"
Hoje é: Sáb Abr 24 18:40:00 BRT 2004
prompt$ unset HOJE
prompt$ echo $HOJE
prompt$
E finalmente, 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".
Diferente de outras linguagens de programação, o shell não usa os parênteses para separar o comando
de seus argumentos, mas sim o espaço em branco. O formato de um comando é sempre:
COMANDO OPÇÕES PARÂMETROS
30. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 30
O comando "cat" mostra o conteúdo de um arquivo. O comando "cat -n sistema" mostra o
nosso script, com as linhas numeradas. O "-n" é a opção para o comando, que o instrui a numerar
linhas, e "sistema" é o último argumento, o nome do arquivo.
O "read" é um comando do próprio shell, já o "date"" é um executável do sistema. Dentro de um
script, não faz diferença usar um ou outro, pois o shell sabe como executar ambos.
Assim, toda a gama de comandos disponíveis no Unix/Linux pode ser usada em scripts!
Há vários comandos que foram feitos para serem usados com o shell, são como ferramentas. Alguns
deles:
Comando Função Opções
cat Mostra arquivo -n, -s
cut Extrai campo -d, -f, -c
date Mostra data -d, +'...'
find Encontra arquivos -name, -iname,-type,f, -exec
grep Encontra texto -i, -v, -r, -qs, -w,-x
head Mostra Início -n, -c
printf Mostra texto nenhuma
rev Inverte texto nenhuma
sed Edita texto -n,s/isso/aquilo/, d
seq Conta Números -s, -f
sort Ordena texto -n, -f, -r, -k -t, -o
tail Mostra Final -n, -c, -f
tr Transforma texto -d, -s, A-Z a-z
uniq Remove duplicatas -i, -d, -u
wc Conta Letras -c, -w, -l, -L
Use "man comando" ou "comando --help" para obter mais informações sobre cada um deles.
E o melhor, em shell é possível combinar comandos, aplicando-os em sequência, para formar um
comando completo. Usando o pipe "|" é possível canalizar a saída de um comando diretamente para a
entrada de outro, fazendo uma cadeia de comandos.
Exemplo:
prompt$ cat /etc/passwd | grep root | cut -c1-10
root:x:0:0
operator:x
prompt$
O comando test
O canivete suíço dos comandos do shell é o "test", que consegue fazer vários tipos de testes em
números, textos e arquivos. Ele possui várias opções para indicar que tipo de teste será feito, algumas
delas:
Testes em variáveis Testes em arquivos
lt Núm. é menor que (LessThan) -d É um diretório
-gt Núm. é maior que (GreaterThan) -f É um arquivo normal
-le Núm. é menor igual (LessEqual) -r O arquivo tem permissão de leitura
-ge Núm. é maior igual (GreaterEqual) -s O tamanho do arquivo é maior que zero
-eq Núm. é igual (EQual) -w O arquivo tem permissão de escrita
-ne Núm. é diferente (NotEqual) -nt O arquivo é mais recente (NewerThan)
31. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 31
= String é igual -ot O arquivo é mais antigo (OlderThan)
!= String é diferente -ef O arquivo é o mesmo (EqualFile)
-n String é não nula -a E lógico (AND)
-z String é nula -o OU lógico (OR)
Exercício: script que testa arquivos
Tente fazer o script "testa-arquivos", que pede ao usuário para digitar um arquivo e testa se este
arquivo existe. Se sim, diz se é um arquivo ou um diretório. Exemplo de uso:
prompt$ testa-arquivos
Digite o arquivo: /naoexiste
O arquivo '/naoexiste' não foi encontrado
prompt$ testa-arquivos
Digite o arquivo: /tmp
/tmp é um diretório
prompt$ testa-arquivos
Digite o arquivo: /etc/passwd
/etc/passwd é um arquivo
prompt$
Conceitos avançados
Até agora vimos o básico, o necessário para se fazer um script de funcionalidade mínima.
A seguir, conceitos novos que ampliarão as fronteiras de seus scripts!
Recebimento de opções e parâmetros
Assim como os comandos do sistema que possuem opções e parâmetros, os scripts também podem
ser preparados para receber dados via linha de comando.
Dentro do script, algumas variáveis especiais são definidas automaticamente, em especial, "$1"
contém o primeiro argumento recebido na linha de comando, "$2" o segundo, e assim por diante.
Veja o script "argumentos":
#!/bin/sh
# argumentos - mostra o valor das variáveis especiais
echo "O nome deste script é: $0"
echo "Recebidos $# argumentos: $*"
echo "O primeiro argumento recebido foi: $1"
echo "O segundo argumento recebido foi: $2"
Ele serve para demonstrar o conteúdo de algumas variáveis especiais, acompanhe:
prompt$ ./argumentos um dois três
O nome deste script é: ./argumentos
Recebidos 3 argumentos: um dois três
O primeiro argumento recebido foi: um
O segundo argumento recebido foi: dois
O acesso é direto, basta referenciar a variável que o valor já estará definido. Assim é possível criar
scripts que tenham opções como --help, --version e outras.
32. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 32
Expressões aritméticas
O shell também sabe fazer contas. A construção usada para indicar uma expressão aritmética é
"$((...))", com dois parênteses.
prompt$ echo $((2*3))
6
prompt$ echo $((2*3-2/2+3))
8
prompt$ NUM=44
prompt$ echo $((NUM*2))
88
prompt$ NUM=$((NUM+1))
prompt$ echo $NUM
45
If, for e while
Assim como qualquer outra linguagem de programação, o shell também tem estruturas para se fazer
condicionais e loop. As mais usadas são if, for e while.
if COMANDO for VAR in LISTA while COMANDO
then do do
comandos comandos comandos
else done done
comandos
fi
Diferente de outras linguagens, o if testa um comando e não uma condição. Porém como já
conhecemos qual o comando do shell que testa condições, é só usá-lo em conjunto com o if. Por
exemplo, para saber se uma variável é maior ou menor do que 10 e mostrar uma mensagem na tela
informando:
if test "$VARIAVEL" -gt 10
then
echo "é maior que 10"
else
echo "é menor que 10"
fi
Há um atalho para o test , que é o comando [. Ambos são exatamente o mesmo comando, porém usar
o [ deixa o if mais parecido com o formato tradicional de outras linguagens:
if [ "$VARIAVEL" -gt 10 ]
then
echo "é maior que 10"
else
echo "é menor que 10"
fi
Se usar o [, também é preciso fechá-lo com o ], e sempre devem ter espaços ao redor. É recomendado
evitar esta sintaxe para diminuir suas chances de erro.
Já o while é um laço que é executado enquanto um comando retorna OK. Novamente o test é bom de
ser usado. Por exemplo, para segurar o processamento do script enquanto um arquivo de lock não é
removido:
33. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 33
while test -f /tmp/lock
do
echo "Script travado..."
sleep 1
done
E por fim, o for percorre uma lista de palavras, pegando uma por vez:
for numero in um dois três quatro cinco
do
echo "Contando: $numero"
done
Uma ferramenta muito útil para usar com o for é o seq, que gera uma sequência numérica.
Para fazer o loop andar 10 passos, pode-se fazer:
for passo in $(seq 10)
O mesmo pode ser feito com o while, usando um contador:
i=0
while test $i -le 10
do
i=$((i+1))
echo "Contando: $i"
done
E temos ainda o loop infinito, com condicional de saída usando o "break¨:
while :
do
if test -f /tmp/lock
then
echo "Aguardando liberação do lock..."
sleep 1
else
break
fi
done
Exercícios
A melhor parte finalmente chegou, agora é a sua vez de se divertir. Seguem alguns exercícios que
podem ser resolvidos usando o que foi aprendido até aqui.
Alguns exigirão pesquisa e necessitarão de algumas ferramentas que foram apenas citadas, mas não
aprendidas. O shelleiro também tem que aprender a se virar sozinho!
relacao.sh
Recebe dois números como parâmetro e mostra a relação entre eles. Exemplo:
prompt$ ./relacao.sh 3 5
34. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 34
3 é menor que 5
prompt$ ./relacao.sh 5 3
5 é maior que 3
prompt$ ./relacao.sh 5 5
5 é igual a 5
prompt$
zerador.sh
Recebe um número como parâmetro e o diminui até chegar a zero, mostrando na tela cada passo, em
uma mesma linha. Exemplo:
prompt$ ./zerador.sh 5
5 4 3 2 1 0
prompt$ ./zerador.sh 10
10 9 8 7 6 5 4 3 2 1 0
prompt$
substring.sh
Recebe duas palavras como parâmetro e verifica se a primeira palavra está contida dentro da segunda.
Só mostra mensagem informativa em caso de sucesso, do contrário não mostra nada. Exemplo:
prompt$ ./substring.sh ana banana
ana está contida em banana
prompt$ ./substring.sh banana maria
prompt$ ./substring.sh banana
prompt$ ./substring.sh
prompt$
Pesquise sobre o comando grep
juntatudo.sh
Mostra na tela "grudados" todos os parâmetros recebidos na linha de comando, como uma única
palavra. Exemplo:
prompt$ ./juntatudo.sh a b c d e f verde azul
abcdefverdeazul
prompt$
Pesquise sobre o comando tr
35. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 35
users.sh
Do arquivo /etc/passwd, mostra o usuário e o nome completo de cada usuário do sistema (campos 1 e
5) separados por um TAB. Exemplo:
prompt$ ./users.sh
ftp FTP User
nobody Nobody
named Domain name server
xfs X Font Server
mysql MySQL server
aurelio Aurelio Marinho Jargas
prompt$
Pesquise sobre o comando cut
shells.sh
Do arquivo /etc/passwd, mostra todos os shells (último campo) que os usuários usam. Não mostrar
linhas repetidas. Exemplo:
prompt$ ./shells.sh
/bin/bash
/bin/false
/bin/sync
/sbin/halt
/sbin/shutdown
prompt$
Pesquise sobre o comando uniq
parametros.sh
Mostra na tela todos os parâmetros recebidos na linha de comando, contando-os.
Exemplo:
prompt$ ./parametros.sh a b c d e f
Parâmetro 1: a
Parâmetro 2: b
Parâmetro 3: c
Parâmetro 4: d
Parâmetro 5: e
Parâmetro 6: f
prompt$
Pesquise sobre o comando shift
36. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 36
Respostas dos exercícios
Resista à tentação de olhar as respostas antes de tentar fazer os exercícios! É na prática que se
consolida os conhecimentos aprendidos, não pule este passo. Seja forte, insista, não desista!
testa-arquivos
#!/bin/bash
echo -n "Digite o arquivo: "
read ARQUIVO
test -d "$ARQUIVO" && echo "$ARQUIVO é um diretório"
test -f "$ARQUIVO" && echo "$ARQUIVO é um arquivo"
test -f "$ARQUIVO" -o -d "$ARQUIVO" || echo "O arquivo '$ARQUIVO' não foi
encontrado"
echo
relacao.sh
#!/bin/bash
if test $1 -eq $2
then
echo "$1 é igual a $2"
elif test $1 -lt $2
then
echo "$1 é menor que $2"
else
echo "$1 é maior que $2"
fi
zerador.sh
#!/bin/bash
i=$1
while test $i -ge 0
do
echo -n "$i "
i=$((i-1))
done
echo
substring.sh
#!/bin/bash
test $# -ne 2 && exit
echo $2 | grep -qs $1 && echo "$1 está contida em $2"
juntatudo.sh
#!/bin/bash
echo $* | tr -d ' '
37. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 37
users.sh
#!/bin/bash
cat /etc/passwd | cut -d : -f 1,5 | tr : 't'
shells.sh
#!/bin/bash
cat /etc/passwd | cut -d : -f 7 | sort | uniq
parametros.sh
#!/bin/bash
i=0
while test "$1"
do
i=$((i+1))
echo "Parâmetro $i: $1"
shift
done
Sair do Shell
Para finalizar o shell, basta utilizar os comandos exit, logout ou Ctrl + D.
Quando o encerramento do sistema tem inicio, todos os sistemas de arquivos (exceto o raiz) são
desmontados, os processos de usuário são finalizados, servidores são encerrados e finalmente o
sistema de arquivo raiz é desmontado. Proceda da forma adequada caso contrário pode-se corromper
o sistema de arquivos.
Reinicializando o Linux
Para reinicializar o sistema use o comando reboot ou shutdown com as opções –r now, conforme o
exemplo abaixo:
[root@localhost /root]# reboot
ou
[root@localhost /root]# shutdown –r now
Desligando o Linux
Para desligar o sistema use comando poweroff ou shutdown com as opções –h now, conforme
o exemplo abaixo:
[root@localhost /root]# poweroff
Ou
[root@localhost /root]# halt
Ou
[root@localhost /root]# shutdown –h now
38. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 38
Unidade 4. Dispositivos, Sistemas de
Arquivos GNU/Linux
Criação de Partições e Sistemas de Arquivos
Discos IDE podem conter até 4 partições físicas, das quais uma pode ser estendida. A partição
estendida pode ser dividida em partições lógicas. Pode haver um máximo de 46 partições num disco
IDE e 16 num disco SCSI.
Fdisk
O fdisk é o programa padrão para manipular partições no GNU/Linux. Com a opção -l lista os
dispositivos e as partições existentes:
# fdisk -l
Disk /dev/hda: 10.0 GB, 10005037568 bytes
255 heads, 63 sectors/track, 1216 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Dispositivo Boot Start End Blocks Id System
/dev/hda1 * 1 153 1228941 b W95 FAT32
/dev/hda2 154 173 160650 82 Linux swap
/dev/hda3 174 782 4891792+ 83 Linux
/dev/hda4 783 1216 3486105 83 Linux
Disk /dev/hdb: 2111 MB, 2111864832 bytes
64 heads, 63 sectors/track, 1023 cylinders
Units = cilindros of 4032 * 512 = 2064384 bytes
Dispositivo Boot Start End Blocks Id System
/dev/hdb1 1 1023 2062336+ c W95 FAT32 (LBA)
Para manipular partições, o fdisk deve ser iniciado tendo como argumento o dispositivo em
questão:
# fdisk /dev/hda
Uma vez dentro do fdisk, certas letras corresponderão a comandos. Alguns comandos bastante
utilizados:
p → Lista as partições
n → Cria uma nova partição interativamente
t → Muda a identificação da partição
d → Apaga uma partição
q → Sai do fdisk sem gravar as alterações
w → Sai do fdisk e grava as alterações
m → Mostra a ajuda de comandos
Por padrão, o fdisk cria novas partições identificadas como partições nativas de GNU/Linux, cujo
código hexadecimal é 83 (0x83). O código de identificação de partições do tipo swap é 82
(0x82).
39. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 39
Criação de Sistemas de Arquivos
Durante muito tempo o sistema de arquivos mais utilizado no GNU/Linux foi o ext2 (second
extended). No entanto, hoje muito se usa sistemas de arquivos journalling, como o ext3 e o
ReiserFS. Por padrão, o ext2 consiste em blocos de 1024 bytes. Há três tipos de blocos.
Superblocks
Repetem-se a cada 8193 blocos. Contém informações sobre o tamanho dos blocos, inodes livres, data
da última montagem, etc.
inodes
Indicadores para os blocos de dados. Os 12 primeiros blocos de dados após o inode são acessados
sequencialmente. Se os dados excederem 12 blocos, blocos inode indiretos agem como espelho. Cada
inode tem 256 bytes e contém a informação de usuário, grupo, permissões e data referente aos dados
associados.
Blocos de dados
Os blocos que contém os arquivos e diretórios propriamente ditos.
A diferença para um sistema de arquivos journalling é que um sistema com essa capacidade registra
de antemão todas as alterações que irá realizar no disco. Dessa forma, erros de gravação
(normalmente ocasionados por queda de energia ou desligamento incorreto) podem ser mais
facilmente diagnosticados e sanados. É possível fazer a conversão de ext2 para ext3 sem perda de
dados.
O comando mkfs cria sistemas de arquivos em partições. A opção -t indica o tipo do sistema de
arquivos:
Criar uma partição ext2 na partição /dev/hda3:
# mkfs -t ext2 /dev/hda3
Há também comandos específicos para cada sistema de arquivos:
mkfs.ext2, mke2fs, mkfs.ext3, mkfs.xfs, mkreiserfs, mkdosfs e
mkfs.vfat.
Partição Swap
Após a partição swap ser criada pelo fdisk, ela precisa ser formatada com o comando mkswap:
Formata como swap a partição /dev/hda2:
# mkswap /dev/hda2
Após criada e formatada, uma partição swap precisa ser ativada para ser usada como memória swap.
40. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 40
O comando swapon -a ativa todas partições swap que constarem em /etc/fstab. As entradas
referentes a partições swap em /etc/fstab não tem ponto de montagem.
Exemplo de entrada de partição swap em /etc/fstab:
/dev/hda2 swap swap defaults 0 0
Normalmente, todas as partições swap contidas em /ect/fstab são ativadas pelos scripts de
inicialização do sistema. Para ativar ou desativar essa partição manual manualmente, usa-se swapon
/dev/hda2 ou swapoff /dev/hda2, respectivamente.
Informações sobre partições swap ativas são armazenadas em /proc/swaps.
Exemplo de /proc/swaps:
Filename Type Size Used Priority
/dev/hda2 partition 160640 32632 -1
41. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 41
Unidade 5. Manutenção da Integridade
de Sistemas de Arquivos
Checando o Sistema de Arquivos
O comando fsck deve ser executado em partições que apresentarem erros ou em dispositivos que
foram desligados incorretamente. A partição deverá estar desmontada ou montada como somente
leitura (ro) para a verificação.
Como o comando mkfs, o fsck possui a opção -t para especificar o tipo do sistema de arquivos e
um comando específico para cada partição: fsck.ext2 ou e2fsck, fsck.ext3,
fsck.xfs, reiserfsck e dosfsck.
Examinando e corrigindo o Sistema de Arquivos
debugfs
Depurador interativo de sistemas de arquivos. Examina sistemas ext2 e ext3. Muda diretórios,
examina dados de inodes, apaga arquivos, cria links, mostra o log de journalling ext3, etc. É usado em
casos extremos, geralmente após o fsck ter falhado.
dumpe2fs
Mostra informações de grupo de blocos e de superblocks.
tune2fs
Configura parâmetros ajustáveis em sistemas de arquivos ext2, como rótulo e limites de montagem
antes de checar automaticamente.
df
Mostra o espaço disponível em cada dispositivo. A análise é feita diretamente no dispositivo.
Por padrão, mostra o espaço em unidades de 1kb. A opção -h usa medidas apropriadas para tornar a
saída mais inteligível.
du
Mostra o espaço ocupado. Sem argumentos, mostra o uso de cada diretório no sistema. Um diretório
específico pode ser indicado através da opção -s. A opaco -h usa medidas apropriadas para tornar a
saída mais inteligível.
42. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 42
Montagem e Desmontagem dos Sistemas de Arquivos
/etc/fstab
Durante os procedimentos de carregamento do sistema, é o arquivo /etc/fstab que determina os
pontos de montagem dos dispositivos. Cada linha corresponde a um dispositivo, contendo os
seguintes termos separados por tabulações ou espaços:
1. Dispositivo
2. Ponto de montagem ( “swap” se for uma partição de swap)
3. Tipo de sistema de arquivos
4. Opções
5. Dump (0 ou 1). Determina se dispositivo deverá ser considerado pelo comando dump. Se
ausente, 0 é considerado.
6. fsck (1 ou 2). Determina a ordem da checagem feita pelo fsck durante o boot. Para a
partição raiz (/), deve ser 1. Se ausente, 0 é presumido e a checagem não será feita no
boot.
Para permitir que usuários comuns montem e desmontem dispositivos – geralmente, o caso de
dispositivos removíveis – deve-se incluir a opaco “users” para o respectivo dispositivo.
Exemplo:
/dev/cdrom /mnt/cdrom auto noauto,users,ro 0 0
A palavra “auto” na posição referente ao sistema de arquivos indica que o sistema de arquivos deve
ser identificado automaticamente.
mount
O comando mount usado sem argumentos mostra os dispositivos montados e outros detalhes, como
ponto de montagem e tipo do sistema de arquivos. Também é usado para montar dispositivos
manualmente:
O comando do exemplo acima monta o dispositivo /dev/cdrom contendo mídia com sistema de
arquivos iso9660 no diretório /mnt/cdrom, com permissão somente-leitura (ro).
Para montar manualmente um dispositivo que conste em /etc/fstab, basta fornecer para o
comando mount a localização do dispositivo ou do diretório alvo. Para desmontar um dispositivo, o
comando umount é utilizado tendo como argumento o dispositivo ou o diretório alvo a ser
desmontado. Usado com a opcao -a, o comando mount montará todos os dispositivos em
/etc/fstab (exceto os marcados com a opção noauto).
Opções de montagem
As opções de montagem são as mesmas para /etc/fstab e para mount diretamente. Se mais de
uma opção for fornecida, deverão ser separadas por vírgula.
rw ou ro
Gravável ou somente leitura
noauto
Não e montado automaticamente
users
O dispositivo poderá ser montado e desmontado por usuários comuns
43. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 43
user
Apenas quem montou terá permissão de desmontar
owner
As permissões do dispositivo montado se adequarão ao usuário que o montou
usrquota
Habilita o uso de quotas de disco para usuário
grpquota
Habilita o uso de quotas de disco para grupo
remount
Remonta um dispositivo montado com outras opções. Útil para remontar um dispositivo
como somente leitura, por exemplo.
44. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 44
Unidade 6. Administração de Cotas de
Disco
Introdução
No Linux podemos definir quotas de espaço em disco por usuário ou grupos de usuários. Estas quotas
garantem um limite de espaço em disco, se este limite for ultrapassado, o usuário ou grupo de
usuários não será capaz de criar novos arquivos até que os mesmos sejam apagados ou a quota seja
redimensionada.
Desta maneira, esse recurso se torna indispensável para aplicações que envolvem ambientes
multiusuários, servidores etc. Antes de partimos para a prática, é necessário saber se o suporte a
quotas foi compilado no Kernel do sistema.
Limites de Quotas
Cada sistema de arquivos pode ter cinco tipos de limites de quotas, que são especificados em blocos
(blocks) de 1024 bytes cada:
Hard Limit (Limite Físico) por usuário:
É o máximo de espaço em disco que um usuário pode ter na partição configurada com quotas de
disco. Uma vez que este limite de quota é ultrapassado, o usuário não poderá gravar arquivos na
partição.
Soft Limit (Limite Temporário) por usuário:
Indica a quantidade máxima de espaço temporária em disco numa partição. Quando este limite é
ultrapassado, o usuário é informado que seu espaço em disco está terminando e o Grace Period é
acionado. O usuário ainda poderá gravar arquivos até o Grace Period terminar ou até que o Hard
Limit seja alcançado.
Hard Limit para grupo de usuários:
É o máximo de espaço em disco que um grupo de usuários pode ter. Quando esse limite é
ultrapassado, nenhum usuário poderá gravar arquivos em disco mesmo que tenham espaço disponível.
Soft Limit para grupo de usuários:
45. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 45
Indica a quantidade máxima de espaço temporária em disco numa partição. Quando este limite é
ultrapassado, o grupo de usuários é informado que seu espaço em disco está terminando e o Grace
Period é acionado. Os usuários ainda poderão gravar arquivos até o Grace Period terminar ou até que
o Hard Limit por grupo seja alcançado.
Layout de Discos em Sistemas x86
Comandos para gerência de quotas
quota
O comando quota é usado para visualizar informações sobre as quotas de espaço em disco
configuradas para um determinado usuário ou grupo de usuários.
Opções:
-u - Mostra a quota definida para um determinado usuário;
-g - Mostra a quota definida para um determinado grupo de usuários;
-v - Mostra as quotas mesmo que nenhuma esteja definida;
-q - Mostra somente quando a rota for excedida;
-i - Ignora pontos de montagem montados pelo automounter;
-l - Mostra apenas quotas de sistemas de arquivos locais;
Somente o superusuário pode visualizar as informações de quotas de outros usuários, sendo que um
usuário comum só pode ver a sua quota e a quota do grupo que ele pertence.
$ quota -u mark
Disk quotas for user mark (uid 1000):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb2 2740* 1000 2000 60 0 0
quotaon
O comando quotaon habilita o gerenciamento prévio de todas as quotas de disco configuradas em um
ou mais sistemas de arquivos.
Opções:
46. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 46
-a -- Habilita o gerenciamento de todas as quotas de disco para todos os sistemas de arquivos
configurados para controle de quotas no arquivo /etc/fstab;
-v - Mostra uma mensagem para cada sistema de arquivos com quotas habilitadas;
-u - Habilita o gerenciamento de quotas de usuários em um determinado dispositivo;
-g - Habilita o gerenciamento de quotas de grupos em um determinado dispositivo;
# quotaon -aguv
/dev/sdb2 [/mnt/particao1]: group quotas turned on
/dev/sdb2 [/mnt/particao1]: user quotas turned on
Vamos supor que eu necessite habilitar as quotas de grupo somente do sistema de arquivos localizado
no diretório /home:
# quotaon -gv /home
quotaoff
O comando quotaoff desabilita o gerenciamento de quotas de usuários ou grupos em um ou mais
sistemas de arquivos.
Opções:
-a - Desabilita o gerenciamento de todas as quotas de disco para todos os sistemas de arquivos
configurados para controle de quotas no arquivo /etc/fstab;
-v - Mostra uma mensagem para cada sistema de arquivos com quotas desabilitadas;
-u - Desabilita o gerenciamento de quotas de usuários em um determinado dispositivo;
-g - Desabilita o gerenciamento de quotas de grupos em um determinado dispositivo;
# quotaoff -aguv
/dev/sdb2 [/mnt/particao1]: group quotas turned off
/dev/sdb2 [/mnt/particao1]: user quotas turned off
quotacheck
Faz uma checagem nos sistemas de arquivos configurados com gerenciamento de quotas, compila e
atualiza os bancos de dados de quotas (usrquota e grpquota). É recomendado que o
quotacheck seja executado toda vez que o sistema é inicializado ou periodicamente (dia, semana,
mês), via cron.
47. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 47
Desta maneira, ele garante que o banco de dados esteja no seu mais recente estado. É importante
saber que as quotas para um determinado dispositivo devem ser desabilitadas antes do uso do
comando quotacheck, senão as informações coletadas da base de dados ficarão em memória e os
arquivos com a base de dados não serão atualizados.
Opções:
-a - Checa todas as quotas configuradas para os sistemas de arquivos mencionados no arquivo
/etc/fstab;
-g grupo - Cria a base de dados para um determinado grupo;
-u user - Cria a base de dados para um determinado usuário;
-v - Mostra todas as informações executadas pelo quotacheck;
# quotaoff -a
# quotacheck -avug
# quotaon -a
edquota
O comando edquota é um utilitário usado somente pelo superusuário para edição de quotas de
usuários e grupos. O editor vi é o editor padrão usado com o edquota para editar os arquivos
quota.user e quota.group.
Opções:
-r - Edita quotas em dispositivos remotos, um bom exemplo são os dispositivos que usam NFS;
-u - Edita as quotas de usuários;
-g - Edita as quotas de grupos de usuários;
-p user - Copia as configurações de uma quota de usuário padrão para criar outra;
-F format-name - Edita as quotas para um formato específico (vfsold, vfsv0, rpc e xfs);
-f filesystem - Realiza operações especificas para um único sistema de arquivos;
-T - Edita o tempo limite de uso de quotas de usuários/grupos quando o softlimit é excedido;
-t - Edita o período de graça para os Soft Limits para cada sistema de arquivos;
Observe a edição da quota do usuário mark:
# edquota -u mark
Disk quotas for user mark (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/sdb2 2740 3000 5000 60 0 0
48. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 48
Agora, vamos mudar o período de soft limit de todos os usuários:
# edquota -tu
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/sdb2 5days 3days
Podemos usar dias, horas, minutos ou segundos para configurar o Soft Limit, no exemplo acima, o
período de graça para espaço em disco está configurado para 5 dias e 3 dias para armazenamento de
arquivos.
repquota
O comando repquota gera um relatório do uso das quotas de discos de usuários e grupos de um
determinado dispositivo.
Opções:
-a - Exibe um relatório de todas as quotas dos sistemas de arquivos que estão contidos no arquivo
/etc/mtab;
-v - Cria um cabeçalho descritivo para o relatório de quotas;
-u - Cria um relatório de utilização por usuário;
-g - Cria um relatório de utilização por grupo;
-c - Faz cache das entradas para relatório e traduz os UIDs/GIDs para nomes em uma grande amostra
de usuários. É um bom procedimento quando usado com o arquivo /etc/passwd;
-C - Faz cachê das entradas para relatório individualmente. É um bom procedimento quando os
usuários estão armazenados em um banco de dados;
-t - Trunca o nome de usuários ou grupos com mais de 9 caracteres;
-n - Não traduz UIDs/GIDs para nomes;
-i - Ignora os pontos de montagem montados pelo automounter;
-s - Testa para relatar o espaço e o número de inodes usados;
-F - Exibe um relatório de quotas para um determinado formato. Esses formatos podem ser: vfsold,
vfsv0 e xfs;
Criando e gerenciando quotas
Nesse tópico, abordaremos todos os procedimentos para a criação e gerenciamento de quotas.
49. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 49
Edite e insira no arquivo /etc/fstab a linha abaixo:
/dev/sda8 /home ext3 defaults,usrquota,grpquota 1 2
Crie os arquivos quota.user e quota.group e dê permissão de acesso somente para o root no
diretório /home:
# touch /home/quota.user /home/quota.group
# chmod 600 /home/quota.user /home/quota.group
Estes dois arquivos são os bancos de dados de quotas de usuários e grupos. Nesse exemplo, estamos
utilizando quota versão-1, caso alguém esteja usando a versão-2, os nomes dos arquivos devem ser
aquota.user e aquota.group. Agora devemos reiniciar o sistema para que as configurações
de quota entrem em vigor.
# shutdown -r now
Após a reinicialização do sistema, use o comando quotacheck para inicializar os bancos de dados:
# quotacheck -avug
Adicione as quotas de usuários:
# edquota -u mark
Disk quotas for user mark (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/sda8 28 9000 10000 7 4000 5000
/dev/sdb2 2740 3000 5000 60 0 0
Adicione as quotas de grupo:
# edquota -g santos
Disk quotas for group santos (gid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/sda8 0 100000 120000 0 0 0
/dev/sdb2 16 300000 350000 0 4 0
Adicione o tempo limite que os usuários e grupos poderão ter as suas quotas excedidas:
# edquota -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/sda8 7days 7days
/dev/sdb2 7days 7days
50. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 50
Crie um script para iniciar e verificar o sistema de quotas toda vez que ele é inicializado. Este script
deve ser criado no diretório que o sistema utiliza para inicializar os serviços automaticamente,
normalmente é o diretório /etc/init.d:
# vi quotas.sh
#!/bin/bash
# Checa e ativa o sistema de quotas
if [ -x /usr/sbin/quotacheck ]
then
echo "Checando sistema de quotas. "
/usr/sbin/quotacheck -avug
echo " Sistema de Quotas OK."
fi
if [ -x /usr/sbin/quotaon ]
then
echo "Ativando sistema de quotas."
/usr/sbin/quotaon -avug
fi
Adicione o comando quotacheck no cron para que seja executado semanalmente:
# crontab -e
0 3 * * 0 /usr/sbin/quotacheck -avug
Ou se preferir, adicione um script no diretório /etc/cron.weekly:
# vi checaquotas.sh
#!/bin/bash
/usr/sbin/quotacheck -avug
Não esqueça de dar permissão de execução ao arquivo:
# chmod 760 checaquotas.sh
Execute o comando "repquota -v /home" para visualizar o relatório de quotas:
# repquota -v /home
51. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 51
Estrutura de Diretórios
Um sistema de arquivos é a coleção de arquivos e a hierarquia de diretórios em um sistema.
Primeiro, mude para o diretório root digitando o comando “cd /”
[root@bwpx01 ~]# cd /
Para mostrar uma lista do seu conteúdo digite o comando “ls –l”.
[root@bwpx01 /]# ls -l
total 195
drwxr-xr-x 2 root root 4096 Jul 29 17:52 bin
drwxr-xr-x 4 root root 1024 Jul 29 12:08 boot
drwxr-xr-x 8 cduser cduser 4096 Sep 2 17:07 cdunix
drwxr-xr-x 16 root root 7760 Aug 10 17:54 dev
drwxr-xr-x 105 root root 12288 Sep 14 11:40 etc
drwxr-xr-x 133 root root 4096 Aug 27 19:02 home
drwxr-xr-x 11 root root 4096 Jul 29 17:50 lib
drwxr-xr-x 7 root root 12288 Jul 30 11:35 lib64
drwx------ 2 root root 16384 Jul 29 11:15 lost+found
drwxr-xr-x 2 root root 4096 Oct 1 2009 media
drwxr-xr-x 2 root root 0 Aug 10 17:50 misc
drwxr-xr-x 3 root root 4096 Jul 30 14:34 mnt
drwxr-xr-x 2 root root 0 Aug 10 17:50 net
drwxr-xr-x 8 root root 4096 Jul 30 11:51 opt
dr-xr-xr-x 357 root root 0 Aug 10 17:49 proc
drwxr-x--- 9 root root 4096 Aug 24 11:36 root
drwxr-xr-x 2 root root 12288 Jul 29 17:52 sbin
drwxr-xr-x 2 root root 4096 Jul 29 11:19 selinux
drwxr-xr-x 2 root root 4096 Oct 1 2009 srv
drwxr-xr-x 11 root root 0 Aug 10 17:49 sys
drwxr-xr-x 3 root root 4096 Jul 29 11:50 tftpboot
drwxrwxrwt 9 root root 4096 Sep 15 09:03 tmp
drwxr-xr-x 18 root root 4096 Apr 26 09:06 usr
drwxr-xr-x 23 root root 4096 Jul 29 16:01 var
/bin
/bin é uma abreviatura para "binários", ou executáveis. É nesse diretório onde residem a maioria dos
programas essencias do sistema.
Use o comando "ls -l /bin" para listar os arquivos.
[root@bwpx01 /]# ls /bin
alsacard dbus-uuidgen gunzip mknod rpm traceroute
alsaunmute dd gzip mktemp rvi traceroute6
arch df hostname more rview tracert
awk dmesg igawk mount sed true
basename dnsdomainname ipcalc mountpoint setfont umount
bash doexec kbd_mode mv setserial uname
cat domainname kill netstat sh unicode_start
chgrp dumpkeys ksh nice sleep unicode_stop
chmod echo ksh93 nisdomainname sort unlink
chown ed link pgawk stty usleep
cp egrep ln ping su vi
cpio env loadkeys ping6 sync view
csh ex loadkeys.static ps tar ypdomainname
cut false logger pwd taskset zcat
date fgrep login raw tcptraceroute zsh
dbus-cleanup-sockets gawk ls red tcsh
dbus-daemon gettext mail redhat_lsb_init touch
dbus-monitor grep mailx rm tracepath
dbus-send gtar mkdir rmdir tracepath6
52. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 52
Esses são os arquivos que contêm programas. Quando você executa cp, está executando o programa
/bin/cp.
/dev
Os arquivos em /dev são conhecidos como controladores de dispositivo (device drivers) e são usados
para acessar os dispositivos ou recursos do sistema, como discos rígidos, modems, memória, etc. Por
exemplo, da mesma forma que você pode lear dados de um arquivo, pode também ler da entrada do
mouse, lendo /dev/mouse.
Os arquivos que começam com fd são os controladores de disquete. fd0 é o primeiro drive, e fd1 o
segundo. Note que há mais controladores de dispositivo para drivers do que mencionamos. Eles
representam tipos específicos de discos. Por exemplo, fd1H1440 acessa discos de 3.5'' de alta
densidade no drive 1.
Aqui temos uma lista de alguns dos controladores de dispositivos mais usados. Note que mesmo que
você não tenha algum dos dispositivos listados, terá entradas em dev de qualquer forma.
/dev/console faz referência ao console do sistema, quer dizer, ao monitor conectado
em seu sistema.
Os dispositivos /dev/ttyS e /dev/cua são usados para acessar as portas seriais. Por
exemplo, /dev/ttyS0 faz referência a "COM1", sob o MS-DOS. Os dispositivos
/dev/cua são "callout" e são usados em conjunto com um modem.
Os nomes dos dispositivos que começam por hd acessam a discos rígidos. /dev/hda
se refere a todo o primeiro disco, enquanto que /dev/hda1 se refere a primeira
partição em /dev/hda.
Os nomes de dispositivo que començam com sd são dispositivos SCSI. Se você tem
um disco rígido SCSI, no lugar de acessá-lo com /dev/hda, vai acessá-lo com
/dev/sda. As fitas SCSI são acessadas via dispositivos st e os CD-ROM SCSI via sr.
Os nomes que començam por lp acessam as portas paralelas. /dev/lp0 se refere a
"LPT1" no mundo MS-DOS.
/dev/null é usado como "buraco negro", qualquer dado enviado a este dispositivo
desaparece. Para que pode ser útil isto?. Bem, se deseja suprimir a saída para a tela
de um comando, pode enviar a saída para /dev/null. Falaremos mais sobre isto
depois.
Os nomes que começam por /dev/tty se referem a "consoles virtuais" de seu sistema
(acessíveis mediante as teclas Alt-F1, Alt-F2, etc).
/dev/tty1 se refere a primeira VC, /dev/tty2 a segunda, etc.
Os nomes de dispositivo que começam com /dev/pty são "pseudoterminais". São
usados para proporcionar um "terminal" a sessões remotas. Por exemplo, se sua
máquina está em uma rede, o telnet de entrada usará um dos dispositivos /dev/pty.
/etc
/etc contém uma série de arquivos de configuração do sistema. Isto inclui o /etc/passwd (a base de
dados de usuários), o /etc/rc (instruções de inicialização do sistema), etc.
/sbin
/sbin é usado para armazenar programas esenciáis do sistema, usados pelo administrador do sistema.
53. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 53
/home
/home contém os diretórios "home" dos usuários. Por exemplo, /home/larry é o diretório do usuário
"larry". Em um sistema recém instalado, esse diretório estará vazio.
/lib
/lib contém as imagens das bibliotecas compartilhadas. Esses arquivos contêm código que muitos
programas compartilham. Ao invés de cada programa ter uma cópia própria das funções
compartilhadas, elas são guardadas em um lugar comum, o /lib. Isso faz com que os programas
executáveis sejam menores e reduzam o espaço usado em disco.
/proc
/proc é um "sistema de arquivos virtual". Os arquivos que estão no /proc residem verdadeiramente na
memória, e não no disco. Esses arquivos se referem a vários processos que rodam no sistema e
permitem obter informação sobre programas e processos que estão rodando num dado momento.
/tmp
Muitos programas têm necessidade de gerar alguma informação temporária e de guardar essa
informação em um arquivo temporário. O lugar para esses arquivos é o /tmp.
/usr
/usr é um diretório muito importante. Contém uma série de subdiretórios que por sua vez contêm
alguns dos mais importantes e úteis programas e arquivos de configuração usados no sistema.
Os vários diretórios descritos acima são essenciais para o sistema operar, mas a maioria dos itens no
/usr são opcionais. Entretanto, são esses itens opcionais que tornam o sistema útil e interessante.
Sem o /usr, você teria um sistema tedioso que suportaria somente programas como cp e ls. O /usr
contém a maioria dos pacotes grandes de software e os arquivos de configuração que os
acompanham.
/usr/X11R6
/usr/X11R6 contém o sistema X Window se você o instalou el sistema X Window se você o instalou.
O sistema X Window é um ambiente gráfico poderoso que proporciona um grande número de
ferramentas e programas gráficos, mostrados em janelas na sua tela. Se você está familiarizado com
os ambientes MS Windows ou Macintosh, o X Window lhe será muito familiar. O diretório
/usr/X11R6 contém todos os executáveis do X Window, arquivos de configuração e suporte.
/usr/bin
/usr/bin contém a maioria dos programas executáveis não encontrados em outras partes, como no /bin.
/usr/etc
Como o /etc, contém diferentes arquivos de configuração e programas do sistema, /usr/etc contém
inclusive mais que o anterior. Em geral, os arquivos que se encontram em /usr/etc não são essenciais
para o sistema, diferentemente dos que se encontram no /etc.
54. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 54
/usr/include
/usr/include contém os arquivos include para o compilador C. Esse arquivos (a maioria dos quais
termina com .h, de "header") declaram estruturas de dados, subrotinas e constantes usadas no
desenvolvimento de programas em C. Os arquivos que se encontram em /usr/include/sys geralmente
são usados quando programando no nível do sistema UNIX. Se você está familiarizado com
programação C, encontrará arquivos como stdio.h, o qual declara funções como printf().
/usr/g++-include
/usr/g++-include contém arquivos de inclusão para o computador C++ (muito parecido ao
/usr/include).
/usr/lib
/usr/lib contém as bibliotecas "stub" e "static" equivalentes aos arquivos encontrados em /lib. Ao
compilar um programa, ele é "linkado" com as bibliotecas que se encontram em /usr/lib, as quais
direcionam o programa para o /lib, quando precisa buscar o código real da biblioteca. Além disso,
vários programas armazenam arquivos de configuração no /usr/lib.
/usr/local
/usr/local é muito parecido ao /usr. Ele contém programas e arquivos não essenciais ao sistema, mas
que tornam o sistema mais divertido e excitante. Em geral, os programas que se encontram em
/usr/local são específicos do seu sistema, isto é, o diretório /ussr/local difere bastante entre os sistemas
UNIX. Aqui encontrará grandes programas, como o TeX (sistema de formatação de documentos) e
Emacs (editor grande e poderoso), se os instalar.
/usr/man
Esse diretório contém as páginas de manual. Há dois subdiretórios para cada seção de página de
manual (use o comando "man man" para detalhes). Por exemplo, /usr/man/man1 contém os fontes
(isto é, o original não formatado) para as páginas de manual na seção 1, e /usr/man/cat1 contém as
páginas de manual formatadas para a seção 1.
/usr/src
/usr/src contém o código fonte (programas a compilar) de vários programas do sistema. O
subdiretório mais importante é o /usr/src/linux, que contém o código fonte do kernel do Linux.
/var
/var contém diretórios que freqëntemente mudam de tamanho ou tendem a crescer. Muitos desses
diretórios residiam antes em /usr, mas desde que estamos tratando de deixar o /usr inalterado, os
diretórios que mudam de tamanho foram levados para o /var. Alguns deles são:
/var/adm
/var/adm contém vários arquivos de interesse para o administrador do sistema, especificamente
históricos do sistema, que armazenam erros ou problemas com o sistema. Outros arquivos guardam
logins do sistema, assim como tentativas frustradas. O capítulo 4 abordará este assunto.
55. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 55
/var/spool
/var/spool contém arquivos que vão ser passados a outros programas. Por exemplo, se sua máquina
está conectada a uma rede, o correio de entrada será armazenado em /var/spool/mail até que você o
leia ou apague. Artigos novos dos News, tanto os que entram quanto os que saem, se encontram em
/var/spool/news, etc.
Comandos para manipulação de Arquivos
O comando rm
Remove arquivos. Também pode ser usado para apagar diretórios, vazios ou não. Note que no UNIX
quando um arquivo é removido, ele não é mais recuperável (como no MS-DOS, onde você pode usar
o "undelete", ou no Windows, com a lixeira).
Sintaxe:
rm [opções] [caminho][arquivo/diretório]
onde:
caminho - Localização do arquivo que deseja apagar. Se omitido, assume que o arquivo esteja no
diretório atual.
arquivo/diretório - Arquivo/diretório que será apagado.
opções - Modificam o comportamento do comando:
-i --interactive Confirma antes de remover, esta é ativada por padrão.
-f --force Remove os arquivos sem confirmação.
-r --recursive Usado para remover arquivos em sub-diretórios. Esta opção também pode
ser usada para remover sub-diretórios.
Exemplos:
rm teste.txt Remove o arquivo teste.txt do diretório atual.
rm *.txt Remove todos os arquivos do diretório atual que terminam com .txt.
rm *.txt teste.novo Remove todos os arquivos do diretório atual que terminam com .txt e
também o arquivo teste.novo.
rm -rf /tmp/teste/* Remove todos os arquivos e sub-diretórios do diretório /tmp/teste
mas mantém o sub-diretório /tmp/teste.
rm -rf /tmp/teste Remove todos os arquivos e sub-diretórios do diretório /tmp/teste,
inclusive /tmp/teste.
O comando cp
Copia arquivos.
56. Conceitos, Instalação e Administração de Sistemas Linux
2011 Alfamidia Prow 56
Sintaxe:
cp [opções] [origem] [destino]
onde:
origem - Arquivo que será copiado. Podem ser especificados mais de um arquivo para ser copiado
usando "Curingas".
destino - O caminho ou nome de arquivo onde será copiado. Se o destino for um diretório, os
arquivos de origem serão copiados para dentro do diretório.
Opções - Modificam o comportamento do comando:
-f --force Não confirma, substitui arquivos caso já existam.
-i –interactive Confirma antes de substituir arquivos existentes.
-u –update Copia somente se o arquivo de origem é mais novo que o arquivo de destino ou
quando o arquivo de destino não existe.
-r Copia arquivos e sub-diretórios, com exceção de arquivos especiais FIFO e
dispositivos.
-R --recursive Copia arquivos e sub-diretórios, inclusive arquivos especiais FIFO e
dispositivos.
-p --preserve Preserva atributos do arquivo, se for possível.
O comando cp copia arquivos da ORIGEM para o DESTINO. Ambos origem e destino terão o
mesmo conteúdo após a cópia.
Exemplos:
cp teste teste1 Copia o arquivo teste para teste1
cp teste /tmp Copia o arquivo teste para dentro do diretório /tmp.
cp * /tmp Copia todos os arquivos do diretório atual para /tmp.
cp /bin/* . Copia todos os arquivos do diretório /bin para o diretório atual.
cp -R /bin /tmp Copia o diretório /bin e todos os arquivos/sub-diretórios existentes
para o diretório /tmp.
cp -R /bin/* /tmp Copia todos os arquivos do diretório /bin (exceto o próprio
diretório /bin) e todos os arquivos/sub-diretórios existentes dentro
dele para /tmp.
cp -R /bin /tmp Copia todos os arquivos e o diretório /bin para /tmp.
O comando mv
Move ou renomeia arquivos e diretórios. O processo é semelhante ao do comando cp mas o arquivo
de origem é apagado após o término da cópia.
Sintaxe:
mv [opções] [origem] [destino]
Onde: