Cheat Sheet Linux
Alterar BASH do usuário
usermod -s /bin/bash USUARIO
# Ou:
usermod --shell /bin/bash USUARIO
VIM: Quando colar com o botão direito do mouse aparece a mensagem (insert visual)
echo "set mouse-=a" > ~/.vimrc
VIM: Deixar colorido (descomentar a linha no arquivo abaixo)
vim /etc/vim/vimrc
syntax on
VIM: Substituir dentro do VIM (exemplo: de foo para bar)
:%s/foo/bar/g
VIM: Substituir da primeira a ultima linha (exemplo: de foo para bar)
:% s/foo/bar
Formatar novo disco (xfs)
mkfs -t xfs /dev/xvdb
mkdir /data
mount /dev/xvdb /data
# Pegar UUID
blkid
# Atenção remover aspas "" do UUID
vim /etc/fstab
UUID=e8070c31-bfee-4314-a151-d1332dc23486 /data xfs defaults 0 0
# Lê o fstab e monta todos os discos configurados
mount -a
Rodar um comando repetidamente a cada X tempo
# 5 vezes por segundo
watch -n 0.2
Enviar arquivo via SCP (arq do local para um destinatario) (para pasta adicionar -r para recursivamente)
scp arquivo.zip usuario@192.168.10.130:/home/usuario/arquivo.zip
Enviar arquivo via SCP (arq do destinatario para o local) (para pasta adicionar -r para recursivamente)
scp root@192.168.10.130:/root/wordlist.txt /tmp/wordlist.txt
Verificar versão instalada
# Distribuição
lsb_release -a
# Kernel
uname -a
Arquivo de configuração de interfaces CentOS
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
IPADDR=192.168.1.2
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes
Start, Stop ou Restart em um serviço no CentOS
service network restart
# Ou:
systemctl restart network.service
Descobrir onde a aplicação busca o arquivo de configuração
strace APLICAÇÃO 2>&1 | grep "open" | grep "\/etc"
Análise de performance de cada execução dentro de uma aplicação
strace -c APLICAÇÃO
Ver hostname, Distribuição, Kernel, Arquitetura - possível alterar o hostname usando opção
hostnamectl
hostnamectl set-hostname HOSTNAME-ALTERAR
Verificar lista de timezones
timedatectl list-timezones
Alterar timezone
timedatectl set-timezone America/Sao_Paulo
# Ou:
ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
Verificar timezone configurada
timedatectl
Verificar keyboard e linguagem do sistema configurada
localectl
Verificar lista de keyboards
localectl list-keymaps
Alterar keyboard
localectl set-keymap ALTERAR
Instalar pack de linguagem
apt-get install language-pack-pt language-pack-pt-base
Mostrar lista de linguagens
localectl list-locales
Alterar a linguagem do sistema
localectl set-locale LANG=pt_BR.UTF-8
Verificar checksum md5 de arquivos
md5sum ARQUIVO
Ativar SWAP File
# Ver se já possui
swapon -s
# Ver se já possui
free -h
# Ver se já possui
swapon --show
# Criar o arquivo usado para swap
fallocate -l 1G /swapfile
# Use o comando dd para criar um arquivo de troca no sistema de arquivos raiz.
# No comando, bs é o tamanho do bloco e a contagem é o número de blocos.
# O tamanho do arquivo de troca é a opção de tamanho do bloco multiplicada pela opção de contagem no comando dd.
# Ajuste esses valores para determinar o tamanho do arquivo de troca desejado.
# Semelhante ao de cima, cria o arquivo usado para swap caso o de cima não funcione
dd if=/dev/zero of=/swapfile bs=1024 count=1048576
# Altera as permissões do arquivo para que apenas o root possa escrever no swapfile
chmod 600 /swapfile
# Configura o arquivo como swapfile
mkswap /swapfile
# Habilita o swap
swapon /swapfile
# Editar o arquivo fstab para que o swap habilite assim que iniciar a máquina
vim /etc/fstab
# Acrescentar no final do arquivo
/swapfile swap swap defaults 0 0
Para habilitar SWAP em um disco separado
mkswap /dev/nvme1n1
swapon /dev/nvme1n1
vim /etc/fstab
/dev/nvme1n1 swap swap defaults 0 0
Alterar a frequencia em que o SWAP será utilizado
# Verifica o valor em utilização, padrão é 60
# (vai de 0 a 100, onde um valor baixo evitará a troca sempre que possível e um valor alto usará SWAP de forma mais agressiva)
cat /proc/sys/vm/swappiness
# Alterá o valor para 10
sysctl vm.swappiness=10
vim /etc/sysctl.conf
# Adicione a linha abaixo para sempre alterar o valor quando iniciar
vm.swappiness=10
Remover SWAP File
# Desativar o swap
swapoff -v /swapfile
# Editar o arquivo fstab para remover a entrada swap
vim /etc/fstab
# Remover do arquivo está entrada
/swapfile swap swap defaults 0 0
# Remover o swapfile
rm /swapfile
Criar um par de chave e transferir para o cliente
# Criar par de chave (caso queira adicionar um cometário, por exemplo um e-mail, utilize -C "e-mail@dominio.com")
ssh-keygen -t rsa
# Copiando para outro host
scp /home/ubuntu/.ssh/id_rsa.pub ubuntu@10.0.0.1:/tmp
# Colocando a chave dentro das chaves autorizadas
cat /tmp/id_rsa.pub >> /home/ubuntu/.ssh/authorized_keys
Enviar mensagem no terminal para todos os usuários logados
wall Digite sua mensagem desse jeito!
Bloquear login de qualquer usuário normal do sistema operacional, para manutenção, exibindo uma mensagem
echo "Não é possível acessar o sistema operacional no momento, estamos realizando uma manutenção preventiva que durará em torno de duas horas, das 08:00h às 10:00h. Qualquer dúvida, contate suporte@dominio.com.br" > /etc/nologin
# Para voltar ao normal (ou reinicie o servidor)
rm /etc/nologin
Ver os ultimos reboot
last reboot
Alterar pasta home do usuário Linux
usermod -d /home/USUARIO USUARIO
# Ou:
usermod --home /home/USUARIO USUARIO
Firewall CentOS Linux adicionar regras permanente
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address=54.157.211.163/32 port port=10050 protocol='tcp' accept"
Firewall CentOS Linux listar regras permanente
firewall-cmd --list-all
Firewall CentOS Linux reiniciar regras permanente
firewall-cmd --reload
Habilitar serviço para iniciar automaticamente quando o sistema Linux iniciar
systemctl enable SERVIÇO
# Ou:
update-rc.d SERVIÇO enable
Sincronizar horário do Linux com o NTP.br (Servidor nacional)
ntpdate pool.ntp.br
Uploading diretório via SCP
scp -r /path/to/local/source user@ssh.example.com:/path/to/remote/destination
Downloading diretório via SCP
scp -r user@ssh.example.com:/path/to/remote/source /path/to/local/destination
Rsync opção “a” archive mode (igual a -rlptgoD - recursive/links/preserve permissions/preserve times/preserve group/preserve owner/preserve device and specials file) “v” verbose mode
rsync -av original/ duplicado/
Criação de LVM
pvcreate /dev/xvdh
vgcreate Midia /dev/xvdh
lvcreate -n vol1_Midia -l +100%FREE Midia
mkfs -t xfs /dev/Midia/vol1_Midia
mkdir /mnt/Midia
mount /dev/Midia/vol1_Midia /mnt/Midia/
vim /etc/fstab
/dev/Midia/vol1_Midia /mnt/Midia xfs defaults,nofail 0 0
Extender volume LVM com um novo disco
pvcreate /dev/xvdf
vgextend Midia /dev/xvdf
lvextend -l +100%FREE /dev/mapper/Midia-vol1_Midia
xfs_growfs /dev/mapper/Midia-vol1_Midia
Montar bucket no Linux
apt-get install s3fs
vim ~/.passwd-s3fs
ACCESS_KEY:SECRET_KEY
chmod 600 ~/.passwd-s3fs
mkdir /s3-drive
s3fs renova-files /s3-drive/
vim /etc/fstab
renova-files /s3-drive fuse.s3fs _netdev,allow_other,passwd_file=/root/.passwd-s3fs,default_acl=public-read,uid=1001,gid=65534 0 0
Compactar diretório no Linux com o zip -r recursivamente (diretório mantem no local)
zip -r home-alfredo.zip /home/alfredo
Descompactando arquivo zip com o unzip
unzip home-alfredo.zip
CentOS listar pacotes instalados
yum list installed
# Ou:
rpm -qa
Configurar NTP Client
apt-get install ntp ntpdate
vim /etc/ntp.conf
server pool.ntp.br prefer iburst
service ntp restart
Criar rota via terminal Linux
route add -host 192.168.0.1 gw 192.168.0.2
route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.1
Deletar rota via terminal Linux
route del -host 192.168.0.1 gw 10.12.0.2
route del -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.1
Verificar rotas via terminal Linux
route -n
Ver o número de unidades de processador no Linux
nproc
Remover pacote rpm no Linux
rpm -e zabbix-agent
Forçar a execução do Housekeeper do Zabbix
/usr/sbin/zabbix_server --runtime-control housekeeper_execute
Testar configuração apache2
apachectl configtest
Instalar RDP no Linux
apt-get install xrdp
systemctl enable xrdp
systemctl start xrdp
Remover arquivos utilizando o find no Linux
find /home/ubuntu -type f -name ".htaccess" -exec rm -rf {} \;
Configurar um serviço para iniciar com o Linux RHEL
chkconfig --level 35 zabbix-agent on
Configurar um serviço para não iniciar com o Linux RHEL
chkconfig zabbix-agent off
Alterar data via terminal no Linux (Ano/Mês/Dia)
date +%Y%m%d -s "20120418"
Alterar hora via terminal no Linux (Hora/Minuto/Segundo)
date +%T -s "11:14:00"
Gerar CSR para certificado
openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
Logar utilizando um bash no Linux
su zabbix -s /bin/bash
Comandos para análise de performance e troubleshooting no Linux
# Overview geral
top
# Overview geral
htop
# Overview geral
glances
# Load Average
uptime
# Load Average
w
# Load Average
cat /proc/loadavg
# Kernel errors
dmesg -T | tail
# Overall stats by time
vmstat 1
# CPU Balance
mpstat -P ALL 1
# Process Usage
pidstat 1
# Disk I/O
iostat -xz 1
# Memory Usage
free -m
# Network I/O
sar -n DEV 1
# TCP stats
sar -n TCP,ETCP 1
# Numero de inodes livres
df -i
# Diretório com maior utilização (-d 1 - número de sub-diretórios)
du -ch -d 1 /
# Qual processo esta com maior uUtilização dos discos
iotop
# Mostra as chamadas para sistema que aquele processo esta fazendo
strace
# Mostra os arquivos abertos pelo sistema
lsof
# Mostrar as conexões de rede
lsof -i TCP:22
Consultar mx, txt de um domínio no Linux
dig -t mx alfredocastro.com.br
dig -t txt alfredocastro.com.br
Consultar endereço reverso via Linux
dig -x 192.168.0.1
# Ou:
host 192.168.0.1
Capturar tráfego de endereços IP específico dst ou src via tcpdump no Linux
tcpdump -i eth0 host 192.168.0.1
Abrir uma porta no servidor Linux
nc -l -p 25
Remover usuário e manter o home via Linux
userdel USUARIO
Remover usuário e o home via Linux
userdel -r USUARIO
Gerar certificado .pfx (Alterar: rsaprivate.key para key do certificado, certificate.crt para o certificado, certification_authority.crt para a unidade certificadora)
openssl pkcs12 --export --out certificate.pfx --inkey rsaprivate.key --in certificate.crt --certfile certification_authority.crt
Verificar se um pacote está configurado para iniciar com o Linux
systemctl is-enabled zabbix-agent
Nmap vulnerability scan
nmap -Pn --script vuln 192.168.1.105
Adicionar usuário a um grupo no Linux
gpasswd -a usuario grupo
Remover usuário de um grupo no Linux
gpasswd -d usuario grupo
Listar todos os IPs de uma subrede
nmap -sL -n 192.168.0.0/27 | awk '/Nmap scan report/{print $NF}'
Definir SETGID faz com que o grupo seja copiado para todos os novos arquivos/diretórios criados na pasta via Linux (Recomendado para servidores Web que utilizam FTP)
chmod 2775 /var/www
Verificar se a porta UDP está aberta no Linux via nc
nc -z -v -u [IP address] [port number]
Verificar se a porta TCP está aberta no Linux via nc
nc -z -v [IP address] [port number]
Modificar palavra dentro de arquivo via Linux
sed -i 's/xenial/focal/g' /etc/apt/sources.list
Descompactar arquivos gz via Linux (para manter o arquivo compactado acrescente -k)
gz -d file.gz
Extrair arquivos .tar.gz
tar -xf archive.tar.gz
Remote forwarding - SSH
ssh -L porta_local:ip_remoto:porta_remota usuário@ip_remoto
# Ex:
ssh -L 8008:172.16.2.51:8008 ubuntu@18.200.5.50
Redirecionar saída do tráfego que chegar de uma porta
iptables -t nat -I POSTROUTING -p tcp --dport PORTA -j SNAT --to IP_DE_SAIDA
Converter arquivo PEM para PPK
yum install putty
# Ou:
apt-get install putty-tools
puttygen pemKey.pem -o ppkKey.ppk -O private
Converter arquivo PPK para PEM
puttygen ppkkey.ppk -O private-openssh -o pemkey.pem
Verificar o tipo do disco via CLI Linux
lsblk -f
# Ou:
df -hT
Liberar tcpdump no apparmor
apparmor_parser -R /etc/apparmor.d/usr.sbin.tcpdump
Interface lo no Linux
ifconfig lo:1 1.2.3.4 netmask 255.255.255.255 up
Matar todos os processos de um usuário no Linux
killall -u ubuntu
Verificar crontab de todos os usuários do sistema
for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done
Acompanhar processo terminal Linux (-p barra de progresso, -e tempo estimado para o fim, -t tempo transcorrido, -a velocidade média, -r velocidade total)
comando | pv -p -e -t -a -r
Verificar todos os módulos ativados no apache2
apachectl -M
Encontrar o diretório JAVA_HOME Linux
java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home'
# Ou:
dirname $(dirname $(readlink -f $(which javac)))
# Ou:
echo $(dirname $(dirname $(readlink -f $(which javac))))
Journalctl
# Similar ao tail -f
journalctl -xefu SERVICE
# Verificar logs
journalctl -u SERVICE
Instalar o SSM Agent em instâncias do Ubuntu Server 20.10 STR e 20.04, 18.04 e 16.04 LTS de 64 bits (com o pacote do Snap)
sudo snap install amazon-ssm-agent --classic
Transferir job para outra sessão no Linux (necessário instalar o pacote reptyr - apt-get install reptyr) utilize o: ps aux | grep ALTERAR - para pegar o PID
reptyr PID
Remover espaçamento duplicado Linux Bash
sed -e's/ */ /g'
Renomear prefix de vários arquivos no Linux
rename 's/^PrefixAntes/PrefixDepois/' *
Utilizar o Screen
# Executar uma nova sessão
screen
# Deixar sessão rodando em background
CTRL + A + D
# Visualizar todas as sessões rodando em background
screen -ls
# Retornar para a sessão (apenas quando possui apenas uma sessão)
screen -r
# Retornar para uma sessão específica
screen -r PID
# Screen trabalhar com multiplas janelas
# Split horizontal
CTRL A + SHIFT s
# Split vertical
CTRL A + |
# Novo terminal
CTRL A + c
# Alternar entre os terminais
CTRL A + TAB
Fechar telnet
CTRL + ]
quit
Atalhos Linux CLI
CTRL+A = Ir para o começo da linha
CTRL+E = Ir para o final da linha
ALT+B = Ir para o espaço anterior da linha
ALF+F = Ir para o espaço seguinte da linha
Atalho no Linux similar ao digitar exit
CTRL + D
Finalizar telnet travado
CTRL (DIREITO) + Ç
ENTER
Arquivo de configuração da variável PATH lido por todos os usuários
/etc/environment
Página para teste de HTML
<html>
<body>
<head>
Página HTML
<script type="text/javascript">
</script>
</head>
<meta charset="utf-8">
</body>
</html>