Escolar Documentos
Profissional Documentos
Cultura Documentos
Especializa Treinamentos
Av. Engº Domingos Ferreira, 2391, salas 1202/1203/1204
Boa Viagem – Recife/PE
Tel.: (81) 3465-0032
Especializa Treinamentos <http:/ /www.especializa.com.br>
Índice
1 O Linux....................................................................................................................................4
1.1 Distribuições.......................................................................................................................4
2 Por que Ubuntu?......................................................................................................................4
2.1 Ubuntu Desktop ou Server?................................................................................................5
2.2 Versões do Ubuntu.............................................................................................................5
2.3 Obtendo o Ubuntu..............................................................................................................6
3 Virtualização com o Virtualbox................................................................................................7
3.1 Obtendo o Virtualbox..........................................................................................................7
3.2 Instalando o Virtualbox.......................................................................................................7
3.3 Criando máquinas virtuais..................................................................................................8
4 Instalando o Ubuntu Server...................................................................................................10
4.1 Iniciando o instalador.......................................................................................................10
5 Usando o sistema..................................................................................................................15
5.1 Acessando o sistema........................................................................................................15
5.2 Obtendo ajuda: whatis, apropos, man, info e help............................................................17
5.3 Quando as coisas não estão bem.....................................................................................20
5.4 Manipulação de arquivos e diretórios...............................................................................20
5.5 Compactando e descompactando arquivos e diretórios...................................................21
5.6 Utilizando editores de texto..............................................................................................23
6 FHS – Filesystem Hierarchy Standard.....................................................................................25
7 A inicialização do sistema......................................................................................................27
7.1 Níveis de execução...........................................................................................................29
7.2 Os Scripts de Inicialização................................................................................................29
8 Fundamentos de TCP/IP.........................................................................................................32
8.1 Configurando a rede de forma temporária........................................................................34
8.2 Configurando a Rede no Debian/Ubuntu (persistente)......................................................35
8.3 Configurando a Rede no RedHat/CentOS (persistente).....................................................36
9 Gerenciamento de Pacotes....................................................................................................38
9.1 Gerenciamento de Pacotes no Ubuntu..............................................................................38
9.2 Gerenciamento de Pacotes no RedHat.............................................................................43
9.3 Instalação de software através código fonte.....................................................................44
10 Sistemas de arquivos...........................................................................................................44
10.1 Tipos de Sistemas de Arquivos.......................................................................................45
10.2 Criando um Sistema de Arquivos....................................................................................46
10.3 Montagem de Sistemas de Arquivos...............................................................................46
10.4 O fstab............................................................................................................................47
11 Contas de usuários e grupos................................................................................................48
11.1 Adicionando contas de usuários.....................................................................................48
11.2 Removendo contas de usuários......................................................................................50
11.3 Adicionando Grupos........................................................................................................50
12 Permissões de Arquivos e Diretórios....................................................................................51
12.1 Permissões comuns........................................................................................................51
12.2 Permissões especiais......................................................................................................53
13 Arquivos, Diretórios, Links e dispositivos.............................................................................54
13.1 Dispositivos de caractere................................................................................................54
13.2 Discos.............................................................................................................................55
13.3 Links...............................................................................................................................55
14 Gerenciamento de processos...............................................................................................55
14.1 top..................................................................................................................................56
14.2 ps...................................................................................................................................57
14.3 kill...................................................................................................................................57
14.4 killall...............................................................................................................................57
14.5 nice e renice...................................................................................................................57
15 Introdução ao Shell Script....................................................................................................58
15.1 Estrutura de script..........................................................................................................58
15.2 Variáveis.........................................................................................................................58
16 Agendamento de tarefas.....................................................................................................59
16.1 cron................................................................................................................................59
16.2 anacron..........................................................................................................................60
17 Usando seu servidor............................................................................................................60
17.1 Configurando um servidor proxy....................................................................................60
17.2 Configurando um servidor de arquivos...........................................................................61
18 Consulta de comandos.........................................................................................................62
18.1 . ou source......................................................................................................................62
18.2 apt-cache.......................................................................................................................62
18.3 apt-get............................................................................................................................63
18.4 bash...............................................................................................................................64
18.5 bzip2...............................................................................................................................64
18.6 cat..................................................................................................................................64
18.7 chgrp..............................................................................................................................64
18.8 chmod............................................................................................................................64
18.9 chown.............................................................................................................................65
18.10 df..................................................................................................................................65
18.11 dpkg.............................................................................................................................65
18.12 echo.............................................................................................................................65
18.13 env...............................................................................................................................66
18.14 export...........................................................................................................................66
18.15 fdisk..............................................................................................................................66
18.16 file................................................................................................................................66
18.17 find...............................................................................................................................66
18.18 grep..............................................................................................................................66
18.19 gzip...............................................................................................................................66
18.20 gunzip...........................................................................................................................66
18.21 halt...............................................................................................................................67
18.22 head.............................................................................................................................67
18.23 history..........................................................................................................................67
18.24 kill.................................................................................................................................67
18.25 locate...........................................................................................................................68
18.26 ls...................................................................................................................................68
18.27 lsmod............................................................................................................................68
18.28 lspci..............................................................................................................................68
18.29 ps.................................................................................................................................69
18.30 pwd..............................................................................................................................69
18.31 man..............................................................................................................................69
18.32 mkdir............................................................................................................................69
18.33 mkfs.............................................................................................................................69
18.34 mount...........................................................................................................................69
18.35 mv................................................................................................................................70
18.36 rpm...............................................................................................................................70
18.37 rm.................................................................................................................................70
18.38 rmdir.............................................................................................................................70
18.39 shutdown......................................................................................................................70
18.40 tail................................................................................................................................70
18.41 tar.................................................................................................................................71
18.42 top................................................................................................................................71
18.43 touch............................................................................................................................71
18.44 uniq..............................................................................................................................71
18.45 umount.........................................................................................................................71
18.46 uname..........................................................................................................................71
18.47 updatedb......................................................................................................................72
18.48 uptime..........................................................................................................................72
18.49 wc.................................................................................................................................72
18.50 which............................................................................................................................72
18.51 whereis.........................................................................................................................73
18.52 yum..............................................................................................................................73
19 Exercícios.............................................................................................................................73
1 O Linux
O Linux é talvez o sistema operacional que mais evoluiu nos últimos anos. Ele foi
desenvolvido inicialmente pelo então estudante de Ciências da Computação da
Universidade de Helsinki Linus Torvalds.
A intenção de Linus Torvalds naquele momento era desenvolver um sistema melhor
que o Minix1, um sistema operacional baseado em Unix desenvolvido para fins
educativos pelo Professor Andrew Tananembaum.
Ao concluir a versão 0.01 do Linux, em 1991, ele enviou uma mensagem para a
Usenet convocando pessoas que ficassem interessadas para contribuir com o
desenvolvimento do sistema. Em 1994 foi lançada a primeira versão utilizável do
kernel.
Em paralelo a isto, Richard Stallman fundava a Free Software Foundation, e seria
criado então o projeto GNU, que estava criando as peças de um grande quebra-
cabeça, um sistema operacional totalmente livre.
O kernel do sistema operacional do GNU em desenvolvimento era o Hurd, mas ele não
estava pronto, e ainda não está nos dias de hoje. Já que o GNU possuia as outras
partes deste quebra-cabeça então o kernel do Linux seria utilizado. Surgiu então o
nome GNU/Linux. Na verdade o sistema desenvolvido naquela época tinha em sua
totalidade muito mais código GNU que Linux, mas por motivos não concretos o
sistema acabou sendo mais conhecido como Linux.
É por este motivo que a distribuição Debian, que era a distribuição oficial do projeto
GNU possui o nome de Debian GNU/Linux, diferente das demais distrbuições da
época, como SuSe Linux, RedHat Linux e outras.
1.1 Distribuições
Uma distribuição é uma compilação do kernel do Linux e diversos softwares de forma
que seja utilizável. O Linux por si só não é utilizável, ninguém é capaz de utilizar
somente o kernel. Algumas distribuições de Linux foram a base para a criação da
vasta quantidade de distribuições existentes atualmente, são elas: o Debian, a
RedHat, o Slackware e a SuSe. A distribuição Ubuntu, Knoppix e também o Kurumin,
uma distribuição muito popular no Brasil, são oriundas do Debian GNU/Linux. Já as
distribuições CentOS e Fedora são derivadas da RedHat, uma das mais antigas e
maiores distribuições comerciais existentes.
1 http://www.minix.org
2 http://www.ubuntu.com
3 http://www.debian.org
1 http://www.canonical.com
As versões LTS são lançadas com intervalos de dois anos. Observe que a versão 6.06
é chamada assim por atraso no seu lançamento, que deveria ter ocorrido em abril de
2006, mas só foi lançada em junho deste mesmo ano.
Durante o nosso curso iremos sempre instalar a última versão Server LTS lançada,
visto o tempo de suporte oferecido para esta versão.
Está disponível ainda um arquivo MD5SUMS com o hash md5 de cada imagem ISO.
Isto é útil para fazer a verificação de integridade da imagem após a conclusão do
download, evitando falhas durante a instalação.
Para testar se a sua imagem ISO está perfeita execute o comando abaixo:
$ md5sum arquivo.iso
Compare o resultado obtido com o encontrado no arquivo MD5SUMS. Caso haja
diferença entre os valores, descarte o arquivo e faça o download novamente.
# dpkg -i nome_do_pacote.deb
No caso da distribuição utilizada utilize o gerenciador de pacotes rpm instale com o
comando abaixo:
# yum install kernel-headers
# rpm -ivh nome_do_pacote.rpm
Para ligar a máquina vitual basta selecioná-la e clicar no botão 'Iniciar'. Durante a
primeira vez que a máquina for ligada o drive de CD/DVD será alocado a esta
máquina.
Quando o hospedeiro não tiver uma unidade de CD/DVD podemos utilizar uma
imagem de CD/DVD como se fosse um dispositivo físico. Para isto é necessário clicar
com o botão direito sobre a máquina e escolher 'Configurações...'. Em seguida clique
em CD/DVD-ROM. Do lado direito da tela marque o checkbox 'Montar drive de
CD/DVD', marque o radiobutton 'Arquivo de imagem ISO' e escolha qual será o arquivo
a ser utilizado com drive de CD/DVD.
5 Usando o sistema
Após o início do sistema, estará disponível na tela um prompt aguardando que o
usuário digite seu usuário e senha para ter acesso à linha de comandos.
aluno@srvlab:~$
Neste prompt aluno indica o usuário logado, @srvlab indica onde o usuário está
logado, neste caso no servidor de hostname srvlab. O sinal '~' indica que o diretório
atual é o home directory do usuário.
Home directory é o diretório pessoal de cada usuário do sistema, nele são
armazenados todas os seus arquivos pessoais e também suas configurações
individuais, como papel de parede, ícones na área de trabalho, etc.
No sistema existem vários usuários. Cada pessoa que possua permissão para executar
tarefas, cada serviço em execução e também o usuário administrativo possuem uma
conta cadastrada. O usuário administrativo em qualquer sistema baseado em Unix
possui o nome root.
O usuário root é o usuário que tem permissão de executar qualquer tarefa
administrativa do sistema. Por questões de segurança este usuário deverá ser
utilizado somente para execução deste tipo de tarefa. O uso da conta de usuário root
para qualquer tarefa que não exija privilégios administrativos deverá ser evitada. Na
distribuição Ubuntu o acesso direto à conta root é desabilitado, para acessar esta
conta é necessário executar o sudo -i.
O prompt do sistema identifica o usuário root pela presença do caractere '#'. Os
usuários comuns são identificados pela presença do caractere '$'.
A presença do prompt de comandos indica que o usuário está logado e o sistema está
apto a receber comandos. Um comando instrui o sistema a executar uma determinada
tarefa. Como exemplo de comandos podemos citar o ls, que lista arquivos e diretórios.
Durante o logon do usuário, antes mesmo da exibição do prompt algumas tarefas são
realizadas, dentre elas destacam-se a execução de alguns scripts de shell, como os
scripts /etc/profile, /etc/bash.bashrc, .bash_profile, .bash_login ou .profile, que dentre
outras coisas, realizam a configuração das chamadas variáveis de ambiente. Uma das
mais importantes variáveis de ambientes do sistema é a variável PATH. Nela está
definida a ordem que o sistema busca pelo comandos. Para visualizar o conteúdo de
uma variável executamos o comando echo.
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Outra variável de muita importância é a variável LANG, que define o idioma.
Note que as variáveis são sensíveis ao caso, ou seja, a variável PATH deve assim ser
escrita, e não path, Path ou qualquer outra variação.
Tomando como exemplo a variável $PATH mostrada acima, os comandos
primeiramente serão procurados no diretório /usr/local/sbin, em seguida em /usr/local/
bin e assim sucessivamente, de acordo com a ordem encontrada na variável PATH. É
importante notar que na ocorrência de um executável estar disponível em dois ou
mais diretórios especificados na variável PATH, será executado o que for encontrado
primeiro, de acordo com a sequência definida nesta variável.
Além das variáveis PATH e LANG ainda existem outras. Para verificar quais são as
suas variáveis de ambiente do seu sistema execute o comando env.
$ env
executa /etc/profile
SE ~/.bash_profile existir ENTÃO
executa ~/.bash_profile
SENÃO
SE ~/.bash_login exist ENTÃO
executa ~/.bash_login
SENÃO
IF ~/.profile exist ENTÃO
executa ~/.profile
FIM DO SE
FIM DO SE
FIM DO SE
5.2.1 Whatis
Como o próprio comando diz, ele pergunda ao sistema o que é alguma coisa.
$ whatis smb.conf
smb.conf (5) - The configuration file for the Samba suite
5.2.3 apropos
O apropos é uma ferramenta de busca para páginas de manual. No exemplo abaixo
estão sendo exibidas todas as páginas de manual que fazem referência ao samba.
$ apropos samba
cupsaddsmb (8) - export printers to samba for windows clients
lmhosts (5) - The Samba NetBIOS hosts file
net (8) - Tool for administration of Samba and remote CIFS servers.
samba (7) - A Windows SMB/CIFS fileserver for UNIX
smb.conf (5) - The configuration file for the Samba suite
smbpasswd (5) - The Samba encrypted password file
5.2.4 info
O comando info é uma outra forma de acessar as páginas de manual.
$ info uname
5.2.5 help
O comando help fornece ajuda para os comandos internos do sistema operacional.
$ help for
for: for NAME [in WORDS ... ;] do COMMANDS; done
The `for' loop executes a sequence of commands for each member in a
list of items. If `in WORDS ...;' is not present, then `in "$@"' is
assumed. For each element in WORDS, NAME is set to that element, and
the COMMANDS are executed.
for ((: for (( exp1; exp2; exp3 )); do COMMANDS; done
Equivalent to
(( EXP1 ))
while (( EXP2 )); do
COMMANDS
(( EXP3 ))
done
EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is
omitted, it behaves as if it evaluates to 1.
$ name --help
Usage: uname [OPTION]...
Print certain system information. With no OPTION, same as -s.
5.2.7 /usr/share/doc
Este é o diretório de documentação de cada pacote instalado no seu sistema. Esta é
uma fonte de documentação mais detalhada e normalmente, para pacotes que
exigem configuração, são apresentados arquivos de exemplo.
$ cd /usr/share/doc/grub
$ ls
AUTHORS changelog.gz NEWS.Debian.gz README.Debian.gz
BUGS copyright NEWS.gz THANKS.gz
changelog.Debian.gz examples README TODO
$ mv aula1 laa/aula1
Para renomeá-lo também utilizamos o comando mv. Observe que mover e renomear
um diretório têm o mesmo significado.
$ mv nome_atual nome_novo
Para removê-lo utilizamos o comando rmdir.
$ rmdir nome_do_diretório
Uma observação importante é que o comando rmdir apaga somente diretórios vazios,
para apagar um diretório juntamente com o seu conteúdo utilize o comando rm com a
opção -r, de recursive. Utilize ainda a opção -f, de force, para que não seja solicitada
confirmação arquivo por arquivo.
$ rm -rf nome_do_diretório
Acima vimos como criar, renomear e apagar diretórios, agora vamos ver estas
mesmas atividades sendo realizadas em arquivos.
Para criar um arquivo devemos utilizar uma aplicação apropriada dependendo do tipo
do arquivo. Para criar um arquivo de texto devemos utilizar um editor, como o nano
ou vi, por exemplo. Este editores de texto serão vistos em mariores detalhes adiante.
Um arquivo vazio poderá ser criado como o comando touch conforme abaixo:
$ touch nome_do_arquivo
$ mv origem destino
$ rm nome_do_arquivo
$ gzip smb.conf
Como resultado o arquivo smb.conf é compactado. Após compactado o arquivo ganha
a extensão .gz, resultando no arquivo smb.conf.gz. É importante notar que o próprio
arquivo é compactado, não é gerada uma cópia compactada, como na maioria dos
compactadores.
5.5.2 bzip2
O bzip2 funciona de forma muito semelhante ao gzip, porém o bzip2 possui um
algorítmo de compactação com maior compressão. Os arquivos compactados
possuem a extensão .bzip2. Da mesma forma que o gzip, o bzip2 compacta somente
arquivos.
$ bzip2 smb.conf
Como resultado um arquivo smb.conf.bz2 é criado em substituição ao arquivo
smb.conf.
$ unzip smb.conf.zip
5.5.4 tar
O tar pode criar o tarball e compactar o arquivo ao mesmo tempo. Para isto basta
especificar na linha de comando qual será o compactador utilizado.
Usando o o compactador zip.
$ tar zcvf arquivo.tar.gz arquivos_ou_diretórios
$ tar zxvf arquivo.tar.gz
Comando Função
/palavra ou regex1 Busca por 'palavra' ou 'regex' em todo o arquivo
?palavra ou regex Busca por 'palavra' ou 'regex' em todo o arquivo no sentido inverso.
A Vai para o final da linha e entra no modo de edição fazendo append,
a Entra no modo de edição deslocando um caractere à diretiva, append.
i Entra no modo de edição a partir da posição onde está o cursor.
I Entra no modo de edição no início da linha onde está o cursor.
x Apaga o caratere sob o cursor.
dd Recorta toda a linha onde está o cursor.
yy Copia a linha onde está o cursor.
p Cola a linha que está na área de tranferência do vi.
:q! Abandona o arquivo sem salvar.
:wq Salva o arquivo e sai.
:w Salva o arquivo.
Tabela 1: Comandos do vi
O nano é um editor de textos de fácil utilização. Ele não possui tantos recursos quanto
o vi, mas é ideal para usuários iniciantes.
Para usar o nano é simples. Para digitar um texto basta iniciar a digitação. Não
existem modos de comandos e edição como o editor vi. O caractere '^' mostrado em
cada opção do menu indica o pressionamento da tecla 'Crtl'. Assim para sair do nano
Diretório Descrição
/ Também chamado de diretório raiz (root). Ponto de partida de todos os
demais diretórios, arquivos e dispositivos existentes no sistema.
/etc Diretório onde estão localizados a maioria dos arquivos de configuração
existentes no sistema.
/boot Diretório onde estão localizados os arquivos contendo o kernel do linux e
arquivo de configuração do grub.
/home Diretório onde estão localizados os arquivos e diretórios de propriedade
dos usuários do sistema.
Ex: /home/aluno/Documentos/orçamento.odt
/root Home directory do usuário root.
/bin Arquivos executáveis orientados aos usuários.
Ex: /bin/ls
/sbin Arquivos executáveis orientados ao usuário administrador do sistema.
Ex: /sbin/ifconfig
/usr Dentro deste diretório é replicada parte da estrutura externa ao
diretório. Podemos verificar a existência dos subdiretórios bin e sbin. Os
diretórios bin e sbinpossuem os arquivos executáveis dos programas
instalados pelo usuários, isto é, arquivos que não fazem parte do
sistema operacional em si. Como exemplo de arquivos que são
encontrados neste diretório podemos citar o /usr/bin/firefox.
O conteúdo deste diretório permanece estático durante a utilização do
sistema, variando apenas quando for realizada a instalação de algum
software.
/usr/local Réplica da estrutura de diretórios padrão para instalação de softwares
que não fazem parte da distribuição. Normalmente utilizado quando se
compila um software de forma manual.
/var Diretório que contenham arquivos variáveis com a simples utilização do
sitema. Note que alguns arquivos de logs sofrem variação mesmo que o
sistema não esteja sendo utilizado, bastando que o sistema esteja em
execução.
Ex: /var/log/apache/access_log, /var/spool
/tmp Diretório para armazenamento de dados temporários. O conteúdo deste
diretório não é preservado durante o reboot do sistema. A política de
limpeza deste diretório pode diferir de acordo com a distrbuição. Nas
distribuições Debian e Ubuntu o conteúdo é removido a cada reboot e
nas distribuições baseadas em RedHat o conteúdo é removido a cada
mês.
/opt Utilizado para pacotes de software que não fazem parte da distribuição.
Ex: /opt/eclipse
/proc Sistema de arquivos em memória de uso do sistema operacional. Neste
diretório são disponibilizadas informações sobre a execução do sistema,
como: uso de discos, memória, parâmetros de execução do kernel. É a
fonte de informações para muitos programas de monitoramento do
sistema. Você também poderá passar alguns parâmetros de
configuração editando-se os arquivos encontrados aqui, porém após um
reboot todas configurações serão perdidas. Neste caso recomenda-se a
realização das configurações editando-se os arquivos destinados a
receber a configuração. Boa parte das configurações deste tipo são
realizadas editando-se o arquivo /etc/sysctl.conf.
7 A inicialização do sistema
A inicialização do sistema começa com o boot da máquina. Após a conclusão do POST
a máquina inicia o sistema operacional contido no primeiro dispositivo configurado
que contenha um sistema operacional. A ordem de pesquisa é definida na
configuração da BIOS do equipamento.
Após selecionado o dispositivo que será utilizado para ser realizada a carga do
sistema operacional o sistema carrega a imagem de inicialização encontrada nos
primeiros 512 bytes do disco. Neste local, em sistemas Linux está instalado o
gerenciador de boot. Os principais gerenciadores de boot são o LILO e o GRUB. O LILO
já foi o mais utilizado num passado não muito distante, mas hoje a maioria das
distrbuições utiliza o GRUB por padrão devido à sua simplicidade e disponbilidade de
recursos.
O GRUB permite ao administrador ter dois ou mais sistemas instalados ou várias
versões de kernel para um sistema com Linux instalados na máquina, dando a opção
de escolher qual será carregado no momento da inicialização da máquina. Esta
escolha é realizada através de um menu apresentado durante a inicialização. Abaixo
iremos apresentar o arquivo de configuração do GRUB, o menu.lst. Este é um dos
poucos arquivos de configuração do sistema que está fora do diretório /etc.
Cada entrada apresentada no menu do GRUB é numeda a partir do zero. Esta
numeração é utilizada para definir qual o sistema será carregado caso o usuário não
faça uma escolha de qual sistema será carregado. A entrada padrão deverá ser
escolhida editando-se a linha default seguida do número da entrada.
A diretiva timeout define a quantidade de segundos que o GRUB deverá aguardar que
o usuário faça a sua escolha. Na tela será apresentada uma contagem regressiva para
a carga do sistema escolhido como padrão.
A diretiva hiddenmenu, quando presente, indica que o menu não será apresentado
para o usuário. Quando esta diretiva está presente é necessário que o usuário
pressione a tecla 'Esc' no momento em que estiver sendo realizada a contagem
regressiva.
$ cat /boot/grub/menu.lst
default 0
timeout 2
hiddenmenu
# password topsecret
password --md5 $1$D50Dg$lKqCsZuDdzQ6Hbw4QdygT0
# This is a divider, added to separate the menu items below from the Debian
# ones.
title Other operating systems:
root
# /etc/init.d/networking restart
Nas distribuições baseadas em RedHat há um script chamado service que pode ser
executado em substituição ao caminho dos scripts. O mesmo exemplo é mostrado
abaixo na distribuição RedHat.
A criação dos links simbólicos poderá ser feita manualmente ou utilizando alguma
ferramenta de administração do runlevel. As distribuições Debian e Ubuntu
disponibilizam o comando update-rc.d e a distribuição RedHat e derivados
disponibilizam o chkconfig e também o ntsysv. As distribuições Debian e Ubuntu
disponibilizam ainda uma outra ferramenta mais intuitiva para a realização desta
tarefa, o sysvconfig.
Para instalar o sysvconfig execute:
# aptitude install sysvconfig
Para executá-lo execute o comando sysvconfig.
Já no RedHat e derivados a definição de quais níveis de execução um dado serviço
será executado é definida diretamente no script de inicialização do serviço. Abaixo
mostramos um trecho de um script de inicialização contendo a definição de quais os
níveis e a ordem que o serviço será executado.
#!/bin/sh
#
# Startup script for programa
#
# chkconfig: 345 85 15
# description: Descrição do programa
# processname: processo
# pidfile: /var/run/processo.pid
No exemplo acima o serviço será iniciado nos níveis 3, 4 e 5 com o parâmetro start e
será executado na ordem 85 e nos demais níveis ele será executado na ordem 15
com parâmetro stop.
8 Fundamentos de TCP/IP
Assim como cada casa em uma rua tem um endereço, cada computador em uma rede
também o tem. O endereço de rede é indispensável para que dois ou mais
computadores estabelecam comunicação. Com ele os pacotes podem trafegar ao
longo da rede e chegarem ao seu destino. O protocolo IP é responsável por
estabelecer este endereçamento na internet e na grande maioria das redes privadas.
O Endereço IP identifica um host em uma rede de computadores. Ele é formado por
uma sequência de 32 bits que podem ser representados na forma decimal pontuada,
binário e hexadecimal. A forma decimal pontuda é feita dividindo-se o endereço em 4
octetos e convertendo cada um destes octetos em decimal.
Os endereços são divididos em classes, que são definidas de acordo com os bits que
formam o primeiro octeto.
A representação binária de uma máscara dá uma idéia mais clara do limite que define
qual é a porção do endereço que indica a rede e do host. Os bits '1' indicam a porção
de rede e os bits '0' indicam a porção de host. No exemplo abaixo os três primeiros
octetos do endereço IP representam a sua porção de rede.
Como visto, os endereços IPs e sua respectiva máscara são usados para se calcular
qual é a faixa de endereços válidos para utilizarmos em uma rede local. Exitem
ferramentas que auxiliam o administrador de redes a saber ou mesmo definir quais
serão os endereços que poderão ser utilizados. O ipcalc é uma destas ferramentas. A
sua instalção é bastantes simples em sistemas Ubuntu, para isto é necessário
executar o comando abaixo:
# aptitude install ipcalc
Após instalado o ipcalc está pronto para ser utilizado. Como exemplo iremos verificar
quais são os endereços de rede, broadcast e o primeiro endereço e o último endereço
válido da rede à qual pertence o endereço IP 192.168.10.2 com máscara de rede
255.255.255.0.
$ ipcalc 192.168.10.2 255.255.255.0
Address: 192.168.10.2 11000000.10101000.00001010. 00000010
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000
Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111
=>
Network: 192.168.10.0/24 11000000.10101000.00001010. 00000000
HostMin: 192.168.10.1 11000000.10101000.00001010. 00000001
HostMax: 192.168.10.254 11000000.10101000.00001010. 11111110
Broadcast: 192.168.10.255 11000000.10101000.00001010. 11111111
Hosts/Net: 254 Class C, Private Internet
três primeiros bits estão em destaque. O destaque indica a definição de qual classe de
endereços este host pertence.
A linha HostMin e HostMax indicam respecitamente qual o primeiro e último endereço
IP válido nesta subrede.
A linha Hosts/Net indica a quantidade de hosts que é possível endereçar em cada uma
das redes com está máscara. Nesta linha também é mostrada qual é a classe de
endereços à qual este host faz parte, que neste exemplo foi a classe C.
Vejamos agora um exemplo onde não é utilizada a máscara padrão.
$ ipcalc 10.0.10.14/28
Address: 10.0.10.14 00001010.00000000.00001010.0000 1110
Netmask: 255.255.255.240 = 28 11111111.11111111.11111111.1111 0000
Wildcard: 0.0.0.15 00000000.00000000.00000000.0000 1111
=>
Network: 10.0.10.0/28 00001010.00000000.00001010.0000 0000
HostMin: 10.0.10.1 00001010.00000000.00001010.0000 0001
HostMax: 10.0.10.14 00001010.00000000.00001010.0000 1110
Broadcast: 10.0.10.15 00001010.00000000.00001010.0000 1111
Hosts/Net: 14 Class A, Private Internet
Observe que no exemplo acima, apesar da máscara utilizada ser diferente da máscara
padrão de classe A, este endereço continua pertencendo a esta classe. Isto deve-se
ao fato de que o fator determinante da classe de endereçamento IP não é a máscara
de rede e sim os primeiros bits do primeiro octecto do endereço.
auto eth0
iface eth0 inet static
address 192.168.10.2
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
gateway 192.168.10.1
auto eth1
iface eth1 inet dhcp
A linha iface eth1 inet dhcp define que a configuração da interface eth1 será realizada
de forma dinâmica, com as configurações estabelecidas por um servidor DHCP
disponível no segmento de rede.
Vários endereços de rede podem ser estabelecidos a uma única inteface de rede. Para
isto é necessário a criação de aliases. Esta configuração é mostrada abaixo,
adicionando o endereço 192.168.10.3 à mesma interface de rede.
auto lo
auto eth0
iface eth0 inet static
address 192.168.10.2
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
gateway 192.168.10.1
auto eth0:0
iface eth0:0 inet static
address 192.168.10.3
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
Após a configuração do arquivo /etc/network/interfaces é necessário reiniciar o serviço
da rede. Para isto execute o comando abaixo:
# /etc/init.d/networking restart
O arquivo /etc/hosts contém uma tabela de conversão de nome em IP. Este arquivo
possui prioridade nas pesquisas de resolução de nome. Então, mesmo que o host
esteja configurado com outro
127.0.0.1 localhost
192.168.10.2 sol sol.labespecializa.com.br
Uma máquina que possua mais de nome poderá ter estes nomes especificados na
mesma linha, como no exemplo mostrado acima. Observe que o host sol possui dois
nomes: sol e sol.labespecializa.com.br.
O arquivo /etc/resolv.conf são configurados quais servidores de DNS serão utilizados
para resolver nomes. Um exemplo deste arquivo é mostrado abaixo:
search labespecializa.com.br
nameserver 192.168.10.2
A diretiva search indica qual é o domínio padrão utilizado durante a tentativa de
resolução de um nome. Ele será utilizado caso o host não esteja cadastrado em
/etc/hosts e não tenha sido especificado o nome FQDN1.
A diretiva nameserver especifica quais ou quais servidores DNS serão utilizados para
resolução de nomes. Neste arquivo poderão especificadas até três entradas deste
tipo.
# vi /etc/sysconfig/network
NETWORKING=yes
FORWARD_IPV4=yes
HOSTNAME=sol.labespecializa.com.br
GATEWAY=192.168.10.1
NOZEROCONF=yes
A configuração das interfaces de rede é realizado criando-se um arquivo para cada
interface. O nome do arquivo é formado por ifcfg-<nome_da_interface>. O conteúdo
do arquivo possui diretivas de configuração que definem o nome do dispositivo, o seu
endereço IP, máscara de rede, endereço de rede, broadcast, o gateway, caso já não o
tenha configurado no arquivo /etc/sysconfig/network e por fim, a diretiva ONBOOT que
indica se a interface será configurada automaticamente na inicialização.
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
IPADDR=192.168.10.2
NETMASK=255.255.255.0
NETWORK=192.168.10.0
BROADCAST=192.168.10.255
GATEWAY=192.168.10.1
ONBOOT=yes
Após a reconfiguração da rede é necessário reiniciar o serviço network.
# service network restart
O servidor de DNS e o nome do domínio de pesquisa, da mesma forma que no Ubuntu,
são definidos no arquivo /etc/resolv.conf e não é necessário reiniciar qualquer serviço
após a sua modificação.
1 http://www.redhat.com
9 Gerenciamento de Pacotes
Pacotes são porções de software pré-compilados que estão prontos para serem
instalados em seu sistema. A utilização de pacotes dá ao administrador a comodidade
de não ter que compilar cada software que for utilizar em seu sistema. Ganhos em
segurança também são observados, uma vez que o mantenedor do pacote será
responsável por identificar o lançamento de correções de segurança liberados pelo
desenvolvedor do software e aplicá-las imediamente ao seu código fonte e liberar
uma versão compilada nos servidores repositórios da distribuição.
O gereciamento de pacotes é diferenciado dependendo da distribuição. As
distribuições baseadas em Debian possuem como gerenciador de pacotes e dpkg
(Debian Package Manager), já os baseados em RedHat utilizam o rpm (RPM Package
Manager). Os pacotes que foram criados com o dpkg possuem a extensão .deb e os
que foram criados utilizando o rpm possuem a extensão .rpm.
O Ubuntu, objeto do nosso curso, já que é baseado na distribuição Debian, utiliza
como gerenciador de pacotes o dpkg.
# vi /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu/ hardy main restricted
deb-src http://archive.ubuntu.com/ubuntu/ hardy main restricted
## Major bug fix updates produced after the final release of the
## distribution.
deb http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted
deb-src http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted
## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb http://archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe
multiverse
# deb-src http://archive.ubuntu.com/ubuntu/ hardy-backports main restricted
universe multiverse
em que dois ou três pacotes fazem parte da cadeia de dependência de uma pacote
tudo fica muito fácil, mas complexidade aumenta significativamente quando esta
quantidade de pacotes aumenta.
# dpkg [ opção ] nome_do_pacote_ou_arquivo
Opção Significado
-i ou --install Instala um pacote
-r ou --remove Faz a desinstalação de um pacote preservando-se os arquivos de
configuração.
-P ou --purge Faz a desisntalação completa de um pacote removendo seus arquivos de
configuração.
-s ou --status Mostra o status de um pacote.
-S ou --search Informa a qual pacote pertence um determinado arquivo.
Ex: dpkg --search apache2.conf
-l ou --list Lista pacotes e informa a sua situação
-L ou --listfiles Lista arquivos pertencentes a um pacote
10 Sistemas de arquivos
10.1.1 EXT2
O sistema de arquivos EXT2 foi utilizado por muito tempo em sistemas Linux. O longo
tempo em funcionamento deu a este uma boa estabilidade e confiabilidade. Este
sistema de arquivos possuia
10.1.2 EXT3
O sistema de arquivos EXT3 é uma evolução do EXT2. Neste novo sistema de arquivos
foram ampliados os tamanhos máximos de arquivos e partição, bem como a inclusão
de recursos muito esperados como journal de dados.
Fonte Wikipedia1
10.1.3 XFS
O XFS é um sistema de arquivos que foi desenvolvido pela Silicon Graphics. Este
sistema de arquivos é conhecido pela sua alta performance. Uma das mais
interessantes características deste sistema de arquivos é o redimensionamento on-
line de partições, não sendo necessário parar os serviços em produção para
desmontar as partições antes de realizar o redimensionamento.
Atributo Valor
Tamanho máximo de arquivo 8 exabytes
Tamanho máximo do volume 16 exabytes
10.1.4 ReiserFS
O sistema de arquivos ReiserFS foi desenvolvido pela empresa Namesys liderada pelo
Hans Reiser, daí a origem do nome. Algumas grandes distribuições chegaram a
patrocinar o desenvolvimento deste sistema de arquivos e colocá-lo como opção
padrão nos seus instaladores, porém após a publicação da suspeita do Hans Reiser ter
assassinado sua esposa as empresas imediatamente retiraram a opção no instalador
como opção padrão o cortaram seus investimentos.
Nos dias atuais o desenvolvimento do ReiserFS está na versão 4.
Atributo Valor
Tamanho máximo de arquivo 8 TiB
Tamanho máximo do volume 16 TiB
10.4 O fstab
O fstab é o arquivo que são inseridas todas os parâmetros sobre montagens de
dispositivos de armazenamento. Nele informamos quais as partições de um
determinado disco será montado, qual o tipo de sistema de arquivos utilizado, qual o
ponto de montagem, quais os parâmetros adicionais, se houve, inclusive se o
dispositivo será montando automaticamente durante a carga do sistema operacional.
Você poderá especificar um dispositivo no fstab através do seu nome ou através do
seu UUID. Para descobrir o UUID de um dado sistema de arquivos execute o comando
blkid.
# blkid /dev/sda5
/dev/sda5: UUID="eabca6fb-1691-4099-9f5d-530108348bf3" SEC_TYPE="ext2"
TYPE="ext3"
A vantagem de especificar uma partição desta forma é que a forma como um disco é
instalado na máquina a sua nomenclatura poderá ser alterada e especificando o UUID
a montagem será realizada com sucesso independente do nome do dispositivo.
# cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
# /dev/sda9
UUID=2fabdf08-df1c-4d21-9b6d-16799143003b / xfs relatime 0 1
# /dev/sda8
UUID=3029adab-70d2-4224-804d-c378120a49b0 /boot ext3 relatime 0 2
# /dev/sda6
UUID=f8ffbc24-da3e-4821-ae7e-7b9b8fde3799 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
/dev/sda3 /mnt/windows ntfs defaults,uid=1002,gid=1002 0 0
O campo file system é especificado qual é o sistema de arquivos que será montado.
Poderá ser especificado pelo nome, ex /dev/sda9 ou com o seu UUID, ex
UUID=2fabdf08-df1c-4d21-9b6d-16799143003b. Para obter o UUID de uma partição
execute o comando blkid.
O campo mount point é o diretório onde este sistema de arquivos está visível após a
montagem.
O campo type indica o tipo de sistema de arquivos, ex: ext2, ext3, xfs, jfs, ntfs, vfat,
reiserfs ou outros suportado pela distribuição.
O campo options especifica quais serão as opções utilizadas na montagem deste
sistema de arquivos. O valor default corresponde aos valores rw, suid, dev, exec,
auto, nouser e async. O valor rw indica que o sistema de arquivos será montado com
permissão de leitura e escrita, suid indica que esta função poderá ser utilizada neste
sistema de arquivos, dev indica que dispositivos de bloco ou caractere serão
interpretados, exec indica que arquivos poderão ser executados, auto indica que o
sistema de arquivos será montado automaticamente durante o boot, nouser indica
que somente o usuário root poderá montá-lo e async indica que o IO será realizado de
forma assíncrona.
O campo dump indica se será feito backup do sistema de arquivos através do dump. O
valor '0' indica que o dump não será realizado neste sistema de arquivos e '1' indica
que ao executar o dump ele será realizado neste sistema de arquivos.
O campo pass indica se a ordem na qual será verificado o sistema de arquivos durante
a execução do chkfs.
onde:
-c Comentário sobre o usuário. Normalmente o nome completo
-m Cria o home directory, caso não exista
-d Indica o home directory do usuário, se não for especificado será
/home/nome
-s Incida o shell, se não for especificado será utilizado /bin/sh
-g Indica o grupo primário do usuário
-G Grupos adicionais. Se vários, separe-os por vírgula
Para aceitar o valor padão, indicado entre cochetes '[' e ']', basta pressionar Enter.
Verifique que após a execução deste comando os valores encontrados na linha do
arquivo shadow referente ao usuário lja foram alterados.
tipo u g o
- r w x r w x r w x
onde:
u – usuário (user)
g – grupo (group)
o – outros (others)
r – leitura (read)
w – escrita (write)
x – execução (execute)
caractere '-' o substituiremos por '0'. Em seguinda formaremos grupos de três bits e
os converteremos para a representação octal.
Ex:
r w x r - x r - x
1 1 1 1 0 1 1 0 1
7 5 5
Por padrão o kernel grava diretórios com a permissão 0777 e arquivos com a
permissão 0666. Mas se você já observou os diretórios quando criados possuem a
permissão 0755 e os aquivos 0644. Isto se deve ao uso de uma máscara, que faz os
devidos ajustes para tornar o sistema mais seguro. Esta máscara faz uma subtração
em cada octeto das permissões padrão dos arquivo diretórios no momento da sua
criação.
Para diretorios:
0777 - 0022 = 0755
Para arquivos:
0666 - 0022 = 0644
12.2.1 SUID
Esta permissão aplica-se somente a arquivos. Com esta configuração ativa um
executável compilado, somente compilados, são executados com os privilégios do seu
proprietário, desprezando-se neste caso as permissões do usuário executor. O
comando ping é um executável do sistema que possui esta característica. A existência
desta permissão configurada em um arquivo no sistema é observada pela substituição
do caractere 'x' das permissões do usuário proprietário pelo caractere 's'. A
inexistência de permissão de execução pelo proprietário altera a representação
substituindo-se o caractere '-' pelo caractere 'S', em maiúsculo. A existência deste
caractere em maiúsculo alerta o administrador para uma falha de configuração, pois
conceder permissão de execução como o proprietário dono do arquivo e se este não
tiver permissão de execução não tem sentido algum.
$ ls -l /bin/ping
-rwsr-xr-x 1 root root 30856 2007-12-10 14:33 /bin/ping
12.2.2 SGID
Esta permissão funciona exatamente igual à permissão SUID quando configurada em
arquivos. Ao contrário do SUID, o SGID possui função quando configurado em
diretórios
Quando configurado em um diretório, o SGID faz com que arquivos e diretórios criados
dentro deste possuam o grupo proprietário igual ao do diretório, desprezando-se neste
caso o grupo primário do usuário criador do arquivo. A existência desta permissão
configurada em um arquivo no sistema é observada pela substituição do caractere 'x'
das permissões do grupo proprietário pelo caractere 's'. A inexistência de permissão
de execução pelo grupo proprietário altera a representação substituindo-se o
caractere '-' pelo caractere 'S', em maiúsculo.
Para adicionar GUID em um arquivo ou diretório execute:
$ chmod g+s nome_do_arquivo_ou_diretório
13.2 Discos
Os discos possuem uma variação na nomenclatura dependendo da tecnologia
utilizada. Os discos mais comuns até bem pouco tempo eram de tecnologia IDE. Estes
discos são apresentados ao sistema como /dev/hdX, onde X pode assumir as letras a,
b, c ou d variando com a controladora IDE primária e secundária e também se o
dispositivo está configurado como master ou slave.
$ ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 2009-02-25 10:35 /dev/sda
13.3 Links
Existem dois tipos de links: os simbólicos e os hard links.
Um link simbólico é simplesmente um atalho para o arquivo original. Após o
apagamento do arquivo original o link simbólico fica perdido, apontando para um
arquivo inexistente.
Já um hard link é uma nova entrada na tabela de inodes do sistema de arquivos, o que
significa que após o apagamento do arquivo original não há qualquer mudança no
comportamento do link. Na verdade um hard link não é um link, o efetio observado é
de um único arquivo que possui dois nomes.
14 Gerenciamento de processos
Cada processo em execução no sistema possui um identificador único. Através destes
identificadores nós podemos executar ações nestes, como aumentar ou diminuir sua
prioridade, terminar o processo e outras ações.
14.1 top
O top é um software que dá uma boa visão sobre os processos que estão execução.
Uma tela é exibida mostrando informações relevantes como: o tempo que o sistema
operacional está em execução, a quantidade de usuários conectados, a média de
carga, o uso da memória RAM e swap, além dos processos.
Para cada processo é exibido o seu PID (Process ID), o proprietário, o uso de memória,
CPU, o tempo de CPU e algumas outras informações.
Através do top também é possível interagir com os processos, como trocar a
prioridade ou encerrar (matar).
As colunas exibidas podem ser reorganizadas, também é possível definir qual será a
coluna pela qual os processos são classificados, por padrão os processos são
classificados pelo uso de CPU. Todas a interação com top é realizada pressionando-se
as teclas de função. Para consultar as teclas de função do top pressione a tecla 'h'.
Para sair do top pressione a tecla 'q'.
Abaixo será apresentada uma tabela com algumas teclas de função do top.
Tecla Função
q quit - Sair
h help - Ajuda
k kill - Encerrar (matar) um processo
r renice - Trocar a prioridade de um
processo
u user - Exibir somente processos
pertencentes a um determinado usuário
14.2 ps
O comando ps é utilizado para visualizar processos em execução. Diferente do top ele
não possui uma interface amigável, com os processos são apresentados na tela como
uma tabela estática. Com este comando é possível apenas visualizar os processos em
execução e para interagir com eles é necessária a utilização de comandos externos ao
ps, como o kill, killall e renice.
$ ps aux
14.3 kill
O comando kill é utilizado para encerrar processos em execução.
14.4 killall
O comando killall assemelha-se muito ao kill. Mas a diferença está na forma de
especificarmos qual será o processo a ser finalizado. Com ele passamos o nome do
processo que desejamos encerrar, e não o seu PID.
$ killall firefox
. . .
15.2 Variáveis
Variáveis são recursos utilizados pelo programador para fazer referência a dados que
podem ser alterados durante a execução do programa.
Uma variável poderá ser lida durante a execução do programa com o comando read.
16 Agendamento de tarefas
Agora que você construiu um script chegou a hora de agendar a sua execução. Este
agendamento poderá ser realizado utilizando-se a crontab ou o anacron. A diferença
básica entre utilizar o primeiro ou o segundo é que no primeiro o administrador
escolhe exatamente quando a tarefa deverá ser executada, já no segundo a
administrador escolhe quanto tempo decorrido de uso as tarefas poderão ser
executadas.
16.1 cron
Como foi dito anteriormente, com o cron o administrador irá escolher exatamente o
horário que suas tarefas serão executadas. Neste caso podemos agendar a tarefa
editandos-se a crontab do usuário ou dispondo o script nos diretórios cron.hourly,
cron.daily, cron.weekly ou cron.monthly. Abaixo iremos detalhar mais como fazer um
agendamento desta forma.
$ crontab opção
onde opção:
-l Lista a crontab do usuário
-e Edita a crontab do usuário
$ crontab -l
# m h dom mon dow command
30 2 * * 0 /usr/local/bin/backup.sh <== Todos os domingos às 2h30min
30 0 1 * * /usr/local/bin/envia_relatorio.sh <== Todo dia 1º à 0h30min
*/5 * * * * /usr/local/bin/sincronismo.sh <== A cada 5 minutos
onde:
m minuto (0-59)
h hora (0-23)
dom dia do mês (1-31)
mon mês (1-12)
dow dia da semana (0-domingo,
1-segunda,
2-terça,
3-quarta,
4-quinta,
5-sexta,
6-sábado e
7-domingo)
Existem ainda os diretórios em /etc. Para usá-los basta colocar os scripts ou links em
um dos diretórios abaixo conforme desejado:
16.2 anacron
Como vimos anteriormente, o cron assume que a máquina estará ligada no momento
da execução da tarefa, isto é perfeitamente aceitável para servidores, que
normalmente ficam ligados continuamente. Quando pretendemos fazer agendamento
de tarefas em Desktops nos deparamos com o problema de não sabermos com
segurança quais os horários que o equipamento estará ligado e pronto para executar
as tarefas agendadas.
O anacron veio para resolver este problema, ele não assume que a máquina está
ligada continuamente. Com a periodicidade especificada em dias sempre verifica
quando foi a última execução de uma determinada tarefa e, quando a máquina estiver
disponível, mesmo que ultrapassado o tempo especificado, a tarefa agendada será
executada.
O anacron lê as configurações armazenadas em /etc/anacrontab. Abaixo é mostrado o
conteúdo deste arquivo de configuração.
$ cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# vi /etc/samba/smb.conf
[global]
security = share
[softwares]
comment = Softwares para windows
path = /softwares
# /etc/init.d/samba restart
Agora o compartilhamento softwares poderá ser acessador através de qualquer
máquina windows existente na rede.
18 Consulta de comandos
Nesta seção alguns dos comandos mais importantes para um administrador. Alguns
deles serão utilizados durante as aulas, na execução dos laboratórios. A maioria
destes comandos são alvo de questões nas certificações LPI, então se você pretende
certificar-se estude cada um deles e aprenda as opções mais utilizadas. Para cada
comando serão listadas as opções mais utilizadas.
18.1 . ou source
Executa um script no shell atual.
Ex:
$ . /caminho/script.sh
source /caminho/script.sh
18.2 apt-cache
Busca por pacotes através das descrições dos pacotes.
SHA256: 37c33ba41151b142afbfebc2cab89028a7d95ef1d54a6736cea61fdcf289334a
Description: Apache HTTP Server metapackage
The Apache Software Foundation's goal is to build a secure, efficient and
extensible HTTP server as standards-compliant open source software. The
result has long been the number one web server on the Internet.
.
It features support for HTTPS, virtual hosting, CGI, SSI, IPv6, easy
scripting and database integration, request/response filtering, many
flexible authentication schemes, and more.
Homepage: http://httpd.apache.org/
Bugs: mailto:ubuntu-users@lists.ubuntu.com
Origin: Ubuntu
Task: lamp-server
18.3 apt-get
Instala e remove software
Usage: apt-get [options] command
apt-get [options] install|remove pkg1 [pkg2 ...]
apt-get [options] source pkg1 [pkg2 ...]
Commands:
update - Retrieve new lists of packages
upgrade - Perform an upgrade
install - Install new packages (pkg is libc6 not libc6.deb)
remove - Remove packages
autoremove - Remove automatically all unused packages
purge - Remove and purge packages
source - Download source archives
build-dep - Configure build-dependencies for source packages
dist-upgrade - Distribution upgrade, see apt-get(8)
dselect-upgrade - Follow dselect selections
clean - Erase downloaded archive files
autoclean - Erase old downloaded archive files
check - Verify that there are no broken dependencies
Options:
18.4 bash
Executa um shell script
$ bash script1
-x ==> executa em modo verbose.
$ bash -x script1
18.5 bzip2
Compacta arquivos.
# bzip2 arquivo
18.6 cat
Exibe na tela o conteúdo de um arquivo.
Ex: cat /etc/passwd
18.7 chgrp
Troca o grupo de um arquivo ou diretório.
# chgrp [GRUPO] arquivo
# chgrp root arq1
18.8 chmod
Altera permissões.
# chmod [PERMISSÃO] arquivo
18.9 chown
Altera o proprietário de um arquivo ou diretório.
# chown [PROPRIETÁRIO] arquivo
# chown aluno arq1
18.10 df
Exibe informações sobre o uso do sistema de arquivos.
Opções mais utilizadas:
-h – converte para KB, MB, GB, TB
-i – exibe inodes
$ df -h
$ df -i
18.11 dpkg
Gerenciador de pacotes das distribuições baseadas em Debian.
# dpkg [OPÇÃO] pacote
Opções mais utilizadas:
-i, --install – instala um pacote
-r, --remove – remove (desinstala) um pacote
-P, --purge – remove (desinstala) removendo arquivos de configuração
-l, --list – lista pacotes instalados
-L, --list-files – lista arquivos de um pacote instalado
-S, --search – procura por pacotes que contenham um determinado arquivo
# dpkg -i php-doc_20070501-1_all.deb
# dpkg -r php-doc
# dpkg -S smb.conf
# dpkg -L xterm
18.12 echo
Exibe um texto ou o conteúdo de uma variável na tela.
Opções: -n Não vai para a próxima linha após mostrar na tela.
Ex: echo -n “Iniciando backup: “
echo “Concluido.”
18.13 env
Mostra o conteúdo das variáveis de ambiente.
Ex: env
18.14 export
Exporta uma variável de ambiente
export DISPLAY=10.0.14.27:0
18.15 fdisk
Particiona um disco rígido.
# fdisk /dev/sda
18.16 file
Exibe o tipo de um arquivo.
$ file dsc06482.jpg
dsc06482.jpg: JPEG image data, EXIF standard 2.2
18.17 find
Realiza busca em uma árvore de diretórios.
$ find /home/kleber -type f -ctime +7
18.18 grep
Exibe linhas que coincidem com o critério de busca.
$ gzip aluno /etc/passwd <== Exibe linhas que contenham aluno em /etc/passwd
$ cat /etc/passwd | grep aluno <== O mesmo que a linha anterior
18.19 gzip
Compacta arquivos.
$ gzip arquivo1
18.20 gunzip
Descompacta arquivos que foram compactados com o comando gzip.
$ gunzip arquivo1.gz
18.21 halt
Desliga o sistema
Exemplo:
# halt
18.22 head
Exibe as primeiras dez linha de um arquivo.
Exemplo:
$ head /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
18.23 history
Exibe o histório de comandos do usuário corrente
opções: -c – limpa histórico
Exemplos:
$ history
1 ls
2 cat /etc/passwd
$ history -c
18.24 kill
Encerra (mata) um processo
Opções mais utilizadas:
-15 – encerra um processo
-9 – mata o processo
Exemplo:
$ kill -9 1728
18.25 locate
Localiza arquivos ou diretório. É necessário que a base esteja atualizada. Para
atualizar a base execute 'updatedb'.
$ locate passwd
18.26 ls
Lista um diretório. Na listagem são exibidos arquivos, diretórios, links, dispositivos de
caracte, dispositivos de bloco e pipes.
Opções mais utilizadas:
-l – lista longa
-h – transforma para KB, MB, GB e TB
-a – exibe todos os arquivos, inclusive ocultos
-t – classifica pela data de modificação
-r – inverte o critério de classficação
Exemplo:
$ ls -la
drwxr-xr-x 2 kleber kleber 4096 2009-04-06 23:30 Documents
-rw-r--r-- 1 kleber kleber 1969834 2009-02-01 11:45 dsc06482.jpg
18.27 lsmod
Lista os módulos carregados
$ lsmod
Module Size Used by
wlan_ccmp 15104 2
via 49280 0
drm 86056 1 via
af_packet 25728 2
binfmt_misc 16904 1
bridge 56980 0
stp 10628 1 bridge
18.28 lspci
Lista os dispositivos de hardware conectados ao sistema
$ lspci
00:10.4 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 86)
00:11.0 ISA bridge: VIA Technologies, Inc. VT8237A PCI to ISA Bridge
00:11.7 Host bridge: VIA Technologies, Inc. VT8251 Ultra VLINK Controller
00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 7c)
00:13.0 PCI bridge: VIA Technologies, Inc. VT8237A Host Bridge
00:13.1 PCI bridge: VIA Technologies, Inc. VT8237A PCI to PCI Bridge
01:00.0 VGA compatible controller: VIA Technologies, Inc. CN896/VN896/P4M900
[Chrome 9 HC] (rev 01)
04:01.0 Audio device: VIA Technologies, Inc. VT1708/A [Azalia HDAC] (VIA High
Definition Audio Controller) (rev 10)
18.29 ps
Exibe processos em execução
$ ps aux
kleber 6876 0.0 1.0 32432 9700 ? Sl 14:05 0:00 /usr/lib/evolut
kleber 6981 0.0 0.3 9256 3524 ? S 14:05 0:00 /usr/lib/gnome-
kleber 6982 0.0 1.0 37112 9204 ? S 14:05 0:01 python /usr/bin
postfix 7080 0.0 0.1 5800 1692 ? S 14:05 0:00 qmgr -l -t fifo
kleber 7089 0.0 1.5 23720 13616 ? S 14:05 0:00 /usr/lib/notifi
ntp 7206 0.0 0.1 4272 1216 ? Ss 14:05 0:00 /usr/sbin/ntpd
kleber 7258 5.7 16.4 255160 148348 ? Sl 14:06 7:11 /usr/lib/firefo
kleber 7591 2.1 9.4 208944 85176 ? Sl 14:22 2:20 /usr/lib/openof
kleber 7738 0.0 1.8 26404 16680 ? S 14:40 0:01 gcalctool
18.30 pwd
Exibe o diretório atual
$ pwd
/home/kleber
18.31 man
Exibe a página de manual
$ man crontab
18.32 mkdir
Cria diretórios
mkdir /home/kleber/especializa
mkdir ~/especializa
mkdir especializa
18.33 mkfs
Cria e formata um sitema de arquivos.
# mkfs.ext3 -j /dev/hda5
18.34 mount
Monta um sistema de arquivos.
# mount /dev/hda5 /dados
18.35 mv
Move e/ou renomeia arquivos ou diretórios.
$ mv arq1 especializa/linux/aula1
$ mv arq1 arq2
18.36 rpm
Gerencia pacotes em sistemas baseados em RedHat.
# rpm -i pacote
# rpm -e pacote
18.37 rm
Apaga arquivos e diretórios
$ rm arq1 arq2 arq??
Opções mais utilizadas:
-r – recursive. Apaga diretório e arquivos
-f – foce. Não solicita confirmação antes de apagar
18.38 rmdir
Apaga diretórios vazios
$ rm especializa
18.39 shutdown
Desliga ou reinicia o sistema.
# shutdown -r now
# shutdown -h now
18.40 tail
Exibe as dez últimas linhas de um arquivo.
Opções frequentemente utilizadas:
-n <numero> Quantidades de linhas. Se não informado o padrão é 10.
-f Continua mostrando as últimas linhas até que o usuário cancele
utilizanco Ctrl+C.
18.41 tar
Empacota arquivos ou diretórios. Pode ser utilizado para compactar com o uso de
compactadores externos, como o gzip e bzip2.
$ tar [opções] arquivo_de_saida diretorio_arquivo_entrada
# tar cvf arquivo1.tar dir1 dir2 <== cria pacote arquivo1.tar com os diretórios
dir1 e dir2
# tar xvf arquivo1.tar <== extrai conteúdo de arquivo1.tar
# tar zcvf arquivo1.tar.gz dir1 <== cria pacote compactado com gzip
arquivo1.tar.gz com os diretórios dir1 e dir2
Onde opções pode ser:
z – compacta com gzip
j – compacta com bzip2
c – cria pacote
x – extrai pacote
v – modo verbose
f – indica que o nome do arquivo será fornecido
18.42 top
Gerenciador de processos.
$ top
18.43 touch
Cria arquivo vazio ou atualiza hora de modificação e acesso, caso exista.
$ touch /tmp/arq1
18.44 uniq
Exibe o conteúdo de um arquivo sem repetir linhas iguais.
$ uniq /caminho/arquivo
18.45 umount
Desmonta um sistema de arquivos
# umount /dados
18.46 uname
Exibe informações sobre o kernel em execução.
Usage: uname [OPÇÃO]...
Exibe certas informações do sistema. Sem opção é o mêsmo que -s.
18.47 updatedb
Atualiza banco de dados para uso do locate.
# updatedb
18.48 uptime
Exibe quanto tempo o sistema está em operação.
$ uptime
18.49 wc
Conta palavras.
-l – conta linhas
cat /etc/passwd | wc -l
18.50 which
$ man which
WHICH(1)
NAME
which - locate a command
SYNOPSIS
which [-a] filename ...
DESCRIPTION
which returns the pathnames of the files which would be executed
in the current environment, had its arguments been given as commands in a
strictly POSIX-conformant shell. It does this by searching the PATH for
executable files matching the names of the arguments.
OPTIONS
-a print all matching pathnames of each argument
EXIT STATUS
0 if all specified commands are found and executable
18.51 whereis
Exibe onde está localizado um comando do sistema.
$ whereis uname
uname: /bin/uname /usr/share/man/man1/uname.1.gz
18.52 yum
Instala softwares em distribuições baseadas em RedHat. É semelhante ao apt-
get/aptitude nas distribuições baseadas em Debian.
# yum install httpd
19 Exercícios
1. O que significam os caracteres '$' ou '#' no prompt do usuário?
a) '$' usuário comum e '#' usuário root
b) '$' usuário root e '#' usuário comum
c) '$' usuário bloqueado e '#' usuário desbloqueado
d) '$' usuário com senha fraca e '#' usuário com senha forte
2. Quais comandos abaixo podem ser utilizados para obter ajuda?
a) howto, info, help, search e man
b) info, help, manpage, whereis e howto
c) info, help, whatis, apropos e man
d) help, whatis, apropos, howto e info
3. Qual(ais) definições abaixo estão corretas?
a) help – ajuda para comando externos
b) whatis – indica onde estão os arquivos de ajuda do sistema
c) apropos – procura referências nas páginas de manual
d) man – navega nas páginas de manual
4. São exemplos de comandos internos
a) for, cd, alias, help
b) cp, mkdir, if, history
c) while, whatis, cp, reboot
d) shutdown, help, cd, cp
5. O sistema poderá ser desligado executando-se quais dos comandos abaixo?
a) shutdown -r now, halt, init 6
b) halt, poweroff, init 0, shutdown -h now, telinit 0