Ir para o conteúdo principal

Cheat Sheet Linux

linux comandos cheat sheet
Alfredo Castro
Autor
Alfredo Castro
AWS Solutions Architect | AWS x3 | LPI x2 | CompTIA 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>