Skip to content

Linux Server

Gabriel Bispo edited this page Jun 5, 2026 · 100 revisions

Documentação de referência sobre Linux, servidores e redes — com explicações detalhadas de cada comando e conceito.


Sumário


Referência Rápida de Comandos

Sistema

Comando O que faz Quando usar
shutdown -h now Desliga o sistema imediatamente Encerrar o servidor com segurança
reboot Reinicia o sistema Após instalar pacotes ou alterar configurações
exit Encerra a sessão atual do terminal Fazer logoff sem desligar o servidor
hostnamectl Exibe informações do sistema (hostname, SO, kernel) Verificar o nome do servidor e versão do sistema
history Lista os últimos 1000 comandos digitados Rever ou reutilizar comandos anteriores
clear Limpa a tela do terminal Organizar a visualização

💡 history é muito útil para auditar o que foi feito no servidor. Combine com history | grep apt para filtrar apenas comandos de instalação, por exemplo.


Navegação e Arquivos

Comando O que faz Exemplo prático
pwd Mostra o diretório atual (Print Working Directory) Confirmar onde você está antes de editar arquivos
cd Vai para o diretório home do usuário (~) Voltar ao ponto de partida rapidamente
cd / Vai para a raiz do sistema Navegar pela estrutura de pastas do Linux
cd .. Sobe um nível na hierarquia de diretórios Sair de /etc/network para /etc
cd /etc/network Vai diretamente para um caminho absoluto Ir para qualquer pasta sem navegar passo a passo
ls Lista arquivos e diretórios Ver o conteúdo de uma pasta
ls -l Lista com detalhes: permissões, dono, tamanho, data Verificar quem tem acesso a um arquivo
ls -la Igual ao -l, mas inclui arquivos ocultos (iniciados com .) Ver arquivos de configuração ocultos
cp <origem> <destino> Copia um arquivo ou diretório Fazer backup antes de editar um arquivo
mv <origem> <destino> Move ou renomeia um arquivo Renomear dnsmasq.conf para dnsmasq.conf.bkp
rm <arquivo> Exclui um arquivo permanentemente Remover o index.html padrão do Apache
cat <arquivo> Exibe o conteúdo de um arquivo no terminal Ver rapidamente o conteúdo de um arquivo de configuração
nano <arquivo> Abre o editor de texto no terminal Editar arquivos de configuração

⚠️ O comando rm não tem lixeira — o arquivo é excluído imediatamente e sem confirmação. Use com cuidado.

💡 Antes de editar qualquer arquivo de configuração importante, sempre faça um backup com cp arquivo arquivo.bkp. Se algo der errado, é só copiar o backup de volta.


Atalhos do editor Nano

Atalho Ação
Ctrl + O Salvar o arquivo
Enter Confirmar o nome ao salvar
Ctrl + X Sair do nano
Ctrl + W Buscar texto no arquivo
Ctrl + K Recortar uma linha

Rede

Comando O que faz
ip a Exibe todas as interfaces de rede, IPs e endereços MAC
ping <endereço> Testa a conectividade com outro host (ping google.com)
lspci Lista os dispositivos PCI, incluindo placas de rede

💡 O campo link/ether na saída do ip a mostra o endereço MAC da interface — identificador físico e único de cada placa de rede.


Gerenciador de Serviços (systemctl)

Comando O que faz
systemctl status <serviço> Verifica se o serviço está ativo, inativo ou com erro
systemctl start <serviço> Inicia o serviço
systemctl stop <serviço> Para o serviço
systemctl restart <serviço> Para e reinicia o serviço — aplica novas configurações
systemctl enable <serviço> Faz o serviço iniciar automaticamente com o sistema
systemctl disable <serviço> Remove o serviço da inicialização automática

💡 Após editar qualquer arquivo de configuração de um serviço, use systemctl restart para aplicar as mudanças.

💡 Use sempre systemctl enable em serviços essenciais (SSH, Apache, Tomcat) para que eles voltem automaticamente após um reboot.


Gerenciador de Pacotes (apt)

Comando O que faz
apt update Atualiza a lista de pacotes disponíveis nos repositórios
apt upgrade Instala as atualizações disponíveis
apt install <pacote> Instala um pacote
apt remove <pacote> Remove um pacote

⚠️ Sempre execute apt update antes de instalar qualquer pacote. Sem isso, o sistema pode tentar instalar versões antigas ou não encontrar o pacote.


Cliente SSH recomendado

PuTTY — permite acessar o servidor Linux remotamente pelo Windows via terminal.


Nomes e Siglas

Símbolo / Termo Significado Contexto
ssh Secure Shell — acesso remoto seguro ao servidor Protocolo criptografado para gerenciar servidores remotamente
/etc Diretório de configuração do sistema Quase todo arquivo de configuração do Linux fica aqui
~ Diretório home do usuário (/home/usuario) Atalho para o diretório pessoal
# Prompt do usuário root (administrador) Indica que você tem poderes totais sobre o sistema — cuidado!
$ Prompt do usuário comum Indica sessão com permissões limitadas
/home Diretório dos usuários do sistema Cada usuário tem sua pasta em /home/nome
/var Dados variáveis: logs, filas, bancos de dados Onde o Apache guarda os logs, por exemplo
/tmp Arquivos temporários Apagado automaticamente em alguns reboots
/lost+found Recuperação de arquivos após erros de disco Usado automaticamente pelo sistema em caso de falha

Instalação do Debian 13 Server

Passo 1 — Iniciar o instalador

Selecione Graphical Install para usar o instalador com interface gráfica (mais fácil de navegar que o modo texto).

Passo 2 — Configurações regionais e de rede

Configure:

  • Idioma
  • Região
  • Layout de teclado
  • Rede (o nome de domínio pode ficar em branco — configura depois)

Passo 3 — Senha do administrador (root)

⚠️ Essa senha dá acesso total ao sistema. Use uma senha forte e não a esqueça.

Passo 4 — Particionamento de disco

Selecione:

Assistido — usar disco inteiro e configurar LVM

O que é LVM? O Logical Volume Manager permite redimensionar partições sem precisar reinstalar o sistema — muito útil em servidores que crescem com o tempo.

Passo 5 — Esquema de partições

Selecione:

Partições /home, /var e /tmp separadas
Partição Função Por que separar?
/home Arquivos dos usuários Evita que dados de usuário ocupem espaço do sistema
/var Logs e dados variáveis Logs crescem muito — separar evita encher o disco raiz
/tmp Arquivos temporários Pode ser limitada em tamanho por segurança

Passo 6 — Gerenciador de pacotes

  • Ler mídia adicional: NÃO

  • Espelho (mirror): escolha o primeiro da lista (repositório de onde o Debian baixa atualizações)

  • Proxy HTTP: deixe em branco se não usar proxy Seleção de software — marque apenas:

  • ✅ Servidor SSH

  • ✅ Utilitários de sistema padrão

💡 Instalar menos coisas = servidor mais leve, seguro e fácil de manter. Adicione serviços conforme necessário.


Instalação do SSH

O SSH (Secure Shell) permite acessar o servidor remotamente via terminal — essencial para administrar servidores sem monitor ou teclado físico.

apt install openssh-server   # instala o servidor SSH
systemctl start ssh          # inicia o serviço
systemctl enable ssh         # faz iniciar automaticamente com o sistema
systemctl status ssh         # confirma que está rodando

Para conectar ao servidor pelo PuTTY:

  • Host: IP do servidor
  • Port: 22 (porta padrão do SSH)

Instalação do Debian — Servidor Web

Nome de domínio

Quando solicitado, digite o domínio da organização:

domain.com.br

Outras opções

Ler mídia adicional: NÃO
Proxy: deixe em branco
Demais perguntas (Sim/Não): pode confirmar com Sim

Seleção de software

  • ✅ Servidor Web (instala o Apache automaticamente)
  • ✅ Servidor SSH
  • ✅ Utilitários de sistema padrão

Configurando IP Fixo no Debian

Por padrão, o Debian usa DHCP — o roteador atribui um IP diferente a cada reinicialização. Servidores precisam de IP fixo para serem sempre acessados no mesmo endereço.

Antes de começar: anote o IP atual, a máscara de rede e o gateway da sua rede.
Use ip a para ver o IP atual e ip route para ver o gateway.

Passo 1 — Acessar o diretório de rede

cd /etc/network    # diretório onde fica o arquivo de configuração de rede

Passo 2 — Editar o arquivo de interfaces

cp interfaces interfaces.bkp    # SEMPRE faça backup antes de editar
nano interfaces

Altere iface enp0s3 inet dhcp para static e adicione as linhas abaixo:

iface enp0s3 inet static
  address 10.26.44.X/24       # substitua X pelo número do seu IP
  netmask 255.255.255.0       # máscara da rede /24
  gateway 10.26.44.1          # endereço do roteador

💡 O nome da interface (enp0s3) pode variar. Use ip a para confirmar o nome correto na sua máquina.

Salvar: Ctrl+OEnterCtrl+X

Passo 3 — Instalar e configurar o DNS

O DNS traduz nomes de domínio (como google.com) em endereços IP. Sem ele, o servidor não consegue acessar a internet pelo nome.

apt install systemd-resolved         # instala o serviço de DNS
cd /etc/systemd
cp resolved.conf resolved.conf.bkp   # backup
nano resolved.conf

Adicione abaixo da linha [Resolve]:

DNS=8.8.8.8 8.8.4.4

💡 8.8.8.8 e 8.8.4.4 são os servidores DNS públicos do Google — rápidos e confiáveis.

systemctl restart systemd-resolved

Passo 4 — Reiniciar a rede

systemctl restart networking
# ou
reboot

💡 Se algo der errado e o servidor perder a rede, restaure o backup: cp interfaces.bkp interfaces e reinicie.


Instalação do LinuxLogo

O LinuxLogo exibe uma arte ASCII com informações do sistema toda vez que alguém acessa o servidor via SSH — útil para identificar o servidor rapidamente.

apt install linuxlogo
cd /etc
cat issue.linuxlogo > issue    # substitui a mensagem padrão de login pelo logo

Instalação do WordPress

Passo 1 — Verificar o Apache

O Apache é o servidor web que vai servir as páginas do WordPress.

systemctl status apache2
systemctl start apache2     # inicia se não estiver rodando
systemctl enable apache2    # garante que inicia com o sistema

Passo 2 — Instalar o MariaDB

O MariaDB é o banco de dados onde o WordPress armazena posts, usuários e configurações.

apt install mariadb-server
systemctl status mariadb
mariadb-secure-installation    # script de segurança — remova usuários anônimos e acesso remoto root

Passo 3 — Criar banco de dados e usuário para o WordPress

mariadb    # abre o terminal do banco de dados
CREATE DATABASE wordpress;                                              -- cria o banco
CREATE USER 'admin'@'localhost' IDENTIFIED BY '123@senac';             -- cria o usuário
GRANT ALL PRIVILEGES ON wordpress.* TO 'admin'@'localhost';            -- dá acesso total ao banco
FLUSH PRIVILEGES;                                                       -- aplica as permissões imediatamente
SELECT User, Db, Host FROM mysql.db;                                   -- confirma a configuração
QUIT;

💡 'admin'@'localhost' significa que esse usuário só pode se conectar de dentro do próprio servidor — mais seguro do que permitir acesso externo.

Passo 4 — Instalar o PHP

O PHP é a linguagem de programação do WordPress — sem ele, o servidor não consegue processar as páginas.

apt install php phpmyadmin
systemctl restart apache2    # obrigatório após instalar o PHP
php -v                       # confirma a versão instalada

Acesse o phpMyAdmin pelo navegador: http://IP_DO_SERVIDOR/phpmyadmin
Usuário: admin | Senha: 123@senac

Ajustar limite de memória do PHP

cd /etc/php/8.x/apache2    # substitua x pela sua versão (use: php -v para ver)
cp php.ini php.ini.bkp
nano php.ini                # busque com Ctrl+W por: memory_limit
Uso Valor recomendado Por quê
Padrão 128M Suficiente para sites simples
Uso comum 256M WordPress com plugins
E-commerce 512M Lojas com muitas imagens e operações

Passo 5 — Instalar o WordPress

cd /var/www/html           # diretório padrão de hospedagem do Apache
rm index.html              # remove a página padrão "It works!" do Apache
cd ..
 
wget http://wordpress.org/latest.tar.gz    # baixa a versão mais recente
tar -xzvf latest.tar.gz                    # descompacta o arquivo
rsync -avP wordpress/ /var/www/html        # copia os arquivos mantendo permissões
chown -R www-data:www-data /var/www/html   # dá ao Apache propriedade dos arquivos

💡 chown -R www-data:www-data é essencial — sem isso o Apache não consegue ler, escrever ou executar os arquivos do WordPress.


Projeto Tomcat — Servidor de Aplicações Java

O Apache Tomcat executa aplicações Java na web. Diferente do Apache HTTP Server (que serve páginas estáticas e PHP), o Tomcat processa código Java compilado em arquivos .war.

Passo 1 — Instalar o Linux

  • 1 placa de rede (modo bridge — coloca o servidor na mesma rede que o PC real)
  • Instalar apenas sistema básico e SSH
  • ⚠️ Não instalar Servidor Web — o Tomcat substituirá essa função
  • Configurar LinuxLogo e IP fixo
  • Testar conectividade: ping google.com Particionamento: Assistido com LVM → /home, /var e /tmp separados
    Seleção de software: Servidor SSH + Utilitários padrão

Passo 2 — Instalar o Java

O Tomcat precisa do Java para funcionar — é ele quem executa o código das aplicações.

apt install default-jdk    # instala o Java Development Kit (compilador + runtime)
java -version              # verifica a versão do Java Runtime
javac -version             # verifica a versão do compilador Java

💡 default-jdk instala a versão de Java padrão recomendada para o Debian — geralmente a mais recente e estável disponível no repositório.

Passo 3 — Instalar o Apache Tomcat 11

apt install tomcat11 tomcat11-admin tomcat11-examples tomcat11-docs
systemctl status tomcat11
systemctl enable tomcat11    # garante que inicia com o sistema
Pacote Função
tomcat11 O servidor em si
tomcat11-admin Interface web de administração
tomcat11-examples Aplicações de exemplo para teste
tomcat11-docs Documentação acessível pelo navegador

Passo 4 — Criar usuário administrador do Tomcat

cd /etc/tomcat11
cp tomcat-users.xml tomcat-users.xml.bkp
nano tomcat-users.xml

Localize o bloco comentado e edite para:

<user username="admin" password="sua_senha" roles="manager-gui,admin-gui"/>

💡 manager-gui dá acesso à área de deploy de aplicações. admin-gui dá acesso ao painel de administração do servidor.

systemctl restart tomcat11

Acesse pelo navegador: http://IP_DO_SERVIDOR:8080

Passo 5 — Instalar o MySQL (Oracle)

apt install gnupg                                                    # necessário para verificar a chave do repositório MySQL
wget https://dev.mysql.com/get/mysql-apt-config_0.8.36-1_all.deb   # baixa o configurador do repositório
dpkg -i mysql-apt-config*.deb                                       # instala o repositório
apt update                                                           # atualiza a lista de pacotes
apt install mysql-server                                             # instala o MySQL
mysql -V                                                             # confirma a versão instalada

💡 A Oracle disponibiliza o MySQL pelo próprio site porque o repositório padrão do Debian contém o MariaDB (fork do MySQL). Para usar a versão oficial da Oracle é necessário adicionar o repositório dela.

mysql_secure_installation    # melhora a segurança: remove usuários anônimos, desabilita acesso remoto root

Criar banco de dados da aplicação

mysql -u root -p    # acessa o MySQL como root (-p solicita a senha)
SHOW DATABASES;                    -- lista os bancos existentes
 
CREATE DATABASE agenda;            -- cria o banco da aplicação
USE agenda;                        -- seleciona o banco para uso
 
CREATE TABLE contatos (
  idcon  INT PRIMARY KEY AUTO_INCREMENT,   -- ID único, gerado automaticamente
  nome   VARCHAR(30) NOT NULL,             -- nome obrigatório, até 30 caracteres
  fone   VARCHAR(15) NOT NULL,             -- telefone obrigatório
  email  VARCHAR(30)                       -- e-mail opcional
);
 
DESCRIBE contatos;    -- mostra a estrutura da tabela criada
-- Ctrl+D para sair

Passo 6 — Implantar a aplicação no Tomcat

  1. Acesse: http://IP_DO_SERVIDOR:8080
  2. Clique em Manager App e faça login com o usuário admin
  3. Na seção WAR file to deploy, selecione o arquivo .war e clique em Deploy
  4. A aplicação ficará disponível em: http://IP_DO_SERVIDOR:8080/agenda

💡 Um arquivo .war (Web Application Archive) é o formato de empacotamento de aplicações Java para web — equivale a um .zip com toda a aplicação dentro.


Tomcat — MySQL, Workbench e Backup

Criar usuário administrador no MySQL

mysql -u root -p
CREATE USER 'dba'@'%' IDENTIFIED BY '123@senac';
-- '%' permite conexão de qualquer IP (útil para acessar com o Workbench)
 
GRANT ALL PRIVILEGES ON *.* TO 'dba'@'%';
-- '*.* ' significa: todos os bancos e todas as tabelas
 
FLUSH PRIVILEGES;    -- aplica as permissões sem reiniciar o serviço

⚠️ Em produção, evite '%' — prefira limitar por IP: 'dba'@'192.168.0.%'. Isso impede que qualquer máquina na internet tente se conectar.

MySQL Workbench

Ferramenta gráfica para gerenciar bancos de dados MySQL — útil para visualizar tabelas, executar queries e fazer backups.

Criar conexão:

  1. Clique em + (Nova conexão)
  2. Preencha: nome da conexão, host (IP do servidor), usuário (dba)
  3. Clique em OK e depois na conexão para conectar Comandos úteis no Workbench:
SHOW DATABASES;          -- lista todos os bancos
USE agenda;              -- seleciona o banco agenda
SELECT * FROM contatos;  -- exibe todos os registros da tabela

⚠️ No Workbench, use Ctrl+Enter para executar — diferente do terminal, onde se usa Enter.

Backup do banco de dados

Administration → Data Export
→ Selecione o banco (ex: agenda)
→ Dump Structure and Data
→ Start Export

💡 Dump Structure and Data exporta tanto a estrutura das tabelas quanto os dados — ideal para backup completo. Se quiser só a estrutura (sem dados), use Dump Structure Only.

Restaurar backup

⚠️ O banco precisa existir antes de importar — o backup não recria o banco automaticamente.

CREATE DATABASE agenda;    -- cria o banco antes de importar
Administration → Data Import/Restore
→ Selecione o arquivo de backup
→ Escolha o banco (agenda)
→ Start Import

Apagar banco de dados

DROP DATABASE agenda;    -- remove o banco e todos os dados permanentemente

NAT, Firewall e Bloqueio de Sites

Nesta configuração, o servidor Linux age como roteador e firewall entre a rede interna (alunos/computadores) e a internet.

[Internet] ←→ [enp0s3 - NAT] ←→ SERVIDOR LINUX ←→ [enp0s8 - LAN] ←→ [Clientes]

Passo 1 — Instalar o Linux

No VirtualBox, habilite 2 placas de rede:

Adaptador Modo Função
Adaptador 1 (enp0s3) NAT Conecta o servidor à internet pelo PC host
Adaptador 2 (enp0s8) Rede interna Conecta o servidor aos clientes da LAN

Instalar apenas sistema básico e SSH.

Passo 2 — Configurar as interfaces de rede

cd /etc/network
cp interfaces interfaces.bkp    # backup obrigatório
lspci                           # lista placas de rede disponíveis
ip a                            # confirma os nomes das interfaces
nano interfaces

Adicione a segunda interface com IP fixo (ela será o gateway dos clientes):

# LAN
allow-hotplug enp0s8
iface enp0s8 inet static
address 192.168.17.1/24    # este IP será o gateway dos clientes
reboot    # ou: systemctl restart networking

Passo 3 — Instalar e configurar o DNS (dnsmasq)

O dnsmasq faz duas funções aqui: servidor DNS (resolve nomes de domínio para os clientes) e servidor DHCP (distribui IPs automaticamente na rede interna).

apt install dnsmasq
systemctl status dnsmasq
cd /etc
mv dnsmasq.conf dnsmasq.conf.bkp    # move o original como backup
nano dnsmasq.conf

Conteúdo do novo arquivo:

# LAN — define em qual interface o dnsmasq vai escutar
interface=enp0s8
bind-interfaces     # garante que só escuta na interface definida
 
# DNS — configura os servidores DNS que serão usados para resolver nomes externos
listen-address=192.168.17.1    # IP do próprio servidor na LAN
server=8.8.8.8                 # DNS primário (Google)
server=8.8.4.4                 # DNS secundário (Google)
cache-size=1000                # guarda 1000 consultas em cache — acelera a navegação
systemctl restart dnsmasq
systemctl status dnsmasq

Passo 4 — Ativar NAT (encaminhamento de pacotes IPv4)

Por padrão, o Linux não repassa pacotes entre interfaces de rede. Essa configuração habilita esse comportamento — essencial para o servidor funcionar como roteador.

cd /etc/sysctl.d
nano sysctl.conf

Adicione:

# NAT — habilita o encaminhamento de pacotes entre interfaces
net.ipv4.ip_forward=1
sysctl --system    # aplica as configurações sem reiniciar

Passo 5 — Configurar o Firewall (nftables)

O nftables é o firewall moderno do Linux — substitui o antigo iptables. Aqui ele faz o mascaramento NAT: transforma o IP interno dos clientes para o IP externo do servidor ao sair para a internet.

systemctl start nftables
systemctl enable nftables
systemctl status nftables
nft list ruleset    # lista as regras atuais do firewall
cd /etc
cp nftables.conf nftables.conf.bkp
nano nftables.conf

Adicione ao final do arquivo:

table ip nat {
    chain postrouting {
        type nat hook postrouting priority 100;
        policy accept;
        oif "enp0s3" masquerade;    # masquerade = troca o IP do cliente pelo IP do servidor ao sair
    }
}
systemctl restart nftables
nft list ruleset    # confirma que a regra foi aplicada

Passo 6 — Bloqueio de sites (Blacklist DNS)

O bloqueio funciona redirecionando domínios indesejados para o IP 0.0.0.0 (inexistente) — quando um cliente tenta acessar o site, o DNS responde com um IP inválido e a conexão falha.

cd /etc/dnsmasq.d
nano blacklist.conf
# Lista negra — redireciona esses domínios para 0.0.0.0 (bloqueado)
address=/netflix.com/0.0.0.0
address=/facebook.com/0.0.0.0

Vincular ao dnsmasq:

nano /etc/dnsmasq.conf

Adicione:

# Blacklist
domain-needed                               # não encaminha consultas sem domínio
conf-file=/etc/dnsmasq.d/blacklist.conf    # carrega o arquivo de bloqueio
systemctl restart dnsmasq
systemctl status dnsmasq

💡 Para adicionar mais sites bloqueados, basta editar o blacklist.conf e adicionar novas linhas no formato address=/dominio.com/0.0.0.0, depois reiniciar o dnsmasq.


Documentação produzida durante o Curso Técnico de Informática — Senac Tatuapé


Tabela resumo

Programa Tipo Porta padrão Para que serve
Apache Servidor web 80 / 443 Servir sites e o WordPress
MariaDB Banco de dados 3306 Banco do WordPress
MySQL Banco de dados 3306 Banco do projeto Java
MySQL Workbench Interface gráfica Gerenciar MySQL visualmente, backup e restore
PHP Linguagem Executar o WordPress
phpMyAdmin Interface web 80 Gerenciar bancos pelo navegador
WordPress CMS 80 Gerenciar sites
OpenSSH Acesso remoto 22 Administrar o servidor remotamente
Tomcat Servidor Java 8080 Hospedar aplicações Java
systemd-resolved DNS 53 Resolução de nomes (IP fixo)
dnsmasq DNS/DHCP 53 DNS da LAN + bloqueio de sites
NFTables Firewall Firewall e NAT/masquerade
linuxlogo Utilitário Banner de login no terminal

Clone this wiki locally