Guia completo de Linux para administração de sistemas e desenvolvimento
📖 Definição
Linux é um kernel de sistema operacional de código aberto, base para inúmeras distribuições. É o sistema operacional predominante em servidores, supercomputadores, sistemas embarcados e é a base para o desenvolvimento de software moderno.
💪 Por que aprender?
• Código aberto e gratuito
• Multiplataforma (arquiteturas)
• Altamente customizável
• Seguro e estável
• Ecossistema robusto de ferramentas
🚀 O que você pode fazer?
• Servidores web e bancos de dados
• Desenvolvimento de software
• Ciência de dados e IA
• Sistemas embarcados e IoT
• Supercomputação e HPC
Web, Cloud, Database
IDE, Compiladores, Tools
Docker, K8s, CI/CD
Containers, Cloud, Edge
🖥️ Sistema e Informações
Use quando: Diagnóstico do sistema, inventário de hardware, informações gerais
📋Informações do Sistema
uname -a# Informações completas do kernel
lsb_release -a# Versão da distribuição
cat /etc/os-release# Detalhes do SO
hostname# Nome do host
whoami# Usuário atual
id# ID do usuário e grupos
uptime# Tempo de atividade
date# Data e hora atual
timedatectl status# Configurações de tempo
w# Usuários logados
📋Hardware
lscpu# Informações da CPU
lshw -short# Resumo do hardware
free -h# Uso de memória
df -h# Espaço em disco
lsblk# Dispositivos de bloco
lspci# Dispositivos PCI
lsusb# Dispositivos USB
dmidecode# Informações BIOS/hardware
sensors# Temperaturas e sensores
📋Kernel e Módulos
cat /proc/version# Versão do kernel
lsmod# Módulos carregados
modprobe nome_modulo# Carregar módulo
rmmod nome_modulo# Remover módulo
modinfo nome_modulo# Informações do módulo
📦 Gerenciamento de Pacotes
Use quando: Instalação de software, atualização do sistema, gerenciamento de dependências
📋APT (Debian/Ubuntu)
sudo apt update# Atualizar lista de pacotes
sudo apt upgrade# Atualizar pacotes
sudo apt install pacote# Instalar pacote
sudo apt remove pacote# Remover pacote
sudo apt search termo# Buscar pacote
apt show pacote# Informações do pacote
sudo apt autoremove# Remover não usados
sudo apt clean# Limpar cache
dpkg -l# Pacotes instalados
apt-cache policy pacote# Versões disponíveis
📋YUM/DNF (RedHat/CentOS)
sudo yum update# Atualizar sistema
sudo yum install pacote# Instalar pacote
sudo yum remove pacote# Remover pacote
yum search termo# Buscar pacote
yum info pacote# Informações do pacote
sudo dnf upgrade# Atualizar (DNF)
dnf repolist# Repositórios
sudo dnf groupinstall "Development Tools"# Grupo de pacotes
📋Pacman (Arch Linux)
sudo pacman -Syu# Atualizar sistema
sudo pacman -S pacote# Instalar pacote
sudo pacman -R pacote# Remover pacote
pacman -Ss termo# Buscar pacote
pacman -Si pacote# Informações do pacote
sudo pacman -Rns pacote# Remover com dependências
pacman -Qe# Pacotes instalados explicitamente
sudo pacman -Scc# Limpar cache
yay -S pacote# Instalar do AUR
📋Snap
sudo snap install pacote# Instalar snap
sudo snap remove pacote# Remover snap
snap find termo# Buscar snap
snap list# Snaps instalados
sudo snap refresh# Atualizar snaps
snap info pacote# Informações do snap
👥 Usuários e Permissões
Use quando: Administração de usuários, segurança, compartilhamento de recursos
📋Gerenciamento de Usuários
sudo adduser nome# Criar usuário
sudo userdel nome# Remover usuário
sudo usermod -aG grupo usuario# Adicionar ao grupo
sudo passwd usuario# Alterar senha
sudo chage -l usuario# Informações de expiração
sudo chage -M 90 usuario# Definir expiração
getent passwd# Lista de usuários
getent group# Lista de grupos
groups usuario# Grupos do usuário
sudo usermod -l novo_nome antigo_nome# Renomear usuário
📋Permissões Básicas
chmod 755 arquivo# Permissões rwxr-xr-x
chmod u+x script.sh# Adicionar execução
chmod -R 755 diretorio/# Recursivo
chmod a+w arquivo# Escrita para todos
chmod g-r arquivo# Remover leitura grupo
ls -la# Ver permissões
stat arquivo# Permissões detalhadas
📋Permissões Avançadas
chmod u+s arquivo# SUID
chmod g+s diretorio# SGID
chmod +t diretorio# Sticky bit
sudo chown usuario:grupo arquivo# Mudar dono
sudo chown -R usuario diretorio/# Recursivo
sudo chgrp grupo arquivo# Mudar grupo
umask 022# Máscara de permissões
find . -perm 777# Buscar permissões específicas
📋ACL (Access Control Lists)
setfacl -m u:usuario:rwx arquivo# Adicionar ACL
getfacl arquivo# Ver ACLs
setfacl -m g:grupo:rx arquivo# ACL para grupo
setfacl -x u:usuario arquivo# Remover ACL
setfacl -b arquivo# Remover todas ACLs
setfacl -R -m u:usuario:rwx diretorio/# ACL recursiva
⚙️ Processos e Serviços
Use quando: Monitoramento, troubleshooting, gerenciamento de serviços
📋Gerenciamento de Processos
ps aux# Todos processos
ps -ef# Formato BSD
ps aux | grep nome# Buscar processo
pgrep nome# PID do processo
kill -9 PID# Matar processo
killall nome# Matar por nome
pkill nome# Matar por padrão
nice -n 10 comando# Prioridade baixa
renice 10 PID# Alterar prioridade
nohup comando &# Processo persistente
📋Monitoramento
top# Processos em tempo real
htop# Top melhorado
iotop# I/O de processos
nethogs# Uso de rede por processo
pstree# Árvore de processos
lsof -i :8080# Processo na porta
lsof -p PID# Arquivos do processo
strace -p PID# System calls do processo
📋Systemd (Serviços)
systemctl start servico# Iniciar serviço
systemctl stop servico# Parar serviço
systemctl restart servico# Reiniciar serviço
systemctl reload servico# Recarregar configuração
systemctl status servico# Status do serviço
systemctl enable servico# Habilitar no boot
systemctl disable servico# Desabilitar
systemctl list-units# Todos serviços
systemctl list-unit-files# Serviços disponíveis
journalctl -u servico# Logs do serviço
🌐 Rede e Conectividade
Use quando: Configuração de rede, diagnóstico, segurança, conexões remotas
📋Configuração de Rede
ip addr show# Endereços IP
ip route show# Tabela de rotas
ip link set eth0 up# Ativar interface
ip addr add 192.168.1.100/24 dev eth0# Configurar IP
nmcli dev status# Status NetworkManager
nmcli connection show# Conexões configuradas
nmtui# Interface texto
netplan apply# Aplicar configuração
📋Diagnóstico de Rede
ping -c 4 google.com# Testar conectividade
traceroute google.com# Traçar rota
mtr google.com# Ping + traceroute
nslookup google.com# DNS lookup
dig google.com# DNS detalhado
netstat -tuln# Portas abertas
ss -tuln# Netstat moderno
lsof -i :80# Processo na porta
tcpdump -i eth0# Capturar pacotes
📋Ferramentas de Rede
wget https://exemplo.com/arquivo# Download
curl -O https://exemplo.com/arquivo# Download com curl
curl -X POST -d "data" https://api.com# POST request
ssh usuario@servidor# Conexão remota
scp arquivo usuario@servidor:/path# Cópia segura
rsync -avz origem/ usuario@servidor:destino/# Sincronização
sftp usuario@servidor# FTP seguro
📋Firewall
sudo ufw enable# Ativar firewall
sudo ufw allow 22/tcp# Permitir porta
sudo ufw deny 23/tcp# Bloquear porta
sudo ufw status# Status do firewall
sudo ufw delete allow 22/tcp# Remover regra
iptables -L# Listar regras iptables
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT# Adicionar regra
📁 Sistema de Arquivos
Use quando: Gerenciamento de armazenamento, organização de arquivos, backup
📋Estrutura de Diretórios
tree -L 2# Visualizar árvore
find . -type f# Encontrar arquivos
find . -type d# Encontrar diretórios
find . -name "*.txt"# Por padrão
find . -size +100M# Por tamanho
find . -mtime -7# Modificados recentemente
find . -user usuario# Por dono
find . -perm 777# Por permissão
locate arquivo# Buscar rapidamente
updatedb# Atualizar base locate
📋Links Simbólicos
ln -s origem link# Criar link simbólico
ln origem link# Criar hard link
ls -l link# Ver tipo de link
readlink link# Destino do link
find . -type l# Encontrar links
ln -sf origem link# Forçar sobrescrever
📋Montagem e Desmontagem
mount# Ver sistemas montados
mount /dev/sdb1 /mnt/dados# Montar partição
umount /mnt/dados# Desmontar
mount -t ntfs-3g /dev/sdb1 /mnt/windows# NTFS
mount -o loop arquivo.iso /mnt/iso# Imagem ISO
df -h# Espaço montado
lsblk# Dispositivos disponíveis
blkid# UUID de partições
fstab# Montagem automática
📋Quotas e Espaço
du -sh *# Tamanho dos diretórios
du -h --max-depth=1# Um nível
du -ah | sort -rh | head -10# Maiores arquivos
df -i# Inodes disponíveis
quota -u usuario# Quotas do usuário
repquota /home# Relatório de quotas
ncdu# Análise interativa
📦 Compressão e Backup
Use quando: Backup, compressão, transferência de arquivos, armazenamento
📋Tar e Gzip
tar -czf backup.tar.gz diretorio/# Compactar com gzip
tar -xzf backup.tar.gz# Extrair gzip
tar -cjf backup.tar.bz2 diretorio/# Compactar com bzip2
tar -xjf backup.tar.bz2# Extrair bzip2
tar -tzf backup.tar.gz# Listar conteúdo
tar -xzf backup.tar.gz -C /destino# Extrair em diretório
tar --exclude="*.log" -czf backup.tar.gz diretorio/# Excluir arquivos
tar -czf - diretorio/ | ssh user@server "cat > backup.tar.gz"# Backup remoto
📋Zip
zip -r backup.zip diretorio/# Criar ZIP
unzip backup.zip# Extrair ZIP
unzip -l backup.zip# Listar conteúdo
zip -r9 backup.zip diretorio/# Máxima compressão
unzip -q backup.zip# Extrair silencioso
zip -s 100m -r split.zip diretorio/# Dividir em volumes
📋Rsync e Backup
rsync -avz origem/ destino/# Sincronizar
rsync -avz --delete origem/ destino/# Espelhar
rsync -avz --progress origem/ destino/# Com progresso
rsync -avz --exclude="*.tmp" origem/ destino/# Excluir padrão
rsync -avz -e ssh origem/ user@server:destino/# Via SSH
rsync --dry-run -avz origem/ destino/# Simulação
📋Backup Completo
dd if=/dev/sda of=backup.img bs=4M# Clone de disco
rsnapshot daily# Backup incremental
borg create --stats backup::arquivo /diretorio# Backup deduplicado
restic backup /diretorio# Backup moderno
kopia repository create /backup# Repositório Kopia
📊 Monitoramento e Logs
Use quando: Troubleshooting, monitoramento, análise de logs, alertas
📋Visualização de Logs
tail -f /var/log/syslog# Log em tempo real
tail -n 100 arquivo.log# Últimas 100 linhas
head -n 50 arquivo.log# Primeiras 50 linhas
less arquivo.log# Navegar no log
grep "ERROR" arquivo.log# Buscar erros
grep -i "error" arquivo.log# Case insensitive
grep -n "erro" arquivo.log# Com número da linha
grep -C 5 "erro" arquivo.log# Contexto 5 linhas
zgrep "erro" arquivo.log.gz# Buscar em gzip
📋Systemd Logs
journalctl# Logs do sistema
journalctl -f# Tempo real
journalctl -u nginx# Logs do serviço
journalctl -p err# Apenas erros
journalctl --since "2024-01-01"# Desde data
journalctl --since "1 hour ago"# Última hora
journalctl -k# Logs do kernel
journalctl --disk-usage# Uso de disco
📋Monitoramento de Recursos
vmstat 5# Estatísticas VM
iostat -x 5# Estatísticas I/O
sar -u 5 10# CPU ao longo tempo
sar -r 5 10# Memória
sar -n DEV 5 10# Rede
nethogs# Rede por processo
iftop# Tráfego de rede
glances# Monitor completo
📋Alertas e Notificações
watch -n 5 "ps aux | grep python"# Monitorar comando
inotifywait -m -r /diretorio# Monitorar mudanças
tail -f log | grep "CRITICAL" | mail -s "Alerta" admin@domain.com# Email de alerta
logger "Mensagem personalizada"# Adicionar ao syslog
dmesg | grep -i error# Erros do kernel
🔒 Segurança
Use quando: Hardening, auditoria, criptografia, análise de segurança
📋Hardening de Sistema
sudo passwd -l usuario# Bloquear conta
sudo chage -E 2024-12-31 usuario# Expirar conta
sudo visudo# Editar sudoers
sudo sysctl -w net.ipv4.ip_forward=0# Desabilitar IP forward
echo "1" | sudo tee /proc/sys/net/ipv4/ip_forward# Habilitar IP forward
sudo sysctl -a | grep forward# Ver configurações
sudo sysctl -p# Aplicar /etc/sysctl.conf
📋SSH e Acesso Remoto
ssh-keygen -t rsa -b 4096# Gerar chave SSH
ssh-copy-id user@server# Copiar chave pública
ssh -i chave.pem user@server# Conectar com chave
ssh -p 2222 user@server# Porta diferente
ssh -L 8080:localhost:80 user@server# Tunnel SSH
ssh -X user@server# X11 forwarding
ssh -D 1080 user@server# SOCKS proxy
📋Criptografia
gpg -c arquivo# Criptografar arquivo
gpg -d arquivo.gpg# Descriptografar
gpg --gen-key# Gerar par de chaves
gpg --list-keys# Listar chaves
gpg --export -a nome > chave.pub# Exportar chave pública
gpg --import chave.pub# Importar chave
openssl enc -aes-256-cbc -in arquivo -out arquivo.enc# OpenSSL AES
📋Análise de Segurança
sudo rkhunter --check# Rootkit hunter
sudo chkrootkit# Verificar rootkits
sudo lynis audit system# Auditoria de segurança
nmap -sS -O target# Scan de portas
nmap -A -T4 target# Scan agressivo
sudo fail2ban-client status# Status fail2ban
sudo ufw status verbose# Firewall detalhado
🐳 Virtualização e Containers
Use quando: Virtualização, containers, orquestração, desenvolvimento isolado
📋KVM/QEMU
sudo virt-install --name vm1 --ram 2048 --vcpus 2 --disk size=20 --cdrom ubuntu.iso# Criar VM
virsh list --all# Listar VMs
virsh start vm1# Iniciar VM
virsh shutdown vm1# Desligar VM
virsh console vm1# Console da VM
virsh dumpxml vm1 > vm1.xml# Exportar configuração
virsh define vm1.xml# Importar configuração
sudo modprobe kvm# Carregar módulo KVM
lsmod | grep kvm# Verificar KVM
📋Docker Básico
docker run -it ubuntu bash# Container interativo
docker run -d nginx# Container daemon
docker ps# Containers ativos
docker ps -a# Todos containers
docker images# Imagens disponíveis
docker stop container_id# Parar container
docker rm container_id# Remover container
docker rmi image_id# Remover imagem
📋Docker Avançado
docker run -p 8080:80 nginx# Mapear porta
docker run -v /host:/container nginx# Volume
docker run --name web -d nginx# Nomear container
docker exec -it container_id bash# Acessar container
docker logs container_id# Logs do container
docker inspect container_id# Informações detalhadas
docker stats# Estatísticas em tempo real
📋Podman
podman run -it ubuntu bash# Container Podman
podman ps# Containers Podman
podman generate systemd --name container --files --new# Gerar serviço systemd
podman pod create --name mypod# Criar pod
podman play kube pod.yaml# Executar YAML Kubernetes
⚡ Scripting e Automação
Use quando: Automação de tarefas, scripts, deploy, configuração
📋Bash Scripting
#!/bin/bash# Shebang
set -euo pipefail# Strict mode
VAR="valor"# Variável
echo "${VAR}"# Usar variável
if [ "$VAR" = "teste" ]; then# Condicional
for i in {1..10}; do# Loop for
while true; do# Loop while
function nome() {# Definir função
read -p "Digite: " VAR# Ler input
📋Processamento de Texto
sed "s/antigo/novo/g" arquivo# Substituir texto
awk "{print $1}" arquivo# Primeira coluna
grep "padrão" arquivo# Buscar padrão
cut -d"," -f1 arquivo.csv# Extrair campo
sort arquivo# Ordenar linhas
uniq arquivo# Remover duplicatas
tr "[:lower:]" "[:upper:]" < arquivo# Converter para maiúsculas
wc -l arquivo# Contar linhas
paste arquivo1 arquivo2# Juntar arquivos
📋Automação com Cron
crontab -e# Editar crontab
0 2 * * * /script.sh# Diário às 2h
*/15 * * * * comando# A cada 15 minutos
0 0 1 * * /script.sh# Primeiro do mês
0 0 * * 0 /script.sh# Todo domingo
@reboot /script.sh# No boot
crontab -l# Listar tarefas
crontab -r# Remover todas
📋Ferramentas de Automação
ansible-playbook playbook.yml# Executar Ansible
terraform apply# Aplicar Terraform
puppet agent --test# Testar Puppet
chef-solo recipe.rb# Executar Chef
salt-call state.apply# Aplicar Salt
make -j$(nproc)# Compilar paralelo
watch -n 1 "comando"# Repetir comando
🤝 Contribuindo
Encontrou um erro? Quer melhorar um cheatsheet? Tem uma sugestão? Adoraríamos suas contribuições! Abra uma issue ou submeta um PR.
Gostou do projeto? Apoie o desenvolvimento com um café e ajude a manter tudo open source ☕