LINUX INTERMEDIÁRIO
Automação, Segurança e Rede
Introdução a Shell Scripts
Os shell scripts são ferramentas essenciais para automatização de tarefas no ambiente Linux. Utilizando a shell do sistema (em especial o Bash – Bourne Again Shell), os scripts permitem executar comandos em sequência, processar informações, tomar decisões lógicas e interagir com o usuário. Essa capacidade de automação é fundamental para administradores de sistemas, desenvolvedores e qualquer usuário que deseje aumentar sua produtividade no terminal.
1. Sintaxe Básica de um Shell Script
Um shell script é um arquivo de texto que contém comandos do terminal organizados em sequência lógica. Para que o sistema reconheça o arquivo como script executável, a primeira linha deve conter o shebang:
#!/bin/bash
Essa linha informa ao sistema que o script será interpretado pelo Bash. Após isso, os comandos podem ser escritos como seriam no terminal.
Exemplo básico:
#!/bin/bash
echo "Olá, mundo!"
O script deve ter permissão de execução:
chmod +x script.sh
E pode ser executado com:
./script.sh
2. Variáveis no Shell
Variáveis armazenam valores temporários que podem ser usados ao longo do script. Atribuições não têm espaços entre o nome da variável, o sinal de igual e o valor.
Exemplo:
nome="Maria"
echo "Bem-vinda, $nome"
Para capturar o resultado de um comando:
hoje=$(date)
Variáveis de ambiente como $HOME, $USER, $PATH são amplamente utilizadas em scripts para referenciar diretórios e configurações do sistema.
3. Estruturas Condicionais
As estruturas condicionais permitem decisões baseadas em testes. O Bash oferece o if e o case.
a) if
if [ condição ]; then
comandos
elif [ outra condição ]; then
outros comandos
else
comandos alternativos
fi
Exemplo:
if [ $USER == "root" ]; then
echo "Você é o administrador"
else
echo "Você não tem privilégios de root"
fi
b) case
Útil quando há múltiplas opções possíveis.
case $variavel in
valor1)
comando1 ;;
valor2)
comando2 ;;
*)
comando_default ;;
esac
Exemplo:
echo "Escolha uma opção: [a/b]"
read opcao
case $opcao in
a) echo "Você escolheu A" ;;
b) echo "Você escolheu B" ;;
*) echo "Opção inválida" ;;
esac
4. Estruturas de Repetição
Laços permitem executar comandos repetidamente. Os principais são for e while.
a) for
Usado para iterar sobre listas ou intervalos.
for i in 1 2 3 4 5; do
echo "Número $i"
done
Ou:
for i in $(seq 1 5); do
echo "Contador: $i"
done
b) while
Executa enquanto uma condição for verdadeira.
contador=1
while [ $contador -le 5 ]; do
echo "Linha $contador"
contador=$((contador + 1))
done
O laço pode ser interrompido com break, e pular iterações com continue.
5. Entrada do Usuário com read
O comando read permite capturar dados diretamente do usuário durante a execução do script.
echo "Digite seu nome:"
read nome
echo "Olá, $nome"
Também é possível ler múltiplas variáveis:
read nome idade
E ocultar a digitação (ex: senhas):
read -s senha
6. Criação e Execução de Scripts Simples
Exemplo prático – Verificador de Usuário Root:
#!/bin/bash
if [ "$USER" != "root" ]; then
echo "Este script deve ser executado como root"
exit 1
fi
echo "Usuário root confirmado. Continuando..."
Exemplo – Calculadora simples:
#!/bin/bash
echo "Digite o primeiro número:"
read n1
echo "Digite o segundo número:"
read n2
echo "Soma: $((n1 + n2))"
echo "Subtração: $((n1 - n2))"
echo "Multiplicação: $((n1 * n2))"
echo "Divisão: $((n1 / n2))"
Esses exemplos mostram como shell scripts podem facilitar tarefas do dia a dia, como automatizar backups, configurar permissões, processar logs e mais.
Boas Práticas
Considerações Finais
A introdução ao shell scripting oferece ao usuário de Linux um recurso valioso para simplificar, repetir e automatizar tarefas administrativas e operacionais. Compreender a sintaxe, o uso de variáveis, estruturas condicionais, laços e entrada do usuário é suficiente para desenvolver scripts úteis e robustos. À medida que o domínio sobre scripting cresce, o Bash se torna uma ferramenta poderosa para controle e personalização do sistema.
Referências Bibliográficas
Agendadores e Tarefas Automatizadas no Linux
Automatizar tarefas é uma das atividades mais poderosas e produtivas em sistemas Linux. Através de agendadores como o cron e o at, é possível
programar a execução de comandos e scripts de forma recorrente ou única, otimizando rotinas administrativas, backups, monitoramento de sistemas e demais processos repetitivos. Este texto aborda os principais mecanismos de agendamento disponíveis no Linux: o comando crontab e seus arquivos associados, o agendador de execuções únicas at, bem como a verificação dos logs de execução dessas tarefas.
1. O Agendador cron e o Comando crontab
O cron é um daemon que executa tarefas automaticamente com base em uma agenda predefinida. Ele verifica constantemente os arquivos de agendamento e dispara os comandos especificados nas datas e horários configurados.
O comando crontab (abreviação de "cron table") permite aos usuários criar, visualizar e editar suas próprias listas de tarefas agendadas. Cada usuário no sistema pode manter seu próprio arquivo crontab.
Sintaxe básica:
A estrutura de uma linha do crontab é composta por cinco campos de tempo seguidos do comando a ser executado:
minuto hora dia-do-mês mês dia-da-semana comando
Significado dos campos:
Exemplos:
0 2 * * * /home/usuario/backup.sh
Executar toda segunda-feira às 8h30:
30 8 * * 1 /home/usuario/script.sh
Gerenciamento:
crontab -l
· Editar o crontab do usuário:
crontab -e
· Remover o crontab:
crontab -r
Ao editar com crontab -e, o arquivo específico de agendamento do usuário é alterado, geralmente armazenado em /var/spool/cron/crontabs.
2. Arquivos de Cron do Sistema
Além do crontab de usuário, o sistema possui arquivos globais e diretórios especiais para organização das tarefas.
a) /etc/crontab
Este arquivo permite especificar tarefas com um campo adicional: o usuário responsável por executar o comando. A sintaxe é:
min hora dia-mês mês dia-semana usuário comando
Exemplo:
0 5 * * * root /usr/bin/apt update
b) Diretórios especiais:
Scripts colocados nesses diretórios são executados automaticamente com base na periodicidade indicada. O agendamento desses diretórios é definido no /etc/crontab ou em arquivos relacionados do sistema.
c) /etc/cron.d/
Permite criar arquivos de configuração separados, úteis para aplicações que precisam registrar seus próprios agendamentos de forma modular.
3. Comando at: Execução Única Agendada
Diferentemente do cron, o comando at executa comandos uma única vez, em data e hora
determinadas. É útil para tarefas pontuais que não precisam se repetir.
a) Verificar se o serviço está ativo:
sudo systemctl status atd
b) Agendar um comando:
at 15:00
O terminal aguardará a inserção do comando desejado. Após inserir o comando, finalize com Ctrl+D.
Exemplo:
at now + 10 minutes
c) Visualizar tarefas pendentes:
atq
d) Cancelar uma tarefa:
atrm <job-id>
O at utiliza a fila do serviço atd, cujos arquivos ficam normalmente em /var/spool/at.
4. Logs de Execução de Tarefas
Monitorar a execução das tarefas agendadas é essencial para garantir que tudo está funcionando corretamente.
a) Logs do cron
Em muitas distribuições, os logs são registrados em:
/var/log/syslog # Ubuntu e derivados
/var/log/cron # CentOS, RHEL
É possível filtrar os logs com grep:
grep CRON /var/log/syslog
Ou, para ver a última execução:
journalctl -u cron.service
b) Logs do at
O at registra a execução de tarefas no log do sistema. Use:
journalctl -u atd.service
Boas Práticas
/caminho/script.sh >> /var/log/script.log 2>&1
Considerações Finais
O domínio de agendadores como cron e at representa um importante passo para a automação e gestão eficaz de sistemas Linux. Essas ferramentas permitem configurar desde simples execuções pontuais até tarefas complexas e regulares, sem a necessidade de supervisão humana. Por meio dos arquivos de configuração, comandos intuitivos e registros detalhados em log, o Linux fornece uma base sólida e confiável para o controle temporal de atividades.
Referências Bibliográficas
Noções de Redes e Segurança no Linux
A administração de redes e a aplicação de práticas seguras são pilares fundamentais da gestão de sistemas Linux. Este ambiente, amplamente utilizado em servidores e infraestruturas críticas, demanda conhecimento técnico para configuração e
manutenção de conexões de rede, além de mecanismos de controle de acesso, firewall e gerenciamento de usuários. Este texto explora os principais comandos de rede, arquivos de configuração essenciais, práticas de segurança em permissões e atualizações, além do uso do firewall ufw e a gestão segura de usuários e grupos.
1. Comandos de Rede no Linux
a) ip
O comando ip substitui o antigo ifconfig e permite configurar e exibir interfaces de rede.
Exemplos:
ip a
Adicionar IP estático temporariamente:
sudo ip addr add 192.168.1.100/24 dev eth0
Ativar interface:
sudo ip link set eth0 up
b) ping
Utilizado para verificar a conectividade entre hosts.
ping google.com
O ping envia pacotes ICMP e exibe estatísticas de latência e perda de pacotes.
c) netstat (obsoleto) e ss
netstat era amplamente utilizado para visualizar conexões de rede, portas e estatísticas, mas foi substituído pelo ss (socket statistics), que é mais rápido e eficiente.
Exemplos:
ss -tuln
d) nmap
Ferramenta de varredura de rede usada para identificar hosts ativos, serviços, portas abertas e possíveis vulnerabilidades.
Exemplo:
nmap -sS 192.168.1.0/24
O uso do nmap exige cautela, pois pode ser interpretado como atividade suspeita em redes monitoradas.
2. Arquivo /etc/hosts e Configuração de IP Estático
a) /etc/hosts
Esse arquivo local permite mapear nomes de host para endereços IP, independentemente do DNS.
Exemplo de entrada:
127.0.0.1 localhost
192.168.1.10 servidor.local
É útil em ambientes sem DNS ou para resolver nomes personalizados.
b) IP Estático
Em distribuições modernas, a configuração de IP fixo pode ser feita de várias formas. Em sistemas com Netplan (Ubuntu 18.04+), edita-se:
sudo nano /etc/netplan/01-netcfg.yaml
Exemplo de configuração:
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
Aplicar:
sudo netplan apply
Em distribuições com NetworkManager, o IP pode ser configurado via nmtui, nmcli ou arquivos do /etc/sysconfig/network-scripts.
3. Permissões Seguras, Atualizações e UFW
a) Permissões Seguras
Manter permissões corretas impede acessos indevidos a arquivos críticos. Boas práticas incluem:
find / -perm -o+w
b) Atualizações
Atualizações regulares são essenciais para corrigir vulnerabilidades:
sudo apt
update && sudo apt upgrade
· CentOS/RHEL:
sudo dnf update
Scripts de atualização automática podem ser configurados com unattended-upgrades (Debian) ou dnf-automatic (Red Hat).
c) UFW – Uncomplicated Firewall
O ufw é um firewall simplificado baseado no iptables, usado para controlar conexões de entrada e saída.
sudo ufw enable
· Permitir porta:
sudo ufw allow 22/tcp
· Negar:
sudo ufw deny 80
· Ver status:
sudo ufw status
UFW facilita a configuração de regras e é ideal para ambientes pequenos ou servidores pessoais.
4. Usuários e Grupos: Práticas Seguras
O gerenciamento adequado de contas de usuários e grupos é fundamental para segurança.
a) Criação de usuários com privilégios mínimos:
sudo adduser nome
· Evite conceder permissões de root desnecessariamente. Para adicionar um usuário ao grupo sudo:
sudo usermod -aG sudo nome
b) Gerenciamento de grupos:
sudo groupadd devs
· Adicionar usuário:
sudo usermod -aG devs nome
c) Restrições de login:
sudo usermod -L nome
· Expirar senha:
d) Remoção segura:
sudo deluser nome
sudo delgroup grupo
A política de menor privilégio deve ser aplicada sempre que possível: os usuários só devem ter acesso ao necessário para executar suas funções.
Considerações Finais
A compreensão das ferramentas de rede e dos mecanismos de segurança no Linux é essencial para garantir a operação eficiente e protegida do sistema. Comandos como ip, ss e nmap oferecem controle e visibilidade sobre o tráfego de rede, enquanto a configuração cuidadosa de arquivos como /etc/hosts e o uso de firewalls como ufw ajudam a evitar acessos não autorizados.
Somado a isso, práticas seguras de gerenciamento de usuários e atualizações constantes consolidam a postura de segurança indispensável em qualquer ambiente Linux, seja ele corporativo ou pessoal.
Referências Bibliográficas