Sie sind auf Seite 1von 23

port:80  

 
a porta de entrada no 
mundo da tecnologia 
 
 
 
 
 
Idealizador: PABLO MIGUEL CRESTANI LÓPEZ
SISTEMA LINUX
O sistema operacional Linux foi desenvolvido na junção de dois projetos GNU + Kernel Linux.
Cada um com a sua devida importância para o estabelecimento de criação de um sistema robusto
que fosse distribuído e desenvolvido de forma descentralizada graças a milhares de programadores
ao redor do mundo.

Neste guia PORT:80 organizei da forma que achei mais coesa e inteligível para os novos usuários
que querem aprender esse sistema operacional através da linha de comando. Aos novos entusiastas
do Linux fiquem atentos principalmente ao Menu Principal.

Utilizem os comandos quantas vezes forem necessário para perder o medo do terminal e verão que
traz rapidez e novidades a cada comando.

Caso tenham receio o recomendado sempre é instalar um software de virtualização: VirtualBox,


VMware, KVM entre outros. E instalar uma distribuição que tenha uma ampla gama de
informações na internet. E a mais tradicional neste caso é o Ubuntu ( Faça o download no site
oficial https://www.ubuntu.com/ ).

Se queres saber mais informações consulte os sites oficiais descritos abaixo:

https://www.fsf.org/
https://www.kernel.org/
https://www.linuxfoundation.org/
https://www.debian.org/
https://www.redhat.com/
https://www.archlinux.org/
https://www.gentoo.org/
http://www.slackware.com/
https://pt.opensuse.org/
https://www.distrowatch.com/
LINHA DE COMANDOS

Ao adentrar a distribuição entre no terminal e comece a teclar os comandos descritos abaixo e veja
se tais informações realmente aparecem na tela do terminal. Não decore comandos! Exercite dia
após dia que com o tempo terá uma segurança e certeza dos caminhos que tens que seguir pra lidar
com todas as informações presentes no sistema.

Centro do Usuário - Menu Principal


# uname -a # Obter versão do kernel (#uname , # uname -a, # uname -r)
# cd # Navegue entre diretórios (# cd -, # cd ~, #cd ..)
# touch # Cria um novo arquivo vazio (touch, nano, vi, vim e etc)
# cp # Copia Arquivo ( #cp /user/arq1 /user/novo/arq1, #cp arqA .)
# mv # Move Arquivo - Renomeia Arquivo(#mv arq1 arqA)
# rm # Exclui Arquivo (# rm arq1, # rm arqA)
# rmdir # Exclui Diretório
# ls # Lista Informações (# ls -a #ls -la)
# pwd # Mostra o diretório atual
# cat # Lê arquivo de texto e printa na tela (# cat arq1, # cat arqA)
# file # Informa caracteristicas de um arquivo
# locate # Realiza pesquisa de arquivos por nome
# find # Realiza pesquisa de arquivos em toda a hierarquia de diretórios
# comm(diff) # Encontra diferença entre dois arquivos
# echo # Printa texto no terminal(echo “Hello Word!”)
# grep # Filtra a saída de um outro comando
# od # Obtém e visualiza o conteúdo de arquivos em formatos distintos
# head # Visualiza inicio de um arquivo
# df # Exibe informações do disco (# df -h)
# du # Exibe o uso de um diretório (# du -h)
# ps # Lista os processos (#ps -a | grep top - #ps -a | grep ls)
# clear # Limpa a tela do terminal
# apropos/ man k # Faz pesquisa no manual de comandos em relação a palavra
# whatis # Exibe a descrição da página do manual de ref. em uma linha
# man # Manual de Referência de Comandos
# wget # Download não-interativo (wget -r www.exemplo.com.br)
# curl # Transferência de URL
Rodando o Kernel e Informações do Sistema
# uname -a # Obter versão do kernel
# lsb_release -a # Informação completa de lançamento de qualquer distribuição LSB
# cat /etc/SuSE-release # Obter versão do SuSE
# cat /etc/debian_version # Obtem versão do Debian
# cat /etc/*release # Obtém informações completas sobre a versão em todas as distros
# uptime # Exibir a quanto tempo o sistema está rodando + carga
# hostname # Host name do sistema
# hostname -i # Exibir o endereço local do host (127.0.0.1)
# date # Exibe a hora de Brasília (ou de sua localidade)
# man hier # Descrição da hierarquia do sistema de arquivo
# last reboot # Exibir histórico de reboot do sistema

Informações de Hardware
Hardware detectado pelo kernel
# dmesg # Hardware detectado e mensagens de boot
# dmidecode # Exibir DMI/SMBIOS: hw info da BIOS
# cat /proc/cpuinfo # Modelo do CPU
# cat /proc/meminfo # Memória do Hardware
# grep MemTotal /proc/meminfo # Exibir a memória física
# watch -n1 'cat /proc/interrupts' # Observar interrupções alteráveis continuadamente
# free -m # Memória utilizada e livre (-m para MB)
# cat /proc/devices # Dispositivos configurados
# lspci # Exibir dispositivos PCI
# lsusb # Exibir dispositivos USB
# lsmod # Exibir modulos do Kernel

Carga, estatísticas e mensagens


Os comandos a seguir são úteis para descobrir o que está acontecendo no sistema.
# top # Exibe e atualiza o top dos processos do cpu
# vmstat 2 # Exibe estatísticas da memória virtual
# ipcs -a # Informações de interprocessos no System
# tail -n 500 /var/log/messages # Últimas 500 mensagens kernel/syslog
# tail /var/log/warn # Mensagens de aviso do sistema; veja syslog.conf
Usuários
# id # Exibe id do usuário ativo com login e group
# last # Exibe os últimos logins no sistema
# who/whoami # Exibe quem está logado no sistema

Runlevels (Níveis de Execução)

Uma vez inicializado, o kernel inicia o init o qual então inicia rc o qual inicia todos os scripts
pertencentes a um runlevel.

O runlevel padrão está configurado em /etc/inittab. É normalmente o 3 ou o 5:


# grep default: /etc/inittab
id:3:initdefault:

O The runlevel atual pode ser alterado com o init. Por exemplo, para ir do 3 para o 5:
# init 5 # Entra o runlevel 5
0 Shutdown and halt(encerrar e desligar)
1 Modo Single-User (também S: Não inicia as daemons, ou seja, serviços)
2 Multi-user sem rede
3 Multi-user com rede
5 Multi-user com X
6 Reboot

Reconfigurar a senha de root


Ao carregamento de boot [boot loader (lilo or grub)], entre a opção de boot a seguir:
init=/bin/sh
O kernel montará a partição root e init iniciará o bourne shell ao invés de rc e então um runlevel.
Utilize o comando passwd no prompt e altere a senha e então reinicie. Esqueça o modo single user
como se precisasse da senha para isso.
Se, depois de inicializar, a partição root estiver montada em somente leitura (read only), remonte
em rw:
# mount -o remount,rw /
# passwd # ou exclua a senha do root (/etc/shadow)
# sync; mount -o remount,ro / # sincroniza antes para remontar em somente leitura
# reboot
Módulos do Kernel

# lsmod # Listar todos os módulos carregados no kernel


# modprobe # Para carregar um módulo

Reparar (concertar) o Grub


Então você quebrou o grub? Inicie (boot) a partir de um live cd, [encontre sua partição Linux sob
/dev e utilize fdisk para encontrar a partição Linux] monte a partição linux, adicione /proc e /dev e
utilize grub-install /dev/xyz . Suponha que o Linux repousa no /dev/sda6 :
# mount /dev/sda6 /mnt # Monte a partição Linux em /mnt
# mount --bind /proc /mnt/proc # Monte o subsistema dentro de /mnt
# mount --bind /dev /mnt/dev # Monte os dispositivos dentro de /mnt
# chroot /mnt # Altere o root para a partição linux
# grub-install /dev/sda # Reinstale o grub com suas configurações antigas

PROCESSOS

Listar e PIDs
Cada processo possui número único, o chamado PID. Uma lista de todos os processos em execução
é exibido com o ps.
# ps -auxefw # Lista extensiva de todos os processos em execução
Contudo o uso mais típico é com um pipe ou com pgrep
# ps axww | grep cron
586 ?? Is 0:01.48 /usr/sbin/cron -s
# ps aux | grep 'ss[h]' # Encontre todos os PIDs ssh sem o PID do grep
# pgrep -l sshd # Encontre os PIDs dos processos por (parte do) nome
# echo $$ # O PID do seu shell
# fuser -va 22/tcp # Lista de processos utilizando a porta 22
# pmap PID # Mapa de memória do processo
# fuser -va /home # Listar processos acessando a partição /home
# strace df # Traçar chamadas e sinais do sistema
# truss df # Traça chamadas através das bibliotecas compartilhadas

Plano de fundo ou plano frontal (Background/Foreground)


Quando iniciado a partir de um shell, processos podem ser trazidos em plano de fundo
(background) e de volta para o plano frontal (foreground) com [Ctrl]-[Z] (^Z), bg e fg . Listar os
processos com o jobs. Quando necessário destaca a partir de um terminal com o disown .
# ping 8.8.8.8 > ping.log
^Z # ping está suspense com o CTRL + Z
# bg # Coloca em plano de fundo e segue ativo
# jobs -l # Lista processos em plano de fundo
[1] - 36232 Running ping 8.8.8.8 > ping.log
[2] + 36233 Suspended (tty output) top
# fg %2 # Traz processo 2 de volta para plano frontal

Utilize nohup para iniciar um processo na qual tem que continuar executando quando o shell for
fechado (imune a hangups).
# nohup ping -i 60 > ping.log &

Top
O programa top exibe informações de processos em execução. Veja também o programa htop uma
versão mais poderosa do top. Enquanto o top estiver rodando pressione a tecla h para ter visão
global de ajuda (help). Teclas úteis são:
● u [user name] para exibir somente os processos pertinentes ao usuário. Utilize + ou em
barco para ver todos os usuários
● k [pid] Matar os processos com o pid.
● 1 para exibir todas as estatísticas dos processadores (somente em Linux)
● R Alterna o tipo de normal/reversa.

Sinais/Kill
Termina ou envia um sinal com kill ou killall.
# ping -i 60 8.8.8.8 > ping.log &
[1] 4712
# kill -s TERM 4712 # O mesmo que kill -15 4712 (PID)
# killall -1 httpd # Kill HUP nos processos por nome exato
# pkill -9 http # Kill TERM nos processos por (parte do) nome
# pkill -TERM -u www # Kill TERM nos processos possuídos por www
# fuser -k -TERM -m /home # Mata todos os processos acessando /home

Sinais importantes são:


1 HUP (hang up)
2 INT (interrupt)
3 QUIT (quit)
9 KILL (non-catchable, non-ignorable kill)
15 TERM (software termination signal)
SISTEMA DE ARQUIVOS

Permissões
Altere permissão e proprietário com o chmod e chown . O umask padrão pode ser alterado para
todos os usuários em /etc/profile para Linux. O umask padrão é normalmente 022. O umask é
subtraído a partir do 777, assim o umask 022 resulta em uma permissão de 755.
1 --x execute # Mode 764 = exec/read/write | read/write | read
2 -w- write # For: |-- Owner --| |- Group-| |Oth|
4 r-- read
ugo=a u=user, g=group, o=others, a=everyone

# chmod -R o-r /home/* # Remove recursivamente outros legíveis para todos os users
# chmod u+s /path/to/prog # Configura o SUID bit no executável (Saiba o que fazer!)
# find / -perm -u+s -print # Encontra todos os programas com o SUID bit
# chown user:group /path/to/file # Altera o usuário e proprietário do grupo de um arquivo
# chgrp group /path/to/file # Altera o proprietário de um grupo de um arquivo
# chmod 640 `find ./ -type f -print` # Altera as permissões para 640 para todos os arquivos

Informações de disco
# hdparm -I /dev/sda # Informação a respeito do disco IDE/ATA (Linux)
# fdisk /dev/sda # Exibe e manipula a tabela de partição
BOOT

Pontos de montagem do sistema/Uso de disco


# mount | column -t # Mostra o sistemas de arquivos montados no sistema
# df # Exibe espaço livre de disco e dispositivos montados
# cat /proc/partitions # Mostra todas as partições registradas

Uso de disco
# du -sh * # Tamanhos de diretórios como listado
# du -csh # Tamanho total do diretório atual
# du -ks * | sort -n -r # Classifica tudo por tamanho em kilobytes

Monta/remonta um sistema de arquivo


Por exemplo o cdrom. Se listado em /etc/fstab:
# mount /cdrom
Ou encontre o dispositivo em /dev/ ou com o dmesg

# mount -t auto /dev/cdrom /mnt/cdrom # comando mount típico do para cdrom


# mount /dev/hdc -t iso9660 -r /cdrom # IDE típico
# mount /dev/scd0 -t iso9660 -r /cdrom # cdrom SCSI típico
# mount /dev/sdc0 -t ntfs-3g /windows # SCSI típico

Entrada em /etc/fstab:
/dev/cdrom /media/cdrom subfs noauto,fs=cdfss,ro,procuid,nosuid,nodev,exec 0 0

Adicionar swap com o sistema em pleno uso (on-the-fly)


Suponhamos que você precise de mais swap (agora mesmo), diga um arquivo de 2GB /swap2gb
(somente em Linux).
# dd if=/dev/zero of=/swap2gb bs=1024k count=2000
# mkswap /swap2gb # Cria a área de swap
# swapon /swap2gb # Ativa a SWAP. Isso agora em uso
# swapoff /swap2gb # Quando feito desative a swap
# rm /swap2gb # Delete a swap
REDE

Debugging

Linux
# ip link show # Exibe todas as interfaces
# ip link set eth0 up # Ativa o dispositivo como “ifconfig eth0 up".
# ip link set eth0 down # Desativa o dispositivo como "ifconfig eth0 down".
# ip addr show # Exibe todos os endereços de IP “ifconfig”
# ip neigh show # Similar ao arp -a

Outros OSes
# arp -a # Verifica a entrada ARP do roteador (ou host)
# ping host # Realiza requisição ICMP
# traceroute host # Imprime o caminho do roteador para o destino
# netstat -s # Estatisticas do System para cada protocolo de rede

Comandos adicionais que não são sempre instalados por padrão, mas fáceis de encontrar:
# arping 192.168.16.254 # Ping na camada Ethernet
# tcptraceroute -f 5 host # Utiliza o TCP para traçar rotas pelos firewalls

Roteamento

Imprimir tabela de roteamento


# route -n # Linux ou utilize o "ip route"
# netstat -rn # Linux

Adicionar e Excluir uma Rota

# route add -net 192.168.20.0 netmask 255.255.255.0 gw 192.168.16.254


# ip route add 192.168.20.0/24 via 192.168.16.254 # o mesmo que acima com o ip route
# route add -net 192.168.20.0 netmask 255.255.255.0 dev eth0
# route add default gw 192.168.51.254
# ip route add default via 192.168.51.254 dev eth0 # o mesmo que acima com o ip route
# route delete -net 192.168.20.0 netmask 255.255.255.0
Configurar endereços de IP adicionais

# ifconfig eth0 192.168.50.254 netmask 255.255.255.0 # Primeiro IP


# ifconfig eth0:0 192.168.51.254 netmask 255.255.255.0 # Segundo IP
# ip addr add 192.168.50.254/24 dev eth0 # Comandos de ip equivalentes
# ip addr add 192.168.51.254/24 dev eth0 label eth0:1

Altera o MAC address


Normalmente tem se que derrubar a interface antes da alteração. Não me diga o por que você
deseja alterar o endereço de máquina (MAC address)...
# ifconfig eth0 down # Desliga a interface
# ifconfig eth0 hw ether 00:01:02:03:04:05 # Altera o endereço MAC address

Portas em uso
Escutar portas abertas:
# netstat -an | grep LISTEN
# lsof -i # Lista todas as conexões com a internet
# netstat -anp --udp --tcp | grep LISTEN # Lista conexões conforme os protocolos informados
# netstat -tup # Lista conexões ativas do sistema
# netstat -tupl # Lista portas que estão sendo escutadas no SO

DNS
Em Unix as entradas de DNS são válidas para todas as interfaces e são armazenadas em
/etc/resolv.conf. O domínio para a qual o host pertence também está armazenado nesse arquivo.
Uma configuração mínima é:
nameserver 8.8.8.8
nameserver 8.8.4.4
Consulta de direcionamento
Dig é seu amigo nos teste de configurações de DNS. Por exemplo o servidor de DNS público
213.133.105.2 ns.second-ns.de pode ser utilizado para teste. Veja de qual servidor o cliente recebe
a resposta (resposta simplificada).
# dig sleepyowl.net
sleepyowl.net. 600 IN A 78.31.70.238
;; SERVER: 192.168.51.254#53(192.168.51.254)

O roteadr 192.168.51.254 respondeu e a resposta é a entrada A. Qualquer entrada pode ser


consultada e o servidor DNS pode ser selecionado com @:
# dig MX google.com
# dig @127.0.0.1 NS sun.com # Para testar o servidor local( *se vocẽ possuir)
# dig @204.97.212.10 NS MX heise.de # Consulta um servidor externo
# dig AXFR @ns1.xname.org cb.vu # Obtém a zona completa (zone transfer)

O programa host também é poderoso.


# host -t MX host # Obtém a entrada do mail MX
# host -t NS -T host # Obtém registro de NS sobre uma conexão TCP
# host -a host # Obter tudo

Reverter consultas
Encontre um nome pertencente á um endereço de IP (in-addr.arpa.). Isso pode ser feito com dig ,
host e nslookup :
# dig -x 8.8.8.8
# host 8.8.8.8
# nslookup 8.8.8.8

/etc/hosts
Hosts únicos pode ser configurados no arquivo /etc/hosts ao invés de rodar named localmente para
resolver as consultas de hostname. o formato é simples, por exemplo:

Nesse arquivo pode ser realizado a configuração simples para bloqueio de qualquer site impróprio
que esteja lhe interferindo com propagandas ou mesmo minerando o seu equipamento.
# vi /etc/hosts
0.0.0.0 www.sitebloqueado.com
0.0.0.0 www.google.com

Ou seja bloqueia qualquer tentativa de chamada para conexão externa que não for do seu agrado.
Análise de tráfego

Sniff com tcpdump


# tcpdump -nl -i bge0 not port ssh and src \(192.168.16.121 or 192.168.16.54\)
# tcpdump -n -i eth1 net 192.168.16.121 # Seleciona para/de um único IP
# tcpdump -n -i eth1 net 192.168.16.0/24 # Seleciona tráfego para/de uma rede
# tcpdump -l > dump && tail -f dump # Saída em Buffer
# tcpdump -r traffic.rl0 # Lê a partir do arquivo
# tcpdump port 80 # Escuta a porta 80
# tcpdump host 192.168.0.1 (rede local) # Escuta outro host na rede
# tcpdump -i eth0 -X port \(110 or 143\) # Verifica se pop ou imap é seguro
# tcpdump -n -i eth0 icmp # Somente captura pings
# tcpdump -i eth0 -s 0 -A port 80 | grep GET # -s 0 para total de pacotes -A para ASCII

Opções adicionais importação:


-A Printa cada pacote em texto limpo (sem cabeçalho)
-X Printa pacotes em hex e ASCII
-l Faz linha de saída (stdout)em buffer
-D Printa todas a interfaces disponíveis

Scan com nmap


Nmap é scanner de portas com detecção do OS, é normalmente instalado em muitas distribuições e
também está disponível para. Se você não scanear seu servidor, hackers (nota do tradutor: black
hats no caso, e não white hats) fazem isso por você...
# nmap host # Escaneia todas as portas TCP reservadas no host
# nmap -sP 192.168.16.0/24 # Descobre quais IP são utilizados e por qual host no 0/24
# nmap -sS -sV -O host # Faz um stealth SYN scan com versão e detecção de OS
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 3.8.1
25/tcp open smtp Sendmail smtpd 8.13.6/8.13.6
80/tcp open http Apache httpd 2.0.5
Netcat
Netcat (nc) é melhor conhecido como o "Canivete Suíço de Rede", ele pode manipular, criar ou
ler/escrever conexões TCP/IP.

Você pode precisar usar o comando netcat ao invés do nc .

Transferência de arquivo
Cópia um diretório grande através de uma conexão tcp bruta. A transferência é bem rápida (sem
sobrecarga de protocolo) e você não precisa bagunçar com NFS ou SMB ou FTP ou outros,
simplesmente torne o arquivo disponível no servidor, e ser obtido a partir do cliente. Aqui
192.168.1.1 é o endereço de Ip do servidor.
server# tar -cf - -C VIDEO_TS . | nc -l -p 4444 # Serve o arquivo tar na porta 4444
client# nc 192.168.1.1 4444 | tar xpf - -C VIDEO_TS # Puxa o arquivo na porta 4444
server# cat largefile | nc -l 5678 # Serve um único arquivo
client# nc 192.168.1.1 5678 > largefile # Puxa um único arquivo
server# dd if=/dev/da0 | nc -l 4444 # Imagem da partição do servidor
client# nc 192.168.1.1 4444 | dd of=/dev/da0 # Puxa partição para clonagem
client# nc 192.168.1.1 4444 | dd of=da0.img # Puxa partição para o arquivo

Tem ferramentas até mais apuradas como por exemplo o Magic Wormhole
https://github.com/warner/magic-wormhole que realiza transferência de arquivos grandes de forma
rápida e simples gerando uma chave imediata para a transferência do arquivo. Há também
tranferência segura com o SCP protocolo que permite copiar arquivos entre servidor SSH e
máquina local.

Copiando um arquivo remoto para máquina local:


#scp user@domain:/pasta-remota/arquivo-remoto.txt /pasta-local/arquivo-local.txt

Enviando um arquivo local para um servidor remoto:


#scp /pasta-local/arquivo-local.txt user@domain:/pasta-remota/arquivo-remoto.txt

Copiando pastas e subpastas do servidor remoto para máquina local:


#scp -r user@domain:/pasta-remota/ /pasta-local/

Enviando pastas e subpastas da máquina local para o servidor remoto:


#scp -r /pasta-local/ user@domain:/pasta-remota/
SUDO
Sudo é um modo padrão para conceder aos usuários alguns direitos administrativos sem fornecer a
senha de root. Simplesmente chame o comando com o sudo:
# sudo /etc/init.d/dhcpd restart # Rode o script rc como root
# sudo -u sysadmin whoami # Rode o cmd como um outro usuário

ARQUIVOS CRIPTOGRAFADOS

OpenSSL

Um único arquivo
Criptografar e descriptografar:
# openssl aes-128-cbc -salt -in arquivo -out arquivo.aes
# openssl aes-128-cbc -d -salt -in arquivo.aes -out arquivo

Note que o arquivo pode ser um arquivo tar (tar archive).

tar e criptografar um diretório completo


# tar -cf - directory | openssl aes-128-cbc -salt -out diretório.tar.aes # Criptografado
# openssl aes-128-cbc -d -salt -in diretório.tar.aes | tar -x -f - # Descriptografado

tar zip e criptografar um diretório completo


# tar -zcf - directory | openssl aes-128-cbc -salt -out diretório.tar.gz.aes # Criptografado
# openssl aes-128-cbc -d -salt -in diretório.tar.gz.aes | tar -xz -f - # Descriptografado

● Utilize -k mysecretpassword depois de aes-128-cbc para evitar solicitação de senha


interativa. No entanto note que isso é altamente inseguro.
● Utilize aes-256-cbc ao invés de aes-128-cbc para obter criptografia ainda mais forte. Isso
utiliza também mais CPU.
GPG
GnuPG é bem conhecido para criptografar e assinalar e-mails ou qualquer dado. Além do mais gpg
também provê um sistema avançado de gerenciamento chaves.
A criptografia mais simples é com uma symmetric cipher. Nesse caso o arquivo é criptografado
com uma senha e qualquer um que saiba a senha pode descriptografá-lo, assim as chaves não são
necessárias. GPG adiciona uma extensão ".gpg" para os nomes do arquivos criptografados.
# gpg -c file # Criptografa arquivo com senha
# gpg file.gpg # Descriptografa arquivo (opcionalmente -o otherfile)

Utilizando Chaves (KEYS)

As chaves privadas e públicas são o centro da criptografia assimétrica. O que é importante lembrar:
● Sua chave pública é usada por outros para criptografar arquivos que somente você como o
receptor pode descriptografar (não somente aquele que criptografou o arquivo que pode
descriptografá-lo). A chave pública tem que ser distribuída.
● Sua chave privada é criptografada com a sua passphrase e é utilizada para descriptografar
arquivos que foram criptografadas com a your chave pública. A chave privada deve ser
guardada segura . Se a chave ou passphrase for perdida, todos os arquivos criptografados e
chaves públicas também serão.
● Os arquivos chaves são chamados keyrings (chaveiros) já que eles podem conter mais que
uma chave.

Primeiro gere o par de chaves. As padrões são boas, no entanto você terá que inserir ao menos seu
nome completo e e-mail e opcionalmente um comentário. O comentário é útil para criar mais do
que uma chave com o mesmo e-mail. Você deve também utilizar uma "passphrase", não uma senha
simples.
# gpg --gen-key # Isso pode levar um tempo

As chaves são armazenadas em ~/.gnupg/ no Unix


~/.gnupg/pubring.gpg # Contem suas chaves públicas e todas as outras importadas
~/.gnupg/secring.gpg # Pode conter mais de uma chave privada

Curto lembrete nas opções mais utilizadas:


-e Criptografa dado
-d Descriptografa dado
-r NAME criptografa para o recipiente NAME (ou 'Full Name' ou 'email@domain')
-a Cria saída blindada ASCII de uma chave
-o Utiliza com arquivo de saída
Criptografa somente para uso pessoal
Não necessita exportar/importar qualquer chave para isso. Você já possui ambas.
# gpg -e -r 'Your Name' arquivo # Criptografa com a sua chave pública
# gpg -o file -d arquivo.gpg # Descriptografa. Utiliza -o ou vai para a saída

COMANDOS UTEIS

Less
O comando less exibe um documento de texto no console. Ele é presente em muitas instalações.
# less arquivo.txt
# less arquivo

VI (VIM)
Vi está presente em QUALQUER instalação Linux/Unix e é logo útil saber alguns comandos
básicos. Há dois modos: modo comando e modo inserção. O modo de comandos é acessado com
[ESC], o modo de inserção com o i. Use : help se estiver perdido.
Os editores nano e pico estão geralmente disponíveis também e são mais fáceis de usar.

Sair (Quit)
:w newfilename Salva o arquivo com o nome de newfilename
:wq or :x Salva e sai
:q! Sai sem salvar

Buscar e Mover
/string Busca por string para frente
?string Volta por string para tras
n Busca pela próxima instância de string
N Busca por instancia de string anterior
{ Move um paragrafo para trás
} Move um paragrafo para frente
1G Move para a primeira linha do arquivo
nG Move para o n th de linha do arquivo
G Move para a ultima ultima linha do arquivo
:%s/OLD/NEW/g Busca e substitui toda a ocorrência

Excluir, Copiar e Colar texto


dd (dw) Corta linha corrente (palavra)
D Cut to the end of the line
x Delete (cut) character
yy (yw) Copy line (word) after cursor
P Paste after cursor
u Desfaz a ultima modificação
U Desfaz todas as alterações até a linha atual

Editores de Texto

Hoje em dia cada distribuição possui uma série de diferenças e uma delas é o Editor de Texto que
varia de distribuição para distribuição além de outras alternativas que se baixa com facilidade.

Se queres outro editor realize a busca referente ao repositório da sua distribuição:


Nano, Vim , Pluma, Sublime, Atom entre outros.

Tar (Arquivo Compactado)


O comando tar (tape archive) gera e extrai arquivos e diretórios armazenados. O arquivo .tar
descompactado, um arquivo compactado tem a extensão .tgz ou .tar.gz (zip) ou .tar.bz (bzip2). Não
utilize caminho absoluto quando gerar um arquivo, você provavelmente quer desempacota-lo em
algum outro lugar. Alguns comandos são:

Gerar arquivo Tar


# cd /
# tar -cf home.tar home/ # Arquiva o diretório /home completo (c para criar)
# tar -czf home.tgz home/ # Compressão zip
# tar -cjf home.tbz home/ # Compressão bzip2

inclue somente um (ou dois) diretórios a partir de uma árvore, mas mantém a estrutura relativa. Por
exemplo, arquivar /usr/local/etc e /usr/local/www e o primeiro diretório no arquivo deve ser local/.
# tar -C /usr -czf local.tgz local/etc local/www
# tar -C /usr -xzf local.tgz # Para desempacotar o diretório local dentro de /usr
# cd /usr; tar -xzf local.tgz # Para desempacotar o diretório local dentro de /usr

Extração de Arquivos
# tar -tzf home.tgz # Olha dentro do arquivo sem extrair (lista)
# tar -xf home.tar # Extrai o arquivo aqui (x para extrair)
# tar -xzf home.tgz # O mesmo que da compressão zip
# tar -xjf home.tbz home/user/file.txt # Restaura um único arquivo
# tar -xOf home.tbz home/user/file.txt # Imprime o arquivo na saída (stdout) (sem extração)
Zip/Unzip
Arquivos zip podem ser fáceis de compartilhar com o Windows.
# zip -r file.zip /home/user/ # Zipa o diretório para dentro do arquivo file
# unzip file.zip # Descompacta o arquivo zip
# unzip -l file.zip # Lista arquivos dentro do arquivo
# unzip -c file.zip file.txt # Imprime um arquivo na saída (sem extração)
# unzip file.zip file.txt # Extrai somente um arquivo

DD
O programa dd (disk dump ou destroy disk) é utilizado para copiar partições e discos e para outros
truques de cópias. Uso típico:

# dd if=<source> of=<target> bs=<byte size> conv=<conversion>

Opções importantes:
notrunc #Não trunca a saída do arquivo, todos os zeros serão escritos como zeros.
noerror #Continua depois da leitura de erros (ex. bad blocks)
sync #Enche todo bloco de entrada com Nulls para ibs-size
O tamanho de byte padrão é de 512 (um bloco).

Find
Algumas opções importantes:
-size n # n é +-n (Kilo,Mega, Giga, Tera e Penta)
-cmin n # Status de arq. q foi alterado nos ultimos min
# find . -type f ! -perm -444 # Encontra arquivos não legíveis por todos
# find . -type d ! -perm -111 # Encontra diretórios não acessíveis por todos
# find /home/user/ -cmin 10 -print # Arquivos alterados nos últimos 10 min.
# find . -type f -name "*.txt" ! -name README.txt -print # Exclui arquivos README.txt
# find /var/ -size +10M -exec ls -lh {} \; # Encontra arquivos grandes > 10 MB
# find /var/ -size +10M -ls # Encontra arquivos grandes > 10 MB

Miscelâneas
# which comando # Exibe nome completo do caminho do comando
# time comando # Veja quanto tempo p comando leva para ser executado
# time cat # Usa o time como o as cronômetro. Ctrl-c para parar
# cal -3 # Exibe um calendário de três meses
# date 10022155 # Define data e hora
# whatis grep # Exibe uma informação curta no comando
# whereis java # Busca caminho (path) e diretórios padrões para a palavra
# pwd # Imprime diretório de trabalho atual
# mkdir /home/user/novo # Gera diretório com o nome “novo”
# rmdir /home/user/novo # Remove o diretório vazio
# rm -rf /home/user/novo # Remove o diretório e o seu conteúdo (f= força)
# mv /dir1 /dir2 # Renomeia um diretório
# mv arq1 arq2 # Renomeia um arquivo
# history | tail -50 # Exibe us últimos 50 comandos utilizados
# cd - # CD - vai para o diretório anterior
# cd ~ # CD ~ vai para o diretório padrão

Verificar hashs de arquivo com o openssl. Essa é uma boa alternativa para os comandos md5sum
ou sha1sum que não vem sempre instalados por padrão.
# openssl md5 arquivo # Gera um checksum md5 do arquivo
# openssl sha1 arquivo # Gera um checksum sha1 do arquivo
# openssl rmd160 arquivo # Gera um checksum RIPEMD-160 do arquivo

INSTALAR SOFTWARE

Listar pacotes instalados


# rpm -qa # Red Hat, SuSE, Cent OS, Fedora, Opensuse e etc
# dpkg -l # Debian, Ubuntu, Linux Mint e etc

Adicionar/remover software
# rpm -i pacote.rpm # Instala o pacotes (RedHat,CentOS, SuSE)
# rpm -e pacote # Remove pacote

SuSE zypper
# zypper refresh # Atualiza o repositório
# zypper install vim # Instala o pacote vim
# zypper remove vim # Remove o pacote vim
# zypper search vim # Busca por pacotes com vim
# zypper update vim # Busca por pacotes com vim
# zypper info vim # Exibe informações sobre o pacote

Debian
# apt-get update # Primeiro, atualize as listas de pacotes
# apt-cache search vim # Busca por vim
# apt-cache show vim # Informação do pacote vim
# apt-get install vim # Instala pacotes vim
# apt-get remove vim # Remove pacotes vim
# dpkg -i pacote.deb # Instala o pacote.deb
# dpkg -remove pacote.deb # Remove somente o pacote.deb
# dpkg --purge remove pacote.deb # Remove o pacote.deb e dependências
# dpkg -S file # Encontra a qual pacote um arquivo pertence

# apt-get clean && sudo apt-get update # Recuperar pacotes quebrados


# dpkg --configure -a # Recuperar pacotes quebrados
# apt-get install -f # Recuperar pacotes quebrados

SHELLS
Muitas distribuições Linux utilizam o shell bash enquanto os BSDs utilizam o tcsh, o bourne shell é
utilizado somente para scripts. Filtros são muito úteis e pode ser canalizados:
grep #Parametro de combinação
sed #Busca e substitui strings ou caracteres
cut #Imprime colunas específicas a partir de um marcador
sort #Ordena alfabeticamente ou numericamente
uniq #Remove linhas duplicadas de um arquivo

Utilizados todos de uma so vez por exemplo:


# ifconfig | sed 's/ / /g' | cut -d" " -f1 | uniq | grep -E "[a-z0-9]+" | sort -r
# ifconfig | sed '/.*inet addr:/!d;s///;s/ .*//'|sort -t. -k1,1n -k2,2n -k3,3n -k4,4n

Bash
Redireciona e canaliza para o bash e para o sh:
# cmd 1> file # Redireciona a saída padrão (stdout) para o arquivo.
# cmd 2> file # Redireciona o erro padrão (stderr) para o arquivo.
# cmd 1>> file # Redireciona e anexa saída padrão para o arquivo.
# cmd &> file # Redireciona ambas (stdout e stderr) para o arquivo.
# cmd >file 2>&1 # Redireciona erro padrão para saída padrão e depois para o arquivo.
# cmd1 | cmd2 # canaliza saída padrão para cmd2
# cmd1 2>&1 | cmd2 # canaliza stdout e stderr para o cmd2
SCRIPTING

O shell Bourne (/bin/sh) está presente em todas as instalações Unix e scripts escritos nessa
linguagem são (bastante) portáveis; man sh é uma boa referência.

AWK
Awk é útil para field stripping, como cortar de um jeito mais poderoso.

awk '{ print $2, $1 }' file # Imprime e inverte as primeiras duas colunas
awk '{printf("%5d : %s\n", NR,$0)}' file # Adiciona números alinhados a esquerda
awk '{print FNR "\t" $0}' files # Adiciona números alinhados a direita
awk NF test.txt # Remove linhas em branco (o mesmo que grep '.')
awk 'length > 80' # Imprime linha maior que 80 caracteres

SED
Uma dicas sobre esta ferramenta que trabalha com arquivos.

sed 's/string1/string2/g' # Substituí string1 com string2


sed -i 's/wrong/wrong/g' *.txt # Substituí uma palavra recorrente com g
sed 's/\(.*\)1/\12/g' # Modifica anystring1 para anystring2
sed '/ *#/d; /^ *$/d' # Remove comentários e linha em branco
sed 's/[ \t]*$//' # Remove espaços de saída (utilize tab como \t)
sed 's/^[ \t]*//;s/[ \t]*$//' # Remove principais espaços de saída
sed = file | sed 'N;s/\n/\t/' > file.num # Numera linhas em um arquivo

Expressões regulares
Algumas expressões regulares básicas úteis para o sed também.

[\^$.|?*+() # Caracteres especiais, qualquer outros combinarão entre sim


\ # Ignora caracteres especiais e trata-os como literais
* # Repete o item anterior zero ou mais vezes
. # Único carácter exceto caracteres de quebra de linha
.* # Combina zero ou mais caracteres
^ # Combina no início de uma linha/string
$ # Combina o final de uma linha/string
.$ # Combina um único carácter no final da linha/string
^$ # Combina linha com um único espaço
[^A-Z] # Combina qualquer linha iniciada com qualquer carácter de A to Z
AJUDA ONLINE

Documentação
Linux Documentation en.tldp.org

Linux Man Pages www.linuxmanpages.com

Linux commands directory www.oreillynet.com/linux/cmd

Linux doc man howtos linux.die.net

Outra referências Unix/Linux


Rosetta Stone for Unix bhami.com/rosetta.html (a Unix command translator)

Unix guide cross reference unixguide.net/unixguide.shtml

Linux commands line list www.linuxcmd.org

Short Linux reference www.pixelbeat.org/cmdline.html

Little command line goodies www.shell-fu.org

Acesse o Grupo e ajude a iniciantes no Forum da informática.

https://www.facebook.com/groups/214305975779293/

Essa documentação foi baseada na "Unix Toolbox revisão 14.4" que está licenciada sob a Creative
Commons Licence [Attribution - Share Alike].

Das könnte Ihnen auch gefallen