Você está na página 1de 31

Hardlinks, Softlinks e System V

Conteúdo da Aula

Hardlinks, Softlinks e Inodes


Runlevels
Runlevel Padrão
Scripts Padrão LSB
Insserv e chkconfig
Hardlinks, Softlinks e System V
Hardlinks, Softlinks e Inodes

Quando um sistema de arquivos é aplicado sobre uma partição é


criada uma estrutura de alocação numérica, chamamos os índices
dessa estrutura de inodes (números de nó).

Todo componente armazenado nesse sistema tem seus dados


reais alocados em inodes, quando criamos uma entidade (arquivo,
diretório, link, pipe, etc..) e o nomeamos, esse nome serve apenas
para rotular um inode. Diferente dos rótulos que utilizamos para
identificar as entidades do sistema, inodes são únicos em cada
sistema de arquivos e não podem ser referenciados de fora da
partição que residem.
Hardlinks, Softlinks e System V
Hardlinks, Softlinks e Inodes

Com base no que foi dito anteriormente podemos afirmar que o


inode é o endereço de alocação dos dados em um sistema de
arquivos, e que o nome dado a entidade criada serve apenas para
rotular o inode afim de facilitar o acesso a seu conteúdo.
Inodes podem possuir mais de um rótulo, chamamos esse recurso
de Hardlink, Hardlinks funcionam somente dentro do sistema de
arquivos que o inode reside, ele só pode ser utilizado na partição
onde o sistema de arquivos dono do inode esta aplicado, isso
significa que você não poderá acessar um inode de /dev/sda4
montado em /home com filesystem ext4 a partir de /dev/sda6
montado em /tmp com filesystem ext4.
Hardlinks, Softlinks e System V
Hardlinks, Softlinks e Inodes

O inode residente em /dev/sda4 com filesystem ext4 montado


em /home só poderá ser acessado dentro de /home, devido a
estrutura aplicada na partição ser única.

Podemos sair dessa limitação trabalhando com Softlinks, Softlinks


são atalhos para rótulos e não possuem nenhuma limitação de
acesso por não estarem relacionados a inodes e sim a rótulos
(nomes). Um softlink pode acessar dados entre filesystems
distintos, porém o softlink deixa de funcionar se seu destino for
movido ou excluído.
Hardlinks, Softlinks e System V
Hardlinks, Softlinks e Inodes

Crie um arquivo chamado boot.txt e verifique seu inode


# touch boot.txt ; ls -i boot.txt

Busque maiores informações sobre ele


# stat boot.txt

Crie um hardlink para esse arquivo e verifique o inode dos rótulos


# ln /root/boot.txt /etc/boot-bkp.txt
# ls -i /root/boot.txt /etc/boot.bkp.txt
Hardlinks, Softlinks e System V
Hardlinks, Softlinks e Inodes

Envie conteúdo para um dos rótulos


# ls -lh > /etc/boot-bkp.txt

Verifique o conteúdo alocado no inode


# cat boot.txt
# cat /etc/boot-bkp.txt

Apague o primeiro rótulo criado


# rm boot.txt
Hardlinks, Softlinks e System V
Hardlinks, Softlinks e Inodes

Verifique o rótulo do inode em /etc


# cat /etc/boot-bkp.txt

Mesmo com o “arquivo” original excluído o conteúdo do “arquivo”


continua acessível através do rótulo secundário, concluímos então
que os nomes dados a entidades do sistema nada mais são que
abstrações para facilitar o acesso a inodes, onde realmente ocorre
o armazenamento de dados reais.
Hardlinks, Softlinks e System V
Hardlinks, Softlinks e Inodes

Agora crie um Softlink para o arquivo residente em /etc


# ln -s /etc/boot-bkp.txt /home/boot2.txt

Envie mais conteúdo para o arquivo


# du -sh /boot >> /etc/boot-bkp.txt

Acesse o conteúdo do arquivo via Softlink


# cat /home/boot2.txt
Hardlinks, Softlinks e System V
Hardlinks, Softlinks e Inodes

Verifique informações sobre os inodes envolvidos


# ls -i /etc/boot-bkp.txt /home/boot2.txt

Liste os arquivos com maiores informações


# ls -lhi --color /etc/boot-bkp.txt /home/boot2.txt

Crie um novo Hardlink para /etc/boot-bkp.txt


# ln /etc/boot-bkp.txt /root/boot_orig.txt
Hardlinks, Softlinks e System V
Hardlinks, Softlinks e Inodes

Verifique informações sobre os inodes envolvidos


# ls -i /etc/boot-bkp.txt /home/boot2.txt /root/boot_orig.txt

Envie conteúdo através do novo hardlink e verifique o resultado


# df -Th /boot >> /root/boot_orig.txt
# cat /home/boot2.txt

Remova o arquivo /etc/boot-bkp.txt e tente acessa-lo via Softlink


# rm /etc/boot-bkp.txt ; cat /home/boot2.txt
Hardlinks, Softlinks e System V
Hardlinks, Softlinks e Inodes

Verifique informações sobre os inodes envolvidos


# ls -lhi --color /home/boot2.txt /root/boot_orig.txt

Acesse os dados via Hardlink


# cat /root/boot_orig.txt

Note que o Softlink funciona como um “atalho”, que ao ter seu


target removido perde a referência e consequentemente não
encontra mais as informações armazenadas naquele caminho.
Hardlinks, Softlinks e System V
Sistema de Inicialização System V

O Padrão System V define, entre outras coisas, como deve ser a


inicialização dos serviços do sistema, trabalhando com níveis de
inicialização, os chamados “runlevels”.

A inicialização do sistema é iniciada através do boot loader onde


ocorre a escolha do sistema operacional que irá iniciar na
máquina, após a escolha do sistema e iniciado o carregamento do
kernel em memória para controlar o sistema. Uma vez que o kernel
já esteja controlando a máquina, é iniciada a fase de inicialização
de serviços necessários para o sistema, este será nosso assunto
nos próximos slides.
Hardlinks, Softlinks e System V
Runlevels Debian

0 → Halt (Desligamento)
1,S,s → Single, apenas root (Manutenção, sem rede)
2–5 → Multiuser (Multiusuário com GUI)
6 → Reboot (Reboot de sistema)

OBS: No Debian o runlevel padrão é o 2, o sistema não faz


distinção entre runlevels 2 ao 5 e pode ter qualquer um destes
runlevels personalizados pelo administrador.
Hardlinks, Softlinks e System V
Runlevels Red Hat (CentOS)

0 → Halt (Desligamento)
1,S,s → Single, apenas root (Manutenção, sem rede)
2 → Multiusuário sem NFS (Modo texto)
3 → Multiusuário (Modo texto)
4 → Editável
5 → Multiusuário com GUI (Padrão)
6 → Reboot (Reboot de sistema)
Hardlinks, Softlinks e System V
Runlevel Padrão

Descubra em qual runlevel o sistema esta


# runlevel

Verifique qual runlevel padrão tanto no Debian Quanto no CentOS


# grep initdefault /etc/inittab

Verifique o diretórios de links System V → Debian e CentOS


# ls -lhd --color /etc/rc?.d
Hardlinks, Softlinks e System V
Scripts de Inicialização

Verifique os sinais de controle utilizados

# ls -lh --color /etc/rc?.d/ | less


# ls -lh --color /etc/rc.d/rc?.d | less

Verifique os reais scripts e binários de inicialização de serviços nos


dois sistemas

# ls -lh /etc/init.d/
Hardlinks, Softlinks e System V
Scripts de Inicialização

Manipule um serviço pelo seu caminho absoluto


# /etc/init.d/rsyslog stop
# /etc/init.d/rsyslog start
# /etc/init.d/rsyslog restart

Trabalhe com o service para manipular um serviço


# service rsyslog stop
# service rsyslog start
# service rsyslog restart
Hardlinks, Softlinks e System V
Scripts de Inicialização

No Debian a forma antiga de manipular serviços era através da


execução dos comandos update-rc.d e invoke-rc.d

Verifique o arquivo /etc/rc.local.


# cat /etc/rc.local

Verifique como funciona um script de inicialização


# head -n 20 /etc/init.d/rsyslog → CentOS 6
Hardlinks, Softlinks e System V
Scripts de Inicialização

Required-start → Serviços inicializados antes de executar


Required-stop → Serviços parados antes de finalizar
Should-start → Executado somente após
Should-stop → Finalizado somente após
$local_fs → Serviços locais de filesystem
$network → Baixo nível de rede
$named → Serviços de resolução de nomes
$portmap → Serviço de mapeamento de portas
$remote_fs → Serviços remotos de filesystem
Hardlinks, Softlinks e System V
Insserv e Chkconfig

Verifique um serviço no boot do Debian


# ls -lh /etc/rc2.d/*rsylog

retire o serviço da inicialização


# insserv -rv rsyslog

Verifique novamente o link do serviço


# ls -lh /etc/rc2.d/*rsylog
Hardlinks, Softlinks e System V
Insserv e Chkconfig

Coloque o serviço novamente no boot


# insserv -dv rsyslog

Verifique novamente o link do serviço


# ls -lh /etc/rc2.d/*rsylog

Verifique os serviços ativos no boot do CentOS


# chkconfig --list
Hardlinks, Softlinks e System V
Insserv e Chkconfig

Filtre um serviço especifico


# chkconfig --list rsyslog

Encontre o link do serviço no runlevel padrão


# ls -lh --color /etc/rc.d/rc5.d/*rsyslog

Desative o serviço da inicialização


# chkconfig rsyslog off
Hardlinks, Softlinks e System V
Insserv e Chkconfig

Verifique o resultado do comando


# chkconfig --list rsyslog

Habilite o serviço somente no runlevel 5


# chkconfig --level 5 rsyslog on

Verifique o resultado do comando


# chkconfig --list rsyslog
# ls -lh --color /etc/rc.d/rc5.d/*rsyslog
Hardlinks, Softlinks e System V
Insserv e Chkconfig

Adicione o serviço em todos os runlevels


# chkconfig --level 0123456 rsyslog on

Verifique o resultado do comando


# chkconfig --list rsyslog
# ls -lh --color /etc/rc.d/rc?.d/ | grep rsyslog
Hardlinks, Softlinks e System V
Insserv e Chkconfig

Desabilite o serviço dos runlevels 0, 1 e 6


# chkconfig --level 016 rsyslog off

Verifique o resultado do comando


# chkconfig --list rsyslog
# ls -lh --color /etc/rc.d/rc?.d/ | grep rsyslog
Hardlinks, Softlinks e System V
Insserv e Chkconfig

Remova o serviço de todos runlevels


# chkconfig rsyslog --del

Verifique o resultado do comando


# chkconfig --list rsyslog
# ls -lh --color /etc/rc.d/rc?.d/ | grep rsyslog
Hardlinks, Softlinks e System V
Insserv e Chkconfig

Adicione o serviço de todos runlevels


# chkconfig rsyslog -add

Verifique o resultado do comando


# chkconfig --list rsyslog
# ls -lh --color /etc/rc.d/rc?.d/ | grep rsyslog

Você também pode gostar