terça-feira, 17 de outubro de 2017

Falando um pouco de Linux


1 ADMINISTRAÇÃO LINUX E CERTIFICAÇÃO LPIC-1 101

# rede social livre (www.Icenter.com.br) @Juliano Ramos
# IBRATI (Instituto Braisileiro de Tecnologia da Informação - SP)
# ISBIT (Instituto Social Brasileito de Inclusão Tecnológica)

1.1 Origem do GNU/Linux
Linus Torvalds criador do Linux com a junção do Unix que juntos formam Linux. Projetado na década de 1960, realizado em Massachusets (MIT) Institute of Tecnology. Ken Thompson, pesquisador do Multics que trabalhava na Bell Labs, tinha uma ideia de criar algo melhor que o atual Multics.

Dennis Ritchie rescreveu todo o sistema Unix numa linguagem de alto nível, chamada C desenvolvida por ele mesmo. A AT&T em 1983 fez modificações no Multics e foi lançado o Unix System IV.

O Minix é uma versão do Unix, gratuita com o código fonte disponível. Agora a partir daqui, entra Linus Torvalds, estudante de Ciência da Computação da Universidade de Helsinki, na Finlândia, por Hobby Linux decidiu desenvolver um sistema mais poderoso que o Minix.

A primeira versão saiu em 1994, versão 1.0. O Linux é um sistema operacional livre, e re-implementado das especificações POSIX (padronização da IEE, Instituro de Engenharia Elétrica e Eletrônica).

1.2 Linus Benedict Torvalds
# É o criador do Kernel do sistema operacional GNU/Linux;
# Nasceu em Helsinque República da Finlândia em 28 de Dezembro de 1969;
# No ano de 1991 lançou seu projeto

1.3 GNU, GPL e Software Livre
# O projeto GNU que significa (GNU'S Not Unix) gnu não é unix;
# Iniciado em 1994 por Richard Stallman
# O projeto não tinha um Kernel apenas ferramentas
# Neste tempo Linux lança seu Kernel livre - daí o nome GNU/Linux

1.4 Richard Matthew Stallman
# Nasceu em Nova Iorque em 16 de março de 1953;
# Considerado um grande Hacker, fundador do movimento Software Livre;
# Tem dedicado ao ativismo político desde os anos 90;
# Criador da fundação do Software Livre (FSF);

2. DISTRIBUIÇÕES DE GNU/LINUX
# Um distribuição ou distro de Linux é um Unix-Like do Kernel Linux;
# Com grandes aplicações criada pelo GNU;
# Algumas são mantidas por organizações comerciais como a Red Hat;
# Ubuntu, Suse, Mandriva são mantidas pela Debian

2.1 As Distros mais Conhecidas
# 1992, SSL (Softlanding Linux System) criada por Peter MacDonald
# Slackware Linux, 1993 por Patrick Volkerding
# * distro baseada em Slackware
# * GoblinX
# * Slax
# * VectorLinux
# * Zenwalk
# * Kate OS
# * Suse Linux

# Debian Linux, 1993, por Ian Murdock apoia pela comunidade FSF
# distro baseada em Debian
# Knoppix
# Kurumin
# Ubuntu
# Linux Mint
# Kali Linux

# Suse Linux, 1992, fundada na Alemanha por uma companhia S.U.S.E;
# Hoje pertence a empresa Novell para fins comerciais;
# Red Hat Linux, 1993, por Bob Young da ACC Corporation;
# É uma distro para fins corporativos

3. INSTALANDO UMA DISTRIBUIÇÃO DE GNU/LINUX
# Trisquel GNU/LINUX - Por que ele?
# Ubuntu da Canonical correm código proprietário em configurações;
# Nvidia, Adobe, Oracle;
# Essas empresas tem código no kernel do Ubuntu;
# Não faz o Ubuntu ser totalmente Livre;
# Lista de Software Livre (http://www.gnu.org/distros/free-distro.html)

3.1 Como é feito o Trisquel?
# Baseado no Ubuntu;
# Fazer um espelho local do Ubuntu e limpá-lo;
# Limpar é executar um script todos os dias excluindo software;
# Trisquel usa o Kernel do Linux-Libre;

3.1.1 Passo 1 - Fazer o download
# Link (http://trisquel.info/en/download)

3.1.2 Passo 2 - Gravar corretamentea imagem de CD
# Trisquel é distribuído em (.iso)
# Microsoft Windows7, clique com botão direito > gravar imagem
# Coloque o CD ou DVD virgem e clique em queimar imagem

3.1.3 Passo 3 - Configurar sua BIOS para dar inicio pelo CD/DVD
# Ao iniciar clique em F11 para entrar na BIOS
# Procure por boot e configure para iniciar pelo CD-ROM
# Clique em salvar e sair

3.1.4 Passo 4 - Instalar
# Após iniciar o sistema clique no ícone "install trisquel"
# Escolha seu idioma
# Aqui vai verificar se está conectado a internet
# clique em forward

3.1.5 Passo 5 - Particionamento de disco
# Utilizar o disco inteiro significa que vai apagar todos os arquivos
# Recomandado usar Máquina Virtual 
# clique em Install Now;
# Selecione sua localidade;
# Selecione seu layout de teclado;
# Defina seu usuário e nome da máquina com senha;
# Faça a reinicialização do sistema e retire do Drive de disco

3.2 Após a Instalação
# Recursos básicos para uso doméstico;
# Verifique se os pacotes de idioma estao corretamente instalados;
# menu > inicio > configuração do sistema > suporte a idioma
# Com o suporte de idioma setup vamos conhecer alguns recursos;

3.2.1 Navegador Abrowser
# menu > inicio > internet > web abrowser
# O navegador é um fork do FireFox porque apenas o software é livre
# Add-ons não livres não estão disponíveis por padrão no abrowser
# O abrowser usa o gnash (player de flash livre)
# abrowser > complementos > adicionar > add-ons

3.2.2 Mensageiro Pidgin
# Se usa mensageiros como Gtalk, MSN, AIM, Facebook etc...

3.2.3 Suíte BrOffice
# A suíte escritório BrOffice é uma versão nacional do LibreOffice;
# OpenOffice é a suíte mais conhecida pela GNU/Linux

4. SOBRE A LPI
# A LPI surgiu em 1999 com o objetivo de criar uma certificação;
# O LPI conta com três níveis; LPIC-1, LPIC-2, LPIC-3;
# Para cada nível pretende certificar um profissional apto;
# LPIC-1
# arquitetura de sistema - peso 8;
# instalação do Linux e gerenciamento de pacotes - peso 11;
# comando GNU e Unix - peso 26;
# dispositivos e sistemas de arquivos - peso 15;
# O peso representa o grau de importância no exame;

4.1 Como marcar a prova
# Acesse (http://www.ipi.org);
# Faça seu cadastro para ter um LPI-ID escolha seu centro Pearson VUE
# (http://www.pearsonvue.com) selecione Linux Profissional Institute;
# Por último Brasil, escola o Estado;

4.1.2 Ajuda na Web
# Grupo LPI (http://www.Icenter.com.br)
# Simulados 
# (http://www.tdpl.org/)
# (http://www.linux-praxis.de/Ipisim/Ipi.html)
# (http://Ipibrasil.com.br/Lime4linux/index.php/survey/index

4.2 Arquitetura de Hardware - Peso 8
# Sistemas Operacionais controlam recursos para execução de programas;
# O programador precisa ter conhecimento das plataformas

4.2.1 Kernel dos Sistemas Operacionais
# O Kernel é a parte mais importante de qualquer sistema operaciona;
# Kernel são implementados de duas formas Monolítico e Microkernel
# Monolítico
# é estruturado em um único arquivo binário;
# um único processo que executa inteiramente em modo protegido;
# Possui desenpenho superior na passagem de mensagem
# Possui desvantagem em desperdícios de recursos e memórias

# MicroKernel
# apenas uma pequena parte do núcleo é executado;
# roda em modo protegido apenas para acessar o hardware
# responsável pela comunicação entre processos e gerência de memória;
# possui um desenpenho inferior ao Monolítico
# podem alterar suas partes sem a necessidade de reiniciar a máquina;

4.3 Interrupções
# Para que tudo funcione é necessário alocação de recurso;
# IRQ requisições de interrupções
# DMA acesso direto a memória
# as portas de entrada e saída são endereços de memória reservados;
# os dispositivos podem acessar mais de uma porta ou endereços;
# um placa de som padrão usa as portas 0x220, 0x330, 0x388
# cada dispositivo possui um endereço de porta único;
# o acesso direto a memória (DMA) permite transferência de dados;
# Não há intervenção do processador - feito através de canais;
# Há dois controladores de DMA;
# O primeiro controla canais de 0-3;
# O segundo controla canais de 4-7, com total de 8 canais;
# IRQ são chamadas feita pelos dispositivos ao processador mais atenção
# São 16 interrupções de Hardware que podem ser compartilhadas;
# Interrupções
# geradas pelo programa com uso de instruções;
# por erro, divisão por zero, memória fora do espaço permitido;
# por tempo, como no escalonamento;
# falha de harware;
# entrada e saída de dados, final de operação ou condição de erro;

4.4 BIOS
# A BIOS (Basic Input Output System);
# É um software gravado na memória flash na placa-mãe;
# Responsável pelos testes de hardware e reconhecer os dispositivos;
# Nem sempre são reconhecidas automaticamente;
# Placa de vídeo, som, rede SCSI, placas aceleradores,
# Para visualizar portas e saídas use o comando;
# cat /proc/ioports
# Para os canais de DMA no sistema use o comando;
# cat /proc/dma

4.5 Dispositivos PCI
# Durante o boot, o Kernel detecta os dispositivos PCI
# A lista das placas podem ser encontradas no /proc/pci
# lspci
# -v mostra informações detalhadas;
# -vv mostra ainda mais inforamções;
# -x mostra os primeiros 64 bytes da configuração PCI hexadecimal;
# -n mostra os códigos fornecido pelos fabricantes;

4.5.1 lsusb
# O comando lsusb é utilizado para visualizar os dispositivos USB;
# lsusb -v mostra detalhes sobre cada dispositivo
# O kernel do Linux possui um sistema de reconhecimento de hardware;

4.5.2. sysfs
# O sysfs é um recurso do Kernel 2.6 para exportar informações úteis;
# O sysfs é montado no diretório /sys
# Os principais diretórios são;
# block;
# bus;
# class;
# devices;
# firmware;
# fs;
# kernel
# module;
# power

4.5.2.1 Block
# Diretório que contém subdiretórios para cada sistema bloco de arquivo
# Para discos rígidos principalmente;
# sda e sr0

4.5.2.2 Bus
# Este diretório contém subdiretórios para cada tipo de barramento;
# Cada subdiretório contém os diretórios devices e drivers;
# Devices: lista dos dispositivos encontrados que são de barramento;
# Drivers: contém os drivers de dispositivos de barramento;

4.5.2.3 Class
# Representa cada classe de dispositivos que é registrado no Kernel;
# Indicam o tipo de dispositivo, de impressoras etc...
# Cada subdiretório terá um diretório sobre o tipo da classe;
# Exemplo: /sys/class/net/eth0

4.5.2.4 Devices
# Contém a hierarquia global dos dispositivos encontrados no Kernel;
# Sua hierarquia obedece a organização dos dispositivos;
# Obedece também ao tipo de conexão elétrica eles estão conectados;
# Dispositivos de plataforma
# Controladores seriais e paralelo
# Dispositivos de sistema
# CPUs
# APICS
# Temporizadores

4.5.2.5 Firmware
# Verificar e atribuir objetos específicos de firmware
# Firmware são códigos executado durante o processo de carga da máquina

4.5.2.6 Module
# Contém os módulos de Kernel carregados para a memória;
# Os módulos são pedaços de programas que podem ou não ser parte Kernel

4.5.2.7 Power
# Representa o subsistema de gerenciamento de energia

4.5.2.8 Udev
# Responsável por maner a estrutura do diretório /dev
# /dev contém links que representam os dispositivos
# somente os dispositivos listados podem conectar na estrutura /dev
# é executado na forma do programa chamado udevd em modo servidor
# (daemon) fica escutando os eventos do Kernel para encontrar disposi..

4.6 Configurando modems e placas de som
# Modems palavra derivada de modular e demodular;
# Dispositivo que modula um sinal digital para a forma analógico;
# Capaz de transmitir informações através de linhas telefônicas;
# Tipos;
# interno;
# externo;
# softmodem;

4.6.1 Externo
# Modem externo utiliza um fonte de alimentação externa;
# conectado através de micro, cabo serial RS-232, porta /dev/ttys0
# (COM1) ou /dev/ttys1 (COM2)

4.6.2 Interno
# Modem interno é conectado à um barramento ISA ou PCI;
# Porta serial /dev/ttys2 ou /dev/ttys3

4.6.3 Softmodem ou Winmodem
# Desenhada especialmente para Microsoft;
# HSP (Host Signal Processor) 

4.6.4 Setserial
# Este utilitário foi desenvolvido para configurar portas no Linux
# Não é padrão no Debian devido ao desuso, o comando é;
# setserial /dev/ttys0 irq 4
# porta /dev/ttys0 (COM1) o IRQ 4

4.6.7 Dispositivos de Som
# Placas de som podem utilizar barramento ISA, PCI ou embutidas;
# Recursos utilizados são;
# IRQ 5
# DMA 1
# DMA 16
# Portas 0x220, 0x330, 0x388;
# O Linux suporta dois tipos de som;
# OSS ( Open Sound System)
# ALSA (Advanced Linux Sound Architecture)
# para utilizar o dispositivo de som use o comando;
# modprobe nome_do_módulo
# caso não saiba o nome do módulo use;
# lsmod
# os recursos disponíveis em /dev/audio, /dev/dsp e /dev/mixer

5. CONFIGURAR DISPOSITOVS NÃO IDE
# Há dois tipos de dispositivos SCSI 8 e 16 bit
# 8 bit inclui o controlador
# 16 bit inclui o controlador
# Dispositivos SCSI são identificados por três conjuntos SCSI_ID;
# O canal SCSI, cada adaptador SCSI suporta um canal de dados
# No canal são anexados dos dispositivos SCSI, começam do zero;
# O ID do dispositivo, cada um tem seu ID único
# A gama de IDs vai de 0 - 7 em controldores de 8 bit
# 0 - 15 em controladores de 16 bit, o ID do controlador é 7
# O número lógico da uninade (LUN)
# Usado para determinar diferentes tipos de dispositivos SCSI
# Todos os dispositivos SCSI são listados em /proc/scsi/scsi
# cat /proc/scsi/scsi/
# scsi_info /dev/scd0 
# por padrão o dispositivo SCSI de boot é o de ID 0;
# que pode ser alterado na BIOS

5.1 Configurar Placas de Expanção para PCS
# conhecimento sobre coldplug, hotplug e inspeção de hardware
# coldplug significa a impossibilidade de se conectar sem desligar
# exemplos de coldplug são PCI, ISA e IDE, CPU e pentes de memórias
# hotplug é o sistema que permite conectar novos dispositivos
# exemplo de hotplug dispositivos USB
# hotplug é incorporado ao núcleo do Kernel 2.6
# trabalha junto com subsistema udev que atualiza os arquivos /dev

6. CONFIGURANDO DISPOSITIVOS DE REDE
# Identificar o tipo de barramento que ele utiliza
# Se for ISA pode alterar a configuração de jumpers e atualizar
# E/S e IRQs, use o comando lspci para identificar o modelo PCI, CNR
# Modelo que utilizam barramento PCI dispensam configuração manual
# Para consultar o endereço e a interrupção utilizada pelo dispositivo
# comando cat /proc/interrupts
# comando cat /proc/ioports
# para carregar o módulo do seu dispositivo
# comado modprobe 8139too
# Este módulo dá suporte as placas Realtek deste modelo
# Algumas placas ISA precisam que o endereço E/S e IRQ seja passados
# comando modprobe ne io=0x300 irq=10
# O Linux suporta que os módulos seja carregados automaticamente;
# as configurações deve ser feitas no arquivo /etc/modules.conf
# No Debian /etc/modules
# Exemplo: Alias eth0 8139too
# Alias eth1 ne
# Option ne io=0x300 irq=10

6.1 Configurando IP Estático
# O Provedor configura IP, Máscara de rede, Gateway, Servidor DNS,
# Pode utilizar o comando ifconfig para configurar 
# ifconfig eth0 200.150.233.45 up netmask 255.255.255.0
# Já o Gateway usa o comando route
# route add default gw 200.150.233.1 dev eth0
# O endereço do servidor
# echo "nameserver 8.8.8.8" >> /etc/resolv.conf

6.2 Configurando IP dinâmico via DHCP
# Os cliente mais comuns são dhcpd e o pump
# Usando pump
# pump -i eth0 -status
# para devolver um endereço IP
# pump -i eth0 -release
# para solicitar um endereço IP
# pump -i eth0
# O cliente dhcd é mais simples 
# dhcpd eth0
# para devolver o endereço
# dhcpd -k eth0
# para Debian
# dhclient eth0

6.3 Configurando IP dinâmico usando PPPoX
# No Brasil utiliza modems DSL, como Virtua, Velox, Speed etc...
# Aceitam dois tipos de mecanismos para estabelecer conexões:
# Bridged/DHCP ou PPPoX
# Ambos tem a tarefa de receber o endereço IP
# O mais importa é saber qual dos dois é utilizado
# Para conta PPPoE instale o pppoeconf
# apt-get install pppoeconf

6.4 Configurando Dispositivos USB
# O Bus Seial Universal(Universal Serial Bus, USB)
# É um tipo de interface usada para se conectarem a periféricos
# tipo: teclado, câmeras, impressoras, scanners etc...
# Passo 1, identificar qual chip é utilizado na sua placa mãe;
# comando lspci -vt
# para placa-mãe da INTEL ou VIA necessário subir módulo USB-uhci
# comando: modprobe usb-uhci
# para placa-mãe OPTi, SIS, ALi, Compaq, Apple, subir USB-ohci
# comando: modprobe usb-ohci

6.4.1 Topologia USB
# Os dispositivos USB são conectados a um host em uma árvore;
# Com um número qualquer de dispositivo hub;
# Com o comado lsusb pode-ser ver os dispositivos conectados no sistema
# comando: lsusb -t

6.5 Controladores USB
# Existem três tipos de controladores host USB;
# OHCI (Open Host Controller Interface)
# UHCI (Universal Host Controller Interface)
# EHCI (Enhaced Host Controller Interface)
# Os controladores OHCI, UHCI, ambos são USB 1.1 velocidade 12Mbps
# Os controladores EHCI, são USB 2.0 velocidade 480Mbps

6.5.1 Ferramenta para Configuração de dispositivos USB
# usbmgr e hotplug são ferramentas automáticas de configuração;
# usbmgr fica em /etc/usbmgr.conf
# o hotplug foi introduzido no Kernel 2.4
# reconhece USB, PCI Cardbus, (PCMCIA) IEEE 1394 (Firewire)
# iniciar o serviço /etc/init.d/hotplug start

7. PROCESSO DE BOOT
# qualquer computador PC realiza uma série de ações quando inicia;
# usa uma memória especial chamada de BIOS (Basic Input Output System)
# A BIOS realiza uma série de teste para determinar os componentes;
# esse teste é chamado de POST (Power-on Self Test)
# é através do POST que a BIOS busca informações, placas, drivers etc..

7.1 A MBR
# A MBR (Master Boot Record) ocupa o primeiro setor do disco (512bytes)
# No Linux os gerenciadores de boot são LILO e GRUB
# O LILO não é mais abordado na prova LPI
# Após a carga do Kernel inicia um processo chamado INIT;
# INIT é o pai de todos os processos e responsável pelo restante;
# Depois da carga de boot, o init chama outro programa chamado getty;
# Getty é responsável pela autenticação dos usuários e do Shell;
# Cada programa tem um processo e cada processo possui um ID

7.1.2 Process ID (PID) ou Identificação do Processo
# Cada processo possui um número de identificação único;
# O processo INIT será terá PID 1, o restante é acrescentado;

7.1.3 User ID e Group ID (ID do usuário e ID do grupo)
# Os processos precisam ser executados com os privilégios de conta;
# De um usuário e do grupo associado a ele, para o sistema poder cuidar

7.1.4 Processo Pai
# Todo os processos no Linux, com excessão do INIT, tem um pai;
# Responsável por sua execução, ParentID grava o PID do processo pai;

7.1.5 Variáveis de Ambiente
# Cada processos herdam do pai algumas variáveis de ambiente;
# Pode ser que durante a execução altere, incremente ou apague, algumas

7.1.6 Diretório de Trabalho
# Local onde os processos podem fazer a leitura e a escrita do disco;

7.1.7 Temporizadores
# O Kernel registra o tempo de início e termino de cada processo;

7.1.8 Boot do Linux
# Power-up / Reset
# a) System startup     - BIOS / BootMonitor
# b) Stage  1 Bootloader - Master Boot Record
# c) Stage  2 Bootloader  - LILO, GRUP etc...
# d) Kernel                      - Linux
# e) INIT                         - User-space
# Operation

7.2 GRUB
# (http://www.gnu.org/software/grub/grub-documentation.html)
# (Grand Unified Bootloader) alternativa ao LILO, é instalado na MBR
# Pelo comando /sbin/grub ou pelo /sbin/grub-install
# As instruções de /boot/grub/grub.conf
# No Debian há um arquivo /etc/default/grub (para alterar no grup.conf)
# Após as altereções use o comando update-grup
# Global
# defaut - imagem de boot padrão (começar por 0)
# timeout - tempo de espera para iniciar o boot, em segundos
# title - nome para a imagem
# root - localização do carregador estágio do Kernel (hd0,0=/dev/hda)
# kernel - é o caminho para o kernel à partir de root
# ro - ready-only
# initrd - caminho para a imagem initrd
# O comando grub-install não precisa ser executado toda vez que alterar
# Ao reiniciar o carregador de boot lê o arquivo /boot/grub/grub.conf
# Para que as alterações sejam registradas é preciso usar comando;
# update-grup

7.2.1 Configurando o GRUB
# O arquivo fica armazenado em grub.cfg que fica em /boot/grub/
# Para visualizar use o comando cat ou sudo gedit
# Para personalizar o grub é o 40_custom fica em /etc/grub.d/
# Primeiro faça uma atualização
# sudo update-grup
# Abra o arquivo grub.cfg
# sudo gedit /boot/grub/grub.cfg
# Agora abra outro arquivo /etc/grub.d/40_custom
# Copie as entradas encontradas no arquivo grub.cfg para o 40_custom
# As entradas começam "menuentry {"e terminam em "}".
# Agora poderá fazer as edições - faça um backup por segurança
# Trocando "menuentry 'Ubuntu, with Linux 2.6'"
# Para "menuentry 'Ubuntu Maverick 10.10 Kernel 2.6'"
# Para editar a ordem de boot é preciso editar /etc/default/grub
# sudo gedit /etc/default/grub
# GRUB_DEFAULT=0 entrada padrão sendo "0" para primeira entrada
# GRUB_TIMEOUT=3 tempo em segundos para contagem de boot
# Depois é preciso tirar as duplicações de registro
# sudo chmod -x /etc/grub.d/10_linux /etc/grub.d/30_os-prober
# Esse dois arquivos vem em modo executáveis para cada update-grub
# Com esse comando retira as duplicações
# A cada nova atualização é preciso voltar as permissões dos arquivos
# sudo chmod +x /etc/grub.d/10_linux /etc/grub.d/30_os-prober
# Por fim use o comando 
# sudo update-grup
# Vá até o arquivo grub.cfg e copie as novas entradas para 40_custom
# Depois retire o modo executável dos arquivos 10_linux e 30_os-prober
# sudo chmod -x /etc/grub.d/10_linux /etc/grub.d/30_os-prober
# sudo upadate-grub
# Para retirar o memtest
# sudo chmod -x /etc/grub.d/20_memtest86+
# sudo update-grub
# sudo reboot

7.3 Alterando Runlevels, Shutdown e Reboot
# O Linux possui três sistemas de boot de serviços
# System V Init Daemon
# Systemd
# Upstream
# System V foi herdado do Unix, renomeado para System V Init Daemon
# Durante o processo de boot grub carrega a imagem do Kernel a memória
# Assim o Kernel assume controle da máquina e carrega o INIT PID 1
# comando: pstree
# Esse comando exibe uma árvore de todos os processos de inicialização

7.3.1 Runlevel
# No Linux há 7 níveis de execução de 0 - 6
# 0 - define um desligamento rápido do sistema;
# 1 - utilizado para manutenção do sistema - monousuário
# 2 - multiusuário com compartilhamento de arquivos NFS desabilitado
# 3 - multiusuário todos os serviços habilitados sem interface
# 4 - não utilizado
# 5 - multiusuário todos serviços habilitados, interface x11 gráfico
# 6 - é parecido com o zero, mas executa o reboot da máquina
# O administrador do sistema pode alterar o nível de execução
# Usando o comando init mais o número de execução
# init 5 ou init 6
# Quando o Linux inicia uma série de scripts são executados /etc/rc.d
# O arquivo rc.sysinit é executado pelo INIT durante o boot
# Para montar partições etc..
# O arquivo rc.local é executado pelo rc.sysinit para modifcar carga
# O arquivo rc é utilizado para transações entre os runlevels
# Os níveis de serviço são definidos no diretório /etc/rc.<n>
# N é 0 - 6 
# K de kill para terminar determinado serviço
# S de start para iniciar determinado serviço

7.3 2 Definindo Runlevel Padrão
# É o arquivo que define qual runlevel que o sistema irá iniciar
# /etc/inittab
# Neste arquivo basta editar a linha id:n:initdefault
# n: definirá o runlevel pelo seu número de 0 - 6

7.3.4 Shutdown
# O comando shutdown é usado para desligar ou reiniciar o sistema
# sudo shutdown [opções] horário [mensagem]
# Para reiniciar o sistema imediatamente
# sudo shutdown -r now
# Para reiniciar as 6h e enviar mensagem no terminal
# sudo shutdown -r 06:00 "Haverá troca de hardware"
# Para desligar o sistema em 10 min
# sudo shutdown -h 10

8. INSTALAÇÃO E GERENCIAMENTO DE PACOTES
8.1 Instalação e Gerenciamento de Pacotes do Linux - Peso 11
# Para acessar um recurso em disco utilize um mecanismo de montagem
# Unix, significar anexar um disco a um diretório chamado
# Ponto de Montagem;
# A raiz da árvore de diretório é representado por " / "

8.1.1 Processo de montagem
# O carregador de boot carrega o Kernel e transmite as informações raiz
# Os demais dispositivos são montados conforme as intruções /etc/fstab

8.1.2 Etapas da Criação de layout de disco
# Criar partições de tamanhos específicos
# Escolher o sistema de arquivos
# Determinar um ponto de montagem para cada partição
# Duas partições é o mínimo exigido em sistemas GNU/Linux
# Uma é o " / " raiz
# Outra é o "swap" 
# Fora essas duas não outra regra específicas podem ser personalizadas
# A  partição raiz deve ser tipo Linux Native - código 83 (0x83)
# Servidores são exigentes pode criar patições distintas se necessário
# Backup certos arquivos exigem e outro não necessitam

8.1.3 /var
# Este diretório contém as filas de email e impressão
# Arquivos de logs estão em constantes alterações

8.1.4 /usr
# Programas, códigos fontes e documentação - demora para alterações

8.1.5 /tmp
# Espaço temporário utilizado por programas
# Uma partição distinta impede travamento do sistema - não backup

8.1.6 /home
# Diretório pessoal do usuário
# Uma partição disitinta para ajudar a limitar o espaço de usuários

8.1.7 /boot
# Ponto de montagem para a partição do Kernel e carregador de boot

8.2 A Partição Swap
# Partição identificada pelo código 82 (0x82)
# Geralmente é do mesmo tamanho que a memória RAM do sistema
# Criar espaço para caso de emergência
# sudo dd if=/dev/zero of=emerg.swp bs=1024k count=32
# Para definir 
# sudo mkswap emerg.swp
# Para ativar
# sudo swapon emerg.swp
# Para verificar
# cat /proc/swaps

8.3 Compressão e Descompressão de Arquivos
# Os programas são distribuídos em arquivos tar (tape archiver)

8.3.1 Tipo de Compactação
# [compress], [uncompress], [zcat], [.z]
# [gzip],     [gunzip],     [zcat], [.gz]
# [gzip2],    [bunzip2],    [bzcat],[.bz2]
# Os comando zcat e bzcat descomprimem para saída padrão
# Para criar um arquivo tar.bz2
# tar -cjf [novo_arquivo.tar.bz2] [arquivo_para_compressão]
# Para extrair o arquivo
# tar -xjf [arquivo.tar.bz2]

8.4 Compilar e Instalar Programas
# O primeiro passo é extrair o arquivo tar.
# tar -xjvf sylpheed-2.0.4.tar.bz2
# Iŕa criar um diretório com o código fonte do programa
# A configuração de pre-compilação é feita dentro do diretório
# Um script que coleta informações sobre arquitetura do sistema etc...
# ./configure
# Uma opção utilizada é --prefix que muda o diretório de instalação
# ./configure --prefix=/opt
# Informa que será instalado no diretório /opt
# Para saber mais use ./configure --help
# As informações coletada pelo script ./configure são armazenada
# makefile é o arquivo gerado pelo script
# Este arquivo pode ser alterado para configuração de bibliotecas etc..
# Feito a configuração o programa pode ser compilado pelo comando
# make
# Este comando cria bibliotecas e arquivos executáveis
# Após a compilação use o comando
# make install
# Se fizer fora do /home é preciso ser superusuário (sudo) ou (root)

8.5 As Bibliotecas Compatilhadas
# Programas são vinculados à partir de bibliotecas de sistemas
# Lidam com os discos, memórias, e outras funções
# Exemplo: printf() é usado em um programa, o programador espera que 
# ja tenha instalado 
# a) programas estaticamente vinculados são grandes;
# b) desperdiçam memórias quando muitos executam as mesma funções

8.6 Dependências de Bibliotecas Compartilhadas
# Programas que esteja vinculado depende de algumas bibliotecas
# Se não hover biblioteca o programa não pode rodar
# O comando ldd pode ser usado para saber informações de bibliotecas
# É necessário colocar o caminho onde se encontra o programa
# ldd /bin/bash
# ldd /bin/ls
# ld.so é reponsável por carregar as bibliotecas
# local onde fica mapeado as biblioteca e onde ld.so vai buscar é
# /etc/ld.so.cache
# Outras localidades comuns é /lib e /usr/lib 
# Para adicionar um novo diretório de biblioteca deve configurar
# /etc/ld.so.conf
# Exmplos:
# /usr/local/lib
# /usr/X11R6/lib
# /usr/i486-slackware-linux/lib
# /usr/lib/qt/lib
# Atualizar o etc/ld.so.cache após as alterações em /etc/ld.so.coonf
# sudo ldconfig
# É fundamental para as alterações
# Outra maneira e a mais comun é adicionar uma variável de ambiente
# LD_LIBRARY_PATH é o caminho mais rápido que o arquivo faz
# export LD_LIBRARY_PATH=/usr/local/lib

8.6.1 ldconfig
# Sintaxe: ldconfig [opções] diretório de bibliotecas
# O ldconfig cria links e refaz o índice das bibliotecas dinâmicas
# Ele faz um busa nos diretórios /usr/lib e /lib
# Opções
# [-p] lista o conteúdo do cache /etc/ld.so.cache
# [-v] mostra o progresso de atualização do cache
# [-f] informa um outro arquivo de configuração /etc/ld.so.conf
# Para uma entrada específica de uma biblioteca no cache
# ldconfig -p | grep ncurses

8.7 Gerenciamento de pacotes do Debian (DEB)
# Sistema de instalação mais versátil e automatizado entre Linux
# Contém em cada pacote
# programa
# configuração
# documentação
# indicações de dependências
# Sintaxe: dpkg [opções] ação
# O comando dpkg informa os pacotes instalados /var/libs/dpkg/available
#  /var/lib/dpkg/status
# Opções
# [-E] não sobreescrever um pacote previamente instaldo da versão
# [-G] não sobreescrever um pacote com um versão antiga
# [-R] recursive
# [-i] install
# [-u] unpack

8.7.1 --configure nome_do_pacote
# Requer um setup de arquivos de configuração
# [-i] nome_do_pacote para instalação
# [--purge] nome_do_pacote para remover tudo sobre o pacote
# [-r] nome_do_pacote não remove arquivos de configuração

8.7.2 apt-get
# O apt-get busca em um servidor (local ou internet) para programas
# O primeiro passo é verificar o endereço dos servidores 
# /etc/apt/sources.list
# apt-get update 
# Após fazer qualquer alteração nos respositórios
# Opções
# [-d] faz download e não instala automaticamente
# [-s] simula os passos em uma modificação mas não modifica
# [-y] responda (sim) automaticamente a todos as perguntas
# [dist-upgrade] faz atualização para uma nova versão do Linux
# [install] instala ou faz upgrande de um ou mais pacotes
# [remove] remover os pacotes 
# [update] obtém uma lista dos pacotes mais atual
# [upgrade] faz uma atualização dos pacotes para sua versões atuais

8.7.3 aptitude
3 Utilitário de interface para facilitar o uso do apt

8.7.4 dselect
# Utilitário para instalar e desintalar pacores através de menu

8.7.5 alien
# Converte ou instala um pacote não-debian
# .rpm [Red Hat]
# .tgz [Slackware]
# .deb [Debian]
# Opções
# [-i] instala automaticamente o pacote de saída
# [-r] converte o pacote para formato rpm
# [-t] converte o pacote para um arquivo gzip tar.

8.7.5 unpack
# Utilitário unpack é um script perl para extrair pacotes tarball

8.7.6 apt-cache
# Utilitário para manipular e obter informações sobre pacotes
# Para adicionar pacotes ao cache
# sudo apt-cache add
# Para gerar cache
# sudo apt-cache gencaches
# Para mostrar informações dos pacotes
# sudo apt-cache showpkg
# Para mostrar alguma estatística
# sudo apt-cache stats
# Para verificar a sanidade do cache
# sudo apt-cache check
# Para procurar por algum pacote
# sudo apt-cache search
# Para mostrar as dependências
# sudo apt-cache depends
# Para listar todos os pacotes
# sudo apt-cache pkgnames

8.8 Gerenciamento de pacotes RPM (Red Hat)
# O métod de pacotes Red Hat está entre os mais populares
# O Red Hat Package Manager (RPM) permite construir à partir da fonte
# Opções
# [-i] ou --install para instalar pacotes
# [-U] ou --update para atualizar o pacote
# [-F] ou --freshen atualiza o pacote se o mesmo estiver instalado
# [-V] ou --verify verifica o tamanho, permissões, tipo etc..
# [-q] ou --query investiga o pacote e arquivos
# [-e] ou --erase desintala o pacote
# Exemplo:
# rpm -i gcc-2.96-i386.rpm
# rpm -e glic-devel
# O rpm só desintala se não tiver outro pacote dependente dele
# Com o uso do --nodeps pula a verificação de dependência
# Com o uso do --test é para verificar se o pacote pode ser desintalado
# Para determinar a versão do software
# rpm -qpi [pacote] | grep Version
# Listar os arquivos do pacote
# rpm -qlp [pacote]
# Listar os arquivos de documentação do pacote
# rpm -qd [pacote]
# Listar os pacotes instalados no sistema
# rpm -qc [pacote]
# Listar todos os pacotes
# rpm -qa

8.9. Arquivos e Diretórios Pertinentes ao rpm
8.9.1 /etc/rpmrc
# Arquivo de configuração do rpm e do rpmbuild
# Contém informações sobre arquitetura e a caminhos dos pacotes
# Caminhos para macros e diretórios de manejo /usr/lib/rpm

8.9.2 /usr/lib/rpm
# Diretório macro para o manejo de pacotes

8.9.3 /var/lib/rpm
# Diretório base de dados do rpm

8.9.4 Comando do RPMs que aparecem no exame
# Instalar um pacote
# rpm -ivh [pacote]
# Instalar todos os pacotes iniciados por xyz
# rpm -xys*
# Para atualizar um pacote
# rpm -Uvh [pacote]
# Para desintalar um pacote
# rpm -e [pacote]
# Para mostrar arquivos contido nos pacotes
# rpm -qlp [pacote]
# Para mostrar que o pacote instalou o arquivo
# rpm -qf [pacote]

9. Gerenciador de pacotes YUM
# (Yellow Dog Updater) assemelha-se ao apt 
# O gerenciador de pacotes utiliza o sistema rpm para insta/remove

9.1 Configurando repositórios
# O arquivo de configuração fica em /etc/yum.conf
# Para listar os pacotes disponíveis
# yum list
# Para verificar se há atualização
# yum check-update ou yum list updates
# Para fazer uma atualização do sistema
# yum update
# Para instalar um pacote
# yum install [pacote]
# Para informações sobre os pacotes
# yum info [pacote]

10. COMANDOS GNU E UNIX
# É necessário ter conhecimentos sólidos sobre comandos GNU/Linux

10.1 Shell
# O shell é um interpretador de comandos que analisa o comando
# Ambiente de programação
# O Linux usa bash (Borne Again Shell)

10.2 Variáveis do Shell
# O shell contém variáveis de informações para a execução do bash

10.3 Variável PS1
# Significa Prompt String, contém conteúdo do prompt para aceitar CLI

10.4 Variável PS2
# É utilizada quando bash precisa de multiplas linhad de comando
# Pode ser exibido um contepudo de PS1 usando "echo" masi o variável
# Exemplo: echo $PS1
# Geralmente vem com formato: \u@\h:\w\$
# [\u] representa o nome de usuário
# [\h] representa o nemo do sistema (hostname)
# [\w] representa o diretório atual

10.5 Variável PATH
# PATH contém uma lista de diretório (atalhos) que os programas usam
# O comando ser verifica uma lista de variáveis
# Para criar uma variável de ambiente
# MINHAVAR="siga o coelho branco"
# Para visualizar
# echo $MINHAVAR
# Para expor à todos os programas use export MINHAVAR
# Para excluir use unset MINHAVAR

10.6 Comando Válidos
# Um comando válido (interno do shell, um programa, um script)
# As opções do comando em geral são precedias de hífen
# Argumentos

10.7 Comando ls
# Lista o diretório atual
# Opções
# [-l] mostra o comado em um formato mais longo
# [-la] mostra arquivos ocultos começando com ponto
# [-l *.c] mostra uma lista detalhada apenas dos arquivos em .c

10.8 tar e ps
# Para esses comandos não precisa de hífen, porque se espera uma opção

10.9 ls ; ps
# Para digitar mais de um comando utilize [;]
# O shell pode armazenar um historico de comando com HISTSIZE
# Todo histórico fica armazenado em ~/.bash_history
# Para visualizar o hitórico de comando use o comando history
# O bash oferece um útil capacidade de se fazer subsituições de comando
# Isso pode substituir um comando por um script
# $(comando) sempre que for encotrado a sua saída será substituída
# Exemplo: RCSIZE=$ (wc -1 ~/.bashrc)
# Uma outra forma de substituir um comando é `comando` 

10.9.1 chmod
# Modifica permissões sobre arquivos do diretório
# Exemplo: chmod g+w *.c
# Todos arquivos com extensão .c serão modificado com permissão
# [g] indica que as permissões foram para o grupo
# [-R] modo recursivo indica que as permissões foram para todas pastas
# Exemplo: chmod -R g+w src
# Todas os subdiretórios receberam permissões de escrita
# Find é inerentemente recursivo e foi elaborado para descer nas pastas
# find src -name "*.c"
# Os arquivos serão listados recursivamente

10.10 Arquivos interessantes de configuração do bash
# ~/.profile arquivo de usuário 
# ~/.bashrc contem uma lista de comandos,

10.11 Obtendo ajuda
# O diretório /usr/share/doc possui grande parte da documentação
# O subdiretório /usr/share/doc/howto possui 2000 paginas de docments
# O comando man para manuais
# Os documentos manuais são divididos de acordo com o assunto
# 1) Programas executáveis ou comando shell
# 2) Chamadas de sistemas (funções do Kernel)
# 3) Chamadas de bibliotecas
# 4) Arquivos especiais
# 5) Formato de arquivos e convenções
# 6) Jogos
# 7) Pacotes de macro
# 8) Comandos administrativos
# 9) Rotinas do Kernel
# man paswwd
# visualiza manual do comando (1) se quiser mais mude para os números
# man 5 passwd

10.12 Utilizando Filtros de Texto
# Cut exibe na saída padrão colunas ou campos de um ou mais arquivos
# O original não é modificado
# cut [opções] [arquivo]
# Opções
# [-b] lista-bytes
# [-c] lista-caracteres
# [-f] lista-compos
# [-d] delimitador usa-se com -f define o delimitdor de compos
# [-n] não quebrar caracter com mais de 1 byte

10.13 fmt
# Formato de text em uma largura de, no máximo, dado número de caracter
# 75 é o padrão, se for informado mais de um arquivo será juntados
# Sintaxe: fmt [opções] [arquivo]
# Opções
# [-u] usa espaçamento uniforme
# [-w] define a largura para um número diferente do padrão 75

10.14 head
# Exibe as 10 primeiras linhas por padrão
# Sintaxe: head [opçõe] [arquivo]
# Opções
# [-c n] exibe os primeiros números de n bytes pode k ou m
# [-n] exibe as primeiras n linhas de cada arquivos 10 default

10.15 join
# O comando join une as linhas de ambos os arquivos que tenha um índice
# Exemplo: -j1 número: escolhe o campo número como índice arquivo1
# Exemplo: -j2 número: escolhe o campo número como índice arquivo2
# Crie um arquivo contendo o conteúdo
# 1 cor 1
# 2 cor 2
# 3 cor 3
# Salve como arquivo1 e crei um outro 
# 1 branco
# 2 preto
# 3 laranja
# Salve como arquivo2
# Agora execute o comando 
# join -j 1 arquivo1 arquivo2

10.16 nl
# Numera as linhas de um ou mais arquivos
# Pode ser usado uma marcação para delimitar um  cabeçalho, corpo e pé
# A marcação é a seguinte:
# \:\:\: para o cabeçalho
# \:\: para o corpo
# \: para o rodapé
# Sintaxe: nl [opções] [arquivos]

10.17 pr
# Converte um arquivo de texto em uma versão paginada
# com cabeçalhos, corpo, data e hora e número de página
# sintaxe: pr [opções] [arquivo]
# opções
# [-d] duplo espaço entre as linhas
# [-h] usa cabeçalho ao invés do nome do arquivo
# [-l] define o número de linhas de cada página o padrão é 66
# [-o] define a largura da margem esquerda para as colunas

10.18 tac
# O comando tac mostra o conteúdo do arquivo de trás pra frente
# sintaxe: tac [arquivo]

10.19 tail
# o comando tail visualiza as 10 últimas linhas
# sintaxe: tail -50 [arquivo]
# [-f] mostra as 10 últimas linhas continuamente - para logs

10.20 tr
# traduz caracteres de string1 para os caracteres de string2
# sintaxe: car arquivo1 | tr a-z A-Z
# deixa todos os caracteres de minúsculos para maiúsculos

10.21 wc
# conta as linhas, palavras e caracteres de um ou mais arquivos
# [-c] conta o número de caracteres 
# [-I] conta o número de linha
# [-l] exibe apenas a contagem de linhas
# [-w] exibe apenas a contagem de palavras

10.22 od
# od utilizado para visualizar conteúdo em hexadecimal, octal, ASCII
# [-x] exibe em hexadecimal
# [-a] exibe em caracter
# [-o] exibe em octal
# [-c] exibe em ASCII
# o comando hexadump substitui o comando od

10.23 uniq
# mostra o conteúdo de arquivos suprimindo linhas sequenciais repetidas

10.24 paste
# concatena arquivos lado a lado

10.25 sort
# ordena alfabeticamente, com -n numericamente, com -r inverte

11. Diretórios e arquivos
# arquivos podem ser acessados por caminho absoluto ou relativo
# absoluto começam pela barra da raiz [ / ] e relativo [ . ] [ .. ]
# ls é usado para listar arquivos e conteúdo em diretórios
# [-d] mostra diretório
# [-s] mostra tamanho em kilobytes

11.1 cp
# o comando cp é utilizado para copiar arquivos
# [-i] modo interativo - pergunta antes
# [-p] copia os atributos do original
# [-r] copia recursivamente todo o conteúdo do arquivo de origem
# [/] o uso da barra no final indica que somente o conteúdo é copiado
# sem o uso da barra o diretório também será copiado

11.2 mv
# o comando mv move e renomea os arquivos
# [-i] modo interativo - pergunta antes

11.3 touch
# para alterar a data de um arquivo
# [-a] somente a data 
# [-m] somente a data de modificação
# [-t] somente o valor de tempo
# sintaxe: touch -t '01010001' [arquivo]

11.4 pwd
# no bash o comando retorna o diretório atual, onde você esta!

11.5 mkdir
# comando para criar diretórios 
# [-p] para criar um árvore recursivamente
# [-m] para alterar as permissões no ato da criação
# sintaxe: mkdir -m 700 [arquivo]

11.6 rmdir
# comando para excluir diretórios sem argumentoas apaga os vazios
# [-p] para excluir diretórios de árvore
# [-r] para excluir diretórios com conteúdo
# [-f] para forçar a remoção

11.7 find
# comando usado para encontrar arquivos
# sintaxe: find [diretório] [critérios] [-exe comando{} \;]
# o argumento [diretório] indica onde o find deve iniciar a busa
# o [critéiro] pode ser o nome do arquivo ou uma regra de busca
# [-type] critério de arquivo d para diretório f para arquivo l link
# [-name] nome nome do arquivo
# [-user]
# [-atime -/+n] data do último acesso, correspondente a 24h
# [-ctime -/+n] data da criação do arquivo
# [-mtime -/+n] data da modificação
# [-atime -/+n] data do último acesso
# [-cmin -/+n] data de criação do arquivo em minutos
# [-mmin -/+n] data de moditificação do arquivo
# [-newer arquivo] o mais recente arquivo procurado/modificado
# [-perm modo] arquivo procurado tem permissão mode

11.8 Caracters Coringa
# As operações com arquivos e diretórios permitem o uso de coringa
# [*] substitui qualquer sequência de caracteres
# [?] substitui apenas um caracter
# ([]) o uso de colchetes "[]" indicam uma lista de caracteres
# ({}) o uso de chaves "{}" indicam uma lista de termos separados [,]
# [!] o uso de exclamação antes do coringa exclui da operação

11.9 Utilizando o comando dd
# o comando dd copia um arquivo, disco e partições para um arquivo
# para gerar um arquivo de imagem ISO à partir de CD/DVD
# dd if=/dev/dcrom of=imagem.iso
# para gravar a imagem iso em um CD/DVD
# dd if=imagem.iso of=/dev/cdrom
# para clonar um HD
# dd if=/dev/hda of=/dev/hdb

11.10 Backup da MBR
# Criar o bakcup
# sintaxe: dd if=/dev/sda of=mbr.backup bs=512 count=1
# para restaurar o backup
# sintaxe: dd if=mbr.backup of=/dev/sda =512 count=1

12. Executando e eliminando processos
# Um processo é um programa em execução
# Cada processo possui um PID
# PID pode ser usado para finalizar um processo ou mudar prioridade
# O processo que inicia um outro é processo pai (parent process)
# Assim como o segundo é processo filho (child process)

12.1 pstree
# mostra processos ativos em árvore genealógica
# [-p] inclui PIDs dos processos
# [-h] lista apenas os processos do usuário atual

12.2 ps
# mostra os processos de modo detalhado
# [ux] mostra todos os processos do usuário
# [aux] mostra todos os processo do sistema
# [-u] mostra apenas os processo do usuário indicado pela opção -u
# [-g] mostra os processos do grupo indica pela opção -g

12.3 top
# monitorar continuamente os processos, monstrando informações de uso
# [h] fornece ajuda sobre o uso do programa
# [-b] executa em modo batch ou arquivo em lote
# [-d n] determina o tempo das atualizações da tela em segundos (n)
# [-q] executa com atualizações em tempo real, consume CPU
# [-u] monitora os processos de um determinado usuário

12.4 pidof
# retorna o número PID para o prgrama solicitado
# sintaxe: pidof crond

12.5 kill
# envia sinais de controle para os processos
# SIGTERM 15
# SIGKILL
# SIGHUP
# SIGUP - termina ou reinicia o processo valor 1
# SIGINT - interrompe o processo igual ao Ctrl + C valor 2
# SIGQUIT - fecha o processo valor 3
# SIGTERM - fecha o processo normalmente valor 15
# kiall - fecha todos os processos
# para colocar um programa iniciado no shell em segundo plano
# Ctrl + Z - para colocar em segundo plano
# bg - para colocar em background e usar o terminal
# fb - para colocar em foreground e usar o programa em primeiro plano
# %? - para saber o nome da tarefa que está em background
# job - para saber o número de tarefas em background
# & - para iniciar o programa em background

12.6 Prioridade de Execução
# O kernel do Linux possui atividades de escalonar os processos
# coloca fila todos os processos em execução e decide qual é executado
# O escalonador permite executar processos em concorrência divide CPU

12.7 Modificando a Prioridade de Execução dos Processos
# Alterar as prioridades dos processos com o comando nice e renice
# -20 maior prioridade 
# 19 menor prioridade
# sintaxe: nice -n -10 tar czf home_backup.tar.gz/home
# Se não for passado nenum ajuste o valor é ajustado para +10
# sintaxe: nice tar czf home_backup.tar.gz

12.7.1 renice
# O comando renice ajusta a prioridade de execução dos processos
# [-p] recebe um PID para alterar sua prioridade
# [-u] recebe um usuário para alterar sua prioridade
# [-g] recebe um grupo para alterar todos os processos do grupo
# sintaxe: renice -1 987 -u root -p 32
# Os processos 987 e 32 terão prioridade -1

13. Expressões Regulares e Grep
# Expressões regulares são elementos de texto, palavras chaves
# Usado para alterar, encontrar um padrão correspondente
# Usado em conjunto com o comando grep "um filtro"

13.1 Caracteres especiais em expressões regulares
# ^ começo de linha
# $ fim de linha
# . qualquer caracter
# * qualquer sequência de zero ou mais caracter
# [] qualquer caracter que esteja presente nos colchetes
#
# Exemplo: Para mostrar apenas as linhas que começam com "#" do arquivo
# grep 'hd[ab]' /etc/lilo.conf
# Mais opções;
# -c => conta as linhas contendo o padrão;
# -i => ignora a diferença entre maiúscula e minúscula
# -f => usa expressão regular contida no arquivo indicado dessa opção
# -n => procura somente na linha indica por essa opção
# -v => mostra todas as linhas exceto a que corresponde ao padrão
#
# Exemplo: Mostrar as linhas contendo somente caracteres (inverte a busca
# por linhas que não possuam caracteres)
#
# Sintaxe => grep -v '^$' [local_do_arquivo]

13.2 sed
# O comando sed é mais utilizado para procurar e substituir padrões em 
# textos, mostrando o resultado em stdout:
# Sintaxe: sed [opções] 'comando e expressão regular' [arquivo_original]
# Exemplo: no sed a exmpressão fica circunscrita entre barras "/".
# Sintaxe: sed -e '/^#/d' [arquivo]

# Mostrar o arquivo sem linhas começadas por "#" (comentários)
# A letra "d" ao lado da expressão regular é um comando do sed que indica
# a exclusão de linha contendo o respctivo padrão.
#
# Exemplo: substituir o termo "had" por "adb"
# Sintaxe: sed -e 's/hda/sdb/g' [arquivo]
#
# Exemplo: entre as linhas 14 e 21 substituir "runlevel" por "rl"
# Comando: sed -n -e '14,21s/runlevel/rl/p' [arquivo]

# Opções comuns de sed
# -e => executa a expressão e comando a seguir
# -f => lê expressões e comandos do arquivo indicado pela opção
# -n => não mostrar as linhas que não correspondem a expressão
# s => substituir
# d => apagar a linha
# r => insere o conteúdo do arquivo indicado na ocorrência da expressão
# w => escreve a saída no arquivo indicado
# g => substitui todas ocorrências da expressão na linha atual


14. Editor de Texto vim
# Na maioria das distribuições o vi é o editor de texto padrão. O vi 
# localiza em /bin e há três modos básicos no vi;
#
# Modo de comando
# É o modo inicial do vi, serve para a navegação e edião, geralmente os
# comandos são letras únicas, se procedido por número o comando sera
# repetido correspondentemente ao valor desse número.
#
# Modo de última linha ou coluna
# Acessível ao aperta a tecla ":" no modo de comando. Usado para fazer
# buscas. 
#
# Modo de Inserção
# A maneira mais comum de entrar no modo de inserção é apertando "i" "a"
#  é o modo mais intuitivo, usado para digitar texto no documento. A    
# a tecla ESC sai do modo de inserção e volta para o modo de comando.
#                                                                       
# Teclas mais comuns:                                                   
# 0, $ => início e fim de linha                                         
# 1G, G => início e fim de documento                           
# b, e => início e fim de palavra                                     
# (,) => início e fim de sentença                                     
# {,} => início e fim de parágrafo                                  
# w, W => pular palavra e pular palavra contando com pontuação          
# h,j,l => esquerda, abaixo, acima, direita                             
# i => entra em modo de inserção na posição atual do cursor             
# /, ? => busca para frente e para trás                                 
# a, A => modo de inserção depois do cursosr ou fim da linha            
# o, O => adiciona linha e entra em modo de inserção antes do cursor    
# s, S => apaga item ou linha e entra em modo de inserção               
# c => modifica item através de inserção de texto                       
# r => substitui um único caracter                                      
# x => apaga um único caracter                                          
# y, yy => copia um item ou toda linha                                  
# p, P => cola o conteúdo copiado depois ou antes do cursor             
# u, desfazer                                                           


DISPOSITIVOS E SISTEMAS DE ARQUIVOS
#Dispositivos, sistemas de arquivos e FileSystem Hierarchy Standard
#                                                                       
# * Linux permite que usuáros crie e mantenha arquivos em partições     
# * Também em dispositivos e computadores remotos.                      
# * O Linux permite sua instalação em diferentes disco:                 
# * Disco IDE, SCSI, CD-ROM, CD-RW, Pen-Drivers, Zip-Drivers, Jaz-Driver
# * Memória Flash, disquete etc...                                      
# * Vamos conhecer os padrões IDE e SCSI                                
# * IDE (Integrted Device Eletronics) são utilizados para uso domestico 
# * IDE possui duas interface, primária e segundária                    
# * SCSI (Small Computer System Interface) oferece desenpenho melhor    
#                                                                       
# Partições Primárias                                                   
# Cada disco pode conter o máximo quatro patições primárias(4)
# Para as partições lógicas são doze (12) no total de (15) possíveis
# (1) partição é chamada de container para abrigar partições lógica
# Caso crie quatro partições no disco IDE terá:
#  * /dev/hda1 
#  * /dev/hda2 
#  * /dev/hda3 
#  * /dev/hda4 

#  * /dev/hda1 - primária
#  * /dev/hda2 - estendia (container- informações da partições lógicas)
#  * /dev/hda5 - lógica
#  * /dev/hda6 - lógica
# /hda2 pulo para /hda5, porque as patições /dev/hd3 e /dev/hd4
# são exclusiva para partições primárias
#
# Partições Estendidas
# Variante da partição primária não é capaz de conter um sistema arquivo
#
# Partições Lógicas
# Existem dentro de partições estendidas;
# São numeradas de 5 a 16;
#
# FHS - File Hierarchy System
# Hierarquia de Sistema de Arquivos padrão de diretórios;
#
# /root
# raiz identificado com uma (/) o sistema de arquivos de root;
# Uma vez que o único sistema de arquivos montado no inicio é boot /;
# Certos diretórios precisam estar prontos para o processo de boot;
#
# /bin e /sbin
# Contém programas binários de sistemas requeridos;
#
# /dev
# Contém arquivos de dispositivos;
#
# /etc
# Contém informações de configuração usadas no boot;
#
# /lib
# Contém as bibliotecas compartilhadas;
#
# /boot
# Armazena arquivos estático usado pelo carredor de boot;
# Imagens Kernel;
#
# /home
# Arquivos de usuários 
#
# /tmp
# Arquivos temporários
#
# /var
# Arquivos de logs; semelhante ao /tmp 
#
# /usr
# Contém comandos do usuário;
# Códigos fontes; 
# Documentação;

16. CRIANDO PARTIÇÕES COM FDISK DO LINUX
# O fdisk é uma ferramenta para criar as partições, mais 60 além do Linux
# Só não permite mudar o espaço de uma partição como no Partition Magic
#
# Exemplo:
# Um HD de 3.2G e já tenha uma partição windows (fat 32) com 1.2G
# Se você der somente fdisk ele vai no /dev/hda1 (primary master) se caso
# tenha outro HD no /dev/hdb e quiser participar faça:
#
# fdisk /dev/hd?
#
# Onde? é o número de sua partição.

# Passo 1: Vai abrir um novo console dentro do dispositivo escolhido
# Paado 2: Dê o comando "m" para mostrar as opções
# Descrição dos comandos
# [a] alterna a opção "inicialização"
# [b] edita rótulos BSD no disco
# [c] alterna a opção "compatibilidade"
# [d] exclui uma partição
# [F] lista espaço livre não particionado
# [g] cria uma nova tabela de partição GPT vazia
# [G] cria uma nova tabela SGI (IRIX) vazia
# [l] lista os tipos de partições conhecidos
# [m] mostre o menu
# [n] cria uma nova partição
# [o] cria uma nova tabela de partições DOS vazia
# [p] mostra a tabela de partições
# [q] sai sem salvar as alterações
# [s] cria uma nova tabela de disco Sun vazio
# [t] altera a identificação da partição para o sistema
# [u] alterar as unidades das entradas mostradas
# [v] verifica a tabela de partições
# [w] grava a tabela no disco e sai
# [x] funcionalidade adicional (somente para usuários avançados)
#
# Device => a partição no caso /dev/sdb
# Boot => a partição ativa
# Start => o cilindro em que a partição começa
# End => o cilindro em que qa partição termina
# Block => será o espaçõ que a partição está ocupando ou vai ocupar
# Id => numero das listas de partições do fdisk 'b' = fat32
# System => tipo da partição
#
# Passo 3: digite "n" para adicionar nova partição
# Passo 4: digite "p" para mostrar partição primária
# Passo 5: selecionar o cilindro 306 default, apenas aperte enter
# Passo 6: coloque o espaço da partição em byte, Mega, Kbytes;
# Passo 7: digite o valor de +1780M
# Passo 8: especificar qual tipo de partição digite "t" enter
# Passo 9: digite "l" para listar os tipos de partições
# Passo 10: digite "83" (Linux)
# Passo 11: digite "p" para verificar como ficou
#
# Agora fazer swap
# Passo 12: digite "n" e em seguida "p" enter
# Passo 13: digite enter pois o padrão já ta em 759
# Passo 14: digite "t" tipo de partição no caso "3" e depois "l"
# Passo 15: digite "82" (Linux swap) e depois "p" para ver 
# Passo 16: coloque o cilindro inicial e no tipo 85 (Linux extended)
# Passo 17: digite "w" para escrever as alterações e sair
#
# Sisitema de arquivos
# Ext2
# (Second Extended file System), sistema de arquivos para disp.. de bloco
# Ex: (Disco rígido, Disquete, Pen-Drive).
#
# Ext3
# (Third Extended file System), tem o journaling acrescentado
# O journaling é um registro (log ou journal) de transações, recuperação
# Tem a finalidade de recovery, falha, desligamento não programado etc..
#
# Ext4
# (Fourth Extended file System), performanace superior tem journaling,
#
# Reiserfs v3
# O reiserfs é um dos mais utilizados em sistemas Linux;
# Possui suporte de até E1B de tamanho e acesso a árvore de diretórios
# Possui suporte a journaling e consome CPU
#
# VFAT
# (Virtual file Allocation TAble), é uma extensão para os sistema fat12
# Fat32 incluindo à partir do Windows 95 com suporte no Linux.
# Sistema é amplamente utilizado em Pen-Drives e Cartões de Memória.

16.1 Formatando a Partição
# mkfs formata a partição criada pelo fdisk com o sistema arquivos;
# [-t] define o tipo de partição;
# Os formatos nativos são ext2, ext3, ext4, msdos, fat32;
# os comandos, mke2fs, mkdosfs são variações de mkfs
# Opções
# [-c] verifica a existência de bad blocks (defeitos) no disco;
# [-L] configura o nome do dispositivo;
# [-n] configura o nome do dispositivo para msdos (Windows);
# [-q] faz com que mkfs trabalhe com mínimo de saída de vídeo possível;
# [-v] faz com que mkfs trabalhe com o máximo de saída de vídeo possível;
#
# Sintaxe: mkfs [option] [-t --type=] [fs-option] <device> <size>
# Exemplo: mkfs -t ext2 -L backup /dev/hda4
#

16.2 mkswap
# Comando mkswap prepara o dispositivo para ser usado como área virtual;
# A partição swap deve sert do tipo 82 (Linux swap)
#
# Exemplo: mkswap /dev/hda6

16.3 Arquivo de Swap
# É possível criar um swap à partir de um arquivo, em caso emergenciais;
# O tamanho do arquivo criado pode ser modificado conforme a necessidade;
#
# Exemplo: dd if=/dev/zero of=/meu_swap bs=1024 count=262144
#
# bs é o tamanho em bytes do bloco que será usado;
# count é o número de blocos a ser usado;
# Dessa foram o tamanho do arquivo é: **1024*262144 = 256MB;
# Alterar as permissões para leitura e escrita para root;

# Exemplo: chmod 600 /meu_swap
#
# Agora, prepare para ser usado;
#
# Exemplo: mkswap meu_swap
#
# Agora ele precisa ser iniciado ou ativado;
#
# Exemplo: swapon meu_swap

16.4 Checando o Sistema de Arquivos
# Com o comando fsck que deve ser usado em partições que há erros;
# A partição será desmontada ou montada como somente-leitura (ro)
# O fsck possui a opção [-t] para dizer o tipo de arquivo;
# fsck.ext2 ou e2fsck, fsck.ext3, fsck.xfs, reiserfsck e dosfsck.

16.5 Examinado e Corrigindo o Sistema de Arquivos
16.5.1 debugfs
# Depurador interativo de sistema de arquivos;
# Usado em casos extremos após fsck ter falhado;
# Examina sistema ext2, ext3, diretórios, inodes, apaga arquivos etc;

16.5.2 dumpe2fs
# Mostra informações de grupo de bloco e de suporblocks

16.5.3 tune2fs
# Configura parâmetros ajustáveis em sistemas de arquivos ext2;
# Checa automaticamente o uso do disco;

16.5.4 df
# Mostra o espaço disponível em cada dispositivo;
# Com o uso de [-h] torna mais legível;

16.5.4 du
# Mostra o espaço ocupado no diretório atual do sistema;
# Com o uso de [-s] pode indicar um diretório específico;
# Com o uso de [-h] torna mais legível;
#
# Exemplo: du -s /home/user/Downloads/

16.6 Montando e desmontando sistemas de arquivos
16.6.1 /etc/fstab
# O fstab determina os pontos de montagem dos dispositivos;
# Cada dispositivos tem seus termos separados por tabulações;
#
# 1) Dispositivo;
# 2) Ponto de montagem ("swap" se for swap);
# 3) Tipo de sistema de arquivos;
# 4) Opções
# 5) Dump (0 ou 1) se deve considerado, 1 dump, se não, 0 é considerado;
# 6) fsck (1 ou 2) ordem de checagem durante o boot, 1 raiz, 0 não-boot;
#
# Para permitir que usuários montem e desmontem deve incluir "users"
#
# Exemplo: /dev/cdrom /ment/cdrom auto noauto,users,ro 0 0 
#
# auto na posição referente ao sistema de arquivo "automaticamente";

16.6.2 mount
# O comando mount usado sem argumentos exibe dispositivos montados;
# Mostra ponto de montagem;
# Mostra tipo do sistema de arquivos;
# Pode ser usado manualmente
#
# Exemplo: mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom
#
# O comando acima monta o dispositivo /dev/cdrom contendo mídia;
# A mídia iso9660 é montado no diretório /mnt/cdrom;
# Com permissão de somente-leitura (read-only, ro)
#
# Para montar os dispositivos que estão em /etc/fstab, basta usar mount;
# Usar a localização do dispositivo /dev/cdrom ou diretório alvo;
# Para desmontar use o comando umount;
# [-a] para montar todos os dispositivos em /etc/fstab, execeto noauto;

16.6.3 Opções de montagem
# As opções são as mesmas para /etc/fstab e para mount;
# Se mais opções for fornecida deve ser separadas por vírgulas;

16.6.4 rw ou ro
# Gravável ou somente-leitrua;

16.6.5 noauto
# Não é montado automaticamente;

16.6.6 users e user
# O dispositivo poderá ser montado e desmontado por usuários comuns;
# User, apenas quem montou terá  permissões de desmontar;

16.6.7 owner, ursquota, grpquota
# Owner, as permissões do dispositivo se adequarão ao usuário que montou;
# usrquota, habilita o uso de quotas de disco para usuários;
# grpquota, habilita o uso de quotas de disco para grupo;

16.6.8 remount
# Remonta um dispositivo montando com outras opções;
# Útil para remontar dispositivos como somente leitura;
# Opções:
# [-a] monta todos os dispositivos no arquivo /etc/fstab, exceto noauto;
# [-r] monta o sistema de arquivos como somente-leitura;
# [-w] monta o sistema de arquivos para leitura e gravação;
# [-o] especifica as opções de montagem;
# [-t] tipo de sistema de arquivo, ext2, ext3, iso9660, msdos etc...;

16.6.9 umount
# O comando é utilizado para desmontar dispositivos montado pelo mount;
# Opções:
# [-a] desmonta todos os dispositivos listado no /etc/fstab;
# [-t] desmonta somente dispositivos o tipo de filesystem especificado;

# Exemplo: umount /dev/cdrom
# Exemplo: umount /cdrom

16.7 Administrando quotas de Disco
# Para multiusuários, web servers, file servers, e-mail servers etc..
# É preciso habilitar quotas de discos;
# Para gerenciar o espaço em disco e o consumo;

16.7.1 Limites de cotas
# Cada sistema possui 5 tipos de limites;
# Esse limite é especificado em bloco de disco de 1.024 cada um;

16.7.2 Limite hard por usuário
# O hard é a quantidade máxima de espaço que um usuário pode ter;
# Após atingir sua cota não poderá mais escrever no disco;

16.7.3 Limite Soft por usuário
# Cada usuário é livre para armazenar dados no sistema de arquivos;
# O Soft avisa quando o limite é atingido;
# É dado pelo sistema esse limite quando não configurado;

# Para trabalhar com limite de cotas é necessário editar o /etc/fstab;
#
# Exemplo: /dev/hda2 /home ext3 defaults,usrquota,grpquota 1 2
#
# Feito isso, crie um arquivo de quota.user e o quota.group no /home
# Configure as permissões de leitura e escrita para superusuários;
#
# Exemplo: touch /home/quota.user
#          touch /home/quota.gruop
#          chmod 600 /home/quota.user
#          chmod 600 /home/quota.user
# Execute o comando quotacheck-avug para iniciar o banco de dados;
# Verifique se foi criado ls -lga /home
# Habilite o serviço de quota quotaon -a
#
# Para habilitar o serviço de cota no boot;
# Passo 1: crie um arquivo em /etc/rc.d/quotas com o conteúdo:
# #!/bin/bash
# /sbin/quotaon-avug
# Passo 2: alterar as permissõs
# chmod 755 /etc/rc.d/quotas
# Passo 3: crie um link para simbólico para runlevel 3 e o 5;
# ln -s /etc/rc.d/quotas /etc/rc.d/rc3.d/S20quotas
# ln -s /etc/rc.d/quotas /etc/rc.d/rc5.d/S20quotas
# Passo 4: checagem uma vez por semana
# contab -e
# 03**0 /sbin/quotacheck-avug

16.8 Comandos das cotas
16.8.1 quota
# O comando quota mostra as cotas de espaço em disco para cada user e gr;
# Opções:
# [-u] mostra a quota definida para um determinado usuário;
# [-g] mostra a quota definida para um determinado grupo;
# [-q] mostra somente o quanto a quota foi excedida;
# [-v] mostra as quotas mesmo que nenhuma esteja definida;
#
# Exemplo: quota -v [nome_grupo ou usuário]

16.8.2 quotaon
# O comando quotaon habilita o gerenciamento de quotas;
# Opções:
# [-a] habilita para todos os dispositivos no /etc/fstab;
# [-g] habilita para um determinado grupo;
# [-u] habilita para um determinado usuário;
# [-v] mostra todos os dispositivos de gerenciamento de quotas ativo;
#
# Exemplo: quotaon -avug

16.8.3 quotaoff
# Desabilita as cotas de disco em um ou mais sistemas de arquivos;
# Opções:
# [-a] desabilita as cotas para todos os dispositivos em /etc/fstab;
# [-g] desabilita para um determinado grupo;
# [-u] desabilita para um determinado usuário;
# [-v] mostra cada sistema de arquivo em que as cotas foram desabilitada;
#
# Exemplo: quotaoff -av

16.8.4 quotacheck
# Examina sistema de arquivos e compila banco de dados a cotas;
# Opções:
# [-a] faz uma varredura em todos os dispositivos em /etc/fstab;
# [-g] constrói a base de dados de cotas para um determinado grupo;
# [-u] constrói a base de dados de cotas para um determinado usuário;
# [-v] mostra todos os procedimentos executados pelo quotacheck;
#
# Exemplo: quotacheck -aug

16.8.5 edquota
# Comando para editar as cotas de grupo e usuários;
# Utiliza editores de texto como vi;
# Opções:
# [-g] deve colocar o nome do grupo como parâmetro
# [-n] default, para editar as cotas do usuários;
# [-u] para editar uma cota de um determinado usuário;
# [-p] chamado de proto-usuário, copia as configurações e passa a outro;
# [-t] deve ser usada com [-u] ou [-g] para configurar período de graça;
#
# Exemplo: edquota -u kakashi

16.9 Permissões de arquivos Linux
# Há três níveis de permissões;
# [u] usuário dono do arquivo;
# [g] gruop dono do arquivo;
# [o] outros;

# [d] diretório;
# [l] link simbólico;
# [c] dispositivo especial de caracteres;
# [p] canl fifo;
# [s] socket;
# [-] arquivo comum;
#
# As letras são dividias em três grupos para as permissões;
# [r] leitura;
# [w] escrita;
# [x] execuçao;
#
# Para incluir permissões de leitura para o grupo;
# chmod g=r,o-r [arquivo ou diretório]
#
# Para incluir permissões de escrita para o grupo;
# chmod g+w [arquivo ou diretório]
# [-R] modo recursivo para todos os subdiretórios receber as alterações;

16.9.1 Permissões Octais
# São representadas por números, numa sequência de dígitos;
# Execução = 1
# Escrita  = 2
# Leitura  = 4
#
# ordem correta de permissões rwx
# bit ativo = 1
# bit zero  = 0
# rwx
# 111  1 = ligado / 0 = desligado
#
# --x
# 001  = 1 
# -w- 
# 010  = 2
# r--
# 100  = 4
# rw-
# 110  = 4 + 2 = 6
# rwx
# 111 = 4 + 2 + 1 = 7
# rwx rw- rw-
# 111 110 110
# 7   6   6     

16.9.2 umask
# É um filtro de permissões para a criação de arquivos, default;
# Para arquivos as permissões são 666 (leitura e gravação) á todos;
# Para diretóris as permissões são 777 (leitura, gravação e execução);
# umask sem argumentos mostra a máscara da criação atual de arquivos;
# Em sisitemas onde grupos e usuários são particulares a mask é 002;
# Assim os arquivos são criados sem a permissão de escrita 2 w em outros;
# ficando 664 na criação de permissões;
# Onde o sistema é 0022, as permissões são 0644

16.9.3 suid e sgid
# Todos os processos são vinculados ao usuários que iniciou;
# Isso limita o acesso dos usuários somente onde há permissões;
# Para que um usuário altere ou inicie um processo sem permissão (root);
# /etc/passwd para alterar este arquivo de senhas precisa ser root;
#
# Exemplo: -rw-r--r-- 1 root root 814 2006-03-14 14:04 /etc/passwd
#
# Existe um bit de permissão especial chamado suid;
# Assim serão executados em nome do dono do arquivo e não quem executou;
# A permissão suid é representada pela letra [s]
#
# Exemplo: -rwS--x--x 1 root bin 37880 2004-05-21 16:20 /usr/bin/passwd
#
# Para incluir um modo suid a um arquivo executável;
# chmod u+s meu_arquivo
#
# De modo semelhante o sgid atua em diretórios, irá aparecer na pasta;
#
# Exmplo: chmod g+s meu_diretório

# Se aparecer [s] minúsculo a permissão de [x] também existe;
# Se aparecer [S] maiúsculo a permissão de [x] não existe;

16.9.4 Permissão sticky
# Evita que usuários excluam arquivos que não são donos; caso /tmp
#
# Exemplo: drwxrwxrwt 13 root root 4096 out 14 12:55 /tmp
#
# A letra [t] nas permissões demonstra que existe o uso permissão sticky;
# Se for [T] maiúsculo somente existe a permissão sticky;

17. Atributo chattr
# Estabelece regras para o travamento de arquivos em sistemas ext2
# São os chamados atributos do arquivos, para listar use lsattr;
# +, - ou = para adicionar, retirar ou tornar exclusivo;
# Opções:
# [A] não modifica data de acesso;
# [a] não sobreescreve o conteúdo, exceto superuser, CAP_LINUX_IMMUTABLE
# [c] O kernel comprime e descomprime dados para gravar e ler
# [D] exclui arquivo de um backup via dump
# [i] não poderá alterar link exceto superuser e CAP_LINUX_IMMUTABLE
# [j] todos os dados serão gravados no journal ext3 antes de ser gravado;
# [s] se o arquivo for apagado, seus blocos serão zerado no disco;
# [S] alterações serão gravada no disco imediatamente;
# [u] recuperação de arquivo após a remoção
#
# Exemplo: atribuir [i] ao arquivo simples;
# chattr +i [arquivo]

17.1 Lista de Controle de Acesso ACL
# Para obter maior controle ao acesso de arquivos e diretórios;
# Determina condições de acesso para um usuário em particular ou grupo;
# Possui um tipo de entrada e as permissões;
# Tipo de entrada:
# [OCL_USER_OBJ] permissões para o dono do arquivo;
# [ACL_USER] permissões para usuários determinado no argumento;
# [ACL_GROUP_OBJ] permissões de acesso para o grupo do arquivo;
# [ACL_MASK] maiores permissões para ACL_USER, ACL_GROUP_OBJ e ACL_GROUP;
# [ACL_OTHER] permissões para os outros processos
#
# Para mudar o dono do arquivo usa-se chown e chgrp
# Para mudar o dono
# chown [user] [arquivo]
# chgrp [group] [arquivo]
# [-R] modo recursivo para todos os subdiretórios

17.2 Links
# Hardlinks são um ou mais nomes que um inode do sistema pode ter;
# Todo arquivo criado é um hardlink para seu inode correspondente;
# O arquivo só será apagado quando não houver nenhum hardlink e sem uso;
# O comando ln cria nos hardlink;
#
# Exemplo: ln arquivo outro_arquivo
#
# A opção [-i] do comando ls mostra o número inode dos arquivos;
# Ambos os arquivos são hardlink para o mesmo inode 55412;
# O mesmo inode possui permissão, dono, tamanho, data; 
#
# Exemplo: drwxr-xr-x  2 kakashi kakashi 4096 out 13 08:10 Iso
#
# O número 2 na segunda coluna demonstra que há 2 hardlinks para o inode;

17.3 Softlinks (Links Simbólicos)
# Links simbólicos apontam para um caminho, ou para um hardlink;
# Podem apontar para qualquer alvo em diferentes sistemas de arquivos;
# Para criar um link simbólico use ln -s
#
# Exemplo: ln -s [arquivo] [link_arquivo]
#
# UM link é indicado pela letra [l] no início das permissões
# Tem o mesmo tamanho de byte (caracter) do caminho alvo;
# Link para um caminho relativo é quebrado se o alvo ou link for apagado
# Link para um caminho absoluto é quebrado se o alvo ou link for apagado;
# [-f] para recriar o link simbólico;

17.4 Localizando arquivos no Linux
17.4.1 which
# O comando which recebe como argumento o nome de um comando;
# Exemplo: which mkdir

17.4.2 find
# O comando find localiza à partir de um caminho ou diretório recursivo;
# Exmplo: find / -name bash
# Para localizar pelo nome maiúsculo e minúsculo usa-se -iname
# Exemplo: find / -iname bash
# Para achar links simbólicos usa-se lname
# Exemplo: find / -lname bash
# Para achar arquivos que foram alterados nos últimos 30 dias;
# Exemplo: find / -ctime 30

17.4.3 locate
# O comando locate busca a localização de arquivos e diretórios;
# Usa um banco de dados criado pelo comando updatedb;
# Exemplo: locate passwd

17.4.4 whatis e apropos
# whatis procura no banco de dados por uma palavra exatamente
# apropos, procura no banco de dados do whatis


############
Referências:
(http://Icenter.com.br/linux/arquivos/1437

Nenhum comentário:

Postar um comentário